@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,293 @@
|
|
|
1
|
+
// Ported from React Aria Components (Select.tsx: Select / SelectInner, parts form) and React Aria
|
|
2
|
+
// (@react-aria/select useSelect, @react-aria/menu useMenuTrigger type "listbox"), Apache-2.0, © Adobe.
|
|
3
|
+
//
|
|
4
|
+
// RAC parts form of the Select (no `items`): `<Select><Label/><Button><SelectValue/></Button><Text slot="description"/>
|
|
5
|
+
// <FieldError/><Popover><ListBox>…</ListBox></Popover></Select>`. The Select provides SelectContext,
|
|
6
|
+
// SelectStateContext, SelectValueContext, LabelContext, ButtonContext, OverlayTriggerStateContext, PopoverContext,
|
|
7
|
+
// ListBoxContext, ListStateContext, TextContext (description / errorMessage slots) and FieldErrorContext; the
|
|
8
|
+
// collection is built from the children (B5 `collectionOf` = RAC CollectionBuilder: the closed popover's ListBox
|
|
9
|
+
// registers its items in a build pass), and the HiddenSelect renders after the children (form value, autofill).
|
|
10
|
+
// Rivet:
|
|
11
|
+
// - render props are accessors (`class={({ isOpen }) => (isOpen() ? "open" : "")}`); `class` = RAC `className`,
|
|
12
|
+
// default `rv-Select`.
|
|
13
|
+
// - state = `createSelectState({ collection })` (react-stately useSelectState with the built collection; region
|
|
14
|
+
// state): the closed trigger's typeahead / ArrowLeft / ArrowRight, HiddenSelect options and SelectValue read the
|
|
15
|
+
// built items through `selectEntries`. The ListBox renders on a list state over the same collection whose
|
|
16
|
+
// selection mirrors the value (`syncListSelection`, as the items preset).
|
|
17
|
+
// - trigger: useMenuTrigger press callbacks (`selectTriggerPressStart` / `selectTriggerPress`) + the useSelect
|
|
18
|
+
// keyboard / focus handlers, given to the `<Button>` through `ButtonContext` (RAC: `triggerProps`).
|
|
19
|
+
// - the trigger's `aria-labelledby` / `aria-describedby` follow the Label / description / error parts that render
|
|
20
|
+
// (RA useSlot / useSlotId); server: a slot probe (`probeSlots`) marks them before the trigger renders.
|
|
21
|
+
// - `render` (RAC DOMRenderProps) replaces the root `<div>` (`render(attrs, renderProps)`).
|
|
22
|
+
import { effect, signal, untrack } from "@rivetjs/reactivity";
|
|
23
|
+
import { clientEffect, ref as createRef } from "@rivetjs/runtime/dom";
|
|
24
|
+
import { focusSafely } from "../focus/index.js";
|
|
25
|
+
import { isSlot, renderSlot } from "@rivetjs/runtime/slot";
|
|
26
|
+
import { ButtonContext } from "../button/index.jsx";
|
|
27
|
+
import { collectionOf, isHidden } from "../collections/components.jsx";
|
|
28
|
+
import { probeSlots, slotProbing } from "#server";
|
|
29
|
+
import { FieldErrorContext } from "../form/field-error.jsx";
|
|
30
|
+
import { useValidationBehavior, useValidationErrors } from "../form/index.jsx";
|
|
31
|
+
import { resolveLocale } from "../i18n/index.js";
|
|
32
|
+
import { formatMessage } from "../_adapters/intl.js";
|
|
33
|
+
import { LabelContext } from "../label/index.jsx";
|
|
34
|
+
import { ListBoxContext, ListStateContext } from "../listbox/index.jsx";
|
|
35
|
+
import { OverlayTriggerStateContext, PopoverContext } from "../overlay/contexts.js";
|
|
36
|
+
import { createMultipleSelectionState } from "../selection/state.js";
|
|
37
|
+
import { displayValidation } from "../state/form-validation.js";
|
|
38
|
+
import { createSelectState, isSelectDisabled, isSelectRequired, selectedKeys, } from "../state/select.js";
|
|
39
|
+
import { TextContext } from "../text/index.jsx";
|
|
40
|
+
import { dataBool } from "../utils/data-attrs.jsx";
|
|
41
|
+
import { liveOptions } from "../utils/live.jsx";
|
|
42
|
+
import { renderPropsOf } from "../slots/index.jsx";
|
|
43
|
+
import { read } from "../interactions/utils.js";
|
|
44
|
+
import { globalDOMProps } from "../utils/dom-props.js";
|
|
45
|
+
import { Provider, contextProps, createSlot, createSlotId, renderProps, slotIdRef, } from "../slots/index.jsx";
|
|
46
|
+
import { HiddenSelect } from "./hidden-select.jsx";
|
|
47
|
+
import { strings } from "./intl.js";
|
|
48
|
+
import { SelectContext, SelectStateContext, SelectValueContext } from "./select-value.jsx";
|
|
49
|
+
import { listId, popoverId, selectFocusWithin, selectLabelClick, selectListBlur, selectListChange, selectDisabled, selectDisabledAttr, selectRequiredAttr, selectProps, selectTriggerBlur, selectTriggerFocus, selectTriggerKeyDown, selectTriggerKeyDownCapture, selectTriggerKeyUp, selectTriggerPress, selectTriggerPressStart, syncListSelection, triggerId, TRIGGER_KEYS, valueId, } from "./behaviour.jsx";
|
|
50
|
+
// Contexts to clear inside the popover.
|
|
51
|
+
const CLEAR_CONTEXTS = [LabelContext, ButtonContext, TextContext];
|
|
52
|
+
const OWNED = ["style"];
|
|
53
|
+
/** RAC Select, parts form: builds the collection from the children, then renders `SelectPartsInner`. */
|
|
54
|
+
export function SelectParts(input) {
|
|
55
|
+
// RAC createHideableComponent: nothing inside a parent's collection build pass.
|
|
56
|
+
if (isHidden())
|
|
57
|
+
return null;
|
|
58
|
+
const [ctxProps, ref] = contextProps(input.props, input.props.ref, SelectContext);
|
|
59
|
+
// Live props (P5): `isDisabled` / `isInvalid` and the controlled `value` / `selectedKey` become accessors at the
|
|
60
|
+
// boundary (the select state reads them live); body reads are read once (untracked).
|
|
61
|
+
const props = liveOptions(ctxProps, LIVE_KEYS, CONTROLLED_KEYS);
|
|
62
|
+
return untrack(() => selectParts(props, ref));
|
|
63
|
+
}
|
|
64
|
+
/** Live by default (LIVE-SWEEP); read once: `id`, `name`, `form`, `selectionMode`, `disabledKeys`, `aria-label` /
|
|
65
|
+
* `aria-labelledby`, `autoFocus`, `autoComplete`, `defaultValue`, `validationBehavior`, `validate`, handlers. */
|
|
66
|
+
const LIVE_KEYS = ["isDisabled", "isInvalid", "isRequired", "placeholder", "aria-describedby"];
|
|
67
|
+
const CONTROLLED_KEYS = ["value", "selectedKey"];
|
|
68
|
+
function selectParts(props, ref) {
|
|
69
|
+
const { children } = props;
|
|
70
|
+
const disabledProp = props.isDisabled, requiredProp = props.isRequired;
|
|
71
|
+
const staticInvalid = typeof props.isInvalid === "function" ? false : props.isInvalid || false;
|
|
72
|
+
// RAC `useMemo(children(...))` + CollectionBuilder: the ListBox registers its items. Object-literal function value
|
|
73
|
+
// (a resumable symbol: the region state keeps the collection accessor).
|
|
74
|
+
const build = {
|
|
75
|
+
content: () => typeof children === "function" && !isSlot(children)
|
|
76
|
+
? children({
|
|
77
|
+
isOpen: () => false,
|
|
78
|
+
isFocused: () => false,
|
|
79
|
+
isFocusVisible: () => false,
|
|
80
|
+
isDisabled: () => !!read(disabledProp),
|
|
81
|
+
isInvalid: () => staticInvalid,
|
|
82
|
+
isRequired: () => !!read(requiredProp),
|
|
83
|
+
defaultChildren: null,
|
|
84
|
+
})
|
|
85
|
+
: renderSlot(children),
|
|
86
|
+
};
|
|
87
|
+
const collection = collectionOf(build.content);
|
|
88
|
+
return <SelectPartsInner props={props} collection={() => collection()} selectRef={ref}/>;
|
|
89
|
+
}
|
|
90
|
+
function SelectPartsInner(input) {
|
|
91
|
+
return untrack(() => selectPartsInner(input));
|
|
92
|
+
}
|
|
93
|
+
function selectPartsInner(input) {
|
|
94
|
+
// Inside another field's server slot probe (`probeSlots`): this field's subtree holds none of that field's slots.
|
|
95
|
+
if (slotProbing)
|
|
96
|
+
return null;
|
|
97
|
+
const { props, collection, selectRef: ref } = input;
|
|
98
|
+
const validationBehavior = useValidationBehavior(props.validationBehavior);
|
|
99
|
+
const state = createSelectState({
|
|
100
|
+
...props,
|
|
101
|
+
items: undefined,
|
|
102
|
+
collection,
|
|
103
|
+
validationBehavior,
|
|
104
|
+
validationErrors: useValidationErrors(),
|
|
105
|
+
});
|
|
106
|
+
const single = state.selectionMode === "single";
|
|
107
|
+
// Live props (P5): the live accessor (or the creation value) for bags / contexts; bindings read `isSelectDisabled`.
|
|
108
|
+
const isDisabled = selectDisabled(state);
|
|
109
|
+
const buttonRef = createRef();
|
|
110
|
+
// The listbox's selection: controlled by the value (`syncListSelection`), a pick reports through `selectListChange`
|
|
111
|
+
// (useSelectState: single keeps its key on re-press, duplicate events close the menu). Its own const: a resumable
|
|
112
|
+
// closure must not reference the object it is created in.
|
|
113
|
+
const listKeys = signal(new Set(untrack(() => selectedKeys(state))));
|
|
114
|
+
const selection = {
|
|
115
|
+
...createMultipleSelectionState({
|
|
116
|
+
selectionMode: state.selectionMode,
|
|
117
|
+
disallowEmptySelection: single,
|
|
118
|
+
allowDuplicateSelectionEvents: true,
|
|
119
|
+
selectedKeys: listKeys,
|
|
120
|
+
disabledKeys: state.disabledKeys,
|
|
121
|
+
onSelectionChange: (keys) => selectListChange(state, listKeys, keys, buttonRef()),
|
|
122
|
+
}),
|
|
123
|
+
controlled: true,
|
|
124
|
+
};
|
|
125
|
+
// The listbox shows the current value however the menu opened, and follows it while open.
|
|
126
|
+
effect(() => syncListSelection(state, listKeys, selectedKeys(state)));
|
|
127
|
+
// RA useSlot: whether a Label renders (the trigger is labelled by it).
|
|
128
|
+
const initialLabel = !props["aria-label"] && !props["aria-labelledby"];
|
|
129
|
+
const [labelRef, hasLabel] = createSlot(initialLabel);
|
|
130
|
+
const aria = selectProps({ label: initialLabel, description: true, "aria-label": props["aria-label"], "aria-labelledby": props["aria-labelledby"] }, state);
|
|
131
|
+
// Without a rendered Label (read only when `initialLabel`, i.e. no aria name either): useSelect labels the trigger by
|
|
132
|
+
// its value alone and the menu not at all. Not a second `selectProps` call: `labelProps` would log its dev "no
|
|
133
|
+
// visible label" warning for every Select (it did, 2026-10-12, also with a `<Label>` child).
|
|
134
|
+
const labelledBy = aria.triggerProps["aria-labelledby"], labelledByNoLabel = valueId(state);
|
|
135
|
+
const menuLabelledBy = aria.menuProps["aria-labelledby"], menuLabelledByNoLabel = undefined;
|
|
136
|
+
const ownDescribedBy = props["aria-describedby"];
|
|
137
|
+
// RA useSlotId: the description / error ids are described-by while their part renders.
|
|
138
|
+
const validation = state.validation;
|
|
139
|
+
const isInvalid = () => displayValidation(validation).isInvalid;
|
|
140
|
+
const descriptionId = createSlotId(aria.ids.descriptionId);
|
|
141
|
+
const errorId = createSlotId(aria.ids.errorMessageId, isInvalid);
|
|
142
|
+
const { onFocus, onBlur, onFocusChange, onKeyDown, onKeyUp } = props;
|
|
143
|
+
const callbacks = { onFocus, onBlur, onFocusChange, onKeyDown, onKeyUp };
|
|
144
|
+
const locale = resolveLocale();
|
|
145
|
+
const placeholder = props.placeholder ?? formatMessage(strings, locale, "selectPlaceholder");
|
|
146
|
+
const autoFocus = props.autoFocus, autoComplete = props.autoComplete;
|
|
147
|
+
const listBoxRef = createRef();
|
|
148
|
+
// RA useFocusable autoFocus (the trigger Button only sets the attribute, which a client-rendered button ignores).
|
|
149
|
+
if (autoFocus) {
|
|
150
|
+
const auto = { done: false };
|
|
151
|
+
clientEffect(() => {
|
|
152
|
+
const el = buttonRef();
|
|
153
|
+
if (!auto.done && el)
|
|
154
|
+
untrack(() => focusSafely(el));
|
|
155
|
+
auto.done = true;
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
// The ListBox's list state (RAC ListStateContext = the select state): the built collection + the value-controlled selection.
|
|
159
|
+
const listState = {
|
|
160
|
+
id: listId(state),
|
|
161
|
+
selectionState: selection,
|
|
162
|
+
disabledKeys: selection.disabledKeys,
|
|
163
|
+
items: undefined,
|
|
164
|
+
children: undefined,
|
|
165
|
+
collection: () => collection(),
|
|
166
|
+
filter: undefined,
|
|
167
|
+
suppressTextValueWarning: false,
|
|
168
|
+
layoutDelegate: undefined,
|
|
169
|
+
};
|
|
170
|
+
// A const arrow (resumable closure): the FieldErrorContext value.
|
|
171
|
+
const fieldValidation = () => displayValidation(validation);
|
|
172
|
+
const values = [
|
|
173
|
+
[SelectContext, { placeholder }],
|
|
174
|
+
[SelectStateContext, state],
|
|
175
|
+
[SelectValueContext, { id: valueId(state) }],
|
|
176
|
+
[
|
|
177
|
+
LabelContext,
|
|
178
|
+
{
|
|
179
|
+
id: aria.labelProps.id,
|
|
180
|
+
elementType: "span",
|
|
181
|
+
ref: labelRef,
|
|
182
|
+
onClick: (event) => selectLabelClick(state, event),
|
|
183
|
+
},
|
|
184
|
+
],
|
|
185
|
+
[
|
|
186
|
+
ButtonContext,
|
|
187
|
+
{
|
|
188
|
+
id: triggerId(state),
|
|
189
|
+
ref: buttonRef,
|
|
190
|
+
"aria-haspopup": "listbox",
|
|
191
|
+
"aria-expanded": () => (state.isOpen() ? "true" : "false"),
|
|
192
|
+
"aria-controls": () => (state.isOpen() ? listId(state) : undefined),
|
|
193
|
+
"aria-label": aria.triggerProps["aria-label"],
|
|
194
|
+
"aria-labelledby": () => (!initialLabel || hasLabel() ? labelledBy : labelledByNoLabel),
|
|
195
|
+
// Server: the slot probe below has marked the parts that render (`probeSlots`), so no id is kept on expectation.
|
|
196
|
+
"aria-describedby": () => [slotIdRef(descriptionId, false), slotIdRef(errorId, false), read(ownDescribedBy)].filter(Boolean).join(" ") || undefined,
|
|
197
|
+
"data-rk": TRIGGER_KEYS,
|
|
198
|
+
isDisabled,
|
|
199
|
+
autoFocus,
|
|
200
|
+
isPressed: () => state.isOpen(),
|
|
201
|
+
preventFocusOnPress: true,
|
|
202
|
+
onPressStart: (event) => selectTriggerPressStart(state, event),
|
|
203
|
+
onPress: (event) => selectTriggerPress(state, event),
|
|
204
|
+
onKeyDown: (event) => selectTriggerKeyDown(state, event, callbacks),
|
|
205
|
+
onKeyUp: (event) => selectTriggerKeyUp(state, event, callbacks),
|
|
206
|
+
onFocus: (event) => selectTriggerFocus(state, event, callbacks),
|
|
207
|
+
onBlur: (event) => selectTriggerBlur(state, event, callbacks),
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
[OverlayTriggerStateContext, state],
|
|
211
|
+
[
|
|
212
|
+
PopoverContext,
|
|
213
|
+
{
|
|
214
|
+
id: popoverId(state),
|
|
215
|
+
trigger: "Select",
|
|
216
|
+
triggerRef: buttonRef,
|
|
217
|
+
scrollRef: listBoxRef,
|
|
218
|
+
placement: "bottom start",
|
|
219
|
+
"aria-labelledby": () => (!initialLabel || hasLabel() ? menuLabelledBy : menuLabelledByNoLabel),
|
|
220
|
+
clearContexts: CLEAR_CONTEXTS,
|
|
221
|
+
},
|
|
222
|
+
],
|
|
223
|
+
[
|
|
224
|
+
ListBoxContext,
|
|
225
|
+
{
|
|
226
|
+
id: listId(state),
|
|
227
|
+
ref: listBoxRef,
|
|
228
|
+
"aria-labelledby": () => (!initialLabel || hasLabel() ? menuLabelledBy : menuLabelledByNoLabel),
|
|
229
|
+
autoFocus: () => untrack(state.focusStrategy) || true,
|
|
230
|
+
shouldSelectOnPressUp: true,
|
|
231
|
+
shouldFocusOnHover: true,
|
|
232
|
+
linkBehavior: "selection",
|
|
233
|
+
escapeKeyBehavior: "none",
|
|
234
|
+
onBlur: (event) => selectListBlur(state, event, callbacks),
|
|
235
|
+
},
|
|
236
|
+
],
|
|
237
|
+
[ListStateContext, listState],
|
|
238
|
+
[TextContext, { slots: { description: { id: descriptionId }, errorMessage: { id: errorId } } }],
|
|
239
|
+
[FieldErrorContext, fieldValidation],
|
|
240
|
+
];
|
|
241
|
+
// Values hoisted: no function in the `rp` initializer (spread sites capture `rp.class` / `rp.style`: per-key live views).
|
|
242
|
+
const rpValues = {
|
|
243
|
+
isOpen: () => state.isOpen(),
|
|
244
|
+
isFocused: () => state.isFocused(),
|
|
245
|
+
isFocusVisible: () => state.isFocused() && state.isFocusVisible(),
|
|
246
|
+
isDisabled: () => isSelectDisabled(state),
|
|
247
|
+
isInvalid,
|
|
248
|
+
isRequired: () => isSelectRequired(state),
|
|
249
|
+
};
|
|
250
|
+
const rp = renderPropsOf(props, { values: rpValues, defaultClassName: "rv-Select" });
|
|
251
|
+
// Rivet (server): the trigger renders before its Description / FieldError, and a resumed page never re-renders (RA
|
|
252
|
+
// useSlotId drops unrendered ids after hydration): probe which slotted parts render first.
|
|
253
|
+
if (typeof document === "undefined")
|
|
254
|
+
probeSlots(values, () => rp.children());
|
|
255
|
+
const dom = globalDOMProps(props, OWNED);
|
|
256
|
+
delete dom.id;
|
|
257
|
+
const slot = props.slot || undefined;
|
|
258
|
+
if (props.render) {
|
|
259
|
+
const attrs = {
|
|
260
|
+
...dom,
|
|
261
|
+
ref,
|
|
262
|
+
class: () => rp.class(),
|
|
263
|
+
style: () => rp.style(),
|
|
264
|
+
slot,
|
|
265
|
+
"data-focused": () => dataBool(state.isFocused()),
|
|
266
|
+
"data-focus-visible": () => dataBool(state.isFocused() && state.isFocusVisible()),
|
|
267
|
+
"data-open": () => dataBool(state.isOpen()),
|
|
268
|
+
"data-disabled": selectDisabledAttr(state),
|
|
269
|
+
"data-invalid": () => dataBool(isInvalid()),
|
|
270
|
+
"data-required": selectRequiredAttr(state),
|
|
271
|
+
onFocusIn: (event) => selectFocusWithin(state, event),
|
|
272
|
+
onFocusOut: (event) => selectFocusWithin(state, event),
|
|
273
|
+
onKeyDownCapture: (event) => selectTriggerKeyDownCapture(state, event),
|
|
274
|
+
children: () => [rp.children(), <HiddenSelect state={state} autoComplete={autoComplete} preloadVisible/>],
|
|
275
|
+
};
|
|
276
|
+
return (<Provider values={values}>
|
|
277
|
+
{props.render(attrs, {
|
|
278
|
+
isOpen: () => state.isOpen(),
|
|
279
|
+
isFocused: () => state.isFocused(),
|
|
280
|
+
isFocusVisible: () => state.isFocused() && state.isFocusVisible(),
|
|
281
|
+
isDisabled: () => isSelectDisabled(state),
|
|
282
|
+
isInvalid,
|
|
283
|
+
isRequired: () => isSelectRequired(state),
|
|
284
|
+
})}
|
|
285
|
+
</Provider>);
|
|
286
|
+
}
|
|
287
|
+
return (<Provider values={values}>
|
|
288
|
+
<div {...dom} ref={ref} class={rp.class()} style={rp.style()} slot={slot} data-focused={dataBool(state.isFocused())} data-focus-visible={dataBool(state.isFocused() && state.isFocusVisible())} data-open={dataBool(state.isOpen())} data-disabled={dataBool(isSelectDisabled(state))} data-invalid={dataBool(isInvalid())} data-required={dataBool(isSelectRequired(state))} preload="visible" onFocusIn={(event) => selectFocusWithin(state, event)} onFocusOut={(event) => selectFocusWithin(state, event)} onKeyDownCapture={(event) => selectTriggerKeyDownCapture(state, event)}>
|
|
289
|
+
{rp.children()}
|
|
290
|
+
<HiddenSelect state={state} autoComplete={autoComplete}/>
|
|
291
|
+
</div>
|
|
292
|
+
</Provider>);
|
|
293
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { Content, Slot } from "@rivetjs/runtime/jsx-runtime";
|
|
2
|
+
import { type ContextValue, type HTMLProps, type RefValue, type StyleObject } from "../slots/index.jsx";
|
|
3
|
+
import type { SelectionBehavior } from "../collections/types.js";
|
|
4
|
+
import { type Item, type SelectionMode, type SelectState } from "../state/select.js";
|
|
5
|
+
/**
|
|
6
|
+
* Option render props of the Select `children` slot (adapted from RAC `ListBoxItemRenderProps`: accessors, read
|
|
7
|
+
* them inside bindings). SelectValue renders the slot too, with the states off.
|
|
8
|
+
*/
|
|
9
|
+
export interface ItemRenderProps {
|
|
10
|
+
isSelected: () => boolean;
|
|
11
|
+
isFocused: () => boolean;
|
|
12
|
+
isDisabled: boolean;
|
|
13
|
+
selectionMode: SelectionMode | "none";
|
|
14
|
+
selectionBehavior: () => SelectionBehavior;
|
|
15
|
+
}
|
|
16
|
+
/** What a Select gives its SelectValue (RAC: the Select's own props through `SelectContext`). */
|
|
17
|
+
export interface SelectContextValue {
|
|
18
|
+
/** Temporary text that occupies the select when it is empty. @default 'Select an item' (localized). An accessor
|
|
19
|
+
* (a live `placeholder` prop) is read in the placeholder text binding. */
|
|
20
|
+
placeholder?: string | (() => string | undefined) | undefined;
|
|
21
|
+
/** Rivet: the option renderer of the items preset; SelectValue renders the selected items with it. */
|
|
22
|
+
renderItem?: Slot<[item: () => Item, states: ItemRenderProps]> | undefined;
|
|
23
|
+
}
|
|
24
|
+
/** RAC `SelectContext`. */
|
|
25
|
+
export declare const SelectContext: import("@rivetjs/reactivity").Context<ContextValue<SelectContextValue, HTMLDivElement>>;
|
|
26
|
+
/** RAC `SelectStateContext`: the state of the nearest Select (extra children can read and change it). */
|
|
27
|
+
export declare const SelectStateContext: import("@rivetjs/reactivity").Context<SelectState<SelectionMode> | null>;
|
|
28
|
+
/** RAC `SelectValueContext`: SelectValue props from the Select (`useSelect` `valueProps`: its `id`). */
|
|
29
|
+
export declare const SelectValueContext: import("@rivetjs/reactivity").Context<ContextValue<SelectValueProps, HTMLSpanElement>>;
|
|
30
|
+
/** RAC `SelectValueRenderProps` (accessors). */
|
|
31
|
+
export interface SelectValueRenderProps {
|
|
32
|
+
/** Whether the value is a placeholder. */
|
|
33
|
+
isPlaceholder: () => boolean;
|
|
34
|
+
/** @deprecated The item of the first selected key (RAC parts mode: its object value). */
|
|
35
|
+
selectedItem: () => any;
|
|
36
|
+
/** The items of the currently selected keys (RAC parts mode: their object values, `null` for static items). */
|
|
37
|
+
selectedItems: () => any[];
|
|
38
|
+
/** The textValue of the currently selected items. */
|
|
39
|
+
selectedText: () => string;
|
|
40
|
+
/** The state of the select. */
|
|
41
|
+
state: SelectState<SelectionMode>;
|
|
42
|
+
}
|
|
43
|
+
export interface SelectValueProps extends HTMLProps<"span"> {
|
|
44
|
+
/** @default 'rv-SelectValue' */
|
|
45
|
+
class?: string | ((values: SelectValueRenderProps & {
|
|
46
|
+
defaultClassName: string | undefined;
|
|
47
|
+
}) => string | undefined);
|
|
48
|
+
style?: StyleObject;
|
|
49
|
+
ref?: RefValue<HTMLSpanElement>;
|
|
50
|
+
/** Content, or a function of the render props (`defaultChildren`: the default content). */
|
|
51
|
+
children?: Content | ((values: SelectValueRenderProps & {
|
|
52
|
+
defaultChildren: Content | undefined;
|
|
53
|
+
}) => Content);
|
|
54
|
+
}
|
|
55
|
+
/** SelectValue `selectedText`: the text of a single item, or the items' texts as a localized list (reads the state). */
|
|
56
|
+
export declare function selectedText(state: SelectState<SelectionMode>, locale: string): string;
|
|
57
|
+
/** SelectValue renders the current value of a Select, or a placeholder if no value is selected. */
|
|
58
|
+
export declare function SelectValue(props: SelectValueProps): import("@rivetjs/runtime/jsx-runtime").CompiledElement | null;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// Ported from React Aria Components (Select.tsx: SelectValue, SelectContext, SelectStateContext,
|
|
2
|
+
// SelectValueContext), Apache-2.0, © Adobe.
|
|
3
|
+
//
|
|
4
|
+
// SelectValue renders the current value of a Select, or a placeholder if no value is selected. It is
|
|
5
|
+
// usually placed within the trigger button.
|
|
6
|
+
// Rivet:
|
|
7
|
+
// - render props are accessors (`({ selectedItems, isPlaceholder }) => …` with `selectedItems()`), the
|
|
8
|
+
// slots convention (`../slots/index.tsx`); the content sits in a keyed region (`Show keyed` on the selected keys: re-created when they change), so a value that turns
|
|
9
|
+
// from the placeholder text into elements on a resumed page re-renders as a region, never as a text
|
|
10
|
+
// binding ("Resumed text bindings must stay text").
|
|
11
|
+
// - default children: the selected items' content — the Select's item renderer (`SelectContext`
|
|
12
|
+
// `renderItem`, the items preset's option renderer, called with item states off as RAC calls the item's
|
|
13
|
+
// render function) or the item label — and for multiple selection a localized list (`Intl.ListFormat`
|
|
14
|
+
// parts, each item in a `<span data-slot="value-item">`).
|
|
15
|
+
// - contexts are registered (`resumableContext`, ids `rv-select`, `rv-select-state`, `rv-select-value`):
|
|
16
|
+
// a re-created region on a resumed page is re-provided with the (serializable) select state.
|
|
17
|
+
// - RAC parts mode (the Select built its collection from the children): default children = each selected item's
|
|
18
|
+
// children (`ListBoxItem` content; a render function is called with every state off, as RAC), `selectedItems` /
|
|
19
|
+
// `selectedItem` = the items' object values (`null` for static items), as RAC. Hidden in a collection build pass
|
|
20
|
+
// (RAC createHideableComponent); the content clears `TextContext` (an item's `<Text slot="description">` must not
|
|
21
|
+
// take the Select's description id).
|
|
22
|
+
// Deviation (items preset): `selectedItems` are the data items (`{ key, label, textValue, … }`).
|
|
23
|
+
import { createContext } from "@rivetjs/reactivity";
|
|
24
|
+
import { Show } from "@rivetjs/runtime/dom";
|
|
25
|
+
import { isSlot, renderSlot } from "@rivetjs/runtime/slot";
|
|
26
|
+
import { listFormatter } from "../i18n/list-formatter.js";
|
|
27
|
+
import { resumableContext, useContext, contextProps, slottedContext, } from "../slots/index.jsx";
|
|
28
|
+
import { resolveLocale } from "../i18n/index.js";
|
|
29
|
+
import { formatMessage } from "../_adapters/intl.js";
|
|
30
|
+
import { selectedItems } from "../state/select.js";
|
|
31
|
+
import { isHiddenPart } from "../collections/hidden.js";
|
|
32
|
+
import { slotProbing } from "#server";
|
|
33
|
+
import { TextContext } from "../text/index.jsx";
|
|
34
|
+
import { Provider } from "../slots/index.jsx";
|
|
35
|
+
import { strings } from "./intl.js";
|
|
36
|
+
/** RAC `SelectContext`. */
|
|
37
|
+
export const SelectContext = resumableContext(createContext(null, { id: "rv-select" }));
|
|
38
|
+
/** RAC `SelectStateContext`: the state of the nearest Select (extra children can read and change it). */
|
|
39
|
+
export const SelectStateContext = resumableContext(createContext(null, { id: "rv-select-state" }));
|
|
40
|
+
/** RAC `SelectValueContext`: SelectValue props from the Select (`useSelect` `valueProps`: its `id`). */
|
|
41
|
+
export const SelectValueContext = resumableContext(createContext(null, { id: "rv-select-value" }));
|
|
42
|
+
const listFormat = (locale) => listFormatter(locale);
|
|
43
|
+
/** SelectValue `selectedText`: the text of a single item, or the items' texts as a localized list (reads the state). */
|
|
44
|
+
export function selectedText(state, locale) {
|
|
45
|
+
const texts = selectedItems(state).map((item) => item.textValue ?? item.label);
|
|
46
|
+
return state.selectionMode === "single" ? (texts[0] ?? "") : listFormat(locale).format(texts);
|
|
47
|
+
}
|
|
48
|
+
// RAC SelectValue calls an item's render-function children with every state off.
|
|
49
|
+
const ITEM_OFF = {
|
|
50
|
+
isHovered: () => false,
|
|
51
|
+
isPressed: () => false,
|
|
52
|
+
isSelected: () => false,
|
|
53
|
+
isFocused: () => false,
|
|
54
|
+
isFocusVisible: () => false,
|
|
55
|
+
isDisabled: () => false,
|
|
56
|
+
selectionMode: "single",
|
|
57
|
+
selectionBehavior: () => "toggle",
|
|
58
|
+
allowsDragging: false,
|
|
59
|
+
isDragging: () => false,
|
|
60
|
+
isDropTarget: () => false,
|
|
61
|
+
};
|
|
62
|
+
/** Whether the state's items come from a built collection (RAC parts mode). */
|
|
63
|
+
const isParts = (state) => state.items === undefined && !!state.collection;
|
|
64
|
+
/** A built item's children (RAC `item.props.children`; a render function gets the states off). */
|
|
65
|
+
function itemContent(item) {
|
|
66
|
+
const content = item.content;
|
|
67
|
+
if (typeof content === "function" && !isSlot(content))
|
|
68
|
+
return content(ITEM_OFF);
|
|
69
|
+
return content != null ? renderSlot(content) : item.label;
|
|
70
|
+
}
|
|
71
|
+
const OFF = {
|
|
72
|
+
isSelected: () => false,
|
|
73
|
+
isFocused: () => false,
|
|
74
|
+
isDisabled: false,
|
|
75
|
+
selectionBehavior: () => "toggle",
|
|
76
|
+
};
|
|
77
|
+
/** RAC SelectValue `defaultChildren`: the selected items' content (multiple: a localized list); null when none. */
|
|
78
|
+
function defaultContent(state, locale, render) {
|
|
79
|
+
const items = selectedItems(state);
|
|
80
|
+
if (!items.length)
|
|
81
|
+
return null;
|
|
82
|
+
const parts = isParts(state);
|
|
83
|
+
const content = (item) => (render ? render(() => item, { ...OFF, selectionMode: "single" }) : parts ? itemContent(item) : item.label);
|
|
84
|
+
if (state.selectionMode === "single")
|
|
85
|
+
return content(items[0]);
|
|
86
|
+
let index = 0;
|
|
87
|
+
return (<>
|
|
88
|
+
{listFormat(locale)
|
|
89
|
+
.formatToParts(items.map((item) => item.textValue ?? item.label))
|
|
90
|
+
.map((part) => (part.type === "element" ? <span data-slot="value-item">{content(items[index++])}</span> : part.value))}
|
|
91
|
+
</>);
|
|
92
|
+
}
|
|
93
|
+
/** A live placeholder's text (a returned arrow: resumable), the localized default when it reads `undefined`. */
|
|
94
|
+
function livePlaceholder(placeholder, locale) {
|
|
95
|
+
return () => placeholder() ?? formatMessage(strings, locale, "selectPlaceholder");
|
|
96
|
+
}
|
|
97
|
+
function placeholderBranch(text) {
|
|
98
|
+
return () => text;
|
|
99
|
+
}
|
|
100
|
+
/** SelectValue renders the current value of a Select, or a placeholder if no value is selected. */
|
|
101
|
+
export function SelectValue(props) {
|
|
102
|
+
// RAC createHideableComponent: nothing in the Select's collection build pass.
|
|
103
|
+
if (slotProbing || isHiddenPart())
|
|
104
|
+
return null;
|
|
105
|
+
const [merged, ref] = contextProps(props, props.ref, SelectValueContext);
|
|
106
|
+
const state = useContext(SelectStateContext);
|
|
107
|
+
const select = (slottedContext(SelectContext) ?? {});
|
|
108
|
+
const locale = resolveLocale();
|
|
109
|
+
const placeholderProp = select.placeholder;
|
|
110
|
+
// A live `placeholder` (accessor) stays text: the fallback branch binds it (static path: the string, unchanged).
|
|
111
|
+
const placeholder = typeof placeholderProp === "function" ? livePlaceholder(placeholderProp, locale) : (placeholderProp ?? formatMessage(strings, locale, "selectPlaceholder"));
|
|
112
|
+
// `Show` calls a function fallback once as its branch: the live one returns the text accessor (a text binding).
|
|
113
|
+
const fallback = typeof placeholder === "function" ? placeholderBranch(placeholder) : placeholder;
|
|
114
|
+
const renderItem = select.renderItem;
|
|
115
|
+
const { children, class: className, style, ...domProps } = merged;
|
|
116
|
+
// RAC parts mode: the items' object values (`item.value ?? null`); items preset: the data items.
|
|
117
|
+
const parts = isParts(state);
|
|
118
|
+
const values = {
|
|
119
|
+
isPlaceholder: () => selectedItems(state).length === 0,
|
|
120
|
+
selectedItem: () => (parts ? (selectedItems(state)[0]?.value ?? null) : (selectedItems(state)[0] ?? null)),
|
|
121
|
+
selectedItems: () => (parts ? selectedItems(state).map((item) => item.value ?? null) : selectedItems(state)),
|
|
122
|
+
selectedText: () => selectedText(state, locale),
|
|
123
|
+
state,
|
|
124
|
+
};
|
|
125
|
+
// Region key: the selected items (re-renders the content when they change; "" = placeholder).
|
|
126
|
+
const selectionKey = () => selectedItems(state)
|
|
127
|
+
.map((item) => typeof item.key + ":" + String(item.key))
|
|
128
|
+
.join(" ");
|
|
129
|
+
// Split at component time (a render function vs content), never in a binding reading signals.
|
|
130
|
+
const fn = typeof children === "function" && !isSlot(children) ? children : null;
|
|
131
|
+
const content = fn ? null : children;
|
|
132
|
+
const r = ref;
|
|
133
|
+
return (<span {...domProps} ref={r} class={typeof className === "function" ? className({ ...values, defaultClassName: "rv-SelectValue" }) : (className ?? "rv-SelectValue")} style={style} data-placeholder={values.isPlaceholder() ? "true" : undefined}>
|
|
134
|
+
<Provider values={[[TextContext, null]]}>
|
|
135
|
+
{fn ? (<Show when={() => "v" + selectionKey()} keyed>
|
|
136
|
+
{() => fn({ ...values, defaultChildren: defaultContent(state, locale, renderItem) ?? placeholder })}
|
|
137
|
+
</Show>) : content != null ? (renderSlot(content)) : (<Show when={selectionKey} keyed fallback={fallback}>
|
|
138
|
+
{() => defaultContent(state, locale, renderItem)}
|
|
139
|
+
</Show>)}
|
|
140
|
+
</Provider>
|
|
141
|
+
</span>);
|
|
142
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PointerType } from "./manager.js";
|
|
2
|
+
export type { Modality } from "../interactions/focus-visible.jsx";
|
|
3
|
+
export { _setInteractionModality, getInteractionModality, noteModality as trackModality } from "../interactions/focus-visible.jsx";
|
|
4
|
+
export { isVirtualPointerEvent } from "../platform/index.js";
|
|
5
|
+
export { getScrollParents, isScrollable, nodeContains, scrollIntoView, scrollIntoViewport } from "../utils/dom.js";
|
|
6
|
+
export { focusWithoutScrolling } from "../utils/index.js";
|
|
7
|
+
export { focusSafely } from "../focus/index.js";
|
|
8
|
+
export { isOpeningLink } from "../utils/links.jsx";
|
|
9
|
+
/** Pointer type of a DOM event (press-event `pointerType`): keyboard, virtual (screen readers / `element.click()`), mouse / pen / touch. */
|
|
10
|
+
export declare function pointerTypeOf(event: Event): PointerType;
|
|
11
|
+
export declare function getVirtuallyFocusedElement(doc: Document): Element | null;
|
|
12
|
+
export declare function dispatchVirtualBlur(from: Element, to: Element | null): void;
|
|
13
|
+
export declare function dispatchVirtualFocus(to: Element, from: Element | null): void;
|
|
14
|
+
/** Move virtual focus (aria-activedescendant targets) from the current element to `to`. */
|
|
15
|
+
export declare function moveVirtualFocus(to: Element | null): void;
|
|
16
|
+
/**
|
|
17
|
+
* Open a link item like a click on it: an anchor opens itself (react-aria `openLink`, modifiers
|
|
18
|
+
* honoured, `linkState.isOpening` set); any other element with `href` gets a temporary anchor.
|
|
19
|
+
*/
|
|
20
|
+
export declare function openLink(target: HTMLElement, modifiers: {
|
|
21
|
+
metaKey?: boolean;
|
|
22
|
+
ctrlKey?: boolean;
|
|
23
|
+
altKey?: boolean;
|
|
24
|
+
shiftKey?: boolean;
|
|
25
|
+
}, href?: string): void;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
// Ported from @react-aria/focus (virtualFocus.ts: getVirtuallyFocusedElement, dispatchVirtualBlur /
|
|
2
|
+
// Focus, moveVirtualFocus), Apache-2.0, © Adobe.
|
|
3
|
+
//
|
|
4
|
+
// Everything else the selection hooks need is re-exported from the package's single implementations:
|
|
5
|
+
// modality from `../interactions/focus-visible.tsx` (`trackModality` = `noteModality`), scrolling and
|
|
6
|
+
// `nodeContains` from `../utils/dom.ts`, `focusSafely` from `../focus`, `focusWithoutScrolling` from
|
|
7
|
+
// `../utils`, virtual events from `../platform`, `openLink` / `isOpeningLink` from `../utils/links.tsx`.
|
|
8
|
+
// `pointerTypeOf(event)` (Rivet: the press pointer type of any DOM event) lives here.
|
|
9
|
+
import { isVirtualPointerEvent } from "../platform/index.js";
|
|
10
|
+
import { openLink as openAnchor } from "../utils/links.jsx";
|
|
11
|
+
export { _setInteractionModality, getInteractionModality, noteModality as trackModality } from "../interactions/focus-visible.jsx";
|
|
12
|
+
export { isVirtualPointerEvent } from "../platform/index.js";
|
|
13
|
+
export { getScrollParents, isScrollable, nodeContains, scrollIntoView, scrollIntoViewport } from "../utils/dom.js";
|
|
14
|
+
export { focusWithoutScrolling } from "../utils/index.js";
|
|
15
|
+
export { focusSafely } from "../focus/index.js";
|
|
16
|
+
export { isOpeningLink } from "../utils/links.jsx";
|
|
17
|
+
/** Pointer type of a DOM event (press-event `pointerType`): keyboard, virtual (screen readers / `element.click()`), mouse / pen / touch. */
|
|
18
|
+
export function pointerTypeOf(event) {
|
|
19
|
+
if (event.type.startsWith("key"))
|
|
20
|
+
return "keyboard";
|
|
21
|
+
if (event.type.startsWith("pointer") && isVirtualPointerEvent(event))
|
|
22
|
+
return "virtual";
|
|
23
|
+
const pointer = event.pointerType;
|
|
24
|
+
if (pointer === "mouse" || pointer === "pen" || pointer === "touch")
|
|
25
|
+
return pointer;
|
|
26
|
+
if (event.type.startsWith("touch"))
|
|
27
|
+
return "touch";
|
|
28
|
+
// Virtual clicks: screen readers / element.click() (detail 0, no pointer).
|
|
29
|
+
if (event.type === "click" && event.detail === 0 && !pointer)
|
|
30
|
+
return "virtual";
|
|
31
|
+
return "mouse";
|
|
32
|
+
}
|
|
33
|
+
export function getVirtuallyFocusedElement(doc) {
|
|
34
|
+
const activeElement = doc.activeElement;
|
|
35
|
+
const activeDescendant = activeElement?.getAttribute("aria-activedescendant");
|
|
36
|
+
if (activeDescendant)
|
|
37
|
+
return doc.getElementById(activeDescendant) || activeElement;
|
|
38
|
+
return activeElement;
|
|
39
|
+
}
|
|
40
|
+
export function dispatchVirtualBlur(from, to) {
|
|
41
|
+
from.dispatchEvent(new FocusEvent("blur", { relatedTarget: to }));
|
|
42
|
+
from.dispatchEvent(new FocusEvent("focusout", { bubbles: true, relatedTarget: to }));
|
|
43
|
+
}
|
|
44
|
+
export function dispatchVirtualFocus(to, from) {
|
|
45
|
+
to.dispatchEvent(new FocusEvent("focus", { relatedTarget: from }));
|
|
46
|
+
to.dispatchEvent(new FocusEvent("focusin", { bubbles: true, relatedTarget: from }));
|
|
47
|
+
}
|
|
48
|
+
/** Move virtual focus (aria-activedescendant targets) from the current element to `to`. */
|
|
49
|
+
export function moveVirtualFocus(to) {
|
|
50
|
+
if (typeof document === "undefined")
|
|
51
|
+
return;
|
|
52
|
+
const from = getVirtuallyFocusedElement(to?.ownerDocument ?? document);
|
|
53
|
+
if (from !== to) {
|
|
54
|
+
if (from)
|
|
55
|
+
dispatchVirtualBlur(from, to);
|
|
56
|
+
if (to)
|
|
57
|
+
dispatchVirtualFocus(to, from);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Open a link item like a click on it: an anchor opens itself (react-aria `openLink`, modifiers
|
|
62
|
+
* honoured, `linkState.isOpening` set); any other element with `href` gets a temporary anchor.
|
|
63
|
+
*/
|
|
64
|
+
export function openLink(target, modifiers, href) {
|
|
65
|
+
if (target instanceof HTMLAnchorElement && (!href || target.getAttribute("href") === href))
|
|
66
|
+
return openAnchor(target, modifiers);
|
|
67
|
+
if (!href)
|
|
68
|
+
return;
|
|
69
|
+
const anchor = target.ownerDocument.createElement("a");
|
|
70
|
+
anchor.href = href;
|
|
71
|
+
const t = target.getAttribute("target");
|
|
72
|
+
if (t)
|
|
73
|
+
anchor.target = t;
|
|
74
|
+
target.appendChild(anchor);
|
|
75
|
+
openAnchor(anchor, modifiers);
|
|
76
|
+
anchor.remove();
|
|
77
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type Signal } from "@rivetjs/reactivity";
|
|
2
|
+
import type { Key, Selection } from "../collections/types.js";
|
|
3
|
+
/** The state shape the helpers read (both `selection/state.ts` and `_adapters/collections.ts` states). */
|
|
4
|
+
export interface KeyedSelectionSource {
|
|
5
|
+
readonly selectedKeys?: Signal<Selection> | undefined;
|
|
6
|
+
readonly selectedKey?: Signal<Key | null> | undefined;
|
|
7
|
+
readonly focusedKey: Signal<Key | null>;
|
|
8
|
+
}
|
|
9
|
+
/** `selectionOf` result: not selected, in the selected Set, or covered by an "all" selection. */
|
|
10
|
+
export declare const NOT_SELECTED = 0, IN_SELECTION = 1, ALL_SELECTED = 2;
|
|
11
|
+
export type KeySelection = typeof NOT_SELECTED | typeof IN_SELECTION | typeof ALL_SELECTED;
|
|
12
|
+
/** Whether `key` is in the selection (`IN_SELECTION`), covered by "all" (`ALL_SELECTED`) or not; tracked per key. */
|
|
13
|
+
export declare function selectionOf(state: KeyedSelectionSource, key: Key): KeySelection;
|
|
14
|
+
/** Whether the selection is empty (not "all", no keys); a binding re-runs only when that flips. */
|
|
15
|
+
export declare function isSelectionEmpty(state: KeyedSelectionSource): boolean;
|
|
16
|
+
/** `state.focusedKey() === key`, tracked per key. */
|
|
17
|
+
export declare function isFocusedKey(state: KeyedSelectionSource, key: Key): boolean;
|
|
18
|
+
/** `state.focusedKey() != null`; a binding re-runs only when that flips (not on every focus move). */
|
|
19
|
+
export declare function hasFocusedKey(state: KeyedSelectionSource): boolean;
|