@rivetjs/cdk 0.0.0-stage → 0.1.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +483 -0
- package/README.md +10 -2
- package/_adapters/collection.d.ts +160 -0
- package/_adapters/collection.js +235 -0
- package/_adapters/collections.d.ts +325 -0
- package/_adapters/collections.js +934 -0
- package/_adapters/dom-collection.d.ts +42 -0
- package/_adapters/dom-collection.js +228 -0
- package/_adapters/grid-selection.d.ts +115 -0
- package/_adapters/grid-selection.js +436 -0
- package/_adapters/interactions.d.ts +19 -0
- package/_adapters/interactions.js +45 -0
- package/_adapters/intl.d.ts +8 -0
- package/_adapters/intl.js +106 -0
- package/_adapters/press.d.ts +22 -0
- package/_adapters/press.js +34 -0
- package/_adapters/selectable.d.ts +132 -0
- package/_adapters/selectable.js +599 -0
- package/_adapters/selection.d.ts +109 -0
- package/_adapters/selection.js +685 -0
- package/_adapters/type-select.d.ts +8 -0
- package/_adapters/type-select.js +59 -0
- package/a11y/aria-describer.d.ts +46 -0
- package/a11y/aria-describer.js +169 -0
- package/a11y/focus-monitor.d.ts +98 -0
- package/a11y/focus-monitor.js +321 -0
- package/a11y/focus-trap.d.ts +137 -0
- package/a11y/focus-trap.js +378 -0
- package/a11y/high-contrast.d.ts +26 -0
- package/a11y/high-contrast.js +84 -0
- package/a11y/index.d.ts +37 -0
- package/a11y/index.js +97 -0
- package/a11y/interactivity-checker.d.ts +18 -0
- package/a11y/interactivity-checker.js +126 -0
- package/a11y/key-manager.d.ts +152 -0
- package/a11y/key-manager.js +397 -0
- package/a11y/live-announcer.d.ts +53 -0
- package/a11y/live-announcer.js +143 -0
- package/accordion/index.d.ts +2 -0
- package/accordion/index.jsx +10 -0
- package/announcer/index.d.ts +8 -0
- package/announcer/index.jsx +22 -0
- package/announcer/live-announcer.d.ts +15 -0
- package/announcer/live-announcer.js +123 -0
- package/autocomplete/behaviour.d.ts +94 -0
- package/autocomplete/behaviour.jsx +423 -0
- package/autocomplete/contexts.d.ts +54 -0
- package/autocomplete/contexts.js +28 -0
- package/autocomplete/index.d.ts +12 -0
- package/autocomplete/index.jsx +31 -0
- package/autocomplete/intl.d.ts +2 -0
- package/autocomplete/intl.js +36 -0
- package/bidi/bidi-dir.d.ts +23 -0
- package/bidi/bidi-dir.jsx +36 -0
- package/bidi/index.d.ts +58 -0
- package/bidi/index.js +84 -0
- package/breadcrumbs/behaviour.d.ts +6 -0
- package/breadcrumbs/behaviour.js +17 -0
- package/breadcrumbs/index.d.ts +68 -0
- package/breadcrumbs/index.jsx +224 -0
- package/breadcrumbs/intl.d.ts +3 -0
- package/breadcrumbs/intl.js +104 -0
- package/button/behaviour.d.ts +61 -0
- package/button/behaviour.js +90 -0
- package/button/index.d.ts +38 -0
- package/button/index.jsx +374 -0
- package/button/press.d.ts +25 -0
- package/button/press.js +54 -0
- package/calendar/behaviour.d.ts +250 -0
- package/calendar/behaviour.jsx +939 -0
- package/calendar/index.d.ts +157 -0
- package/calendar/index.jsx +484 -0
- package/calendar/intl.d.ts +3 -0
- package/calendar/intl.js +36 -0
- package/carousel/behaviour.d.ts +50 -0
- package/carousel/behaviour.jsx +365 -0
- package/carousel/engine/Alignment.d.ts +5 -0
- package/carousel/engine/Alignment.js +24 -0
- package/carousel/engine/Animations.d.ts +13 -0
- package/carousel/engine/Animations.js +28 -0
- package/carousel/engine/Axis.d.ts +14 -0
- package/carousel/engine/Axis.js +35 -0
- package/carousel/engine/Counter.d.ts +7 -0
- package/carousel/engine/Counter.js +32 -0
- package/carousel/engine/DragHandler.d.ts +22 -0
- package/carousel/engine/DragHandler.js +141 -0
- package/carousel/engine/DragTracker.d.ts +10 -0
- package/carousel/engine/DragTracker.js +29 -0
- package/carousel/engine/EmblaCarousel.d.ts +32 -0
- package/carousel/engine/EmblaCarousel.js +177 -0
- package/carousel/engine/Engine.d.ts +64 -0
- package/carousel/engine/Engine.js +137 -0
- package/carousel/engine/EventHandler.d.ts +27 -0
- package/carousel/engine/EventHandler.js +33 -0
- package/carousel/engine/EventStore.d.ts +9 -0
- package/carousel/engine/EventStore.js +25 -0
- package/carousel/engine/NodeRects.d.ts +12 -0
- package/carousel/engine/NodeRects.js +18 -0
- package/carousel/engine/Options.d.ts +40 -0
- package/carousel/engine/Options.js +22 -0
- package/carousel/engine/OptionsHandler.d.ts +10 -0
- package/carousel/engine/OptionsHandler.js +26 -0
- package/carousel/engine/PercentOfView.d.ts +4 -0
- package/carousel/engine/PercentOfView.js +9 -0
- package/carousel/engine/Plugins.d.ts +16 -0
- package/carousel/engine/Plugins.js +1 -0
- package/carousel/engine/PluginsHandler.d.ts +8 -0
- package/carousel/engine/PluginsHandler.js +16 -0
- package/carousel/engine/ResizeHandler.d.ts +13 -0
- package/carousel/engine/ResizeHandler.js +51 -0
- package/carousel/engine/ScrollBounds.d.ts +10 -0
- package/carousel/engine/ScrollBounds.js +41 -0
- package/carousel/engine/ScrollContain.d.ts +7 -0
- package/carousel/engine/ScrollContain.js +52 -0
- package/carousel/engine/ScrollLimit.d.ts +5 -0
- package/carousel/engine/ScrollLimit.js +13 -0
- package/carousel/engine/ScrollLooper.d.ts +6 -0
- package/carousel/engine/ScrollLooper.js +26 -0
- package/carousel/engine/ScrollProgress.d.ts +5 -0
- package/carousel/engine/ScrollProgress.js +11 -0
- package/carousel/engine/ScrollSnaps.d.ts +9 -0
- package/carousel/engine/ScrollSnaps.js +26 -0
- package/carousel/engine/ScrollTarget.d.ts +12 -0
- package/carousel/engine/ScrollTarget.js +47 -0
- package/carousel/engine/ScrollTo.d.ts +11 -0
- package/carousel/engine/ScrollTo.js +36 -0
- package/carousel/engine/SlideFocus.d.ts +13 -0
- package/carousel/engine/SlideFocus.js +39 -0
- package/carousel/engine/SlideLooper.d.ts +18 -0
- package/carousel/engine/SlideLooper.js +78 -0
- package/carousel/engine/SlideRegistry.d.ts +7 -0
- package/carousel/engine/SlideRegistry.js +31 -0
- package/carousel/engine/SlideSizes.d.ts +10 -0
- package/carousel/engine/SlideSizes.js +41 -0
- package/carousel/engine/SlidesHandler.d.ts +10 -0
- package/carousel/engine/SlidesHandler.js +36 -0
- package/carousel/engine/SlidesInView.d.ts +8 -0
- package/carousel/engine/SlidesInView.js +59 -0
- package/carousel/engine/SlidesToScroll.d.ts +7 -0
- package/carousel/engine/SlidesToScroll.js +41 -0
- package/carousel/engine/Translate.d.ts +7 -0
- package/carousel/engine/Translate.js +38 -0
- package/carousel/engine/index.d.ts +11 -0
- package/carousel/engine/index.js +1 -0
- package/carousel/engine/utils.d.ts +15 -0
- package/carousel/engine/utils.js +45 -0
- package/carousel/index.d.ts +202 -0
- package/carousel/index.jsx +469 -0
- package/carousel/plugins/auto-height/AutoHeight.d.ts +14 -0
- package/carousel/plugins/auto-height/AutoHeight.js +43 -0
- package/carousel/plugins/auto-height/Options.d.ts +2 -0
- package/carousel/plugins/auto-height/Options.js +1 -0
- package/carousel/plugins/auto-height/index.d.ts +2 -0
- package/carousel/plugins/auto-height/index.js +1 -0
- package/carousel/plugins/auto-scroll/AutoScroll.d.ts +25 -0
- package/carousel/plugins/auto-scroll/AutoScroll.js +185 -0
- package/carousel/plugins/auto-scroll/Options.d.ts +13 -0
- package/carousel/plugins/auto-scroll/Options.js +12 -0
- package/carousel/plugins/auto-scroll/index.d.ts +2 -0
- package/carousel/plugins/auto-scroll/index.js +1 -0
- package/carousel/plugins/auto-scroll/utils.d.ts +3 -0
- package/carousel/plugins/auto-scroll/utils.js +4 -0
- package/carousel/plugins/autoplay/Autoplay.d.ts +29 -0
- package/carousel/plugins/autoplay/Autoplay.js +173 -0
- package/carousel/plugins/autoplay/Options.d.ts +14 -0
- package/carousel/plugins/autoplay/Options.js +12 -0
- package/carousel/plugins/autoplay/index.d.ts +2 -0
- package/carousel/plugins/autoplay/index.js +1 -0
- package/carousel/plugins/autoplay/utils.d.ts +4 -0
- package/carousel/plugins/autoplay/utils.js +11 -0
- package/carousel/plugins/class-names/ClassNames.d.ts +14 -0
- package/carousel/plugins/class-names/ClassNames.js +98 -0
- package/carousel/plugins/class-names/Options.d.ts +13 -0
- package/carousel/plugins/class-names/Options.js +9 -0
- package/carousel/plugins/class-names/index.d.ts +2 -0
- package/carousel/plugins/class-names/index.js +1 -0
- package/carousel/plugins/class-names/utils.d.ts +4 -0
- package/carousel/plugins/class-names/utils.js +14 -0
- package/carousel/plugins/fade/Fade.d.ts +14 -0
- package/carousel/plugins/fade/Fade.js +199 -0
- package/carousel/plugins/fade/Options.d.ts +2 -0
- package/carousel/plugins/fade/Options.js +1 -0
- package/carousel/plugins/fade/index.d.ts +2 -0
- package/carousel/plugins/fade/index.js +1 -0
- package/carousel/plugins/fade/utils.d.ts +2 -0
- package/carousel/plugins/fade/utils.js +8 -0
- package/carousel/state.d.ts +81 -0
- package/carousel/state.js +71 -0
- package/chat/index.d.ts +83 -0
- package/chat/index.jsx +287 -0
- package/checkbox/behaviour.d.ts +172 -0
- package/checkbox/behaviour.jsx +412 -0
- package/checkbox/index.d.ts +168 -0
- package/checkbox/index.jsx +310 -0
- package/clipboard/index.d.ts +49 -0
- package/clipboard/index.js +136 -0
- package/coercion/index.d.ts +36 -0
- package/coercion/index.js +58 -0
- package/collections/base.d.ts +115 -0
- package/collections/base.js +346 -0
- package/collections/builder.d.ts +44 -0
- package/collections/builder.js +283 -0
- package/collections/components.d.ts +217 -0
- package/collections/components.jsx +537 -0
- package/collections/data-source.d.ts +26 -0
- package/collections/data-source.js +27 -0
- package/collections/dom.d.ts +34 -0
- package/collections/dom.js +127 -0
- package/collections/grid.d.ts +45 -0
- package/collections/grid.js +125 -0
- package/collections/hidden.d.ts +4 -0
- package/collections/hidden.js +12 -0
- package/collections/index.d.ts +45 -0
- package/collections/index.js +105 -0
- package/collections/list-state.d.ts +99 -0
- package/collections/list-state.js +156 -0
- package/collections/list.d.ts +20 -0
- package/collections/list.js +77 -0
- package/collections/nodes.d.ts +9 -0
- package/collections/nodes.js +81 -0
- package/collections/selection-model.d.ts +93 -0
- package/collections/selection-model.js +192 -0
- package/collections/server-dev.d.ts +5 -0
- package/collections/server-dev.js +16 -0
- package/collections/server-off.d.ts +5 -0
- package/collections/server-off.js +7 -0
- package/collections/server-on.d.ts +28 -0
- package/collections/server-on.jsx +76 -0
- package/collections/table.d.ts +114 -0
- package/collections/table.js +439 -0
- package/collections/tree-state.d.ts +47 -0
- package/collections/tree-state.js +73 -0
- package/collections/tree.d.ts +20 -0
- package/collections/tree.js +66 -0
- package/collections/types.d.ts +229 -0
- package/collections/types.js +4 -0
- package/collections/unique-selection-dispatcher.d.ts +10 -0
- package/collections/unique-selection-dispatcher.js +25 -0
- package/color/area-state.d.ts +99 -0
- package/color/area-state.js +160 -0
- package/color/aria-intl.d.ts +3 -0
- package/color/aria-intl.js +274 -0
- package/color/channel-field-state.d.ts +50 -0
- package/color/channel-field-state.jsx +87 -0
- package/color/color.d.ts +78 -0
- package/color/color.js +738 -0
- package/color/field-state.d.ts +66 -0
- package/color/field-state.jsx +159 -0
- package/color/index.d.ts +58 -0
- package/color/index.js +88 -0
- package/color/intl.d.ts +3 -0
- package/color/intl.js +1328 -0
- package/color/picker-state.d.ts +20 -0
- package/color/picker-state.js +19 -0
- package/color/slider-state.d.ts +78 -0
- package/color/slider-state.jsx +98 -0
- package/color/value.d.ts +27 -0
- package/color/value.js +36 -0
- package/color/wheel-state.d.ts +77 -0
- package/color/wheel-state.js +152 -0
- package/color-area/behaviour.d.ts +161 -0
- package/color-area/behaviour.jsx +454 -0
- package/color-area/index.d.ts +34 -0
- package/color-area/index.jsx +187 -0
- package/color-field/behaviour.d.ts +112 -0
- package/color-field/behaviour.jsx +262 -0
- package/color-field/index.d.ts +72 -0
- package/color-field/index.jsx +309 -0
- package/color-picker/index.d.ts +19 -0
- package/color-picker/index.jsx +49 -0
- package/color-slider/behaviour.d.ts +103 -0
- package/color-slider/behaviour.jsx +234 -0
- package/color-slider/index.d.ts +40 -0
- package/color-slider/index.jsx +162 -0
- package/color-swatch/behaviour.d.ts +40 -0
- package/color-swatch/behaviour.js +36 -0
- package/color-swatch/index.d.ts +29 -0
- package/color-swatch/index.jsx +82 -0
- package/color-swatch-picker/index.d.ts +62 -0
- package/color-swatch-picker/index.jsx +95 -0
- package/color-swatch-picker/intl.d.ts +3 -0
- package/color-swatch-picker/intl.js +104 -0
- package/color-thumb/index.d.ts +85 -0
- package/color-thumb/index.jsx +93 -0
- package/color-wheel/behaviour.d.ts +123 -0
- package/color-wheel/behaviour.jsx +301 -0
- package/color-wheel/index.d.ts +50 -0
- package/color-wheel/index.jsx +166 -0
- package/combobox/behaviour.d.ts +120 -0
- package/combobox/behaviour.jsx +588 -0
- package/combobox/index.d.ts +101 -0
- package/combobox/index.jsx +365 -0
- package/combobox/intl.d.ts +2 -0
- package/combobox/intl.js +240 -0
- package/compare/behaviour.d.ts +101 -0
- package/compare/behaviour.js +288 -0
- package/compare/index.d.ts +58 -0
- package/compare/index.jsx +129 -0
- package/data/async-list.d.ts +78 -0
- package/data/async-list.jsx +257 -0
- package/data/index.d.ts +3 -0
- package/data/index.jsx +6 -0
- package/data/list-data.d.ts +88 -0
- package/data/list-data.jsx +210 -0
- package/data/tree-data.d.ts +59 -0
- package/data/tree-data.jsx +278 -0
- package/data-grid/behaviour.d.ts +95 -0
- package/data-grid/behaviour.js +725 -0
- package/data-grid/index.d.ts +138 -0
- package/data-grid/index.jsx +452 -0
- package/data-grid/state.d.ts +131 -0
- package/data-grid/state.js +288 -0
- package/date/CalendarDate.d.ts +207 -0
- package/date/CalendarDate.js +374 -0
- package/date/DateFormatter.d.ts +24 -0
- package/date/DateFormatter.js +175 -0
- package/date/calendars/BuddhistCalendar.d.ts +16 -0
- package/date/calendars/BuddhistCalendar.js +46 -0
- package/date/calendars/EthiopicCalendar.d.ts +45 -0
- package/date/calendars/EthiopicCalendar.js +178 -0
- package/date/calendars/GregorianCalendar.d.ts +26 -0
- package/date/calendars/GregorianCalendar.js +122 -0
- package/date/calendars/HebrewCalendar.d.ts +21 -0
- package/date/calendars/HebrewCalendar.js +174 -0
- package/date/calendars/IndianCalendar.d.ts +17 -0
- package/date/calendars/IndianCalendar.js +111 -0
- package/date/calendars/IslamicCalendar.d.ts +51 -0
- package/date/calendars/IslamicCalendar.js +205 -0
- package/date/calendars/JapaneseCalendar.d.ts +22 -0
- package/date/calendars/JapaneseCalendar.js +148 -0
- package/date/calendars/PersianCalendar.d.ts +19 -0
- package/date/calendars/PersianCalendar.js +85 -0
- package/date/calendars/TaiwanCalendar.d.ts +19 -0
- package/date/calendars/TaiwanCalendar.js +70 -0
- package/date/conversion.d.ts +45 -0
- package/date/conversion.js +269 -0
- package/date/createCalendar.d.ts +3 -0
- package/date/createCalendar.js +55 -0
- package/date/index.d.ts +20 -0
- package/date/index.js +30 -0
- package/date/manipulation.d.ts +25 -0
- package/date/manipulation.js +399 -0
- package/date/queries.d.ts +93 -0
- package/date/queries.js +303 -0
- package/date/serialize.d.ts +18 -0
- package/date/serialize.js +55 -0
- package/date/string.d.ts +36 -0
- package/date/string.js +223 -0
- package/date/types.d.ts +136 -0
- package/date/types.js +14 -0
- package/date/utils.d.ts +4 -0
- package/date/utils.js +16 -0
- package/date/weekStartData.d.ts +1 -0
- package/date/weekStartData.js +112 -0
- package/date-field/behaviour.d.ts +188 -0
- package/date-field/behaviour.jsx +1025 -0
- package/date-field/index.d.ts +150 -0
- package/date-field/index.jsx +354 -0
- package/date-field/intl.d.ts +3 -0
- package/date-field/intl.js +36 -0
- package/date-field/live-value.d.ts +22 -0
- package/date-field/live-value.jsx +44 -0
- package/date-picker/behaviour.d.ts +95 -0
- package/date-picker/behaviour.jsx +343 -0
- package/date-picker/index.d.ts +66 -0
- package/date-picker/index.jsx +243 -0
- package/dialog/behaviour.d.ts +63 -0
- package/dialog/behaviour.jsx +90 -0
- package/dialog/contexts.d.ts +12 -0
- package/dialog/contexts.js +8 -0
- package/dialog/index.d.ts +48 -0
- package/dialog/index.jsx +301 -0
- package/disclosure/behaviour.d.ts +50 -0
- package/disclosure/behaviour.jsx +128 -0
- package/disclosure/details.d.ts +21 -0
- package/disclosure/details.jsx +14 -0
- package/disclosure/index.d.ts +92 -0
- package/disclosure/index.jsx +300 -0
- package/drag-drop/cdk-index.d.ts +22 -0
- package/drag-drop/cdk-index.jsx +25 -0
- package/drag-drop/directives/assertions.d.ts +6 -0
- package/drag-drop/directives/assertions.js +13 -0
- package/drag-drop/directives/config.d.ts +30 -0
- package/drag-drop/directives/config.js +7 -0
- package/drag-drop/directives/drag-handle.d.ts +10 -0
- package/drag-drop/directives/drag-handle.js +29 -0
- package/drag-drop/directives/drag.d.ts +194 -0
- package/drag-drop/directives/drag.js +522 -0
- package/drag-drop/directives/drop-list-group.d.ts +25 -0
- package/drag-drop/directives/drop-list-group.js +55 -0
- package/drag-drop/directives/drop-list.d.ts +163 -0
- package/drag-drop/directives/drop-list.js +396 -0
- package/drag-drop/directives/registry.d.ts +32 -0
- package/drag-drop/directives/registry.js +61 -0
- package/drag-drop/dom/clone-node.d.ts +2 -0
- package/drag-drop/dom/clone-node.js +58 -0
- package/drag-drop/dom/coerce.d.ts +6 -0
- package/drag-drop/dom/coerce.js +8 -0
- package/drag-drop/dom/dom-rect.d.ts +37 -0
- package/drag-drop/dom/dom-rect.js +71 -0
- package/drag-drop/dom/fake-event.d.ts +4 -0
- package/drag-drop/dom/fake-event.js +22 -0
- package/drag-drop/dom/inherited-text.d.ts +4 -0
- package/drag-drop/dom/inherited-text.js +44 -0
- package/drag-drop/dom/layout-shift.d.ts +8 -0
- package/drag-drop/dom/layout-shift.js +87 -0
- package/drag-drop/dom/mount-content.d.ts +2 -0
- package/drag-drop/dom/mount-content.js +7 -0
- package/drag-drop/dom/parent-position-tracker.d.ts +32 -0
- package/drag-drop/dom/parent-position-tracker.js +71 -0
- package/drag-drop/dom/root-node.d.ts +21 -0
- package/drag-drop/dom/root-node.js +41 -0
- package/drag-drop/dom/shadow-dom.d.ts +4 -0
- package/drag-drop/dom/shadow-dom.js +18 -0
- package/drag-drop/dom/styling.d.ts +52 -0
- package/drag-drop/dom/styling.js +86 -0
- package/drag-drop/dom/transition-duration.d.ts +2 -0
- package/drag-drop/dom/transition-duration.js +29 -0
- package/drag-drop/drag-drop-registry.d.ts +69 -0
- package/drag-drop/drag-drop-registry.js +224 -0
- package/drag-drop/drag-drop.d.ts +19 -0
- package/drag-drop/drag-drop.js +10 -0
- package/drag-drop/drag-events.d.ts +117 -0
- package/drag-drop/drag-events.js +1 -0
- package/drag-drop/drag-handle.d.ts +18 -0
- package/drag-drop/drag-handle.jsx +53 -0
- package/drag-drop/drag-placeholder.d.ts +8 -0
- package/drag-drop/drag-placeholder.jsx +25 -0
- package/drag-drop/drag-preview.d.ts +10 -0
- package/drag-drop/drag-preview.jsx +31 -0
- package/drag-drop/drag-ref.d.ts +476 -0
- package/drag-drop/drag-ref.js +1306 -0
- package/drag-drop/drag-utils.d.ts +25 -0
- package/drag-drop/drag-utils.js +53 -0
- package/drag-drop/drag.d.ts +23 -0
- package/drag-drop/drag.jsx +126 -0
- package/drag-drop/drop-list-group.d.ts +22 -0
- package/drag-drop/drop-list-group.jsx +19 -0
- package/drag-drop/drop-list-ref.d.ts +295 -0
- package/drag-drop/drop-list-ref.js +707 -0
- package/drag-drop/drop-list.d.ts +19 -0
- package/drag-drop/drop-list.jsx +87 -0
- package/drag-drop/index.d.ts +1 -0
- package/drag-drop/index.jsx +4 -0
- package/drag-drop/lazy-refs.d.ts +28 -0
- package/drag-drop/lazy-refs.js +133 -0
- package/drag-drop/preview-ref.d.ts +38 -0
- package/drag-drop/preview-ref.js +132 -0
- package/drag-drop/sorting/drop-list-sort-strategy.d.ts +29 -0
- package/drag-drop/sorting/drop-list-sort-strategy.js +1 -0
- package/drag-drop/sorting/mixed-sort-strategy.d.ts +99 -0
- package/drag-drop/sorting/mixed-sort-strategy.js +259 -0
- package/drag-drop/sorting/single-axis-sort-strategy.d.ts +112 -0
- package/drag-drop/sorting/single-axis-sort-strategy.js +343 -0
- package/file-trigger/index.d.ts +24 -0
- package/file-trigger/index.jsx +41 -0
- package/flip/index.d.ts +59 -0
- package/flip/index.js +124 -0
- package/focus/focus-ring.d.ts +42 -0
- package/focus/focus-ring.jsx +77 -0
- package/focus/focus-scope.d.ts +51 -0
- package/focus/focus-scope.jsx +431 -0
- package/focus/focusable.d.ts +33 -0
- package/focus/focusable.jsx +93 -0
- package/focus/index.d.ts +74 -0
- package/focus/index.js +274 -0
- package/form/behaviour.d.ts +29 -0
- package/form/behaviour.js +145 -0
- package/form/field-error.d.ts +38 -0
- package/form/field-error.jsx +67 -0
- package/form/index.d.ts +77 -0
- package/form/index.jsx +116 -0
- package/grid/behaviour.d.ts +290 -0
- package/grid/behaviour.js +683 -0
- package/grid/intl.d.ts +2 -0
- package/grid/intl.js +36 -0
- package/grid/keyboard-delegate.d.ts +56 -0
- package/grid/keyboard-delegate.js +316 -0
- package/grid-list/behaviour.d.ts +242 -0
- package/grid-list/behaviour.js +598 -0
- package/grid-list/index.d.ts +202 -0
- package/grid-list/index.jsx +685 -0
- package/grid-list/row.d.ts +24 -0
- package/grid-list/row.js +57 -0
- package/group/index.d.ts +48 -0
- package/group/index.jsx +126 -0
- package/header/index.d.ts +13 -0
- package/header/index.jsx +34 -0
- package/heading/index.d.ts +19 -0
- package/heading/index.jsx +55 -0
- package/highlight/index.d.ts +12 -0
- package/highlight/index.jsx +357 -0
- package/i18n/filter.d.ts +16 -0
- package/i18n/filter.js +66 -0
- package/i18n/i18n-provider.d.ts +10 -0
- package/i18n/i18n-provider.jsx +15 -0
- package/i18n/index.d.ts +27 -0
- package/i18n/index.js +115 -0
- package/i18n/intl-cache.d.ts +4 -0
- package/i18n/intl-cache.js +40 -0
- package/i18n/list-formatter.d.ts +2 -0
- package/i18n/list-formatter.js +11 -0
- package/input/index.d.ts +51 -0
- package/input/index.jsx +95 -0
- package/interactions/controllable.d.ts +42 -0
- package/interactions/controllable.js +67 -0
- package/interactions/focus-visible.d.ts +68 -0
- package/interactions/focus-visible.jsx +291 -0
- package/interactions/focus.d.ts +58 -0
- package/interactions/focus.jsx +152 -0
- package/interactions/hover.d.ts +54 -0
- package/interactions/hover.jsx +139 -0
- package/interactions/index.d.ts +1 -0
- package/interactions/index.js +3 -0
- package/interactions/interact-outside.d.ts +24 -0
- package/interactions/interact-outside.jsx +57 -0
- package/interactions/keyboard.d.ts +28 -0
- package/interactions/keyboard.jsx +51 -0
- package/interactions/long-press.d.ts +41 -0
- package/interactions/long-press.jsx +79 -0
- package/interactions/merge-props.d.ts +54 -0
- package/interactions/merge-props.jsx +257 -0
- package/interactions/move.d.ts +48 -0
- package/interactions/move.jsx +96 -0
- package/interactions/press.d.ts +129 -0
- package/interactions/press.jsx +538 -0
- package/interactions/pressable.d.ts +22 -0
- package/interactions/pressable.jsx +93 -0
- package/interactions/scroll-wheel.d.ts +20 -0
- package/interactions/scroll-wheel.jsx +40 -0
- package/interactions/utils.d.ts +53 -0
- package/interactions/utils.js +252 -0
- package/keyboard/index.d.ts +12 -0
- package/keyboard/index.jsx +34 -0
- package/keys/index.d.ts +68 -0
- package/keys/index.js +199 -0
- package/label/behaviour.d.ts +54 -0
- package/label/behaviour.js +60 -0
- package/label/index.d.ts +35 -0
- package/label/index.jsx +85 -0
- package/landmark/index.d.ts +10 -0
- package/landmark/index.jsx +35 -0
- package/landmark/manager.d.ts +50 -0
- package/landmark/manager.js +364 -0
- package/layout/index.d.ts +90 -0
- package/layout/index.js +207 -0
- package/lightbox/behaviour.d.ts +82 -0
- package/lightbox/behaviour.js +490 -0
- package/lightbox/captions/index.d.ts +39 -0
- package/lightbox/captions/index.jsx +44 -0
- package/lightbox/counter/index.d.ts +10 -0
- package/lightbox/counter/index.jsx +10 -0
- package/lightbox/download/index.d.ts +32 -0
- package/lightbox/download/index.jsx +89 -0
- package/lightbox/embed/index.d.ts +15 -0
- package/lightbox/embed/index.jsx +58 -0
- package/lightbox/fullscreen/index.d.ts +24 -0
- package/lightbox/fullscreen/index.jsx +80 -0
- package/lightbox/index.d.ts +129 -0
- package/lightbox/index.jsx +284 -0
- package/lightbox/inline/index.d.ts +18 -0
- package/lightbox/inline/index.jsx +15 -0
- package/lightbox/pdf/index.d.ts +18 -0
- package/lightbox/pdf/index.jsx +31 -0
- package/lightbox/share/index.d.ts +29 -0
- package/lightbox/share/index.jsx +43 -0
- package/lightbox/slideshow/index.d.ts +24 -0
- package/lightbox/slideshow/index.jsx +118 -0
- package/lightbox/state.d.ts +334 -0
- package/lightbox/state.js +192 -0
- package/lightbox/thumbnails/index.d.ts +54 -0
- package/lightbox/thumbnails/index.jsx +96 -0
- package/lightbox/video/index.d.ts +13 -0
- package/lightbox/video/index.jsx +42 -0
- package/lightbox/zoom/index.d.ts +67 -0
- package/lightbox/zoom/index.jsx +456 -0
- package/link/behaviour.d.ts +41 -0
- package/link/behaviour.js +58 -0
- package/link/index.d.ts +30 -0
- package/link/index.jsx +179 -0
- package/link/router.d.ts +1 -0
- package/link/router.js +5 -0
- package/listbox/behaviour.d.ts +175 -0
- package/listbox/behaviour.jsx +492 -0
- package/listbox/index.d.ts +129 -0
- package/listbox/index.jsx +596 -0
- package/markdown/index.d.ts +82 -0
- package/markdown/index.jsx +654 -0
- package/masonry/behaviour.d.ts +121 -0
- package/masonry/behaviour.js +676 -0
- package/masonry/flip.d.ts +27 -0
- package/masonry/flip.js +61 -0
- package/masonry/geometry.d.ts +44 -0
- package/masonry/geometry.js +184 -0
- package/masonry/index.d.ts +153 -0
- package/masonry/index.jsx +833 -0
- package/masonry/justified.d.ts +49 -0
- package/masonry/justified.js +250 -0
- package/masonry/layout.d.ts +200 -0
- package/masonry/layout.js +668 -0
- package/masonry/masonry-layout.d.ts +57 -0
- package/masonry/masonry-layout.js +159 -0
- package/masonry/masonry.css +29 -0
- package/menu/behaviour.d.ts +205 -0
- package/menu/behaviour.jsx +847 -0
- package/menu/index.d.ts +171 -0
- package/menu/index.jsx +671 -0
- package/menu/intl.d.ts +2 -0
- package/menu/intl.js +36 -0
- package/menu/safely-mouse-to-submenu.d.ts +12 -0
- package/menu/safely-mouse-to-submenu.js +128 -0
- package/meter/behaviour.d.ts +18 -0
- package/meter/behaviour.jsx +17 -0
- package/meter/index.d.ts +30 -0
- package/meter/index.jsx +85 -0
- package/modal/index.d.ts +79 -0
- package/modal/index.jsx +359 -0
- package/modal/provider.d.ts +47 -0
- package/modal/provider.jsx +105 -0
- package/morph/index.d.ts +91 -0
- package/morph/index.jsx +372 -0
- package/morph/item.d.ts +89 -0
- package/morph/item.jsx +546 -0
- package/motion/Animations.d.ts +17 -0
- package/motion/Animations.js +56 -0
- package/motion/DragRelease.d.ts +22 -0
- package/motion/DragRelease.js +26 -0
- package/motion/DragTracker.d.ts +7 -0
- package/motion/DragTracker.js +43 -0
- package/motion/Limit.d.ts +12 -0
- package/motion/Limit.js +37 -0
- package/motion/Motion1D.d.ts +38 -0
- package/motion/Motion1D.js +72 -0
- package/motion/ScrollBody.d.ts +13 -0
- package/motion/ScrollBody.js +75 -0
- package/motion/Vector1d.d.ts +8 -0
- package/motion/Vector1d.js +29 -0
- package/motion/index.d.ts +8 -0
- package/motion/index.js +12 -0
- package/motion/utils.d.ts +5 -0
- package/motion/utils.js +23 -0
- package/native-select/index.d.ts +46 -0
- package/native-select/index.jsx +99 -0
- package/navigation-tree/index.d.ts +43 -0
- package/navigation-tree/index.jsx +110 -0
- package/number/NumberFormatter.d.ts +28 -0
- package/number/NumberFormatter.js +144 -0
- package/number/NumberParser.d.ts +27 -0
- package/number/NumberParser.js +316 -0
- package/number/index.d.ts +5 -0
- package/number/index.jsx +17 -0
- package/number/number-field-state.d.ts +132 -0
- package/number/number-field-state.jsx +364 -0
- package/number-field/behaviour.d.ts +165 -0
- package/number-field/behaviour.jsx +512 -0
- package/number-field/index.d.ts +52 -0
- package/number-field/index.jsx +207 -0
- package/number-field/intl.d.ts +2 -0
- package/number-field/intl.js +36 -0
- package/observers/index.d.ts +70 -0
- package/observers/index.js +279 -0
- package/overflow/index.d.ts +93 -0
- package/overflow/index.jsx +267 -0
- package/overlay/aria-hide-outside.d.ts +12 -0
- package/overlay/aria-hide-outside.js +141 -0
- package/overlay/close-on-scroll.d.ts +1 -0
- package/overlay/close-on-scroll.js +6 -0
- package/overlay/contexts.d.ts +34 -0
- package/overlay/contexts.js +21 -0
- package/overlay/dismiss-button.d.ts +10 -0
- package/overlay/dismiss-button.jsx +18 -0
- package/overlay/hover-trigger.d.ts +54 -0
- package/overlay/hover-trigger.jsx +221 -0
- package/overlay/index.d.ts +40 -0
- package/overlay/index.js +139 -0
- package/overlay/modal-overlay.d.ts +16 -0
- package/overlay/modal-overlay.js +38 -0
- package/overlay/overlay-strings.d.ts +4 -0
- package/overlay/overlay-strings.js +52 -0
- package/overlay/overlay-trigger-state.d.ts +1 -0
- package/overlay/overlay-trigger-state.js +3 -0
- package/overlay/overlay-trigger.d.ts +27 -0
- package/overlay/overlay-trigger.jsx +50 -0
- package/overlay/position.d.ts +160 -0
- package/overlay/position.js +559 -0
- package/overlay/prevent-scroll-ios.d.ts +17 -0
- package/overlay/prevent-scroll-ios.js +331 -0
- package/overlay/prevent-scroll.d.ts +18 -0
- package/overlay/prevent-scroll.js +122 -0
- package/overlay/safe-area.d.ts +28 -0
- package/overlay/safe-area.js +108 -0
- package/overlay-arrow/index.d.ts +23 -0
- package/overlay-arrow/index.jsx +59 -0
- package/overlay-service/connected-position.d.ts +163 -0
- package/overlay-service/connected-position.js +661 -0
- package/overlay-service/global-position.d.ts +34 -0
- package/overlay-service/global-position.js +154 -0
- package/overlay-service/index.d.ts +15 -0
- package/overlay-service/index.js +27 -0
- package/overlay-service/overlay-container.d.ts +27 -0
- package/overlay-service/overlay-container.js +93 -0
- package/overlay-service/overlay-dispatchers.d.ts +44 -0
- package/overlay-service/overlay-dispatchers.js +149 -0
- package/overlay-service/overlay-position-builder.d.ts +8 -0
- package/overlay-service/overlay-position-builder.js +15 -0
- package/overlay-service/overlay-ref.d.ts +155 -0
- package/overlay-service/overlay-ref.js +436 -0
- package/overlay-service/overlay-strategy.d.ts +48 -0
- package/overlay-service/overlay-strategy.js +3 -0
- package/overlay-service/overlay-viewport.d.ts +85 -0
- package/overlay-service/overlay-viewport.js +192 -0
- package/overlay-service/overlay.css +94 -0
- package/overlay-service/scroll-strategies.d.ts +71 -0
- package/overlay-service/scroll-strategies.js +185 -0
- package/package.json +754 -4
- package/platform/index.d.ts +100 -0
- package/platform/index.js +304 -0
- package/popover/behaviour.d.ts +23 -0
- package/popover/behaviour.js +39 -0
- package/popover/index.d.ts +60 -0
- package/popover/index.jsx +285 -0
- package/popover/popover-overlay.d.ts +27 -0
- package/popover/popover-overlay.jsx +60 -0
- package/popover/use-popover.d.ts +57 -0
- package/popover/use-popover.js +92 -0
- package/portal/index.d.ts +47 -0
- package/portal/index.jsx +76 -0
- package/portal/portal-mount.d.ts +8 -0
- package/portal/portal-mount.js +7 -0
- package/portal/portal-outlet.d.ts +88 -0
- package/portal/portal-outlet.js +222 -0
- package/preview-trigger/behaviour.d.ts +70 -0
- package/preview-trigger/behaviour.jsx +258 -0
- package/preview-trigger/index.d.ts +12 -0
- package/preview-trigger/index.jsx +82 -0
- package/progress-bar/behaviour.d.ts +77 -0
- package/progress-bar/behaviour.jsx +75 -0
- package/progress-bar/context.d.ts +4 -0
- package/progress-bar/context.js +7 -0
- package/progress-bar/index.d.ts +38 -0
- package/progress-bar/index.jsx +90 -0
- package/radio-group/behaviour.d.ts +11 -0
- package/radio-group/behaviour.js +85 -0
- package/radio-group/index.d.ts +82 -0
- package/radio-group/index.jsx +139 -0
- package/radio-group/parts.d.ts +223 -0
- package/radio-group/parts.jsx +425 -0
- package/range-calendar/behaviour.d.ts +2 -0
- package/range-calendar/behaviour.jsx +5 -0
- package/range-calendar/index.d.ts +2 -0
- package/range-calendar/index.jsx +4 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.d.ts +1 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.js +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.d.ts +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.js +19 -0
- package/resizable/engine/components/group/readLegacyLayout.d.ts +16 -0
- package/resizable/engine/components/group/readLegacyLayout.js +48 -0
- package/resizable/engine/components/group/sortByElementOffset.d.ts +4 -0
- package/resizable/engine/components/group/sortByElementOffset.js +28 -0
- package/resizable/engine/components/group/types.d.ts +50 -0
- package/resizable/engine/components/group/types.js +1 -0
- package/resizable/engine/components/panel/types.d.ts +90 -0
- package/resizable/engine/components/panel/types.js +4 -0
- package/resizable/engine/constants.d.ts +15 -0
- package/resizable/engine/constants.js +27 -0
- package/resizable/engine/global/cursor/getCursorStyle.d.ts +7 -0
- package/resizable/engine/global/cursor/getCursorStyle.js +94 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.d.ts +5 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.js +20 -0
- package/resizable/engine/global/cursor/updateCursorStyle.d.ts +1 -0
- package/resizable/engine/global/cursor/updateCursorStyle.js +64 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.d.ts +4 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.js +10 -0
- package/resizable/engine/global/dom/calculateHitRegions.d.ts +13 -0
- package/resizable/engine/global/dom/calculateHitRegions.js +153 -0
- package/resizable/engine/global/dom/calculateItemConstraints.d.ts +2 -0
- package/resizable/engine/global/dom/calculateItemConstraints.js +82 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.js +9 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.js +28 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.js +97 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.js +18 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.js +8 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.js +54 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.js +22 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.js +69 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.js +20 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.js +15 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.js +11 -0
- package/resizable/engine/global/mountAxis.d.ts +2 -0
- package/resizable/engine/global/mountAxis.js +187 -0
- package/resizable/engine/global/mutable-state/axes.d.ts +37 -0
- package/resizable/engine/global/mutable-state/axes.js +52 -0
- package/resizable/engine/global/mutable-state/interactions.d.ts +17 -0
- package/resizable/engine/global/mutable-state/interactions.js +92 -0
- package/resizable/engine/global/mutable-state/types.d.ts +32 -0
- package/resizable/engine/global/mutable-state/types.js +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.js +7 -0
- package/resizable/engine/global/styles/convertRemToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertRemToPixels.js +7 -0
- package/resizable/engine/global/styles/convertVhToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVhToPixels.js +5 -0
- package/resizable/engine/global/styles/convertVwToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVwToPixels.js +5 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.d.ts +2 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.js +29 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.d.ts +5 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.js +38 -0
- package/resizable/engine/global/types.d.ts +120 -0
- package/resizable/engine/global/types.js +1 -0
- package/resizable/engine/global/utils/abortActivePointerResize.d.ts +9 -0
- package/resizable/engine/global/utils/abortActivePointerResize.js +52 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.d.ts +9 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.js +219 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.d.ts +1 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.js +48 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.d.ts +2 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.js +30 -0
- package/resizable/engine/global/utils/calculateResizePreviews.d.ts +3 -0
- package/resizable/engine/global/utils/calculateResizePreviews.js +39 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.d.ts +12 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.js +43 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.d.ts +1 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.js +11 -0
- package/resizable/engine/global/utils/completeActivePointerResize.d.ts +6 -0
- package/resizable/engine/global/utils/completeActivePointerResize.js +49 -0
- package/resizable/engine/global/utils/doRectsIntersect.d.ts +2 -0
- package/resizable/engine/global/utils/doRectsIntersect.js +3 -0
- package/resizable/engine/global/utils/expandHitTarget.d.ts +10 -0
- package/resizable/engine/global/utils/expandHitTarget.js +19 -0
- package/resizable/engine/global/utils/findClosestHitRegion.d.ts +9 -0
- package/resizable/engine/global/utils/findClosestHitRegion.js +35 -0
- package/resizable/engine/global/utils/findClosestRect.d.ts +6 -0
- package/resizable/engine/global/utils/findClosestRect.js +22 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.d.ts +7 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.js +29 -0
- package/resizable/engine/global/utils/findSeparatorAxis.d.ts +21 -0
- package/resizable/engine/global/utils/findSeparatorAxis.js +12 -0
- package/resizable/engine/global/utils/formatLayoutNumber.d.ts +1 -0
- package/resizable/engine/global/utils/formatLayoutNumber.js +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.d.ts +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.js +11 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.d.ts +5 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.js +6 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.d.ts +4 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.js +53 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.d.ts +5 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.js +169 -0
- package/resizable/engine/global/utils/isCoarsePointer.d.ts +4 -0
- package/resizable/engine/global/utils/isCoarsePointer.js +17 -0
- package/resizable/engine/global/utils/isModal.d.ts +1 -0
- package/resizable/engine/global/utils/isModal.js +11 -0
- package/resizable/engine/global/utils/isViableHitTarget.d.ts +5 -0
- package/resizable/engine/global/utils/isViableHitTarget.js +50 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.js +9 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.d.ts +1 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.js +6 -0
- package/resizable/engine/global/utils/layoutsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/layoutsEqual.js +15 -0
- package/resizable/engine/global/utils/normalizeLayout.d.ts +11 -0
- package/resizable/engine/global/utils/normalizeLayout.js +21 -0
- package/resizable/engine/global/utils/notifyItemOnResize.d.ts +2 -0
- package/resizable/engine/global/utils/notifyItemOnResize.js +23 -0
- package/resizable/engine/global/utils/objectsEqual.d.ts +1 -0
- package/resizable/engine/global/utils/objectsEqual.js +14 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.d.ts +7 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.js +53 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.d.ts +15 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.js +25 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.d.ts +18 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.js +119 -0
- package/resizable/engine/global/utils/validateAxisLayout.d.ts +5 -0
- package/resizable/engine/global/utils/validateAxisLayout.js +70 -0
- package/resizable/engine/global/utils/validateItemSize.d.ts +7 -0
- package/resizable/engine/global/utils/validateItemSize.js +31 -0
- package/resizable/engine/global/utils/validateLayoutKeys.d.ts +2 -0
- package/resizable/engine/global/utils/validateLayoutKeys.js +13 -0
- package/resizable/engine/types.d.ts +13 -0
- package/resizable/engine/types.js +1 -0
- package/resizable/engine/utils/EventEmitter.d.ts +11 -0
- package/resizable/engine/utils/EventEmitter.js +60 -0
- package/resizable/engine/utils/assert.d.ts +1 -0
- package/resizable/engine/utils/assert.js +7 -0
- package/resizable/engine/utils/isArrayEqual.d.ts +1 -0
- package/resizable/engine/utils/isArrayEqual.js +15 -0
- package/resizable/engine/utils/isHTMLElement.d.ts +1 -0
- package/resizable/engine/utils/isHTMLElement.js +6 -0
- package/resizable/engine/utils/isShadowRoot.d.ts +1 -0
- package/resizable/engine/utils/isShadowRoot.js +6 -0
- package/resizable/engine/vendor/stacking-order.d.ts +7 -0
- package/resizable/engine/vendor/stacking-order.js +122 -0
- package/resizable/index.d.ts +263 -0
- package/resizable/index.jsx +537 -0
- package/resizable/mount.d.ts +115 -0
- package/resizable/mount.js +540 -0
- package/scheduler/behaviour.d.ts +71 -0
- package/scheduler/behaviour.js +243 -0
- package/scheduler/context.d.ts +100 -0
- package/scheduler/context.jsx +7 -0
- package/scheduler/dates.d.ts +53 -0
- package/scheduler/dates.js +183 -0
- package/scheduler/drag.d.ts +20 -0
- package/scheduler/drag.js +361 -0
- package/scheduler/event.d.ts +26 -0
- package/scheduler/event.jsx +93 -0
- package/scheduler/index.d.ts +57 -0
- package/scheduler/index.jsx +303 -0
- package/scheduler/intl.d.ts +16 -0
- package/scheduler/intl.js +529 -0
- package/scheduler/keys-month.d.ts +7 -0
- package/scheduler/keys-month.js +110 -0
- package/scheduler/keys-time-grid.d.ts +9 -0
- package/scheduler/keys-time-grid.js +115 -0
- package/scheduler/keys.d.ts +103 -0
- package/scheduler/keys.js +527 -0
- package/scheduler/layout-index.d.ts +3 -0
- package/scheduler/layout-index.js +6 -0
- package/scheduler/layout.d.ts +285 -0
- package/scheduler/layout.js +378 -0
- package/scheduler/menus.d.ts +66 -0
- package/scheduler/menus.jsx +88 -0
- package/scheduler/month.d.ts +26 -0
- package/scheduler/month.jsx +215 -0
- package/scheduler/pointer.d.ts +64 -0
- package/scheduler/pointer.js +203 -0
- package/scheduler/select.d.ts +11 -0
- package/scheduler/select.js +64 -0
- package/scheduler/selection.d.ts +34 -0
- package/scheduler/selection.js +39 -0
- package/scheduler/state.d.ts +296 -0
- package/scheduler/state.js +496 -0
- package/scheduler/time-grid-client.d.ts +32 -0
- package/scheduler/time-grid-client.jsx +133 -0
- package/scheduler/time-grid.d.ts +26 -0
- package/scheduler/time-grid.jsx +266 -0
- package/scheduler/time.d.ts +35 -0
- package/scheduler/time.js +56 -0
- package/scheduler/toolbar.d.ts +43 -0
- package/scheduler/toolbar.jsx +38 -0
- package/scroll-area/dom.d.ts +11 -0
- package/scroll-area/dom.js +55 -0
- package/scroll-area/index.d.ts +96 -0
- package/scroll-area/index.jsx +884 -0
- package/scroll-area/presence.d.ts +12 -0
- package/scroll-area/presence.jsx +131 -0
- package/scrolling/auto-size-virtual-scroll.d.ts +53 -0
- package/scrolling/auto-size-virtual-scroll.js +213 -0
- package/scrolling/behaviour.d.ts +3 -0
- package/scrolling/behaviour.js +5 -0
- package/scrolling/emitter.d.ts +34 -0
- package/scrolling/emitter.js +144 -0
- package/scrolling/fixed-size-virtual-scroll.d.ts +28 -0
- package/scrolling/fixed-size-virtual-scroll.js +107 -0
- package/scrolling/index.d.ts +11 -0
- package/scrolling/index.jsx +13 -0
- package/scrolling/rtl.d.ts +16 -0
- package/scrolling/rtl.js +64 -0
- package/scrolling/scroll-dispatcher.d.ts +49 -0
- package/scrolling/scroll-dispatcher.js +107 -0
- package/scrolling/scrollable.d.ts +75 -0
- package/scrolling/scrollable.js +149 -0
- package/scrolling/scrolling.css +11 -0
- package/scrolling/state.d.ts +92 -0
- package/scrolling/state.js +94 -0
- package/scrolling/viewport-ruler.d.ts +47 -0
- package/scrolling/viewport-ruler.js +100 -0
- package/scrolling/viewport.d.ts +54 -0
- package/scrolling/viewport.jsx +105 -0
- package/scrolling/virtual-scroll-strategy.d.ts +41 -0
- package/scrolling/virtual-scroll-strategy.js +2 -0
- package/scrolling/virtual-scroll-viewport.d.ts +95 -0
- package/scrolling/virtual-scroll-viewport.js +370 -0
- package/search-field/behaviour.d.ts +62 -0
- package/search-field/behaviour.jsx +116 -0
- package/search-field/index.d.ts +57 -0
- package/search-field/index.jsx +158 -0
- package/search-field/intl.d.ts +2 -0
- package/search-field/intl.js +36 -0
- package/select/behaviour.d.ts +188 -0
- package/select/behaviour.jsx +445 -0
- package/select/hidden-select.d.ts +44 -0
- package/select/hidden-select.jsx +68 -0
- package/select/index.d.ts +123 -0
- package/select/index.jsx +255 -0
- package/select/intl.d.ts +2 -0
- package/select/intl.js +36 -0
- package/select/parts.d.ts +11 -0
- package/select/parts.jsx +12 -0
- package/select/select-parts.d.ts +73 -0
- package/select/select-parts.jsx +293 -0
- package/select/select-value.d.ts +58 -0
- package/select/select-value.jsx +142 -0
- package/selection/dom-utils.d.ts +25 -0
- package/selection/dom-utils.js +77 -0
- package/selection/keyed.d.ts +19 -0
- package/selection/keyed.js +76 -0
- package/selection/list-keyboard-delegate.d.ts +67 -0
- package/selection/list-keyboard-delegate.js +274 -0
- package/selection/manager.d.ts +112 -0
- package/selection/manager.js +340 -0
- package/selection/selectable-collection.d.ts +123 -0
- package/selection/selectable-collection.js +535 -0
- package/selection/selectable-item.d.ts +128 -0
- package/selection/selectable-item.js +486 -0
- package/selection/selectable-list.d.ts +42 -0
- package/selection/selectable-list.js +34 -0
- package/selection/state.d.ts +96 -0
- package/selection/state.js +131 -0
- package/selection/type-select.d.ts +37 -0
- package/selection/type-select.js +114 -0
- package/selection/utils.d.ts +23 -0
- package/selection/utils.js +38 -0
- package/selection-indicator/context.d.ts +10 -0
- package/selection-indicator/context.js +7 -0
- package/selection-indicator/index.d.ts +20 -0
- package/selection-indicator/index.jsx +25 -0
- package/separator/behaviour.d.ts +17 -0
- package/separator/behaviour.js +17 -0
- package/separator/index.d.ts +23 -0
- package/separator/index.jsx +64 -0
- package/shared-element-transition/index.d.ts +36 -0
- package/shared-element-transition/index.jsx +182 -0
- package/shared-element-transition/transition.d.ts +19 -0
- package/shared-element-transition/transition.jsx +20 -0
- package/sheet-motion/index.d.ts +82 -0
- package/sheet-motion/index.js +386 -0
- package/sidebar/index.d.ts +257 -0
- package/sidebar/index.jsx +624 -0
- package/sidebar/pages.d.ts +71 -0
- package/sidebar/pages.jsx +177 -0
- package/sidebar/resize.d.ts +69 -0
- package/sidebar/resize.js +237 -0
- package/sidebar/sheet-motion.d.ts +15 -0
- package/sidebar/sheet-motion.js +170 -0
- package/sidebar/state.d.ts +126 -0
- package/sidebar/state.js +204 -0
- package/slider/behaviour.d.ts +141 -0
- package/slider/behaviour.jsx +492 -0
- package/slider/index.d.ts +171 -0
- package/slider/index.jsx +392 -0
- package/slider/state.d.ts +203 -0
- package/slider/state.js +377 -0
- package/slots/index.d.ts +248 -0
- package/slots/index.jsx +473 -0
- package/spinbutton/behaviour.d.ts +66 -0
- package/spinbutton/behaviour.jsx +312 -0
- package/spinbutton/intl.d.ts +2 -0
- package/spinbutton/intl.js +36 -0
- package/state/autocomplete.d.ts +26 -0
- package/state/autocomplete.js +32 -0
- package/state/calendar.d.ts +284 -0
- package/state/calendar.js +755 -0
- package/state/checkbox-group.d.ts +67 -0
- package/state/checkbox-group.js +76 -0
- package/state/combobox.d.ts +238 -0
- package/state/combobox.js +708 -0
- package/state/date-field.d.ts +407 -0
- package/state/date-field.js +1117 -0
- package/state/date-intl.d.ts +3 -0
- package/state/date-intl.js +36 -0
- package/state/date-picker.d.ts +144 -0
- package/state/date-picker.js +387 -0
- package/state/disclosure.d.ts +90 -0
- package/state/disclosure.js +148 -0
- package/state/form-validation.d.ts +89 -0
- package/state/form-validation.js +158 -0
- package/state/grid.d.ts +62 -0
- package/state/grid.js +127 -0
- package/state/list.d.ts +58 -0
- package/state/list.js +124 -0
- package/state/menu.d.ts +159 -0
- package/state/menu.js +184 -0
- package/state/overlays.d.ts +35 -0
- package/state/overlays.js +29 -0
- package/state/radio-group.d.ts +58 -0
- package/state/radio-group.js +68 -0
- package/state/search-field.d.ts +20 -0
- package/state/search-field.js +21 -0
- package/state/select.d.ts +150 -0
- package/state/select.js +187 -0
- package/state/selection.d.ts +3 -0
- package/state/selection.js +5 -0
- package/state/table-column-resize.d.ts +58 -0
- package/state/table-column-resize.js +76 -0
- package/state/table.d.ts +81 -0
- package/state/table.js +114 -0
- package/state/tabs.d.ts +85 -0
- package/state/tabs.js +161 -0
- package/state/time-field.d.ts +32 -0
- package/state/time-field.js +34 -0
- package/state/toast.d.ts +80 -0
- package/state/toast.js +146 -0
- package/state/toggle-group.d.ts +70 -0
- package/state/toggle-group.js +110 -0
- package/state/toggle.d.ts +40 -0
- package/state/toggle.js +39 -0
- package/state/tooltip.d.ts +53 -0
- package/state/tooltip.js +153 -0
- package/stepper/index.d.ts +117 -0
- package/stepper/index.jsx +405 -0
- package/stepper/state.d.ts +200 -0
- package/stepper/state.js +325 -0
- package/switch/behaviour.d.ts +12 -0
- package/switch/behaviour.jsx +9 -0
- package/switch/index.d.ts +150 -0
- package/switch/index.jsx +186 -0
- package/table/behaviour.d.ts +181 -0
- package/table/behaviour.js +334 -0
- package/table/collection.d.ts +49 -0
- package/table/collection.js +259 -0
- package/table/column-resize.d.ts +48 -0
- package/table/column-resize.jsx +247 -0
- package/table/index.d.ts +339 -0
- package/table/index.jsx +982 -0
- package/table/intl.d.ts +2 -0
- package/table/intl.js +36 -0
- package/table/keyboard-delegate.d.ts +21 -0
- package/table/keyboard-delegate.js +166 -0
- package/table/rac-intl.d.ts +2 -0
- package/table/rac-intl.js +36 -0
- package/tabs/behaviour.d.ts +49 -0
- package/tabs/behaviour.js +173 -0
- package/tabs/index.d.ts +248 -0
- package/tabs/index.jsx +577 -0
- package/tabs/keyboard-delegate.d.ts +17 -0
- package/tabs/keyboard-delegate.js +64 -0
- package/tag-group/behaviour.d.ts +59 -0
- package/tag-group/behaviour.js +112 -0
- package/tag-group/index.d.ts +138 -0
- package/tag-group/index.jsx +565 -0
- package/tag-group/intl.d.ts +2 -0
- package/tag-group/intl.js +36 -0
- package/tailwind.css +12 -0
- package/tests-components/app/src/routes/index.d.ts +4 -0
- package/tests-components/app/src/routes/index.jsx +7 -0
- package/text/index.d.ts +15 -0
- package/text/index.jsx +61 -0
- package/text-area/index.d.ts +19 -0
- package/text-area/index.jsx +76 -0
- package/text-field/autosize.d.ts +70 -0
- package/text-field/autosize.js +355 -0
- package/text-field/behaviour.d.ts +140 -0
- package/text-field/behaviour.jsx +260 -0
- package/text-field/fields.d.ts +12 -0
- package/text-field/fields.js +20 -0
- package/text-field/index.d.ts +50 -0
- package/text-field/index.jsx +174 -0
- package/text-field/text-field.css +45 -0
- package/theme.css +1006 -0
- package/time-wheels/behaviour.d.ts +29 -0
- package/time-wheels/behaviour.js +156 -0
- package/time-wheels/index.d.ts +27 -0
- package/time-wheels/index.jsx +91 -0
- package/toast/behaviour.d.ts +51 -0
- package/toast/behaviour.jsx +273 -0
- package/toast/index.d.ts +94 -0
- package/toast/index.jsx +256 -0
- package/toast/intl.d.ts +2 -0
- package/toast/intl.js +36 -0
- package/toggle-button/behaviour.d.ts +15 -0
- package/toggle-button/behaviour.js +37 -0
- package/toggle-button/index.d.ts +59 -0
- package/toggle-button/index.jsx +206 -0
- package/toggle-button-group/behaviour.d.ts +19 -0
- package/toggle-button-group/behaviour.jsx +13 -0
- package/toggle-button-group/context.d.ts +7 -0
- package/toggle-button-group/context.js +9 -0
- package/toggle-button-group/index.d.ts +39 -0
- package/toggle-button-group/index.jsx +85 -0
- package/toggle-button-group/item.d.ts +30 -0
- package/toggle-button-group/item.jsx +37 -0
- package/toolbar/behaviour.d.ts +22 -0
- package/toolbar/behaviour.js +89 -0
- package/toolbar/index.d.ts +16 -0
- package/toolbar/index.jsx +67 -0
- package/tooltip/behaviour.d.ts +93 -0
- package/tooltip/behaviour.jsx +299 -0
- package/tooltip/index.d.ts +59 -0
- package/tooltip/index.jsx +193 -0
- package/tree/behaviour.d.ts +51 -0
- package/tree/behaviour.jsx +51 -0
- package/tree/cdk-index.d.ts +2 -0
- package/tree/cdk-index.js +6 -0
- package/tree/collection.d.ts +16 -0
- package/tree/collection.js +138 -0
- package/tree/control.d.ts +125 -0
- package/tree/control.js +166 -0
- package/tree/index.d.ts +154 -0
- package/tree/index.jsx +815 -0
- package/tree/intl.d.ts +2 -0
- package/tree/intl.js +36 -0
- package/tree/navigation-context.d.ts +44 -0
- package/tree/navigation-context.jsx +63 -0
- package/tree/tree-key-manager.d.ts +149 -0
- package/tree/tree-key-manager.js +336 -0
- package/utils/animation.d.ts +32 -0
- package/utils/animation.jsx +236 -0
- package/utils/data-attrs.d.ts +71 -0
- package/utils/data-attrs.jsx +193 -0
- package/utils/dev-off.d.ts +3 -0
- package/utils/dev-off.js +7 -0
- package/utils/dev-on.d.ts +3 -0
- package/utils/dev-on.js +17 -0
- package/utils/dom-props.d.ts +44 -0
- package/utils/dom-props.js +73 -0
- package/utils/dom.d.ts +85 -0
- package/utils/dom.js +402 -0
- package/utils/id.d.ts +23 -0
- package/utils/id.js +100 -0
- package/utils/index.d.ts +57 -0
- package/utils/index.js +257 -0
- package/utils/links.d.ts +87 -0
- package/utils/links.jsx +152 -0
- package/utils/live-element.d.ts +8 -0
- package/utils/live-element.jsx +76 -0
- package/utils/live.d.ts +53 -0
- package/utils/live.jsx +169 -0
- package/utils/load-more-sentinel.d.ts +28 -0
- package/utils/load-more-sentinel.jsx +52 -0
- package/utils/motion-token.d.ts +4 -0
- package/utils/motion-token.js +48 -0
- package/utils/render.d.ts +19 -0
- package/utils/render.js +18 -0
- package/utils/types.d.ts +111 -0
- package/utils/types.js +1 -0
- package/virtualizer/behaviour.d.ts +98 -0
- package/virtualizer/behaviour.js +315 -0
- package/virtualizer/collection.d.ts +103 -0
- package/virtualizer/collection.js +155 -0
- package/virtualizer/dom.d.ts +50 -0
- package/virtualizer/dom.js +233 -0
- package/virtualizer/engine.d.ts +21 -0
- package/virtualizer/engine.js +21 -0
- package/virtualizer/grid-layout.d.ts +50 -0
- package/virtualizer/grid-layout.js +247 -0
- package/virtualizer/index.d.ts +2 -0
- package/virtualizer/index.jsx +4 -0
- package/virtualizer/layout-info.d.ts +33 -0
- package/virtualizer/layout-info.js +54 -0
- package/virtualizer/layout.d.ts +44 -0
- package/virtualizer/layout.js +30 -0
- package/virtualizer/list-layout.d.ts +103 -0
- package/virtualizer/list-layout.js +508 -0
- package/virtualizer/overscan-manager.d.ts +9 -0
- package/virtualizer/overscan-manager.js +32 -0
- package/virtualizer/point.d.ts +13 -0
- package/virtualizer/point.js +23 -0
- package/virtualizer/rect.d.ts +49 -0
- package/virtualizer/rect.js +105 -0
- package/virtualizer/reusable-view.d.ts +29 -0
- package/virtualizer/reusable-view.js +56 -0
- package/virtualizer/scroll-anchor.d.ts +62 -0
- package/virtualizer/scroll-anchor.js +130 -0
- package/virtualizer/size.d.ts +11 -0
- package/virtualizer/size.js +21 -0
- package/virtualizer/state.d.ts +35 -0
- package/virtualizer/state.js +79 -0
- package/virtualizer/table-collection.d.ts +45 -0
- package/virtualizer/table-collection.js +80 -0
- package/virtualizer/table-column-layout.d.ts +44 -0
- package/virtualizer/table-column-layout.js +210 -0
- package/virtualizer/table-layout.d.ts +55 -0
- package/virtualizer/table-layout.js +482 -0
- package/virtualizer/types.d.ts +63 -0
- package/virtualizer/types.js +1 -0
- package/virtualizer/utils.d.ts +2 -0
- package/virtualizer/utils.js +12 -0
- package/virtualizer/virtualizer-core.d.ts +61 -0
- package/virtualizer/virtualizer-core.js +304 -0
- package/virtualizer/virtualizer.d.ts +62 -0
- package/virtualizer/virtualizer.jsx +88 -0
- package/virtualizer/waterfall-layout.d.ts +41 -0
- package/virtualizer/waterfall-layout.js +227 -0
- package/wheel-picker/behaviour.d.ts +94 -0
- package/wheel-picker/behaviour.js +482 -0
- package/wheel-picker/index.d.ts +33 -0
- package/wheel-picker/index.jsx +66 -0
|
@@ -0,0 +1,423 @@
|
|
|
1
|
+
// Ported from react-aria useAutocomplete (packages/react-aria/src/autocomplete/useAutocomplete.ts),
|
|
2
|
+
// Apache-2.0, © Adobe.
|
|
3
|
+
// Rivet:
|
|
4
|
+
// - `useAutocomplete(props, state)` → `autocompleteProps(props, state)` (call during render, from `.tsx`:
|
|
5
|
+
// the returned bags hold inline-arrow handlers / accessors that resumed bindings and contexts capture).
|
|
6
|
+
// Hook-internal handlers are free functions `autocompleteChange` / `autocompleteKeyDown` /
|
|
7
|
+
// `autocompleteKeyUpCapture` / `autocompleteBlur` / `autocompleteFocus` / `autocompletePointerDown` /
|
|
8
|
+
// `autocompleteFocusIn` / `autocompleteBeforeInput` taking `(event, aria, state)`.
|
|
9
|
+
// - `aria` = the per-instance serializable part (`AutocompleteAriaState`: collection id, `ref()`s, signals);
|
|
10
|
+
// upstream's refs (`timeout`, `delayNextActiveDescendant`, `queuedActiveDescendant`, `lastInputType`,
|
|
11
|
+
// `keyDownTarget`) are transient browser data in a module WeakMap keyed by it.
|
|
12
|
+
// - `hasCollection` = the collection element is attached (`collectionRef()`), or, on the server, true (the
|
|
13
|
+
// wrapped collection renders after the input; React's server HTML lacks the attributes until hydration,
|
|
14
|
+
// a resumed page has no hydration — so the server writes the post-mount state). `shouldUseVirtualFocus`
|
|
15
|
+
// turns off when the attached collection is focusable itself (`tabindex`: no virtual focus support, e.g.
|
|
16
|
+
// Table), read at use time instead of the upstream callback-ref state update.
|
|
17
|
+
// - React synthetic event APIs → native: `isPropagationStopped()` = `cancelBubble`, `isDefaultPrevented()` =
|
|
18
|
+
// `defaultPrevented`, `continuePropagation()` = not stopping (native events propagate unless stopped).
|
|
19
|
+
// - virtual focus props (`onKeyDown`, `onBlur`, `onFocus`, `onPointerDown`, `aria-activedescendant`) are
|
|
20
|
+
// always passed; they no-op (`aria-activedescendant` undefined) while virtual focus is off or no collection
|
|
21
|
+
// is attached (upstream adds them conditionally per render).
|
|
22
|
+
// - Deviation: the collection `focusin` listener → `collectionProps.onFocusIn`, the input `beforeinput`
|
|
23
|
+
// listener → `inputProps.onBeforeInput`, the document capture `keyup` listener is added on keydown and
|
|
24
|
+
// removed after the matching keyup (upstream: for the component's lifetime; it only acts on the keyup
|
|
25
|
+
// matching the last input keydown).
|
|
26
|
+
import { signal } from "@rivetjs/reactivity";
|
|
27
|
+
import { ref as createRef } from "@rivetjs/runtime/dom";
|
|
28
|
+
import { CLEAR_FOCUS_EVENT, FOCUS_EVENT } from "../selection/selectable-collection.js";
|
|
29
|
+
import { dispatchVirtualBlur, dispatchVirtualFocus, getVirtuallyFocusedElement, moveVirtualFocus } from "../selection/dom-utils.js";
|
|
30
|
+
import { getInteractionModality, getPointerType } from "../interactions/focus-visible.jsx";
|
|
31
|
+
import { getActiveElement, getEventTarget, getOwnerDocument } from "../utils/dom.js";
|
|
32
|
+
import { isAndroid, isCtrlKeyPressed, isIOS } from "../platform/index.js";
|
|
33
|
+
import { createMergedId } from "../slots/index.jsx";
|
|
34
|
+
import { labelsProps } from "../label/behaviour.js";
|
|
35
|
+
import { formatMessage } from "../_adapters/intl.js";
|
|
36
|
+
import { strings as intlMessages } from "./intl.js";
|
|
37
|
+
import { autocompleteInputValue, setAutocompleteInputValue, setFocusedNodeId, } from "../state/autocomplete.js";
|
|
38
|
+
const transients = new WeakMap();
|
|
39
|
+
function transient(aria) {
|
|
40
|
+
let t = transients.get(aria);
|
|
41
|
+
if (!t) {
|
|
42
|
+
t = { timeout: undefined, delayNextActiveDescendant: false, queuedActiveDescendant: null, lastInputType: "", keyDownTarget: null, keyUp: null };
|
|
43
|
+
transients.set(aria, t);
|
|
44
|
+
}
|
|
45
|
+
return t;
|
|
46
|
+
}
|
|
47
|
+
/** Whether a collection is connected (attached; true on the server). */
|
|
48
|
+
export function autocompleteHasCollection(aria) {
|
|
49
|
+
return aria.collectionRef() != null || typeof document === "undefined";
|
|
50
|
+
}
|
|
51
|
+
/** Whether the input drives the collection with virtual focus (upstream `shouldUseVirtualFocus` state). */
|
|
52
|
+
export function autocompleteShouldUseVirtualFocus(aria) {
|
|
53
|
+
if (!aria.virtualFocus)
|
|
54
|
+
return false;
|
|
55
|
+
// If useSelectableCollection isn't passed shouldUseVirtualFocus even when useAutocomplete provides it
|
|
56
|
+
// that means the collection doesn't support it (e.g. Table). If that is the case, we need to disable it here regardless
|
|
57
|
+
// of what the user's provided so that the input doesn't recieve the onKeyDown and autocomplete props.
|
|
58
|
+
const node = aria.collectionRef();
|
|
59
|
+
return !(node && node.getAttribute("tabindex") != null);
|
|
60
|
+
}
|
|
61
|
+
const virtualFocusActive = (aria) => autocompleteShouldUseVirtualFocus(aria) && autocompleteHasCollection(aria);
|
|
62
|
+
/**
|
|
63
|
+
* Provides the behavior and accessibility implementation for an autocomplete component. An autocomplete
|
|
64
|
+
* combines a text input with a collection, allowing users to filter the collection's contents match a query.
|
|
65
|
+
*/
|
|
66
|
+
export function autocompleteProps(props, state) {
|
|
67
|
+
const { filter, disableAutoFocusFirst = false, disableVirtualFocus = false } = props;
|
|
68
|
+
// For mobile screen readers, we don't want virtual focus, instead opting to disable FocusScope's restoreFocus and manually
|
|
69
|
+
// moving focus back to the subtriggers
|
|
70
|
+
const isMobileScreenReader = getInteractionModality() === "virtual" && !!(isIOS() || isAndroid());
|
|
71
|
+
const aria = {
|
|
72
|
+
collectionId: createMergedId(),
|
|
73
|
+
inputRef: props.inputRef ?? createRef(),
|
|
74
|
+
collectionRef: props.collectionRef ?? createRef(),
|
|
75
|
+
virtualFocus: !isMobileScreenReader && !disableVirtualFocus,
|
|
76
|
+
autoFocusOnMount: signal(false),
|
|
77
|
+
disableAutoFocusFirst,
|
|
78
|
+
};
|
|
79
|
+
const collectionLabels = labelsProps(aria.collectionId.id, formatMessage(intlMessages, props.locale, "collectionLabel"), undefined);
|
|
80
|
+
// Only apply the autocomplete specific behaviors if the collection component wrapped by it is actually
|
|
81
|
+
// being filtered/allows filtering by the Autocomplete.
|
|
82
|
+
const inputProps = {
|
|
83
|
+
value: () => autocompleteInputValue(state),
|
|
84
|
+
onChange: (value) => autocompleteChange(value, aria, state),
|
|
85
|
+
onKeyDown: (e) => {
|
|
86
|
+
if (virtualFocusActive(aria))
|
|
87
|
+
autocompleteKeyDown(e, aria, state);
|
|
88
|
+
},
|
|
89
|
+
"aria-activedescendant": () => (virtualFocusActive(aria) ? (state.focusedNodeId() ?? undefined) : undefined),
|
|
90
|
+
onBlur: (e) => {
|
|
91
|
+
if (virtualFocusActive(aria))
|
|
92
|
+
autocompleteBlur(e, aria);
|
|
93
|
+
},
|
|
94
|
+
onFocus: (e) => {
|
|
95
|
+
if (virtualFocusActive(aria))
|
|
96
|
+
autocompleteFocus(e, aria);
|
|
97
|
+
},
|
|
98
|
+
onPointerDown: (e) => {
|
|
99
|
+
if (virtualFocusActive(aria))
|
|
100
|
+
autocompletePointerDown(e, aria, state);
|
|
101
|
+
},
|
|
102
|
+
onBeforeInput: (e) => autocompleteBeforeInput(e, aria),
|
|
103
|
+
enterKeyHint: "go",
|
|
104
|
+
// RA: `collectionId` merged into the collection's own id (mergeIds → idsUpdaterMap re-renders this hook). Rivet: the
|
|
105
|
+
// collection's `contextProps` switches `collectionId.current` to its own id while it renders — also on the server,
|
|
106
|
+
// before this attribute is written — else the rendered collection's id.
|
|
107
|
+
"aria-controls": () => (autocompleteHasCollection(aria) ? aria.collectionRef()?.id || aria.collectionId.current() : undefined),
|
|
108
|
+
// TODO: readd proper logic for completionMode = complete (aria-autocomplete: both)
|
|
109
|
+
"aria-autocomplete": "list",
|
|
110
|
+
// This disable's iOS's autocorrect suggestions, since the autocomplete provides its own suggestions.
|
|
111
|
+
autoCorrect: "off",
|
|
112
|
+
// This disable's the macOS Safari spell check auto corrections.
|
|
113
|
+
spellCheck: "false",
|
|
114
|
+
autoComplete: "off",
|
|
115
|
+
};
|
|
116
|
+
const collectionProps = {
|
|
117
|
+
...collectionLabels,
|
|
118
|
+
id: aria.collectionId,
|
|
119
|
+
shouldUseVirtualFocus: () => autocompleteShouldUseVirtualFocus(aria),
|
|
120
|
+
disallowTypeAhead: () => autocompleteShouldUseVirtualFocus(aria),
|
|
121
|
+
autoFocus: () => (aria.autoFocusOnMount() ? "first" : false),
|
|
122
|
+
onFocusIn: (e) => autocompleteFocusIn(e, aria, state),
|
|
123
|
+
};
|
|
124
|
+
// Object-literal arrow (not a bare ternary branch) so the compiler captures it: ListBox keeps it in resumed state.
|
|
125
|
+
const collectionFilter = { filter: (nodeTextValue, node) => filter(nodeTextValue, autocompleteInputValue(state), node) };
|
|
126
|
+
return {
|
|
127
|
+
inputProps,
|
|
128
|
+
collectionProps,
|
|
129
|
+
collectionRef: aria.collectionRef,
|
|
130
|
+
inputRef: aria.inputRef,
|
|
131
|
+
filter: filter != null ? collectionFilter.filter : undefined,
|
|
132
|
+
aria,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/** Upstream `updateActiveDescendantEvent`: the collection's `focusin` (virtual focus moves to an item). */
|
|
136
|
+
export function autocompleteFocusIn(e, aria, state) {
|
|
137
|
+
const t = transient(aria);
|
|
138
|
+
const input = aria.inputRef();
|
|
139
|
+
// Ensure input is focused if the user clicks on the collection directly.
|
|
140
|
+
// don't trigger on touch so that mobile keyboard doesnt appear when tapping on options
|
|
141
|
+
if (!e.isTrusted && autocompleteShouldUseVirtualFocus(aria) && input && getActiveElement(getOwnerDocument(input)) !== input && getPointerType() !== "touch") {
|
|
142
|
+
input.focus();
|
|
143
|
+
}
|
|
144
|
+
const target = getEventTarget(e);
|
|
145
|
+
if (e.isTrusted || !target || t.queuedActiveDescendant === target.id) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
clearTimeout(t.timeout);
|
|
149
|
+
if (target !== aria.collectionRef()) {
|
|
150
|
+
if (t.delayNextActiveDescendant) {
|
|
151
|
+
t.queuedActiveDescendant = target.id;
|
|
152
|
+
t.timeout = setTimeout(() => {
|
|
153
|
+
setFocusedNodeId(state, target.id);
|
|
154
|
+
}, 500);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
t.queuedActiveDescendant = target.id;
|
|
158
|
+
setFocusedNodeId(state, target.id);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
else if (t.queuedActiveDescendant && !getOwnerDocument(input).getElementById(t.queuedActiveDescendant)) {
|
|
162
|
+
// If we recieve a focus event refocusing the collection, either we have newly refocused the input and are waiting for the
|
|
163
|
+
// wrapped collection to refocus the previously focused node if any OR
|
|
164
|
+
// we are in a state where we've filtered to such a point that there aren't any matching items in the collection to focus.
|
|
165
|
+
// In this case we want to clear tracked item if any and clear active descendant
|
|
166
|
+
t.queuedActiveDescendant = null;
|
|
167
|
+
setFocusedNodeId(state, null);
|
|
168
|
+
}
|
|
169
|
+
t.delayNextActiveDescendant = false;
|
|
170
|
+
}
|
|
171
|
+
/** Upstream `focusFirstItem`. */
|
|
172
|
+
export function autocompleteFocusFirstItem(aria) {
|
|
173
|
+
const collection = aria.collectionRef();
|
|
174
|
+
if (!collection) {
|
|
175
|
+
aria.autoFocusOnMount.set(true);
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
transient(aria).delayNextActiveDescendant = true;
|
|
179
|
+
collection.dispatchEvent(new CustomEvent(FOCUS_EVENT, {
|
|
180
|
+
cancelable: true,
|
|
181
|
+
bubbles: true,
|
|
182
|
+
detail: {
|
|
183
|
+
focusStrategy: "first",
|
|
184
|
+
},
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
/** Upstream `clearVirtualFocus`. */
|
|
188
|
+
export function autocompleteClearVirtualFocus(aria, state, clearFocusKey) {
|
|
189
|
+
const t = transient(aria);
|
|
190
|
+
aria.autoFocusOnMount.set(false);
|
|
191
|
+
moveVirtualFocus(getActiveElement());
|
|
192
|
+
t.queuedActiveDescendant = null;
|
|
193
|
+
setFocusedNodeId(state, null);
|
|
194
|
+
const clearFocusEvent = new CustomEvent(CLEAR_FOCUS_EVENT, {
|
|
195
|
+
cancelable: true,
|
|
196
|
+
bubbles: true,
|
|
197
|
+
detail: {
|
|
198
|
+
clearFocusKey,
|
|
199
|
+
},
|
|
200
|
+
});
|
|
201
|
+
clearTimeout(t.timeout);
|
|
202
|
+
t.delayNextActiveDescendant = false;
|
|
203
|
+
aria.collectionRef()?.dispatchEvent(clearFocusEvent);
|
|
204
|
+
}
|
|
205
|
+
/** Upstream `useEvent(inputRef, 'beforeinput')`. */
|
|
206
|
+
export function autocompleteBeforeInput(e, aria) {
|
|
207
|
+
transient(aria).lastInputType = e.inputType;
|
|
208
|
+
}
|
|
209
|
+
/** Upstream `onChange` (the input's text changed). */
|
|
210
|
+
export function autocompleteChange(value, aria, state) {
|
|
211
|
+
const t = transient(aria);
|
|
212
|
+
const lastInputType = t.lastInputType;
|
|
213
|
+
// Tell wrapped collection to focus the first element in the list when typing forward and to clear focused key when modifying the text via
|
|
214
|
+
// copy paste/backspacing/undo/redo for screen reader announcements
|
|
215
|
+
if ((lastInputType === "insertText" ||
|
|
216
|
+
// IME composition (e.g. CJK input) reports 'insertCompositionText'/'insertFromComposition'
|
|
217
|
+
// instead of 'insertText'. Treat these as forward typing so the first item gets virtual focus.
|
|
218
|
+
lastInputType === "insertCompositionText" ||
|
|
219
|
+
lastInputType === "insertFromComposition") &&
|
|
220
|
+
!aria.disableAutoFocusFirst) {
|
|
221
|
+
autocompleteFocusFirstItem(aria);
|
|
222
|
+
}
|
|
223
|
+
else if (lastInputType && (lastInputType.includes("insert") || lastInputType.includes("delete") || lastInputType.includes("history"))) {
|
|
224
|
+
autocompleteClearVirtualFocus(aria, state, true);
|
|
225
|
+
// If onChange was triggered before the timeout actually updated the activedescendant, we need to fire
|
|
226
|
+
// our own dispatchVirtualFocus so focusVisible gets reapplied on the input
|
|
227
|
+
const input = aria.inputRef();
|
|
228
|
+
if (input && getVirtuallyFocusedElement(getOwnerDocument(input)) === input) {
|
|
229
|
+
dispatchVirtualFocus(input, null);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
setAutocompleteInputValue(state, value);
|
|
233
|
+
}
|
|
234
|
+
/** Upstream `onKeyDown` (textfield specific keydown operations). */
|
|
235
|
+
export function autocompleteKeyDown(e, aria, state) {
|
|
236
|
+
const t = transient(aria);
|
|
237
|
+
t.keyDownTarget = getEventTarget(e);
|
|
238
|
+
listenKeyUp(aria);
|
|
239
|
+
if (e.isComposing) {
|
|
240
|
+
return;
|
|
241
|
+
}
|
|
242
|
+
const input = aria.inputRef();
|
|
243
|
+
let focusedNodeId = t.queuedActiveDescendant;
|
|
244
|
+
if (focusedNodeId !== null && getOwnerDocument(input).getElementById(focusedNodeId) == null) {
|
|
245
|
+
// if the focused id doesn't exist in document, then we need to clear the tracked focused node, otherwise
|
|
246
|
+
// we will be attempting to fire key events on a non-existing node instead of trying to focus the newly swapped wrapped collection.
|
|
247
|
+
// This can happen if you are swapping out the Autocomplete wrapped collection component like in the docs search.
|
|
248
|
+
t.queuedActiveDescendant = null;
|
|
249
|
+
focusedNodeId = null;
|
|
250
|
+
}
|
|
251
|
+
switch (e.key) {
|
|
252
|
+
case "a":
|
|
253
|
+
if (isCtrlKeyPressed(e)) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
break;
|
|
257
|
+
case "Escape":
|
|
258
|
+
// Early return for Escape here so it doesn't leak the Escape event from the simulated collection event below and
|
|
259
|
+
// close the dialog prematurely. Ideally that should be up to the discretion of the input element hence the check
|
|
260
|
+
// for isPropagationStopped
|
|
261
|
+
if (e.defaultPrevented) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
break;
|
|
265
|
+
case " ":
|
|
266
|
+
// Space shouldn't trigger onAction so early return.
|
|
267
|
+
return;
|
|
268
|
+
case "Tab":
|
|
269
|
+
// Don't propogate Tab down to the collection, otherwise we will try to focus the collection via useSelectableCollection's Tab handler (aka shift tab logic)
|
|
270
|
+
// We want FocusScope to handle Tab if one exists (aka sub dialog), so special casepropogate
|
|
271
|
+
return;
|
|
272
|
+
case "Home":
|
|
273
|
+
case "End":
|
|
274
|
+
case "PageDown":
|
|
275
|
+
case "PageUp":
|
|
276
|
+
case "ArrowUp":
|
|
277
|
+
case "ArrowDown":
|
|
278
|
+
case "ArrowRight":
|
|
279
|
+
case "ArrowLeft": {
|
|
280
|
+
if ((e.key === "Home" || e.key === "End") && focusedNodeId == null && e.shiftKey) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
// If there is text within the input field, we'll want continue propagating events down
|
|
284
|
+
// to the wrapped collection if there is a focused node so that a user can continue moving the
|
|
285
|
+
// virtual focus. However, if the user doesn't have a focus in the collection, just move the text
|
|
286
|
+
// cursor instead. They can move focus down into the collection via down/up arrow if need be
|
|
287
|
+
if (e.key === "ArrowRight" || e.key === "ArrowLeft") {
|
|
288
|
+
if (focusedNodeId == null) {
|
|
289
|
+
if (!e.cancelBubble) {
|
|
290
|
+
e.stopPropagation();
|
|
291
|
+
}
|
|
292
|
+
return;
|
|
293
|
+
}
|
|
294
|
+
break;
|
|
295
|
+
}
|
|
296
|
+
// Prevent these keys from moving the text cursor in the input
|
|
297
|
+
e.preventDefault();
|
|
298
|
+
// Move virtual focus into the wrapped collection
|
|
299
|
+
const focusCollection = new CustomEvent(FOCUS_EVENT, {
|
|
300
|
+
cancelable: true,
|
|
301
|
+
bubbles: true,
|
|
302
|
+
});
|
|
303
|
+
aria.collectionRef()?.dispatchEvent(focusCollection);
|
|
304
|
+
break;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
// Emulate the keyboard events that happen in the input field in the wrapped collection. This is for triggering things like onAction via Enter
|
|
308
|
+
// or moving focus from one item to another. Stop propagation on the input event if it isn't already stopped so it doesn't leak out. For events
|
|
309
|
+
// like ESC, the dispatched event below will bubble out of the collection and be stopped if handled by useSelectableCollection, otherwise will bubble
|
|
310
|
+
// as expected
|
|
311
|
+
if (!e.cancelBubble) {
|
|
312
|
+
e.stopPropagation();
|
|
313
|
+
}
|
|
314
|
+
let shouldPerformDefaultAction = true;
|
|
315
|
+
const collection = aria.collectionRef();
|
|
316
|
+
if (collection != null) {
|
|
317
|
+
if (focusedNodeId == null) {
|
|
318
|
+
shouldPerformDefaultAction = collection.dispatchEvent(new KeyboardEvent(e.type, e)) || false;
|
|
319
|
+
}
|
|
320
|
+
else {
|
|
321
|
+
const item = getOwnerDocument(collection).getElementById(focusedNodeId);
|
|
322
|
+
if (item) {
|
|
323
|
+
shouldPerformDefaultAction = item.dispatchEvent(new KeyboardEvent(e.type, e)) || false;
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
if (shouldPerformDefaultAction) {
|
|
328
|
+
switch (e.key) {
|
|
329
|
+
case "ArrowLeft":
|
|
330
|
+
case "ArrowRight": {
|
|
331
|
+
// Clear the activedescendant so NVDA announcements aren't interrupted but retain the focused key in the collection so the
|
|
332
|
+
// user's keyboard navigation restarts from where they left off
|
|
333
|
+
autocompleteClearVirtualFocus(aria, state);
|
|
334
|
+
break;
|
|
335
|
+
}
|
|
336
|
+
case "Enter":
|
|
337
|
+
// Trigger click action on item when Enter key was pressed.
|
|
338
|
+
if (focusedNodeId != null) {
|
|
339
|
+
const item = getOwnerDocument(collection).getElementById(focusedNodeId);
|
|
340
|
+
item?.dispatchEvent(new PointerEvent("click", e));
|
|
341
|
+
}
|
|
342
|
+
break;
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
else {
|
|
346
|
+
// TODO: check if we can do this, want to stop textArea from using its default Enter behavior so items are properly triggered
|
|
347
|
+
e.preventDefault();
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
function listenKeyUp(aria) {
|
|
351
|
+
const t = transient(aria);
|
|
352
|
+
if (t.keyUp || typeof document === "undefined")
|
|
353
|
+
return;
|
|
354
|
+
const handler = (e) => autocompleteKeyUpCapture(e, aria);
|
|
355
|
+
t.keyUp = handler;
|
|
356
|
+
getOwnerDocument(aria.inputRef()).addEventListener("keyup", handler, true);
|
|
357
|
+
}
|
|
358
|
+
/** Upstream `onKeyUpCapture` (document capture listener). */
|
|
359
|
+
export function autocompleteKeyUpCapture(e, aria) {
|
|
360
|
+
const t = transient(aria);
|
|
361
|
+
// Dispatch simulated key up events for things like triggering links in listbox
|
|
362
|
+
// Make sure to stop the propagation of the input keyup event so that the simulated keyup/down pair
|
|
363
|
+
// is detected by usePress instead of the original keyup originating from the input
|
|
364
|
+
if (getEventTarget(e) === t.keyDownTarget) {
|
|
365
|
+
e.stopImmediatePropagation();
|
|
366
|
+
if (t.keyUp)
|
|
367
|
+
getOwnerDocument(aria.inputRef()).removeEventListener("keyup", t.keyUp, true);
|
|
368
|
+
t.keyUp = null;
|
|
369
|
+
const focusedNodeId = t.queuedActiveDescendant;
|
|
370
|
+
if (focusedNodeId == null) {
|
|
371
|
+
aria.collectionRef()?.dispatchEvent(new KeyboardEvent(e.type, e));
|
|
372
|
+
}
|
|
373
|
+
else {
|
|
374
|
+
const item = getOwnerDocument(aria.inputRef()).getElementById(focusedNodeId);
|
|
375
|
+
item?.dispatchEvent(new KeyboardEvent(e.type, e));
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
// Be sure to clear/restore the virtual + collection focus when blurring/refocusing the field so we only show the
|
|
380
|
+
// focus ring on the virtually focused collection when are actually interacting with the Autocomplete
|
|
381
|
+
/** Upstream `onBlur`. */
|
|
382
|
+
export function autocompleteBlur(e, aria) {
|
|
383
|
+
if (!e.isTrusted) {
|
|
384
|
+
return;
|
|
385
|
+
}
|
|
386
|
+
const queued = transient(aria).queuedActiveDescendant;
|
|
387
|
+
const lastFocusedNode = queued ? getOwnerDocument(aria.inputRef()).getElementById(queued) : null;
|
|
388
|
+
if (lastFocusedNode) {
|
|
389
|
+
dispatchVirtualBlur(lastFocusedNode, e.relatedTarget);
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
/** Upstream `onFocus`. */
|
|
393
|
+
export function autocompleteFocus(e, aria) {
|
|
394
|
+
if (!e.isTrusted) {
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
const queued = transient(aria).queuedActiveDescendant;
|
|
398
|
+
const curFocusedNode = queued ? getOwnerDocument(aria.inputRef()).getElementById(queued) : null;
|
|
399
|
+
if (curFocusedNode) {
|
|
400
|
+
const target = getEventTarget(e);
|
|
401
|
+
queueMicrotask(() => {
|
|
402
|
+
// instead of focusing the last focused node, just focus the collection instead and have the collection handle what item to focus via useSelectableCollection/Item
|
|
403
|
+
const collection = aria.collectionRef();
|
|
404
|
+
dispatchVirtualBlur(target, collection ?? null);
|
|
405
|
+
if (collection)
|
|
406
|
+
dispatchVirtualFocus(collection, target);
|
|
407
|
+
});
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
// Clicking back into the input can happen after focus moved elsewhere in the dialog, while
|
|
411
|
+
// virtual focus is still on an option. Clear virtual focus on pointer down so mouse
|
|
412
|
+
// interactions restore the input state before the click's focus handling runs.
|
|
413
|
+
// Touch is excluded because touch interactions should not move focus back to the input.
|
|
414
|
+
/** Upstream `onPointerDown`. */
|
|
415
|
+
export function autocompletePointerDown(e, aria, state) {
|
|
416
|
+
const input = aria.inputRef();
|
|
417
|
+
if (e.button !== 0 || e.pointerType === "touch" || transient(aria).queuedActiveDescendant == null || input == null) {
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
if (getEventTarget(e) === input) {
|
|
421
|
+
autocompleteClearVirtualFocus(aria, state);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { ContextValue, MergedId, SlottedContextValue } from "../slots/index.jsx";
|
|
2
|
+
import type { Node } from "../collections/types.js";
|
|
3
|
+
import type { MaybeAccessor } from "../interactions/utils.js";
|
|
4
|
+
import type { AutocompleteState } from "../state/autocomplete.js";
|
|
5
|
+
import type { AutocompleteProps } from "./behaviour.jsx";
|
|
6
|
+
/** RAC `SelectableCollectionContextValue`: what an Autocomplete passes to the collection it filters. */
|
|
7
|
+
export interface SelectableCollectionContextValue<T = unknown> {
|
|
8
|
+
/** Rivet: a `MergedId` (RA `useId` the collection's own id merges into, `contextProps`); a plain id string also works. */
|
|
9
|
+
id?: string | MergedId;
|
|
10
|
+
"aria-label"?: string;
|
|
11
|
+
"aria-labelledby"?: string;
|
|
12
|
+
"aria-describedby"?: string;
|
|
13
|
+
"aria-details"?: string;
|
|
14
|
+
/** Hides the nodes it returns false for (build mode: `collection.filter`; live mode: each item). */
|
|
15
|
+
filter?: (nodeTextValue: string, node: Node<T>) => boolean;
|
|
16
|
+
/** Whether the collection items should use virtual focus instead of being focused directly. */
|
|
17
|
+
shouldUseVirtualFocus?: MaybeAccessor<boolean | undefined>;
|
|
18
|
+
/** Whether typeahead is disabled. */
|
|
19
|
+
disallowTypeAhead?: MaybeAccessor<boolean | undefined>;
|
|
20
|
+
/** RA `autoFocus` (`"first"` once the collection mounts after a forward-typing filter). */
|
|
21
|
+
autoFocus?: MaybeAccessor<boolean | "first" | "last" | undefined>;
|
|
22
|
+
/** Rivet: RA's `focusin` listener on the collection element — put it on the collection's root. */
|
|
23
|
+
onFocusIn?: (event: FocusEvent) => void;
|
|
24
|
+
}
|
|
25
|
+
/** RAC `FieldInputContextValue`: what an Autocomplete / ComboBox passes to the input field it wraps. */
|
|
26
|
+
export interface FieldInputContextValue {
|
|
27
|
+
id?: string;
|
|
28
|
+
/** The controlled text (accessor). */
|
|
29
|
+
value?: MaybeAccessor<string>;
|
|
30
|
+
onChange?: (value: string) => void;
|
|
31
|
+
onKeyDown?: (event: KeyboardEvent) => void;
|
|
32
|
+
onKeyUp?: (event: KeyboardEvent) => void;
|
|
33
|
+
onFocus?: (event: FocusEvent) => void;
|
|
34
|
+
onBlur?: (event: FocusEvent) => void;
|
|
35
|
+
onFocusChange?: (isFocused: boolean) => void;
|
|
36
|
+
onPointerDown?: (event: PointerEvent) => void;
|
|
37
|
+
/** Rivet: RA's `beforeinput` listener on the input (`useEvent`) — put it on the `<input>`. */
|
|
38
|
+
onBeforeInput?: (event: InputEvent) => void;
|
|
39
|
+
enterKeyHint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send";
|
|
40
|
+
"aria-controls"?: MaybeAccessor<string | undefined>;
|
|
41
|
+
"aria-autocomplete"?: "none" | "inline" | "list" | "both";
|
|
42
|
+
"aria-activedescendant"?: MaybeAccessor<string | undefined>;
|
|
43
|
+
spellCheck?: boolean | "true" | "false";
|
|
44
|
+
autoCorrect?: string;
|
|
45
|
+
autoComplete?: string;
|
|
46
|
+
}
|
|
47
|
+
/** Props for the nearest `<Autocomplete>` (slotted). */
|
|
48
|
+
export declare const AutocompleteContext: import("@rivetjs/reactivity").Context<SlottedContextValue<Partial<AutocompleteProps<any>>>>;
|
|
49
|
+
/** The state of the nearest `<Autocomplete>`. */
|
|
50
|
+
export declare const AutocompleteStateContext: import("@rivetjs/reactivity").Context<AutocompleteState | null>;
|
|
51
|
+
/** Collection props from the nearest `<Autocomplete>` (ListBox, Menu, GridList, TagGroup, Table merge it with `contextProps`). */
|
|
52
|
+
export declare const SelectableCollectionContext: import("@rivetjs/reactivity").Context<ContextValue<SelectableCollectionContextValue<any>, HTMLElement>>;
|
|
53
|
+
/** Input props from the nearest `<Autocomplete>` / `<ComboBox>` (SearchField, TextField merge it with `contextProps`). */
|
|
54
|
+
export declare const FieldInputContext: import("@rivetjs/reactivity").Context<ContextValue<FieldInputContextValue, HTMLInputElement>>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// Ported from react-aria-components Autocomplete (packages/react-aria-components/src/Autocomplete.tsx:
|
|
2
|
+
// `AutocompleteContext`, `AutocompleteStateContext`, `SelectableCollectionContext`, `FieldInputContext`),
|
|
3
|
+
// Apache-2.0, © Adobe.
|
|
4
|
+
// The contexts an `<Autocomplete>` (and ComboBox: FieldInputContext) provides: the wrapped input field
|
|
5
|
+
// (SearchField / TextField) merges `FieldInputContext`, the wrapped collection (ListBox / Menu / GridList /
|
|
6
|
+
// TagGroup / Table) merges `SelectableCollectionContext`.
|
|
7
|
+
// Rivet:
|
|
8
|
+
// - one tiny module (no component code): collections import it without pulling the Autocomplete in.
|
|
9
|
+
// - `resumableContext` tokens (ids `rv-autocomplete`, `rv-autocomplete-state`, `rv-selectable-collection`,
|
|
10
|
+
// `rv-field-input`): values serialize (signals, `ref()`, strings, inline-arrow closures from `.tsx`).
|
|
11
|
+
// - ACCESSOR RULE: state-dependent values are accessors read inside bindings / at event time:
|
|
12
|
+
// FieldInputContext `value`, `aria-activedescendant`, `aria-controls`; SelectableCollectionContext
|
|
13
|
+
// `shouldUseVirtualFocus`, `disallowTypeAhead`, `autoFocus`.
|
|
14
|
+
// - Deviation: RA `useAutocomplete` adds a `focusin` listener on the collection element and a
|
|
15
|
+
// `beforeinput` listener on the input (`useEvent`); here they are props in the contexts —
|
|
16
|
+
// `SelectableCollectionContext.onFocusIn` (the collection puts it on its root element) and
|
|
17
|
+
// `FieldInputContext.onBeforeInput` (the field puts it on its `<input>`), so they resume as delegated
|
|
18
|
+
// handlers without an effect.
|
|
19
|
+
import { createContext } from "@rivetjs/reactivity";
|
|
20
|
+
import { resumableContext } from "@rivetjs/runtime/resume-format";
|
|
21
|
+
/** Props for the nearest `<Autocomplete>` (slotted). */
|
|
22
|
+
export const AutocompleteContext = resumableContext(createContext(null, { id: "rv-autocomplete" }));
|
|
23
|
+
/** The state of the nearest `<Autocomplete>`. */
|
|
24
|
+
export const AutocompleteStateContext = resumableContext(createContext(null, { id: "rv-autocomplete-state" }));
|
|
25
|
+
/** Collection props from the nearest `<Autocomplete>` (ListBox, Menu, GridList, TagGroup, Table merge it with `contextProps`). */
|
|
26
|
+
export const SelectableCollectionContext = resumableContext(createContext(null, { id: "rv-selectable-collection" }));
|
|
27
|
+
/** Input props from the nearest `<Autocomplete>` / `<ComboBox>` (SearchField, TextField merge it with `contextProps`). */
|
|
28
|
+
export const FieldInputContext = resumableContext(createContext(null, { id: "rv-field-input" }));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Content } from "@rivetjs/runtime/jsx-runtime";
|
|
2
|
+
import { type SlotProps } from "../slots/index.jsx";
|
|
3
|
+
import { type AriaAutocompleteProps } from "./behaviour.jsx";
|
|
4
|
+
export { AutocompleteContext, AutocompleteStateContext, FieldInputContext, SelectableCollectionContext, type FieldInputContextValue, type SelectableCollectionContextValue, } from "./contexts.js";
|
|
5
|
+
export type { AutocompleteState } from "../state/autocomplete.js";
|
|
6
|
+
export type { AriaAutocompleteProps } from "./behaviour.jsx";
|
|
7
|
+
export interface AutocompleteProps<T = object> extends AriaAutocompleteProps<T>, SlotProps {
|
|
8
|
+
/** The children wrapped by the autocomplete. Consists of at least an input element and a collection element to filter. */
|
|
9
|
+
children?: Content;
|
|
10
|
+
}
|
|
11
|
+
/** An autocomplete allows users to search or filter a list of suggestions. */
|
|
12
|
+
export declare function Autocomplete<T>(props: AutocompleteProps<T>): import("@rivetjs/runtime/jsx-runtime").CompiledElement;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { provide } from "@rivetjs/reactivity";
|
|
2
|
+
import { probeCollection } from "../collections/components.jsx";
|
|
3
|
+
import { useLocale } from "../i18n/index.js";
|
|
4
|
+
import { mergeProps } from "../interactions/merge-props.jsx";
|
|
5
|
+
import { Provider, removeDataAttributes, slottedContext } from "../slots/index.jsx";
|
|
6
|
+
import { createAutocompleteState } from "../state/autocomplete.js";
|
|
7
|
+
import { autocompleteProps } from "./behaviour.jsx";
|
|
8
|
+
import { AutocompleteContext, AutocompleteStateContext, FieldInputContext, SelectableCollectionContext } from "./contexts.js";
|
|
9
|
+
import { liveOptions } from "../utils/live.jsx";
|
|
10
|
+
export { AutocompleteContext, AutocompleteStateContext, FieldInputContext, SelectableCollectionContext, } from "./contexts.js";
|
|
11
|
+
/** An autocomplete allows users to search or filter a list of suggestions. */
|
|
12
|
+
export function Autocomplete(props) {
|
|
13
|
+
const ctx = slottedContext(AutocompleteContext, props.slot);
|
|
14
|
+
props = mergeProps(ctx ?? {}, props);
|
|
15
|
+
// Live props: a controlled `inputValue={text()}` stays live (accessor; `controllable` reads it, never writes it).
|
|
16
|
+
const state = createAutocompleteState(liveOptions(props, [], ["inputValue"]));
|
|
17
|
+
const { inputProps, collectionProps, collectionRef, inputRef, filter } = autocompleteProps({ ...removeDataAttributes(props), filter: props.filter, disableAutoFocusFirst: props.disableAutoFocusFirst, locale: useLocale().locale }, state);
|
|
18
|
+
const children = props.children;
|
|
19
|
+
const collection = { ...collectionProps, filter, ref: collectionRef };
|
|
20
|
+
// Rivet (server): the collection's own id (RA mergeIds, applied after React's first render) is merged before the
|
|
21
|
+
// input's `aria-controls` is written — the resumed page never re-renders (collections/ `probeCollection`).
|
|
22
|
+
if (typeof document === "undefined")
|
|
23
|
+
provide(SelectableCollectionContext, collection, () => probeCollection(children));
|
|
24
|
+
return (<Provider values={[
|
|
25
|
+
[AutocompleteStateContext, state],
|
|
26
|
+
[FieldInputContext, { ...inputProps, ref: inputRef }],
|
|
27
|
+
[SelectableCollectionContext, collection],
|
|
28
|
+
]}>
|
|
29
|
+
{children}
|
|
30
|
+
</Provider>);
|
|
31
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export const strings = {
|
|
2
|
+
"ar-AE": { collectionLabel: "مقترحات" },
|
|
3
|
+
"bg-BG": { collectionLabel: "Предложения" },
|
|
4
|
+
"cs-CZ": { collectionLabel: "Návrhy" },
|
|
5
|
+
"da-DK": { collectionLabel: "Forslag" },
|
|
6
|
+
"de-DE": { collectionLabel: "Empfehlungen" },
|
|
7
|
+
"el-GR": { collectionLabel: "Προτάσεις" },
|
|
8
|
+
"en-US": { collectionLabel: "Suggestions" },
|
|
9
|
+
"es-ES": { collectionLabel: "Sugerencias" },
|
|
10
|
+
"et-EE": { collectionLabel: "Soovitused" },
|
|
11
|
+
"fi-FI": { collectionLabel: "Ehdotukset" },
|
|
12
|
+
"fr-FR": { collectionLabel: "Suggestions" },
|
|
13
|
+
"he-IL": { collectionLabel: "הצעות" },
|
|
14
|
+
"hr-HR": { collectionLabel: "Prijedlozi" },
|
|
15
|
+
"hu-HU": { collectionLabel: "Javaslatok" },
|
|
16
|
+
"it-IT": { collectionLabel: "Suggerimenti" },
|
|
17
|
+
"ja-JP": { collectionLabel: "候補" },
|
|
18
|
+
"ko-KR": { collectionLabel: "제안" },
|
|
19
|
+
"lt-LT": { collectionLabel: "Pasiūlymai" },
|
|
20
|
+
"lv-LV": { collectionLabel: "Ieteikumi" },
|
|
21
|
+
"nb-NO": { collectionLabel: "Forslag" },
|
|
22
|
+
"nl-NL": { collectionLabel: "Suggesties" },
|
|
23
|
+
"pl-PL": { collectionLabel: "Sugestie" },
|
|
24
|
+
"pt-BR": { collectionLabel: "Sugestões" },
|
|
25
|
+
"pt-PT": { collectionLabel: "Sugestões" },
|
|
26
|
+
"ro-RO": { collectionLabel: "Sugestii" },
|
|
27
|
+
"ru-RU": { collectionLabel: "Предложения" },
|
|
28
|
+
"sk-SK": { collectionLabel: "Návrhy" },
|
|
29
|
+
"sl-SI": { collectionLabel: "Predlogi" },
|
|
30
|
+
"sr-SP": { collectionLabel: "Predlozi" },
|
|
31
|
+
"sv-SE": { collectionLabel: "Förslag" },
|
|
32
|
+
"tr-TR": { collectionLabel: "Öneriler" },
|
|
33
|
+
"uk-UA": { collectionLabel: "Пропозиції" },
|
|
34
|
+
"zh-CN": { collectionLabel: "建议" },
|
|
35
|
+
"zh-TW": { collectionLabel: "建議" },
|
|
36
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Content } from "@rivetjs/runtime/jsx-runtime";
|
|
2
|
+
import { type Direction } from "./index.js";
|
|
3
|
+
export interface DirProps {
|
|
4
|
+
/** `"ltr"`, `"rtl"` or `"auto"` (case-insensitive); an accessor for a changing value. */
|
|
5
|
+
dir: string | (() => string);
|
|
6
|
+
/**
|
|
7
|
+
* Angular `(dirChange)`: called when the normalized direction changes after the first render.
|
|
8
|
+
* Client-rendered trees only — on a resumed page no component code runs, so read the
|
|
9
|
+
* `Directionality` signal (`injectDirectionality().valueSignal`) in a binding instead.
|
|
10
|
+
*/
|
|
11
|
+
onDirChange?: (dir: Direction) => void;
|
|
12
|
+
/** Element to render (default `div`). */
|
|
13
|
+
as?: "div" | "span" | "section";
|
|
14
|
+
class?: string;
|
|
15
|
+
id?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Content. Plain JSX children are lazy (a compiler slot rendered inside the provider), so
|
|
18
|
+
* descendants that read the `Directionality` (`injectDirectionality()`) see it; a render function
|
|
19
|
+
* `{() => <Child />}` works too.
|
|
20
|
+
*/
|
|
21
|
+
children?: Content | (() => Content);
|
|
22
|
+
}
|
|
23
|
+
export declare function Dir(props: DirProps): import("@rivetjs/runtime/jsx-runtime").CompiledElement;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Provider } from "@rivetjs/runtime/dom";
|
|
2
|
+
import { computed, effect, untrack } from "@rivetjs/reactivity";
|
|
3
|
+
import { _resolveDirectionality, DirectionalityContext } from "./index.js";
|
|
4
|
+
import { renderSlot } from "@rivetjs/runtime/slot";
|
|
5
|
+
export function Dir(props) {
|
|
6
|
+
const source = props.dir;
|
|
7
|
+
const rawDir = typeof source === "function" ? source : () => source;
|
|
8
|
+
const valueSignal = computed(() => _resolveDirectionality(rawDir()));
|
|
9
|
+
const state = { valueSignal, rawDir };
|
|
10
|
+
const onDirChange = props.onDirChange;
|
|
11
|
+
if (onDirChange) {
|
|
12
|
+
let previous = untrack(valueSignal);
|
|
13
|
+
effect(() => {
|
|
14
|
+
const next = valueSignal();
|
|
15
|
+
if (next !== previous) {
|
|
16
|
+
previous = next;
|
|
17
|
+
untrack(() => onDirChange(next));
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const children = props.children;
|
|
22
|
+
const content = (<Provider token={DirectionalityContext} value={state}>
|
|
23
|
+
{renderSlot(children)}
|
|
24
|
+
</Provider>);
|
|
25
|
+
if (props.as === "span")
|
|
26
|
+
return (<span id={props.id} class={props.class} dir={rawDir()}>
|
|
27
|
+
{content}
|
|
28
|
+
</span>);
|
|
29
|
+
if (props.as === "section")
|
|
30
|
+
return (<section id={props.id} class={props.class} dir={rawDir()}>
|
|
31
|
+
{content}
|
|
32
|
+
</section>);
|
|
33
|
+
return (<div id={props.id} class={props.class} dir={rawDir()}>
|
|
34
|
+
{content}
|
|
35
|
+
</div>);
|
|
36
|
+
}
|