@ni/fast-foundation 0.0.2
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/README.md +58 -0
- package/dist/dts/accordion/accordion.d.ts +65 -0
- package/dist/dts/accordion/accordion.template.d.ts +8 -0
- package/dist/dts/accordion/index.d.ts +2 -0
- package/dist/dts/accordion-item/accordion-item.d.ts +76 -0
- package/dist/dts/accordion-item/accordion-item.template.d.ts +8 -0
- package/dist/dts/accordion-item/index.d.ts +2 -0
- package/dist/dts/anchor/anchor.d.ts +128 -0
- package/dist/dts/anchor/anchor.template.d.ts +8 -0
- package/dist/dts/anchor/index.d.ts +2 -0
- package/dist/dts/anchored-region/anchored-region-config.d.ts +117 -0
- package/dist/dts/anchored-region/anchored-region.d.ts +389 -0
- package/dist/dts/anchored-region/anchored-region.template.d.ts +8 -0
- package/dist/dts/anchored-region/index.d.ts +3 -0
- package/dist/dts/avatar/avatar.d.ts +62 -0
- package/dist/dts/avatar/avatar.template.d.ts +8 -0
- package/dist/dts/avatar/index.d.ts +2 -0
- package/dist/dts/badge/badge.d.ts +36 -0
- package/dist/dts/badge/badge.template.d.ts +8 -0
- package/dist/dts/badge/index.d.ts +2 -0
- package/dist/dts/breadcrumb/breadcrumb.d.ts +27 -0
- package/dist/dts/breadcrumb/breadcrumb.template.d.ts +8 -0
- package/dist/dts/breadcrumb/index.d.ts +2 -0
- package/dist/dts/breadcrumb-item/breadcrumb-item.d.ts +36 -0
- package/dist/dts/breadcrumb-item/breadcrumb-item.template.d.ts +8 -0
- package/dist/dts/breadcrumb-item/index.d.ts +2 -0
- package/dist/dts/button/button.d.ts +167 -0
- package/dist/dts/button/button.form-associated.d.ts +16 -0
- package/dist/dts/button/button.template.d.ts +8 -0
- package/dist/dts/button/index.d.ts +2 -0
- package/dist/dts/calendar/calendar.d.ts +178 -0
- package/dist/dts/calendar/calendar.template.d.ts +58 -0
- package/dist/dts/calendar/date-formatter.d.ts +124 -0
- package/dist/dts/calendar/index.d.ts +3 -0
- package/dist/dts/card/card.d.ts +10 -0
- package/dist/dts/card/card.template.d.ts +8 -0
- package/dist/dts/card/index.d.ts +2 -0
- package/dist/dts/checkbox/checkbox.d.ts +58 -0
- package/dist/dts/checkbox/checkbox.form-associated.d.ts +16 -0
- package/dist/dts/checkbox/checkbox.template.d.ts +8 -0
- package/dist/dts/checkbox/index.d.ts +2 -0
- package/dist/dts/combobox/combobox.d.ts +341 -0
- package/dist/dts/combobox/combobox.form-associated.d.ts +16 -0
- package/dist/dts/combobox/combobox.options.d.ts +15 -0
- package/dist/dts/combobox/combobox.template.d.ts +8 -0
- package/dist/dts/combobox/index.d.ts +3 -0
- package/dist/dts/data-grid/data-grid-cell.d.ts +62 -0
- package/dist/dts/data-grid/data-grid-cell.template.d.ts +9 -0
- package/dist/dts/data-grid/data-grid-row.d.ts +119 -0
- package/dist/dts/data-grid/data-grid-row.template.d.ts +10 -0
- package/dist/dts/data-grid/data-grid.d.ts +218 -0
- package/dist/dts/data-grid/data-grid.options.d.ts +49 -0
- package/dist/dts/data-grid/data-grid.template.d.ts +10 -0
- package/dist/dts/data-grid/index.d.ts +6 -0
- package/dist/dts/design-system/component-presentation.d.ts +66 -0
- package/dist/dts/design-system/design-system.d.ts +104 -0
- package/dist/dts/design-system/index.d.ts +3 -0
- package/dist/dts/design-system/registration-context.d.ts +106 -0
- package/dist/dts/design-token/custom-property-manager.d.ts +35 -0
- package/dist/dts/design-token/design-token.d.ts +139 -0
- package/dist/dts/design-token/interfaces.d.ts +31 -0
- package/dist/dts/di/di.d.ts +858 -0
- package/dist/dts/di/index.d.ts +1 -0
- package/dist/dts/dialog/dialog.d.ts +153 -0
- package/dist/dts/dialog/dialog.template.d.ts +8 -0
- package/dist/dts/dialog/index.d.ts +2 -0
- package/dist/dts/directives/reflect-attributes.d.ts +18 -0
- package/dist/dts/disclosure/disclosure.d.ts +59 -0
- package/dist/dts/disclosure/disclosure.template.d.ts +8 -0
- package/dist/dts/disclosure/index.d.ts +2 -0
- package/dist/dts/divider/divider.d.ts +28 -0
- package/dist/dts/divider/divider.options.d.ts +19 -0
- package/dist/dts/divider/divider.template.d.ts +8 -0
- package/dist/dts/divider/index.d.ts +2 -0
- package/dist/dts/flipper/flipper.d.ts +57 -0
- package/dist/dts/flipper/flipper.options.d.ts +13 -0
- package/dist/dts/flipper/flipper.template.d.ts +8 -0
- package/dist/dts/flipper/index.d.ts +2 -0
- package/dist/dts/form-associated/form-associated.d.ts +177 -0
- package/dist/dts/form-associated/index.d.ts +1 -0
- package/dist/dts/foundation-element/foundation-element.d.ts +120 -0
- package/dist/dts/foundation-element/index.d.ts +1 -0
- package/dist/dts/horizontal-scroll/horizontal-scroll.d.ts +242 -0
- package/dist/dts/horizontal-scroll/horizontal-scroll.template.d.ts +7 -0
- package/dist/dts/horizontal-scroll/index.d.ts +2 -0
- package/dist/dts/index-rollup.d.ts +2 -0
- package/dist/dts/index.d.ts +53 -0
- package/dist/dts/interfaces.d.ts +4 -0
- package/dist/dts/listbox/index.d.ts +3 -0
- package/dist/dts/listbox/listbox.d.ts +314 -0
- package/dist/dts/listbox/listbox.element.d.ts +223 -0
- package/dist/dts/listbox/listbox.template.d.ts +8 -0
- package/dist/dts/listbox-option/index.d.ts +2 -0
- package/dist/dts/listbox-option/listbox-option.d.ts +176 -0
- package/dist/dts/listbox-option/listbox-option.template.d.ts +8 -0
- package/dist/dts/menu/index.d.ts +2 -0
- package/dist/dts/menu/menu.d.ts +78 -0
- package/dist/dts/menu/menu.template.d.ts +8 -0
- package/dist/dts/menu-item/index.d.ts +2 -0
- package/dist/dts/menu-item/menu-item.d.ts +160 -0
- package/dist/dts/menu-item/menu-item.options.d.ts +29 -0
- package/dist/dts/menu-item/menu-item.template.d.ts +10 -0
- package/dist/dts/number-field/index.d.ts +2 -0
- package/dist/dts/number-field/number-field.d.ts +227 -0
- package/dist/dts/number-field/number-field.form-associated.d.ts +16 -0
- package/dist/dts/number-field/number-field.template.d.ts +8 -0
- package/dist/dts/patterns/aria-global.d.ts +189 -0
- package/dist/dts/patterns/index.d.ts +2 -0
- package/dist/dts/patterns/start-end.d.ts +65 -0
- package/dist/dts/picker/index.d.ts +10 -0
- package/dist/dts/picker/picker-list-item.d.ts +38 -0
- package/dist/dts/picker/picker-list-item.template.d.ts +8 -0
- package/dist/dts/picker/picker-list.d.ts +8 -0
- package/dist/dts/picker/picker-list.template.d.ts +8 -0
- package/dist/dts/picker/picker-menu-option.d.ts +37 -0
- package/dist/dts/picker/picker-menu-option.template.d.ts +8 -0
- package/dist/dts/picker/picker-menu.d.ts +46 -0
- package/dist/dts/picker/picker-menu.template.d.ts +8 -0
- package/dist/dts/picker/picker.d.ts +390 -0
- package/dist/dts/picker/picker.form-associated.d.ts +16 -0
- package/dist/dts/picker/picker.template.d.ts +8 -0
- package/dist/dts/progress/base-progress.d.ts +71 -0
- package/dist/dts/progress/index.d.ts +2 -0
- package/dist/dts/progress/progress.template.d.ts +8 -0
- package/dist/dts/progress-ring/index.d.ts +1 -0
- package/dist/dts/progress-ring/progress-ring.template.d.ts +8 -0
- package/dist/dts/radio/index.d.ts +2 -0
- package/dist/dts/radio/radio.d.ts +70 -0
- package/dist/dts/radio/radio.form-associated.d.ts +16 -0
- package/dist/dts/radio/radio.template.d.ts +8 -0
- package/dist/dts/radio-group/index.d.ts +2 -0
- package/dist/dts/radio-group/radio-group.d.ts +101 -0
- package/dist/dts/radio-group/radio-group.template.d.ts +8 -0
- package/dist/dts/search/index.d.ts +2 -0
- package/dist/dts/search/search.d.ts +162 -0
- package/dist/dts/search/search.form-associated.d.ts +16 -0
- package/dist/dts/search/search.template.d.ts +8 -0
- package/dist/dts/select/index.d.ts +3 -0
- package/dist/dts/select/select.d.ts +289 -0
- package/dist/dts/select/select.form-associated.d.ts +16 -0
- package/dist/dts/select/select.options.d.ts +13 -0
- package/dist/dts/select/select.template.d.ts +8 -0
- package/dist/dts/skeleton/index.d.ts +2 -0
- package/dist/dts/skeleton/skeleton.d.ts +47 -0
- package/dist/dts/skeleton/skeleton.template.d.ts +8 -0
- package/dist/dts/slider/index.d.ts +2 -0
- package/dist/dts/slider/slider-utilities.d.ts +5 -0
- package/dist/dts/slider/slider.d.ts +230 -0
- package/dist/dts/slider/slider.form-associated.d.ts +16 -0
- package/dist/dts/slider/slider.template.d.ts +8 -0
- package/dist/dts/slider-label/index.d.ts +2 -0
- package/dist/dts/slider-label/slider-label.d.ts +81 -0
- package/dist/dts/slider-label/slider-label.template.d.ts +8 -0
- package/dist/dts/switch/index.d.ts +2 -0
- package/dist/dts/switch/switch.d.ts +60 -0
- package/dist/dts/switch/switch.form-associated.d.ts +16 -0
- package/dist/dts/switch/switch.template.d.ts +8 -0
- package/dist/dts/tab/index.d.ts +2 -0
- package/dist/dts/tab/tab.d.ts +17 -0
- package/dist/dts/tab/tab.template.d.ts +8 -0
- package/dist/dts/tab-panel/index.d.ts +2 -0
- package/dist/dts/tab-panel/tab-panel.d.ts +10 -0
- package/dist/dts/tab-panel/tab-panel.template.d.ts +8 -0
- package/dist/dts/tabs/index.d.ts +2 -0
- package/dist/dts/tabs/tabs.d.ts +140 -0
- package/dist/dts/tabs/tabs.template.d.ts +8 -0
- package/dist/dts/test-utilities/fixture.d.ts +89 -0
- package/dist/dts/test-utilities/timeout.d.ts +4 -0
- package/dist/dts/text-area/index.d.ts +2 -0
- package/dist/dts/text-area/text-area.d.ts +149 -0
- package/dist/dts/text-area/text-area.form-associated.d.ts +16 -0
- package/dist/dts/text-area/text-area.options.d.ts +27 -0
- package/dist/dts/text-area/text-area.template.d.ts +8 -0
- package/dist/dts/text-field/index.d.ts +2 -0
- package/dist/dts/text-field/text-field.d.ts +166 -0
- package/dist/dts/text-field/text-field.form-associated.d.ts +16 -0
- package/dist/dts/text-field/text-field.options.d.ts +31 -0
- package/dist/dts/text-field/text-field.template.d.ts +8 -0
- package/dist/dts/toolbar/index.d.ts +2 -0
- package/dist/dts/toolbar/toolbar.d.ts +167 -0
- package/dist/dts/toolbar/toolbar.template.d.ts +9 -0
- package/dist/dts/tooltip/index.d.ts +2 -0
- package/dist/dts/tooltip/tooltip.d.ts +239 -0
- package/dist/dts/tooltip/tooltip.options.d.ts +69 -0
- package/dist/dts/tooltip/tooltip.template.d.ts +8 -0
- package/dist/dts/tree-item/index.d.ts +2 -0
- package/dist/dts/tree-item/tree-item.d.ts +141 -0
- package/dist/dts/tree-item/tree-item.template.d.ts +8 -0
- package/dist/dts/tree-view/index.d.ts +2 -0
- package/dist/dts/tree-view/tree-view.d.ts +99 -0
- package/dist/dts/tree-view/tree-view.template.d.ts +8 -0
- package/dist/dts/utilities/apply-mixins.d.ts +6 -0
- package/dist/dts/utilities/composed-contains.d.ts +12 -0
- package/dist/dts/utilities/composed-parent.d.ts +10 -0
- package/dist/dts/utilities/direction.d.ts +7 -0
- package/dist/dts/utilities/index.d.ts +8 -0
- package/dist/dts/utilities/intersection-service.d.ts +30 -0
- package/dist/dts/utilities/match-media-stylesheet-behavior.d.ts +124 -0
- package/dist/dts/utilities/property-stylesheet-behavior.d.ts +38 -0
- package/dist/dts/utilities/resize-observer.d.ts +31 -0
- package/dist/dts/utilities/root-active-element.d.ts +1 -0
- package/dist/dts/utilities/style/disabled.d.ts +5 -0
- package/dist/dts/utilities/style/display.d.ts +17 -0
- package/dist/dts/utilities/style/focus.d.ts +8 -0
- package/dist/dts/utilities/style/index.d.ts +3 -0
- package/dist/dts/utilities/whitespace-filter.d.ts +9 -0
- package/dist/esm/accordion/accordion.js +185 -0
- package/dist/esm/accordion/accordion.template.js +11 -0
- package/dist/esm/accordion/index.js +2 -0
- package/dist/esm/accordion-item/accordion-item.js +72 -0
- package/dist/esm/accordion-item/accordion-item.template.js +49 -0
- package/dist/esm/accordion-item/index.js +2 -0
- package/dist/esm/anchor/anchor.js +85 -0
- package/dist/esm/anchor/anchor.template.js +47 -0
- package/dist/esm/anchor/index.js +2 -0
- package/dist/esm/anchored-region/anchored-region-config.js +59 -0
- package/dist/esm/anchored-region/anchored-region.js +964 -0
- package/dist/esm/anchored-region/anchored-region.template.js +12 -0
- package/dist/esm/anchored-region/index.js +3 -0
- package/dist/esm/avatar/avatar.js +39 -0
- package/dist/esm/avatar/avatar.template.js +23 -0
- package/dist/esm/avatar/index.js +2 -0
- package/dist/esm/badge/badge.js +40 -0
- package/dist/esm/badge/badge.template.js +12 -0
- package/dist/esm/badge/index.js +2 -0
- package/dist/esm/breadcrumb/breadcrumb.js +70 -0
- package/dist/esm/breadcrumb/breadcrumb.template.js +14 -0
- package/dist/esm/breadcrumb/index.js +2 -0
- package/dist/esm/breadcrumb-item/breadcrumb-item.js +23 -0
- package/dist/esm/breadcrumb-item/breadcrumb-item.template.js +24 -0
- package/dist/esm/breadcrumb-item/index.js +2 -0
- package/dist/esm/button/button.form-associated.js +15 -0
- package/dist/esm/button/button.js +183 -0
- package/dist/esm/button/button.template.js +51 -0
- package/dist/esm/button/index.js +2 -0
- package/dist/esm/calendar/calendar.js +280 -0
- package/dist/esm/calendar/calendar.template.js +191 -0
- package/dist/esm/calendar/date-formatter.js +144 -0
- package/dist/esm/calendar/index.js +3 -0
- package/dist/esm/card/card.js +10 -0
- package/dist/esm/card/card.template.js +8 -0
- package/dist/esm/card/index.js +2 -0
- package/dist/esm/checkbox/checkbox.form-associated.js +15 -0
- package/dist/esm/checkbox/checkbox.js +75 -0
- package/dist/esm/checkbox/checkbox.template.js +35 -0
- package/dist/esm/checkbox/index.js +2 -0
- package/dist/esm/combobox/combobox.form-associated.js +15 -0
- package/dist/esm/combobox/combobox.js +587 -0
- package/dist/esm/combobox/combobox.options.js +10 -0
- package/dist/esm/combobox/combobox.template.js +66 -0
- package/dist/esm/combobox/index.js +3 -0
- package/dist/esm/data-grid/data-grid-cell.js +229 -0
- package/dist/esm/data-grid/data-grid-cell.template.js +23 -0
- package/dist/esm/data-grid/data-grid-row.js +203 -0
- package/dist/esm/data-grid/data-grid-row.template.js +47 -0
- package/dist/esm/data-grid/data-grid.js +440 -0
- package/dist/esm/data-grid/data-grid.options.js +31 -0
- package/dist/esm/data-grid/data-grid.template.js +36 -0
- package/dist/esm/data-grid/index.js +6 -0
- package/dist/esm/design-system/component-presentation.js +86 -0
- package/dist/esm/design-system/design-system.js +207 -0
- package/dist/esm/design-system/index.js +3 -0
- package/dist/esm/design-system/registration-context.js +1 -0
- package/dist/esm/design-token/custom-property-manager.js +216 -0
- package/dist/esm/design-token/design-token.js +657 -0
- package/dist/esm/design-token/interfaces.js +1 -0
- package/dist/esm/di/di.js +1341 -0
- package/dist/esm/di/index.js +1 -0
- package/dist/esm/dialog/dialog.js +280 -0
- package/dist/esm/dialog/dialog.template.js +30 -0
- package/dist/esm/dialog/index.js +2 -0
- package/dist/esm/directives/reflect-attributes.js +88 -0
- package/dist/esm/disclosure/disclosure.js +72 -0
- package/dist/esm/disclosure/disclosure.template.js +20 -0
- package/dist/esm/disclosure/index.js +2 -0
- package/dist/esm/divider/divider.js +39 -0
- package/dist/esm/divider/divider.options.js +14 -0
- package/dist/esm/divider/divider.template.js +8 -0
- package/dist/esm/divider/index.js +2 -0
- package/dist/esm/flipper/flipper.js +65 -0
- package/dist/esm/flipper/flipper.options.js +8 -0
- package/dist/esm/flipper/flipper.template.js +30 -0
- package/dist/esm/flipper/index.js +2 -0
- package/dist/esm/form-associated/form-associated.js +464 -0
- package/dist/esm/form-associated/index.js +1 -0
- package/dist/esm/foundation-element/foundation-element.js +132 -0
- package/dist/esm/foundation-element/index.js +1 -0
- package/dist/esm/horizontal-scroll/horizontal-scroll.js +380 -0
- package/dist/esm/horizontal-scroll/horizontal-scroll.template.js +62 -0
- package/dist/esm/horizontal-scroll/index.js +2 -0
- package/dist/esm/index-rollup.js +2 -0
- package/dist/esm/index.js +54 -0
- package/dist/esm/interfaces.js +1 -0
- package/dist/esm/listbox/index.js +3 -0
- package/dist/esm/listbox/listbox.element.js +448 -0
- package/dist/esm/listbox/listbox.js +528 -0
- package/dist/esm/listbox/listbox.template.js +27 -0
- package/dist/esm/listbox-option/index.js +2 -0
- package/dist/esm/listbox-option/listbox-option.js +200 -0
- package/dist/esm/listbox-option/listbox-option.template.js +25 -0
- package/dist/esm/menu/index.js +2 -0
- package/dist/esm/menu/menu.js +290 -0
- package/dist/esm/menu/menu.template.js +15 -0
- package/dist/esm/menu-item/index.js +2 -0
- package/dist/esm/menu-item/menu-item.js +251 -0
- package/dist/esm/menu-item/menu-item.options.js +26 -0
- package/dist/esm/menu-item/menu-item.template.js +78 -0
- package/dist/esm/number-field/index.js +2 -0
- package/dist/esm/number-field/number-field.form-associated.js +15 -0
- package/dist/esm/number-field/number-field.js +288 -0
- package/dist/esm/number-field/number-field.template.js +84 -0
- package/dist/esm/patterns/aria-global.js +70 -0
- package/dist/esm/patterns/index.js +2 -0
- package/dist/esm/patterns/start-end.js +84 -0
- package/dist/esm/picker/index.js +10 -0
- package/dist/esm/picker/picker-list-item.js +71 -0
- package/dist/esm/picker/picker-list-item.template.js +17 -0
- package/dist/esm/picker/picker-list.js +8 -0
- package/dist/esm/picker/picker-list.template.js +13 -0
- package/dist/esm/picker/picker-menu-option.js +61 -0
- package/dist/esm/picker/picker-menu-option.template.js +16 -0
- package/dist/esm/picker/picker-menu.js +59 -0
- package/dist/esm/picker/picker-menu.template.js +29 -0
- package/dist/esm/picker/picker.form-associated.js +15 -0
- package/dist/esm/picker/picker.js +759 -0
- package/dist/esm/picker/picker.template.js +97 -0
- package/dist/esm/progress/base-progress.js +69 -0
- package/dist/esm/progress/index.js +2 -0
- package/dist/esm/progress/progress.template.js +31 -0
- package/dist/esm/progress-ring/index.js +1 -0
- package/dist/esm/progress-ring/progress-ring.template.js +45 -0
- package/dist/esm/radio/index.js +2 -0
- package/dist/esm/radio/radio.form-associated.js +15 -0
- package/dist/esm/radio/radio.js +108 -0
- package/dist/esm/radio/radio.template.js +31 -0
- package/dist/esm/radio-group/index.js +2 -0
- package/dist/esm/radio-group/radio-group.js +390 -0
- package/dist/esm/radio-group/radio-group.template.js +29 -0
- package/dist/esm/search/index.js +2 -0
- package/dist/esm/search/search.form-associated.js +15 -0
- package/dist/esm/search/search.js +157 -0
- package/dist/esm/search/search.template.js +93 -0
- package/dist/esm/select/index.js +3 -0
- package/dist/esm/select/select.form-associated.js +15 -0
- package/dist/esm/select/select.js +490 -0
- package/dist/esm/select/select.options.js +8 -0
- package/dist/esm/select/select.template.js +72 -0
- package/dist/esm/skeleton/index.js +2 -0
- package/dist/esm/skeleton/skeleton.js +35 -0
- package/dist/esm/skeleton/skeleton.template.js +20 -0
- package/dist/esm/slider/index.js +2 -0
- package/dist/esm/slider/slider-utilities.js +11 -0
- package/dist/esm/slider/slider.form-associated.js +15 -0
- package/dist/esm/slider/slider.js +452 -0
- package/dist/esm/slider/slider.template.js +40 -0
- package/dist/esm/slider-label/index.js +2 -0
- package/dist/esm/slider-label/slider-label.js +158 -0
- package/dist/esm/slider-label/slider-label.template.js +24 -0
- package/dist/esm/switch/index.js +2 -0
- package/dist/esm/switch/switch.form-associated.js +15 -0
- package/dist/esm/switch/switch.js +79 -0
- package/dist/esm/switch/switch.template.js +37 -0
- package/dist/esm/tab/index.js +2 -0
- package/dist/esm/tab/tab.js +15 -0
- package/dist/esm/tab/tab.template.js +10 -0
- package/dist/esm/tab-panel/index.js +2 -0
- package/dist/esm/tab-panel/tab-panel.js +10 -0
- package/dist/esm/tab-panel/tab-panel.template.js +10 -0
- package/dist/esm/tabs/index.js +2 -0
- package/dist/esm/tabs/tabs.js +375 -0
- package/dist/esm/tabs/tabs.template.js +26 -0
- package/dist/esm/test-utilities/fixture.js +90 -0
- package/dist/esm/test-utilities/timeout.js +13 -0
- package/dist/esm/text-area/index.js +2 -0
- package/dist/esm/text-area/text-area.form-associated.js +15 -0
- package/dist/esm/text-area/text-area.js +146 -0
- package/dist/esm/text-area/text-area.options.js +22 -0
- package/dist/esm/text-area/text-area.template.js +64 -0
- package/dist/esm/text-field/index.js +2 -0
- package/dist/esm/text-field/text-field.form-associated.js +15 -0
- package/dist/esm/text-field/text-field.js +183 -0
- package/dist/esm/text-field/text-field.options.js +26 -0
- package/dist/esm/text-field/text-field.template.js +70 -0
- package/dist/esm/toolbar/index.js +2 -0
- package/dist/esm/toolbar/toolbar.js +271 -0
- package/dist/esm/toolbar/toolbar.template.js +37 -0
- package/dist/esm/tooltip/index.js +2 -0
- package/dist/esm/tooltip/tooltip.js +512 -0
- package/dist/esm/tooltip/tooltip.options.js +63 -0
- package/dist/esm/tooltip/tooltip.template.js +32 -0
- package/dist/esm/tree-item/index.js +2 -0
- package/dist/esm/tree-item/tree-item.js +150 -0
- package/dist/esm/tree-item/tree-item.template.js +52 -0
- package/dist/esm/tree-view/index.js +2 -0
- package/dist/esm/tree-view/tree-view.js +268 -0
- package/dist/esm/tree-view/tree-view.template.js +18 -0
- package/dist/esm/utilities/apply-mixins.js +20 -0
- package/dist/esm/utilities/composed-contains.js +22 -0
- package/dist/esm/utilities/composed-parent.js +23 -0
- package/dist/esm/utilities/direction.js +10 -0
- package/dist/esm/utilities/index.js +8 -0
- package/dist/esm/utilities/intersection-service.js +91 -0
- package/dist/esm/utilities/match-media-stylesheet-behavior.js +140 -0
- package/dist/esm/utilities/property-stylesheet-behavior.js +52 -0
- package/dist/esm/utilities/resize-observer.js +5 -0
- package/dist/esm/utilities/root-active-element.js +8 -0
- package/dist/esm/utilities/style/disabled.js +5 -0
- package/dist/esm/utilities/style/display.js +14 -0
- package/dist/esm/utilities/style/focus.js +9 -0
- package/dist/esm/utilities/style/index.js +3 -0
- package/dist/esm/utilities/whitespace-filter.js +13 -0
- package/dist/fast-foundation.d.ts +9744 -0
- package/dist/fast-foundation.js +19097 -0
- package/dist/fast-foundation.min.js +19 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/package.json +101 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./di.js";
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { attr, DOM, Observable } from "@ni/fast-element";
|
|
3
|
+
import { keyEscape, keyTab } from "@ni/fast-web-utilities";
|
|
4
|
+
import { isTabbable } from "tabbable";
|
|
5
|
+
import { FoundationElement } from "../foundation-element/foundation-element.js";
|
|
6
|
+
/**
|
|
7
|
+
* A Switch Custom HTML Element.
|
|
8
|
+
* Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#dialog | ARIA dialog }.
|
|
9
|
+
*
|
|
10
|
+
* @slot - The default slot for the dialog content
|
|
11
|
+
* @csspart positioning-region - A wrapping element used to center the dialog and position the modal overlay
|
|
12
|
+
* @csspart overlay - The modal dialog overlay
|
|
13
|
+
* @csspart control - The dialog element
|
|
14
|
+
* @fires cancel - Fires a custom 'cancel' event when the modal overlay is clicked
|
|
15
|
+
* @fires close - Fires a custom 'close' event when the dialog is hidden
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
*/
|
|
19
|
+
export class Dialog extends FoundationElement {
|
|
20
|
+
constructor() {
|
|
21
|
+
super(...arguments);
|
|
22
|
+
/**
|
|
23
|
+
* Indicates the element is modal. When modal, user mouse interaction will be limited to the contents of the element by a modal
|
|
24
|
+
* overlay. Clicks on the overlay will cause the dialog to emit a "dismiss" event.
|
|
25
|
+
* @public
|
|
26
|
+
* @defaultValue - true
|
|
27
|
+
* @remarks
|
|
28
|
+
* HTML Attribute: modal
|
|
29
|
+
*/
|
|
30
|
+
this.modal = true;
|
|
31
|
+
/**
|
|
32
|
+
* The hidden state of the element.
|
|
33
|
+
*
|
|
34
|
+
* @public
|
|
35
|
+
* @defaultValue - false
|
|
36
|
+
* @remarks
|
|
37
|
+
* HTML Attribute: hidden
|
|
38
|
+
*/
|
|
39
|
+
this.hidden = false;
|
|
40
|
+
/**
|
|
41
|
+
* Indicates that the dialog should trap focus.
|
|
42
|
+
*
|
|
43
|
+
* @public
|
|
44
|
+
* @defaultValue - true
|
|
45
|
+
* @remarks
|
|
46
|
+
* HTML Attribute: trap-focus
|
|
47
|
+
*/
|
|
48
|
+
this.trapFocus = true;
|
|
49
|
+
this.trapFocusChanged = () => {
|
|
50
|
+
if (this.$fastController.isConnected) {
|
|
51
|
+
this.updateTrapFocus();
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
57
|
+
this.isTrappingFocus = false;
|
|
58
|
+
this.handleDocumentKeydown = (e) => {
|
|
59
|
+
if (!e.defaultPrevented && !this.hidden) {
|
|
60
|
+
switch (e.key) {
|
|
61
|
+
case keyEscape:
|
|
62
|
+
this.dismiss();
|
|
63
|
+
e.preventDefault();
|
|
64
|
+
break;
|
|
65
|
+
case keyTab:
|
|
66
|
+
this.handleTabKeyDown(e);
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
this.handleDocumentFocus = (e) => {
|
|
72
|
+
if (!e.defaultPrevented && this.shouldForceFocus(e.target)) {
|
|
73
|
+
this.focusFirstElement();
|
|
74
|
+
e.preventDefault();
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
this.handleTabKeyDown = (e) => {
|
|
78
|
+
if (!this.trapFocus || this.hidden) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
const bounds = this.getTabQueueBounds();
|
|
82
|
+
if (bounds.length === 0) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (bounds.length === 1) {
|
|
86
|
+
// keep focus on single element
|
|
87
|
+
bounds[0].focus();
|
|
88
|
+
e.preventDefault();
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
if (e.shiftKey && e.target === bounds[0]) {
|
|
92
|
+
bounds[bounds.length - 1].focus();
|
|
93
|
+
e.preventDefault();
|
|
94
|
+
}
|
|
95
|
+
else if (!e.shiftKey && e.target === bounds[bounds.length - 1]) {
|
|
96
|
+
bounds[0].focus();
|
|
97
|
+
e.preventDefault();
|
|
98
|
+
}
|
|
99
|
+
return;
|
|
100
|
+
};
|
|
101
|
+
this.getTabQueueBounds = () => {
|
|
102
|
+
const bounds = [];
|
|
103
|
+
return Dialog.reduceTabbableItems(bounds, this);
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* focus on first element of tab queue
|
|
107
|
+
*/
|
|
108
|
+
this.focusFirstElement = () => {
|
|
109
|
+
const bounds = this.getTabQueueBounds();
|
|
110
|
+
if (bounds.length > 0) {
|
|
111
|
+
bounds[0].focus();
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
if (this.dialog instanceof HTMLElement) {
|
|
115
|
+
this.dialog.focus();
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* we should only focus if focus has not already been brought to the dialog
|
|
121
|
+
*/
|
|
122
|
+
this.shouldForceFocus = (currentFocusElement) => {
|
|
123
|
+
return this.isTrappingFocus && !this.contains(currentFocusElement);
|
|
124
|
+
};
|
|
125
|
+
/**
|
|
126
|
+
* we should we be active trapping focus
|
|
127
|
+
*/
|
|
128
|
+
this.shouldTrapFocus = () => {
|
|
129
|
+
return this.trapFocus && !this.hidden;
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
*
|
|
133
|
+
*
|
|
134
|
+
* @internal
|
|
135
|
+
*/
|
|
136
|
+
this.updateTrapFocus = (shouldTrapFocusOverride) => {
|
|
137
|
+
const shouldTrapFocus = shouldTrapFocusOverride === undefined
|
|
138
|
+
? this.shouldTrapFocus()
|
|
139
|
+
: shouldTrapFocusOverride;
|
|
140
|
+
if (shouldTrapFocus && !this.isTrappingFocus) {
|
|
141
|
+
this.isTrappingFocus = true;
|
|
142
|
+
// Add an event listener for focusin events if we are trapping focus
|
|
143
|
+
document.addEventListener("focusin", this.handleDocumentFocus);
|
|
144
|
+
DOM.queueUpdate(() => {
|
|
145
|
+
if (this.shouldForceFocus(document.activeElement)) {
|
|
146
|
+
this.focusFirstElement();
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
else if (!shouldTrapFocus && this.isTrappingFocus) {
|
|
151
|
+
this.isTrappingFocus = false;
|
|
152
|
+
// remove event listener if we are not trapping focus
|
|
153
|
+
document.removeEventListener("focusin", this.handleDocumentFocus);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* @internal
|
|
159
|
+
*/
|
|
160
|
+
dismiss() {
|
|
161
|
+
this.$emit("dismiss");
|
|
162
|
+
// implement `<dialog>` interface
|
|
163
|
+
this.$emit("cancel");
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* The method to show the dialog.
|
|
167
|
+
*
|
|
168
|
+
* @public
|
|
169
|
+
*/
|
|
170
|
+
show() {
|
|
171
|
+
this.hidden = false;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* The method to hide the dialog.
|
|
175
|
+
*
|
|
176
|
+
* @public
|
|
177
|
+
*/
|
|
178
|
+
hide() {
|
|
179
|
+
this.hidden = true;
|
|
180
|
+
// implement `<dialog>` interface
|
|
181
|
+
this.$emit("close");
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* @internal
|
|
185
|
+
*/
|
|
186
|
+
connectedCallback() {
|
|
187
|
+
super.connectedCallback();
|
|
188
|
+
document.addEventListener("keydown", this.handleDocumentKeydown);
|
|
189
|
+
this.notifier = Observable.getNotifier(this);
|
|
190
|
+
this.notifier.subscribe(this, "hidden");
|
|
191
|
+
this.updateTrapFocus();
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* @internal
|
|
195
|
+
*/
|
|
196
|
+
disconnectedCallback() {
|
|
197
|
+
super.disconnectedCallback();
|
|
198
|
+
// remove keydown event listener
|
|
199
|
+
document.removeEventListener("keydown", this.handleDocumentKeydown);
|
|
200
|
+
// if we are trapping focus remove the focusin listener
|
|
201
|
+
this.updateTrapFocus(false);
|
|
202
|
+
this.notifier.unsubscribe(this, "hidden");
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* @internal
|
|
206
|
+
*/
|
|
207
|
+
handleChange(source, propertyName) {
|
|
208
|
+
switch (propertyName) {
|
|
209
|
+
case "hidden":
|
|
210
|
+
this.updateTrapFocus();
|
|
211
|
+
break;
|
|
212
|
+
default:
|
|
213
|
+
break;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Reduce a collection to only its focusable elements.
|
|
218
|
+
*
|
|
219
|
+
* @param elements - Collection of elements to reduce
|
|
220
|
+
* @param element - The current element
|
|
221
|
+
*
|
|
222
|
+
* @internal
|
|
223
|
+
*/
|
|
224
|
+
static reduceTabbableItems(elements, element) {
|
|
225
|
+
if (element.getAttribute("tabindex") === "-1") {
|
|
226
|
+
return elements;
|
|
227
|
+
}
|
|
228
|
+
if (isTabbable(element) ||
|
|
229
|
+
(Dialog.isFocusableFastElement(element) && Dialog.hasTabbableShadow(element))) {
|
|
230
|
+
elements.push(element);
|
|
231
|
+
return elements;
|
|
232
|
+
}
|
|
233
|
+
if (element.childElementCount) {
|
|
234
|
+
return elements.concat(Array.from(element.children).reduce(Dialog.reduceTabbableItems, []));
|
|
235
|
+
}
|
|
236
|
+
return elements;
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Test if element is focusable fast element
|
|
240
|
+
*
|
|
241
|
+
* @param element - The element to check
|
|
242
|
+
*
|
|
243
|
+
* @internal
|
|
244
|
+
*/
|
|
245
|
+
static isFocusableFastElement(element) {
|
|
246
|
+
var _a, _b;
|
|
247
|
+
return !!((_b = (_a = element.$fastController) === null || _a === void 0 ? void 0 : _a.definition.shadowOptions) === null || _b === void 0 ? void 0 : _b.delegatesFocus);
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Test if the element has a focusable shadow
|
|
251
|
+
*
|
|
252
|
+
* @param element - The element to check
|
|
253
|
+
*
|
|
254
|
+
* @internal
|
|
255
|
+
*/
|
|
256
|
+
static hasTabbableShadow(element) {
|
|
257
|
+
var _a, _b;
|
|
258
|
+
return Array.from((_b = (_a = element.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll("*")) !== null && _b !== void 0 ? _b : []).some(x => {
|
|
259
|
+
return isTabbable(x);
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
__decorate([
|
|
264
|
+
attr({ mode: "boolean" })
|
|
265
|
+
], Dialog.prototype, "modal", void 0);
|
|
266
|
+
__decorate([
|
|
267
|
+
attr({ mode: "boolean" })
|
|
268
|
+
], Dialog.prototype, "hidden", void 0);
|
|
269
|
+
__decorate([
|
|
270
|
+
attr({ attribute: "trap-focus", mode: "boolean" })
|
|
271
|
+
], Dialog.prototype, "trapFocus", void 0);
|
|
272
|
+
__decorate([
|
|
273
|
+
attr({ attribute: "aria-describedby" })
|
|
274
|
+
], Dialog.prototype, "ariaDescribedby", void 0);
|
|
275
|
+
__decorate([
|
|
276
|
+
attr({ attribute: "aria-labelledby" })
|
|
277
|
+
], Dialog.prototype, "ariaLabelledby", void 0);
|
|
278
|
+
__decorate([
|
|
279
|
+
attr({ attribute: "aria-label" })
|
|
280
|
+
], Dialog.prototype, "ariaLabel", void 0);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { html, ref, when } from "@ni/fast-element";
|
|
2
|
+
/**
|
|
3
|
+
* The template for the {@link @ni/fast-foundation#Dialog} component.
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export const dialogTemplate = (context, definition) => html `
|
|
7
|
+
<div class="positioning-region" part="positioning-region">
|
|
8
|
+
${when(x => x.modal, html `
|
|
9
|
+
<div
|
|
10
|
+
class="overlay"
|
|
11
|
+
part="overlay"
|
|
12
|
+
role="presentation"
|
|
13
|
+
@click="${x => x.dismiss()}"
|
|
14
|
+
></div>
|
|
15
|
+
`)}
|
|
16
|
+
<div
|
|
17
|
+
role="dialog"
|
|
18
|
+
tabindex="-1"
|
|
19
|
+
class="control"
|
|
20
|
+
part="control"
|
|
21
|
+
aria-modal="${x => x.modal}"
|
|
22
|
+
aria-describedby="${x => x.ariaDescribedby}"
|
|
23
|
+
aria-labelledby="${x => x.ariaLabelledby}"
|
|
24
|
+
aria-label="${x => x.ariaLabel}"
|
|
25
|
+
${ref("dialog")}
|
|
26
|
+
>
|
|
27
|
+
<slot></slot>
|
|
28
|
+
</div>
|
|
29
|
+
</div>
|
|
30
|
+
`;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { AttachedBehaviorHTMLDirective, DOM, SubscriberSet, } from "@ni/fast-element";
|
|
2
|
+
const observer = new MutationObserver((mutations) => {
|
|
3
|
+
for (const mutation of mutations) {
|
|
4
|
+
AttributeReflectionSubscriptionSet.getOrCreateFor(mutation.target).notify(mutation.attributeName);
|
|
5
|
+
}
|
|
6
|
+
});
|
|
7
|
+
class AttributeReflectionSubscriptionSet extends SubscriberSet {
|
|
8
|
+
subscribe(subscriber) {
|
|
9
|
+
super.subscribe(subscriber);
|
|
10
|
+
if (!this.watchedAttributes.has(subscriber.attributes)) {
|
|
11
|
+
this.watchedAttributes.add(subscriber.attributes);
|
|
12
|
+
this.observe();
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
constructor(source) {
|
|
16
|
+
super(source);
|
|
17
|
+
this.watchedAttributes = new Set();
|
|
18
|
+
AttributeReflectionSubscriptionSet.subscriberCache.set(source, this);
|
|
19
|
+
}
|
|
20
|
+
unsubscribe(subscriber) {
|
|
21
|
+
super.unsubscribe(subscriber);
|
|
22
|
+
if (this.watchedAttributes.has(subscriber.attributes)) {
|
|
23
|
+
this.watchedAttributes.delete(subscriber.attributes);
|
|
24
|
+
this.observe();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
static getOrCreateFor(source) {
|
|
28
|
+
return (this.subscriberCache.get(source) ||
|
|
29
|
+
new AttributeReflectionSubscriptionSet(source));
|
|
30
|
+
}
|
|
31
|
+
observe() {
|
|
32
|
+
const attributeFilter = [];
|
|
33
|
+
for (const attributes of this.watchedAttributes.values()) {
|
|
34
|
+
for (let i = 0; i < attributes.length; i++) {
|
|
35
|
+
attributeFilter.push(attributes[i]);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
observer.observe(this.source, { attributeFilter });
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
AttributeReflectionSubscriptionSet.subscriberCache = new WeakMap();
|
|
42
|
+
class ReflectAttrBehavior {
|
|
43
|
+
constructor(target, attributes) {
|
|
44
|
+
this.target = target;
|
|
45
|
+
this.attributes = Object.freeze(attributes);
|
|
46
|
+
}
|
|
47
|
+
bind(source) {
|
|
48
|
+
AttributeReflectionSubscriptionSet.getOrCreateFor(source).subscribe(this);
|
|
49
|
+
// Reflect any existing attributes because MutationObserver will only
|
|
50
|
+
// handle *changes* to attributes.
|
|
51
|
+
if (source.hasAttributes()) {
|
|
52
|
+
for (let i = 0; i < source.attributes.length; i++) {
|
|
53
|
+
this.handleChange(source, source.attributes[i].name);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
unbind(source) {
|
|
58
|
+
AttributeReflectionSubscriptionSet.getOrCreateFor(source).unsubscribe(this);
|
|
59
|
+
}
|
|
60
|
+
handleChange(source, arg) {
|
|
61
|
+
// In cases where two or more ReflectAttrBehavior instances are bound to the same element,
|
|
62
|
+
// they will share a Subscriber implementation. In that case, this handle change can be invoked with
|
|
63
|
+
// attributes an instances doesn't need to reflect. This guards against reflecting attrs
|
|
64
|
+
// that shouldn't be reflected.
|
|
65
|
+
if (this.attributes.includes(arg)) {
|
|
66
|
+
DOM.setAttribute(this.target, arg, source.getAttribute(arg));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Reflects attributes from the host element to the target element of the directive.
|
|
72
|
+
* @param attributes - The attributes to reflect
|
|
73
|
+
*
|
|
74
|
+
* @beta
|
|
75
|
+
* @example
|
|
76
|
+
* ```ts
|
|
77
|
+
* const template = html`
|
|
78
|
+
* <button
|
|
79
|
+
* ${reflectAttributes("aria-label", "aria-describedby")}
|
|
80
|
+
* >
|
|
81
|
+
* hello world
|
|
82
|
+
* </button
|
|
83
|
+
* `
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export function reflectAttributes(...attributes) {
|
|
87
|
+
return new AttachedBehaviorHTMLDirective("fast-reflect-attr", ReflectAttrBehavior, attributes);
|
|
88
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { attr } from "@ni/fast-element";
|
|
3
|
+
import { FoundationElement } from "../foundation-element/foundation-element.js";
|
|
4
|
+
/**
|
|
5
|
+
* A Disclosure Custom HTML Element.
|
|
6
|
+
* Based largely on the {@link https://w3c.github.io/aria-practices/#disclosure | disclosure element }.
|
|
7
|
+
*
|
|
8
|
+
* @slot start - Content which can be provided before the summary content
|
|
9
|
+
* @slot end - Content which can be provided after the summary content
|
|
10
|
+
* @slot title - The summary content
|
|
11
|
+
* @slot - The default slot for the disclosure content
|
|
12
|
+
* @fires toggle - fires a toggle event when the summary is toggled
|
|
13
|
+
*
|
|
14
|
+
* @public
|
|
15
|
+
*/
|
|
16
|
+
export class Disclosure extends FoundationElement {
|
|
17
|
+
/**
|
|
18
|
+
* @internal
|
|
19
|
+
*/
|
|
20
|
+
connectedCallback() {
|
|
21
|
+
super.connectedCallback();
|
|
22
|
+
this.setup();
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* @internal
|
|
26
|
+
*/
|
|
27
|
+
disconnectedCallback() {
|
|
28
|
+
super.disconnectedCallback();
|
|
29
|
+
this.details.removeEventListener("toggle", this.onToggle);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Show extra content.
|
|
33
|
+
*/
|
|
34
|
+
show() {
|
|
35
|
+
this.details.open = true;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Hide extra content.
|
|
39
|
+
*/
|
|
40
|
+
hide() {
|
|
41
|
+
this.details.open = false;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Toggle the current(expanded/collapsed) state.
|
|
45
|
+
*/
|
|
46
|
+
toggle() {
|
|
47
|
+
this.details.open = !this.details.open;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Register listener and set default disclosure mode
|
|
51
|
+
*/
|
|
52
|
+
setup() {
|
|
53
|
+
this.onToggle = this.onToggle.bind(this);
|
|
54
|
+
this.details.addEventListener("toggle", this.onToggle);
|
|
55
|
+
if (this.expanded) {
|
|
56
|
+
this.show();
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Update the aria attr and fire `toggle` event
|
|
61
|
+
*/
|
|
62
|
+
onToggle() {
|
|
63
|
+
this.expanded = this.details.open;
|
|
64
|
+
this.$emit("toggle");
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
__decorate([
|
|
68
|
+
attr({ mode: "boolean" })
|
|
69
|
+
], Disclosure.prototype, "expanded", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
attr
|
|
72
|
+
], Disclosure.prototype, "title", void 0);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { html, ref } from "@ni/fast-element";
|
|
2
|
+
/**
|
|
3
|
+
* The template for the {@link @ni/fast-foundation#Disclosure} component.
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export const disclosureTemplate = (context, definition) => html `
|
|
7
|
+
<details class="disclosure" ${ref("details")}>
|
|
8
|
+
<summary
|
|
9
|
+
class="invoker"
|
|
10
|
+
role="button"
|
|
11
|
+
aria-controls="disclosure-content"
|
|
12
|
+
aria-expanded="${x => x.expanded}"
|
|
13
|
+
>
|
|
14
|
+
<slot name="start"></slot>
|
|
15
|
+
<slot name="title">${x => x.title}</slot>
|
|
16
|
+
<slot name="end"></slot>
|
|
17
|
+
</summary>
|
|
18
|
+
<div id="disclosure-content"><slot></slot></div>
|
|
19
|
+
</details>
|
|
20
|
+
`;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { attr } from "@ni/fast-element";
|
|
3
|
+
import { Orientation } from "@ni/fast-web-utilities";
|
|
4
|
+
import { FoundationElement } from "../foundation-element/foundation-element.js";
|
|
5
|
+
import { DividerRole } from "./divider.options.js";
|
|
6
|
+
export { DividerRole };
|
|
7
|
+
/**
|
|
8
|
+
* A Divider Custom HTML Element.
|
|
9
|
+
* Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#separator | ARIA separator } or {@link https://www.w3.org/TR/wai-aria-1.1/#presentation | ARIA presentation}.
|
|
10
|
+
*
|
|
11
|
+
* @public
|
|
12
|
+
*/
|
|
13
|
+
export class Divider extends FoundationElement {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
/**
|
|
17
|
+
* The role of the element.
|
|
18
|
+
*
|
|
19
|
+
* @public
|
|
20
|
+
* @remarks
|
|
21
|
+
* HTML Attribute: role
|
|
22
|
+
*/
|
|
23
|
+
this.role = DividerRole.separator;
|
|
24
|
+
/**
|
|
25
|
+
* The orientation of the divider.
|
|
26
|
+
*
|
|
27
|
+
* @public
|
|
28
|
+
* @remarks
|
|
29
|
+
* HTML Attribute: orientation
|
|
30
|
+
*/
|
|
31
|
+
this.orientation = Orientation.horizontal;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
__decorate([
|
|
35
|
+
attr
|
|
36
|
+
], Divider.prototype, "role", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
attr
|
|
39
|
+
], Divider.prototype, "orientation", void 0);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Divider roles
|
|
3
|
+
* @public
|
|
4
|
+
*/
|
|
5
|
+
export const DividerRole = {
|
|
6
|
+
/**
|
|
7
|
+
* The divider semantically separates content
|
|
8
|
+
*/
|
|
9
|
+
separator: "separator",
|
|
10
|
+
/**
|
|
11
|
+
* The divider has no semantic value and is for visual presentation only.
|
|
12
|
+
*/
|
|
13
|
+
presentation: "presentation",
|
|
14
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { html } from "@ni/fast-element";
|
|
2
|
+
/**
|
|
3
|
+
* The template for the {@link @ni/fast-foundation#Divider} component.
|
|
4
|
+
* @public
|
|
5
|
+
*/
|
|
6
|
+
export const dividerTemplate = (context, definition) => html `
|
|
7
|
+
<template role="${x => x.role}" aria-orientation="${x => x.orientation}"></template>
|
|
8
|
+
`;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { attr, booleanConverter } from "@ni/fast-element";
|
|
3
|
+
import { FoundationElement, } from "../foundation-element/foundation-element.js";
|
|
4
|
+
import { FlipperDirection } from "./flipper.options.js";
|
|
5
|
+
export { FlipperDirection };
|
|
6
|
+
/**
|
|
7
|
+
* A Flipper Custom HTML Element.
|
|
8
|
+
* Flippers are a form of button that implies directional content navigation, such as in a carousel.
|
|
9
|
+
*
|
|
10
|
+
* @slot next - The next flipper content
|
|
11
|
+
* @slot previous - The previous flipper content
|
|
12
|
+
* @csspart next - Wraps the next flipper content
|
|
13
|
+
* @csspart previous - Wraps the previous flipper content
|
|
14
|
+
* @fires click - Fires a custom 'click' event when Enter or Space is invoked via keyboard and the flipper is exposed to assistive technologies.
|
|
15
|
+
*
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export class Flipper extends FoundationElement {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
/**
|
|
22
|
+
* Indicates the flipper should be hidden from assistive technology. Because flippers are often supplementary navigation, they are often hidden from assistive technology.
|
|
23
|
+
*
|
|
24
|
+
* @public
|
|
25
|
+
* @defaultValue - true
|
|
26
|
+
* @remarks
|
|
27
|
+
* HTML Attribute: aria-hidden
|
|
28
|
+
*/
|
|
29
|
+
this.hiddenFromAT = true;
|
|
30
|
+
/**
|
|
31
|
+
* The direction that the flipper implies navigating.
|
|
32
|
+
*
|
|
33
|
+
* @public
|
|
34
|
+
* @remarks
|
|
35
|
+
* HTML Attribute: direction
|
|
36
|
+
*/
|
|
37
|
+
this.direction = FlipperDirection.next;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Simulate a click event when the flipper has focus and the user hits enter or space keys
|
|
41
|
+
* Blur focus if the user hits escape key
|
|
42
|
+
* @param e - Keyboard event
|
|
43
|
+
* @public
|
|
44
|
+
*/
|
|
45
|
+
keyupHandler(e) {
|
|
46
|
+
if (!this.hiddenFromAT) {
|
|
47
|
+
const key = e.key;
|
|
48
|
+
if (key === "Enter" || key === "Space") {
|
|
49
|
+
this.$emit("click", e);
|
|
50
|
+
}
|
|
51
|
+
if (key === "Escape") {
|
|
52
|
+
this.blur();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
__decorate([
|
|
58
|
+
attr({ mode: "boolean" })
|
|
59
|
+
], Flipper.prototype, "disabled", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
attr({ attribute: "aria-hidden", converter: booleanConverter })
|
|
62
|
+
], Flipper.prototype, "hiddenFromAT", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
attr
|
|
65
|
+
], Flipper.prototype, "direction", void 0);
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { html, when } from "@ni/fast-element";
|
|
2
|
+
import { FlipperDirection } from "./flipper.options.js";
|
|
3
|
+
/**
|
|
4
|
+
* The template for the {@link @ni/fast-foundation#Flipper} component.
|
|
5
|
+
* @public
|
|
6
|
+
*/
|
|
7
|
+
export const flipperTemplate = (context, definition) => html `
|
|
8
|
+
<template
|
|
9
|
+
role="button"
|
|
10
|
+
aria-disabled="${x => (x.disabled ? true : void 0)}"
|
|
11
|
+
tabindex="${x => (x.hiddenFromAT ? -1 : 0)}"
|
|
12
|
+
class="${x => x.direction} ${x => (x.disabled ? "disabled" : "")}"
|
|
13
|
+
@keyup="${(x, c) => x.keyupHandler(c.event)}"
|
|
14
|
+
>
|
|
15
|
+
${when(x => x.direction === FlipperDirection.next, html `
|
|
16
|
+
<span part="next" class="next">
|
|
17
|
+
<slot name="next">
|
|
18
|
+
${definition.next || ""}
|
|
19
|
+
</slot>
|
|
20
|
+
</span>
|
|
21
|
+
`)}
|
|
22
|
+
${when(x => x.direction === FlipperDirection.previous, html `
|
|
23
|
+
<span part="previous" class="previous">
|
|
24
|
+
<slot name="previous">
|
|
25
|
+
${definition.previous || ""}
|
|
26
|
+
</slot>
|
|
27
|
+
</span>
|
|
28
|
+
`)}
|
|
29
|
+
</template>
|
|
30
|
+
`;
|