all repos — caroster @ 8bbbeae604eacc3a0f3e559c22dcb694822bf0b1

[Octree] Group carpool to your event https://caroster.io

Resolve "Mettre en place un Linter d'accessibilité"
Hadrien Froger e3k8y9i0k3s8o9x4@octreea17.slack.com
Fri, 28 Aug 2020 15:31:16 +0000
commit

8bbbeae604eacc3a0f3e559c22dcb694822bf0b1

parent

aef70f94e89ffd14d07d7782737ed76fa5157b3c

M app/package-lock.jsonapp/package-lock.json

@@ -2570,6 +2570,12 @@ "version": "1.10.0",

"resolved": "https://npm-8ee.hidora.com/aws4/-/aws4-1.10.0.tgz", "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==" }, + "axe-core": { + "version": "3.5.5", + "resolved": "https://npm-8ee.hidora.com/axe-core/-/axe-core-3.5.5.tgz", + "integrity": "sha512-5P0QZ6J5xGikH780pghEdbEKijCTrruK9KxtPZCFWUpef0f6GipO+xEZ5GKCb020mmqgbiNO6TcA55CriL784Q==", + "dev": true + }, "axobject-query": { "version": "2.2.0", "resolved": "https://npm-8ee.hidora.com/axobject-query/-/axobject-query-2.2.0.tgz",

@@ -10734,6 +10740,16 @@ "regenerator-runtime": "^0.13.3",

"whatwg-fetch": "^3.0.0" } }, + "react-axe": { + "version": "3.5.3", + "resolved": "https://npm-8ee.hidora.com/react-axe/-/react-axe-3.5.3.tgz", + "integrity": "sha512-WDKAoLVsC6rsmYboXThY7OnVDaQOOOecySHJJjggn1cFOJyWtzNh2uiV3oSxoAolONGTi22G9zKDxw53g/8Vqg==", + "dev": true, + "requires": { + "axe-core": "^3.5.0", + "requestidlecallback": "^0.3.0" + } + }, "react-dev-utils": { "version": "10.2.1", "resolved": "https://npm-8ee.hidora.com/react-dev-utils/-/react-dev-utils-10.2.1.tgz",

@@ -10946,6 +10962,22 @@ "version": "6.0.7",

"resolved": "https://npm-8ee.hidora.com/react-error-overlay/-/react-error-overlay-6.0.7.tgz", "integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==" }, + "react-fast-compare": { + "version": "3.2.0", + "resolved": "https://npm-8ee.hidora.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz", + "integrity": "sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==" + }, + "react-helmet": { + "version": "6.1.0", + "resolved": "https://npm-8ee.hidora.com/react-helmet/-/react-helmet-6.1.0.tgz", + "integrity": "sha512-4uMzEY9nlDlgxr61NL3XbKRy1hEkXmKNXhjbAIOVw5vcFrsdYbH2FEwcNyWvWinl103nXgzYNlns9ca+8kFiWw==", + "requires": { + "object-assign": "^4.1.1", + "prop-types": "^15.7.2", + "react-fast-compare": "^3.1.1", + "react-side-effect": "^2.1.0" + } + }, "react-i18next": { "version": "11.7.0", "resolved": "https://npm-8ee.hidora.com/react-i18next/-/react-i18next-11.7.0.tgz",

@@ -11050,6 +11082,11 @@ "webpack-dev-server": "3.10.3",

"webpack-manifest-plugin": "2.2.0", "workbox-webpack-plugin": "4.3.1" } + }, + "react-side-effect": { + "version": "2.1.0", + "resolved": "https://npm-8ee.hidora.com/react-side-effect/-/react-side-effect-2.1.0.tgz", + "integrity": "sha512-IgmcegOSi5SNX+2Snh1vqmF0Vg/CbkycU9XZbOHJlZ6kMzTmi3yc254oB1WCkgA7OQtIAoLmcSFuHTc/tlcqXg==" }, "react-slick": { "version": "0.26.1",

@@ -11351,6 +11388,12 @@ "request-promise-core": "1.1.3",

"stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" } + }, + "requestidlecallback": { + "version": "0.3.0", + "resolved": "https://npm-8ee.hidora.com/requestidlecallback/-/requestidlecallback-0.3.0.tgz", + "integrity": "sha1-b7dOBzP5DfP6pIOPn2oqX5t0KsU=", + "dev": true }, "require-directory": { "version": "2.1.1",
M app/package.jsonapp/package.json

@@ -16,6 +16,7 @@ "marked": "^1.1.0",

"moment": "^2.27.0", "react": "^16.13.1", "react-dom": "^16.13.1", + "react-helmet": "^6.1.0", "react-i18next": "^11.7.0", "react-router-dom": "^5.2.0", "react-scripts": "3.4.1",

@@ -46,6 +47,7 @@ ]

}, "devDependencies": { "eslint-config-google": "^0.14.0", + "react-axe": "^3.5.3", "react-test-renderer": "^16.13.1" } }
M app/src/index.jsapp/src/index.js

@@ -6,6 +6,15 @@ import 'moment/locale/fr-ch';

import * as serviceWorker from './serviceWorker'; import App from './App'; +if (process.env.NODE_ENV !== 'production') { + // Require to not be embed in production builds + const axe = require('react-axe'); + const {config} = require('./setupA11y'); + // Throws some accessibility warning on rendered DOM. + // @see https://github.com/dequelabs/react-axe + axe(React, ReactDOM, 1000, config); +} + ReactDOM.render( <React.StrictMode> <App />
M app/src/layouts/Default.jsapp/src/layouts/Default.js

@@ -1,4 +1,5 @@

import React from 'react'; +import {Helmet} from 'react-helmet'; import GenericMenu from '../containers/GenericMenu'; const DefaultLayout = ({

@@ -6,10 +7,15 @@ children,

className, menuTitle = 'Caroster', menuActions, + pageTitle = undefined, + displayMenu = true, }) => { return ( <> - {(menuTitle || menuActions) && ( + <Helmet> + <title>{pageTitle || menuTitle}</title> + </Helmet> + {displayMenu && (menuTitle || menuActions) && ( <GenericMenu title={menuTitle} actions={menuActions} /> )} <div className={className}>{children}</div>
M app/src/pages/Event.jsapp/src/pages/Event.js

@@ -46,7 +46,11 @@

if (!event) return <Loading />; return ( - <Layout> + <Layout + pageTitle={t('event.title')} + menuTitle={t('meta.title', {title: event.name})} + displayMenu={false} + > <EventBar event={event} isEditing={isEditing}
A app/src/setupA11y.js

@@ -0,0 +1,24 @@

+export const config = { + rules: [ + { + id: 'landmark-one-main', + enabled: false, + }, + { + id: 'page-has-heading-one', + enabled: false, + }, + { + id: 'region', + enabled: false, + }, + { + id: 'color-contrast', + enabled: false, + }, + { + id: 'button-name', + enabled: false, + }, + ], +};