@justinribeiro/toggle-tooltip
v2.0.0
Published
An accessible, fast, and WCAG 2.1 compliant toggle style tooltip web component using role=status.
Downloads
75,968
Maintainers
Readme
toggle-tooltip
A small (8KB), accessible, fast, and WCAG 2.1 compliant toggle style tooltip web component using role=status.
Features
- WCAG 2.1 compliant:
- Fast: no jank repaint (turn on paint flashing in DevTools...nada)
- Screen reader friendly (interaction model allows explicit feedback)
- Supports optional hover (which is also compliant with WCAG 1.4.13)
- Basic styling with CSS custom properties
Demo / Screen Reader
To see the tooltip in action within JAWS 2020, see https://www.youtube.com/watch?v=PNH0RTB9alg
Install with Tools
Install the component:
npm i @justinribeiro/toggle-tooltip
# or
yarn add @justinribeiro/toggle-tooltip
Install with CDN
If you want the paste-and-go version, you can simply load it via CDN:
<script type="module" src="https://cdn.jsdelivr.net/npm/@justinribeiro/[email protected]/dist/index.js">
Usage
Fire it up:
<script type="module">
import '@justinribeiro/toggle-tooltip/index.js';
</script>
<toggle-tooltip>
ⓘ
<span slot="tooltip">
I'm a tooltip!
</span>
</toggle-tooltip>
See other uses in demo/index.html
.
Development
$ git clone [email protected]:justinribeiro/toggle-tooltip.git
$ cd toggle-tooltip
$ yarn install
$ yarn start
# run the tests
$ yarn test
Properties
| Property | Attribute | Type | Default | Description |
|----------|-----------|-----------|---------------|--------------------------------------------------|
| hover
| hover
| boolean
| false | Setting hover
as attribute on component allows for the mouseover andmouseout events to become active for this instance of the toggle-tooltip
Note: this mode is complaint with WCAG SC 1.4.13 Content on Hover or FocusTODO: I suppose I could watch for the change and then add/remove the eventhandlers...but I don't have a use case for the at the moment |
| label
| label
| string
| "'more info'" | Define the internal button aria-label when an svg icon or other non-textis used |
| show
| show
| boolean
| "'more info'" | Define the internal button aria-label when an svg icon or other non-textis used |
Methods
| Method | Type | Description |
|---------|-------------------------------|--------------------------------------------------|
| close
| (noReFocus?: boolean): void
| Close the tooltipoReFocus: Don't refocus to the button (probably because wetabbed off and are moving through the document) |
| open
| (): void
| Open the tooltip and focus to it |
Slots
| Name | Description |
|-----------|--------------------------------------------------|
| | Default slot injects into button value, useful for icon |
| tooltip
| Any message or links you'd like in the tooltip status message |
CSS Custom Properties
| Property | Default |
|--------------------------------------------|------------------|
| --toggle-tooltip-button-background-color
| "transparent" |
| --toggle-tooltip-button-border
| "none" |
| --toggle-tooltip-button-padding
| 0 |
| --toggle-tooltip-status-background-color
| "#fafafa" |
| --toggle-tooltip-status-border
| "1px solid #ccc" |
| --toggle-tooltip-status-border-radius
| "0.5rem" |
| --toggle-tooltip-status-box-shadow
| "none" |
| --toggle-tooltip-status-padding
| "1rem" |