From fb5d12dbfd0a3e9e8e624154d65f96f7720f0e7a Mon Sep 17 00:00:00 2001 From: AlexCLeduc Date: Wed, 27 Aug 2025 12:50:26 -0400 Subject: [PATCH 01/21] fix: add focus bypass (ART 9814) --- server/cpho/jinja2/base.jinja2 | 3 ++- server/cpho/translations.py | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/server/cpho/jinja2/base.jinja2 b/server/cpho/jinja2/base.jinja2 index 0b10f09f..2df1fb22 100644 --- a/server/cpho/jinja2/base.jinja2 +++ b/server/cpho/jinja2/base.jinja2 @@ -29,6 +29,7 @@ {% block extra_scripts_css %}{% endblock %} + {{ phac_aspc.phac_aspc_wet_session_timeout_dialog(dict(request=request) , 'logout') }} diff --git a/server/cpho/jinja2/indicator_data/manage_indicator_data.jinja2 b/server/cpho/jinja2/indicator_data/manage_indicator_data.jinja2 index 66973e47..bf607a99 100644 --- a/server/cpho/jinja2/indicator_data/manage_indicator_data.jinja2 +++ b/server/cpho/jinja2/indicator_data/manage_indicator_data.jinja2 @@ -272,6 +272,10 @@ //newForm.outerHTML = `${newFormHtml}`; totalFormsInput.setAttribute('value', `${numForms}`) + + // a11y: focus on first input of newly added form + newForm.querySelector('select,input').focus(); + } {% endif %} diff --git a/server/cpho/jinja2/trend_analysis/manage_trend_analysis_data.jinja2 b/server/cpho/jinja2/trend_analysis/manage_trend_analysis_data.jinja2 index f5a9832e..26d4f73d 100644 --- a/server/cpho/jinja2/trend_analysis/manage_trend_analysis_data.jinja2 +++ b/server/cpho/jinja2/trend_analysis/manage_trend_analysis_data.jinja2 @@ -104,8 +104,12 @@ let newForm = document.createElement("tr") newForm.classList.add("trend-analysis-form") newForm.innerHTML = newFormHtml; - container.appendChild(newForm) - totalFormsInput.setAttribute('value', `${numForms}`) + container.appendChild(newForm); + totalFormsInput.setAttribute('value', `${numForms}`); + + // a11y: focus on first input of newly added form + newForm.querySelector('select,input').focus(); + } From 7d178171797ce39b6e8f5bd7b17e2e9d7afe841b Mon Sep 17 00:00:00 2001 From: AlexCLeduc Date: Thu, 28 Aug 2025 09:14:50 -0400 Subject: [PATCH 12/21] improve focus-ring, increase contrast on unfocused inputs --- server/static/cpho.css | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/server/static/cpho.css b/server/static/cpho.css index b4572b2a..dca985ae 100644 --- a/server/static/cpho.css +++ b/server/static/cpho.css @@ -160,10 +160,22 @@ span.new-ind-tag { width: 5% } -/* Accessibility */ -.btn:focus { - color: white; - background-color: #0535d2; + + +.form-control, +.form-select, +.phac_aspc_form_autocomplete.phac_aspc_form_autocomplete { + border-color: #8594A3; +} + + +.btn:focus, +.form-select:focus, +.form-control:focus, +.phac_aspc_form_autocomplete_focus_ring.active, +a:focus, +input[type="checkbox"]:focus, +input[type="radio"]:focus { outline-offset: 0.125rem; border-color: #0535d2; box-shadow: 0 0 0 0.125rem white; From fd92b3ab30e43b37298370dc13d808cdf7e6bf21 Mon Sep 17 00:00:00 2001 From: AlexCLeduc Date: Thu, 28 Aug 2025 09:37:12 -0400 Subject: [PATCH 13/21] unrelated: format all files --- server/cpho/jinja2/base.jinja2 | 28 +++++++++---------- .../manage_benchmarking_data.jinja2 | 2 +- .../jinja2/changelog/global_changelog.jinja2 | 2 +- .../indicator_scoped_changelog.jinja2 | 2 +- .../changelog/user_scoped_changelog.jinja2 | 2 +- .../manage_indicator_data.jinja2 | 4 +-- .../jinja2/indicators/_indicator_form.jinja2 | 8 +++--- .../jinja2/indicators/edit_indicator.jinja2 | 2 +- .../indicators/upload/preview_upload.jinja2 | 22 +++++++-------- .../upload/upload_help_modal.jinja2 | 2 +- .../indicators/upload/upload_indicator.jinja2 | 16 +++++------ .../jinja2/indicators/view_indicator.jinja2 | 10 +++---- .../view_indicator_for_period.jinja2 | 4 +-- server/cpho/jinja2/login.jinja2 | 8 +++--- .../jinja2/modals/submission_modal.jinja2 | 6 ++-- server/cpho/jinja2/review_data.jinja2 | 2 +- .../jinja2/review_indicator_metadata.jinja2 | 16 +++++------ .../manage_trend_analysis_data.jinja2 | 4 +-- .../create_modify_indicator_directory.jinja2 | 4 +-- .../user_management/create_modify_user.jinja2 | 6 ++-- .../indicator_directory_home.jinja2 | 4 +-- .../user_management_page.jinja2 | 10 +++---- 22 files changed, 82 insertions(+), 82 deletions(-) diff --git a/server/cpho/jinja2/base.jinja2 b/server/cpho/jinja2/base.jinja2 index 01a8d215..e90e5930 100644 --- a/server/cpho/jinja2/base.jinja2 +++ b/server/cpho/jinja2/base.jinja2 @@ -13,11 +13,11 @@ rel="icon" type="image/x-icon" class="wb-init wb-favicon-inited"> - + - {# #} - + {# #} + {{ phac_aspc.phac_aspc_wet_css(base_only=True) }} @@ -63,9 +63,9 @@ {{ phac_aspc.phac_aspc_inline_svg("phac_aspc_helpers/phac_logos/" + ("en" if get_lang_code() == "en-ca" else "fr") + "__dark.svg", style="height: 2rem; padding-right: 2rem;") }} {% block available_apps %}{% endblock %}

- - {% block nav_header_text %}{{ tm("hopic") }}{% endblock %} + {% block nav_header_text %}{{ tm("hopic") }}{% endblock %}

- + {% endfor %} {% if show_age_group %} @@ -237,7 +237,7 @@ {% if mode == "edit" %} + value="{{ tm('save') }}"> {% endif %} diff --git a/server/cpho/jinja2/indicators/_indicator_form.jinja2 b/server/cpho/jinja2/indicators/_indicator_form.jinja2 index 1050322e..33b6f83e 100644 --- a/server/cpho/jinja2/indicators/_indicator_form.jinja2 +++ b/server/cpho/jinja2/indicators/_indicator_form.jinja2 @@ -23,7 +23,7 @@ {% endif %} - + {% endmacro %} {% macro fieldset_field(field, helptext=None) %} @@ -62,7 +62,7 @@ {{ fieldset_field(form.relevant_period_types, helptext=tm("not_published_just_a_convenience_factor_to_filter_in_app_choices") ) }} - +
{{ tm("general_metadata") }}
@@ -128,7 +128,7 @@
- +
{{ tm("age_metadata") }}
@@ -302,5 +302,5 @@ + value="{{ tm('submit') }}" /> diff --git a/server/cpho/jinja2/indicators/edit_indicator.jinja2 b/server/cpho/jinja2/indicators/edit_indicator.jinja2 index 36d51fc6..9b0bf4a9 100644 --- a/server/cpho/jinja2/indicators/edit_indicator.jinja2 +++ b/server/cpho/jinja2/indicators/edit_indicator.jinja2 @@ -8,7 +8,7 @@ {% endblock %} {% block content %} - +
{{ tm("edit_indicator") }} : {{ object.bilingual_name }}
{% if respects_rule('is_admin_or_hso') %} diff --git a/server/cpho/jinja2/indicators/upload/preview_upload.jinja2 b/server/cpho/jinja2/indicators/upload/preview_upload.jinja2 index 94b8f3d7..776be997 100644 --- a/server/cpho/jinja2/indicators/upload/preview_upload.jinja2 +++ b/server/cpho/jinja2/indicators/upload/preview_upload.jinja2 @@ -12,12 +12,12 @@
+ hx-post="{{ url('save_upload') }}"> - {{ tm("cancel") }} + {{ tm("cancel") }}
@@ -29,8 +29,8 @@ {% if not no_errors %}

{{ tm("errors_in_file_please_review") }}

{% endif %}

{{ tm("upload_preview_expl") }}

- - + + {% for indicator in grouped_data %}
@@ -38,18 +38,18 @@ {{ tm("indicator") }} : {{ indicator[0] }} {% if grouped_data[indicator][0]["new_indicator"] %}{{ tm("new") }}{% endif %}
- +
{{ (check_error(grouped_data[indicator][0], "Indicator") ) }} - +
{{ tm("detailed_indicator") }} : {{ indicator[1] }}
- +
{{ tm("sub_indicator_measurement") }} : {{ indicator[2] }}
@@ -65,7 +65,7 @@
- + @@ -85,7 +85,7 @@ - + {% for datum in grouped_data[indicator] %} @@ -107,7 +107,7 @@ {% endfor %}
{{ tm("arrow_flag") }}
- +
@@ -120,6 +120,6 @@ document.getElementById("status-div").classList.remove("d-none"); } - + {% endblock %} diff --git a/server/cpho/jinja2/indicators/upload/upload_help_modal.jinja2 b/server/cpho/jinja2/indicators/upload/upload_help_modal.jinja2 index 7f60c538..fd867902 100644 --- a/server/cpho/jinja2/indicators/upload/upload_help_modal.jinja2 +++ b/server/cpho/jinja2/indicators/upload/upload_help_modal.jinja2 @@ -10,7 +10,7 @@ + aria-label="{{ tm('close') }}"> - -
- + {{ csrf_input }}
{{ form.csv_file }} @@ -35,7 +35,7 @@ + value="{{ tm('preview_file_data') }}">
@@ -44,7 +44,7 @@
- + {% if form.csv_file.errors %}
{{ form.csv_file.errors }}
{% endif %} {% include 'indicators/upload/upload_help_modal.jinja2' %} @@ -55,5 +55,5 @@ document.getElementById("loadingModal").classList.remove("d-none"); } - + {% endblock %} diff --git a/server/cpho/jinja2/indicators/view_indicator.jinja2 b/server/cpho/jinja2/indicators/view_indicator.jinja2 index 129db470..8b81f4a8 100644 --- a/server/cpho/jinja2/indicators/view_indicator.jinja2 +++ b/server/cpho/jinja2/indicators/view_indicator.jinja2 @@ -31,7 +31,7 @@ {% endif %}
- {{ tm("upload_data") }} @@ -72,7 +72,7 @@ {% endif %}
- +
{% if respects_rule('can_submit_indicator', indicator) %} {{ period }} {{ data_count }} @@ -143,11 +143,11 @@ {% endif %} {% if respects_rule('can_view_non_current_periods', indicator) %}
- {{ tm("add_data_for_new_periods") }} + {{ tm('add_data_for_new_periods') }} {{ tm("hso_only") }}
-
    +
      {% for period in alternate_periods %}
    • {{ tm("add_data") }} {{ tm("for") }} {{ period }} diff --git a/server/cpho/jinja2/indicators/view_indicator_for_period.jinja2 b/server/cpho/jinja2/indicators/view_indicator_for_period.jinja2 index b5e04afe..fee73396 100644 --- a/server/cpho/jinja2/indicators/view_indicator_for_period.jinja2 +++ b/server/cpho/jinja2/indicators/view_indicator_for_period.jinja2 @@ -11,7 +11,7 @@ {% block content %}
      {{ tm("indicator_data") }} : {{ object.bilingual_name }} {{ period }}
      - +
      {% if respects_rule('can_edit_indicator_data', {"indicator": indicator, "period": period}) %} {% set button_text_all = tm("edit_all_data") %} @@ -66,5 +66,5 @@ {% endfor %}
- + {% endblock %} diff --git a/server/cpho/jinja2/login.jinja2 b/server/cpho/jinja2/login.jinja2 index 61afad9f..73036277 100644 --- a/server/cpho/jinja2/login.jinja2 +++ b/server/cpho/jinja2/login.jinja2 @@ -31,7 +31,7 @@ + aria-label="{{ tm('close') }}">
{% endif %}
@@ -41,7 +41,7 @@ @@ -50,7 +50,7 @@ @@ -60,7 +60,7 @@
+ value="{{ tm('log_in') }}" />
diff --git a/server/cpho/jinja2/modals/submission_modal.jinja2 b/server/cpho/jinja2/modals/submission_modal.jinja2 index 8abe2be8..85ed2e6c 100644 --- a/server/cpho/jinja2/modals/submission_modal.jinja2 +++ b/server/cpho/jinja2/modals/submission_modal.jinja2 @@ -1,4 +1,4 @@ - + diff --git a/server/cpho/jinja2/review_data.jinja2 b/server/cpho/jinja2/review_data.jinja2 index b17d7577..f68fc976 100644 --- a/server/cpho/jinja2/review_data.jinja2 +++ b/server/cpho/jinja2/review_data.jinja2 @@ -30,7 +30,7 @@
{{ tm("program_submission") }}:{{ submission_status_badge(view.submission_statuses['program_statuses_by_dimension_type_id'][dimension_type.id]) }}
- +
{{ indicator_data_table_w_submissions(view.indicator_data_by_dimension_type[dimension_type.id]) }}
{% endfor %} diff --git a/server/cpho/jinja2/review_indicator_metadata.jinja2 b/server/cpho/jinja2/review_indicator_metadata.jinja2 index e9c1e086..25d8ef7b 100644 --- a/server/cpho/jinja2/review_indicator_metadata.jinja2 +++ b/server/cpho/jinja2/review_indicator_metadata.jinja2 @@ -22,10 +22,10 @@ {% endmacro %} - + {% block content %} {% set indicator = view.indicator %} - +
{{ tm("review_metadata") }} : {{ view.indicator.bilingual_name }}