wet-boew / GCWeb

Canada.ca theme - A reference implementation of the Canada.ca Content and Information Architecture Specification, the Canada.ca Content Style Guide and the Canada.ca Design System
https://wet-boew.github.io/GCWeb/
Other
91 stars 128 forks source link

Discussion - Design pattern to identify and have a consistent navigation for a set of related pages about a common task #1627

Open duboisp opened 4 years ago

duboisp commented 4 years ago

Hi,

This is to open up a discussion about to develop and have a consensus on a design pattern to identify and have a consistent navigation for a set of related pages (sub-section) about a common task

The original propose solution require to use of two (2) heading level 1 (h1) and there is some technical concern about a such pattern.

Context: CRA in collaboration with TBS have done a optimization project to improve the service initiation template. They have chosen to improve the Child Benefit pages.

Discussion goal: The goal of this discussion is to define an HTML pattern that are going to be recognized as valid by other web accessibility expert and will work for users accessing that content with an assistive technology.

This discussion would assume the visual and the interaction pattern for mobile and desktop illustrated by the prototype would remain similar.

This discussion is to define how the visual and the interaction pattern can be technically articulated, coded and styled. That regardless how the prototype was originally coded or modified.

This discussion is focused on the design pattern for how a set of related pages could be named and navigated in a consistent manner. If you have other concern which is not related to this aspect, please open a new github issue.

For whatever proposed solution it must be conform to WCAG 2.1 Level AA, conform to W3C specification and be currently functional to users.

Note on the propose pattern: I was been told that CRA has completed some usability research but they haven't published the result yet or I might simply currently don't where I can retrieve those UX research result/report.

Original proposed pattern:

Link:

Code form the generic prototype

<main property="mainContentOfPage" class="container">
  <aside class="gc-nav">

    <h1 property="name" id="wb-cont-nav">Overarching topic/product name</h1>

    <nav aria-label="Section menu">
      <p class="h3 mrgn-tp-0 hidden-xs hidden-sm">Sections (or "Steps" etc.)</p>
      <ul class="gc-navseq">
        <li class="completed"><a href="section-menu-pg1.html" class="hidden-xs hidden-sm">Specific page name #1</a><a href="section-menu-pg1.html#wb-cont-nav" class="hidden-md hidden-lg">Specific page name #1</a></li>
        <li class="completed"><a href="section-menu-pg2.html" class="hidden-xs hidden-sm">Specific page name #2</a><a href="section-menu-pg2.html#wb-cont-nav" class="hidden-md hidden-lg">Specific page name #2</a></li>
        <li class="active"><a class="hidden-xs hidden-sm">Specific page name #3</a><a class="hidden-md hidden-lg">Specific page name #3</a></li>
        <li><a href="section-menu-pg4.html" class="hidden-xs hidden-sm">Specific page name #4</a><a href="section-menu-pg4.html#wb-cont-nav" class="hidden-md hidden-lg">Specific page name #4</a></li>
        <li><a href="section-menu-pg5.html" class="hidden-xs hidden-sm">Specific page name #5</a><a href="section-menu-pg5.html#wb-cont-nav" class="hidden-md hidden-lg">Specific page name #5</a></li>
        <li><a href="section-menu-pg6.html" class="hidden-xs hidden-sm">Specific page name #6</a><a href="section-menu-pg6.html#wb-cont-nav" class="hidden-md hidden-lg">Specific page name #6</a></li>
      </ul>
    </nav>
  </aside>

  <section class="gc-nav-section">

    <h1 property="name" id="wb-cont">Specific page name #3</h1>

    <h2 class="h3 mrgn-tp-md">On this page</h2>
    <ul>
      <li><a href="#h_1">First heading</a></li>
      <li><a href="#h_2">Second heading</a></li>
      <li><a href="#h_3">Third heading</a></li>
    </ul>
    <h2 id="h_1">First heading</h2>
    <p>Lorem ipsum dolor sit amet.</p>

    ... content of the page ...

    <ul class="pager">
      <li class="previous"><a href="section-menu-pg2.html" rel="prev">Specific page name #2</a></li>
      <li class="next"><a href="section-menu-pg4.html" rel="next">Specific page name #4</a></li>
    </ul>
  </section>

  ... pre-footer content ...

</main>

Code from the child benefit prototype

<main property="mainContentOfPage" class="container" id="steps-navigation">
  <span tabindex="-1" id="apply" class="hidden-md hidden-lg"></span>

  <h1 property="name" id="wb-cont-section" class="wb-inv-xs wb-inv-sm">Canada Child Benefit</h1>

  <div class="row">
    <div class="col-md-4 col-md-push-8" id="steps-menu">
      <span tabindex="-1" id="can-apply" class="hidden-md hidden-lg"></span>
      <nav class="section-menu mobile">
        <h2 class="menu-title"><span class="wb-inv-md wb-inv-lg">Canada Child Benefit</span> <span class="wb-inv-xs wb-inv-sm">Sections</span></h2>
        <ul class="vertical-steps">
          <li class="completed"><a href="./who-can-apply.html#can-apply">Who can apply<span class="wb-inv"> - Canada Child Benefit</span></a></li>
          <li class="active"><a>Apply<span class="wb-inv"> - Canada Child Benefit</span></a></li>
          <li><a href="./how-much.html#how_much">How much you can get<span class="wb-inv"> - Canada Child Benefit</span></a></li>
          <li><a href="./payment-dates.html#dates">Payment dates<span class="wb-inv"> - Canada Child Benefit</span></a></li>
          <li><a href="./keep-getting-payments.html#payments">Keep getting your payments<span class="wb-inv"> - Canada Child Benefit</span></a></li>
          <li><a href="./contact.html#contact">Contact the <abbr title="Canada Revenue Agency">CRA</abbr><span class="wb-inv"> - Canada child benefit</span></a></li>
        </ul>
      </nav>
    </div>

    <div class="col-md-8 col-md-pull-4" id="steps-content">

    <h1 property="name" id="wb-cont">Apply</h1>

    <nav id="toc">
      <h2 class="h3 mrgn-tp-md">On this page</h2>
      <ul class="toc-nav">
        <li><a href="#When">When to apply</a></li>
        <li><a href="#How">How to apply</a></li>
        <li><a href="#additional">When you need to provide additional documents</a></li>
      </ul>
    </nav>

    <h2 id="When">When to apply</h2>
    <p>You should apply for the Canada child benefit (CCB) as soon as any of the following situations happen:</p>

    ... content of the page ...

    </div>
  </div>

  ... pre-footer content ...

</main>

Some formal reference to guide the discussion:

/cc @cfarquharson, @delisma, @bsouster

duboisp commented 4 years ago

My proposal consist in:

For example:

This proposal are major, which will break existing implementation of GCWeb.

duboisp commented 4 years ago

Comment received by email

Hi Pierre, great that we are opening the dialogue to hopefully get a sound resolution on how to implement a properly semantic structure.

I’m a bit confused by Mozilla’s phrasing about not using structure, but rather using rank. Which when clicking on the links, they still give you an example of multiple H1s….and using two H1s seems to be still correct as H1 is just simply the first type of “rank”, but doesn’t need to be the “only” rank. And I think it’s more about the fact that things like

duboisp commented 4 years ago

The discussion from the HTML specification about the outline algorithm is still unresolved, see: https://github.com/whatwg/html/issues/83

Also, we would need to have a solution that support work for browsers as determined by the wet-boew design decision #2 Which currently include Firefox, Chrome, Safari, Edge and IE11

lisafast commented 4 years ago

Our TBS-CRA usability research was with phone users for Canada Child Benefit (16 participants). The design was successful in that people clearly understood their context, and were able to see more on their phone page than with the current very long large H1s in a service initiation page.

Based on that success, we tried the new design with desktop users in a study this month with 18 public servants. An example of that prototype is here: https://tbs-proto1.openplus.ca/en/landing/report-overpayment

I will leave the technical discussion to @delisma with gratitude.

duboisp commented 4 years ago

FYI - Still in progress You can see the progress of my technical analysis impact on search result is here: https://wet-boew.github.io/wet-boew-documentation/research/2020-33-double-h1-impact-analysis.html

GormFrank commented 3 years ago

@duboisp Est-ce que cet issue peut être fermé?