@rivetjs/cdk 0.0.0-stage → 0.1.0-alpha.1
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 +120 -0
- package/_adapters/selection.js +709 -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 +376 -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 +252 -0
- package/collections/components.jsx +745 -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 +17 -0
- package/collections/nodes.js +107 -0
- package/collections/row-stamps.d.ts +17 -0
- package/collections/row-stamps.js +108 -0
- package/collections/selection-model.d.ts +93 -0
- package/collections/selection-model.js +192 -0
- package/collections/server-dev.d.ts +6 -0
- package/collections/server-dev.js +18 -0
- package/collections/server-off.d.ts +6 -0
- package/collections/server-off.js +9 -0
- package/collections/server-on.d.ts +29 -0
- package/collections/server-on.jsx +86 -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 +210 -0
- package/drag-drop/directives/drag.js +550 -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 +128 -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 +144 -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 +248 -0
- package/grid-list/behaviour.js +616 -0
- package/grid-list/index.d.ts +204 -0
- package/grid-list/index.jsx +721 -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 +539 -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 +52 -0
- package/interactions/utils.js +253 -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 +515 -0
- package/listbox/index.d.ts +129 -0
- package/listbox/index.jsx +632 -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 +702 -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 +55 -0
- package/portal/index.jsx +83 -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 +142 -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 +66 -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 +560 -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 +625 -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 +162 -0
- package/state/menu.js +185 -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 +1326 -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 +837 -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 +73 -0
- package/utils/data-attrs.jsx +217 -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 +43 -0
- package/utils/index.js +160 -0
- package/utils/link-state.d.ts +6 -0
- package/utils/link-state.js +6 -0
- package/utils/links.d.ts +82 -0
- package/utils/links.jsx +150 -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/transitions.d.ts +15 -0
- package/utils/transitions.js +104 -0
- package/utils/types.d.ts +111 -0
- package/utils/types.js +1 -0
- package/virtualizer/behaviour.d.ts +129 -0
- package/virtualizer/behaviour.js +437 -0
- package/virtualizer/collection-renderer.d.ts +62 -0
- package/virtualizer/collection-renderer.jsx +190 -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 +3 -0
- package/virtualizer/index.jsx +5 -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 +510 -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 +89 -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 +64 -0
- package/virtualizer/virtualizer.jsx +91 -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,445 @@
|
|
|
1
|
+
// Ported from React Aria (@react-aria/select useSelect, HiddenSelect useHiddenSelect; @react-aria/menu
|
|
2
|
+
// useMenuTrigger with type "listbox"), Apache-2.0, © Adobe.
|
|
3
|
+
//
|
|
4
|
+
// Select behaviour: handler bodies for the trigger button (press / keyboard of useMenuTrigger, typeahead
|
|
5
|
+
// and ArrowLeft / ArrowRight of useSelect on the closed trigger), the label, the listbox in the popover
|
|
6
|
+
// (useListBox + the select's selection rules) and the hidden native <select> (autofill, form value,
|
|
7
|
+
// native validation, form reset). The closed trigger works from the data items (`selectCollection`);
|
|
8
|
+
// the open popover renders the RAC ListBox over the select's list state (`selectListChange`, `selectListBlur`).
|
|
9
|
+
import { untrack } from "@rivetjs/reactivity";
|
|
10
|
+
import { getSearchCollator, ListKeyboardDelegate } from "../_adapters/collections.js";
|
|
11
|
+
import { typeSelectKeyDown } from "../_adapters/type-select.js";
|
|
12
|
+
import { isFocusVisible, noteModality, setInteractionModality } from "../interactions/focus-visible.jsx";
|
|
13
|
+
import { isVirtualClick } from "../platform/index.js";
|
|
14
|
+
import { focusWithoutScrolling } from "../utils/index.js";
|
|
15
|
+
import { pointerTypeOf } from "../selection/dom-utils.js";
|
|
16
|
+
import { commitValidation } from "../state/form-validation.js";
|
|
17
|
+
import { commit, onFormReset, validationChange, validationInvalid } from "../form/behaviour.js";
|
|
18
|
+
import { fieldProps } from "../label/behaviour.js";
|
|
19
|
+
import { closeOverlay } from "../state/overlays.js";
|
|
20
|
+
import { openSelect, selectCollection, selectItems, selectedKeys, selectValue, setSelectValue, toggleSelect, isSelectDisabled, isSelectRequired, } from "../state/select.js";
|
|
21
|
+
/** Part ids (useSelect: trigger = field, value = SelectValue, listbox = the menu). */
|
|
22
|
+
export const triggerId = (state) => state.id + "-trigger";
|
|
23
|
+
export const labelId = (state) => triggerId(state) + "-label";
|
|
24
|
+
export const valueId = (state) => state.id + "-value";
|
|
25
|
+
export const listId = (state) => state.id + "-listbox";
|
|
26
|
+
export const popoverId = (state) => state.id + "-popover";
|
|
27
|
+
export const hiddenId = (state) => state.id + "-hidden";
|
|
28
|
+
/**
|
|
29
|
+
* `isDisabled` for attribute / context bags (live props P5): the live accessor when the select's `isDisabled` is one
|
|
30
|
+
* (a returned arrow: resumable), else the creation value.
|
|
31
|
+
*/
|
|
32
|
+
export function selectDisabled(state) {
|
|
33
|
+
return state.disabled ? liveSelectDisabled(state) : state.isDisabled;
|
|
34
|
+
}
|
|
35
|
+
function liveSelectDisabled(state) {
|
|
36
|
+
return () => isSelectDisabled(state);
|
|
37
|
+
}
|
|
38
|
+
/** `data-required` for a spread / render bag: an accessor when live (returned arrow), else the value. */
|
|
39
|
+
export function selectRequiredAttr(state) {
|
|
40
|
+
return state.required ? liveSelectRequiredAttr(state) : state.isRequired ? "true" : undefined;
|
|
41
|
+
}
|
|
42
|
+
function liveSelectRequiredAttr(state) {
|
|
43
|
+
return () => (isSelectRequired(state) ? "true" : undefined);
|
|
44
|
+
}
|
|
45
|
+
/** `data-disabled` for a spread / render bag: an accessor when live (returned arrow), else the value. */
|
|
46
|
+
export function selectDisabledAttr(state) {
|
|
47
|
+
return state.disabled ? liveSelectDisabledAttr(state) : state.isDisabled ? "true" : undefined;
|
|
48
|
+
}
|
|
49
|
+
function liveSelectDisabledAttr(state) {
|
|
50
|
+
return () => (isSelectDisabled(state) ? "true" : undefined);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* react-aria `useSelect` attribute bags (same keys as RA). Ids and ARIA attributes only: the handlers
|
|
54
|
+
* are the exported free functions (`selectTriggerKeyDown`, `selectListEvent`, …), attached as inline
|
|
55
|
+
* arrows so they resume. Reactive values are accessors (`triggerProps["aria-expanded"]()`).
|
|
56
|
+
*/
|
|
57
|
+
export function selectProps(props, state) {
|
|
58
|
+
const ids = fieldProps({
|
|
59
|
+
id: triggerId(state),
|
|
60
|
+
label: props.label,
|
|
61
|
+
description: props.description,
|
|
62
|
+
labelElementType: "span",
|
|
63
|
+
"aria-label": props["aria-label"],
|
|
64
|
+
"aria-labelledby": props["aria-labelledby"],
|
|
65
|
+
"aria-describedby": props["aria-describedby"],
|
|
66
|
+
});
|
|
67
|
+
const fieldLabelledBy = ids.fieldProps["aria-labelledby"];
|
|
68
|
+
const ariaLabel = ids.fieldProps["aria-label"];
|
|
69
|
+
const self = ariaLabel && !fieldLabelledBy ? triggerId(state) : null;
|
|
70
|
+
return {
|
|
71
|
+
ids,
|
|
72
|
+
labelProps: { id: ids.labelProps.id ?? labelId(state) },
|
|
73
|
+
triggerProps: {
|
|
74
|
+
id: triggerId(state),
|
|
75
|
+
"aria-haspopup": "listbox",
|
|
76
|
+
"aria-expanded": () => (state.isOpen() ? "true" : "false"),
|
|
77
|
+
"aria-controls": () => (state.isOpen() ? listId(state) : undefined),
|
|
78
|
+
"aria-label": ariaLabel,
|
|
79
|
+
// useSelect: the trigger is labelled by the value, then the label (or itself with aria-label).
|
|
80
|
+
"aria-labelledby": [valueId(state), fieldLabelledBy, self].filter(Boolean).join(" "),
|
|
81
|
+
isDisabled: selectDisabled(state),
|
|
82
|
+
},
|
|
83
|
+
valueProps: { id: valueId(state) },
|
|
84
|
+
menuProps: {
|
|
85
|
+
id: listId(state),
|
|
86
|
+
"aria-labelledby": [fieldLabelledBy, self].filter(Boolean).join(" ") || undefined,
|
|
87
|
+
autoFocus: () => untrack(state.focusStrategy) || true,
|
|
88
|
+
shouldSelectOnPressUp: true,
|
|
89
|
+
shouldFocusOnHover: true,
|
|
90
|
+
disallowEmptySelection: true,
|
|
91
|
+
linkBehavior: "selection",
|
|
92
|
+
},
|
|
93
|
+
descriptionProps: { id: ids.descriptionId },
|
|
94
|
+
errorMessageProps: { id: ids.errorMessageId },
|
|
95
|
+
hiddenSelectProps: { isDisabled: selectDisabled(state), name: state.name, form: state.form, state },
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
/** Keys the closed trigger handles (`data-rk`: a cold arrow key does not scroll the page while code loads). */
|
|
99
|
+
export const TRIGGER_KEYS = "Enter Space ArrowDown ArrowUp ArrowLeft ArrowRight";
|
|
100
|
+
const triggerOf = (state, from) => ("ownerDocument" in from && from.ownerDocument ? from.ownerDocument : from).getElementById(triggerId(state));
|
|
101
|
+
// Keyboard presses of the trigger (Enter / Space): their activation click is not a virtual press.
|
|
102
|
+
const keyboardPresses = new WeakSet();
|
|
103
|
+
/** useSelect's keyboard delegate over the data items (no DOM: the menu is closed). */
|
|
104
|
+
function triggerDelegate(state) {
|
|
105
|
+
// Disabled = `disabledKeys` + the items' own `isDisabled` (RAC parts: `<ListBoxItem isDisabled>`).
|
|
106
|
+
const disabledKeys = new Set(state.disabledKeys);
|
|
107
|
+
for (const item of selectItems(state))
|
|
108
|
+
if (item.disabled)
|
|
109
|
+
disabledKeys.add(item.key);
|
|
110
|
+
return new ListKeyboardDelegate({ collection: selectCollection(state), disabledKeys, ref: null, collator: getSearchCollator() });
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* The listbox selection is the select value (useSelectState `selectedKeys: convertValue(value)`). The list's
|
|
114
|
+
* selection state is controlled (the ListBox never writes it): this writes the value's keys into its signal
|
|
115
|
+
* (a serializable state; a derived signal is not). Run from an effect while the popover content renders (the
|
|
116
|
+
* menu opened however: trigger, `isOpen`, `openSelect`; a value written outside while open) and after each
|
|
117
|
+
* listbox selection change. `keys`: pass `selectedKeys(state)` read in the effect to track the value.
|
|
118
|
+
*/
|
|
119
|
+
export function syncListSelection(state, listKeys, keys = untrack(() => selectedKeys(state))) {
|
|
120
|
+
const current = untrack(listKeys);
|
|
121
|
+
if (current !== "all" && current.size === keys.length && keys.every((key) => current.has(key)))
|
|
122
|
+
return;
|
|
123
|
+
listKeys.set(new Set(keys));
|
|
124
|
+
}
|
|
125
|
+
/** useMenuTrigger `state.open(focusStrategy)` / `state.toggle(focusStrategy)`. */
|
|
126
|
+
export function selectOpen(state, focusStrategy, toggle = false) {
|
|
127
|
+
if (toggle)
|
|
128
|
+
toggleSelect(state, focusStrategy);
|
|
129
|
+
else
|
|
130
|
+
openSelect(state, focusStrategy);
|
|
131
|
+
}
|
|
132
|
+
/** keydown on the trigger: typeahead (single), Enter / Space / ArrowDown / ArrowUp open, ArrowLeft / ArrowRight select. */
|
|
133
|
+
/** useTypeSelect on the closed trigger (single selection): the manager is the trigger's focused key. */
|
|
134
|
+
function triggerTypeSelect(state, trigger, event, delegate = triggerDelegate(state)) {
|
|
135
|
+
const manager = {
|
|
136
|
+
get focusedKey() {
|
|
137
|
+
return untrack(state.focusedKey);
|
|
138
|
+
},
|
|
139
|
+
setFocusedKey(key) {
|
|
140
|
+
state.focusedKey.set(key);
|
|
141
|
+
},
|
|
142
|
+
};
|
|
143
|
+
if (!typeSelectKeyDown(state, trigger, manager, delegate, event, (key) => setSelectValue(state, key)))
|
|
144
|
+
return false;
|
|
145
|
+
if (event.key === " ")
|
|
146
|
+
keyboardPresses.add(state); // keyup: no native activation either
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* useTypeSelect `onKeyDownCapture` of a parts-form trigger (`<Button>`), on the Select root: a Space continuing a
|
|
151
|
+
* search is consumed before the Button's press sees it (RA: capture handler + stopPropagation on the trigger).
|
|
152
|
+
*/
|
|
153
|
+
export function selectTriggerKeyDownCapture(state, event) {
|
|
154
|
+
const target = event.target;
|
|
155
|
+
if (event.key !== " " || isSelectDisabled(state) || state.selectionMode !== "single" || !target || target.id !== triggerId(state))
|
|
156
|
+
return;
|
|
157
|
+
triggerTypeSelect(state, target, event);
|
|
158
|
+
}
|
|
159
|
+
export function selectTriggerKeyDown(state, event, callbacks = {}) {
|
|
160
|
+
noteModality(event);
|
|
161
|
+
if (isSelectDisabled(state))
|
|
162
|
+
return;
|
|
163
|
+
const trigger = event.currentTarget;
|
|
164
|
+
const single = state.selectionMode === "single";
|
|
165
|
+
const delegate = triggerDelegate(state);
|
|
166
|
+
// useTypeSelect (single selection only): onKeyDownCapture: a key typeahead consumes stops propagation, so no
|
|
167
|
+
// trigger shortcut runs.
|
|
168
|
+
if (single && triggerTypeSelect(state, trigger, event, delegate))
|
|
169
|
+
return;
|
|
170
|
+
// useMenuTrigger (useKeyboard shortcuts). No `defaultPrevented` check, as upstream: the loader holds
|
|
171
|
+
// a cold Space / Enter (`data-rk`) and the handler still opens.
|
|
172
|
+
const open = (focusStrategy) => {
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
selectOpen(state, focusStrategy, true);
|
|
175
|
+
};
|
|
176
|
+
switch (event.key) {
|
|
177
|
+
case "Enter":
|
|
178
|
+
case " ":
|
|
179
|
+
// usePress: a keyboard press never activates natively (keyup / click are ours).
|
|
180
|
+
keyboardPresses.add(state);
|
|
181
|
+
open("first");
|
|
182
|
+
break;
|
|
183
|
+
case "ArrowDown":
|
|
184
|
+
open("first");
|
|
185
|
+
break;
|
|
186
|
+
case "ArrowUp":
|
|
187
|
+
open("last");
|
|
188
|
+
break;
|
|
189
|
+
// useSelect: ArrowLeft / ArrowRight move the selection while closed (single selection).
|
|
190
|
+
case "ArrowLeft":
|
|
191
|
+
case "ArrowRight": {
|
|
192
|
+
if (!single || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey)
|
|
193
|
+
break;
|
|
194
|
+
event.preventDefault();
|
|
195
|
+
const current = untrack(() => selectedKeys(state))[0] ?? null;
|
|
196
|
+
const key = current != null ? (event.key === "ArrowLeft" ? delegate.getKeyAbove(current) : delegate.getKeyBelow(current)) : delegate.getFirstKey();
|
|
197
|
+
if (key != null)
|
|
198
|
+
setSelectValue(state, key);
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
callbacks.onKeyDown?.(event);
|
|
203
|
+
}
|
|
204
|
+
/** keyup on the trigger: Space activation is ours (no native click). */
|
|
205
|
+
export function selectTriggerKeyUp(state, event, callbacks = {}) {
|
|
206
|
+
if ((event.key === " " || event.key === "Enter") && keyboardPresses.has(state)) {
|
|
207
|
+
event.preventDefault();
|
|
208
|
+
keyboardPresses.delete(state);
|
|
209
|
+
}
|
|
210
|
+
callbacks.onKeyUp?.(event);
|
|
211
|
+
}
|
|
212
|
+
/** pointerdown on the trigger: mouse / pen open on press start (useMenuTrigger `onPressStart`). */
|
|
213
|
+
export function selectTriggerPointerDown(state, event) {
|
|
214
|
+
noteModality(event);
|
|
215
|
+
keyboardPresses.delete(state);
|
|
216
|
+
if (event.button !== 0 || isSelectDisabled(state))
|
|
217
|
+
return;
|
|
218
|
+
const type = pointerTypeOf(event);
|
|
219
|
+
if (type === "touch" || type === "virtual")
|
|
220
|
+
return;
|
|
221
|
+
// Ensure the trigger has focus before opening so FocusScope restores it on close.
|
|
222
|
+
focusWithoutScrolling(event.currentTarget);
|
|
223
|
+
selectOpen(state, null);
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* useMenuTrigger `onPressStart` (RAC parts: the `<Button>` of a Select gets it through `ButtonContext`): mouse / pen
|
|
227
|
+
* open on press start (focus the trigger first so FocusScope restores it), a virtual press opens on the first item.
|
|
228
|
+
*/
|
|
229
|
+
export function selectTriggerPressStart(state, event) {
|
|
230
|
+
if (event.pointerType !== "touch" && event.pointerType !== "keyboard" && !isSelectDisabled(state)) {
|
|
231
|
+
focusWithoutScrolling(event.target);
|
|
232
|
+
selectOpen(state, event.pointerType === "virtual" ? "first" : null);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/** useMenuTrigger `onPress`: touch toggles on press up. */
|
|
236
|
+
export function selectTriggerPress(state, event) {
|
|
237
|
+
if (event.pointerType === "touch" && !isSelectDisabled(state)) {
|
|
238
|
+
focusWithoutScrolling(event.target);
|
|
239
|
+
selectOpen(state, null, true);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/** mousedown on the trigger: preventFocusOnPress (the pointerdown handler focused it already). */
|
|
243
|
+
export function selectTriggerMouseDown(event) {
|
|
244
|
+
if (event.button === 0)
|
|
245
|
+
event.preventDefault();
|
|
246
|
+
}
|
|
247
|
+
/** click on the trigger: touch toggles (press up), screen reader clicks open on the first item. */
|
|
248
|
+
export function selectTriggerClick(state, event) {
|
|
249
|
+
if (keyboardPresses.has(state)) {
|
|
250
|
+
keyboardPresses.delete(state);
|
|
251
|
+
event.preventDefault();
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
if (isSelectDisabled(state))
|
|
255
|
+
return;
|
|
256
|
+
if (isVirtualClick(event)) {
|
|
257
|
+
focusWithoutScrolling(event.currentTarget);
|
|
258
|
+
selectOpen(state, "first");
|
|
259
|
+
}
|
|
260
|
+
else if (event.pointerType === "touch") {
|
|
261
|
+
focusWithoutScrolling(event.currentTarget);
|
|
262
|
+
selectOpen(state, null, true);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
/** focus on the trigger (useSelect `onFocus`). */
|
|
266
|
+
export function selectTriggerFocus(state, event, callbacks = {}) {
|
|
267
|
+
if (untrack(state.isFocused))
|
|
268
|
+
return;
|
|
269
|
+
callbacks.onFocus?.(event);
|
|
270
|
+
callbacks.onFocusChange?.(true);
|
|
271
|
+
state.isFocused.set(true);
|
|
272
|
+
}
|
|
273
|
+
/** blur on the trigger (useSelect `onBlur`): not while the menu is open (focus moved into it). */
|
|
274
|
+
export function selectTriggerBlur(state, event, callbacks = {}) {
|
|
275
|
+
if (untrack(state.isOpen))
|
|
276
|
+
return;
|
|
277
|
+
callbacks.onBlur?.(event);
|
|
278
|
+
callbacks.onFocusChange?.(false);
|
|
279
|
+
state.isFocused.set(false);
|
|
280
|
+
}
|
|
281
|
+
/** click on the label: focus the trigger and show its focus ring. */
|
|
282
|
+
export function selectLabelClick(state, event) {
|
|
283
|
+
if (isSelectDisabled(state))
|
|
284
|
+
return;
|
|
285
|
+
triggerOf(state, event.currentTarget)?.focus();
|
|
286
|
+
setInteractionModality("keyboard");
|
|
287
|
+
}
|
|
288
|
+
/** focusin / focusout on the Select root (useFocusRing `within`). */
|
|
289
|
+
export function selectFocusWithin(state, event) {
|
|
290
|
+
if (event.type === "focusin")
|
|
291
|
+
state.isFocusVisible.set(isFocusVisible());
|
|
292
|
+
else if (!event.currentTarget.contains(event.relatedTarget))
|
|
293
|
+
state.isFocusVisible.set(false);
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* useSelect `menuProps.onBlur` (the ListBox's `onBlur`: focus left the listbox element). Focus moving inside the
|
|
297
|
+
* popover or back to the select (closing restores focus to the trigger, FocusScope `restoreFocus`) is not the
|
|
298
|
+
* select losing focus — one focus / blur pair per focus, as upstream where the unmounted menu never blurs. Focus
|
|
299
|
+
* to nowhere (the listbox removed on close, an option removed, a click on a non-focusable part) is checked once
|
|
300
|
+
* focus settles.
|
|
301
|
+
*/
|
|
302
|
+
export function selectListBlur(state, event, callbacks = {}) {
|
|
303
|
+
const root = event.currentTarget;
|
|
304
|
+
const doc = root.ownerDocument;
|
|
305
|
+
const related = event.relatedTarget;
|
|
306
|
+
const within = (node) => {
|
|
307
|
+
if (node == null)
|
|
308
|
+
return false;
|
|
309
|
+
if (root.contains(node) || !!doc.getElementById(popoverId(state))?.contains(node))
|
|
310
|
+
return true;
|
|
311
|
+
const trigger = doc.getElementById(triggerId(state));
|
|
312
|
+
return !!trigger && (trigger === node || !!trigger.parentElement?.contains(node));
|
|
313
|
+
};
|
|
314
|
+
const blur = () => {
|
|
315
|
+
if (!untrack(state.isFocused))
|
|
316
|
+
return;
|
|
317
|
+
callbacks.onBlur?.(event);
|
|
318
|
+
callbacks.onFocusChange?.(false);
|
|
319
|
+
state.isFocused.set(false);
|
|
320
|
+
};
|
|
321
|
+
if (related != null) {
|
|
322
|
+
if (!within(related))
|
|
323
|
+
blur();
|
|
324
|
+
return;
|
|
325
|
+
}
|
|
326
|
+
setTimeout(() => {
|
|
327
|
+
const active = doc.activeElement;
|
|
328
|
+
if (!within(active) && !untrack(state.isOpen))
|
|
329
|
+
blur();
|
|
330
|
+
}, 0);
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* useSelectState's listbox `onSelectionChange`: set the value, mirror it into the list selection (controlled),
|
|
334
|
+
* close when `shouldCloseOnSelect`, and commit validation against the hidden field. `root`: an element of the
|
|
335
|
+
* select (its document holds the hidden field); without it only the state commits.
|
|
336
|
+
*/
|
|
337
|
+
export function selectListChange(state, listKeys, keys, root) {
|
|
338
|
+
if (keys === "all")
|
|
339
|
+
return;
|
|
340
|
+
if (state.selectionMode === "single")
|
|
341
|
+
setSelectValue(state, keys.values().next().value ?? null);
|
|
342
|
+
else
|
|
343
|
+
setSelectValue(state, [...keys]);
|
|
344
|
+
syncListSelection(state, listKeys);
|
|
345
|
+
if (state.shouldCloseOnSelect)
|
|
346
|
+
closeOverlay(state);
|
|
347
|
+
if (root)
|
|
348
|
+
commitSelect(state, root.ownerDocument);
|
|
349
|
+
else
|
|
350
|
+
commitValidation(state.validation);
|
|
351
|
+
}
|
|
352
|
+
/** Commit the validation (`validationState.commitValidation()`) against the hidden native field. */
|
|
353
|
+
export function commitSelect(state, doc) {
|
|
354
|
+
const field = doc.getElementById(hiddenId(state));
|
|
355
|
+
if (field) {
|
|
356
|
+
syncHiddenField(state, field);
|
|
357
|
+
hiddenSelectReset(state, field);
|
|
358
|
+
}
|
|
359
|
+
commit(state.validation, field);
|
|
360
|
+
}
|
|
361
|
+
/** Write the value into the hidden field now (its bindings flush later) so native validity is current. */
|
|
362
|
+
export function syncHiddenField(state, field) {
|
|
363
|
+
const keys = untrack(() => selectedKeys(state)).map(String);
|
|
364
|
+
if (field.tagName === "SELECT") {
|
|
365
|
+
const select = field;
|
|
366
|
+
for (const option of select.options)
|
|
367
|
+
option.selected = option.value === "" ? keys.length === 0 && !select.multiple : keys.includes(option.value);
|
|
368
|
+
}
|
|
369
|
+
else
|
|
370
|
+
field.value = keys[0] ?? "";
|
|
371
|
+
}
|
|
372
|
+
// --- HiddenSelect (useHiddenSelect) ----------------------------------------------------------
|
|
373
|
+
/** change / input on the hidden <select> (browser autofill): set the value; `change` commits validation. */
|
|
374
|
+
export function hiddenSelectChange(state, event) {
|
|
375
|
+
const select = event.currentTarget;
|
|
376
|
+
hiddenSelectReset(state, select);
|
|
377
|
+
if (select.multiple)
|
|
378
|
+
setSelectValue(state, Array.from(select.selectedOptions, (option) => option.value));
|
|
379
|
+
else
|
|
380
|
+
setSelectValue(state, select.value);
|
|
381
|
+
if (event.type === "change")
|
|
382
|
+
validationChange(state.validation, select);
|
|
383
|
+
}
|
|
384
|
+
/** invalid on the hidden field (submit / checkValidity): commit, focus the trigger, no browser bubble. */
|
|
385
|
+
export function hiddenSelectInvalid(state, event) {
|
|
386
|
+
hiddenSelectReset(state, event.currentTarget);
|
|
387
|
+
validationInvalid(state.validation, event, () => triggerOf(state, event.currentTarget)?.focus());
|
|
388
|
+
}
|
|
389
|
+
/** useFormReset: a form reset restores the default value. */
|
|
390
|
+
export function hiddenSelectReset(state, field) {
|
|
391
|
+
onFormReset(state, field, () => setSelectValue(state, state.defaultValue));
|
|
392
|
+
}
|
|
393
|
+
// --- Value helpers (Rivet extras over useSelectState `setValue`, for parts outside the listbox) ----
|
|
394
|
+
/**
|
|
395
|
+
* Set the value from outside the listbox (a chip's remove button, a clear button) and commit validation.
|
|
396
|
+
* `event`: the handler's event — its document holds the hidden field, so native validity is synced
|
|
397
|
+
* before the commit; without it only the state commits (native validity syncs at the next submit).
|
|
398
|
+
*/
|
|
399
|
+
function setFromOutside(state, value, event) {
|
|
400
|
+
setSelectValue(state, value);
|
|
401
|
+
const doc = event?.currentTarget?.ownerDocument ?? event?.target?.ownerDocument;
|
|
402
|
+
if (doc)
|
|
403
|
+
commitSelect(state, doc);
|
|
404
|
+
else
|
|
405
|
+
commitValidation(state.validation);
|
|
406
|
+
}
|
|
407
|
+
/** Removes `keys` from the value (single: clears it when the key matches); `onChange`, commits validation. */
|
|
408
|
+
export function removeSelected(state, keys, event) {
|
|
409
|
+
const remove = new Set(typeof keys === "object" && keys != null && Symbol.iterator in keys ? keys : [keys]);
|
|
410
|
+
const current = untrack(() => selectedKeys(state));
|
|
411
|
+
const next = current.filter((key) => !remove.has(key));
|
|
412
|
+
if (next.length === current.length)
|
|
413
|
+
return;
|
|
414
|
+
setFromOutside(state, state.selectionMode === "single" ? null : next, event);
|
|
415
|
+
}
|
|
416
|
+
/** Clears the value (single: `null`, multiple: `[]`); `onChange`, commits validation. */
|
|
417
|
+
export function clearSelection(state, event) {
|
|
418
|
+
if (untrack(() => selectedKeys(state)).length === 0)
|
|
419
|
+
return;
|
|
420
|
+
setFromOutside(state, state.selectionMode === "single" ? null : [], event);
|
|
421
|
+
}
|
|
422
|
+
/** Toggles `key` (single: selects it, or clears when it is the value); `onChange`, commits validation. */
|
|
423
|
+
export function toggleSelected(state, key, event) {
|
|
424
|
+
const current = untrack(() => selectedKeys(state));
|
|
425
|
+
const has = current.includes(key);
|
|
426
|
+
if (state.selectionMode === "single")
|
|
427
|
+
setFromOutside(state, has ? null : key, event);
|
|
428
|
+
else
|
|
429
|
+
setFromOutside(state, has ? current.filter((k) => k !== key) : [...current, key], event);
|
|
430
|
+
}
|
|
431
|
+
/** Whether `key` is part of the value (binding accessor: hidden options, `selected`). */
|
|
432
|
+
export const isValueKey = (state, key) => {
|
|
433
|
+
// Per hidden `<option>` binding (≤ 300 per select, all re-run on a selection change): reads the value in place —
|
|
434
|
+
// no `selectedKeys` copy, one `String(key)` (was a copy + two `String` calls per compared key).
|
|
435
|
+
const value = selectValue(state);
|
|
436
|
+
if (value == null)
|
|
437
|
+
return false;
|
|
438
|
+
const want = String(key);
|
|
439
|
+
if (!Array.isArray(value))
|
|
440
|
+
return String(value) === want;
|
|
441
|
+
for (let i = 0; i < value.length; i++)
|
|
442
|
+
if (String(value[i]) === want)
|
|
443
|
+
return true;
|
|
444
|
+
return false;
|
|
445
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Content } from "@rivetjs/runtime/jsx-runtime";
|
|
2
|
+
import { type SelectionMode, type SelectState } from "../state/select.js";
|
|
3
|
+
export interface AriaHiddenSelectProps {
|
|
4
|
+
/** Describes the type of autocomplete functionality the input should provide if any. */
|
|
5
|
+
autoComplete?: string;
|
|
6
|
+
/** The text label for the select. */
|
|
7
|
+
label?: Content;
|
|
8
|
+
/** HTML form input name. */
|
|
9
|
+
name?: string;
|
|
10
|
+
/** The `<form>` element to associate the input with (its id). */
|
|
11
|
+
form?: string;
|
|
12
|
+
/** Sets the disabled state of the select and input (an accessor stays live). */
|
|
13
|
+
isDisabled?: boolean | (() => boolean);
|
|
14
|
+
}
|
|
15
|
+
export interface HiddenSelectProps<M extends SelectionMode = "single"> extends AriaHiddenSelectProps {
|
|
16
|
+
/** State for the select. */
|
|
17
|
+
state: SelectState<M>;
|
|
18
|
+
/**
|
|
19
|
+
* @internal Rivet: the select carries the `preload="visible"` resume directive (Select parts `render` root: the
|
|
20
|
+
* directive is JSX-literal and cannot reach the user's root element, so the hidden select's handlers, which reach
|
|
21
|
+
* the same state, plan the first click's dependency chunks while visible).
|
|
22
|
+
*/
|
|
23
|
+
preloadVisible?: boolean;
|
|
24
|
+
}
|
|
25
|
+
/** useHiddenSelect `containerProps` style: visually hidden, fixed (prevents page scrolling). */
|
|
26
|
+
export declare const hiddenContainerStyle: {
|
|
27
|
+
readonly position: "fixed";
|
|
28
|
+
readonly top: "0";
|
|
29
|
+
readonly left: "0";
|
|
30
|
+
readonly border: "0";
|
|
31
|
+
readonly clip: "rect(0 0 0 0)";
|
|
32
|
+
readonly clipPath: "inset(50%)";
|
|
33
|
+
readonly height: "1px";
|
|
34
|
+
readonly margin: "-1px";
|
|
35
|
+
readonly overflow: "hidden";
|
|
36
|
+
readonly padding: "0";
|
|
37
|
+
readonly width: "1px";
|
|
38
|
+
readonly whiteSpace: "nowrap";
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Renders a hidden native `<select>` element, which can be used to support browser form autofill,
|
|
42
|
+
* mobile form navigation, and native form submission.
|
|
43
|
+
*/
|
|
44
|
+
export declare function HiddenSelect<M extends SelectionMode = "single">(props: HiddenSelectProps<M>): import("@rivetjs/runtime/jsx-runtime").CompiledElement | null;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Ported from React Aria (@react-aria/select HiddenSelect.tsx: HiddenSelect, useHiddenSelect), Apache-2.0, © Adobe.
|
|
2
|
+
//
|
|
3
|
+
// A hidden native <select> (server-rendered, so the form value posts before any JS runs) for browser
|
|
4
|
+
// autofill, mobile form navigation and native form submission / validation. Over 300 items: hidden
|
|
5
|
+
// inputs instead (`<input type="text" hidden>` with native validation, so `required` blocks submit).
|
|
6
|
+
import { For } from "@rivetjs/runtime/dom";
|
|
7
|
+
import { untrack } from "@rivetjs/reactivity";
|
|
8
|
+
import { visuallyHidden } from "../a11y/index.js";
|
|
9
|
+
import { validityError } from "../form/behaviour.js";
|
|
10
|
+
import { isSelectRequired, selectCollection, selectedKeys, selectItems } from "../state/select.js";
|
|
11
|
+
import { hiddenId, hiddenSelectChange, hiddenSelectInvalid, isValueKey, selectDisabled } from "./behaviour.jsx";
|
|
12
|
+
/** useHiddenSelect `containerProps` style: visually hidden, fixed (prevents page scrolling). */
|
|
13
|
+
export const hiddenContainerStyle = { ...visuallyHidden, position: "fixed", top: "0", left: "0" };
|
|
14
|
+
/**
|
|
15
|
+
* Renders a hidden native `<select>` element, which can be used to support browser form autofill,
|
|
16
|
+
* mobile form navigation, and native form submission.
|
|
17
|
+
*/
|
|
18
|
+
export function HiddenSelect(props) {
|
|
19
|
+
const state = props.state;
|
|
20
|
+
const name = props.name ?? state.name, form = props.form ?? state.form, isDisabled = props.isDisabled ?? selectDisabled(state);
|
|
21
|
+
const native = state.validation.behavior === "native";
|
|
22
|
+
const multiple = state.selectionMode === "multiple";
|
|
23
|
+
// If the collection isn't too big, use a hidden <select> so that browser autofill works.
|
|
24
|
+
if (untrack(() => selectCollection(state).size) <= 300) {
|
|
25
|
+
const values = untrack(() => selectedKeys(state));
|
|
26
|
+
// One option list for both select variants (with / without the preload directive).
|
|
27
|
+
const options = () => (<>
|
|
28
|
+
<option value="" label={"\u00A0"} selected={(!multiple && selectedKeys(state).length === 0) || undefined}>
|
|
29
|
+
{"\u00A0"}
|
|
30
|
+
</option>
|
|
31
|
+
<For each={() => selectItems(state)} by={(item) => item.key}>
|
|
32
|
+
{(item) => {
|
|
33
|
+
const { key, label, textValue } = item();
|
|
34
|
+
return (<option value={String(key)} selected={isValueKey(state, key) || undefined}>
|
|
35
|
+
{textValue ?? label}
|
|
36
|
+
</option>);
|
|
37
|
+
}}
|
|
38
|
+
</For>
|
|
39
|
+
{/* The collection may be empty during the initial render: options for the current values
|
|
40
|
+
give the select its value immediately (FormData reads are consistent). */}
|
|
41
|
+
{untrack(() => selectCollection(state).size) === 0 && name ? values.map((value) => <option value={String(value ?? "")} selected/>) : null}
|
|
42
|
+
</>);
|
|
43
|
+
return (
|
|
44
|
+
// Hidden from assistive technology; FocusScope never focuses inside (data-react-aria-prevent-focus).
|
|
45
|
+
// Rivet: a `span` (RAC: `div`) so a Select can sit in phrasing content (`<p>`: a `<div>` start tag closes the paragraph
|
|
46
|
+
// in the HTML parser); visually hidden + `position: fixed`, so the element type does not change the layout.
|
|
47
|
+
<span style={hiddenContainerStyle} aria-hidden="true" data-react-aria-prevent-focus="" data-a11y-ignore="aria-hidden-focus" data-testid="hidden-select-container">
|
|
48
|
+
<label>
|
|
49
|
+
{props.label}
|
|
50
|
+
{props.preloadVisible ? (<select preload="visible" id={hiddenId(state)} tabIndex={-1} autoComplete={props.autoComplete} disabled={(typeof isDisabled === "function" ? isDisabled() : isDisabled) || undefined} multiple={multiple || undefined} required={(native && isSelectRequired(state)) || undefined} name={name} form={form} data-rv-error={validityError(state.validation)} onChange={(event) => hiddenSelectChange(state, event)} onInput={(event) => hiddenSelectChange(state, event)} onInvalid={(event) => hiddenSelectInvalid(state, event)}>
|
|
51
|
+
{options()}
|
|
52
|
+
</select>) : (<select id={hiddenId(state)} tabIndex={-1} autoComplete={props.autoComplete} disabled={(typeof isDisabled === "function" ? isDisabled() : isDisabled) || undefined} multiple={multiple || undefined} required={(native && isSelectRequired(state)) || undefined} name={name} form={form} data-rv-error={validityError(state.validation)} onChange={(event) => hiddenSelectChange(state, event)} onInput={(event) => hiddenSelectChange(state, event)} onInvalid={(event) => hiddenSelectInvalid(state, event)}>
|
|
53
|
+
{options()}
|
|
54
|
+
</select>)}
|
|
55
|
+
</label>
|
|
56
|
+
</span>);
|
|
57
|
+
}
|
|
58
|
+
if (!name)
|
|
59
|
+
return null;
|
|
60
|
+
// Over 300 items: hidden inputs carry the value (at least one, for required submission).
|
|
61
|
+
const values = () => {
|
|
62
|
+
const keys = selectedKeys(state);
|
|
63
|
+
return keys.length ? keys.map(String) : [""];
|
|
64
|
+
};
|
|
65
|
+
return (<For each={values} by={(value, index) => index}>
|
|
66
|
+
{(value, index) => native ? (<input id={index() === 0 ? hiddenId(state) : undefined} type="text" style={{ display: "none" }} autoComplete={props.autoComplete} name={name} form={form} disabled={(typeof isDisabled === "function" ? isDisabled() : isDisabled) || undefined} value={value()} required={(index() === 0 && isSelectRequired(state)) || undefined} data-rv-error={index() === 0 ? validityError(state.validation) : undefined} onInvalid={(event) => hiddenSelectInvalid(state, event)}/>) : (<input id={index() === 0 ? hiddenId(state) : undefined} type="hidden" autoComplete={props.autoComplete} name={name} form={form} disabled={(typeof isDisabled === "function" ? isDisabled() : isDisabled) || undefined} value={value()}/>)}
|
|
67
|
+
</For>);
|
|
68
|
+
}
|