From ec60fdbc8772ed60ecca40f62d3ec0449a2e09e5 Mon Sep 17 00:00:00 2001 From: Ed Schiebel Date: Wed, 15 Mar 2023 09:21:38 -0400 Subject: [PATCH] Format a11y checker header to be compliant with canvas standards closes MAT-1130 flag=none test plan - have an a11y violation in rce content - open the a11y checker > expect the close button to be on the right > expect the tray to be a little wider so the title fits on 1 line (in English, it may wrap in other languages) Change-Id: I88c43d7421390baf79e5e18ab44543fbe425240c Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/313340 Tested-by: Service Cloud Jenkins Reviewed-by: Juan Chavez QA-Review: Juan Chavez Product-Review: Ed Schiebel --- .../components/checker.js | 283 ++++++++++-------- 1 file changed, 150 insertions(+), 133 deletions(-) diff --git a/packages/canvas-rce/src/tinymce-a11y-checker/components/checker.js b/packages/canvas-rce/src/tinymce-a11y-checker/components/checker.js index d81f08a275c..fbd4ed60659 100644 --- a/packages/canvas-rce/src/tinymce-a11y-checker/components/checker.js +++ b/packages/canvas-rce/src/tinymce-a11y-checker/components/checker.js @@ -15,6 +15,8 @@ * You should have received a copy of the GNU Affero General Public License along * with this program. If not, see . */ +/* eslint-disable jest/valid-describe */ +// our own imported describe function confuses eslint import React from 'react' @@ -22,6 +24,7 @@ import preventDefault from 'prevent-default' import {LiveAnnouncer, LiveMessage} from 'react-aria-live' import {ScreenReaderContent} from '@instructure/ui-a11y-content' import {Button, CloseButton} from '@instructure/ui-buttons' +import {Flex} from '@instructure/ui-flex' import {Tray} from '@instructure/ui-tray' import {Popover} from '@instructure/ui-popover' import {View} from '@instructure/ui-view' @@ -45,6 +48,7 @@ import * as dom from '../utils/dom' import checkNode from '../node-checker' import formatMessage from '../../format-message' import {clearIndicators} from '../utils/indicate' +import {getTrayHeight} from '../../rce/plugins/shared/trayUtils' // safari still doesn't support the standard api const FS_CHANGEEVENT = document.exitFullscreen ? 'fullscreenchange' : 'webkitfullscreenchange' @@ -213,15 +217,17 @@ export default class Checker extends React.Component { } updateFormState = ({target}) => { - const formState = {...this.state.formState} - if (target.type === 'checkbox') { - formState[target.name] = target.checked - } else { - formState[target.name] = target.value - } - this.setState({ - formState, - formStateValid: this.formStateValid(formState), + this.setState(prevState => { + const formState = {...prevState.formState} + if (target.type === 'checkbox') { + formState[target.name] = target.checked + } else { + formState[target.name] = target.value + } + return { + formState, + formStateValid: this.formStateValid(formState), + } }) } @@ -322,145 +328,156 @@ export default class Checker extends React.Component { onDismiss={() => this.handleClose()} placement="end" contentRef={e => (this.trayElement = e)} + size="regular" + theme={{regularWidth: '22em'}} > - this.handleClose()} - buttonRef={ref => (this._closeButtonRef = ref)} - > - {formatMessage('Close Accessibility Checker')} - - - - {' ' + formatMessage('Accessibility Checker')} - - {this.state.errors.length > 0 && ( - - + + + + {formatMessage('Accessibility Checker')} + + + this.handleClose()} + buttonRef={ref => (this._closeButtonRef = ref)} + > + {formatMessage('Close Accessibility Checker')} + + + + + + {this.state.errors.length > 0 && ( + + - - - - - {issueNumberMessage} - - - - - - - - - this.setState({showWhyPopover: false})} - > - {formatMessage('Close')} - - -

{rule.why()}

-

- {rule.link && rule.link.length && ( - - - {rule.linkText()} - - - )} -

-
-
-
-
-
-
-
-
-
this.fixIssue())}> - {this.errorMessage()} - {rule.form().map(f => ( - - {this.renderField(f)} - - ))} - + /> + - - + {issueNumberMessage} - + + + + + + this.setState({showWhyPopover: false})} + > + {formatMessage('Close')} + + +

{rule.why()}

+

+ {rule.link && rule.link.length && ( + + + {rule.linkText()} + + + )} +

+
+
+
+
- -
- )} - {this.state.errors.length === 0 && !this.state.checking && ( - - -

{formatMessage('No accessibility issues were detected.')}

-
- -
- )} - {this.state.checking && ( -
- - -
- )} -
+
this.fixIssue())}> + {this.errorMessage()} + {rule.form().map(f => ( + + {this.renderField(f)} + + ))} + + + + + + + + + + + + + +
+
+ )} + {this.state.errors.length === 0 && !this.state.checking && ( + + +

{formatMessage('No accessibility issues were detected.')}

+
+ +
+ )} + {this.state.checking && ( +
+ + +
+ )} + + )