Skip to content

Add warning when Settings.setAppElement is not set. #1460

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conversation

davidlygagnon
Copy link
Contributor

  • Adds warning to Modal component to let consumer know when Settings.setAppElement(el) was not set prior to using this component.
  • Adds prop ariaHideApp on Modal and App Laucher component as a way to opt-out of having to set Settings.setAppElement(el).

Fixes #780

Additional description


CONTRIBUTOR checklist (do not remove)

Please complete for every pull request

  • First-time contributors should sign the Contributor License Agreement. It's a fancy way of saying that you are giving away your contribution to this project. If you haven't before, wait a few minutes and a bot will comment on this pull request with instructions.
  • npm run lint:fix has been run and linting passes.
  • Mocha, Jest (Storyshots), and components/component-docs.json CI tests pass (npm test).
  • Tests have been added for new props to prevent regressions in the future. See readme.
  • Review the appropriate Storybook stories. Open http://localhost:9001/.
  • The Accessibility panel of each Storybook story has 0 violations (aXe). Open http://localhost:9001/.
  • Review tests are passing in the browser. Open http://localhost:8001/.
  • Review markup conforms to SLDS by looking at DOM snapshot strings.

REVIEWER checklist (do not remove)

  • TravisCI tests pass. This includes linting, Mocha, Jest, Storyshots, and components/component-docs.json tests.
  • Tests have been added for new props to prevent regressions in the future. See readme.
  • Review the appropriate Storybook stories. Open http://localhost:9001/.
  • The Accessibility panel of each Storybook story has 0 violations (aXe). Open http://localhost:9001/.
  • Review tests are passing in the browser. Open http://localhost:8001/.
  • Review markup conforms to SLDS by looking at DOM snapshot strings.
  • Add year-first date and commit SHA to last-slds-markup-review in package.json and push.
  • Request a review of the deployed Heroku app by the Salesforce UX Accessibility Team.
  • Add year-first review date, and commit SHA, last-accessibility-review, to package.json and push.
  • While the contributor's branch is checked out, run npm run local-update within locally cloned site repo to confirm the site will function correctly at the next release.

…etAppElement was not set.

- Add ariaHideApp element as a way to opt out of having to set App Element. To opt out, ariaHideApp=false must be set.
@davidlygagnon
Copy link
Contributor Author

This will show the following warning:

screen shot 2018-07-16 at 11 19 59 pm

Just an observation: React-Modal also already prints a warning msg when consumers don't use Modal.setAppElement. Wouldn't this feel a bit of duplication of warning messages?

I guess the difference here is that we should also let consumers know that Settings.setAppElement(el) wasn't set and should have been.

@@ -31,6 +31,7 @@ const defaultProps = {
assistiveText: {
trigger: 'Open App Launcher',
},
ariaHideApp: true,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

React modal has this prop to "opt out" of setAppElement. I think we should use that as well.

@@ -181,6 +188,9 @@ class Modal extends React.Component {
componentWillMount () {
this.generatedId = shortid.generate();
checkProps(MODAL, this.props);
if (this.props.ariaHideApp) {
checkAppElementIsSet();
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If consumer hasn't opted-out, check if the app element was set. The app-launcher component also uses this modal internally so I only need to add this check here.

@interactivellama
Copy link
Contributor

interactivellama commented Jul 25, 2018

I'd like to not have truthy default props, but since ariaHideApp is used in React Modal and I hope "no one disables it ever." This looks good. This should help a bunch with accessibility!

@interactivellama interactivellama merged commit 6e310b0 into salesforce:master Jul 25, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Check if setAppElement is set on mount
2 participants