Skip to main content
Unlisted page
This page is unlisted. Search engines will not index it, and only users having a direct link can access it.

Create compliant applications with Simplicité

Introduction​

This guide helps designers build Simplicité applications that meet the RGAA. It describes the tools the platform provides to reach compliance, the platform-wide points that depend on your choices, and the settings that a strictly compliant application requires.

It is meant to be used alongside the platform: keep it open while you configure your application.

Platform features​

FeatureForPurpose
a11y-modeEnd usersRuntime switch to the most RGAA-compliant version of the platform
ACCESSIBILITY_OVERRIDEEnd usersFine-tune which adaptations a11y-mode applies
ACCESSIBILITY_DEVDesignersShow the compliance status of each feature while you configure it
ACCESSIBILITY_LEVELDesignersDeclare the accessibility level of your application

Runtime a11y-mode​

End users toggle Accessibility Mode from the .btn-a11y-mode button in the application header.

A11y-mode disabled (already using HighContrast theme)

A11y-mode enabled (forced using HighContrast theme)

HighContrast theme on module Demo

Some core behaviors cannot be made compliant without degrading the comfort of users who do not need them. a11y-mode adapts or disables them all at once, which makes it the most RGAA-compliant version of the platform: in an audit, only use with a11y-mode on is guaranteed compliant for core elements.

BehaviorWhat a11y-mode does
Custom colors of action buttons and statesAll custom colors set on action buttons with the act_bg_color and act_color fields (Action form)
Horizontal menuForces all domains to be rendered on the left, disabling any obd_menu set to T.
Splitting the work area into resizable panelsForcing the mono-area for the #work, and disabling the btn-ui-splitter so work-areas cannot be triggered.
Compact modeForcing the default compact setting (removing compact from the body), disabling the zoom-compact toggle.
Mosaic display of listsDisabling all btn-minifiable in the lists panel-footer. Making them non-clickable when in a11y-mode.
Trays (trello) and metrics of status-based objectsRemoving the statuses objects "Trays" (status-tray) and "Metrics" (status-metrics) entries from menu.
Predefined searches offered in the search dialogDisabling the predef button from the search modal.
Date pickersRemoving all datetime pickers from fields and filters. Replacing them with a textual hint with proper formatting.
HTML input fieldsRendering all "complex" html fields as plain textarea, removing the specific features (linting, formatting, etc), but still allowing their usage.
Forced HighContrast themeWhen in a11y-mode, switches the theme to be HighContrast (requires few settings to be effective, see A11y-mode settings)
Opening a form per table rowReplaces the form-opening behavior from clicking on a row to an action button in the col-action of every row.
Default display of linked objectsForces the objlinks display to be objlinks-flow, and disables the btn-options dropdown/action.
warning

a11y-mode is a safety net: it does not make Non-Compliant features compliant. Under strict requirements, disable them at design time, whether or not users turn the mode on.

User ACCESSIBILITY_OVERRIDE parameter​

a11y-mode is all-or-nothing, so that it can reach full compliance. Users who do not need some of its adaptations, or who want to keep some features anyway, can override it behavior by behavior with the ACCESSIBILITY_OVERRIDE user parameter. Each key takes true or false:

{
"customcolors": false, // custom colors of action buttons and states
"menutop": false, // horizontal menu
"workareas": false, // splitting the work area into resizable panels
"trays": false, // trays (trello) of status-based objects
"metrics": false, // metrics of status-based objects
"datepicker": false, // date pickers
"htmledit": false, // HTML input fields
"codeedit": false, // code editors
"highcontrast": false, // forced HighContrast theme
"clickablerow": false, // opening a form per table row
"flatlinks": false // default display of linked objects
}

Each overridden behavior falls back to its standard, potentially non-compliant version for that user.

Compliance statuses​

The same vocabulary is used by the ACCESSIBILITY_DEV icons, by the fld_compliance field and across this document.

StatusIconfld_complianceMeaning
Compliant (C)greenCUse freely. The feature meets the RGAA tests and WAI-ARIA rules.
Partially Compliant (PC)orangePCUsable, but only with the settings given in its help popup (fld_compliancehint).
Non-Compliant (NC)redNCDo not use under strict compliance requirements.
Not EvaluatedgreyNENot assessed yet. Avoid under strict requirements.
Not ApplicablenoneNAThe feature has no bearing on RGAA compliance.

Designer ACCESSIBILITY_DEV sysparam​

Set the ACCESSIBILITY_DEV system parameter to yes for the whole design phase. Every setting in the configuration forms then shows an icon next to its label, giving the compliance status of the related feature where you make the choice.

Accessibility development icons and help example

  • No icon: the feature has no bearing on RGAA compliance.
  • Grey icon: not evaluated yet. Treat it as Non-Compliant under strict requirements.
  • Red / orange / green icon: Non-Compliant / Partially Compliant / Compliant.
  • On orange icons, a help popup lists the settings and precautions required to use the feature compliantly.

Accessibility declarations​

Once your application is built, declare its accessibility level with the ACCESSIBILITY_LEVEL system parameter. It is displayed in the application footer.

{
"audit": false,
"score": 60
}
  • audit: false for an estimate by your team, the footer then reads Estimated accessibility. true for the result of an official audit, the footer then reads Accessibility. Without an audit, the law forbids claiming a guaranteed level.
  • score (0 to 100): 100 is labelled Fully Compliant, 50 and above Partially Compliant, below 50 Non Compliant.

The example above displays Estimated accessibility: partially compliant.

Platform-wide considerations​

These are not settings to apply, but things to know about the platform as a whole: where its compliance ends, and where it depends on your design choices or on your end users. Keep them in mind across the whole application.

Themes and contrast​

The HighContrast theme, shipped with the platform in light and dark variants, is the reference compliant theme. It is the theme a11y-mode forces, whatever theme the application uses otherwise.

Colors are fully variabilized. If you create and use a custom theme, the platform can no longer guarantee the criteria on colors, contrast and shapes: validate every color with the built-in contrast checker available at each customization point.

Themes do not change the layout. If your custom theme does (custom CSS on sizes, spacing, positioning, etc.), the platform can no longer guarantee the criteria on presentation and readability either.

Criteria whose compliance relies on the HighContrast theme:

A custom theme that changes the layout also puts the rest of theme 10 at stake (text resizing, information given by shape, size or position, reflow).

Custom HTML​

Several extension points let you inject markup the platform does not control: static texts, field help content, publication templates, JavaScript addons and external objects. Plain text is always safe. As soon as you write HTML, its compliance is entirely yours - see the resources for the WAI-ARIA rules to follow.

External objects are the extreme case: their markup is written in free code and cannot be checked at all by the platform.

Images​

Each image exposes two user-editable texts:

  • alt, its text alternative;
  • longdesc, a detailed description attached to the image as screen-reader-only text, and visible to everyone while a11y-mode is on.

The platform provides the mechanism, but compliance depends on end users writing accurate texts, or explicitly marking images as decorative. Say so in your application's own user documentation.

Charts: the platform's default Crosstab component is compliant, as it always offers a table alternative to its charts. Other charts (ChartJS in external objects) are not: provide an accessible alternative yourself (data table, textual summary). The same goes for diagrams and infographics.

Languages and translations​

The platform provides a translation system, but not multilingual content: an application displays one language at a time, and changing the language switches the whole application.

Use the translation system properly: criteria requiring relevant labels, titles and alternatives are only met if every text is translated in the active language. An untranslated text produces a change of language the platform cannot declare in the markup.

Values entered by users (inputs, social posts, chats, etc.) cannot be detected as another language when they are. Their language change cannot be declared either.

Component guides​

Mandatory settings​

Settings for a11y-mode​

In order to enable the a11y-mode and its overrides, there are few things to enable within your applications :

  • associate the user parameter ACCESSIBILITY_OVERRIDE
  • create a Scope theme to link the HighContrast theme to your scopes.

Settings for strict RGAA requirements​

For applications that have very strict RGAA requirements, or if the gap between a11y-mode and regular usage needs to be shortened.

SettingValueWhy
TODOTODOTODO

Good practices​

Appendix: keyboard accessibility​

This reference is worth copying into your own application's user documentation: end users have no other way of discovering these shortcuts.

Global​

KeysAction
TABFocus the next element in DOM order
SHIFT + TABFocus the previous element in DOM order
ESCClose, by priority: the focused field or rich editor, then all modal dialogs, then the current form. Navigates back when nothing is focused
ALT + HDisplay the Home page
ALT + MFocus the main Menu, on the last selection or the first item
ALT + WWide screen, toggling the menu
ALT + BOpen the Bookmarks dialog
ALT + FFocus the Finder, the global search in the header
ALT + LFocus the first visible List
ALT + NFocus the Next visible area or list, on the first .js-focusable element
KeysAction
ALT + MFocus the main menu, on the last selection or the first item
RIGHT / LEFTOpen / close a domain or a sub-menu
UP / DOWNPrevious / next menu item
ENTEROpen the item, list or view, or launch a business process

Lists and forms​

Horizontal navigation, after a search:

KeysAction
SHIFT + LEFTPrevious record on a form, previous page on a list
SHIFT + RIGHTNext record on a form, next page on a list
CTRL + SHIFT + LEFTFirst record on a form, first page on a list
CTRL + SHIFT + RIGHTLast record on a form, last page on a list

Vertical navigation within a page of a list:

KeysAction
UP / DOWNMove across table rows: header row to focus columns and sort fields, search row to filter, then the records of the current page
TABVisit the focusable cells of a row. Long texts, markdown content and textareas are focusable so they can be scrolled with the arrow keys
ENTEROpen the record, when form access is granted for that row

Designer shortcuts​

Shortcuts can define further access keys.

KeysAction
ALT + IXML import page
ALT + C, then CClear all caches
ALT + XOpen the script / code editor

Resources​