UNPKG

@codegouvfr/react-dsfr

Version:

French State Design System React integration library

61 lines (47 loc) 1.55 kB
/*! DSFR v1.13.2 | SPDX-License-Identifier: MIT | License-Filename: LICENSE.md | restricted use (see terms and conditions) */ const config = { prefix: 'fr', namespace: 'dsfr', organisation: '@gouvfr', version: '1.13.2' }; const api = window[config.namespace]; const TagEvent = { DISMISS: api.internals.ns.event('dismiss') }; class TagDismissible extends api.core.Instance { static get instanceClassName () { return 'TagDismissible'; } init () { this.listenClick(); } handleClick () { this.focusClosest(); switch (api.mode) { case api.Modes.ANGULAR: case api.Modes.REACT: case api.Modes.VUE: this.request(this.verify.bind(this)); break; default: this.remove(); } this.dispatch(TagEvent.DISMISS); } verify () { if (document.body.contains(this.node)) this.warn(`a TagDismissible has just been dismissed and should be removed from the dom. In ${api.mode} mode, the api doesn't handle dom modification. An event ${TagEvent.DISMISS} is dispatched by the element to trigger the removal`); } } const TagSelector = { PRESSABLE: `${api.internals.ns.selector('tag')}[aria-pressed]`, DISMISSIBLE: `${api.internals.ns.selector('tag--dismiss')}` }; api.tag = { TagDismissible: TagDismissible, TagSelector: TagSelector, TagEvent: TagEvent }; api.internals.register(api.tag.TagSelector.PRESSABLE, api.core.Toggle); api.internals.register(api.tag.TagSelector.DISMISSIBLE, api.tag.TagDismissible); //# sourceMappingURL=tag.module.js.map