@haiilo/catalyst 4.1.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/catalyst/assets/fonts/Lato-Black.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-Black.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-BlackItalic.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-BlackItalic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-Bold.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-Bold.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-BoldItalic.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-BoldItalic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-Hairline.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-Hairline.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-HairlineItalic.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-HairlineItalic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-Heavy.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-Heavy.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-HeavyItalic.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-HeavyItalic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-Italic.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-Italic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-Light.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-Light.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-LightItalic.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-LightItalic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-Medium.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-Medium.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-MediumItalic.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-MediumItalic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-Regular.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-Regular.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-Semibold.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-Semibold.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-SemiboldItalic.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-SemiboldItalic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-Thin.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-Thin.woff2 +0 -0
- package/dist/catalyst/assets/fonts/Lato-ThinItalic.woff +0 -0
- package/dist/catalyst/assets/fonts/Lato-ThinItalic.woff2 +0 -0
- package/dist/catalyst/catalyst.css +6 -27
- package/dist/catalyst/catalyst.esm.js +1 -1
- package/dist/catalyst/catalyst.esm.js.map +1 -1
- package/dist/catalyst/index.esm.js.map +1 -1
- package/dist/catalyst/p-50855511.entry.js +10 -0
- package/dist/catalyst/p-50855511.entry.js.map +1 -0
- package/dist/catalyst/p-ccfebe33.js.map +1 -1
- package/dist/catalyst/p-d1fb9d96.js +3 -0
- package/dist/catalyst/p-d1fb9d96.js.map +1 -0
- package/dist/catalyst/scss/fonts/_fonts-mixins.scss +0 -10
- package/dist/cjs/cat-alert_24.cjs.entry.js +932 -1132
- package/dist/cjs/cat-alert_24.cjs.entry.js.map +1 -1
- package/dist/cjs/catalyst.cjs.js +10 -3
- package/dist/cjs/catalyst.cjs.js.map +1 -1
- package/dist/cjs/{index-c4542095.js → index-01312a2e.js} +527 -245
- package/dist/cjs/index-01312a2e.js.map +1 -0
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/loader.cjs.js +4 -3
- package/dist/cjs/loader.cjs.js.map +1 -1
- package/dist/collection/assets/fonts/Lato-Black.woff +0 -0
- package/dist/collection/assets/fonts/Lato-Black.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-BlackItalic.woff +0 -0
- package/dist/collection/assets/fonts/Lato-BlackItalic.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-Bold.woff +0 -0
- package/dist/collection/assets/fonts/Lato-Bold.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-BoldItalic.woff +0 -0
- package/dist/collection/assets/fonts/Lato-BoldItalic.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-Hairline.woff +0 -0
- package/dist/collection/assets/fonts/Lato-Hairline.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-HairlineItalic.woff +0 -0
- package/dist/collection/assets/fonts/Lato-HairlineItalic.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-Heavy.woff +0 -0
- package/dist/collection/assets/fonts/Lato-Heavy.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-HeavyItalic.woff +0 -0
- package/dist/collection/assets/fonts/Lato-HeavyItalic.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-Italic.woff +0 -0
- package/dist/collection/assets/fonts/Lato-Italic.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-Light.woff +0 -0
- package/dist/collection/assets/fonts/Lato-Light.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-LightItalic.woff +0 -0
- package/dist/collection/assets/fonts/Lato-LightItalic.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-Medium.woff +0 -0
- package/dist/collection/assets/fonts/Lato-Medium.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-MediumItalic.woff +0 -0
- package/dist/collection/assets/fonts/Lato-MediumItalic.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-Regular.woff +0 -0
- package/dist/collection/assets/fonts/Lato-Regular.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-Semibold.woff +0 -0
- package/dist/collection/assets/fonts/Lato-Semibold.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-SemiboldItalic.woff +0 -0
- package/dist/collection/assets/fonts/Lato-SemiboldItalic.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-Thin.woff +0 -0
- package/dist/collection/assets/fonts/Lato-Thin.woff2 +0 -0
- package/dist/collection/assets/fonts/Lato-ThinItalic.woff +0 -0
- package/dist/collection/assets/fonts/Lato-ThinItalic.woff2 +0 -0
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/cat-alert/cat-alert.js +69 -71
- package/dist/collection/components/cat-alert/cat-alert.js.map +1 -1
- package/dist/collection/components/cat-avatar/cat-avatar.js +172 -165
- package/dist/collection/components/cat-avatar/cat-avatar.js.map +1 -1
- package/dist/collection/components/cat-badge/cat-badge.js +102 -111
- package/dist/collection/components/cat-badge/cat-badge.js.map +1 -1
- package/dist/collection/components/cat-button/cat-button.js +526 -537
- package/dist/collection/components/cat-button/cat-button.js.map +1 -1
- package/dist/collection/components/cat-card/cat-card.js +12 -8
- package/dist/collection/components/cat-checkbox/cat-checkbox.js +336 -350
- package/dist/collection/components/cat-checkbox/cat-checkbox.js.map +1 -1
- package/dist/collection/components/cat-dropdown/cat-dropdown.js +137 -137
- package/dist/collection/components/cat-dropdown/cat-dropdown.js.map +1 -1
- package/dist/collection/components/cat-form-group/cat-form-group.js +58 -40
- package/dist/collection/components/cat-form-group/cat-form-group.js.map +1 -1
- package/dist/collection/components/cat-form-hint/cat-form-hint.js +14 -7
- package/dist/collection/components/cat-form-hint/cat-form-hint.js.map +1 -1
- package/dist/collection/components/cat-i18n/cat-i18n-registry.js +1 -1
- package/dist/collection/components/cat-icon/cat-icon-registry.js +1 -1
- package/dist/collection/components/cat-icon/cat-icon.js +85 -79
- package/dist/collection/components/cat-icon/cat-icon.js.map +1 -1
- package/dist/collection/components/cat-input/cat-input.css +32 -3
- package/dist/collection/components/cat-input/cat-input.js +662 -660
- package/dist/collection/components/cat-input/cat-input.js.map +1 -1
- package/dist/collection/components/cat-input/input-type.js +1 -1
- package/dist/collection/components/cat-label/cat-label.js +69 -78
- package/dist/collection/components/cat-label/cat-label.js.map +1 -1
- package/dist/collection/components/cat-notification/cat-notification.js +1 -1
- package/dist/collection/components/cat-notification/cat-notification.js.map +1 -1
- package/dist/collection/components/cat-pagination/cat-pagination.js +192 -226
- package/dist/collection/components/cat-pagination/cat-pagination.js.map +1 -1
- package/dist/collection/components/cat-radio/cat-radio.js +319 -327
- package/dist/collection/components/cat-radio/cat-radio.js.map +1 -1
- package/dist/collection/components/cat-radio-group/cat-radio-group.js +173 -165
- package/dist/collection/components/cat-radio-group/cat-radio-group.js.map +1 -1
- package/dist/collection/components/cat-scrollable/cat-scrollable.js +200 -208
- package/dist/collection/components/cat-scrollable/cat-scrollable.js.map +1 -1
- package/dist/collection/components/cat-select/cat-select.js +555 -590
- package/dist/collection/components/cat-select/cat-select.js.map +1 -1
- package/dist/collection/components/cat-select-demo/cat-select-demo.js +3 -28
- package/dist/collection/components/cat-select-demo/cat-select-demo.js.map +1 -1
- package/dist/collection/components/cat-skeleton/cat-skeleton.js +85 -88
- package/dist/collection/components/cat-skeleton/cat-skeleton.js.map +1 -1
- package/dist/collection/components/cat-spinner/cat-spinner.js +52 -50
- package/dist/collection/components/cat-spinner/cat-spinner.js.map +1 -1
- package/dist/collection/components/cat-tab/cat-tab.js +169 -168
- package/dist/collection/components/cat-tab/cat-tab.js.map +1 -1
- package/dist/collection/components/cat-tabs/cat-tabs.js +73 -66
- package/dist/collection/components/cat-tabs/cat-tabs.js.map +1 -1
- package/dist/collection/components/cat-textarea/cat-textarea.css +32 -1
- package/dist/collection/components/cat-textarea/cat-textarea.js +479 -468
- package/dist/collection/components/cat-textarea/cat-textarea.js.map +1 -1
- package/dist/collection/components/cat-toggle/cat-toggle.js +319 -326
- package/dist/collection/components/cat-toggle/cat-toggle.js.map +1 -1
- package/dist/collection/components/cat-tooltip/cat-tooltip.css +7 -1
- package/dist/collection/components/cat-tooltip/cat-tooltip.js +187 -198
- package/dist/collection/components/cat-tooltip/cat-tooltip.js.map +1 -1
- package/dist/collection/index.js +1 -1
- package/dist/collection/scss/fonts/_fonts-mixins.scss +0 -10
- package/dist/collection/utils/breakpoints.js +1 -1
- package/dist/collection/utils/breakpoints.js.map +1 -1
- package/dist/collection/utils/coerce.js +11 -0
- package/dist/collection/utils/coerce.js.map +1 -0
- package/dist/collection/utils/first-tabbable.js +1 -1
- package/dist/collection/utils/is-touch-screen.js +1 -1
- package/dist/collection/utils/load-img.js +1 -1
- package/dist/collection/utils/media-matcher.js +1 -1
- package/dist/collection/utils/platform.js +4 -4
- package/dist/collection/utils/setDefault.js +1 -1
- package/dist/components/cat-alert.js +1 -6
- package/dist/components/cat-alert.js.map +1 -1
- package/dist/components/cat-avatar2.js +6 -9
- package/dist/components/cat-avatar2.js.map +1 -1
- package/dist/components/cat-badge.js +0 -15
- package/dist/components/cat-badge.js.map +1 -1
- package/dist/components/cat-button2.js +10 -36
- package/dist/components/cat-button2.js.map +1 -1
- package/dist/components/cat-checkbox2.js +9 -26
- package/dist/components/cat-checkbox2.js.map +1 -1
- package/dist/components/cat-dropdown2.js +139 -176
- package/dist/components/cat-dropdown2.js.map +1 -1
- package/dist/components/cat-form-group.js +4 -9
- package/dist/components/cat-form-group.js.map +1 -1
- package/dist/components/cat-form-hint.js +13 -6
- package/dist/components/cat-form-hint.js.map +1 -1
- package/dist/components/cat-icon-registry.js +71 -0
- package/dist/components/cat-icon-registry.js.map +1 -0
- package/dist/components/cat-icon.js +1 -1
- package/dist/components/cat-icon2.js +5 -71
- package/dist/components/cat-icon2.js.map +1 -1
- package/dist/components/cat-input.js +33 -41
- package/dist/components/cat-input.js.map +1 -1
- package/dist/components/cat-label.js +1 -6
- package/dist/components/cat-label.js.map +1 -1
- package/dist/components/cat-pagination.js +0 -30
- package/dist/components/cat-pagination.js.map +1 -1
- package/dist/components/cat-radio-group.js +3 -6
- package/dist/components/cat-radio-group.js.map +1 -1
- package/dist/components/cat-radio.js +9 -23
- package/dist/components/cat-radio.js.map +1 -1
- package/dist/components/cat-scrollable2.js +1 -12
- package/dist/components/cat-scrollable2.js.map +1 -1
- package/dist/components/cat-select-demo.js +2 -12
- package/dist/components/cat-select-demo.js.map +1 -1
- package/dist/components/cat-select2.js +40 -47
- package/dist/components/cat-select2.js.map +1 -1
- package/dist/components/cat-skeleton2.js +1 -10
- package/dist/components/cat-skeleton2.js.map +1 -1
- package/dist/components/cat-spinner2.js +1 -3
- package/dist/components/cat-spinner2.js.map +1 -1
- package/dist/components/cat-tab.js +3 -12
- package/dist/components/cat-tab.js.map +1 -1
- package/dist/components/cat-tabs.js +1 -6
- package/dist/components/cat-tabs.js.map +1 -1
- package/dist/components/cat-textarea.js +28 -33
- package/dist/components/cat-textarea.js.map +1 -1
- package/dist/components/cat-toggle.js +9 -23
- package/dist/components/cat-toggle.js.map +1 -1
- package/dist/components/cat-tooltip.js +14 -34
- package/dist/components/cat-tooltip.js.map +1 -1
- package/dist/components/first-tabbable.js +51 -113
- package/dist/components/first-tabbable.js.map +1 -1
- package/dist/components/floating-ui.dom.esm.js +577 -441
- package/dist/components/floating-ui.dom.esm.js.map +1 -1
- package/dist/components/index.d.ts +9 -27
- package/dist/components/index.js +2 -26
- package/dist/components/index.js.map +1 -1
- package/dist/esm/cat-alert_24.entry.js +933 -1133
- package/dist/esm/cat-alert_24.entry.js.map +1 -1
- package/dist/esm/catalyst.js +7 -3
- package/dist/esm/catalyst.js.map +1 -1
- package/dist/esm/{index-524906f7.js → index-fc2f91a4.js} +527 -246
- package/dist/esm/index-fc2f91a4.js.map +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +4 -3
- package/dist/esm/loader.js.map +1 -1
- package/dist/esm/polyfills/css-shim.js +1 -1
- package/dist/types/components/cat-checkbox/cat-checkbox.d.ts +1 -1
- package/dist/types/components/cat-form-group/cat-form-group.d.ts +4 -0
- package/dist/types/components/cat-form-hint/cat-form-hint.d.ts +5 -0
- package/dist/types/components/cat-input/cat-input.d.ts +6 -1
- package/dist/types/components/cat-input/input-type.d.ts +1 -1
- package/dist/types/components/cat-radio/cat-radio.d.ts +1 -1
- package/dist/types/components/cat-select/cat-select.d.ts +3 -1
- package/dist/types/components/cat-textarea/cat-textarea.d.ts +6 -1
- package/dist/types/components/cat-toggle/cat-toggle.d.ts +1 -1
- package/dist/types/components/cat-tooltip/cat-tooltip.d.ts +3 -0
- package/dist/types/components.d.ts +353 -7
- package/dist/types/stencil-public-runtime.d.ts +91 -19
- package/dist/types/utils/breakpoints.d.ts +1 -1
- package/dist/types/utils/coerce.d.ts +3 -0
- package/dist/types/utils/first-tabbable.d.ts +2 -2
- package/loader/index.d.ts +9 -0
- package/loader/package.json +1 -0
- package/package.json +19 -19
- package/dist/catalyst/assets/fonts/AzeretMono-Regular.woff2 +0 -0
- package/dist/catalyst/assets/fonts/DMSans-Bold.woff2 +0 -0
- package/dist/catalyst/assets/fonts/DMSans-BoldItalic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/DMSans-Italic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/DMSans-Medium.woff2 +0 -0
- package/dist/catalyst/assets/fonts/DMSans-MediumItalic.woff2 +0 -0
- package/dist/catalyst/assets/fonts/DMSans-Regular.woff2 +0 -0
- package/dist/catalyst/p-919eea27.js +0 -3
- package/dist/catalyst/p-919eea27.js.map +0 -1
- package/dist/catalyst/p-cd8f8639.entry.js +0 -10
- package/dist/catalyst/p-cd8f8639.entry.js.map +0 -1
- package/dist/catalyst/scss/fonts/_fonts.mixins.azeret.scss +0 -14
- package/dist/catalyst/scss/fonts/_fonts.mixins.dm.scss +0 -53
- package/dist/cjs/index-c4542095.js.map +0 -1
- package/dist/collection/assets/fonts/AzeretMono-Regular.woff2 +0 -0
- package/dist/collection/assets/fonts/DMSans-Bold.woff2 +0 -0
- package/dist/collection/assets/fonts/DMSans-BoldItalic.woff2 +0 -0
- package/dist/collection/assets/fonts/DMSans-Italic.woff2 +0 -0
- package/dist/collection/assets/fonts/DMSans-Medium.woff2 +0 -0
- package/dist/collection/assets/fonts/DMSans-MediumItalic.woff2 +0 -0
- package/dist/collection/assets/fonts/DMSans-Regular.woff2 +0 -0
- package/dist/collection/components/cat-form-hint/cat-form-hint-utils.js +0 -13
- package/dist/collection/components/cat-form-hint/cat-form-hint-utils.js.map +0 -1
- package/dist/collection/scss/fonts/_fonts.mixins.azeret.scss +0 -14
- package/dist/collection/scss/fonts/_fonts.mixins.dm.scss +0 -53
- package/dist/components/cat-form-hint-utils.js +0 -17
- package/dist/components/cat-form-hint-utils.js.map +0 -1
- package/dist/esm/index-524906f7.js.map +0 -1
- package/dist/types/components/cat-form-hint/cat-form-hint-utils.d.ts +0 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"file":"cat-tooltip.js","mappings":";;;;AAAA,MAAM,aAAa,GAAG,cAAc,IAAI,MAAM,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC;;ACA9E,MAAM,aAAa,GAAG,6iCAA6iC;;ACMnkC,IAAI,YAAY,GAAG,CAAC,CAAC;MAORA,YAAU;EALvB;;;;IAOmB,OAAE,GAAG,eAAe,YAAY,EAAE,EAAE,CAAC;IAO9C,WAAM,GAAG,KAAK,CAAC;;;;IAKf,YAAO,GAAG,EAAE,CAAC;;;;;IAMb,aAAQ,GAAG,KAAK,CAAC;;;;IAKjB,cAAS,GAAc,KAAK,CAAC;;;;IAK7B,UAAK,GAAG,KAAK,CAAC;;;;IAKd,SAAI,GAAoB,GAAG,CAAC;;;;IAK5B,cAAS,GAAG,GAAG,CAAC;;;;IAKhB,cAAS,GAAG,CAAC,CAAC;;;;IAKd,sBAAiB,GAAG,IAAI,CAAC;GA2HlC;EAxHC,aAAa,CAAC,EAAE,GAAG,EAAiB;IAClC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;GACzC;EAED,gBAAgB;;IACd,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC;IACzE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;MACpB,MAAA,IAAI,CAAC,OAAO,0CAAE,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;KAC7C;IAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;MAChC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;KAC7D;IAED,IAAIC,aAAa,EAAE;MACjB,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MAChF,MAAA,IAAI,CAAC,OAAO,0CAAE,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MACjF,MAAA,IAAI,CAAC,OAAO,0CAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC9E;SAAM;MACL,MAAA,IAAI,CAAC,OAAO,0CAAE,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MACxE,MAAA,IAAI,CAAC,OAAO,0CAAE,gBAAgB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MACzE,MAAA,IAAI,CAAC,OAAO,0CAAE,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MAC3E,MAAA,IAAI,CAAC,OAAO,0CAAE,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC5E;GACF;EAED,mBAAmB;IACjB,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC;GAC9C;EAED,oBAAoB;;IAClB,IAAIA,aAAa,EAAE;MACjB,MAAM,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MACnF,MAAA,IAAI,CAAC,OAAO,0CAAE,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MACpF,MAAA,IAAI,CAAC,OAAO,0CAAE,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACjF;SAAM;MACL,MAAA,IAAI,CAAC,OAAO,0CAAE,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MAC9E,MAAA,IAAI,CAAC,OAAO,0CAAE,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MAC9E,MAAA,IAAI,CAAC,OAAO,0CAAE,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;MAC3E,MAAA,IAAI,CAAC,OAAO,0CAAE,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAC7E;GACF;EAED,MAAM;IACJ,QACE,EAAC,IAAI,QACH,WAAK,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC,sBAAoB,IAAI,CAAC,EAAE,EAAE,KAAK,EAAC,iBAAiB,IAC5F,eAAQ,CACJ,EACN,WACE,GAAG,EAAE,EAAE,KAAK,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,EAC9B,EAAE,EAAE,IAAI,CAAC,EAAE,iBACE,IAAI,CAAC,MAAM,EACxB,KAAK,EAAE;QACL,OAAO,EAAE,IAAI;QACb,gBAAgB,EAAE,IAAI,CAAC,MAAM;QAC7B,eAAe,EAAE,IAAI,CAAC,KAAK;QAC3B,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;OAC7C,IAEA,IAAI,CAAC,OAAO,CACT,CACD,EACP;GACH;EAED,IAAY,UAAU;IACpB,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;GACpC;EAEO,MAAM;IACZ,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE;MAChC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE;QAC1C,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,CAAC,MAAM,CAACD,YAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;OAChD,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;UAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YAChC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI;YAC3B,GAAG,EAAE,GAAG,CAAC,IAAI;WACd,CAAC,CAAC;SACJ;OACF,CAAC,CAAC;KACJ;GACF;EAEO,YAAY;IAClB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;MACnC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;GACpB;EAEO,YAAY;IAClB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACtC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;;MACnC,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;KAChD,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;GACpB;EAEO,kBAAkB,CAAC,KAAY;IACrC,KAAK,CAAC,eAAe,EAAE,CAAC;IACxB,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;MACpC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;GAC5B;EAEO,gBAAgB;IACtB,IAAI,IAAI,CAAC,YAAY,EAAE;MACrB,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACxC;GACF;EAEO,wBAAwB;;IAC9B,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;GAChD;EAEO,WAAW;;IACjB,CAAC,IAAI,CAAC,MAAM,KAAI,MAAA,IAAI,CAAC,OAAO,0CAAE,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA,CAAC;GAC7D;;;;;;;;;;;;AA3KuBA,mBAAM,GAAG,CAAE,CAAA;;;;;;;;;;;;;;;;;;;;","names":["CatTooltip","isTouchScreen"],"sources":["./src/utils/is-touch-screen.ts","./src/components/cat-tooltip/cat-tooltip.scss?tag=cat-tooltip&encapsulation=shadow","./src/components/cat-tooltip/cat-tooltip.tsx"],"sourcesContent":["const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n\nexport default isTouchDevice;\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n$-max-width: 20rem;\n$-box-shadow: rgb(0 0 0 / 8%) 0 1px 8px 0;\n\n:host {\n display: contents;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.tooltip {\n position: absolute;\n @include cat-body('s', 500);\n background-color: cat-token('color.ui.background.tooltip');\n border-radius: cat-border-radius('m');\n color: cat-token('color.ui.font.tooltip');\n transition: opacity cat-token('time.transition.m') linear, visibility cat-token('time.transition.m') linear;\n visibility: hidden;\n opacity: 0;\n box-shadow: $-box-shadow;\n z-index: $cat-tooltip-z-index;\n max-width: $-max-width;\n\n &-hidden {\n @include cat-visually-hidden;\n }\n\n &-show {\n opacity: 1;\n visibility: visible;\n }\n}\n\n// ----- round\n\n.tooltip-round {\n border-radius: 10rem;\n}\n\n// ----- size\n\n.tooltip-s {\n padding: 0.375rem 0.5rem;\n\n &.tooltip-round {\n padding: 0.375rem 0.75rem;\n }\n}\n\n.tooltip-m {\n padding: 0.75rem;\n\n &.tooltip-round {\n padding: 0.75rem 1rem;\n }\n}\n\n.tooltip-l {\n padding: 1rem;\n\n &.tooltip-round {\n padding: 1rem 1.5rem;\n }\n}\n\n// ----- trigger\n\n.tooltip-trigger {\n display: inline-block;\n\n &:focus {\n outline: none;\n }\n}\n","import { Component, h, Host, Listen, Prop } from '@stencil/core';\nimport { autoUpdate, computePosition, flip, offset, Placement } from '@floating-ui/dom';\nimport isTouchScreen from '../../utils/is-touch-screen';\nimport firstTabbable from '../../utils/first-tabbable';\nimport { FocusableElement } from 'tabbable';\n\nlet nextUniqueId = 0;\n\n@Component({\n tag: 'cat-tooltip',\n styleUrl: 'cat-tooltip.scss',\n shadow: true\n})\nexport class CatTooltip {\n private static readonly OFFSET = 4;\n private readonly id = `cat-tooltip-${nextUniqueId++}`;\n private tooltip?: HTMLElement;\n private triggerElement?: HTMLElement;\n private trigger?: FocusableElement;\n private showTimeout?: number;\n private hideTimeout?: number;\n private touchTimeout?: number;\n private hidden = false;\n\n /**\n * The content of the tooltip.\n */\n @Prop() content = '';\n\n /**\n * Specifies that the tooltip should be disabled. A disabled tooltip is unusable,\n * and invisible. Corresponds with the native HTML disabled attribute.\n */\n @Prop() disabled = false;\n\n /**\n * The placement of the tooltip.\n */\n @Prop() placement: Placement = 'top';\n\n /**\n * Use round tooltip edges.\n */\n @Prop() round = false;\n\n /**\n * The size of the tooltip.\n */\n @Prop() size: 's' | 'm' | 'l' = 'm';\n\n /**\n * The delay time for showing tooltip in ms.\n */\n @Prop() showDelay = 250;\n\n /**\n * The delay time for hiding tooltip in ms.\n */\n @Prop() hideDelay = 0;\n\n /**\n * The duration of tap to show the tooltip.\n */\n @Prop() longTouchDuration = 1000;\n\n @Listen('keydown')\n handleKeyDown({ key }: KeyboardEvent) {\n key === 'Escape' && this.hideListener();\n }\n\n componentDidLoad(): void {\n this.trigger = firstTabbable(this.triggerElement) || this.triggerElement;\n if (!this.isTabbable) {\n this.trigger?.setAttribute('tabindex', '0');\n }\n\n if (this.trigger && this.tooltip) {\n autoUpdate(this.trigger, this.tooltip, () => this.update());\n }\n\n if (isTouchScreen) {\n window.addEventListener('touchstart', this.windowTouchStartListener.bind(this));\n this.trigger?.addEventListener('touchstart', this.touchStartListener.bind(this));\n this.trigger?.addEventListener('touchend', this.touchEndListener.bind(this));\n } else {\n this.trigger?.addEventListener('focusin', this.showListener.bind(this));\n this.trigger?.addEventListener('focusout', this.hideListener.bind(this));\n this.trigger?.addEventListener('mouseenter', this.showListener.bind(this));\n this.trigger?.addEventListener('mouseleave', this.hideListener.bind(this));\n }\n }\n\n componentWillRender(): void {\n this.hidden = !this.content || this.disabled;\n }\n\n disconnectedCallback(): void {\n if (isTouchScreen) {\n window.removeEventListener('touchstart', this.windowTouchStartListener.bind(this));\n this.trigger?.removeEventListener('touchstart', this.touchStartListener.bind(this));\n this.trigger?.removeEventListener('touchend', this.touchEndListener.bind(this));\n } else {\n this.trigger?.removeEventListener('mouseenter', this.showListener.bind(this));\n this.trigger?.removeEventListener('mouseleave', this.hideListener.bind(this));\n this.trigger?.removeEventListener('focusin', this.showListener.bind(this));\n this.trigger?.removeEventListener('focusout', this.hideListener.bind(this));\n }\n }\n\n render() {\n return (\n <Host>\n <div ref={el => (this.triggerElement = el)} aria-describedby={this.id} class=\"tooltip-trigger\">\n <slot />\n </div>\n <div\n ref={el => (this.tooltip = el)}\n id={this.id}\n aria-hidden={this.hidden}\n class={{\n tooltip: true,\n 'tooltip-hidden': this.hidden,\n 'tooltip-round': this.round,\n [`tooltip-${this.size}`]: Boolean(this.size)\n }}\n >\n {this.content}\n </div>\n </Host>\n );\n }\n\n private get isTabbable() {\n return firstTabbable(this.trigger);\n }\n\n private update() {\n if (this.trigger && this.tooltip) {\n computePosition(this.trigger, this.tooltip, {\n placement: this.placement,\n middleware: [offset(CatTooltip.OFFSET), flip()]\n }).then(({ x, y }) => {\n if (this.tooltip) {\n Object.assign(this.tooltip.style, {\n left: `${Math.max(0, x)}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n\n private showListener() {\n window.clearTimeout(this.hideTimeout);\n this.showTimeout = window.setTimeout(() => {\n this.showTooltip();\n }, this.showDelay);\n }\n\n private hideListener() {\n window.clearTimeout(this.showTimeout);\n this.hideTimeout = window.setTimeout(() => {\n this.tooltip?.classList.remove('tooltip-show');\n }, this.hideDelay);\n }\n\n private touchStartListener(event: Event) {\n event.stopPropagation();\n this.touchTimeout = window.setTimeout(() => {\n this.showTooltip();\n }, this.longTouchDuration);\n }\n\n private touchEndListener() {\n if (this.touchTimeout) {\n window.clearTimeout(this.touchTimeout);\n }\n }\n\n private windowTouchStartListener() {\n this.tooltip?.classList.remove('tooltip-show');\n }\n\n private showTooltip() {\n !this.hidden && this.tooltip?.classList.add('tooltip-show');\n }\n}\n"],"version":3}
|
|
1
|
+
{"file":"cat-tooltip.js","mappings":"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","names":["CatTooltip","isTouchScreen"],"sources":["./src/utils/is-touch-screen.ts","./src/components/cat-tooltip/cat-tooltip.scss?tag=cat-tooltip&encapsulation=shadow","./src/components/cat-tooltip/cat-tooltip.tsx"],"sourcesContent":["const isTouchDevice = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n\nexport default isTouchDevice;\n","@use 'variables' as *;\n@use 'mixins' as *;\n\n$-max-width: 20rem;\n$-box-shadow: rgb(0 0 0 / 8%) 0 1px 8px 0;\n$-shift-padding: 0.25rem; // padding given to the shift() middleware\n\n:host {\n display: contents;\n}\n\n:host([hidden]) {\n display: none;\n}\n\n.tooltip {\n --cat-font-color-head: cat-token('color.ui.font.tooltip', $wrap: false);\n --cat-font-color-body: cat-token('color.ui.font.tooltip', $wrap: false);\n position: absolute;\n width: max-content;\n top: 0;\n left: 0;\n box-sizing: border-box;\n @include cat-body('s', 500);\n background-color: cat-token('color.ui.background.tooltip');\n border-radius: cat-border-radius('m');\n color: cat-token('color.ui.font.tooltip');\n transition: opacity cat-token('time.transition.m') linear, visibility cat-token('time.transition.m') linear;\n visibility: hidden;\n opacity: 0;\n box-shadow: $-box-shadow;\n z-index: $cat-tooltip-z-index;\n max-width: min(calc(100vw - 2 * $-shift-padding), $-max-width);\n\n &-hidden {\n @include cat-visually-hidden;\n }\n\n &-show {\n opacity: 1;\n visibility: visible;\n }\n}\n\n// ----- round\n\n.tooltip-round {\n border-radius: 10rem;\n}\n\n// ----- size\n\n.tooltip-s {\n padding: 0.375rem 0.5rem;\n\n &.tooltip-round {\n padding: 0.375rem 0.75rem;\n }\n}\n\n.tooltip-m {\n padding: 0.75rem;\n\n &.tooltip-round {\n padding: 0.75rem 1rem;\n }\n}\n\n.tooltip-l {\n padding: 1rem;\n\n &.tooltip-round {\n padding: 1rem 1.5rem;\n }\n}\n\n// ----- trigger\n\n.tooltip-trigger {\n display: inline-block;\n\n &:focus {\n outline: none;\n }\n}\n","import { autoUpdate, computePosition, flip, offset, Placement, shift } from '@floating-ui/dom';\nimport { Component, Element, h, Host, Listen, Prop, State } from '@stencil/core';\nimport { FocusableElement } from 'tabbable';\nimport firstTabbable from '../../utils/first-tabbable';\nimport isTouchScreen from '../../utils/is-touch-screen';\n\nlet nextUniqueId = 0;\n\n@Component({\n tag: 'cat-tooltip',\n styleUrl: 'cat-tooltip.scss',\n shadow: true\n})\nexport class CatTooltip {\n private static readonly OFFSET = 4;\n private static readonly SHIFT_PADDING = 4;\n private readonly id = `cat-tooltip-${nextUniqueId++}`;\n private tooltip?: HTMLElement;\n private triggerElement?: HTMLElement;\n private trigger?: FocusableElement;\n private showTimeout?: number;\n private hideTimeout?: number;\n private touchTimeout?: number;\n private hidden = false;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedContent = false;\n\n /**\n * The content of the tooltip.\n */\n @Prop() content = '';\n\n /**\n * Specifies that the tooltip should be disabled. A disabled tooltip is unusable,\n * and invisible. Corresponds with the native HTML disabled attribute.\n */\n @Prop() disabled = false;\n\n /**\n * The placement of the tooltip.\n */\n @Prop() placement: Placement = 'top';\n\n /**\n * Use round tooltip edges.\n */\n @Prop() round = false;\n\n /**\n * The size of the tooltip.\n */\n @Prop() size: 's' | 'm' | 'l' = 'm';\n\n /**\n * The delay time for showing tooltip in ms.\n */\n @Prop() showDelay = 250;\n\n /**\n * The delay time for hiding tooltip in ms.\n */\n @Prop() hideDelay = 0;\n\n /**\n * The duration of tap to show the tooltip.\n */\n @Prop() longTouchDuration = 1000;\n\n @Listen('keydown')\n handleKeyDown({ key }: KeyboardEvent) {\n key === 'Escape' && this.hideListener();\n }\n\n componentDidLoad(): void {\n this.trigger = firstTabbable(this.triggerElement) || this.triggerElement;\n if (!this.isTabbable) {\n this.trigger?.setAttribute('tabindex', '0');\n }\n\n if (this.trigger && this.tooltip) {\n autoUpdate(this.trigger, this.tooltip, () => this.update());\n }\n\n if (isTouchScreen) {\n window.addEventListener('touchstart', this.windowTouchStartListener.bind(this));\n this.trigger?.addEventListener('touchstart', this.touchStartListener.bind(this));\n this.trigger?.addEventListener('touchend', this.touchEndListener.bind(this));\n } else {\n this.trigger?.addEventListener('focusin', this.showListener.bind(this));\n this.trigger?.addEventListener('focusout', this.hideListener.bind(this));\n this.trigger?.addEventListener('mouseenter', this.showListener.bind(this));\n this.trigger?.addEventListener('mouseleave', this.hideListener.bind(this));\n }\n }\n\n componentWillRender(): void {\n this.hasSlottedContent = !!this.hostElement.querySelector('[slot=\"content\"]');\n this.hidden = this.disabled || (!this.content && !this.hasSlottedContent);\n }\n\n disconnectedCallback(): void {\n if (isTouchScreen) {\n window.removeEventListener('touchstart', this.windowTouchStartListener.bind(this));\n this.trigger?.removeEventListener('touchstart', this.touchStartListener.bind(this));\n this.trigger?.removeEventListener('touchend', this.touchEndListener.bind(this));\n } else {\n this.trigger?.removeEventListener('mouseenter', this.showListener.bind(this));\n this.trigger?.removeEventListener('mouseleave', this.hideListener.bind(this));\n this.trigger?.removeEventListener('focusin', this.showListener.bind(this));\n this.trigger?.removeEventListener('focusout', this.hideListener.bind(this));\n }\n }\n\n render() {\n return (\n <Host>\n <div ref={el => (this.triggerElement = el)} aria-describedby={this.id} class=\"tooltip-trigger\">\n <slot />\n </div>\n <div\n ref={el => (this.tooltip = el)}\n id={this.id}\n aria-hidden={this.hidden}\n class={{\n tooltip: true,\n 'tooltip-hidden': this.hidden,\n 'tooltip-round': this.round,\n [`tooltip-${this.size}`]: Boolean(this.size)\n }}\n >\n {this.hasSlottedContent ? <slot name=\"content\" /> : this.content}\n </div>\n </Host>\n );\n }\n\n private get isTabbable() {\n return firstTabbable(this.trigger);\n }\n\n private async update() {\n if (this.trigger && this.tooltip) {\n await computePosition(this.trigger, this.tooltip, {\n placement: this.placement,\n middleware: [offset(CatTooltip.OFFSET), flip(), shift({ padding: CatTooltip.SHIFT_PADDING })]\n }).then(({ x, y }) => {\n if (this.tooltip) {\n Object.assign(this.tooltip.style, {\n left: `${Math.max(0, x)}px`,\n top: `${y}px`\n });\n }\n });\n }\n }\n\n private showListener() {\n window.clearTimeout(this.hideTimeout);\n this.showTimeout = window.setTimeout(() => {\n this.showTooltip();\n }, this.showDelay);\n }\n\n private hideListener() {\n window.clearTimeout(this.showTimeout);\n this.hideTimeout = window.setTimeout(() => {\n this.tooltip?.classList.remove('tooltip-show');\n }, this.hideDelay);\n }\n\n private touchStartListener(event: Event) {\n event.stopPropagation();\n this.touchTimeout = window.setTimeout(() => {\n this.showTooltip();\n }, this.longTouchDuration);\n }\n\n private touchEndListener() {\n if (this.touchTimeout) {\n window.clearTimeout(this.touchTimeout);\n }\n }\n\n private windowTouchStartListener() {\n this.tooltip?.classList.remove('tooltip-show');\n }\n\n private showTooltip() {\n !this.hidden && this.tooltip?.classList.add('tooltip-show');\n }\n}\n"],"version":3}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* tabbable 6.0.
|
|
2
|
+
* tabbable 6.0.1
|
|
3
3
|
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE
|
|
4
4
|
*/
|
|
5
5
|
var candidateSelectors = ['input', 'select', 'textarea', 'a[href]', 'button', '[tabindex]:not(slot)', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])', 'details>summary:first-of-type', 'details'];
|
|
@@ -11,23 +11,22 @@ var getRootNode = !NoElement && Element.prototype.getRootNode ? function (elemen
|
|
|
11
11
|
} : function (element) {
|
|
12
12
|
return element.ownerDocument;
|
|
13
13
|
};
|
|
14
|
+
|
|
14
15
|
/**
|
|
15
16
|
* @param {Element} el container to check in
|
|
16
17
|
* @param {boolean} includeContainer add container to check
|
|
17
18
|
* @param {(node: Element) => boolean} filter filter candidates
|
|
18
19
|
* @returns {Element[]}
|
|
19
20
|
*/
|
|
20
|
-
|
|
21
21
|
var getCandidates = function getCandidates(el, includeContainer, filter) {
|
|
22
22
|
var candidates = Array.prototype.slice.apply(el.querySelectorAll(candidateSelector));
|
|
23
|
-
|
|
24
23
|
if (includeContainer && matches.call(el, candidateSelector)) {
|
|
25
24
|
candidates.unshift(el);
|
|
26
25
|
}
|
|
27
|
-
|
|
28
26
|
candidates = candidates.filter(filter);
|
|
29
27
|
return candidates;
|
|
30
28
|
};
|
|
29
|
+
|
|
31
30
|
/**
|
|
32
31
|
* @callback GetShadowRoot
|
|
33
32
|
* @param {Element} element to check for shadow root
|
|
@@ -41,9 +40,9 @@ var getCandidates = function getCandidates(el, includeContainer, filter) {
|
|
|
41
40
|
*/
|
|
42
41
|
|
|
43
42
|
/**
|
|
44
|
-
* @typedef {Object}
|
|
45
|
-
* @property {Element}
|
|
46
|
-
* @property {Element[]} candidates
|
|
43
|
+
* @typedef {Object} CandidateScope
|
|
44
|
+
* @property {Element} scopeParent contains inner candidates
|
|
45
|
+
* @property {Element[]} candidates list of candidates found in the scope parent
|
|
47
46
|
*/
|
|
48
47
|
|
|
49
48
|
/**
|
|
@@ -52,7 +51,7 @@ var getCandidates = function getCandidates(el, includeContainer, filter) {
|
|
|
52
51
|
* if a function, implies shadow support is enabled and either returns the shadow root of an element
|
|
53
52
|
* or a boolean stating if it has an undisclosed shadow root
|
|
54
53
|
* @property {(node: Element) => boolean} filter filter candidates
|
|
55
|
-
* @property {boolean} flatten if true then result will flatten any
|
|
54
|
+
* @property {boolean} flatten if true then result will flatten any CandidateScope into the returned list
|
|
56
55
|
* @property {ShadowRootFilter} shadowRootFilter filter shadow roots;
|
|
57
56
|
*/
|
|
58
57
|
|
|
@@ -60,44 +59,38 @@ var getCandidates = function getCandidates(el, includeContainer, filter) {
|
|
|
60
59
|
* @param {Element[]} elements list of element containers to match candidates from
|
|
61
60
|
* @param {boolean} includeContainer add container list to check
|
|
62
61
|
* @param {IterativeOptions} options
|
|
63
|
-
* @returns {Array.<Element|
|
|
62
|
+
* @returns {Array.<Element|CandidateScope>}
|
|
64
63
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
64
|
var getCandidatesIteratively = function getCandidatesIteratively(elements, includeContainer, options) {
|
|
68
65
|
var candidates = [];
|
|
69
66
|
var elementsToCheck = Array.from(elements);
|
|
70
|
-
|
|
71
67
|
while (elementsToCheck.length) {
|
|
72
68
|
var element = elementsToCheck.shift();
|
|
73
|
-
|
|
74
69
|
if (element.tagName === 'SLOT') {
|
|
75
70
|
// add shadow dom slot scope (slot itself cannot be focusable)
|
|
76
71
|
var assigned = element.assignedElements();
|
|
77
72
|
var content = assigned.length ? assigned : element.children;
|
|
78
73
|
var nestedCandidates = getCandidatesIteratively(content, true, options);
|
|
79
|
-
|
|
80
74
|
if (options.flatten) {
|
|
81
75
|
candidates.push.apply(candidates, nestedCandidates);
|
|
82
76
|
} else {
|
|
83
77
|
candidates.push({
|
|
84
|
-
|
|
78
|
+
scopeParent: element,
|
|
85
79
|
candidates: nestedCandidates
|
|
86
80
|
});
|
|
87
81
|
}
|
|
88
82
|
} else {
|
|
89
83
|
// check candidate element
|
|
90
84
|
var validCandidate = matches.call(element, candidateSelector);
|
|
91
|
-
|
|
92
85
|
if (validCandidate && options.filter(element) && (includeContainer || !elements.includes(element))) {
|
|
93
86
|
candidates.push(element);
|
|
94
|
-
}
|
|
95
|
-
|
|
87
|
+
}
|
|
96
88
|
|
|
97
|
-
|
|
89
|
+
// iterate over shadow content if possible
|
|
90
|
+
var shadowRoot = element.shadowRoot ||
|
|
91
|
+
// check for an undisclosed shadow
|
|
98
92
|
typeof options.getShadowRoot === 'function' && options.getShadowRoot(element);
|
|
99
93
|
var validShadowRoot = !options.shadowRootFilter || options.shadowRootFilter(element);
|
|
100
|
-
|
|
101
94
|
if (shadowRoot && validShadowRoot) {
|
|
102
95
|
// add shadow dom scope IIF a shadow root node was given; otherwise, an undisclosed
|
|
103
96
|
// shadow exists, so look at light dom children as fallback BUT create a scope for any
|
|
@@ -106,12 +99,11 @@ var getCandidatesIteratively = function getCandidatesIteratively(elements, inclu
|
|
|
106
99
|
// slotted somewhere _inside_ the undisclosed shadow) -- the scope is created below,
|
|
107
100
|
// _after_ we return from this recursive call
|
|
108
101
|
var _nestedCandidates = getCandidatesIteratively(shadowRoot === true ? element.children : shadowRoot.children, true, options);
|
|
109
|
-
|
|
110
102
|
if (options.flatten) {
|
|
111
103
|
candidates.push.apply(candidates, _nestedCandidates);
|
|
112
104
|
} else {
|
|
113
105
|
candidates.push({
|
|
114
|
-
|
|
106
|
+
scopeParent: element,
|
|
115
107
|
candidates: _nestedCandidates
|
|
116
108
|
});
|
|
117
109
|
}
|
|
@@ -122,10 +114,8 @@ var getCandidatesIteratively = function getCandidatesIteratively(elements, inclu
|
|
|
122
114
|
}
|
|
123
115
|
}
|
|
124
116
|
}
|
|
125
|
-
|
|
126
117
|
return candidates;
|
|
127
118
|
};
|
|
128
|
-
|
|
129
119
|
var getTabindex = function getTabindex(node, isScope) {
|
|
130
120
|
if (node.tabIndex < 0) {
|
|
131
121
|
// in Chrome, <details/>, <audio controls/> and <video controls/> elements get a default
|
|
@@ -143,29 +133,23 @@ var getTabindex = function getTabindex(node, isScope) {
|
|
|
143
133
|
return 0;
|
|
144
134
|
}
|
|
145
135
|
}
|
|
146
|
-
|
|
147
136
|
return node.tabIndex;
|
|
148
137
|
};
|
|
149
|
-
|
|
150
138
|
var sortOrderedTabbables = function sortOrderedTabbables(a, b) {
|
|
151
139
|
return a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex;
|
|
152
140
|
};
|
|
153
|
-
|
|
154
141
|
var isInput = function isInput(node) {
|
|
155
142
|
return node.tagName === 'INPUT';
|
|
156
143
|
};
|
|
157
|
-
|
|
158
144
|
var isHiddenInput = function isHiddenInput(node) {
|
|
159
145
|
return isInput(node) && node.type === 'hidden';
|
|
160
146
|
};
|
|
161
|
-
|
|
162
147
|
var isDetailsWithSummary = function isDetailsWithSummary(node) {
|
|
163
148
|
var r = node.tagName === 'DETAILS' && Array.prototype.slice.apply(node.children).some(function (child) {
|
|
164
149
|
return child.tagName === 'SUMMARY';
|
|
165
150
|
});
|
|
166
151
|
return r;
|
|
167
152
|
};
|
|
168
|
-
|
|
169
153
|
var getCheckedRadio = function getCheckedRadio(nodes, form) {
|
|
170
154
|
for (var i = 0; i < nodes.length; i++) {
|
|
171
155
|
if (nodes[i].checked && nodes[i].form === form) {
|
|
@@ -173,20 +157,15 @@ var getCheckedRadio = function getCheckedRadio(nodes, form) {
|
|
|
173
157
|
}
|
|
174
158
|
}
|
|
175
159
|
};
|
|
176
|
-
|
|
177
160
|
var isTabbableRadio = function isTabbableRadio(node) {
|
|
178
161
|
if (!node.name) {
|
|
179
162
|
return true;
|
|
180
163
|
}
|
|
181
|
-
|
|
182
164
|
var radioScope = node.form || getRootNode(node);
|
|
183
|
-
|
|
184
165
|
var queryRadios = function queryRadios(name) {
|
|
185
166
|
return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]');
|
|
186
167
|
};
|
|
187
|
-
|
|
188
168
|
var radioSet;
|
|
189
|
-
|
|
190
169
|
if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') {
|
|
191
170
|
radioSet = queryRadios(window.CSS.escape(node.name));
|
|
192
171
|
} else {
|
|
@@ -198,23 +177,19 @@ var isTabbableRadio = function isTabbableRadio(node) {
|
|
|
198
177
|
return false;
|
|
199
178
|
}
|
|
200
179
|
}
|
|
201
|
-
|
|
202
180
|
var checked = getCheckedRadio(radioSet, node.form);
|
|
203
181
|
return !checked || checked === node;
|
|
204
182
|
};
|
|
205
|
-
|
|
206
183
|
var isRadio = function isRadio(node) {
|
|
207
184
|
return isInput(node) && node.type === 'radio';
|
|
208
185
|
};
|
|
209
|
-
|
|
210
186
|
var isNonTabbableRadio = function isNonTabbableRadio(node) {
|
|
211
187
|
return isRadio(node) && !isTabbableRadio(node);
|
|
212
|
-
};
|
|
213
|
-
|
|
188
|
+
};
|
|
214
189
|
|
|
190
|
+
// determines if a node is ultimately attached to the window's document
|
|
215
191
|
var isNodeAttached = function isNodeAttached(node) {
|
|
216
192
|
var _nodeRootHost;
|
|
217
|
-
|
|
218
193
|
// The root node is the shadow root if the node is in a shadow DOM; some document otherwise
|
|
219
194
|
// (but NOT _the_ document; see second 'If' comment below for more).
|
|
220
195
|
// If rootNode is shadow root, it'll have a host, which is the element to which the shadow
|
|
@@ -236,32 +211,25 @@ var isNodeAttached = function isNodeAttached(node) {
|
|
|
236
211
|
// node is actually detached.
|
|
237
212
|
var nodeRootHost = getRootNode(node).host;
|
|
238
213
|
var attached = !!((_nodeRootHost = nodeRootHost) !== null && _nodeRootHost !== void 0 && _nodeRootHost.ownerDocument.contains(nodeRootHost) || node.ownerDocument.contains(node));
|
|
239
|
-
|
|
240
214
|
while (!attached && nodeRootHost) {
|
|
241
215
|
var _nodeRootHost2;
|
|
242
|
-
|
|
243
216
|
// since it's not attached and we have a root host, the node MUST be in a nested shadow DOM,
|
|
244
217
|
// which means we need to get the host's host and check if that parent host is contained
|
|
245
218
|
// in (i.e. attached to) the document
|
|
246
219
|
nodeRootHost = getRootNode(nodeRootHost).host;
|
|
247
220
|
attached = !!((_nodeRootHost2 = nodeRootHost) !== null && _nodeRootHost2 !== void 0 && _nodeRootHost2.ownerDocument.contains(nodeRootHost));
|
|
248
221
|
}
|
|
249
|
-
|
|
250
222
|
return attached;
|
|
251
223
|
};
|
|
252
|
-
|
|
253
224
|
var isZeroArea = function isZeroArea(node) {
|
|
254
225
|
var _node$getBoundingClie = node.getBoundingClientRect(),
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
226
|
+
width = _node$getBoundingClie.width,
|
|
227
|
+
height = _node$getBoundingClie.height;
|
|
258
228
|
return width === 0 && height === 0;
|
|
259
229
|
};
|
|
260
|
-
|
|
261
230
|
var isHidden = function isHidden(node, _ref) {
|
|
262
231
|
var displayCheck = _ref.displayCheck,
|
|
263
|
-
|
|
264
|
-
|
|
232
|
+
getShadowRoot = _ref.getShadowRoot;
|
|
265
233
|
// NOTE: visibility will be `undefined` if node is detached from the document
|
|
266
234
|
// (see notes about this further down), which means we will consider it visible
|
|
267
235
|
// (this is legacy behavior from a very long way back)
|
|
@@ -270,24 +238,19 @@ var isHidden = function isHidden(node, _ref) {
|
|
|
270
238
|
if (getComputedStyle(node).visibility === 'hidden') {
|
|
271
239
|
return true;
|
|
272
240
|
}
|
|
273
|
-
|
|
274
241
|
var isDirectSummary = matches.call(node, 'details>summary:first-of-type');
|
|
275
242
|
var nodeUnderDetails = isDirectSummary ? node.parentElement : node;
|
|
276
|
-
|
|
277
243
|
if (matches.call(nodeUnderDetails, 'details:not([open]) *')) {
|
|
278
244
|
return true;
|
|
279
245
|
}
|
|
280
|
-
|
|
281
246
|
if (!displayCheck || displayCheck === 'full' || displayCheck === 'legacy-full') {
|
|
282
247
|
if (typeof getShadowRoot === 'function') {
|
|
283
248
|
// figure out if we should consider the node to be in an undisclosed shadow and use the
|
|
284
249
|
// 'non-zero-area' fallback
|
|
285
250
|
var originalNode = node;
|
|
286
|
-
|
|
287
251
|
while (node) {
|
|
288
252
|
var parentElement = node.parentElement;
|
|
289
253
|
var rootNode = getRootNode(node);
|
|
290
|
-
|
|
291
254
|
if (parentElement && !parentElement.shadowRoot && getShadowRoot(parentElement) === true // check if there's an undisclosed shadow
|
|
292
255
|
) {
|
|
293
256
|
// node has an undisclosed shadow which means we can only treat it as a black box, so we
|
|
@@ -304,25 +267,27 @@ var isHidden = function isHidden(node, _ref) {
|
|
|
304
267
|
node = parentElement;
|
|
305
268
|
}
|
|
306
269
|
}
|
|
307
|
-
|
|
308
270
|
node = originalNode;
|
|
309
|
-
}
|
|
271
|
+
}
|
|
272
|
+
// else, `getShadowRoot` might be true, but all that does is enable shadow DOM support
|
|
310
273
|
// (i.e. it does not also presume that all nodes might have undisclosed shadows); or
|
|
311
274
|
// it might be a falsy value, which means shadow DOM support is disabled
|
|
275
|
+
|
|
312
276
|
// Since we didn't find it sitting in an undisclosed shadow (or shadows are disabled)
|
|
313
277
|
// now we can just test to see if it would normally be visible or not, provided it's
|
|
314
278
|
// attached to the main document.
|
|
315
279
|
// NOTE: We must consider case where node is inside a shadow DOM and given directly to
|
|
316
280
|
// `isTabbable()` or `isFocusable()` -- regardless of `getShadowRoot` option setting.
|
|
317
281
|
|
|
318
|
-
|
|
319
282
|
if (isNodeAttached(node)) {
|
|
320
283
|
// this works wherever the node is: if there's at least one client rect, it's
|
|
321
284
|
// somehow displayed; it also covers the CSS 'display: contents' case where the
|
|
322
285
|
// node itself is hidden in place of its contents; and there's no need to search
|
|
323
286
|
// up the hierarchy either
|
|
324
287
|
return !node.getClientRects().length;
|
|
325
|
-
}
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
// Else, the node isn't attached to the document, which means the `getClientRects()`
|
|
326
291
|
// API will __always__ return zero rects (this can happen, for example, if React
|
|
327
292
|
// is used to render nodes onto a detached tree, as confirmed in this thread:
|
|
328
293
|
// https://github.com/facebook/react/issues/9117#issuecomment-284228870)
|
|
@@ -338,12 +303,10 @@ var isHidden = function isHidden(node, _ref) {
|
|
|
338
303
|
//
|
|
339
304
|
// v6.0.0: As of this major release, the default 'full' option __no longer treats detached
|
|
340
305
|
// nodes as visible with the 'none' fallback.__
|
|
341
|
-
|
|
342
|
-
|
|
343
306
|
if (displayCheck !== 'legacy-full') {
|
|
344
307
|
return true; // hidden
|
|
345
|
-
}
|
|
346
|
-
|
|
308
|
+
}
|
|
309
|
+
// else, fallback to 'none' mode and consider the node visible
|
|
347
310
|
} else if (displayCheck === 'non-zero-area') {
|
|
348
311
|
// NOTE: Even though this tests that the node's client rect is non-zero to determine
|
|
349
312
|
// whether it's displayed, and that a detached node will __always__ have a zero-area
|
|
@@ -351,89 +314,79 @@ var isHidden = function isHidden(node, _ref) {
|
|
|
351
314
|
// this mode, we do want to consider nodes that have a zero area to be hidden at all
|
|
352
315
|
// times, and that includes attached or not.
|
|
353
316
|
return isZeroArea(node);
|
|
354
|
-
}
|
|
355
|
-
// it's visible
|
|
356
|
-
|
|
317
|
+
}
|
|
357
318
|
|
|
319
|
+
// visible, as far as we can tell, or per current `displayCheck=none` mode, we assume
|
|
320
|
+
// it's visible
|
|
358
321
|
return false;
|
|
359
|
-
};
|
|
322
|
+
};
|
|
323
|
+
|
|
324
|
+
// form fields (nested) inside a disabled fieldset are not focusable/tabbable
|
|
360
325
|
// unless they are in the _first_ <legend> element of the top-most disabled
|
|
361
326
|
// fieldset
|
|
362
|
-
|
|
363
|
-
|
|
364
327
|
var isDisabledFromFieldset = function isDisabledFromFieldset(node) {
|
|
365
328
|
if (/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(node.tagName)) {
|
|
366
|
-
var parentNode = node.parentElement;
|
|
367
|
-
|
|
329
|
+
var parentNode = node.parentElement;
|
|
330
|
+
// check if `node` is contained in a disabled <fieldset>
|
|
368
331
|
while (parentNode) {
|
|
369
332
|
if (parentNode.tagName === 'FIELDSET' && parentNode.disabled) {
|
|
370
333
|
// look for the first <legend> among the children of the disabled <fieldset>
|
|
371
334
|
for (var i = 0; i < parentNode.children.length; i++) {
|
|
372
|
-
var child = parentNode.children.item(i);
|
|
373
|
-
|
|
335
|
+
var child = parentNode.children.item(i);
|
|
336
|
+
// when the first <legend> (in document order) is found
|
|
374
337
|
if (child.tagName === 'LEGEND') {
|
|
375
338
|
// if its parent <fieldset> is not nested in another disabled <fieldset>,
|
|
376
339
|
// return whether `node` is a descendant of its first <legend>
|
|
377
340
|
return matches.call(parentNode, 'fieldset[disabled] *') ? true : !child.contains(node);
|
|
378
341
|
}
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
|
|
342
|
+
}
|
|
343
|
+
// the disabled <fieldset> containing `node` has no <legend>
|
|
382
344
|
return true;
|
|
383
345
|
}
|
|
384
|
-
|
|
385
346
|
parentNode = parentNode.parentElement;
|
|
386
347
|
}
|
|
387
|
-
}
|
|
388
|
-
// enabled/disabled state
|
|
389
|
-
|
|
348
|
+
}
|
|
390
349
|
|
|
350
|
+
// else, node's tabbable/focusable state should not be affected by a fieldset's
|
|
351
|
+
// enabled/disabled state
|
|
391
352
|
return false;
|
|
392
353
|
};
|
|
393
|
-
|
|
394
354
|
var isNodeMatchingSelectorFocusable = function isNodeMatchingSelectorFocusable(options, node) {
|
|
395
|
-
if (node.disabled || isHiddenInput(node) || isHidden(node, options) ||
|
|
355
|
+
if (node.disabled || isHiddenInput(node) || isHidden(node, options) ||
|
|
356
|
+
// For a details element with a summary, the summary element gets the focus
|
|
396
357
|
isDetailsWithSummary(node) || isDisabledFromFieldset(node)) {
|
|
397
358
|
return false;
|
|
398
359
|
}
|
|
399
|
-
|
|
400
360
|
return true;
|
|
401
361
|
};
|
|
402
|
-
|
|
403
362
|
var isNodeMatchingSelectorTabbable = function isNodeMatchingSelectorTabbable(options, node) {
|
|
404
363
|
if (isNonTabbableRadio(node) || getTabindex(node) < 0 || !isNodeMatchingSelectorFocusable(options, node)) {
|
|
405
364
|
return false;
|
|
406
365
|
}
|
|
407
|
-
|
|
408
366
|
return true;
|
|
409
367
|
};
|
|
410
|
-
|
|
411
368
|
var isValidShadowRootTabbable = function isValidShadowRootTabbable(shadowHostNode) {
|
|
412
369
|
var tabIndex = parseInt(shadowHostNode.getAttribute('tabindex'), 10);
|
|
413
|
-
|
|
414
370
|
if (isNaN(tabIndex) || tabIndex >= 0) {
|
|
415
371
|
return true;
|
|
416
|
-
}
|
|
372
|
+
}
|
|
373
|
+
// If a custom element has an explicit negative tabindex,
|
|
417
374
|
// browsers will not allow tab targeting said element's children.
|
|
418
|
-
|
|
419
|
-
|
|
420
375
|
return false;
|
|
421
376
|
};
|
|
377
|
+
|
|
422
378
|
/**
|
|
423
|
-
* @param {Array.<Element|
|
|
379
|
+
* @param {Array.<Element|CandidateScope>} candidates
|
|
424
380
|
* @returns Element[]
|
|
425
381
|
*/
|
|
426
|
-
|
|
427
|
-
|
|
428
382
|
var sortByOrder = function sortByOrder(candidates) {
|
|
429
383
|
var regularTabbables = [];
|
|
430
384
|
var orderedTabbables = [];
|
|
431
385
|
candidates.forEach(function (item, i) {
|
|
432
|
-
var isScope = !!item.
|
|
433
|
-
var element = isScope ? item.
|
|
386
|
+
var isScope = !!item.scopeParent;
|
|
387
|
+
var element = isScope ? item.scopeParent : item;
|
|
434
388
|
var candidateTabindex = getTabindex(element, isScope);
|
|
435
389
|
var elements = isScope ? sortByOrder(item.candidates) : element;
|
|
436
|
-
|
|
437
390
|
if (candidateTabindex === 0) {
|
|
438
391
|
isScope ? regularTabbables.push.apply(regularTabbables, elements) : regularTabbables.push(element);
|
|
439
392
|
} else {
|
|
@@ -451,11 +404,9 @@ var sortByOrder = function sortByOrder(candidates) {
|
|
|
451
404
|
return acc;
|
|
452
405
|
}, []).concat(regularTabbables);
|
|
453
406
|
};
|
|
454
|
-
|
|
455
407
|
var tabbable = function tabbable(el, options) {
|
|
456
408
|
options = options || {};
|
|
457
409
|
var candidates;
|
|
458
|
-
|
|
459
410
|
if (options.getShadowRoot) {
|
|
460
411
|
candidates = getCandidatesIteratively([el], options.includeContainer, {
|
|
461
412
|
filter: isNodeMatchingSelectorTabbable.bind(null, options),
|
|
@@ -466,14 +417,11 @@ var tabbable = function tabbable(el, options) {
|
|
|
466
417
|
} else {
|
|
467
418
|
candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorTabbable.bind(null, options));
|
|
468
419
|
}
|
|
469
|
-
|
|
470
420
|
return sortByOrder(candidates);
|
|
471
421
|
};
|
|
472
|
-
|
|
473
422
|
var focusable = function focusable(el, options) {
|
|
474
423
|
options = options || {};
|
|
475
424
|
var candidates;
|
|
476
|
-
|
|
477
425
|
if (options.getShadowRoot) {
|
|
478
426
|
candidates = getCandidatesIteratively([el], options.includeContainer, {
|
|
479
427
|
filter: isNodeMatchingSelectorFocusable.bind(null, options),
|
|
@@ -483,37 +431,27 @@ var focusable = function focusable(el, options) {
|
|
|
483
431
|
} else {
|
|
484
432
|
candidates = getCandidates(el, options.includeContainer, isNodeMatchingSelectorFocusable.bind(null, options));
|
|
485
433
|
}
|
|
486
|
-
|
|
487
434
|
return candidates;
|
|
488
435
|
};
|
|
489
|
-
|
|
490
436
|
var isTabbable = function isTabbable(node, options) {
|
|
491
437
|
options = options || {};
|
|
492
|
-
|
|
493
438
|
if (!node) {
|
|
494
439
|
throw new Error('No node provided');
|
|
495
440
|
}
|
|
496
|
-
|
|
497
441
|
if (matches.call(node, candidateSelector) === false) {
|
|
498
442
|
return false;
|
|
499
443
|
}
|
|
500
|
-
|
|
501
444
|
return isNodeMatchingSelectorTabbable(options, node);
|
|
502
445
|
};
|
|
503
|
-
|
|
504
446
|
var focusableCandidateSelector = /* #__PURE__ */candidateSelectors.concat('iframe').join(',');
|
|
505
|
-
|
|
506
447
|
var isFocusable = function isFocusable(node, options) {
|
|
507
448
|
options = options || {};
|
|
508
|
-
|
|
509
449
|
if (!node) {
|
|
510
450
|
throw new Error('No node provided');
|
|
511
451
|
}
|
|
512
|
-
|
|
513
452
|
if (matches.call(node, focusableCandidateSelector) === false) {
|
|
514
453
|
return false;
|
|
515
454
|
}
|
|
516
|
-
|
|
517
455
|
return isNodeMatchingSelectorFocusable(options, node);
|
|
518
456
|
};
|
|
519
457
|
|
|
@@ -521,6 +459,6 @@ const firstTabbable = (container) => {
|
|
|
521
459
|
return (container ? tabbable(container, { includeContainer: true, getShadowRoot: true }) : []).shift();
|
|
522
460
|
};
|
|
523
461
|
|
|
524
|
-
export {
|
|
462
|
+
export { isFocusable as a, firstTabbable as b, focusable as f, isTabbable as i, tabbable as t };
|
|
525
463
|
|
|
526
464
|
//# sourceMappingURL=first-tabbable.js.map
|