web-components-aria-modal v1.2.2
web-components-aria-modal
Accessible modal with Web Components
Install(ESM)
- yarn add web-components-aria-modalor- npm i web-components-aria-modal
Install(UMD)
- Please download the following code.
- https://unpkg.com/web-components-aria-modal@latest/dist/index.umd.js
Usage
import 'web-components-aria-modal';
/**
 * do something
*/Append Your Modal
You can append your modal inside aria-modal with slot. If you use slot, you can use accessible feature for modal.
Please see following example.
<aria-modal>
  <div name="modal">
    <!-- ... -->
  </div>
</aria-modal>Style
Using css variables, you can apply your style to <aria-modal>.
aria-modal {
  --backdrop-display: block; /* or flex, inline-block, etc... */
  --backdrop-color: rgba(0, 0, 0, 0.3); /* background-color for backdrop */
  --backdrop-position: absolute; /* or fixed */
  --backdrop-z-index: 0;
}Props
| name | required | default | description | 
|---|---|---|---|
| open | false | false | It is used to show modal. You can set true if you want to open modal. | 
| first-focus | true | none | It is used to focus to first element when modal is opened. You should assign id name. | 
| node | true | none | It is used to move focus inside modal. You should set modal id name. | 
| animation | false | false | Fade animation will run if animationflag istrue. | 
| duration | false | 300 | animation duration time | 
| active | false | none | active is class that is added when openprops is changedtrue. | 
| aria-labeloraria-labelledby | true | none | See https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-labelledby_attribute | 
| aria-describedby | true | none | See https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-describedby_attribute | 
| role | true | none | Assignable value are dialogoralertdialog. See https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles | 
| aria-modal | false | true | See https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/dialog_role | 
Warning
If the active class is not set to aria-modal, it may flicker when reloaded on browser. When you set active class, you should set your modal to display: none; and you should set your active class to display: block; /* or flex, inline-block, etc... */.
This problem is occurred by rendering process for Web Components. Your modal is assigned to slot element in aria-modal, and slot is rendered after JavaScript file(and Web Components) have loaded. That is, this problem is occurred by your modal is rendered without your modal is assigned to slot.
Example
https://github.com/github/clipboard-copy-element/tree/master/examples