@rivetjs/cdk 0.0.0-stage → 0.1.0-alpha.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/LICENSE +21 -0
- package/NOTICE +483 -0
- package/README.md +10 -2
- package/_adapters/collection.d.ts +160 -0
- package/_adapters/collection.js +235 -0
- package/_adapters/collections.d.ts +325 -0
- package/_adapters/collections.js +934 -0
- package/_adapters/dom-collection.d.ts +42 -0
- package/_adapters/dom-collection.js +228 -0
- package/_adapters/grid-selection.d.ts +115 -0
- package/_adapters/grid-selection.js +436 -0
- package/_adapters/interactions.d.ts +19 -0
- package/_adapters/interactions.js +45 -0
- package/_adapters/intl.d.ts +8 -0
- package/_adapters/intl.js +106 -0
- package/_adapters/press.d.ts +22 -0
- package/_adapters/press.js +34 -0
- package/_adapters/selectable.d.ts +132 -0
- package/_adapters/selectable.js +599 -0
- package/_adapters/selection.d.ts +109 -0
- package/_adapters/selection.js +685 -0
- package/_adapters/type-select.d.ts +8 -0
- package/_adapters/type-select.js +59 -0
- package/a11y/aria-describer.d.ts +46 -0
- package/a11y/aria-describer.js +169 -0
- package/a11y/focus-monitor.d.ts +98 -0
- package/a11y/focus-monitor.js +321 -0
- package/a11y/focus-trap.d.ts +137 -0
- package/a11y/focus-trap.js +378 -0
- package/a11y/high-contrast.d.ts +26 -0
- package/a11y/high-contrast.js +84 -0
- package/a11y/index.d.ts +37 -0
- package/a11y/index.js +97 -0
- package/a11y/interactivity-checker.d.ts +18 -0
- package/a11y/interactivity-checker.js +126 -0
- package/a11y/key-manager.d.ts +152 -0
- package/a11y/key-manager.js +397 -0
- package/a11y/live-announcer.d.ts +53 -0
- package/a11y/live-announcer.js +143 -0
- package/accordion/index.d.ts +2 -0
- package/accordion/index.jsx +10 -0
- package/announcer/index.d.ts +8 -0
- package/announcer/index.jsx +22 -0
- package/announcer/live-announcer.d.ts +15 -0
- package/announcer/live-announcer.js +123 -0
- package/autocomplete/behaviour.d.ts +94 -0
- package/autocomplete/behaviour.jsx +423 -0
- package/autocomplete/contexts.d.ts +54 -0
- package/autocomplete/contexts.js +28 -0
- package/autocomplete/index.d.ts +12 -0
- package/autocomplete/index.jsx +31 -0
- package/autocomplete/intl.d.ts +2 -0
- package/autocomplete/intl.js +36 -0
- package/bidi/bidi-dir.d.ts +23 -0
- package/bidi/bidi-dir.jsx +36 -0
- package/bidi/index.d.ts +58 -0
- package/bidi/index.js +84 -0
- package/breadcrumbs/behaviour.d.ts +6 -0
- package/breadcrumbs/behaviour.js +17 -0
- package/breadcrumbs/index.d.ts +68 -0
- package/breadcrumbs/index.jsx +224 -0
- package/breadcrumbs/intl.d.ts +3 -0
- package/breadcrumbs/intl.js +104 -0
- package/button/behaviour.d.ts +61 -0
- package/button/behaviour.js +90 -0
- package/button/index.d.ts +38 -0
- package/button/index.jsx +374 -0
- package/button/press.d.ts +25 -0
- package/button/press.js +54 -0
- package/calendar/behaviour.d.ts +250 -0
- package/calendar/behaviour.jsx +939 -0
- package/calendar/index.d.ts +157 -0
- package/calendar/index.jsx +484 -0
- package/calendar/intl.d.ts +3 -0
- package/calendar/intl.js +36 -0
- package/carousel/behaviour.d.ts +50 -0
- package/carousel/behaviour.jsx +365 -0
- package/carousel/engine/Alignment.d.ts +5 -0
- package/carousel/engine/Alignment.js +24 -0
- package/carousel/engine/Animations.d.ts +13 -0
- package/carousel/engine/Animations.js +28 -0
- package/carousel/engine/Axis.d.ts +14 -0
- package/carousel/engine/Axis.js +35 -0
- package/carousel/engine/Counter.d.ts +7 -0
- package/carousel/engine/Counter.js +32 -0
- package/carousel/engine/DragHandler.d.ts +22 -0
- package/carousel/engine/DragHandler.js +141 -0
- package/carousel/engine/DragTracker.d.ts +10 -0
- package/carousel/engine/DragTracker.js +29 -0
- package/carousel/engine/EmblaCarousel.d.ts +32 -0
- package/carousel/engine/EmblaCarousel.js +177 -0
- package/carousel/engine/Engine.d.ts +64 -0
- package/carousel/engine/Engine.js +137 -0
- package/carousel/engine/EventHandler.d.ts +27 -0
- package/carousel/engine/EventHandler.js +33 -0
- package/carousel/engine/EventStore.d.ts +9 -0
- package/carousel/engine/EventStore.js +25 -0
- package/carousel/engine/NodeRects.d.ts +12 -0
- package/carousel/engine/NodeRects.js +18 -0
- package/carousel/engine/Options.d.ts +40 -0
- package/carousel/engine/Options.js +22 -0
- package/carousel/engine/OptionsHandler.d.ts +10 -0
- package/carousel/engine/OptionsHandler.js +26 -0
- package/carousel/engine/PercentOfView.d.ts +4 -0
- package/carousel/engine/PercentOfView.js +9 -0
- package/carousel/engine/Plugins.d.ts +16 -0
- package/carousel/engine/Plugins.js +1 -0
- package/carousel/engine/PluginsHandler.d.ts +8 -0
- package/carousel/engine/PluginsHandler.js +16 -0
- package/carousel/engine/ResizeHandler.d.ts +13 -0
- package/carousel/engine/ResizeHandler.js +51 -0
- package/carousel/engine/ScrollBounds.d.ts +10 -0
- package/carousel/engine/ScrollBounds.js +41 -0
- package/carousel/engine/ScrollContain.d.ts +7 -0
- package/carousel/engine/ScrollContain.js +52 -0
- package/carousel/engine/ScrollLimit.d.ts +5 -0
- package/carousel/engine/ScrollLimit.js +13 -0
- package/carousel/engine/ScrollLooper.d.ts +6 -0
- package/carousel/engine/ScrollLooper.js +26 -0
- package/carousel/engine/ScrollProgress.d.ts +5 -0
- package/carousel/engine/ScrollProgress.js +11 -0
- package/carousel/engine/ScrollSnaps.d.ts +9 -0
- package/carousel/engine/ScrollSnaps.js +26 -0
- package/carousel/engine/ScrollTarget.d.ts +12 -0
- package/carousel/engine/ScrollTarget.js +47 -0
- package/carousel/engine/ScrollTo.d.ts +11 -0
- package/carousel/engine/ScrollTo.js +36 -0
- package/carousel/engine/SlideFocus.d.ts +13 -0
- package/carousel/engine/SlideFocus.js +39 -0
- package/carousel/engine/SlideLooper.d.ts +18 -0
- package/carousel/engine/SlideLooper.js +78 -0
- package/carousel/engine/SlideRegistry.d.ts +7 -0
- package/carousel/engine/SlideRegistry.js +31 -0
- package/carousel/engine/SlideSizes.d.ts +10 -0
- package/carousel/engine/SlideSizes.js +41 -0
- package/carousel/engine/SlidesHandler.d.ts +10 -0
- package/carousel/engine/SlidesHandler.js +36 -0
- package/carousel/engine/SlidesInView.d.ts +8 -0
- package/carousel/engine/SlidesInView.js +59 -0
- package/carousel/engine/SlidesToScroll.d.ts +7 -0
- package/carousel/engine/SlidesToScroll.js +41 -0
- package/carousel/engine/Translate.d.ts +7 -0
- package/carousel/engine/Translate.js +38 -0
- package/carousel/engine/index.d.ts +11 -0
- package/carousel/engine/index.js +1 -0
- package/carousel/engine/utils.d.ts +15 -0
- package/carousel/engine/utils.js +45 -0
- package/carousel/index.d.ts +202 -0
- package/carousel/index.jsx +469 -0
- package/carousel/plugins/auto-height/AutoHeight.d.ts +14 -0
- package/carousel/plugins/auto-height/AutoHeight.js +43 -0
- package/carousel/plugins/auto-height/Options.d.ts +2 -0
- package/carousel/plugins/auto-height/Options.js +1 -0
- package/carousel/plugins/auto-height/index.d.ts +2 -0
- package/carousel/plugins/auto-height/index.js +1 -0
- package/carousel/plugins/auto-scroll/AutoScroll.d.ts +25 -0
- package/carousel/plugins/auto-scroll/AutoScroll.js +185 -0
- package/carousel/plugins/auto-scroll/Options.d.ts +13 -0
- package/carousel/plugins/auto-scroll/Options.js +12 -0
- package/carousel/plugins/auto-scroll/index.d.ts +2 -0
- package/carousel/plugins/auto-scroll/index.js +1 -0
- package/carousel/plugins/auto-scroll/utils.d.ts +3 -0
- package/carousel/plugins/auto-scroll/utils.js +4 -0
- package/carousel/plugins/autoplay/Autoplay.d.ts +29 -0
- package/carousel/plugins/autoplay/Autoplay.js +173 -0
- package/carousel/plugins/autoplay/Options.d.ts +14 -0
- package/carousel/plugins/autoplay/Options.js +12 -0
- package/carousel/plugins/autoplay/index.d.ts +2 -0
- package/carousel/plugins/autoplay/index.js +1 -0
- package/carousel/plugins/autoplay/utils.d.ts +4 -0
- package/carousel/plugins/autoplay/utils.js +11 -0
- package/carousel/plugins/class-names/ClassNames.d.ts +14 -0
- package/carousel/plugins/class-names/ClassNames.js +98 -0
- package/carousel/plugins/class-names/Options.d.ts +13 -0
- package/carousel/plugins/class-names/Options.js +9 -0
- package/carousel/plugins/class-names/index.d.ts +2 -0
- package/carousel/plugins/class-names/index.js +1 -0
- package/carousel/plugins/class-names/utils.d.ts +4 -0
- package/carousel/plugins/class-names/utils.js +14 -0
- package/carousel/plugins/fade/Fade.d.ts +14 -0
- package/carousel/plugins/fade/Fade.js +199 -0
- package/carousel/plugins/fade/Options.d.ts +2 -0
- package/carousel/plugins/fade/Options.js +1 -0
- package/carousel/plugins/fade/index.d.ts +2 -0
- package/carousel/plugins/fade/index.js +1 -0
- package/carousel/plugins/fade/utils.d.ts +2 -0
- package/carousel/plugins/fade/utils.js +8 -0
- package/carousel/state.d.ts +81 -0
- package/carousel/state.js +71 -0
- package/chat/index.d.ts +83 -0
- package/chat/index.jsx +287 -0
- package/checkbox/behaviour.d.ts +172 -0
- package/checkbox/behaviour.jsx +412 -0
- package/checkbox/index.d.ts +168 -0
- package/checkbox/index.jsx +310 -0
- package/clipboard/index.d.ts +49 -0
- package/clipboard/index.js +136 -0
- package/coercion/index.d.ts +36 -0
- package/coercion/index.js +58 -0
- package/collections/base.d.ts +115 -0
- package/collections/base.js +346 -0
- package/collections/builder.d.ts +44 -0
- package/collections/builder.js +283 -0
- package/collections/components.d.ts +217 -0
- package/collections/components.jsx +537 -0
- package/collections/data-source.d.ts +26 -0
- package/collections/data-source.js +27 -0
- package/collections/dom.d.ts +34 -0
- package/collections/dom.js +127 -0
- package/collections/grid.d.ts +45 -0
- package/collections/grid.js +125 -0
- package/collections/hidden.d.ts +4 -0
- package/collections/hidden.js +12 -0
- package/collections/index.d.ts +45 -0
- package/collections/index.js +105 -0
- package/collections/list-state.d.ts +99 -0
- package/collections/list-state.js +156 -0
- package/collections/list.d.ts +20 -0
- package/collections/list.js +77 -0
- package/collections/nodes.d.ts +9 -0
- package/collections/nodes.js +81 -0
- package/collections/selection-model.d.ts +93 -0
- package/collections/selection-model.js +192 -0
- package/collections/server-dev.d.ts +5 -0
- package/collections/server-dev.js +16 -0
- package/collections/server-off.d.ts +5 -0
- package/collections/server-off.js +7 -0
- package/collections/server-on.d.ts +28 -0
- package/collections/server-on.jsx +76 -0
- package/collections/table.d.ts +114 -0
- package/collections/table.js +439 -0
- package/collections/tree-state.d.ts +47 -0
- package/collections/tree-state.js +73 -0
- package/collections/tree.d.ts +20 -0
- package/collections/tree.js +66 -0
- package/collections/types.d.ts +229 -0
- package/collections/types.js +4 -0
- package/collections/unique-selection-dispatcher.d.ts +10 -0
- package/collections/unique-selection-dispatcher.js +25 -0
- package/color/area-state.d.ts +99 -0
- package/color/area-state.js +160 -0
- package/color/aria-intl.d.ts +3 -0
- package/color/aria-intl.js +274 -0
- package/color/channel-field-state.d.ts +50 -0
- package/color/channel-field-state.jsx +87 -0
- package/color/color.d.ts +78 -0
- package/color/color.js +738 -0
- package/color/field-state.d.ts +66 -0
- package/color/field-state.jsx +159 -0
- package/color/index.d.ts +58 -0
- package/color/index.js +88 -0
- package/color/intl.d.ts +3 -0
- package/color/intl.js +1328 -0
- package/color/picker-state.d.ts +20 -0
- package/color/picker-state.js +19 -0
- package/color/slider-state.d.ts +78 -0
- package/color/slider-state.jsx +98 -0
- package/color/value.d.ts +27 -0
- package/color/value.js +36 -0
- package/color/wheel-state.d.ts +77 -0
- package/color/wheel-state.js +152 -0
- package/color-area/behaviour.d.ts +161 -0
- package/color-area/behaviour.jsx +454 -0
- package/color-area/index.d.ts +34 -0
- package/color-area/index.jsx +187 -0
- package/color-field/behaviour.d.ts +112 -0
- package/color-field/behaviour.jsx +262 -0
- package/color-field/index.d.ts +72 -0
- package/color-field/index.jsx +309 -0
- package/color-picker/index.d.ts +19 -0
- package/color-picker/index.jsx +49 -0
- package/color-slider/behaviour.d.ts +103 -0
- package/color-slider/behaviour.jsx +234 -0
- package/color-slider/index.d.ts +40 -0
- package/color-slider/index.jsx +162 -0
- package/color-swatch/behaviour.d.ts +40 -0
- package/color-swatch/behaviour.js +36 -0
- package/color-swatch/index.d.ts +29 -0
- package/color-swatch/index.jsx +82 -0
- package/color-swatch-picker/index.d.ts +62 -0
- package/color-swatch-picker/index.jsx +95 -0
- package/color-swatch-picker/intl.d.ts +3 -0
- package/color-swatch-picker/intl.js +104 -0
- package/color-thumb/index.d.ts +85 -0
- package/color-thumb/index.jsx +93 -0
- package/color-wheel/behaviour.d.ts +123 -0
- package/color-wheel/behaviour.jsx +301 -0
- package/color-wheel/index.d.ts +50 -0
- package/color-wheel/index.jsx +166 -0
- package/combobox/behaviour.d.ts +120 -0
- package/combobox/behaviour.jsx +588 -0
- package/combobox/index.d.ts +101 -0
- package/combobox/index.jsx +365 -0
- package/combobox/intl.d.ts +2 -0
- package/combobox/intl.js +240 -0
- package/compare/behaviour.d.ts +101 -0
- package/compare/behaviour.js +288 -0
- package/compare/index.d.ts +58 -0
- package/compare/index.jsx +129 -0
- package/data/async-list.d.ts +78 -0
- package/data/async-list.jsx +257 -0
- package/data/index.d.ts +3 -0
- package/data/index.jsx +6 -0
- package/data/list-data.d.ts +88 -0
- package/data/list-data.jsx +210 -0
- package/data/tree-data.d.ts +59 -0
- package/data/tree-data.jsx +278 -0
- package/data-grid/behaviour.d.ts +95 -0
- package/data-grid/behaviour.js +725 -0
- package/data-grid/index.d.ts +138 -0
- package/data-grid/index.jsx +452 -0
- package/data-grid/state.d.ts +131 -0
- package/data-grid/state.js +288 -0
- package/date/CalendarDate.d.ts +207 -0
- package/date/CalendarDate.js +374 -0
- package/date/DateFormatter.d.ts +24 -0
- package/date/DateFormatter.js +175 -0
- package/date/calendars/BuddhistCalendar.d.ts +16 -0
- package/date/calendars/BuddhistCalendar.js +46 -0
- package/date/calendars/EthiopicCalendar.d.ts +45 -0
- package/date/calendars/EthiopicCalendar.js +178 -0
- package/date/calendars/GregorianCalendar.d.ts +26 -0
- package/date/calendars/GregorianCalendar.js +122 -0
- package/date/calendars/HebrewCalendar.d.ts +21 -0
- package/date/calendars/HebrewCalendar.js +174 -0
- package/date/calendars/IndianCalendar.d.ts +17 -0
- package/date/calendars/IndianCalendar.js +111 -0
- package/date/calendars/IslamicCalendar.d.ts +51 -0
- package/date/calendars/IslamicCalendar.js +205 -0
- package/date/calendars/JapaneseCalendar.d.ts +22 -0
- package/date/calendars/JapaneseCalendar.js +148 -0
- package/date/calendars/PersianCalendar.d.ts +19 -0
- package/date/calendars/PersianCalendar.js +85 -0
- package/date/calendars/TaiwanCalendar.d.ts +19 -0
- package/date/calendars/TaiwanCalendar.js +70 -0
- package/date/conversion.d.ts +45 -0
- package/date/conversion.js +269 -0
- package/date/createCalendar.d.ts +3 -0
- package/date/createCalendar.js +55 -0
- package/date/index.d.ts +20 -0
- package/date/index.js +30 -0
- package/date/manipulation.d.ts +25 -0
- package/date/manipulation.js +399 -0
- package/date/queries.d.ts +93 -0
- package/date/queries.js +303 -0
- package/date/serialize.d.ts +18 -0
- package/date/serialize.js +55 -0
- package/date/string.d.ts +36 -0
- package/date/string.js +223 -0
- package/date/types.d.ts +136 -0
- package/date/types.js +14 -0
- package/date/utils.d.ts +4 -0
- package/date/utils.js +16 -0
- package/date/weekStartData.d.ts +1 -0
- package/date/weekStartData.js +112 -0
- package/date-field/behaviour.d.ts +188 -0
- package/date-field/behaviour.jsx +1025 -0
- package/date-field/index.d.ts +150 -0
- package/date-field/index.jsx +354 -0
- package/date-field/intl.d.ts +3 -0
- package/date-field/intl.js +36 -0
- package/date-field/live-value.d.ts +22 -0
- package/date-field/live-value.jsx +44 -0
- package/date-picker/behaviour.d.ts +95 -0
- package/date-picker/behaviour.jsx +343 -0
- package/date-picker/index.d.ts +66 -0
- package/date-picker/index.jsx +243 -0
- package/dialog/behaviour.d.ts +63 -0
- package/dialog/behaviour.jsx +90 -0
- package/dialog/contexts.d.ts +12 -0
- package/dialog/contexts.js +8 -0
- package/dialog/index.d.ts +48 -0
- package/dialog/index.jsx +301 -0
- package/disclosure/behaviour.d.ts +50 -0
- package/disclosure/behaviour.jsx +128 -0
- package/disclosure/details.d.ts +21 -0
- package/disclosure/details.jsx +14 -0
- package/disclosure/index.d.ts +92 -0
- package/disclosure/index.jsx +300 -0
- package/drag-drop/cdk-index.d.ts +22 -0
- package/drag-drop/cdk-index.jsx +25 -0
- package/drag-drop/directives/assertions.d.ts +6 -0
- package/drag-drop/directives/assertions.js +13 -0
- package/drag-drop/directives/config.d.ts +30 -0
- package/drag-drop/directives/config.js +7 -0
- package/drag-drop/directives/drag-handle.d.ts +10 -0
- package/drag-drop/directives/drag-handle.js +29 -0
- package/drag-drop/directives/drag.d.ts +194 -0
- package/drag-drop/directives/drag.js +522 -0
- package/drag-drop/directives/drop-list-group.d.ts +25 -0
- package/drag-drop/directives/drop-list-group.js +55 -0
- package/drag-drop/directives/drop-list.d.ts +163 -0
- package/drag-drop/directives/drop-list.js +396 -0
- package/drag-drop/directives/registry.d.ts +32 -0
- package/drag-drop/directives/registry.js +61 -0
- package/drag-drop/dom/clone-node.d.ts +2 -0
- package/drag-drop/dom/clone-node.js +58 -0
- package/drag-drop/dom/coerce.d.ts +6 -0
- package/drag-drop/dom/coerce.js +8 -0
- package/drag-drop/dom/dom-rect.d.ts +37 -0
- package/drag-drop/dom/dom-rect.js +71 -0
- package/drag-drop/dom/fake-event.d.ts +4 -0
- package/drag-drop/dom/fake-event.js +22 -0
- package/drag-drop/dom/inherited-text.d.ts +4 -0
- package/drag-drop/dom/inherited-text.js +44 -0
- package/drag-drop/dom/layout-shift.d.ts +8 -0
- package/drag-drop/dom/layout-shift.js +87 -0
- package/drag-drop/dom/mount-content.d.ts +2 -0
- package/drag-drop/dom/mount-content.js +7 -0
- package/drag-drop/dom/parent-position-tracker.d.ts +32 -0
- package/drag-drop/dom/parent-position-tracker.js +71 -0
- package/drag-drop/dom/root-node.d.ts +21 -0
- package/drag-drop/dom/root-node.js +41 -0
- package/drag-drop/dom/shadow-dom.d.ts +4 -0
- package/drag-drop/dom/shadow-dom.js +18 -0
- package/drag-drop/dom/styling.d.ts +52 -0
- package/drag-drop/dom/styling.js +86 -0
- package/drag-drop/dom/transition-duration.d.ts +2 -0
- package/drag-drop/dom/transition-duration.js +29 -0
- package/drag-drop/drag-drop-registry.d.ts +69 -0
- package/drag-drop/drag-drop-registry.js +224 -0
- package/drag-drop/drag-drop.d.ts +19 -0
- package/drag-drop/drag-drop.js +10 -0
- package/drag-drop/drag-events.d.ts +117 -0
- package/drag-drop/drag-events.js +1 -0
- package/drag-drop/drag-handle.d.ts +18 -0
- package/drag-drop/drag-handle.jsx +53 -0
- package/drag-drop/drag-placeholder.d.ts +8 -0
- package/drag-drop/drag-placeholder.jsx +25 -0
- package/drag-drop/drag-preview.d.ts +10 -0
- package/drag-drop/drag-preview.jsx +31 -0
- package/drag-drop/drag-ref.d.ts +476 -0
- package/drag-drop/drag-ref.js +1306 -0
- package/drag-drop/drag-utils.d.ts +25 -0
- package/drag-drop/drag-utils.js +53 -0
- package/drag-drop/drag.d.ts +23 -0
- package/drag-drop/drag.jsx +126 -0
- package/drag-drop/drop-list-group.d.ts +22 -0
- package/drag-drop/drop-list-group.jsx +19 -0
- package/drag-drop/drop-list-ref.d.ts +295 -0
- package/drag-drop/drop-list-ref.js +707 -0
- package/drag-drop/drop-list.d.ts +19 -0
- package/drag-drop/drop-list.jsx +87 -0
- package/drag-drop/index.d.ts +1 -0
- package/drag-drop/index.jsx +4 -0
- package/drag-drop/lazy-refs.d.ts +28 -0
- package/drag-drop/lazy-refs.js +133 -0
- package/drag-drop/preview-ref.d.ts +38 -0
- package/drag-drop/preview-ref.js +132 -0
- package/drag-drop/sorting/drop-list-sort-strategy.d.ts +29 -0
- package/drag-drop/sorting/drop-list-sort-strategy.js +1 -0
- package/drag-drop/sorting/mixed-sort-strategy.d.ts +99 -0
- package/drag-drop/sorting/mixed-sort-strategy.js +259 -0
- package/drag-drop/sorting/single-axis-sort-strategy.d.ts +112 -0
- package/drag-drop/sorting/single-axis-sort-strategy.js +343 -0
- package/file-trigger/index.d.ts +24 -0
- package/file-trigger/index.jsx +41 -0
- package/flip/index.d.ts +59 -0
- package/flip/index.js +124 -0
- package/focus/focus-ring.d.ts +42 -0
- package/focus/focus-ring.jsx +77 -0
- package/focus/focus-scope.d.ts +51 -0
- package/focus/focus-scope.jsx +431 -0
- package/focus/focusable.d.ts +33 -0
- package/focus/focusable.jsx +93 -0
- package/focus/index.d.ts +74 -0
- package/focus/index.js +274 -0
- package/form/behaviour.d.ts +29 -0
- package/form/behaviour.js +145 -0
- package/form/field-error.d.ts +38 -0
- package/form/field-error.jsx +67 -0
- package/form/index.d.ts +77 -0
- package/form/index.jsx +116 -0
- package/grid/behaviour.d.ts +290 -0
- package/grid/behaviour.js +683 -0
- package/grid/intl.d.ts +2 -0
- package/grid/intl.js +36 -0
- package/grid/keyboard-delegate.d.ts +56 -0
- package/grid/keyboard-delegate.js +316 -0
- package/grid-list/behaviour.d.ts +242 -0
- package/grid-list/behaviour.js +598 -0
- package/grid-list/index.d.ts +202 -0
- package/grid-list/index.jsx +685 -0
- package/grid-list/row.d.ts +24 -0
- package/grid-list/row.js +57 -0
- package/group/index.d.ts +48 -0
- package/group/index.jsx +126 -0
- package/header/index.d.ts +13 -0
- package/header/index.jsx +34 -0
- package/heading/index.d.ts +19 -0
- package/heading/index.jsx +55 -0
- package/highlight/index.d.ts +12 -0
- package/highlight/index.jsx +357 -0
- package/i18n/filter.d.ts +16 -0
- package/i18n/filter.js +66 -0
- package/i18n/i18n-provider.d.ts +10 -0
- package/i18n/i18n-provider.jsx +15 -0
- package/i18n/index.d.ts +27 -0
- package/i18n/index.js +115 -0
- package/i18n/intl-cache.d.ts +4 -0
- package/i18n/intl-cache.js +40 -0
- package/i18n/list-formatter.d.ts +2 -0
- package/i18n/list-formatter.js +11 -0
- package/input/index.d.ts +51 -0
- package/input/index.jsx +95 -0
- package/interactions/controllable.d.ts +42 -0
- package/interactions/controllable.js +67 -0
- package/interactions/focus-visible.d.ts +68 -0
- package/interactions/focus-visible.jsx +291 -0
- package/interactions/focus.d.ts +58 -0
- package/interactions/focus.jsx +152 -0
- package/interactions/hover.d.ts +54 -0
- package/interactions/hover.jsx +139 -0
- package/interactions/index.d.ts +1 -0
- package/interactions/index.js +3 -0
- package/interactions/interact-outside.d.ts +24 -0
- package/interactions/interact-outside.jsx +57 -0
- package/interactions/keyboard.d.ts +28 -0
- package/interactions/keyboard.jsx +51 -0
- package/interactions/long-press.d.ts +41 -0
- package/interactions/long-press.jsx +79 -0
- package/interactions/merge-props.d.ts +54 -0
- package/interactions/merge-props.jsx +257 -0
- package/interactions/move.d.ts +48 -0
- package/interactions/move.jsx +96 -0
- package/interactions/press.d.ts +129 -0
- package/interactions/press.jsx +538 -0
- package/interactions/pressable.d.ts +22 -0
- package/interactions/pressable.jsx +93 -0
- package/interactions/scroll-wheel.d.ts +20 -0
- package/interactions/scroll-wheel.jsx +40 -0
- package/interactions/utils.d.ts +53 -0
- package/interactions/utils.js +252 -0
- package/keyboard/index.d.ts +12 -0
- package/keyboard/index.jsx +34 -0
- package/keys/index.d.ts +68 -0
- package/keys/index.js +199 -0
- package/label/behaviour.d.ts +54 -0
- package/label/behaviour.js +60 -0
- package/label/index.d.ts +35 -0
- package/label/index.jsx +85 -0
- package/landmark/index.d.ts +10 -0
- package/landmark/index.jsx +35 -0
- package/landmark/manager.d.ts +50 -0
- package/landmark/manager.js +364 -0
- package/layout/index.d.ts +90 -0
- package/layout/index.js +207 -0
- package/lightbox/behaviour.d.ts +82 -0
- package/lightbox/behaviour.js +490 -0
- package/lightbox/captions/index.d.ts +39 -0
- package/lightbox/captions/index.jsx +44 -0
- package/lightbox/counter/index.d.ts +10 -0
- package/lightbox/counter/index.jsx +10 -0
- package/lightbox/download/index.d.ts +32 -0
- package/lightbox/download/index.jsx +89 -0
- package/lightbox/embed/index.d.ts +15 -0
- package/lightbox/embed/index.jsx +58 -0
- package/lightbox/fullscreen/index.d.ts +24 -0
- package/lightbox/fullscreen/index.jsx +80 -0
- package/lightbox/index.d.ts +129 -0
- package/lightbox/index.jsx +284 -0
- package/lightbox/inline/index.d.ts +18 -0
- package/lightbox/inline/index.jsx +15 -0
- package/lightbox/pdf/index.d.ts +18 -0
- package/lightbox/pdf/index.jsx +31 -0
- package/lightbox/share/index.d.ts +29 -0
- package/lightbox/share/index.jsx +43 -0
- package/lightbox/slideshow/index.d.ts +24 -0
- package/lightbox/slideshow/index.jsx +118 -0
- package/lightbox/state.d.ts +334 -0
- package/lightbox/state.js +192 -0
- package/lightbox/thumbnails/index.d.ts +54 -0
- package/lightbox/thumbnails/index.jsx +96 -0
- package/lightbox/video/index.d.ts +13 -0
- package/lightbox/video/index.jsx +42 -0
- package/lightbox/zoom/index.d.ts +67 -0
- package/lightbox/zoom/index.jsx +456 -0
- package/link/behaviour.d.ts +41 -0
- package/link/behaviour.js +58 -0
- package/link/index.d.ts +30 -0
- package/link/index.jsx +179 -0
- package/link/router.d.ts +1 -0
- package/link/router.js +5 -0
- package/listbox/behaviour.d.ts +175 -0
- package/listbox/behaviour.jsx +492 -0
- package/listbox/index.d.ts +129 -0
- package/listbox/index.jsx +596 -0
- package/markdown/index.d.ts +82 -0
- package/markdown/index.jsx +654 -0
- package/masonry/behaviour.d.ts +121 -0
- package/masonry/behaviour.js +676 -0
- package/masonry/flip.d.ts +27 -0
- package/masonry/flip.js +61 -0
- package/masonry/geometry.d.ts +44 -0
- package/masonry/geometry.js +184 -0
- package/masonry/index.d.ts +153 -0
- package/masonry/index.jsx +833 -0
- package/masonry/justified.d.ts +49 -0
- package/masonry/justified.js +250 -0
- package/masonry/layout.d.ts +200 -0
- package/masonry/layout.js +668 -0
- package/masonry/masonry-layout.d.ts +57 -0
- package/masonry/masonry-layout.js +159 -0
- package/masonry/masonry.css +29 -0
- package/menu/behaviour.d.ts +205 -0
- package/menu/behaviour.jsx +847 -0
- package/menu/index.d.ts +171 -0
- package/menu/index.jsx +671 -0
- package/menu/intl.d.ts +2 -0
- package/menu/intl.js +36 -0
- package/menu/safely-mouse-to-submenu.d.ts +12 -0
- package/menu/safely-mouse-to-submenu.js +128 -0
- package/meter/behaviour.d.ts +18 -0
- package/meter/behaviour.jsx +17 -0
- package/meter/index.d.ts +30 -0
- package/meter/index.jsx +85 -0
- package/modal/index.d.ts +79 -0
- package/modal/index.jsx +359 -0
- package/modal/provider.d.ts +47 -0
- package/modal/provider.jsx +105 -0
- package/morph/index.d.ts +91 -0
- package/morph/index.jsx +372 -0
- package/morph/item.d.ts +89 -0
- package/morph/item.jsx +546 -0
- package/motion/Animations.d.ts +17 -0
- package/motion/Animations.js +56 -0
- package/motion/DragRelease.d.ts +22 -0
- package/motion/DragRelease.js +26 -0
- package/motion/DragTracker.d.ts +7 -0
- package/motion/DragTracker.js +43 -0
- package/motion/Limit.d.ts +12 -0
- package/motion/Limit.js +37 -0
- package/motion/Motion1D.d.ts +38 -0
- package/motion/Motion1D.js +72 -0
- package/motion/ScrollBody.d.ts +13 -0
- package/motion/ScrollBody.js +75 -0
- package/motion/Vector1d.d.ts +8 -0
- package/motion/Vector1d.js +29 -0
- package/motion/index.d.ts +8 -0
- package/motion/index.js +12 -0
- package/motion/utils.d.ts +5 -0
- package/motion/utils.js +23 -0
- package/native-select/index.d.ts +46 -0
- package/native-select/index.jsx +99 -0
- package/navigation-tree/index.d.ts +43 -0
- package/navigation-tree/index.jsx +110 -0
- package/number/NumberFormatter.d.ts +28 -0
- package/number/NumberFormatter.js +144 -0
- package/number/NumberParser.d.ts +27 -0
- package/number/NumberParser.js +316 -0
- package/number/index.d.ts +5 -0
- package/number/index.jsx +17 -0
- package/number/number-field-state.d.ts +132 -0
- package/number/number-field-state.jsx +364 -0
- package/number-field/behaviour.d.ts +165 -0
- package/number-field/behaviour.jsx +512 -0
- package/number-field/index.d.ts +52 -0
- package/number-field/index.jsx +207 -0
- package/number-field/intl.d.ts +2 -0
- package/number-field/intl.js +36 -0
- package/observers/index.d.ts +70 -0
- package/observers/index.js +279 -0
- package/overflow/index.d.ts +93 -0
- package/overflow/index.jsx +267 -0
- package/overlay/aria-hide-outside.d.ts +12 -0
- package/overlay/aria-hide-outside.js +141 -0
- package/overlay/close-on-scroll.d.ts +1 -0
- package/overlay/close-on-scroll.js +6 -0
- package/overlay/contexts.d.ts +34 -0
- package/overlay/contexts.js +21 -0
- package/overlay/dismiss-button.d.ts +10 -0
- package/overlay/dismiss-button.jsx +18 -0
- package/overlay/hover-trigger.d.ts +54 -0
- package/overlay/hover-trigger.jsx +221 -0
- package/overlay/index.d.ts +40 -0
- package/overlay/index.js +139 -0
- package/overlay/modal-overlay.d.ts +16 -0
- package/overlay/modal-overlay.js +38 -0
- package/overlay/overlay-strings.d.ts +4 -0
- package/overlay/overlay-strings.js +52 -0
- package/overlay/overlay-trigger-state.d.ts +1 -0
- package/overlay/overlay-trigger-state.js +3 -0
- package/overlay/overlay-trigger.d.ts +27 -0
- package/overlay/overlay-trigger.jsx +50 -0
- package/overlay/position.d.ts +160 -0
- package/overlay/position.js +559 -0
- package/overlay/prevent-scroll-ios.d.ts +17 -0
- package/overlay/prevent-scroll-ios.js +331 -0
- package/overlay/prevent-scroll.d.ts +18 -0
- package/overlay/prevent-scroll.js +122 -0
- package/overlay/safe-area.d.ts +28 -0
- package/overlay/safe-area.js +108 -0
- package/overlay-arrow/index.d.ts +23 -0
- package/overlay-arrow/index.jsx +59 -0
- package/overlay-service/connected-position.d.ts +163 -0
- package/overlay-service/connected-position.js +661 -0
- package/overlay-service/global-position.d.ts +34 -0
- package/overlay-service/global-position.js +154 -0
- package/overlay-service/index.d.ts +15 -0
- package/overlay-service/index.js +27 -0
- package/overlay-service/overlay-container.d.ts +27 -0
- package/overlay-service/overlay-container.js +93 -0
- package/overlay-service/overlay-dispatchers.d.ts +44 -0
- package/overlay-service/overlay-dispatchers.js +149 -0
- package/overlay-service/overlay-position-builder.d.ts +8 -0
- package/overlay-service/overlay-position-builder.js +15 -0
- package/overlay-service/overlay-ref.d.ts +155 -0
- package/overlay-service/overlay-ref.js +436 -0
- package/overlay-service/overlay-strategy.d.ts +48 -0
- package/overlay-service/overlay-strategy.js +3 -0
- package/overlay-service/overlay-viewport.d.ts +85 -0
- package/overlay-service/overlay-viewport.js +192 -0
- package/overlay-service/overlay.css +94 -0
- package/overlay-service/scroll-strategies.d.ts +71 -0
- package/overlay-service/scroll-strategies.js +185 -0
- package/package.json +754 -4
- package/platform/index.d.ts +100 -0
- package/platform/index.js +304 -0
- package/popover/behaviour.d.ts +23 -0
- package/popover/behaviour.js +39 -0
- package/popover/index.d.ts +60 -0
- package/popover/index.jsx +285 -0
- package/popover/popover-overlay.d.ts +27 -0
- package/popover/popover-overlay.jsx +60 -0
- package/popover/use-popover.d.ts +57 -0
- package/popover/use-popover.js +92 -0
- package/portal/index.d.ts +47 -0
- package/portal/index.jsx +76 -0
- package/portal/portal-mount.d.ts +8 -0
- package/portal/portal-mount.js +7 -0
- package/portal/portal-outlet.d.ts +88 -0
- package/portal/portal-outlet.js +222 -0
- package/preview-trigger/behaviour.d.ts +70 -0
- package/preview-trigger/behaviour.jsx +258 -0
- package/preview-trigger/index.d.ts +12 -0
- package/preview-trigger/index.jsx +82 -0
- package/progress-bar/behaviour.d.ts +77 -0
- package/progress-bar/behaviour.jsx +75 -0
- package/progress-bar/context.d.ts +4 -0
- package/progress-bar/context.js +7 -0
- package/progress-bar/index.d.ts +38 -0
- package/progress-bar/index.jsx +90 -0
- package/radio-group/behaviour.d.ts +11 -0
- package/radio-group/behaviour.js +85 -0
- package/radio-group/index.d.ts +82 -0
- package/radio-group/index.jsx +139 -0
- package/radio-group/parts.d.ts +223 -0
- package/radio-group/parts.jsx +425 -0
- package/range-calendar/behaviour.d.ts +2 -0
- package/range-calendar/behaviour.jsx +5 -0
- package/range-calendar/index.d.ts +2 -0
- package/range-calendar/index.jsx +4 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.d.ts +1 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.js +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.d.ts +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.js +19 -0
- package/resizable/engine/components/group/readLegacyLayout.d.ts +16 -0
- package/resizable/engine/components/group/readLegacyLayout.js +48 -0
- package/resizable/engine/components/group/sortByElementOffset.d.ts +4 -0
- package/resizable/engine/components/group/sortByElementOffset.js +28 -0
- package/resizable/engine/components/group/types.d.ts +50 -0
- package/resizable/engine/components/group/types.js +1 -0
- package/resizable/engine/components/panel/types.d.ts +90 -0
- package/resizable/engine/components/panel/types.js +4 -0
- package/resizable/engine/constants.d.ts +15 -0
- package/resizable/engine/constants.js +27 -0
- package/resizable/engine/global/cursor/getCursorStyle.d.ts +7 -0
- package/resizable/engine/global/cursor/getCursorStyle.js +94 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.d.ts +5 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.js +20 -0
- package/resizable/engine/global/cursor/updateCursorStyle.d.ts +1 -0
- package/resizable/engine/global/cursor/updateCursorStyle.js +64 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.d.ts +4 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.js +10 -0
- package/resizable/engine/global/dom/calculateHitRegions.d.ts +13 -0
- package/resizable/engine/global/dom/calculateHitRegions.js +153 -0
- package/resizable/engine/global/dom/calculateItemConstraints.d.ts +2 -0
- package/resizable/engine/global/dom/calculateItemConstraints.js +82 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.js +9 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.js +28 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.js +97 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.js +18 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.js +8 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.js +54 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.js +22 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.js +69 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.js +20 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.js +15 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.js +11 -0
- package/resizable/engine/global/mountAxis.d.ts +2 -0
- package/resizable/engine/global/mountAxis.js +187 -0
- package/resizable/engine/global/mutable-state/axes.d.ts +37 -0
- package/resizable/engine/global/mutable-state/axes.js +52 -0
- package/resizable/engine/global/mutable-state/interactions.d.ts +17 -0
- package/resizable/engine/global/mutable-state/interactions.js +92 -0
- package/resizable/engine/global/mutable-state/types.d.ts +32 -0
- package/resizable/engine/global/mutable-state/types.js +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.js +7 -0
- package/resizable/engine/global/styles/convertRemToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertRemToPixels.js +7 -0
- package/resizable/engine/global/styles/convertVhToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVhToPixels.js +5 -0
- package/resizable/engine/global/styles/convertVwToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVwToPixels.js +5 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.d.ts +2 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.js +29 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.d.ts +5 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.js +38 -0
- package/resizable/engine/global/types.d.ts +120 -0
- package/resizable/engine/global/types.js +1 -0
- package/resizable/engine/global/utils/abortActivePointerResize.d.ts +9 -0
- package/resizable/engine/global/utils/abortActivePointerResize.js +52 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.d.ts +9 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.js +219 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.d.ts +1 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.js +48 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.d.ts +2 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.js +30 -0
- package/resizable/engine/global/utils/calculateResizePreviews.d.ts +3 -0
- package/resizable/engine/global/utils/calculateResizePreviews.js +39 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.d.ts +12 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.js +43 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.d.ts +1 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.js +11 -0
- package/resizable/engine/global/utils/completeActivePointerResize.d.ts +6 -0
- package/resizable/engine/global/utils/completeActivePointerResize.js +49 -0
- package/resizable/engine/global/utils/doRectsIntersect.d.ts +2 -0
- package/resizable/engine/global/utils/doRectsIntersect.js +3 -0
- package/resizable/engine/global/utils/expandHitTarget.d.ts +10 -0
- package/resizable/engine/global/utils/expandHitTarget.js +19 -0
- package/resizable/engine/global/utils/findClosestHitRegion.d.ts +9 -0
- package/resizable/engine/global/utils/findClosestHitRegion.js +35 -0
- package/resizable/engine/global/utils/findClosestRect.d.ts +6 -0
- package/resizable/engine/global/utils/findClosestRect.js +22 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.d.ts +7 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.js +29 -0
- package/resizable/engine/global/utils/findSeparatorAxis.d.ts +21 -0
- package/resizable/engine/global/utils/findSeparatorAxis.js +12 -0
- package/resizable/engine/global/utils/formatLayoutNumber.d.ts +1 -0
- package/resizable/engine/global/utils/formatLayoutNumber.js +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.d.ts +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.js +11 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.d.ts +5 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.js +6 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.d.ts +4 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.js +53 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.d.ts +5 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.js +169 -0
- package/resizable/engine/global/utils/isCoarsePointer.d.ts +4 -0
- package/resizable/engine/global/utils/isCoarsePointer.js +17 -0
- package/resizable/engine/global/utils/isModal.d.ts +1 -0
- package/resizable/engine/global/utils/isModal.js +11 -0
- package/resizable/engine/global/utils/isViableHitTarget.d.ts +5 -0
- package/resizable/engine/global/utils/isViableHitTarget.js +50 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.js +9 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.d.ts +1 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.js +6 -0
- package/resizable/engine/global/utils/layoutsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/layoutsEqual.js +15 -0
- package/resizable/engine/global/utils/normalizeLayout.d.ts +11 -0
- package/resizable/engine/global/utils/normalizeLayout.js +21 -0
- package/resizable/engine/global/utils/notifyItemOnResize.d.ts +2 -0
- package/resizable/engine/global/utils/notifyItemOnResize.js +23 -0
- package/resizable/engine/global/utils/objectsEqual.d.ts +1 -0
- package/resizable/engine/global/utils/objectsEqual.js +14 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.d.ts +7 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.js +53 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.d.ts +15 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.js +25 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.d.ts +18 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.js +119 -0
- package/resizable/engine/global/utils/validateAxisLayout.d.ts +5 -0
- package/resizable/engine/global/utils/validateAxisLayout.js +70 -0
- package/resizable/engine/global/utils/validateItemSize.d.ts +7 -0
- package/resizable/engine/global/utils/validateItemSize.js +31 -0
- package/resizable/engine/global/utils/validateLayoutKeys.d.ts +2 -0
- package/resizable/engine/global/utils/validateLayoutKeys.js +13 -0
- package/resizable/engine/types.d.ts +13 -0
- package/resizable/engine/types.js +1 -0
- package/resizable/engine/utils/EventEmitter.d.ts +11 -0
- package/resizable/engine/utils/EventEmitter.js +60 -0
- package/resizable/engine/utils/assert.d.ts +1 -0
- package/resizable/engine/utils/assert.js +7 -0
- package/resizable/engine/utils/isArrayEqual.d.ts +1 -0
- package/resizable/engine/utils/isArrayEqual.js +15 -0
- package/resizable/engine/utils/isHTMLElement.d.ts +1 -0
- package/resizable/engine/utils/isHTMLElement.js +6 -0
- package/resizable/engine/utils/isShadowRoot.d.ts +1 -0
- package/resizable/engine/utils/isShadowRoot.js +6 -0
- package/resizable/engine/vendor/stacking-order.d.ts +7 -0
- package/resizable/engine/vendor/stacking-order.js +122 -0
- package/resizable/index.d.ts +263 -0
- package/resizable/index.jsx +537 -0
- package/resizable/mount.d.ts +115 -0
- package/resizable/mount.js +540 -0
- package/scheduler/behaviour.d.ts +71 -0
- package/scheduler/behaviour.js +243 -0
- package/scheduler/context.d.ts +100 -0
- package/scheduler/context.jsx +7 -0
- package/scheduler/dates.d.ts +53 -0
- package/scheduler/dates.js +183 -0
- package/scheduler/drag.d.ts +20 -0
- package/scheduler/drag.js +361 -0
- package/scheduler/event.d.ts +26 -0
- package/scheduler/event.jsx +93 -0
- package/scheduler/index.d.ts +57 -0
- package/scheduler/index.jsx +303 -0
- package/scheduler/intl.d.ts +16 -0
- package/scheduler/intl.js +529 -0
- package/scheduler/keys-month.d.ts +7 -0
- package/scheduler/keys-month.js +110 -0
- package/scheduler/keys-time-grid.d.ts +9 -0
- package/scheduler/keys-time-grid.js +115 -0
- package/scheduler/keys.d.ts +103 -0
- package/scheduler/keys.js +527 -0
- package/scheduler/layout-index.d.ts +3 -0
- package/scheduler/layout-index.js +6 -0
- package/scheduler/layout.d.ts +285 -0
- package/scheduler/layout.js +378 -0
- package/scheduler/menus.d.ts +66 -0
- package/scheduler/menus.jsx +88 -0
- package/scheduler/month.d.ts +26 -0
- package/scheduler/month.jsx +215 -0
- package/scheduler/pointer.d.ts +64 -0
- package/scheduler/pointer.js +203 -0
- package/scheduler/select.d.ts +11 -0
- package/scheduler/select.js +64 -0
- package/scheduler/selection.d.ts +34 -0
- package/scheduler/selection.js +39 -0
- package/scheduler/state.d.ts +296 -0
- package/scheduler/state.js +496 -0
- package/scheduler/time-grid-client.d.ts +32 -0
- package/scheduler/time-grid-client.jsx +133 -0
- package/scheduler/time-grid.d.ts +26 -0
- package/scheduler/time-grid.jsx +266 -0
- package/scheduler/time.d.ts +35 -0
- package/scheduler/time.js +56 -0
- package/scheduler/toolbar.d.ts +43 -0
- package/scheduler/toolbar.jsx +38 -0
- package/scroll-area/dom.d.ts +11 -0
- package/scroll-area/dom.js +55 -0
- package/scroll-area/index.d.ts +96 -0
- package/scroll-area/index.jsx +884 -0
- package/scroll-area/presence.d.ts +12 -0
- package/scroll-area/presence.jsx +131 -0
- package/scrolling/auto-size-virtual-scroll.d.ts +53 -0
- package/scrolling/auto-size-virtual-scroll.js +213 -0
- package/scrolling/behaviour.d.ts +3 -0
- package/scrolling/behaviour.js +5 -0
- package/scrolling/emitter.d.ts +34 -0
- package/scrolling/emitter.js +144 -0
- package/scrolling/fixed-size-virtual-scroll.d.ts +28 -0
- package/scrolling/fixed-size-virtual-scroll.js +107 -0
- package/scrolling/index.d.ts +11 -0
- package/scrolling/index.jsx +13 -0
- package/scrolling/rtl.d.ts +16 -0
- package/scrolling/rtl.js +64 -0
- package/scrolling/scroll-dispatcher.d.ts +49 -0
- package/scrolling/scroll-dispatcher.js +107 -0
- package/scrolling/scrollable.d.ts +75 -0
- package/scrolling/scrollable.js +149 -0
- package/scrolling/scrolling.css +11 -0
- package/scrolling/state.d.ts +92 -0
- package/scrolling/state.js +94 -0
- package/scrolling/viewport-ruler.d.ts +47 -0
- package/scrolling/viewport-ruler.js +100 -0
- package/scrolling/viewport.d.ts +54 -0
- package/scrolling/viewport.jsx +105 -0
- package/scrolling/virtual-scroll-strategy.d.ts +41 -0
- package/scrolling/virtual-scroll-strategy.js +2 -0
- package/scrolling/virtual-scroll-viewport.d.ts +95 -0
- package/scrolling/virtual-scroll-viewport.js +370 -0
- package/search-field/behaviour.d.ts +62 -0
- package/search-field/behaviour.jsx +116 -0
- package/search-field/index.d.ts +57 -0
- package/search-field/index.jsx +158 -0
- package/search-field/intl.d.ts +2 -0
- package/search-field/intl.js +36 -0
- package/select/behaviour.d.ts +188 -0
- package/select/behaviour.jsx +445 -0
- package/select/hidden-select.d.ts +44 -0
- package/select/hidden-select.jsx +68 -0
- package/select/index.d.ts +123 -0
- package/select/index.jsx +255 -0
- package/select/intl.d.ts +2 -0
- package/select/intl.js +36 -0
- package/select/parts.d.ts +11 -0
- package/select/parts.jsx +12 -0
- package/select/select-parts.d.ts +73 -0
- package/select/select-parts.jsx +293 -0
- package/select/select-value.d.ts +58 -0
- package/select/select-value.jsx +142 -0
- package/selection/dom-utils.d.ts +25 -0
- package/selection/dom-utils.js +77 -0
- package/selection/keyed.d.ts +19 -0
- package/selection/keyed.js +76 -0
- package/selection/list-keyboard-delegate.d.ts +67 -0
- package/selection/list-keyboard-delegate.js +274 -0
- package/selection/manager.d.ts +112 -0
- package/selection/manager.js +340 -0
- package/selection/selectable-collection.d.ts +123 -0
- package/selection/selectable-collection.js +535 -0
- package/selection/selectable-item.d.ts +128 -0
- package/selection/selectable-item.js +486 -0
- package/selection/selectable-list.d.ts +42 -0
- package/selection/selectable-list.js +34 -0
- package/selection/state.d.ts +96 -0
- package/selection/state.js +131 -0
- package/selection/type-select.d.ts +37 -0
- package/selection/type-select.js +114 -0
- package/selection/utils.d.ts +23 -0
- package/selection/utils.js +38 -0
- package/selection-indicator/context.d.ts +10 -0
- package/selection-indicator/context.js +7 -0
- package/selection-indicator/index.d.ts +20 -0
- package/selection-indicator/index.jsx +25 -0
- package/separator/behaviour.d.ts +17 -0
- package/separator/behaviour.js +17 -0
- package/separator/index.d.ts +23 -0
- package/separator/index.jsx +64 -0
- package/shared-element-transition/index.d.ts +36 -0
- package/shared-element-transition/index.jsx +182 -0
- package/shared-element-transition/transition.d.ts +19 -0
- package/shared-element-transition/transition.jsx +20 -0
- package/sheet-motion/index.d.ts +82 -0
- package/sheet-motion/index.js +386 -0
- package/sidebar/index.d.ts +257 -0
- package/sidebar/index.jsx +624 -0
- package/sidebar/pages.d.ts +71 -0
- package/sidebar/pages.jsx +177 -0
- package/sidebar/resize.d.ts +69 -0
- package/sidebar/resize.js +237 -0
- package/sidebar/sheet-motion.d.ts +15 -0
- package/sidebar/sheet-motion.js +170 -0
- package/sidebar/state.d.ts +126 -0
- package/sidebar/state.js +204 -0
- package/slider/behaviour.d.ts +141 -0
- package/slider/behaviour.jsx +492 -0
- package/slider/index.d.ts +171 -0
- package/slider/index.jsx +392 -0
- package/slider/state.d.ts +203 -0
- package/slider/state.js +377 -0
- package/slots/index.d.ts +248 -0
- package/slots/index.jsx +473 -0
- package/spinbutton/behaviour.d.ts +66 -0
- package/spinbutton/behaviour.jsx +312 -0
- package/spinbutton/intl.d.ts +2 -0
- package/spinbutton/intl.js +36 -0
- package/state/autocomplete.d.ts +26 -0
- package/state/autocomplete.js +32 -0
- package/state/calendar.d.ts +284 -0
- package/state/calendar.js +755 -0
- package/state/checkbox-group.d.ts +67 -0
- package/state/checkbox-group.js +76 -0
- package/state/combobox.d.ts +238 -0
- package/state/combobox.js +708 -0
- package/state/date-field.d.ts +407 -0
- package/state/date-field.js +1117 -0
- package/state/date-intl.d.ts +3 -0
- package/state/date-intl.js +36 -0
- package/state/date-picker.d.ts +144 -0
- package/state/date-picker.js +387 -0
- package/state/disclosure.d.ts +90 -0
- package/state/disclosure.js +148 -0
- package/state/form-validation.d.ts +89 -0
- package/state/form-validation.js +158 -0
- package/state/grid.d.ts +62 -0
- package/state/grid.js +127 -0
- package/state/list.d.ts +58 -0
- package/state/list.js +124 -0
- package/state/menu.d.ts +159 -0
- package/state/menu.js +184 -0
- package/state/overlays.d.ts +35 -0
- package/state/overlays.js +29 -0
- package/state/radio-group.d.ts +58 -0
- package/state/radio-group.js +68 -0
- package/state/search-field.d.ts +20 -0
- package/state/search-field.js +21 -0
- package/state/select.d.ts +150 -0
- package/state/select.js +187 -0
- package/state/selection.d.ts +3 -0
- package/state/selection.js +5 -0
- package/state/table-column-resize.d.ts +58 -0
- package/state/table-column-resize.js +76 -0
- package/state/table.d.ts +81 -0
- package/state/table.js +114 -0
- package/state/tabs.d.ts +85 -0
- package/state/tabs.js +161 -0
- package/state/time-field.d.ts +32 -0
- package/state/time-field.js +34 -0
- package/state/toast.d.ts +80 -0
- package/state/toast.js +146 -0
- package/state/toggle-group.d.ts +70 -0
- package/state/toggle-group.js +110 -0
- package/state/toggle.d.ts +40 -0
- package/state/toggle.js +39 -0
- package/state/tooltip.d.ts +53 -0
- package/state/tooltip.js +153 -0
- package/stepper/index.d.ts +117 -0
- package/stepper/index.jsx +405 -0
- package/stepper/state.d.ts +200 -0
- package/stepper/state.js +325 -0
- package/switch/behaviour.d.ts +12 -0
- package/switch/behaviour.jsx +9 -0
- package/switch/index.d.ts +150 -0
- package/switch/index.jsx +186 -0
- package/table/behaviour.d.ts +181 -0
- package/table/behaviour.js +334 -0
- package/table/collection.d.ts +49 -0
- package/table/collection.js +259 -0
- package/table/column-resize.d.ts +48 -0
- package/table/column-resize.jsx +247 -0
- package/table/index.d.ts +339 -0
- package/table/index.jsx +982 -0
- package/table/intl.d.ts +2 -0
- package/table/intl.js +36 -0
- package/table/keyboard-delegate.d.ts +21 -0
- package/table/keyboard-delegate.js +166 -0
- package/table/rac-intl.d.ts +2 -0
- package/table/rac-intl.js +36 -0
- package/tabs/behaviour.d.ts +49 -0
- package/tabs/behaviour.js +173 -0
- package/tabs/index.d.ts +248 -0
- package/tabs/index.jsx +577 -0
- package/tabs/keyboard-delegate.d.ts +17 -0
- package/tabs/keyboard-delegate.js +64 -0
- package/tag-group/behaviour.d.ts +59 -0
- package/tag-group/behaviour.js +112 -0
- package/tag-group/index.d.ts +138 -0
- package/tag-group/index.jsx +565 -0
- package/tag-group/intl.d.ts +2 -0
- package/tag-group/intl.js +36 -0
- package/tailwind.css +12 -0
- package/tests-components/app/src/routes/index.d.ts +4 -0
- package/tests-components/app/src/routes/index.jsx +7 -0
- package/text/index.d.ts +15 -0
- package/text/index.jsx +61 -0
- package/text-area/index.d.ts +19 -0
- package/text-area/index.jsx +76 -0
- package/text-field/autosize.d.ts +70 -0
- package/text-field/autosize.js +355 -0
- package/text-field/behaviour.d.ts +140 -0
- package/text-field/behaviour.jsx +260 -0
- package/text-field/fields.d.ts +12 -0
- package/text-field/fields.js +20 -0
- package/text-field/index.d.ts +50 -0
- package/text-field/index.jsx +174 -0
- package/text-field/text-field.css +45 -0
- package/theme.css +1006 -0
- package/time-wheels/behaviour.d.ts +29 -0
- package/time-wheels/behaviour.js +156 -0
- package/time-wheels/index.d.ts +27 -0
- package/time-wheels/index.jsx +91 -0
- package/toast/behaviour.d.ts +51 -0
- package/toast/behaviour.jsx +273 -0
- package/toast/index.d.ts +94 -0
- package/toast/index.jsx +256 -0
- package/toast/intl.d.ts +2 -0
- package/toast/intl.js +36 -0
- package/toggle-button/behaviour.d.ts +15 -0
- package/toggle-button/behaviour.js +37 -0
- package/toggle-button/index.d.ts +59 -0
- package/toggle-button/index.jsx +206 -0
- package/toggle-button-group/behaviour.d.ts +19 -0
- package/toggle-button-group/behaviour.jsx +13 -0
- package/toggle-button-group/context.d.ts +7 -0
- package/toggle-button-group/context.js +9 -0
- package/toggle-button-group/index.d.ts +39 -0
- package/toggle-button-group/index.jsx +85 -0
- package/toggle-button-group/item.d.ts +30 -0
- package/toggle-button-group/item.jsx +37 -0
- package/toolbar/behaviour.d.ts +22 -0
- package/toolbar/behaviour.js +89 -0
- package/toolbar/index.d.ts +16 -0
- package/toolbar/index.jsx +67 -0
- package/tooltip/behaviour.d.ts +93 -0
- package/tooltip/behaviour.jsx +299 -0
- package/tooltip/index.d.ts +59 -0
- package/tooltip/index.jsx +193 -0
- package/tree/behaviour.d.ts +51 -0
- package/tree/behaviour.jsx +51 -0
- package/tree/cdk-index.d.ts +2 -0
- package/tree/cdk-index.js +6 -0
- package/tree/collection.d.ts +16 -0
- package/tree/collection.js +138 -0
- package/tree/control.d.ts +125 -0
- package/tree/control.js +166 -0
- package/tree/index.d.ts +154 -0
- package/tree/index.jsx +815 -0
- package/tree/intl.d.ts +2 -0
- package/tree/intl.js +36 -0
- package/tree/navigation-context.d.ts +44 -0
- package/tree/navigation-context.jsx +63 -0
- package/tree/tree-key-manager.d.ts +149 -0
- package/tree/tree-key-manager.js +336 -0
- package/utils/animation.d.ts +32 -0
- package/utils/animation.jsx +236 -0
- package/utils/data-attrs.d.ts +71 -0
- package/utils/data-attrs.jsx +193 -0
- package/utils/dev-off.d.ts +3 -0
- package/utils/dev-off.js +7 -0
- package/utils/dev-on.d.ts +3 -0
- package/utils/dev-on.js +17 -0
- package/utils/dom-props.d.ts +44 -0
- package/utils/dom-props.js +73 -0
- package/utils/dom.d.ts +85 -0
- package/utils/dom.js +402 -0
- package/utils/id.d.ts +23 -0
- package/utils/id.js +100 -0
- package/utils/index.d.ts +57 -0
- package/utils/index.js +257 -0
- package/utils/links.d.ts +87 -0
- package/utils/links.jsx +152 -0
- package/utils/live-element.d.ts +8 -0
- package/utils/live-element.jsx +76 -0
- package/utils/live.d.ts +53 -0
- package/utils/live.jsx +169 -0
- package/utils/load-more-sentinel.d.ts +28 -0
- package/utils/load-more-sentinel.jsx +52 -0
- package/utils/motion-token.d.ts +4 -0
- package/utils/motion-token.js +48 -0
- package/utils/render.d.ts +19 -0
- package/utils/render.js +18 -0
- package/utils/types.d.ts +111 -0
- package/utils/types.js +1 -0
- package/virtualizer/behaviour.d.ts +98 -0
- package/virtualizer/behaviour.js +315 -0
- package/virtualizer/collection.d.ts +103 -0
- package/virtualizer/collection.js +155 -0
- package/virtualizer/dom.d.ts +50 -0
- package/virtualizer/dom.js +233 -0
- package/virtualizer/engine.d.ts +21 -0
- package/virtualizer/engine.js +21 -0
- package/virtualizer/grid-layout.d.ts +50 -0
- package/virtualizer/grid-layout.js +247 -0
- package/virtualizer/index.d.ts +2 -0
- package/virtualizer/index.jsx +4 -0
- package/virtualizer/layout-info.d.ts +33 -0
- package/virtualizer/layout-info.js +54 -0
- package/virtualizer/layout.d.ts +44 -0
- package/virtualizer/layout.js +30 -0
- package/virtualizer/list-layout.d.ts +103 -0
- package/virtualizer/list-layout.js +508 -0
- package/virtualizer/overscan-manager.d.ts +9 -0
- package/virtualizer/overscan-manager.js +32 -0
- package/virtualizer/point.d.ts +13 -0
- package/virtualizer/point.js +23 -0
- package/virtualizer/rect.d.ts +49 -0
- package/virtualizer/rect.js +105 -0
- package/virtualizer/reusable-view.d.ts +29 -0
- package/virtualizer/reusable-view.js +56 -0
- package/virtualizer/scroll-anchor.d.ts +62 -0
- package/virtualizer/scroll-anchor.js +130 -0
- package/virtualizer/size.d.ts +11 -0
- package/virtualizer/size.js +21 -0
- package/virtualizer/state.d.ts +35 -0
- package/virtualizer/state.js +79 -0
- package/virtualizer/table-collection.d.ts +45 -0
- package/virtualizer/table-collection.js +80 -0
- package/virtualizer/table-column-layout.d.ts +44 -0
- package/virtualizer/table-column-layout.js +210 -0
- package/virtualizer/table-layout.d.ts +55 -0
- package/virtualizer/table-layout.js +482 -0
- package/virtualizer/types.d.ts +63 -0
- package/virtualizer/types.js +1 -0
- package/virtualizer/utils.d.ts +2 -0
- package/virtualizer/utils.js +12 -0
- package/virtualizer/virtualizer-core.d.ts +61 -0
- package/virtualizer/virtualizer-core.js +304 -0
- package/virtualizer/virtualizer.d.ts +62 -0
- package/virtualizer/virtualizer.jsx +88 -0
- package/virtualizer/waterfall-layout.d.ts +41 -0
- package/virtualizer/waterfall-layout.js +227 -0
- package/wheel-picker/behaviour.d.ts +94 -0
- package/wheel-picker/behaviour.js +482 -0
- package/wheel-picker/index.d.ts +33 -0
- package/wheel-picker/index.jsx +66 -0
|
@@ -0,0 +1,378 @@
|
|
|
1
|
+
// FocusTrap (tab anchors before / after the region, `cdkFocusRegionStart` / `End` / `cdkFocusInitial`
|
|
2
|
+
// markers), FocusTrapFactory, the CdkTrapFocus directive behaviour, and the configurable focus trap
|
|
3
|
+
// (FocusTrapManager stack + inert strategy that pulls escaped focus back).
|
|
4
|
+
// Ported from Angular CDK a11y focus-trap (angular/components), MIT, © Google LLC.
|
|
5
|
+
//
|
|
6
|
+
// Rivet: no DI / NgZone; constructors take the element (+ optional checker / document). The
|
|
7
|
+
// directive is `CdkTrapFocus` (a class: `attach()` after mount, `destroy()` on unmount); the
|
|
8
|
+
// declarative `<FocusScope contain>` (react-aria) is the component-level alternative. "When ready"
|
|
9
|
+
// waits for the next animation frame (Angular `afterNextRender`). Anchors carry Rivet's visually
|
|
10
|
+
// hidden styles (`hideVisually`) next to the `cdk-visually-hidden` class. Browser only.
|
|
11
|
+
import { hideVisually } from "./index.js";
|
|
12
|
+
import { getInteractivityChecker } from "./interactivity-checker.js";
|
|
13
|
+
function nextRender(fn) {
|
|
14
|
+
if (typeof requestAnimationFrame === "function")
|
|
15
|
+
requestAnimationFrame(() => fn());
|
|
16
|
+
else
|
|
17
|
+
setTimeout(fn);
|
|
18
|
+
}
|
|
19
|
+
/** The focused element, through open shadow roots. */
|
|
20
|
+
export function _getFocusedElementPierceShadowDom() {
|
|
21
|
+
let activeElement = typeof document !== "undefined" && document ? document.activeElement : null;
|
|
22
|
+
while (activeElement && activeElement.shadowRoot) {
|
|
23
|
+
const newActiveElement = activeElement.shadowRoot.activeElement;
|
|
24
|
+
if (newActiveElement === activeElement)
|
|
25
|
+
break;
|
|
26
|
+
activeElement = newActiveElement;
|
|
27
|
+
}
|
|
28
|
+
return activeElement;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Traps Tab focus inside a region: focusable anchors before and after the element wrap focus to the
|
|
32
|
+
* last / first tabbable element. Does not stop programmatic or pointer focus from leaving.
|
|
33
|
+
*/
|
|
34
|
+
export class FocusTrap {
|
|
35
|
+
_startAnchor = null;
|
|
36
|
+
_endAnchor = null;
|
|
37
|
+
_hasAttached = false;
|
|
38
|
+
startAnchorListener = () => {
|
|
39
|
+
const isSuccess = this.focusLastTabbableElement();
|
|
40
|
+
if (!isSuccess && this._checker.isFocusable(this._element))
|
|
41
|
+
this._element.focus();
|
|
42
|
+
};
|
|
43
|
+
endAnchorListener = () => {
|
|
44
|
+
const isSuccess = this.focusFirstTabbableElement();
|
|
45
|
+
if (!isSuccess && this._checker.isFocusable(this._element))
|
|
46
|
+
this._element.focus();
|
|
47
|
+
};
|
|
48
|
+
/** Whether the trap is active (anchors tabbable). */
|
|
49
|
+
get enabled() {
|
|
50
|
+
return this._enabled;
|
|
51
|
+
}
|
|
52
|
+
set enabled(value) {
|
|
53
|
+
this._enabled = value;
|
|
54
|
+
if (this._startAnchor && this._endAnchor) {
|
|
55
|
+
this._toggleAnchorTabIndex(value, this._startAnchor);
|
|
56
|
+
this._toggleAnchorTabIndex(value, this._endAnchor);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
_enabled = true;
|
|
60
|
+
_element;
|
|
61
|
+
_checker;
|
|
62
|
+
_document;
|
|
63
|
+
constructor(element, checker = getInteractivityChecker(), doc = document, deferAnchors = false) {
|
|
64
|
+
this._element = element;
|
|
65
|
+
this._checker = checker;
|
|
66
|
+
this._document = doc;
|
|
67
|
+
if (!deferAnchors)
|
|
68
|
+
this.attachAnchors();
|
|
69
|
+
}
|
|
70
|
+
/** Remove the anchors. */
|
|
71
|
+
destroy() {
|
|
72
|
+
const startAnchor = this._startAnchor;
|
|
73
|
+
const endAnchor = this._endAnchor;
|
|
74
|
+
if (startAnchor) {
|
|
75
|
+
startAnchor.removeEventListener("focus", this.startAnchorListener);
|
|
76
|
+
startAnchor.remove();
|
|
77
|
+
}
|
|
78
|
+
if (endAnchor) {
|
|
79
|
+
endAnchor.removeEventListener("focus", this.endAnchorListener);
|
|
80
|
+
endAnchor.remove();
|
|
81
|
+
}
|
|
82
|
+
this._startAnchor = this._endAnchor = null;
|
|
83
|
+
this._hasAttached = false;
|
|
84
|
+
}
|
|
85
|
+
/** Insert the anchors around the element; false when it has no parent yet. */
|
|
86
|
+
attachAnchors() {
|
|
87
|
+
if (this._hasAttached)
|
|
88
|
+
return true;
|
|
89
|
+
if (!this._startAnchor) {
|
|
90
|
+
this._startAnchor = this._createAnchor();
|
|
91
|
+
this._startAnchor.addEventListener("focus", this.startAnchorListener);
|
|
92
|
+
}
|
|
93
|
+
if (!this._endAnchor) {
|
|
94
|
+
this._endAnchor = this._createAnchor();
|
|
95
|
+
this._endAnchor.addEventListener("focus", this.endAnchorListener);
|
|
96
|
+
}
|
|
97
|
+
if (this._element.parentNode) {
|
|
98
|
+
this._element.parentNode.insertBefore(this._startAnchor, this._element);
|
|
99
|
+
this._element.parentNode.insertBefore(this._endAnchor, this._element.nextSibling);
|
|
100
|
+
this._hasAttached = true;
|
|
101
|
+
}
|
|
102
|
+
return this._hasAttached;
|
|
103
|
+
}
|
|
104
|
+
/** `focusInitialElement` after the next render. */
|
|
105
|
+
focusInitialElementWhenReady(options) {
|
|
106
|
+
return new Promise((resolve) => this._executeOnStable(() => resolve(this.focusInitialElement(options))));
|
|
107
|
+
}
|
|
108
|
+
/** `focusFirstTabbableElement` after the next render. */
|
|
109
|
+
focusFirstTabbableElementWhenReady(options) {
|
|
110
|
+
return new Promise((resolve) => this._executeOnStable(() => resolve(this.focusFirstTabbableElement(options))));
|
|
111
|
+
}
|
|
112
|
+
/** `focusLastTabbableElement` after the next render. */
|
|
113
|
+
focusLastTabbableElementWhenReady(options) {
|
|
114
|
+
return new Promise((resolve) => this._executeOnStable(() => resolve(this.focusLastTabbableElement(options))));
|
|
115
|
+
}
|
|
116
|
+
_getRegionBoundary(bound) {
|
|
117
|
+
// `cdk-focus-region-*` / `cdk-focus-*` are the deprecated spellings; still honoured.
|
|
118
|
+
const markers = this._element.querySelectorAll(`[cdk-focus-region-${bound}], [cdkFocusRegion${bound}], [cdk-focus-${bound}]`);
|
|
119
|
+
if (bound === "start")
|
|
120
|
+
return markers.length ? markers[0] : this._getFirstTabbableElement(this._element);
|
|
121
|
+
return markers.length ? markers[markers.length - 1] : this._getLastTabbableElement(this._element);
|
|
122
|
+
}
|
|
123
|
+
/** Focus the `[cdkFocusInitial]` element (or its first tabbable child), else the first tabbable element. */
|
|
124
|
+
focusInitialElement(options) {
|
|
125
|
+
const redirectToElement = this._element.querySelector(`[cdk-focus-initial], [cdkFocusInitial]`);
|
|
126
|
+
if (redirectToElement) {
|
|
127
|
+
if (!this._checker.isFocusable(redirectToElement)) {
|
|
128
|
+
const focusableChild = this._getFirstTabbableElement(redirectToElement);
|
|
129
|
+
focusableChild?.focus(options);
|
|
130
|
+
return !!focusableChild;
|
|
131
|
+
}
|
|
132
|
+
redirectToElement.focus(options);
|
|
133
|
+
return true;
|
|
134
|
+
}
|
|
135
|
+
return this.focusFirstTabbableElement(options);
|
|
136
|
+
}
|
|
137
|
+
/** Focus the `[cdkFocusRegionStart]` element or the first tabbable element. */
|
|
138
|
+
focusFirstTabbableElement(options) {
|
|
139
|
+
const redirectToElement = this._getRegionBoundary("start");
|
|
140
|
+
if (redirectToElement)
|
|
141
|
+
redirectToElement.focus(options);
|
|
142
|
+
return !!redirectToElement;
|
|
143
|
+
}
|
|
144
|
+
/** Focus the `[cdkFocusRegionEnd]` element or the last tabbable element. */
|
|
145
|
+
focusLastTabbableElement(options) {
|
|
146
|
+
const redirectToElement = this._getRegionBoundary("end");
|
|
147
|
+
if (redirectToElement)
|
|
148
|
+
redirectToElement.focus(options);
|
|
149
|
+
return !!redirectToElement;
|
|
150
|
+
}
|
|
151
|
+
/** Whether the anchors are in the DOM. */
|
|
152
|
+
hasAttached() {
|
|
153
|
+
return this._hasAttached;
|
|
154
|
+
}
|
|
155
|
+
_getFirstTabbableElement(root) {
|
|
156
|
+
if (this._checker.isFocusable(root) && this._checker.isTabbable(root))
|
|
157
|
+
return root;
|
|
158
|
+
const children = root.children;
|
|
159
|
+
for (let i = 0; i < children.length; i++) {
|
|
160
|
+
const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getFirstTabbableElement(children[i]) : null;
|
|
161
|
+
if (tabbableChild)
|
|
162
|
+
return tabbableChild;
|
|
163
|
+
}
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
_getLastTabbableElement(root) {
|
|
167
|
+
if (this._checker.isFocusable(root) && this._checker.isTabbable(root))
|
|
168
|
+
return root;
|
|
169
|
+
const children = root.children;
|
|
170
|
+
for (let i = children.length - 1; i >= 0; i--) {
|
|
171
|
+
const tabbableChild = children[i].nodeType === this._document.ELEMENT_NODE ? this._getLastTabbableElement(children[i]) : null;
|
|
172
|
+
if (tabbableChild)
|
|
173
|
+
return tabbableChild;
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
_createAnchor() {
|
|
178
|
+
const anchor = this._document.createElement("div");
|
|
179
|
+
this._toggleAnchorTabIndex(this._enabled, anchor);
|
|
180
|
+
anchor.classList.add("cdk-visually-hidden", "cdk-focus-trap-anchor");
|
|
181
|
+
hideVisually(anchor);
|
|
182
|
+
anchor.setAttribute("aria-hidden", "true");
|
|
183
|
+
return anchor;
|
|
184
|
+
}
|
|
185
|
+
_toggleAnchorTabIndex(isEnabled, anchor) {
|
|
186
|
+
if (isEnabled)
|
|
187
|
+
anchor.setAttribute("tabindex", "0");
|
|
188
|
+
else
|
|
189
|
+
anchor.removeAttribute("tabindex");
|
|
190
|
+
}
|
|
191
|
+
/** Toggle the anchors' tabindex. */
|
|
192
|
+
toggleAnchors(enabled) {
|
|
193
|
+
if (this._startAnchor && this._endAnchor) {
|
|
194
|
+
this._toggleAnchorTabIndex(enabled, this._startAnchor);
|
|
195
|
+
this._toggleAnchorTabIndex(enabled, this._endAnchor);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
_executeOnStable(fn) {
|
|
199
|
+
nextRender(fn);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
/** Creates FocusTraps. */
|
|
203
|
+
export class FocusTrapFactory {
|
|
204
|
+
_checker;
|
|
205
|
+
_document;
|
|
206
|
+
constructor(checker = getInteractivityChecker(), doc = document) {
|
|
207
|
+
this._checker = checker;
|
|
208
|
+
this._document = doc;
|
|
209
|
+
}
|
|
210
|
+
/** A focus trap for `element`; `deferCaptureElements` defers anchor insertion to `attachAnchors()`. */
|
|
211
|
+
create(element, deferCaptureElements = false) {
|
|
212
|
+
return new FocusTrap(element, this._checker, this._document, deferCaptureElements);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
/**
|
|
216
|
+
* The `cdkTrapFocus` directive: call `attach()` once the element is in the DOM (a client effect)
|
|
217
|
+
* and `destroy()` on unmount.
|
|
218
|
+
*/
|
|
219
|
+
export class CdkTrapFocus {
|
|
220
|
+
focusTrap;
|
|
221
|
+
_previouslyFocusedElement = null;
|
|
222
|
+
_autoCapture;
|
|
223
|
+
constructor(element, options = {}, factory = new FocusTrapFactory()) {
|
|
224
|
+
this.focusTrap = factory.create(element, true);
|
|
225
|
+
this.focusTrap.enabled = options.enabled ?? true;
|
|
226
|
+
this._autoCapture = !!options.autoCapture;
|
|
227
|
+
}
|
|
228
|
+
get enabled() {
|
|
229
|
+
return this.focusTrap?.enabled || false;
|
|
230
|
+
}
|
|
231
|
+
set enabled(value) {
|
|
232
|
+
this.focusTrap.enabled = value;
|
|
233
|
+
}
|
|
234
|
+
get autoCapture() {
|
|
235
|
+
return this._autoCapture;
|
|
236
|
+
}
|
|
237
|
+
set autoCapture(value) {
|
|
238
|
+
const changed = value && !this._autoCapture;
|
|
239
|
+
this._autoCapture = value;
|
|
240
|
+
if (changed && this.focusTrap.hasAttached())
|
|
241
|
+
this._captureFocus();
|
|
242
|
+
}
|
|
243
|
+
/** ngAfterContentInit: attach anchors, auto-capture. */
|
|
244
|
+
attach() {
|
|
245
|
+
this.focusTrap.attachAnchors();
|
|
246
|
+
if (this._autoCapture)
|
|
247
|
+
this._captureFocus();
|
|
248
|
+
}
|
|
249
|
+
/** ngDoCheck: retry anchors when the element had no parent at attach time. */
|
|
250
|
+
check() {
|
|
251
|
+
if (!this.focusTrap.hasAttached())
|
|
252
|
+
this.focusTrap.attachAnchors();
|
|
253
|
+
}
|
|
254
|
+
destroy() {
|
|
255
|
+
this.focusTrap.destroy();
|
|
256
|
+
if (this._previouslyFocusedElement) {
|
|
257
|
+
this._previouslyFocusedElement.focus();
|
|
258
|
+
this._previouslyFocusedElement = null;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
_captureFocus() {
|
|
262
|
+
this._previouslyFocusedElement = _getFocusedElementPierceShadowDom();
|
|
263
|
+
void this.focusTrap.focusInitialElementWhenReady();
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/** Keeps only the most recently registered trap active. */
|
|
267
|
+
export class FocusTrapManager {
|
|
268
|
+
_focusTrapStack = [];
|
|
269
|
+
/** Disable the active trap and activate `focusTrap`. */
|
|
270
|
+
register(focusTrap) {
|
|
271
|
+
// Dedupe when re-enabled.
|
|
272
|
+
this._focusTrapStack = this._focusTrapStack.filter((ft) => ft !== focusTrap);
|
|
273
|
+
const stack = this._focusTrapStack;
|
|
274
|
+
if (stack.length)
|
|
275
|
+
stack[stack.length - 1]._disable();
|
|
276
|
+
stack.push(focusTrap);
|
|
277
|
+
focusTrap._enable();
|
|
278
|
+
}
|
|
279
|
+
/** Disable `focusTrap` and re-activate the previous one. */
|
|
280
|
+
deregister(focusTrap) {
|
|
281
|
+
focusTrap._disable();
|
|
282
|
+
const stack = this._focusTrapStack;
|
|
283
|
+
const i = stack.indexOf(focusTrap);
|
|
284
|
+
if (i !== -1) {
|
|
285
|
+
stack.splice(i, 1);
|
|
286
|
+
if (stack.length)
|
|
287
|
+
stack[stack.length - 1]._enable();
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
/** Pulls focus back into the trap when it moves outside (except into `div.cdk-overlay-pane`). */
|
|
292
|
+
export class EventListenerFocusTrapInertStrategy {
|
|
293
|
+
_listener = null;
|
|
294
|
+
preventFocus(focusTrap) {
|
|
295
|
+
// Only one trap is active at a time.
|
|
296
|
+
if (this._listener)
|
|
297
|
+
focusTrap._document.removeEventListener("focus", this._listener, true);
|
|
298
|
+
this._listener = (e) => this._trapFocus(focusTrap, e);
|
|
299
|
+
focusTrap._document.addEventListener("focus", this._listener, true);
|
|
300
|
+
}
|
|
301
|
+
allowFocus(focusTrap) {
|
|
302
|
+
if (!this._listener)
|
|
303
|
+
return;
|
|
304
|
+
focusTrap._document.removeEventListener("focus", this._listener, true);
|
|
305
|
+
this._listener = null;
|
|
306
|
+
}
|
|
307
|
+
_trapFocus(focusTrap, event) {
|
|
308
|
+
const target = event.target;
|
|
309
|
+
const focusTrapRoot = focusTrap._element;
|
|
310
|
+
// Overlay panes opened from inside the trap may take focus.
|
|
311
|
+
if (target && !focusTrapRoot.contains(target) && !target.closest?.("div.cdk-overlay-pane, [data-rv-top-layer]")) {
|
|
312
|
+
// Let the focus land first: a refocus inside the handler confuses screen readers.
|
|
313
|
+
setTimeout(() => {
|
|
314
|
+
if (focusTrap.enabled && !focusTrapRoot.contains(focusTrap._document.activeElement))
|
|
315
|
+
focusTrap.focusFirstTabbableElement();
|
|
316
|
+
});
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/** A FocusTrap managed by a FocusTrapManager, with an inert strategy for non-Tab focus moves. */
|
|
321
|
+
export class ConfigurableFocusTrap extends FocusTrap {
|
|
322
|
+
_focusTrapManager;
|
|
323
|
+
_inertStrategy;
|
|
324
|
+
get enabled() {
|
|
325
|
+
return this._enabled;
|
|
326
|
+
}
|
|
327
|
+
set enabled(value) {
|
|
328
|
+
this._enabled = value;
|
|
329
|
+
if (this._enabled)
|
|
330
|
+
this._focusTrapManager.register(this);
|
|
331
|
+
else
|
|
332
|
+
this._focusTrapManager.deregister(this);
|
|
333
|
+
}
|
|
334
|
+
constructor(element, checker, doc, focusTrapManager, inertStrategy, config) {
|
|
335
|
+
// Anchors attach after the manager fields are set (fields initialise after super()).
|
|
336
|
+
super(element, checker, doc, true);
|
|
337
|
+
this._focusTrapManager = focusTrapManager;
|
|
338
|
+
this._inertStrategy = inertStrategy;
|
|
339
|
+
if (!config.defer)
|
|
340
|
+
this.attachAnchors();
|
|
341
|
+
this._focusTrapManager.register(this);
|
|
342
|
+
}
|
|
343
|
+
destroy() {
|
|
344
|
+
this._focusTrapManager.deregister(this);
|
|
345
|
+
super.destroy();
|
|
346
|
+
}
|
|
347
|
+
/** @internal */
|
|
348
|
+
_enable() {
|
|
349
|
+
this._inertStrategy.preventFocus(this);
|
|
350
|
+
this.toggleAnchors(true);
|
|
351
|
+
}
|
|
352
|
+
/** @internal */
|
|
353
|
+
_disable() {
|
|
354
|
+
this._inertStrategy.allowFocus(this);
|
|
355
|
+
this.toggleAnchors(false);
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
let sharedManager = null;
|
|
359
|
+
/** The shared FocusTrapManager. */
|
|
360
|
+
export function getFocusTrapManager() {
|
|
361
|
+
return (sharedManager ??= new FocusTrapManager());
|
|
362
|
+
}
|
|
363
|
+
/** Creates ConfigurableFocusTraps (default inert strategy: EventListenerFocusTrapInertStrategy). */
|
|
364
|
+
export class ConfigurableFocusTrapFactory {
|
|
365
|
+
_inertStrategy;
|
|
366
|
+
_checker;
|
|
367
|
+
_focusTrapManager;
|
|
368
|
+
_document;
|
|
369
|
+
constructor(inertStrategy = new EventListenerFocusTrapInertStrategy(), checker = getInteractivityChecker(), focusTrapManager = getFocusTrapManager(), doc = document) {
|
|
370
|
+
this._inertStrategy = inertStrategy;
|
|
371
|
+
this._checker = checker;
|
|
372
|
+
this._focusTrapManager = focusTrapManager;
|
|
373
|
+
this._document = doc;
|
|
374
|
+
}
|
|
375
|
+
create(element, config = { defer: false }) {
|
|
376
|
+
return new ConfigurableFocusTrap(element, this._checker, this._document, this._focusTrapManager, this._inertStrategy, config);
|
|
377
|
+
}
|
|
378
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const HighContrastMode: {
|
|
2
|
+
readonly NONE: 0;
|
|
3
|
+
readonly BLACK_ON_WHITE: 1;
|
|
4
|
+
readonly WHITE_ON_BLACK: 2;
|
|
5
|
+
};
|
|
6
|
+
export type HighContrastMode = (typeof HighContrastMode)[keyof typeof HighContrastMode];
|
|
7
|
+
/** Body class in black-on-white high-contrast mode. */
|
|
8
|
+
export declare const BLACK_ON_WHITE_CSS_CLASS = "cdk-high-contrast-black-on-white";
|
|
9
|
+
/** Body class in white-on-black high-contrast mode. */
|
|
10
|
+
export declare const WHITE_ON_BLACK_CSS_CLASS = "cdk-high-contrast-white-on-black";
|
|
11
|
+
/** Body class in any high-contrast mode. */
|
|
12
|
+
export declare const HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = "cdk-high-contrast-active";
|
|
13
|
+
export declare class HighContrastModeDetector {
|
|
14
|
+
private _hasCheckedHighContrastMode;
|
|
15
|
+
private _document;
|
|
16
|
+
private _cleanup;
|
|
17
|
+
constructor(doc?: Document | null);
|
|
18
|
+
/** The current high-contrast mode, from the coerced color of a test element. */
|
|
19
|
+
getHighContrastMode(): HighContrastMode;
|
|
20
|
+
/** Stop listening for forced-colors changes. */
|
|
21
|
+
destroy(): void;
|
|
22
|
+
/** Apply the high-contrast body classes (once until the mode changes). */
|
|
23
|
+
_applyBodyHighContrastModeCssClasses(): void;
|
|
24
|
+
}
|
|
25
|
+
/** The shared detector (created on first call). */
|
|
26
|
+
export declare function getHighContrastModeDetector(): HighContrastModeDetector;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// HighContrastModeDetector: detect Windows high-contrast (forced colors) mode and its theme by
|
|
2
|
+
// computing a test element's coerced background, and apply `cdk-high-contrast-*` body classes.
|
|
3
|
+
// Ported from Angular CDK a11y high-contrast-mode-detector (angular/components), MIT, © Google LLC.
|
|
4
|
+
//
|
|
5
|
+
// Rivet: BreakpointObserver replaced by a `(forced-colors: active)` matchMedia listener. Browser only;
|
|
6
|
+
// on the server `getHighContrastMode()` returns NONE.
|
|
7
|
+
export const HighContrastMode = { NONE: 0, BLACK_ON_WHITE: 1, WHITE_ON_BLACK: 2 };
|
|
8
|
+
/** Body class in black-on-white high-contrast mode. */
|
|
9
|
+
export const BLACK_ON_WHITE_CSS_CLASS = "cdk-high-contrast-black-on-white";
|
|
10
|
+
/** Body class in white-on-black high-contrast mode. */
|
|
11
|
+
export const WHITE_ON_BLACK_CSS_CLASS = "cdk-high-contrast-white-on-black";
|
|
12
|
+
/** Body class in any high-contrast mode. */
|
|
13
|
+
export const HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS = "cdk-high-contrast-active";
|
|
14
|
+
export class HighContrastModeDetector {
|
|
15
|
+
_hasCheckedHighContrastMode = false;
|
|
16
|
+
_document;
|
|
17
|
+
_cleanup;
|
|
18
|
+
constructor(doc = typeof document === "undefined" ? null : document) {
|
|
19
|
+
this._document = doc;
|
|
20
|
+
const win = doc?.defaultView;
|
|
21
|
+
const query = win?.matchMedia?.("(forced-colors: active)");
|
|
22
|
+
if (query) {
|
|
23
|
+
const onChange = () => {
|
|
24
|
+
if (this._hasCheckedHighContrastMode) {
|
|
25
|
+
this._hasCheckedHighContrastMode = false;
|
|
26
|
+
this._applyBodyHighContrastModeCssClasses();
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
query.addEventListener?.("change", onChange);
|
|
30
|
+
this._cleanup = () => query.removeEventListener?.("change", onChange);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
/** The current high-contrast mode, from the coerced color of a test element. */
|
|
34
|
+
getHighContrastMode() {
|
|
35
|
+
const doc = this._document;
|
|
36
|
+
if (!doc || !doc.body)
|
|
37
|
+
return HighContrastMode.NONE;
|
|
38
|
+
// An arbitrary color that is neither black nor white; high-contrast mode coerces it.
|
|
39
|
+
const testElement = doc.createElement("div");
|
|
40
|
+
testElement.style.backgroundColor = "rgb(1,2,3)";
|
|
41
|
+
testElement.style.position = "absolute";
|
|
42
|
+
doc.body.appendChild(testElement);
|
|
43
|
+
const documentWindow = doc.defaultView || window;
|
|
44
|
+
const computedStyle = documentWindow && documentWindow.getComputedStyle ? documentWindow.getComputedStyle(testElement) : null;
|
|
45
|
+
const computedColor = ((computedStyle && computedStyle.backgroundColor) || "").replace(/ /g, "");
|
|
46
|
+
testElement.remove();
|
|
47
|
+
switch (computedColor) {
|
|
48
|
+
// Pre Windows 11 dark theme; Windows 11 dark themes.
|
|
49
|
+
case "rgb(0,0,0)":
|
|
50
|
+
case "rgb(45,50,54)":
|
|
51
|
+
case "rgb(32,32,32)":
|
|
52
|
+
return HighContrastMode.WHITE_ON_BLACK;
|
|
53
|
+
// Pre Windows 11 light theme; Windows 11 light theme.
|
|
54
|
+
case "rgb(255,255,255)":
|
|
55
|
+
case "rgb(255,250,239)":
|
|
56
|
+
return HighContrastMode.BLACK_ON_WHITE;
|
|
57
|
+
}
|
|
58
|
+
return HighContrastMode.NONE;
|
|
59
|
+
}
|
|
60
|
+
/** Stop listening for forced-colors changes. */
|
|
61
|
+
destroy() {
|
|
62
|
+
this._cleanup?.();
|
|
63
|
+
this._cleanup = undefined;
|
|
64
|
+
}
|
|
65
|
+
/** Apply the high-contrast body classes (once until the mode changes). */
|
|
66
|
+
_applyBodyHighContrastModeCssClasses() {
|
|
67
|
+
const doc = this._document;
|
|
68
|
+
if (!this._hasCheckedHighContrastMode && doc && doc.body) {
|
|
69
|
+
const bodyClasses = doc.body.classList;
|
|
70
|
+
bodyClasses.remove(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);
|
|
71
|
+
this._hasCheckedHighContrastMode = true;
|
|
72
|
+
const mode = this.getHighContrastMode();
|
|
73
|
+
if (mode === HighContrastMode.BLACK_ON_WHITE)
|
|
74
|
+
bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, BLACK_ON_WHITE_CSS_CLASS);
|
|
75
|
+
else if (mode === HighContrastMode.WHITE_ON_BLACK)
|
|
76
|
+
bodyClasses.add(HIGH_CONTRAST_MODE_ACTIVE_CSS_CLASS, WHITE_ON_BLACK_CSS_CLASS);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
let shared = null;
|
|
81
|
+
/** The shared detector (created on first call). */
|
|
82
|
+
export function getHighContrastModeDetector() {
|
|
83
|
+
return (shared ??= new HighContrastModeDetector());
|
|
84
|
+
}
|
package/a11y/index.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Styles of visually hidden but accessible content (react-aria `useVisuallyHidden`): `style={visuallyHidden}`.
|
|
3
|
+
* Inline on purpose: no stylesheet to import, and a class of your own cannot break it. Frozen: the DOM runtime writes a
|
|
4
|
+
* frozen style object on a fresh element as one CSSOM `cssText` (validated once), not ten `setProperty` calls.
|
|
5
|
+
*/
|
|
6
|
+
export declare const visuallyHidden: Readonly<{
|
|
7
|
+
readonly border: "0";
|
|
8
|
+
readonly clip: "rect(0 0 0 0)";
|
|
9
|
+
readonly clipPath: "inset(50%)";
|
|
10
|
+
readonly height: "1px";
|
|
11
|
+
readonly margin: "-1px";
|
|
12
|
+
readonly overflow: "hidden";
|
|
13
|
+
readonly padding: "0";
|
|
14
|
+
readonly position: "absolute";
|
|
15
|
+
readonly width: "1px";
|
|
16
|
+
readonly whiteSpace: "nowrap";
|
|
17
|
+
}>;
|
|
18
|
+
/** Hide `element` visually through the CSSOM (CSP-safe), keeping it for screen readers. */
|
|
19
|
+
export declare function hideVisually(element: HTMLElement): void;
|
|
20
|
+
export type Politeness = "polite" | "assertive";
|
|
21
|
+
/**
|
|
22
|
+
* Announce `message` to screen readers through a live region (polite by default). Live regions must
|
|
23
|
+
* exist before their content changes: render `<Announcer/>` (`@rivetjs/cdk/announcer`) in the layout so
|
|
24
|
+
* the first announcement is not lost; without it the regions are created on first use. The text is
|
|
25
|
+
* cleared and set after a tick, so repeating a message announces it again. Browser only.
|
|
26
|
+
*/
|
|
27
|
+
export declare function announce(message: string, politeness?: Politeness): void;
|
|
28
|
+
/** Clear pending and shown announcements (tests, route changes). */
|
|
29
|
+
export declare function clearAnnouncements(): void;
|
|
30
|
+
/** Whether `element` is rendered (not `display: none`, not in a closed `<details>`, not hidden). */
|
|
31
|
+
export declare function isVisible(element: Element): boolean;
|
|
32
|
+
/** Can receive focus (programmatically or by pointer): focusable element, not disabled, not inert, visible. */
|
|
33
|
+
export declare function isFocusable(element: Element): boolean;
|
|
34
|
+
/** Reachable with Tab: focusable and tabindex ≥ 0 (radio groups: only the checked / first radio). */
|
|
35
|
+
export declare function isTabbable(element: Element): boolean;
|
|
36
|
+
/** Tabbable descendants of `root` in DOM order (tabindex > 0 first is not modelled: avoid positive tabindex). */
|
|
37
|
+
export declare function tabbables(root: Element): HTMLElement[];
|
package/a11y/index.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// Accessibility helpers: live announcements, focusability / visibility checks, the visually hidden
|
|
2
|
+
// styles. No import-time work: the fallback live regions are created by the first `announce()`.
|
|
3
|
+
import { cssEscape } from "../utils/dom.js";
|
|
4
|
+
/**
|
|
5
|
+
* Styles of visually hidden but accessible content (react-aria `useVisuallyHidden`): `style={visuallyHidden}`.
|
|
6
|
+
* Inline on purpose: no stylesheet to import, and a class of your own cannot break it. Frozen: the DOM runtime writes a
|
|
7
|
+
* frozen style object on a fresh element as one CSSOM `cssText` (validated once), not ten `setProperty` calls.
|
|
8
|
+
*/
|
|
9
|
+
export const visuallyHidden = Object.freeze({
|
|
10
|
+
border: "0",
|
|
11
|
+
clip: "rect(0 0 0 0)",
|
|
12
|
+
clipPath: "inset(50%)",
|
|
13
|
+
height: "1px",
|
|
14
|
+
margin: "-1px",
|
|
15
|
+
overflow: "hidden",
|
|
16
|
+
padding: "0",
|
|
17
|
+
position: "absolute",
|
|
18
|
+
width: "1px",
|
|
19
|
+
whiteSpace: "nowrap",
|
|
20
|
+
});
|
|
21
|
+
/** Hide `element` visually through the CSSOM (CSP-safe), keeping it for screen readers. */
|
|
22
|
+
export function hideVisually(element) {
|
|
23
|
+
Object.assign(element.style, visuallyHidden);
|
|
24
|
+
}
|
|
25
|
+
const created = {};
|
|
26
|
+
let pending = {};
|
|
27
|
+
/** The live region for `politeness`: a server-rendered `<Announcer/>` region, else one created now. */
|
|
28
|
+
function region(politeness) {
|
|
29
|
+
const found = document.querySelector(`[data-rv-announcer="${politeness}"]`);
|
|
30
|
+
if (found)
|
|
31
|
+
return found;
|
|
32
|
+
let own = created[politeness];
|
|
33
|
+
if (!own?.isConnected) {
|
|
34
|
+
own = created[politeness] = document.createElement("div");
|
|
35
|
+
own.setAttribute("data-rv-announcer", politeness);
|
|
36
|
+
own.setAttribute("aria-live", politeness);
|
|
37
|
+
own.setAttribute("aria-atomic", "true");
|
|
38
|
+
if (politeness === "assertive")
|
|
39
|
+
own.setAttribute("role", "alert");
|
|
40
|
+
hideVisually(own);
|
|
41
|
+
document.body.append(own);
|
|
42
|
+
}
|
|
43
|
+
return own;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Announce `message` to screen readers through a live region (polite by default). Live regions must
|
|
47
|
+
* exist before their content changes: render `<Announcer/>` (`@rivetjs/cdk/announcer`) in the layout so
|
|
48
|
+
* the first announcement is not lost; without it the regions are created on first use. The text is
|
|
49
|
+
* cleared and set after a tick, so repeating a message announces it again. Browser only.
|
|
50
|
+
*/
|
|
51
|
+
export function announce(message, politeness = "polite") {
|
|
52
|
+
const target = region(politeness);
|
|
53
|
+
clearTimeout(pending[politeness]);
|
|
54
|
+
target.textContent = "";
|
|
55
|
+
pending[politeness] = setTimeout(() => (target.textContent = message), 50);
|
|
56
|
+
}
|
|
57
|
+
/** Clear pending and shown announcements (tests, route changes). */
|
|
58
|
+
export function clearAnnouncements() {
|
|
59
|
+
for (const key of Object.keys(pending))
|
|
60
|
+
clearTimeout(pending[key]);
|
|
61
|
+
pending = {};
|
|
62
|
+
for (const el of document.querySelectorAll("[data-rv-announcer]"))
|
|
63
|
+
el.textContent = "";
|
|
64
|
+
}
|
|
65
|
+
const FOCUSABLE = "a[href],area[href],button,input,select,textarea,iframe,summary,audio[controls],video[controls],[contenteditable]:not([contenteditable=false]),[tabindex]";
|
|
66
|
+
/** Whether `element` is rendered (not `display: none`, not in a closed `<details>`, not hidden). */
|
|
67
|
+
export function isVisible(element) {
|
|
68
|
+
const check = element.checkVisibility;
|
|
69
|
+
if (typeof check === "function")
|
|
70
|
+
return check.call(element, { visibilityProperty: true });
|
|
71
|
+
return !element.hidden && element.offsetParent !== null;
|
|
72
|
+
}
|
|
73
|
+
/** Can receive focus (programmatically or by pointer): focusable element, not disabled, not inert, visible. */
|
|
74
|
+
export function isFocusable(element) {
|
|
75
|
+
if (!element.matches(FOCUSABLE))
|
|
76
|
+
return false;
|
|
77
|
+
if (element.disabled || element.closest("[inert]"))
|
|
78
|
+
return false;
|
|
79
|
+
if (element.localName === "input" && element.type === "hidden")
|
|
80
|
+
return false;
|
|
81
|
+
return isVisible(element);
|
|
82
|
+
}
|
|
83
|
+
/** Reachable with Tab: focusable and tabindex ≥ 0 (radio groups: only the checked / first radio). */
|
|
84
|
+
export function isTabbable(element) {
|
|
85
|
+
if (!isFocusable(element) || element.tabIndex < 0)
|
|
86
|
+
return false;
|
|
87
|
+
const input = element;
|
|
88
|
+
if (input.localName === "input" && input.type === "radio" && input.name && !input.checked) {
|
|
89
|
+
const group = [...(input.form ?? document).querySelectorAll(`input[type=radio][name="${cssEscape(input.name)}"]`)];
|
|
90
|
+
return !group.some((radio) => radio.checked) && group.find((radio) => isFocusable(radio)) === input;
|
|
91
|
+
}
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
/** Tabbable descendants of `root` in DOM order (tabindex > 0 first is not modelled: avoid positive tabindex). */
|
|
95
|
+
export function tabbables(root) {
|
|
96
|
+
return [...root.querySelectorAll(FOCUSABLE)].filter(isTabbable);
|
|
97
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/** Options for `isFocusable`. */
|
|
2
|
+
export declare class IsFocusableConfig {
|
|
3
|
+
/** Whether to count invisible elements as focusable. */
|
|
4
|
+
ignoreVisibility: boolean;
|
|
5
|
+
}
|
|
6
|
+
/** Checks interactivity of elements: disabled, visible, tabbable, focusable. */
|
|
7
|
+
export declare class InteractivityChecker {
|
|
8
|
+
/** Whether the element has a `disabled` attribute (not `aria-disabled`). */
|
|
9
|
+
isDisabled(element: HTMLElement): boolean;
|
|
10
|
+
/** Whether the element is rendered (has geometry) and `visibility: visible`. */
|
|
11
|
+
isVisible(element: HTMLElement): boolean;
|
|
12
|
+
/** Whether Tab reaches the element (assumes it is visible). */
|
|
13
|
+
isTabbable(element: HTMLElement): boolean;
|
|
14
|
+
/** Whether the element can receive focus (native control, anchor with href, contenteditable, tabindex). */
|
|
15
|
+
isFocusable(element: HTMLElement, config?: IsFocusableConfig): boolean;
|
|
16
|
+
}
|
|
17
|
+
/** The shared InteractivityChecker. */
|
|
18
|
+
export declare function getInteractivityChecker(): InteractivityChecker;
|