@rivetjs/cdk 0.0.0-stage → 0.1.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +483 -0
- package/README.md +10 -2
- package/_adapters/collection.d.ts +160 -0
- package/_adapters/collection.js +235 -0
- package/_adapters/collections.d.ts +325 -0
- package/_adapters/collections.js +934 -0
- package/_adapters/dom-collection.d.ts +42 -0
- package/_adapters/dom-collection.js +228 -0
- package/_adapters/grid-selection.d.ts +115 -0
- package/_adapters/grid-selection.js +436 -0
- package/_adapters/interactions.d.ts +19 -0
- package/_adapters/interactions.js +45 -0
- package/_adapters/intl.d.ts +8 -0
- package/_adapters/intl.js +106 -0
- package/_adapters/press.d.ts +22 -0
- package/_adapters/press.js +34 -0
- package/_adapters/selectable.d.ts +132 -0
- package/_adapters/selectable.js +599 -0
- package/_adapters/selection.d.ts +120 -0
- package/_adapters/selection.js +709 -0
- package/_adapters/type-select.d.ts +8 -0
- package/_adapters/type-select.js +59 -0
- package/a11y/aria-describer.d.ts +46 -0
- package/a11y/aria-describer.js +169 -0
- package/a11y/focus-monitor.d.ts +98 -0
- package/a11y/focus-monitor.js +321 -0
- package/a11y/focus-trap.d.ts +137 -0
- package/a11y/focus-trap.js +378 -0
- package/a11y/high-contrast.d.ts +26 -0
- package/a11y/high-contrast.js +84 -0
- package/a11y/index.d.ts +37 -0
- package/a11y/index.js +97 -0
- package/a11y/interactivity-checker.d.ts +18 -0
- package/a11y/interactivity-checker.js +126 -0
- package/a11y/key-manager.d.ts +152 -0
- package/a11y/key-manager.js +397 -0
- package/a11y/live-announcer.d.ts +53 -0
- package/a11y/live-announcer.js +143 -0
- package/accordion/index.d.ts +2 -0
- package/accordion/index.jsx +10 -0
- package/announcer/index.d.ts +8 -0
- package/announcer/index.jsx +22 -0
- package/announcer/live-announcer.d.ts +15 -0
- package/announcer/live-announcer.js +123 -0
- package/autocomplete/behaviour.d.ts +94 -0
- package/autocomplete/behaviour.jsx +423 -0
- package/autocomplete/contexts.d.ts +54 -0
- package/autocomplete/contexts.js +28 -0
- package/autocomplete/index.d.ts +12 -0
- package/autocomplete/index.jsx +31 -0
- package/autocomplete/intl.d.ts +2 -0
- package/autocomplete/intl.js +36 -0
- package/bidi/bidi-dir.d.ts +23 -0
- package/bidi/bidi-dir.jsx +36 -0
- package/bidi/index.d.ts +58 -0
- package/bidi/index.js +84 -0
- package/breadcrumbs/behaviour.d.ts +6 -0
- package/breadcrumbs/behaviour.js +17 -0
- package/breadcrumbs/index.d.ts +68 -0
- package/breadcrumbs/index.jsx +224 -0
- package/breadcrumbs/intl.d.ts +3 -0
- package/breadcrumbs/intl.js +104 -0
- package/button/behaviour.d.ts +61 -0
- package/button/behaviour.js +90 -0
- package/button/index.d.ts +38 -0
- package/button/index.jsx +376 -0
- package/button/press.d.ts +25 -0
- package/button/press.js +54 -0
- package/calendar/behaviour.d.ts +250 -0
- package/calendar/behaviour.jsx +939 -0
- package/calendar/index.d.ts +157 -0
- package/calendar/index.jsx +484 -0
- package/calendar/intl.d.ts +3 -0
- package/calendar/intl.js +36 -0
- package/carousel/behaviour.d.ts +50 -0
- package/carousel/behaviour.jsx +365 -0
- package/carousel/engine/Alignment.d.ts +5 -0
- package/carousel/engine/Alignment.js +24 -0
- package/carousel/engine/Animations.d.ts +13 -0
- package/carousel/engine/Animations.js +28 -0
- package/carousel/engine/Axis.d.ts +14 -0
- package/carousel/engine/Axis.js +35 -0
- package/carousel/engine/Counter.d.ts +7 -0
- package/carousel/engine/Counter.js +32 -0
- package/carousel/engine/DragHandler.d.ts +22 -0
- package/carousel/engine/DragHandler.js +141 -0
- package/carousel/engine/DragTracker.d.ts +10 -0
- package/carousel/engine/DragTracker.js +29 -0
- package/carousel/engine/EmblaCarousel.d.ts +32 -0
- package/carousel/engine/EmblaCarousel.js +177 -0
- package/carousel/engine/Engine.d.ts +64 -0
- package/carousel/engine/Engine.js +137 -0
- package/carousel/engine/EventHandler.d.ts +27 -0
- package/carousel/engine/EventHandler.js +33 -0
- package/carousel/engine/EventStore.d.ts +9 -0
- package/carousel/engine/EventStore.js +25 -0
- package/carousel/engine/NodeRects.d.ts +12 -0
- package/carousel/engine/NodeRects.js +18 -0
- package/carousel/engine/Options.d.ts +40 -0
- package/carousel/engine/Options.js +22 -0
- package/carousel/engine/OptionsHandler.d.ts +10 -0
- package/carousel/engine/OptionsHandler.js +26 -0
- package/carousel/engine/PercentOfView.d.ts +4 -0
- package/carousel/engine/PercentOfView.js +9 -0
- package/carousel/engine/Plugins.d.ts +16 -0
- package/carousel/engine/Plugins.js +1 -0
- package/carousel/engine/PluginsHandler.d.ts +8 -0
- package/carousel/engine/PluginsHandler.js +16 -0
- package/carousel/engine/ResizeHandler.d.ts +13 -0
- package/carousel/engine/ResizeHandler.js +51 -0
- package/carousel/engine/ScrollBounds.d.ts +10 -0
- package/carousel/engine/ScrollBounds.js +41 -0
- package/carousel/engine/ScrollContain.d.ts +7 -0
- package/carousel/engine/ScrollContain.js +52 -0
- package/carousel/engine/ScrollLimit.d.ts +5 -0
- package/carousel/engine/ScrollLimit.js +13 -0
- package/carousel/engine/ScrollLooper.d.ts +6 -0
- package/carousel/engine/ScrollLooper.js +26 -0
- package/carousel/engine/ScrollProgress.d.ts +5 -0
- package/carousel/engine/ScrollProgress.js +11 -0
- package/carousel/engine/ScrollSnaps.d.ts +9 -0
- package/carousel/engine/ScrollSnaps.js +26 -0
- package/carousel/engine/ScrollTarget.d.ts +12 -0
- package/carousel/engine/ScrollTarget.js +47 -0
- package/carousel/engine/ScrollTo.d.ts +11 -0
- package/carousel/engine/ScrollTo.js +36 -0
- package/carousel/engine/SlideFocus.d.ts +13 -0
- package/carousel/engine/SlideFocus.js +39 -0
- package/carousel/engine/SlideLooper.d.ts +18 -0
- package/carousel/engine/SlideLooper.js +78 -0
- package/carousel/engine/SlideRegistry.d.ts +7 -0
- package/carousel/engine/SlideRegistry.js +31 -0
- package/carousel/engine/SlideSizes.d.ts +10 -0
- package/carousel/engine/SlideSizes.js +41 -0
- package/carousel/engine/SlidesHandler.d.ts +10 -0
- package/carousel/engine/SlidesHandler.js +36 -0
- package/carousel/engine/SlidesInView.d.ts +8 -0
- package/carousel/engine/SlidesInView.js +59 -0
- package/carousel/engine/SlidesToScroll.d.ts +7 -0
- package/carousel/engine/SlidesToScroll.js +41 -0
- package/carousel/engine/Translate.d.ts +7 -0
- package/carousel/engine/Translate.js +38 -0
- package/carousel/engine/index.d.ts +11 -0
- package/carousel/engine/index.js +1 -0
- package/carousel/engine/utils.d.ts +15 -0
- package/carousel/engine/utils.js +45 -0
- package/carousel/index.d.ts +202 -0
- package/carousel/index.jsx +469 -0
- package/carousel/plugins/auto-height/AutoHeight.d.ts +14 -0
- package/carousel/plugins/auto-height/AutoHeight.js +43 -0
- package/carousel/plugins/auto-height/Options.d.ts +2 -0
- package/carousel/plugins/auto-height/Options.js +1 -0
- package/carousel/plugins/auto-height/index.d.ts +2 -0
- package/carousel/plugins/auto-height/index.js +1 -0
- package/carousel/plugins/auto-scroll/AutoScroll.d.ts +25 -0
- package/carousel/plugins/auto-scroll/AutoScroll.js +185 -0
- package/carousel/plugins/auto-scroll/Options.d.ts +13 -0
- package/carousel/plugins/auto-scroll/Options.js +12 -0
- package/carousel/plugins/auto-scroll/index.d.ts +2 -0
- package/carousel/plugins/auto-scroll/index.js +1 -0
- package/carousel/plugins/auto-scroll/utils.d.ts +3 -0
- package/carousel/plugins/auto-scroll/utils.js +4 -0
- package/carousel/plugins/autoplay/Autoplay.d.ts +29 -0
- package/carousel/plugins/autoplay/Autoplay.js +173 -0
- package/carousel/plugins/autoplay/Options.d.ts +14 -0
- package/carousel/plugins/autoplay/Options.js +12 -0
- package/carousel/plugins/autoplay/index.d.ts +2 -0
- package/carousel/plugins/autoplay/index.js +1 -0
- package/carousel/plugins/autoplay/utils.d.ts +4 -0
- package/carousel/plugins/autoplay/utils.js +11 -0
- package/carousel/plugins/class-names/ClassNames.d.ts +14 -0
- package/carousel/plugins/class-names/ClassNames.js +98 -0
- package/carousel/plugins/class-names/Options.d.ts +13 -0
- package/carousel/plugins/class-names/Options.js +9 -0
- package/carousel/plugins/class-names/index.d.ts +2 -0
- package/carousel/plugins/class-names/index.js +1 -0
- package/carousel/plugins/class-names/utils.d.ts +4 -0
- package/carousel/plugins/class-names/utils.js +14 -0
- package/carousel/plugins/fade/Fade.d.ts +14 -0
- package/carousel/plugins/fade/Fade.js +199 -0
- package/carousel/plugins/fade/Options.d.ts +2 -0
- package/carousel/plugins/fade/Options.js +1 -0
- package/carousel/plugins/fade/index.d.ts +2 -0
- package/carousel/plugins/fade/index.js +1 -0
- package/carousel/plugins/fade/utils.d.ts +2 -0
- package/carousel/plugins/fade/utils.js +8 -0
- package/carousel/state.d.ts +81 -0
- package/carousel/state.js +71 -0
- package/chat/index.d.ts +83 -0
- package/chat/index.jsx +287 -0
- package/checkbox/behaviour.d.ts +172 -0
- package/checkbox/behaviour.jsx +412 -0
- package/checkbox/index.d.ts +168 -0
- package/checkbox/index.jsx +310 -0
- package/clipboard/index.d.ts +49 -0
- package/clipboard/index.js +136 -0
- package/coercion/index.d.ts +36 -0
- package/coercion/index.js +58 -0
- package/collections/base.d.ts +115 -0
- package/collections/base.js +346 -0
- package/collections/builder.d.ts +44 -0
- package/collections/builder.js +283 -0
- package/collections/components.d.ts +252 -0
- package/collections/components.jsx +745 -0
- package/collections/data-source.d.ts +26 -0
- package/collections/data-source.js +27 -0
- package/collections/dom.d.ts +34 -0
- package/collections/dom.js +127 -0
- package/collections/grid.d.ts +45 -0
- package/collections/grid.js +125 -0
- package/collections/hidden.d.ts +4 -0
- package/collections/hidden.js +12 -0
- package/collections/index.d.ts +45 -0
- package/collections/index.js +105 -0
- package/collections/list-state.d.ts +99 -0
- package/collections/list-state.js +156 -0
- package/collections/list.d.ts +20 -0
- package/collections/list.js +77 -0
- package/collections/nodes.d.ts +17 -0
- package/collections/nodes.js +107 -0
- package/collections/row-stamps.d.ts +17 -0
- package/collections/row-stamps.js +108 -0
- package/collections/selection-model.d.ts +93 -0
- package/collections/selection-model.js +192 -0
- package/collections/server-dev.d.ts +6 -0
- package/collections/server-dev.js +18 -0
- package/collections/server-off.d.ts +6 -0
- package/collections/server-off.js +9 -0
- package/collections/server-on.d.ts +29 -0
- package/collections/server-on.jsx +86 -0
- package/collections/table.d.ts +114 -0
- package/collections/table.js +439 -0
- package/collections/tree-state.d.ts +47 -0
- package/collections/tree-state.js +73 -0
- package/collections/tree.d.ts +20 -0
- package/collections/tree.js +66 -0
- package/collections/types.d.ts +229 -0
- package/collections/types.js +4 -0
- package/collections/unique-selection-dispatcher.d.ts +10 -0
- package/collections/unique-selection-dispatcher.js +25 -0
- package/color/area-state.d.ts +99 -0
- package/color/area-state.js +160 -0
- package/color/aria-intl.d.ts +3 -0
- package/color/aria-intl.js +274 -0
- package/color/channel-field-state.d.ts +50 -0
- package/color/channel-field-state.jsx +87 -0
- package/color/color.d.ts +78 -0
- package/color/color.js +738 -0
- package/color/field-state.d.ts +66 -0
- package/color/field-state.jsx +159 -0
- package/color/index.d.ts +58 -0
- package/color/index.js +88 -0
- package/color/intl.d.ts +3 -0
- package/color/intl.js +1328 -0
- package/color/picker-state.d.ts +20 -0
- package/color/picker-state.js +19 -0
- package/color/slider-state.d.ts +78 -0
- package/color/slider-state.jsx +98 -0
- package/color/value.d.ts +27 -0
- package/color/value.js +36 -0
- package/color/wheel-state.d.ts +77 -0
- package/color/wheel-state.js +152 -0
- package/color-area/behaviour.d.ts +161 -0
- package/color-area/behaviour.jsx +454 -0
- package/color-area/index.d.ts +34 -0
- package/color-area/index.jsx +187 -0
- package/color-field/behaviour.d.ts +112 -0
- package/color-field/behaviour.jsx +262 -0
- package/color-field/index.d.ts +72 -0
- package/color-field/index.jsx +309 -0
- package/color-picker/index.d.ts +19 -0
- package/color-picker/index.jsx +49 -0
- package/color-slider/behaviour.d.ts +103 -0
- package/color-slider/behaviour.jsx +234 -0
- package/color-slider/index.d.ts +40 -0
- package/color-slider/index.jsx +162 -0
- package/color-swatch/behaviour.d.ts +40 -0
- package/color-swatch/behaviour.js +36 -0
- package/color-swatch/index.d.ts +29 -0
- package/color-swatch/index.jsx +82 -0
- package/color-swatch-picker/index.d.ts +62 -0
- package/color-swatch-picker/index.jsx +95 -0
- package/color-swatch-picker/intl.d.ts +3 -0
- package/color-swatch-picker/intl.js +104 -0
- package/color-thumb/index.d.ts +85 -0
- package/color-thumb/index.jsx +93 -0
- package/color-wheel/behaviour.d.ts +123 -0
- package/color-wheel/behaviour.jsx +301 -0
- package/color-wheel/index.d.ts +50 -0
- package/color-wheel/index.jsx +166 -0
- package/combobox/behaviour.d.ts +120 -0
- package/combobox/behaviour.jsx +588 -0
- package/combobox/index.d.ts +101 -0
- package/combobox/index.jsx +365 -0
- package/combobox/intl.d.ts +2 -0
- package/combobox/intl.js +240 -0
- package/compare/behaviour.d.ts +101 -0
- package/compare/behaviour.js +288 -0
- package/compare/index.d.ts +58 -0
- package/compare/index.jsx +129 -0
- package/data/async-list.d.ts +78 -0
- package/data/async-list.jsx +257 -0
- package/data/index.d.ts +3 -0
- package/data/index.jsx +6 -0
- package/data/list-data.d.ts +88 -0
- package/data/list-data.jsx +210 -0
- package/data/tree-data.d.ts +59 -0
- package/data/tree-data.jsx +278 -0
- package/data-grid/behaviour.d.ts +95 -0
- package/data-grid/behaviour.js +725 -0
- package/data-grid/index.d.ts +138 -0
- package/data-grid/index.jsx +452 -0
- package/data-grid/state.d.ts +131 -0
- package/data-grid/state.js +288 -0
- package/date/CalendarDate.d.ts +207 -0
- package/date/CalendarDate.js +374 -0
- package/date/DateFormatter.d.ts +24 -0
- package/date/DateFormatter.js +175 -0
- package/date/calendars/BuddhistCalendar.d.ts +16 -0
- package/date/calendars/BuddhistCalendar.js +46 -0
- package/date/calendars/EthiopicCalendar.d.ts +45 -0
- package/date/calendars/EthiopicCalendar.js +178 -0
- package/date/calendars/GregorianCalendar.d.ts +26 -0
- package/date/calendars/GregorianCalendar.js +122 -0
- package/date/calendars/HebrewCalendar.d.ts +21 -0
- package/date/calendars/HebrewCalendar.js +174 -0
- package/date/calendars/IndianCalendar.d.ts +17 -0
- package/date/calendars/IndianCalendar.js +111 -0
- package/date/calendars/IslamicCalendar.d.ts +51 -0
- package/date/calendars/IslamicCalendar.js +205 -0
- package/date/calendars/JapaneseCalendar.d.ts +22 -0
- package/date/calendars/JapaneseCalendar.js +148 -0
- package/date/calendars/PersianCalendar.d.ts +19 -0
- package/date/calendars/PersianCalendar.js +85 -0
- package/date/calendars/TaiwanCalendar.d.ts +19 -0
- package/date/calendars/TaiwanCalendar.js +70 -0
- package/date/conversion.d.ts +45 -0
- package/date/conversion.js +269 -0
- package/date/createCalendar.d.ts +3 -0
- package/date/createCalendar.js +55 -0
- package/date/index.d.ts +20 -0
- package/date/index.js +30 -0
- package/date/manipulation.d.ts +25 -0
- package/date/manipulation.js +399 -0
- package/date/queries.d.ts +93 -0
- package/date/queries.js +303 -0
- package/date/serialize.d.ts +18 -0
- package/date/serialize.js +55 -0
- package/date/string.d.ts +36 -0
- package/date/string.js +223 -0
- package/date/types.d.ts +136 -0
- package/date/types.js +14 -0
- package/date/utils.d.ts +4 -0
- package/date/utils.js +16 -0
- package/date/weekStartData.d.ts +1 -0
- package/date/weekStartData.js +112 -0
- package/date-field/behaviour.d.ts +188 -0
- package/date-field/behaviour.jsx +1025 -0
- package/date-field/index.d.ts +150 -0
- package/date-field/index.jsx +354 -0
- package/date-field/intl.d.ts +3 -0
- package/date-field/intl.js +36 -0
- package/date-field/live-value.d.ts +22 -0
- package/date-field/live-value.jsx +44 -0
- package/date-picker/behaviour.d.ts +95 -0
- package/date-picker/behaviour.jsx +343 -0
- package/date-picker/index.d.ts +66 -0
- package/date-picker/index.jsx +243 -0
- package/dialog/behaviour.d.ts +63 -0
- package/dialog/behaviour.jsx +90 -0
- package/dialog/contexts.d.ts +12 -0
- package/dialog/contexts.js +8 -0
- package/dialog/index.d.ts +48 -0
- package/dialog/index.jsx +301 -0
- package/disclosure/behaviour.d.ts +50 -0
- package/disclosure/behaviour.jsx +128 -0
- package/disclosure/details.d.ts +21 -0
- package/disclosure/details.jsx +14 -0
- package/disclosure/index.d.ts +92 -0
- package/disclosure/index.jsx +300 -0
- package/drag-drop/cdk-index.d.ts +22 -0
- package/drag-drop/cdk-index.jsx +25 -0
- package/drag-drop/directives/assertions.d.ts +6 -0
- package/drag-drop/directives/assertions.js +13 -0
- package/drag-drop/directives/config.d.ts +30 -0
- package/drag-drop/directives/config.js +7 -0
- package/drag-drop/directives/drag-handle.d.ts +10 -0
- package/drag-drop/directives/drag-handle.js +29 -0
- package/drag-drop/directives/drag.d.ts +210 -0
- package/drag-drop/directives/drag.js +550 -0
- package/drag-drop/directives/drop-list-group.d.ts +25 -0
- package/drag-drop/directives/drop-list-group.js +55 -0
- package/drag-drop/directives/drop-list.d.ts +163 -0
- package/drag-drop/directives/drop-list.js +396 -0
- package/drag-drop/directives/registry.d.ts +32 -0
- package/drag-drop/directives/registry.js +61 -0
- package/drag-drop/dom/clone-node.d.ts +2 -0
- package/drag-drop/dom/clone-node.js +58 -0
- package/drag-drop/dom/coerce.d.ts +6 -0
- package/drag-drop/dom/coerce.js +8 -0
- package/drag-drop/dom/dom-rect.d.ts +37 -0
- package/drag-drop/dom/dom-rect.js +71 -0
- package/drag-drop/dom/fake-event.d.ts +4 -0
- package/drag-drop/dom/fake-event.js +22 -0
- package/drag-drop/dom/inherited-text.d.ts +4 -0
- package/drag-drop/dom/inherited-text.js +44 -0
- package/drag-drop/dom/layout-shift.d.ts +8 -0
- package/drag-drop/dom/layout-shift.js +87 -0
- package/drag-drop/dom/mount-content.d.ts +2 -0
- package/drag-drop/dom/mount-content.js +7 -0
- package/drag-drop/dom/parent-position-tracker.d.ts +32 -0
- package/drag-drop/dom/parent-position-tracker.js +71 -0
- package/drag-drop/dom/root-node.d.ts +21 -0
- package/drag-drop/dom/root-node.js +41 -0
- package/drag-drop/dom/shadow-dom.d.ts +4 -0
- package/drag-drop/dom/shadow-dom.js +18 -0
- package/drag-drop/dom/styling.d.ts +52 -0
- package/drag-drop/dom/styling.js +86 -0
- package/drag-drop/dom/transition-duration.d.ts +2 -0
- package/drag-drop/dom/transition-duration.js +29 -0
- package/drag-drop/drag-drop-registry.d.ts +69 -0
- package/drag-drop/drag-drop-registry.js +224 -0
- package/drag-drop/drag-drop.d.ts +19 -0
- package/drag-drop/drag-drop.js +10 -0
- package/drag-drop/drag-events.d.ts +117 -0
- package/drag-drop/drag-events.js +1 -0
- package/drag-drop/drag-handle.d.ts +18 -0
- package/drag-drop/drag-handle.jsx +53 -0
- package/drag-drop/drag-placeholder.d.ts +8 -0
- package/drag-drop/drag-placeholder.jsx +25 -0
- package/drag-drop/drag-preview.d.ts +10 -0
- package/drag-drop/drag-preview.jsx +31 -0
- package/drag-drop/drag-ref.d.ts +476 -0
- package/drag-drop/drag-ref.js +1306 -0
- package/drag-drop/drag-utils.d.ts +25 -0
- package/drag-drop/drag-utils.js +53 -0
- package/drag-drop/drag.d.ts +23 -0
- package/drag-drop/drag.jsx +128 -0
- package/drag-drop/drop-list-group.d.ts +22 -0
- package/drag-drop/drop-list-group.jsx +19 -0
- package/drag-drop/drop-list-ref.d.ts +295 -0
- package/drag-drop/drop-list-ref.js +707 -0
- package/drag-drop/drop-list.d.ts +19 -0
- package/drag-drop/drop-list.jsx +87 -0
- package/drag-drop/index.d.ts +1 -0
- package/drag-drop/index.jsx +4 -0
- package/drag-drop/lazy-refs.d.ts +28 -0
- package/drag-drop/lazy-refs.js +144 -0
- package/drag-drop/preview-ref.d.ts +38 -0
- package/drag-drop/preview-ref.js +132 -0
- package/drag-drop/sorting/drop-list-sort-strategy.d.ts +29 -0
- package/drag-drop/sorting/drop-list-sort-strategy.js +1 -0
- package/drag-drop/sorting/mixed-sort-strategy.d.ts +99 -0
- package/drag-drop/sorting/mixed-sort-strategy.js +259 -0
- package/drag-drop/sorting/single-axis-sort-strategy.d.ts +112 -0
- package/drag-drop/sorting/single-axis-sort-strategy.js +343 -0
- package/file-trigger/index.d.ts +24 -0
- package/file-trigger/index.jsx +41 -0
- package/flip/index.d.ts +59 -0
- package/flip/index.js +124 -0
- package/focus/focus-ring.d.ts +42 -0
- package/focus/focus-ring.jsx +77 -0
- package/focus/focus-scope.d.ts +51 -0
- package/focus/focus-scope.jsx +431 -0
- package/focus/focusable.d.ts +33 -0
- package/focus/focusable.jsx +93 -0
- package/focus/index.d.ts +74 -0
- package/focus/index.js +274 -0
- package/form/behaviour.d.ts +29 -0
- package/form/behaviour.js +145 -0
- package/form/field-error.d.ts +38 -0
- package/form/field-error.jsx +67 -0
- package/form/index.d.ts +77 -0
- package/form/index.jsx +116 -0
- package/grid/behaviour.d.ts +290 -0
- package/grid/behaviour.js +683 -0
- package/grid/intl.d.ts +2 -0
- package/grid/intl.js +36 -0
- package/grid/keyboard-delegate.d.ts +56 -0
- package/grid/keyboard-delegate.js +316 -0
- package/grid-list/behaviour.d.ts +248 -0
- package/grid-list/behaviour.js +616 -0
- package/grid-list/index.d.ts +204 -0
- package/grid-list/index.jsx +721 -0
- package/grid-list/row.d.ts +24 -0
- package/grid-list/row.js +57 -0
- package/group/index.d.ts +48 -0
- package/group/index.jsx +126 -0
- package/header/index.d.ts +13 -0
- package/header/index.jsx +34 -0
- package/heading/index.d.ts +19 -0
- package/heading/index.jsx +55 -0
- package/highlight/index.d.ts +12 -0
- package/highlight/index.jsx +357 -0
- package/i18n/filter.d.ts +16 -0
- package/i18n/filter.js +66 -0
- package/i18n/i18n-provider.d.ts +10 -0
- package/i18n/i18n-provider.jsx +15 -0
- package/i18n/index.d.ts +27 -0
- package/i18n/index.js +115 -0
- package/i18n/intl-cache.d.ts +4 -0
- package/i18n/intl-cache.js +40 -0
- package/i18n/list-formatter.d.ts +2 -0
- package/i18n/list-formatter.js +11 -0
- package/input/index.d.ts +51 -0
- package/input/index.jsx +95 -0
- package/interactions/controllable.d.ts +42 -0
- package/interactions/controllable.js +67 -0
- package/interactions/focus-visible.d.ts +68 -0
- package/interactions/focus-visible.jsx +291 -0
- package/interactions/focus.d.ts +58 -0
- package/interactions/focus.jsx +152 -0
- package/interactions/hover.d.ts +54 -0
- package/interactions/hover.jsx +139 -0
- package/interactions/index.d.ts +1 -0
- package/interactions/index.js +3 -0
- package/interactions/interact-outside.d.ts +24 -0
- package/interactions/interact-outside.jsx +57 -0
- package/interactions/keyboard.d.ts +28 -0
- package/interactions/keyboard.jsx +51 -0
- package/interactions/long-press.d.ts +41 -0
- package/interactions/long-press.jsx +79 -0
- package/interactions/merge-props.d.ts +54 -0
- package/interactions/merge-props.jsx +257 -0
- package/interactions/move.d.ts +48 -0
- package/interactions/move.jsx +96 -0
- package/interactions/press.d.ts +129 -0
- package/interactions/press.jsx +539 -0
- package/interactions/pressable.d.ts +22 -0
- package/interactions/pressable.jsx +93 -0
- package/interactions/scroll-wheel.d.ts +20 -0
- package/interactions/scroll-wheel.jsx +40 -0
- package/interactions/utils.d.ts +52 -0
- package/interactions/utils.js +253 -0
- package/keyboard/index.d.ts +12 -0
- package/keyboard/index.jsx +34 -0
- package/keys/index.d.ts +68 -0
- package/keys/index.js +199 -0
- package/label/behaviour.d.ts +54 -0
- package/label/behaviour.js +60 -0
- package/label/index.d.ts +35 -0
- package/label/index.jsx +85 -0
- package/landmark/index.d.ts +10 -0
- package/landmark/index.jsx +35 -0
- package/landmark/manager.d.ts +50 -0
- package/landmark/manager.js +364 -0
- package/layout/index.d.ts +90 -0
- package/layout/index.js +207 -0
- package/lightbox/behaviour.d.ts +82 -0
- package/lightbox/behaviour.js +490 -0
- package/lightbox/captions/index.d.ts +39 -0
- package/lightbox/captions/index.jsx +44 -0
- package/lightbox/counter/index.d.ts +10 -0
- package/lightbox/counter/index.jsx +10 -0
- package/lightbox/download/index.d.ts +32 -0
- package/lightbox/download/index.jsx +89 -0
- package/lightbox/embed/index.d.ts +15 -0
- package/lightbox/embed/index.jsx +58 -0
- package/lightbox/fullscreen/index.d.ts +24 -0
- package/lightbox/fullscreen/index.jsx +80 -0
- package/lightbox/index.d.ts +129 -0
- package/lightbox/index.jsx +284 -0
- package/lightbox/inline/index.d.ts +18 -0
- package/lightbox/inline/index.jsx +15 -0
- package/lightbox/pdf/index.d.ts +18 -0
- package/lightbox/pdf/index.jsx +31 -0
- package/lightbox/share/index.d.ts +29 -0
- package/lightbox/share/index.jsx +43 -0
- package/lightbox/slideshow/index.d.ts +24 -0
- package/lightbox/slideshow/index.jsx +118 -0
- package/lightbox/state.d.ts +334 -0
- package/lightbox/state.js +192 -0
- package/lightbox/thumbnails/index.d.ts +54 -0
- package/lightbox/thumbnails/index.jsx +96 -0
- package/lightbox/video/index.d.ts +13 -0
- package/lightbox/video/index.jsx +42 -0
- package/lightbox/zoom/index.d.ts +67 -0
- package/lightbox/zoom/index.jsx +456 -0
- package/link/behaviour.d.ts +41 -0
- package/link/behaviour.js +58 -0
- package/link/index.d.ts +30 -0
- package/link/index.jsx +179 -0
- package/link/router.d.ts +1 -0
- package/link/router.js +5 -0
- package/listbox/behaviour.d.ts +175 -0
- package/listbox/behaviour.jsx +515 -0
- package/listbox/index.d.ts +129 -0
- package/listbox/index.jsx +632 -0
- package/markdown/index.d.ts +82 -0
- package/markdown/index.jsx +654 -0
- package/masonry/behaviour.d.ts +121 -0
- package/masonry/behaviour.js +676 -0
- package/masonry/flip.d.ts +27 -0
- package/masonry/flip.js +61 -0
- package/masonry/geometry.d.ts +44 -0
- package/masonry/geometry.js +184 -0
- package/masonry/index.d.ts +153 -0
- package/masonry/index.jsx +833 -0
- package/masonry/justified.d.ts +49 -0
- package/masonry/justified.js +250 -0
- package/masonry/layout.d.ts +200 -0
- package/masonry/layout.js +668 -0
- package/masonry/masonry-layout.d.ts +57 -0
- package/masonry/masonry-layout.js +159 -0
- package/masonry/masonry.css +29 -0
- package/menu/behaviour.d.ts +205 -0
- package/menu/behaviour.jsx +847 -0
- package/menu/index.d.ts +171 -0
- package/menu/index.jsx +702 -0
- package/menu/intl.d.ts +2 -0
- package/menu/intl.js +36 -0
- package/menu/safely-mouse-to-submenu.d.ts +12 -0
- package/menu/safely-mouse-to-submenu.js +128 -0
- package/meter/behaviour.d.ts +18 -0
- package/meter/behaviour.jsx +17 -0
- package/meter/index.d.ts +30 -0
- package/meter/index.jsx +85 -0
- package/modal/index.d.ts +79 -0
- package/modal/index.jsx +359 -0
- package/modal/provider.d.ts +47 -0
- package/modal/provider.jsx +105 -0
- package/morph/index.d.ts +91 -0
- package/morph/index.jsx +372 -0
- package/morph/item.d.ts +89 -0
- package/morph/item.jsx +546 -0
- package/motion/Animations.d.ts +17 -0
- package/motion/Animations.js +56 -0
- package/motion/DragRelease.d.ts +22 -0
- package/motion/DragRelease.js +26 -0
- package/motion/DragTracker.d.ts +7 -0
- package/motion/DragTracker.js +43 -0
- package/motion/Limit.d.ts +12 -0
- package/motion/Limit.js +37 -0
- package/motion/Motion1D.d.ts +38 -0
- package/motion/Motion1D.js +72 -0
- package/motion/ScrollBody.d.ts +13 -0
- package/motion/ScrollBody.js +75 -0
- package/motion/Vector1d.d.ts +8 -0
- package/motion/Vector1d.js +29 -0
- package/motion/index.d.ts +8 -0
- package/motion/index.js +12 -0
- package/motion/utils.d.ts +5 -0
- package/motion/utils.js +23 -0
- package/native-select/index.d.ts +46 -0
- package/native-select/index.jsx +99 -0
- package/navigation-tree/index.d.ts +43 -0
- package/navigation-tree/index.jsx +110 -0
- package/number/NumberFormatter.d.ts +28 -0
- package/number/NumberFormatter.js +144 -0
- package/number/NumberParser.d.ts +27 -0
- package/number/NumberParser.js +316 -0
- package/number/index.d.ts +5 -0
- package/number/index.jsx +17 -0
- package/number/number-field-state.d.ts +132 -0
- package/number/number-field-state.jsx +364 -0
- package/number-field/behaviour.d.ts +165 -0
- package/number-field/behaviour.jsx +512 -0
- package/number-field/index.d.ts +52 -0
- package/number-field/index.jsx +207 -0
- package/number-field/intl.d.ts +2 -0
- package/number-field/intl.js +36 -0
- package/observers/index.d.ts +70 -0
- package/observers/index.js +279 -0
- package/overflow/index.d.ts +93 -0
- package/overflow/index.jsx +267 -0
- package/overlay/aria-hide-outside.d.ts +12 -0
- package/overlay/aria-hide-outside.js +141 -0
- package/overlay/close-on-scroll.d.ts +1 -0
- package/overlay/close-on-scroll.js +6 -0
- package/overlay/contexts.d.ts +34 -0
- package/overlay/contexts.js +21 -0
- package/overlay/dismiss-button.d.ts +10 -0
- package/overlay/dismiss-button.jsx +18 -0
- package/overlay/hover-trigger.d.ts +54 -0
- package/overlay/hover-trigger.jsx +221 -0
- package/overlay/index.d.ts +40 -0
- package/overlay/index.js +139 -0
- package/overlay/modal-overlay.d.ts +16 -0
- package/overlay/modal-overlay.js +38 -0
- package/overlay/overlay-strings.d.ts +4 -0
- package/overlay/overlay-strings.js +52 -0
- package/overlay/overlay-trigger-state.d.ts +1 -0
- package/overlay/overlay-trigger-state.js +3 -0
- package/overlay/overlay-trigger.d.ts +27 -0
- package/overlay/overlay-trigger.jsx +50 -0
- package/overlay/position.d.ts +160 -0
- package/overlay/position.js +559 -0
- package/overlay/prevent-scroll-ios.d.ts +17 -0
- package/overlay/prevent-scroll-ios.js +331 -0
- package/overlay/prevent-scroll.d.ts +18 -0
- package/overlay/prevent-scroll.js +122 -0
- package/overlay/safe-area.d.ts +28 -0
- package/overlay/safe-area.js +108 -0
- package/overlay-arrow/index.d.ts +23 -0
- package/overlay-arrow/index.jsx +59 -0
- package/overlay-service/connected-position.d.ts +163 -0
- package/overlay-service/connected-position.js +661 -0
- package/overlay-service/global-position.d.ts +34 -0
- package/overlay-service/global-position.js +154 -0
- package/overlay-service/index.d.ts +15 -0
- package/overlay-service/index.js +27 -0
- package/overlay-service/overlay-container.d.ts +27 -0
- package/overlay-service/overlay-container.js +93 -0
- package/overlay-service/overlay-dispatchers.d.ts +44 -0
- package/overlay-service/overlay-dispatchers.js +149 -0
- package/overlay-service/overlay-position-builder.d.ts +8 -0
- package/overlay-service/overlay-position-builder.js +15 -0
- package/overlay-service/overlay-ref.d.ts +155 -0
- package/overlay-service/overlay-ref.js +436 -0
- package/overlay-service/overlay-strategy.d.ts +48 -0
- package/overlay-service/overlay-strategy.js +3 -0
- package/overlay-service/overlay-viewport.d.ts +85 -0
- package/overlay-service/overlay-viewport.js +192 -0
- package/overlay-service/overlay.css +94 -0
- package/overlay-service/scroll-strategies.d.ts +71 -0
- package/overlay-service/scroll-strategies.js +185 -0
- package/package.json +754 -4
- package/platform/index.d.ts +100 -0
- package/platform/index.js +304 -0
- package/popover/behaviour.d.ts +23 -0
- package/popover/behaviour.js +39 -0
- package/popover/index.d.ts +60 -0
- package/popover/index.jsx +285 -0
- package/popover/popover-overlay.d.ts +27 -0
- package/popover/popover-overlay.jsx +60 -0
- package/popover/use-popover.d.ts +57 -0
- package/popover/use-popover.js +92 -0
- package/portal/index.d.ts +55 -0
- package/portal/index.jsx +83 -0
- package/portal/portal-mount.d.ts +8 -0
- package/portal/portal-mount.js +7 -0
- package/portal/portal-outlet.d.ts +88 -0
- package/portal/portal-outlet.js +222 -0
- package/preview-trigger/behaviour.d.ts +70 -0
- package/preview-trigger/behaviour.jsx +258 -0
- package/preview-trigger/index.d.ts +12 -0
- package/preview-trigger/index.jsx +82 -0
- package/progress-bar/behaviour.d.ts +77 -0
- package/progress-bar/behaviour.jsx +75 -0
- package/progress-bar/context.d.ts +4 -0
- package/progress-bar/context.js +7 -0
- package/progress-bar/index.d.ts +38 -0
- package/progress-bar/index.jsx +90 -0
- package/radio-group/behaviour.d.ts +11 -0
- package/radio-group/behaviour.js +85 -0
- package/radio-group/index.d.ts +82 -0
- package/radio-group/index.jsx +142 -0
- package/radio-group/parts.d.ts +223 -0
- package/radio-group/parts.jsx +425 -0
- package/range-calendar/behaviour.d.ts +2 -0
- package/range-calendar/behaviour.jsx +5 -0
- package/range-calendar/index.d.ts +2 -0
- package/range-calendar/index.jsx +4 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.d.ts +1 -0
- package/resizable/engine/components/group/auto-save/getStorageKey.js +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.d.ts +5 -0
- package/resizable/engine/components/group/compareDocumentPosition.js +19 -0
- package/resizable/engine/components/group/readLegacyLayout.d.ts +16 -0
- package/resizable/engine/components/group/readLegacyLayout.js +48 -0
- package/resizable/engine/components/group/sortByElementOffset.d.ts +4 -0
- package/resizable/engine/components/group/sortByElementOffset.js +28 -0
- package/resizable/engine/components/group/types.d.ts +50 -0
- package/resizable/engine/components/group/types.js +1 -0
- package/resizable/engine/components/panel/types.d.ts +90 -0
- package/resizable/engine/components/panel/types.js +4 -0
- package/resizable/engine/constants.d.ts +15 -0
- package/resizable/engine/constants.js +27 -0
- package/resizable/engine/global/cursor/getCursorStyle.d.ts +7 -0
- package/resizable/engine/global/cursor/getCursorStyle.js +94 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.d.ts +5 -0
- package/resizable/engine/global/cursor/supportsAdvancedCursorStyles.js +20 -0
- package/resizable/engine/global/cursor/updateCursorStyle.d.ts +1 -0
- package/resizable/engine/global/cursor/updateCursorStyle.js +64 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.d.ts +4 -0
- package/resizable/engine/global/dom/calculateAvailableAxisSize.js +10 -0
- package/resizable/engine/global/dom/calculateHitRegions.d.ts +13 -0
- package/resizable/engine/global/dom/calculateHitRegions.js +153 -0
- package/resizable/engine/global/dom/calculateItemConstraints.d.ts +2 -0
- package/resizable/engine/global/dom/calculateItemConstraints.js +82 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentContextMenu.js +9 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentDoubleClick.js +28 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentKeyDown.js +97 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentLostPointerCapture.js +18 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerCancel.js +8 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerDown.js +54 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerLeave.js +22 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerMove.js +69 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerOut.js +20 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onDocumentPointerUp.js +15 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.d.ts +1 -0
- package/resizable/engine/global/event-handlers/onWindowBlur.js +11 -0
- package/resizable/engine/global/mountAxis.d.ts +2 -0
- package/resizable/engine/global/mountAxis.js +187 -0
- package/resizable/engine/global/mutable-state/axes.d.ts +37 -0
- package/resizable/engine/global/mutable-state/axes.js +52 -0
- package/resizable/engine/global/mutable-state/interactions.d.ts +17 -0
- package/resizable/engine/global/mutable-state/interactions.js +92 -0
- package/resizable/engine/global/mutable-state/types.d.ts +32 -0
- package/resizable/engine/global/mutable-state/types.js +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertEmToPixels.js +7 -0
- package/resizable/engine/global/styles/convertRemToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertRemToPixels.js +7 -0
- package/resizable/engine/global/styles/convertVhToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVhToPixels.js +5 -0
- package/resizable/engine/global/styles/convertVwToPixels.d.ts +1 -0
- package/resizable/engine/global/styles/convertVwToPixels.js +5 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.d.ts +2 -0
- package/resizable/engine/global/styles/parseSizeAndUnit.js +29 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.d.ts +5 -0
- package/resizable/engine/global/styles/sizeStyleToPixels.js +38 -0
- package/resizable/engine/global/types.d.ts +120 -0
- package/resizable/engine/global/types.js +1 -0
- package/resizable/engine/global/utils/abortActivePointerResize.d.ts +9 -0
- package/resizable/engine/global/utils/abortActivePointerResize.js +52 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.d.ts +9 -0
- package/resizable/engine/global/utils/adjustLayoutByDelta.js +219 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.d.ts +1 -0
- package/resizable/engine/global/utils/adjustLayoutForSeparator.js +48 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.d.ts +2 -0
- package/resizable/engine/global/utils/calculateDefaultLayout.js +30 -0
- package/resizable/engine/global/utils/calculateResizePreviews.d.ts +3 -0
- package/resizable/engine/global/utils/calculateResizePreviews.js +39 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.d.ts +12 -0
- package/resizable/engine/global/utils/calculateSeparatorAriaValues.js +43 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.d.ts +1 -0
- package/resizable/engine/global/utils/compareLayoutNumbers.js +11 -0
- package/resizable/engine/global/utils/completeActivePointerResize.d.ts +6 -0
- package/resizable/engine/global/utils/completeActivePointerResize.js +49 -0
- package/resizable/engine/global/utils/doRectsIntersect.d.ts +2 -0
- package/resizable/engine/global/utils/doRectsIntersect.js +3 -0
- package/resizable/engine/global/utils/expandHitTarget.d.ts +10 -0
- package/resizable/engine/global/utils/expandHitTarget.js +19 -0
- package/resizable/engine/global/utils/findClosestHitRegion.d.ts +9 -0
- package/resizable/engine/global/utils/findClosestHitRegion.js +35 -0
- package/resizable/engine/global/utils/findClosestRect.d.ts +6 -0
- package/resizable/engine/global/utils/findClosestRect.js +22 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.d.ts +7 -0
- package/resizable/engine/global/utils/findMatchingHitRegions.js +29 -0
- package/resizable/engine/global/utils/findSeparatorAxis.d.ts +21 -0
- package/resizable/engine/global/utils/findSeparatorAxis.js +12 -0
- package/resizable/engine/global/utils/formatLayoutNumber.d.ts +1 -0
- package/resizable/engine/global/utils/formatLayoutNumber.js +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.d.ts +5 -0
- package/resizable/engine/global/utils/getDefaultLayout.js +11 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.d.ts +5 -0
- package/resizable/engine/global/utils/getDistanceBetweenPointAndRect.js +6 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.d.ts +4 -0
- package/resizable/engine/global/utils/getImperativeAxisMethods.js +53 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.d.ts +5 -0
- package/resizable/engine/global/utils/getImperativeItemMethods.js +169 -0
- package/resizable/engine/global/utils/isCoarsePointer.d.ts +4 -0
- package/resizable/engine/global/utils/isCoarsePointer.js +17 -0
- package/resizable/engine/global/utils/isModal.d.ts +1 -0
- package/resizable/engine/global/utils/isModal.js +11 -0
- package/resizable/engine/global/utils/isViableHitTarget.d.ts +5 -0
- package/resizable/engine/global/utils/isViableHitTarget.js +50 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/itemConstraintsEqual.js +9 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.d.ts +1 -0
- package/resizable/engine/global/utils/layoutNumbersEqual.js +6 -0
- package/resizable/engine/global/utils/layoutsEqual.d.ts +2 -0
- package/resizable/engine/global/utils/layoutsEqual.js +15 -0
- package/resizable/engine/global/utils/normalizeLayout.d.ts +11 -0
- package/resizable/engine/global/utils/normalizeLayout.js +21 -0
- package/resizable/engine/global/utils/notifyItemOnResize.d.ts +2 -0
- package/resizable/engine/global/utils/notifyItemOnResize.js +23 -0
- package/resizable/engine/global/utils/objectsEqual.d.ts +1 -0
- package/resizable/engine/global/utils/objectsEqual.js +14 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.d.ts +7 -0
- package/resizable/engine/global/utils/preserveFixedItemSizes.js +53 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.d.ts +15 -0
- package/resizable/engine/global/utils/recordAxisLayoutChange.js +25 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.d.ts +18 -0
- package/resizable/engine/global/utils/updateActiveHitRegion.js +119 -0
- package/resizable/engine/global/utils/validateAxisLayout.d.ts +5 -0
- package/resizable/engine/global/utils/validateAxisLayout.js +70 -0
- package/resizable/engine/global/utils/validateItemSize.d.ts +7 -0
- package/resizable/engine/global/utils/validateItemSize.js +31 -0
- package/resizable/engine/global/utils/validateLayoutKeys.d.ts +2 -0
- package/resizable/engine/global/utils/validateLayoutKeys.js +13 -0
- package/resizable/engine/types.d.ts +13 -0
- package/resizable/engine/types.js +1 -0
- package/resizable/engine/utils/EventEmitter.d.ts +11 -0
- package/resizable/engine/utils/EventEmitter.js +60 -0
- package/resizable/engine/utils/assert.d.ts +1 -0
- package/resizable/engine/utils/assert.js +7 -0
- package/resizable/engine/utils/isArrayEqual.d.ts +1 -0
- package/resizable/engine/utils/isArrayEqual.js +15 -0
- package/resizable/engine/utils/isHTMLElement.d.ts +1 -0
- package/resizable/engine/utils/isHTMLElement.js +6 -0
- package/resizable/engine/utils/isShadowRoot.d.ts +1 -0
- package/resizable/engine/utils/isShadowRoot.js +6 -0
- package/resizable/engine/vendor/stacking-order.d.ts +7 -0
- package/resizable/engine/vendor/stacking-order.js +122 -0
- package/resizable/index.d.ts +263 -0
- package/resizable/index.jsx +537 -0
- package/resizable/mount.d.ts +115 -0
- package/resizable/mount.js +540 -0
- package/scheduler/behaviour.d.ts +71 -0
- package/scheduler/behaviour.js +243 -0
- package/scheduler/context.d.ts +100 -0
- package/scheduler/context.jsx +7 -0
- package/scheduler/dates.d.ts +53 -0
- package/scheduler/dates.js +183 -0
- package/scheduler/drag.d.ts +20 -0
- package/scheduler/drag.js +361 -0
- package/scheduler/event.d.ts +26 -0
- package/scheduler/event.jsx +93 -0
- package/scheduler/index.d.ts +57 -0
- package/scheduler/index.jsx +303 -0
- package/scheduler/intl.d.ts +16 -0
- package/scheduler/intl.js +529 -0
- package/scheduler/keys-month.d.ts +7 -0
- package/scheduler/keys-month.js +110 -0
- package/scheduler/keys-time-grid.d.ts +9 -0
- package/scheduler/keys-time-grid.js +115 -0
- package/scheduler/keys.d.ts +103 -0
- package/scheduler/keys.js +527 -0
- package/scheduler/layout-index.d.ts +3 -0
- package/scheduler/layout-index.js +6 -0
- package/scheduler/layout.d.ts +285 -0
- package/scheduler/layout.js +378 -0
- package/scheduler/menus.d.ts +66 -0
- package/scheduler/menus.jsx +88 -0
- package/scheduler/month.d.ts +26 -0
- package/scheduler/month.jsx +215 -0
- package/scheduler/pointer.d.ts +64 -0
- package/scheduler/pointer.js +203 -0
- package/scheduler/select.d.ts +11 -0
- package/scheduler/select.js +64 -0
- package/scheduler/selection.d.ts +34 -0
- package/scheduler/selection.js +39 -0
- package/scheduler/state.d.ts +296 -0
- package/scheduler/state.js +496 -0
- package/scheduler/time-grid-client.d.ts +32 -0
- package/scheduler/time-grid-client.jsx +133 -0
- package/scheduler/time-grid.d.ts +26 -0
- package/scheduler/time-grid.jsx +266 -0
- package/scheduler/time.d.ts +35 -0
- package/scheduler/time.js +56 -0
- package/scheduler/toolbar.d.ts +43 -0
- package/scheduler/toolbar.jsx +38 -0
- package/scroll-area/dom.d.ts +11 -0
- package/scroll-area/dom.js +55 -0
- package/scroll-area/index.d.ts +96 -0
- package/scroll-area/index.jsx +884 -0
- package/scroll-area/presence.d.ts +12 -0
- package/scroll-area/presence.jsx +131 -0
- package/scrolling/auto-size-virtual-scroll.d.ts +53 -0
- package/scrolling/auto-size-virtual-scroll.js +213 -0
- package/scrolling/behaviour.d.ts +3 -0
- package/scrolling/behaviour.js +5 -0
- package/scrolling/emitter.d.ts +34 -0
- package/scrolling/emitter.js +144 -0
- package/scrolling/fixed-size-virtual-scroll.d.ts +28 -0
- package/scrolling/fixed-size-virtual-scroll.js +107 -0
- package/scrolling/index.d.ts +11 -0
- package/scrolling/index.jsx +13 -0
- package/scrolling/rtl.d.ts +16 -0
- package/scrolling/rtl.js +64 -0
- package/scrolling/scroll-dispatcher.d.ts +49 -0
- package/scrolling/scroll-dispatcher.js +107 -0
- package/scrolling/scrollable.d.ts +75 -0
- package/scrolling/scrollable.js +149 -0
- package/scrolling/scrolling.css +11 -0
- package/scrolling/state.d.ts +92 -0
- package/scrolling/state.js +94 -0
- package/scrolling/viewport-ruler.d.ts +47 -0
- package/scrolling/viewport-ruler.js +100 -0
- package/scrolling/viewport.d.ts +54 -0
- package/scrolling/viewport.jsx +105 -0
- package/scrolling/virtual-scroll-strategy.d.ts +41 -0
- package/scrolling/virtual-scroll-strategy.js +2 -0
- package/scrolling/virtual-scroll-viewport.d.ts +95 -0
- package/scrolling/virtual-scroll-viewport.js +370 -0
- package/search-field/behaviour.d.ts +62 -0
- package/search-field/behaviour.jsx +116 -0
- package/search-field/index.d.ts +57 -0
- package/search-field/index.jsx +158 -0
- package/search-field/intl.d.ts +2 -0
- package/search-field/intl.js +36 -0
- package/select/behaviour.d.ts +188 -0
- package/select/behaviour.jsx +445 -0
- package/select/hidden-select.d.ts +44 -0
- package/select/hidden-select.jsx +68 -0
- package/select/index.d.ts +123 -0
- package/select/index.jsx +255 -0
- package/select/intl.d.ts +2 -0
- package/select/intl.js +36 -0
- package/select/parts.d.ts +11 -0
- package/select/parts.jsx +12 -0
- package/select/select-parts.d.ts +73 -0
- package/select/select-parts.jsx +293 -0
- package/select/select-value.d.ts +58 -0
- package/select/select-value.jsx +142 -0
- package/selection/dom-utils.d.ts +25 -0
- package/selection/dom-utils.js +77 -0
- package/selection/keyed.d.ts +19 -0
- package/selection/keyed.js +66 -0
- package/selection/list-keyboard-delegate.d.ts +67 -0
- package/selection/list-keyboard-delegate.js +274 -0
- package/selection/manager.d.ts +112 -0
- package/selection/manager.js +340 -0
- package/selection/selectable-collection.d.ts +123 -0
- package/selection/selectable-collection.js +560 -0
- package/selection/selectable-item.d.ts +128 -0
- package/selection/selectable-item.js +486 -0
- package/selection/selectable-list.d.ts +42 -0
- package/selection/selectable-list.js +34 -0
- package/selection/state.d.ts +96 -0
- package/selection/state.js +131 -0
- package/selection/type-select.d.ts +37 -0
- package/selection/type-select.js +114 -0
- package/selection/utils.d.ts +23 -0
- package/selection/utils.js +38 -0
- package/selection-indicator/context.d.ts +10 -0
- package/selection-indicator/context.js +7 -0
- package/selection-indicator/index.d.ts +20 -0
- package/selection-indicator/index.jsx +25 -0
- package/separator/behaviour.d.ts +17 -0
- package/separator/behaviour.js +17 -0
- package/separator/index.d.ts +23 -0
- package/separator/index.jsx +64 -0
- package/shared-element-transition/index.d.ts +36 -0
- package/shared-element-transition/index.jsx +182 -0
- package/shared-element-transition/transition.d.ts +19 -0
- package/shared-element-transition/transition.jsx +20 -0
- package/sheet-motion/index.d.ts +82 -0
- package/sheet-motion/index.js +386 -0
- package/sidebar/index.d.ts +257 -0
- package/sidebar/index.jsx +625 -0
- package/sidebar/pages.d.ts +71 -0
- package/sidebar/pages.jsx +177 -0
- package/sidebar/resize.d.ts +69 -0
- package/sidebar/resize.js +237 -0
- package/sidebar/sheet-motion.d.ts +15 -0
- package/sidebar/sheet-motion.js +170 -0
- package/sidebar/state.d.ts +126 -0
- package/sidebar/state.js +204 -0
- package/slider/behaviour.d.ts +141 -0
- package/slider/behaviour.jsx +492 -0
- package/slider/index.d.ts +171 -0
- package/slider/index.jsx +392 -0
- package/slider/state.d.ts +203 -0
- package/slider/state.js +377 -0
- package/slots/index.d.ts +248 -0
- package/slots/index.jsx +473 -0
- package/spinbutton/behaviour.d.ts +66 -0
- package/spinbutton/behaviour.jsx +312 -0
- package/spinbutton/intl.d.ts +2 -0
- package/spinbutton/intl.js +36 -0
- package/state/autocomplete.d.ts +26 -0
- package/state/autocomplete.js +32 -0
- package/state/calendar.d.ts +284 -0
- package/state/calendar.js +755 -0
- package/state/checkbox-group.d.ts +67 -0
- package/state/checkbox-group.js +76 -0
- package/state/combobox.d.ts +238 -0
- package/state/combobox.js +708 -0
- package/state/date-field.d.ts +407 -0
- package/state/date-field.js +1117 -0
- package/state/date-intl.d.ts +3 -0
- package/state/date-intl.js +36 -0
- package/state/date-picker.d.ts +144 -0
- package/state/date-picker.js +387 -0
- package/state/disclosure.d.ts +90 -0
- package/state/disclosure.js +148 -0
- package/state/form-validation.d.ts +89 -0
- package/state/form-validation.js +158 -0
- package/state/grid.d.ts +62 -0
- package/state/grid.js +127 -0
- package/state/list.d.ts +58 -0
- package/state/list.js +124 -0
- package/state/menu.d.ts +162 -0
- package/state/menu.js +185 -0
- package/state/overlays.d.ts +35 -0
- package/state/overlays.js +29 -0
- package/state/radio-group.d.ts +58 -0
- package/state/radio-group.js +68 -0
- package/state/search-field.d.ts +20 -0
- package/state/search-field.js +21 -0
- package/state/select.d.ts +150 -0
- package/state/select.js +187 -0
- package/state/selection.d.ts +3 -0
- package/state/selection.js +5 -0
- package/state/table-column-resize.d.ts +58 -0
- package/state/table-column-resize.js +76 -0
- package/state/table.d.ts +81 -0
- package/state/table.js +114 -0
- package/state/tabs.d.ts +85 -0
- package/state/tabs.js +161 -0
- package/state/time-field.d.ts +32 -0
- package/state/time-field.js +34 -0
- package/state/toast.d.ts +80 -0
- package/state/toast.js +146 -0
- package/state/toggle-group.d.ts +70 -0
- package/state/toggle-group.js +110 -0
- package/state/toggle.d.ts +40 -0
- package/state/toggle.js +39 -0
- package/state/tooltip.d.ts +53 -0
- package/state/tooltip.js +153 -0
- package/stepper/index.d.ts +117 -0
- package/stepper/index.jsx +405 -0
- package/stepper/state.d.ts +200 -0
- package/stepper/state.js +325 -0
- package/switch/behaviour.d.ts +12 -0
- package/switch/behaviour.jsx +9 -0
- package/switch/index.d.ts +150 -0
- package/switch/index.jsx +186 -0
- package/table/behaviour.d.ts +181 -0
- package/table/behaviour.js +334 -0
- package/table/collection.d.ts +49 -0
- package/table/collection.js +259 -0
- package/table/column-resize.d.ts +48 -0
- package/table/column-resize.jsx +247 -0
- package/table/index.d.ts +339 -0
- package/table/index.jsx +1326 -0
- package/table/intl.d.ts +2 -0
- package/table/intl.js +36 -0
- package/table/keyboard-delegate.d.ts +21 -0
- package/table/keyboard-delegate.js +166 -0
- package/table/rac-intl.d.ts +2 -0
- package/table/rac-intl.js +36 -0
- package/tabs/behaviour.d.ts +49 -0
- package/tabs/behaviour.js +173 -0
- package/tabs/index.d.ts +248 -0
- package/tabs/index.jsx +577 -0
- package/tabs/keyboard-delegate.d.ts +17 -0
- package/tabs/keyboard-delegate.js +64 -0
- package/tag-group/behaviour.d.ts +59 -0
- package/tag-group/behaviour.js +112 -0
- package/tag-group/index.d.ts +138 -0
- package/tag-group/index.jsx +565 -0
- package/tag-group/intl.d.ts +2 -0
- package/tag-group/intl.js +36 -0
- package/tailwind.css +12 -0
- package/tests-components/app/src/routes/index.d.ts +4 -0
- package/tests-components/app/src/routes/index.jsx +7 -0
- package/text/index.d.ts +15 -0
- package/text/index.jsx +61 -0
- package/text-area/index.d.ts +19 -0
- package/text-area/index.jsx +76 -0
- package/text-field/autosize.d.ts +70 -0
- package/text-field/autosize.js +355 -0
- package/text-field/behaviour.d.ts +140 -0
- package/text-field/behaviour.jsx +260 -0
- package/text-field/fields.d.ts +12 -0
- package/text-field/fields.js +20 -0
- package/text-field/index.d.ts +50 -0
- package/text-field/index.jsx +174 -0
- package/text-field/text-field.css +45 -0
- package/theme.css +1006 -0
- package/time-wheels/behaviour.d.ts +29 -0
- package/time-wheels/behaviour.js +156 -0
- package/time-wheels/index.d.ts +27 -0
- package/time-wheels/index.jsx +91 -0
- package/toast/behaviour.d.ts +51 -0
- package/toast/behaviour.jsx +273 -0
- package/toast/index.d.ts +94 -0
- package/toast/index.jsx +256 -0
- package/toast/intl.d.ts +2 -0
- package/toast/intl.js +36 -0
- package/toggle-button/behaviour.d.ts +15 -0
- package/toggle-button/behaviour.js +37 -0
- package/toggle-button/index.d.ts +59 -0
- package/toggle-button/index.jsx +206 -0
- package/toggle-button-group/behaviour.d.ts +19 -0
- package/toggle-button-group/behaviour.jsx +13 -0
- package/toggle-button-group/context.d.ts +7 -0
- package/toggle-button-group/context.js +9 -0
- package/toggle-button-group/index.d.ts +39 -0
- package/toggle-button-group/index.jsx +85 -0
- package/toggle-button-group/item.d.ts +30 -0
- package/toggle-button-group/item.jsx +37 -0
- package/toolbar/behaviour.d.ts +22 -0
- package/toolbar/behaviour.js +89 -0
- package/toolbar/index.d.ts +16 -0
- package/toolbar/index.jsx +67 -0
- package/tooltip/behaviour.d.ts +93 -0
- package/tooltip/behaviour.jsx +299 -0
- package/tooltip/index.d.ts +59 -0
- package/tooltip/index.jsx +193 -0
- package/tree/behaviour.d.ts +51 -0
- package/tree/behaviour.jsx +51 -0
- package/tree/cdk-index.d.ts +2 -0
- package/tree/cdk-index.js +6 -0
- package/tree/collection.d.ts +16 -0
- package/tree/collection.js +138 -0
- package/tree/control.d.ts +125 -0
- package/tree/control.js +166 -0
- package/tree/index.d.ts +154 -0
- package/tree/index.jsx +837 -0
- package/tree/intl.d.ts +2 -0
- package/tree/intl.js +36 -0
- package/tree/navigation-context.d.ts +44 -0
- package/tree/navigation-context.jsx +63 -0
- package/tree/tree-key-manager.d.ts +149 -0
- package/tree/tree-key-manager.js +336 -0
- package/utils/animation.d.ts +32 -0
- package/utils/animation.jsx +236 -0
- package/utils/data-attrs.d.ts +73 -0
- package/utils/data-attrs.jsx +217 -0
- package/utils/dev-off.d.ts +3 -0
- package/utils/dev-off.js +7 -0
- package/utils/dev-on.d.ts +3 -0
- package/utils/dev-on.js +17 -0
- package/utils/dom-props.d.ts +44 -0
- package/utils/dom-props.js +73 -0
- package/utils/dom.d.ts +85 -0
- package/utils/dom.js +402 -0
- package/utils/id.d.ts +23 -0
- package/utils/id.js +100 -0
- package/utils/index.d.ts +43 -0
- package/utils/index.js +160 -0
- package/utils/link-state.d.ts +6 -0
- package/utils/link-state.js +6 -0
- package/utils/links.d.ts +82 -0
- package/utils/links.jsx +150 -0
- package/utils/live-element.d.ts +8 -0
- package/utils/live-element.jsx +76 -0
- package/utils/live.d.ts +53 -0
- package/utils/live.jsx +169 -0
- package/utils/load-more-sentinel.d.ts +28 -0
- package/utils/load-more-sentinel.jsx +52 -0
- package/utils/motion-token.d.ts +4 -0
- package/utils/motion-token.js +48 -0
- package/utils/render.d.ts +19 -0
- package/utils/render.js +18 -0
- package/utils/transitions.d.ts +15 -0
- package/utils/transitions.js +104 -0
- package/utils/types.d.ts +111 -0
- package/utils/types.js +1 -0
- package/virtualizer/behaviour.d.ts +129 -0
- package/virtualizer/behaviour.js +437 -0
- package/virtualizer/collection-renderer.d.ts +62 -0
- package/virtualizer/collection-renderer.jsx +190 -0
- package/virtualizer/collection.d.ts +103 -0
- package/virtualizer/collection.js +155 -0
- package/virtualizer/dom.d.ts +50 -0
- package/virtualizer/dom.js +233 -0
- package/virtualizer/engine.d.ts +21 -0
- package/virtualizer/engine.js +21 -0
- package/virtualizer/grid-layout.d.ts +50 -0
- package/virtualizer/grid-layout.js +247 -0
- package/virtualizer/index.d.ts +3 -0
- package/virtualizer/index.jsx +5 -0
- package/virtualizer/layout-info.d.ts +33 -0
- package/virtualizer/layout-info.js +54 -0
- package/virtualizer/layout.d.ts +44 -0
- package/virtualizer/layout.js +30 -0
- package/virtualizer/list-layout.d.ts +103 -0
- package/virtualizer/list-layout.js +510 -0
- package/virtualizer/overscan-manager.d.ts +9 -0
- package/virtualizer/overscan-manager.js +32 -0
- package/virtualizer/point.d.ts +13 -0
- package/virtualizer/point.js +23 -0
- package/virtualizer/rect.d.ts +49 -0
- package/virtualizer/rect.js +105 -0
- package/virtualizer/reusable-view.d.ts +29 -0
- package/virtualizer/reusable-view.js +56 -0
- package/virtualizer/scroll-anchor.d.ts +62 -0
- package/virtualizer/scroll-anchor.js +130 -0
- package/virtualizer/size.d.ts +11 -0
- package/virtualizer/size.js +21 -0
- package/virtualizer/state.d.ts +35 -0
- package/virtualizer/state.js +89 -0
- package/virtualizer/table-collection.d.ts +45 -0
- package/virtualizer/table-collection.js +80 -0
- package/virtualizer/table-column-layout.d.ts +44 -0
- package/virtualizer/table-column-layout.js +210 -0
- package/virtualizer/table-layout.d.ts +55 -0
- package/virtualizer/table-layout.js +482 -0
- package/virtualizer/types.d.ts +63 -0
- package/virtualizer/types.js +1 -0
- package/virtualizer/utils.d.ts +2 -0
- package/virtualizer/utils.js +12 -0
- package/virtualizer/virtualizer-core.d.ts +61 -0
- package/virtualizer/virtualizer-core.js +304 -0
- package/virtualizer/virtualizer.d.ts +64 -0
- package/virtualizer/virtualizer.jsx +91 -0
- package/virtualizer/waterfall-layout.d.ts +41 -0
- package/virtualizer/waterfall-layout.js +227 -0
- package/wheel-picker/behaviour.d.ts +94 -0
- package/wheel-picker/behaviour.js +482 -0
- package/wheel-picker/index.d.ts +33 -0
- package/wheel-picker/index.jsx +66 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { type Signal } from "@rivetjs/reactivity";
|
|
2
|
+
import { type FormValidationOptions, type FormValidationState, type MaybeAccessor } from "@rivetjs/cdk/state/form-validation";
|
|
3
|
+
export interface NumberFieldProps extends FormValidationOptions<number> {
|
|
4
|
+
/**
|
|
5
|
+
* The current value (controlled): a two-way signal, a plain number, or an accessor (read live, never written; a
|
|
6
|
+
* live prop `value={n()}` arrives as one). `null` is treated as NaN (empty).
|
|
7
|
+
*/
|
|
8
|
+
value?: Signal<number | null> | (() => number | null) | number | null;
|
|
9
|
+
/** The default value (uncontrolled). Read once at mount. */
|
|
10
|
+
defaultValue?: number;
|
|
11
|
+
/** Handler that is called when the value changes (resumed pages: an inline arrow or a local function). */
|
|
12
|
+
onChange?: (value: number) => void;
|
|
13
|
+
/** The smallest value allowed for the input. */
|
|
14
|
+
minValue?: MaybeAccessor<number | undefined>;
|
|
15
|
+
/** The largest value allowed for the input. */
|
|
16
|
+
maxValue?: MaybeAccessor<number | undefined>;
|
|
17
|
+
/** The amount that the input value changes with each increment or decrement "tick". */
|
|
18
|
+
step?: MaybeAccessor<number | undefined>;
|
|
19
|
+
/** Whether the input is disabled. */
|
|
20
|
+
isDisabled?: MaybeAccessor<boolean | undefined>;
|
|
21
|
+
/** Whether the input can be selected but not changed by the user. */
|
|
22
|
+
isReadOnly?: MaybeAccessor<boolean | undefined>;
|
|
23
|
+
/**
|
|
24
|
+
* Formatting options for the value displayed in the number field.
|
|
25
|
+
* This also affects what characters are allowed to be typed by the user.
|
|
26
|
+
*/
|
|
27
|
+
formatOptions?: MaybeAccessor<Intl.NumberFormatOptions | undefined>;
|
|
28
|
+
/**
|
|
29
|
+
* Controls the behavior of the number field when the user blurs the field after editing. 'snap'
|
|
30
|
+
* will clamp the value to the min/max values, and snap to the nearest step value. 'validate' will
|
|
31
|
+
* not clamp the value, and will validate that the value is within the min/max range and on a
|
|
32
|
+
* valid step.
|
|
33
|
+
*
|
|
34
|
+
* @default 'snap'
|
|
35
|
+
*/
|
|
36
|
+
commitBehavior?: "snap" | "validate";
|
|
37
|
+
}
|
|
38
|
+
export interface NumberFieldStateOptions extends NumberFieldProps {
|
|
39
|
+
/**
|
|
40
|
+
* The locale that should be used for parsing.
|
|
41
|
+
*
|
|
42
|
+
* @default 'en-US'
|
|
43
|
+
*/
|
|
44
|
+
locale: MaybeAccessor<string>;
|
|
45
|
+
}
|
|
46
|
+
/** Previous number value / locale / format options the input text was formatted for (upstream prev* state). */
|
|
47
|
+
export interface NumberFieldSync {
|
|
48
|
+
value: number;
|
|
49
|
+
locale: string;
|
|
50
|
+
formatOptions: Intl.NumberFormatOptions | undefined;
|
|
51
|
+
}
|
|
52
|
+
export interface NumberFieldState {
|
|
53
|
+
readonly locale: MaybeAccessor<string>;
|
|
54
|
+
readonly formatOptions: MaybeAccessor<Intl.NumberFormatOptions | undefined> | undefined;
|
|
55
|
+
readonly minValue: MaybeAccessor<number | undefined> | undefined;
|
|
56
|
+
readonly maxValue: MaybeAccessor<number | undefined> | undefined;
|
|
57
|
+
readonly step: MaybeAccessor<number | undefined> | undefined;
|
|
58
|
+
readonly isDisabled: MaybeAccessor<boolean | undefined> | undefined;
|
|
59
|
+
readonly isReadOnly: MaybeAccessor<boolean | undefined> | undefined;
|
|
60
|
+
readonly commitBehavior: "snap" | "validate";
|
|
61
|
+
/** Whether `value` is controlled (upstream `value !== undefined`). */
|
|
62
|
+
readonly controlled: boolean;
|
|
63
|
+
/** A plain or accessor controlled value: `value` is never written (changes only fire `onChange`). */
|
|
64
|
+
readonly fixed: boolean;
|
|
65
|
+
/** The committed value (controlled signal / accessor, or the internal one); null = NaN. Never `.set` a fixed one. */
|
|
66
|
+
readonly value: Signal<number | null>;
|
|
67
|
+
/** The input text as last written (read it through `inputValue(state)`). */
|
|
68
|
+
readonly input: Signal<string>;
|
|
69
|
+
/** What `input` was last formatted for. */
|
|
70
|
+
readonly prev: Signal<NumberFieldSync>;
|
|
71
|
+
/** The default value of the input. */
|
|
72
|
+
readonly defaultNumberValue: number;
|
|
73
|
+
readonly onChange: ((value: number) => void) | undefined;
|
|
74
|
+
readonly validation: FormValidationState;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Provides state management for a number field component. Number fields allow users to enter a
|
|
78
|
+
* number, and increment or decrement the value using stepper buttons.
|
|
79
|
+
*/
|
|
80
|
+
export declare function createNumberFieldState(props: NumberFieldStateOptions): NumberFieldState;
|
|
81
|
+
/** The committed number value (upstream `numberValue` before it is shadowed by the parsed input). */
|
|
82
|
+
export declare function committedValue(state: NumberFieldState): number;
|
|
83
|
+
/**
|
|
84
|
+
* The current text value of the input. Updated as the user types,
|
|
85
|
+
* and formatted according to `formatOptions` on blur.
|
|
86
|
+
*/
|
|
87
|
+
export declare function inputValue(state: NumberFieldState): string;
|
|
88
|
+
/**
|
|
89
|
+
* Rivet (no upstream member): the committed value formatted for display — the input text once it is in sync; while the
|
|
90
|
+
* user types, the last committed value (`@rivetjs/ui` NumberStepper's animated display rolls in on commit).
|
|
91
|
+
*/
|
|
92
|
+
export declare function formattedValue(state: NumberFieldState): string;
|
|
93
|
+
/**
|
|
94
|
+
* The currently parsed number value, or NaN if a valid number could not be parsed.
|
|
95
|
+
* Updated based on the `inputValue` as the user types.
|
|
96
|
+
*/
|
|
97
|
+
export declare function numberValue(state: NumberFieldState): number;
|
|
98
|
+
/** The minimum value of the number field. */
|
|
99
|
+
export declare const minValue: (state: NumberFieldState) => number | undefined;
|
|
100
|
+
/** The maximum value of the number field. */
|
|
101
|
+
export declare const maxValue: (state: NumberFieldState) => number | undefined;
|
|
102
|
+
/** Whether the current value can be incremented according to the maximum value and step. */
|
|
103
|
+
export declare function canIncrement(state: NumberFieldState): boolean;
|
|
104
|
+
/** Whether the current value can be decremented according to the minimum value and step. */
|
|
105
|
+
export declare function canDecrement(state: NumberFieldState): boolean;
|
|
106
|
+
/**
|
|
107
|
+
* Validates a user input string according to the current locale and format options. Values can be
|
|
108
|
+
* partially entered, and may be valid even if they cannot currently be parsed to a number. Can be
|
|
109
|
+
* used to implement validation as a user types.
|
|
110
|
+
*/
|
|
111
|
+
export declare function validate(state: NumberFieldState, value: string): boolean;
|
|
112
|
+
/** Sets the current text value of the input. */
|
|
113
|
+
export declare function setInputValue(state: NumberFieldState, value: string): void;
|
|
114
|
+
/** Sets the number value. */
|
|
115
|
+
export declare function setNumberValue(state: NumberFieldState, value: number): void;
|
|
116
|
+
/**
|
|
117
|
+
* Commits the current input value. The value is parsed to a number, clamped according to the
|
|
118
|
+
* minimum and maximum values of the field, and snapped to the nearest step value. This will fire
|
|
119
|
+
* the `onChange` prop with the new value, and if uncontrolled, update the `numberValue`.
|
|
120
|
+
* Typically this is called when the field is blurred.
|
|
121
|
+
*
|
|
122
|
+
* @param overrideValue - The value to commit. If not provided, the current input value is used.
|
|
123
|
+
*/
|
|
124
|
+
export declare function commit(state: NumberFieldState, overrideValue?: string): void;
|
|
125
|
+
/** Increments the current input value to the next step boundary, and fires `onChange`. */
|
|
126
|
+
export declare function increment(state: NumberFieldState): void;
|
|
127
|
+
/** Decrements the current input value to the next step boundary, and fires `onChange`. */
|
|
128
|
+
export declare function decrement(state: NumberFieldState): void;
|
|
129
|
+
/** Sets the current value to the `maxValue` if any, and fires `onChange`. */
|
|
130
|
+
export declare function incrementToMax(state: NumberFieldState): void;
|
|
131
|
+
/** Sets the current value to the `minValue` if any, and fires `onChange`. */
|
|
132
|
+
export declare function decrementToMin(state: NumberFieldState): void;
|
|
@@ -0,0 +1,364 @@
|
|
|
1
|
+
// Ported from react-stately `useNumberFieldState` (packages/react-stately/src/numberfield/useNumberFieldState.ts), Apache-2.0, © Adobe.
|
|
2
|
+
// Rivet:
|
|
3
|
+
// - Serializable state (cdk `state/*` convention): `createNumberFieldState(options)` returns plain signals + JSON
|
|
4
|
+
// (region state, resumable); the upstream state members are free functions taking the state (`inputValue(state)`,
|
|
5
|
+
// `numberValue(state)`, `commit(state)`, `increment(state)`, `canIncrement(state)`, …).
|
|
6
|
+
// - Controlled `value`: a two-way `Signal<number | null>`, a plain number (plain = fixed: changes only fire
|
|
7
|
+
// `onChange`, like an upstream controlled prop the parent does not update) or an accessor `() => number | null`
|
|
8
|
+
// (a live prop: read on every use, never written — upstream's controlled prop that the parent re-renders);
|
|
9
|
+
// `null` = NaN, as upstream.
|
|
10
|
+
// - Props that change between React renders (`locale`, `formatOptions`, `minValue`, `maxValue`, `step`,
|
|
11
|
+
// `isDisabled`, `isReadOnly`) accept a value or an accessor (`MaybeAccessor`; resumed pages: inline arrows).
|
|
12
|
+
// - Upstream's "set state during render" sync (reformat the input when the number value, locale or format options
|
|
13
|
+
// change) is pure on read (an out-of-sync input reads as the formatted number value) and written by every
|
|
14
|
+
// mutation first (`syncInputValue`); the previous value/locale/formatOptions live in a JSON signal.
|
|
15
|
+
// - Validation = `createFormValidationState` (`state.validation`; use the `state/form-validation` free functions).
|
|
16
|
+
// Its value is upstream's `numberValue`: the uncontrolled signal, or for a controlled value + `validate` an accessor
|
|
17
|
+
// (null -> NaN, snapped) — a closure, so this module is `.tsx` (resume-compiled; `validationValue` is an R2 symbol).
|
|
18
|
+
/*
|
|
19
|
+
* Copyright 2020 Adobe. All rights reserved.
|
|
20
|
+
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
21
|
+
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
22
|
+
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
23
|
+
*
|
|
24
|
+
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
25
|
+
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
26
|
+
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
27
|
+
* governing permissions and limitations under the License.
|
|
28
|
+
*/
|
|
29
|
+
import { _regionState, signal, untrack } from "@rivetjs/reactivity";
|
|
30
|
+
import { clamp, snapValueToStep } from "@rivetjs/cdk/utils";
|
|
31
|
+
import { commitValidation, createFormValidationState, read, } from "@rivetjs/cdk/state/form-validation";
|
|
32
|
+
import { NumberFormatter } from "./NumberFormatter.js";
|
|
33
|
+
import { NumberParser } from "./NumberParser.js";
|
|
34
|
+
const isSignal = (value) => typeof value === "function" && typeof value.set === "function";
|
|
35
|
+
function snapValue(state, value) {
|
|
36
|
+
const step = read(state.step);
|
|
37
|
+
const minValue = read(state.minValue);
|
|
38
|
+
const maxValue = read(state.maxValue);
|
|
39
|
+
return step === undefined || isNaN(step) ? clamp(value, minValue, maxValue) : snapValueToStep(value, minValue, maxValue, step);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Provides state management for a number field component. Number fields allow users to enter a
|
|
43
|
+
* number, and increment or decrement the value using stepper buttons.
|
|
44
|
+
*/
|
|
45
|
+
export function createNumberFieldState(props) {
|
|
46
|
+
return _regionState(() => untrack(() => {
|
|
47
|
+
const commitBehavior = props.commitBehavior ?? "snap";
|
|
48
|
+
const controlled = props.value !== undefined;
|
|
49
|
+
const fixed = controlled && !isSignal(props.value);
|
|
50
|
+
const partial = {
|
|
51
|
+
locale: props.locale,
|
|
52
|
+
formatOptions: props.formatOptions,
|
|
53
|
+
minValue: props.minValue,
|
|
54
|
+
maxValue: props.maxValue,
|
|
55
|
+
step: props.step,
|
|
56
|
+
isDisabled: props.isDisabled,
|
|
57
|
+
isReadOnly: props.isReadOnly,
|
|
58
|
+
commitBehavior,
|
|
59
|
+
};
|
|
60
|
+
let defaultValue = props.defaultValue ?? NaN;
|
|
61
|
+
if (!isNaN(defaultValue) && commitBehavior === "snap") {
|
|
62
|
+
defaultValue = snapValue(partial, defaultValue);
|
|
63
|
+
}
|
|
64
|
+
// useControlledState(value, defaultValue, onChange); an accessor (live prop) is kept as is: read, never written.
|
|
65
|
+
const value = isSignal(props.value) || typeof props.value === "function"
|
|
66
|
+
? props.value
|
|
67
|
+
: signal(controlled ? props.value : isNaN(defaultValue) ? NaN : defaultValue);
|
|
68
|
+
const state = {
|
|
69
|
+
...partial,
|
|
70
|
+
controlled,
|
|
71
|
+
fixed,
|
|
72
|
+
value,
|
|
73
|
+
input: signal(""),
|
|
74
|
+
prev: signal({ value: NaN, locale: "", formatOptions: undefined }),
|
|
75
|
+
defaultNumberValue: NaN,
|
|
76
|
+
onChange: props.onChange,
|
|
77
|
+
validation: null,
|
|
78
|
+
};
|
|
79
|
+
// Upstream validates `numberValue` (null -> NaN, a controlled value snapped). The uncontrolled signal already
|
|
80
|
+
// holds exactly that; a controlled one needs the derived accessor (a resumable closure: this module is .tsx).
|
|
81
|
+
state.validation = createFormValidationState({
|
|
82
|
+
...props,
|
|
83
|
+
value: controlled && props.validate ? validationValue(state) : value,
|
|
84
|
+
});
|
|
85
|
+
const initialValue = committedValue(state);
|
|
86
|
+
const locale = read(state.locale);
|
|
87
|
+
const formatOptions = read(state.formatOptions);
|
|
88
|
+
state.input.set(isNaN(initialValue) ? "" : new NumberFormatter(locale, formatOptions).format(initialValue));
|
|
89
|
+
state.prev.set({ value: initialValue, locale, formatOptions });
|
|
90
|
+
state.defaultNumberValue = isNaN(defaultValue) ? initialValue : defaultValue;
|
|
91
|
+
return state;
|
|
92
|
+
}));
|
|
93
|
+
}
|
|
94
|
+
/** The value custom `validate` receives (upstream `numberValue`): a resumable accessor (R2 return value). */
|
|
95
|
+
function validationValue(state) {
|
|
96
|
+
return () => committedValue(state);
|
|
97
|
+
}
|
|
98
|
+
// Accessors ------------------------------------------------------------------------------------
|
|
99
|
+
/** The committed number value (upstream `numberValue` before it is shadowed by the parsed input). */
|
|
100
|
+
export function committedValue(state) {
|
|
101
|
+
let value = state.value();
|
|
102
|
+
if (value === null)
|
|
103
|
+
value = NaN;
|
|
104
|
+
if (state.controlled && !isNaN(value) && state.commitBehavior === "snap")
|
|
105
|
+
value = snapValue(state, value);
|
|
106
|
+
return value;
|
|
107
|
+
}
|
|
108
|
+
const numberParser = (state) => new NumberParser(read(state.locale), read(state.formatOptions));
|
|
109
|
+
function formatter(state) {
|
|
110
|
+
const numberingSystem = numberParser(state).getNumberingSystem(state.input());
|
|
111
|
+
return new NumberFormatter(read(state.locale), { ...read(state.formatOptions), numberingSystem });
|
|
112
|
+
}
|
|
113
|
+
const format = (state, value) => (isNaN(value) || value === null ? "" : formatter(state).format(value));
|
|
114
|
+
function outOfSync(state, numberValue, locale, formatOptions) {
|
|
115
|
+
const p = untrack(state.prev);
|
|
116
|
+
return !Object.is(numberValue, p.value) || locale !== p.locale || !isEqualFormatOptions(formatOptions, p.formatOptions);
|
|
117
|
+
}
|
|
118
|
+
/** Upstream render-time sync: reformat the input when the number value, locale or format options changed. */
|
|
119
|
+
function syncInputValue(state) {
|
|
120
|
+
const numberValue = committedValue(state);
|
|
121
|
+
const locale = read(state.locale);
|
|
122
|
+
const formatOptions = read(state.formatOptions);
|
|
123
|
+
if (outOfSync(state, numberValue, locale, formatOptions)) {
|
|
124
|
+
state.input.set(format(state, numberValue));
|
|
125
|
+
state.prev.set({ value: numberValue, locale, formatOptions });
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The current text value of the input. Updated as the user types,
|
|
130
|
+
* and formatted according to `formatOptions` on blur.
|
|
131
|
+
*/
|
|
132
|
+
export function inputValue(state) {
|
|
133
|
+
const numberValue = committedValue(state);
|
|
134
|
+
return outOfSync(state, numberValue, read(state.locale), read(state.formatOptions)) ? format(state, numberValue) : state.input();
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Rivet (no upstream member): the committed value formatted for display — the input text once it is in sync; while the
|
|
138
|
+
* user types, the last committed value (`@rivetjs/ui` NumberStepper's animated display rolls in on commit).
|
|
139
|
+
*/
|
|
140
|
+
export function formattedValue(state) {
|
|
141
|
+
return format(state, committedValue(state));
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* The currently parsed number value, or NaN if a valid number could not be parsed.
|
|
145
|
+
* Updated based on the `inputValue` as the user types.
|
|
146
|
+
*/
|
|
147
|
+
export function numberValue(state) {
|
|
148
|
+
return numberParser(state).parse(inputValue(state));
|
|
149
|
+
}
|
|
150
|
+
/** The minimum value of the number field. */
|
|
151
|
+
export const minValue = (state) => read(state.minValue);
|
|
152
|
+
/** The maximum value of the number field. */
|
|
153
|
+
export const maxValue = (state) => read(state.maxValue);
|
|
154
|
+
function clampStep(state) {
|
|
155
|
+
const step = read(state.step);
|
|
156
|
+
let clampStep = step !== undefined && !isNaN(step) ? step : 1;
|
|
157
|
+
if (formatter(state).resolvedOptions().style === "percent" && (step === undefined || isNaN(step))) {
|
|
158
|
+
clampStep = 0.01;
|
|
159
|
+
}
|
|
160
|
+
return clampStep;
|
|
161
|
+
}
|
|
162
|
+
/** Whether the current value can be incremented according to the maximum value and step. */
|
|
163
|
+
export function canIncrement(state) {
|
|
164
|
+
const parsedValue = numberValue(state);
|
|
165
|
+
const min = minValue(state), max = maxValue(state), step = clampStep(state);
|
|
166
|
+
return (!read(state.isDisabled) &&
|
|
167
|
+
!read(state.isReadOnly) &&
|
|
168
|
+
(isNaN(parsedValue) ||
|
|
169
|
+
max === undefined ||
|
|
170
|
+
isNaN(max) ||
|
|
171
|
+
snapValueToStep(parsedValue, min, max, step) > parsedValue ||
|
|
172
|
+
handleDecimalOperation("+", parsedValue, step) <= max));
|
|
173
|
+
}
|
|
174
|
+
/** Whether the current value can be decremented according to the minimum value and step. */
|
|
175
|
+
export function canDecrement(state) {
|
|
176
|
+
const parsedValue = numberValue(state);
|
|
177
|
+
const min = minValue(state), max = maxValue(state), step = clampStep(state);
|
|
178
|
+
return (!read(state.isDisabled) &&
|
|
179
|
+
!read(state.isReadOnly) &&
|
|
180
|
+
(isNaN(parsedValue) ||
|
|
181
|
+
min === undefined ||
|
|
182
|
+
isNaN(min) ||
|
|
183
|
+
snapValueToStep(parsedValue, min, max, step) < parsedValue ||
|
|
184
|
+
handleDecimalOperation("-", parsedValue, step) >= min));
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Validates a user input string according to the current locale and format options. Values can be
|
|
188
|
+
* partially entered, and may be valid even if they cannot currently be parsed to a number. Can be
|
|
189
|
+
* used to implement validation as a user types.
|
|
190
|
+
*/
|
|
191
|
+
export function validate(state, value) {
|
|
192
|
+
return untrack(() => numberParser(state).isValidPartialNumber(value, minValue(state), maxValue(state)));
|
|
193
|
+
}
|
|
194
|
+
// Mutations ------------------------------------------------------------------------------------
|
|
195
|
+
function writeNumberValue(state, value) {
|
|
196
|
+
const current = committedValue(state);
|
|
197
|
+
if (!state.fixed && !Object.is(state.value(), value))
|
|
198
|
+
state.value.set(value);
|
|
199
|
+
if (!Object.is(current, value))
|
|
200
|
+
state.onChange?.(value);
|
|
201
|
+
}
|
|
202
|
+
/** Sets the current text value of the input. */
|
|
203
|
+
export function setInputValue(state, value) {
|
|
204
|
+
untrack(() => {
|
|
205
|
+
syncInputValue(state);
|
|
206
|
+
state.input.set(value);
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/** Sets the number value. */
|
|
210
|
+
export function setNumberValue(state, value) {
|
|
211
|
+
untrack(() => {
|
|
212
|
+
syncInputValue(state);
|
|
213
|
+
writeNumberValue(state, value);
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Commits the current input value. The value is parsed to a number, clamped according to the
|
|
218
|
+
* minimum and maximum values of the field, and snapped to the nearest step value. This will fire
|
|
219
|
+
* the `onChange` prop with the new value, and if uncontrolled, update the `numberValue`.
|
|
220
|
+
* Typically this is called when the field is blurred.
|
|
221
|
+
*
|
|
222
|
+
* @param overrideValue - The value to commit. If not provided, the current input value is used.
|
|
223
|
+
*/
|
|
224
|
+
export function commit(state, overrideValue) {
|
|
225
|
+
untrack(() => {
|
|
226
|
+
syncInputValue(state);
|
|
227
|
+
const numberValue_ = committedValue(state);
|
|
228
|
+
const newInputValue = overrideValue === undefined ? state.input() : overrideValue;
|
|
229
|
+
let newParsedValue = numberValue(state);
|
|
230
|
+
if (overrideValue !== undefined) {
|
|
231
|
+
newParsedValue = numberParser(state).parse(newInputValue);
|
|
232
|
+
}
|
|
233
|
+
// Set to empty state if input value is empty
|
|
234
|
+
if (!newInputValue.length) {
|
|
235
|
+
writeNumberValue(state, NaN);
|
|
236
|
+
state.input.set(!state.controlled ? "" : format(state, numberValue_));
|
|
237
|
+
return;
|
|
238
|
+
}
|
|
239
|
+
// if it failed to parse, then reset input to formatted version of current number
|
|
240
|
+
if (isNaN(newParsedValue)) {
|
|
241
|
+
state.input.set(format(state, numberValue_));
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
// Clamp to min and max, round to the nearest step, and round to specified number of digits
|
|
245
|
+
let clampedValue = state.commitBehavior === "snap" ? snapValue(state, newParsedValue) : newParsedValue;
|
|
246
|
+
clampedValue = numberParser(state).parse(format(state, clampedValue));
|
|
247
|
+
const shouldValidate = clampedValue !== numberValue_;
|
|
248
|
+
writeNumberValue(state, clampedValue);
|
|
249
|
+
// in a controlled state, the numberValue won't change, so we won't go back to our old input without help
|
|
250
|
+
state.input.set(format(state, !state.controlled ? clampedValue : numberValue_));
|
|
251
|
+
if (shouldValidate) {
|
|
252
|
+
commitValidation(state.validation);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
function safeNextStep(state, operation, minMax = 0) {
|
|
257
|
+
const prev = numberValue(state);
|
|
258
|
+
const step = clampStep(state);
|
|
259
|
+
const min = minValue(state), max = maxValue(state);
|
|
260
|
+
if (isNaN(prev)) {
|
|
261
|
+
// if the input is empty, start from the min/max value when incrementing/decrementing,
|
|
262
|
+
// or zero if there is no min/max value defined.
|
|
263
|
+
const newValue = isNaN(minMax) ? 0 : minMax;
|
|
264
|
+
return snapValueToStep(newValue, min, max, step);
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
// otherwise, first snap the current value to the nearest step. if it moves in the direction
|
|
268
|
+
// we're going, use that value, otherwise add the step and snap that value.
|
|
269
|
+
const newValue = snapValueToStep(prev, min, max, step);
|
|
270
|
+
if ((operation === "+" && newValue > prev) || (operation === "-" && newValue < prev)) {
|
|
271
|
+
return newValue;
|
|
272
|
+
}
|
|
273
|
+
return snapValueToStep(handleDecimalOperation(operation, prev, step), min, max, step);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
/** Increments the current input value to the next step boundary, and fires `onChange`. */
|
|
277
|
+
export function increment(state) {
|
|
278
|
+
untrack(() => {
|
|
279
|
+
syncInputValue(state);
|
|
280
|
+
const newValue = safeNextStep(state, "+", minValue(state));
|
|
281
|
+
// if we've arrived at the same value that was previously in the state, the
|
|
282
|
+
// input value should be updated to match
|
|
283
|
+
// ex type 4, press increment, highlight the number in the input, type 4 again, press increment
|
|
284
|
+
// you'd be at 5, then incrementing to 5 again, so no re-render would happen and 4 would be left in the input
|
|
285
|
+
if (newValue === committedValue(state)) {
|
|
286
|
+
state.input.set(format(state, newValue));
|
|
287
|
+
}
|
|
288
|
+
writeNumberValue(state, newValue);
|
|
289
|
+
commitValidation(state.validation);
|
|
290
|
+
});
|
|
291
|
+
}
|
|
292
|
+
/** Decrements the current input value to the next step boundary, and fires `onChange`. */
|
|
293
|
+
export function decrement(state) {
|
|
294
|
+
untrack(() => {
|
|
295
|
+
syncInputValue(state);
|
|
296
|
+
const newValue = safeNextStep(state, "-", maxValue(state));
|
|
297
|
+
if (newValue === committedValue(state)) {
|
|
298
|
+
state.input.set(format(state, newValue));
|
|
299
|
+
}
|
|
300
|
+
writeNumberValue(state, newValue);
|
|
301
|
+
commitValidation(state.validation);
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
/** Sets the current value to the `maxValue` if any, and fires `onChange`. */
|
|
305
|
+
export function incrementToMax(state) {
|
|
306
|
+
untrack(() => {
|
|
307
|
+
syncInputValue(state);
|
|
308
|
+
const max = maxValue(state);
|
|
309
|
+
if (max != null) {
|
|
310
|
+
writeNumberValue(state, snapValueToStep(max, minValue(state), max, clampStep(state)));
|
|
311
|
+
commitValidation(state.validation);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
/** Sets the current value to the `minValue` if any, and fires `onChange`. */
|
|
316
|
+
export function decrementToMin(state) {
|
|
317
|
+
untrack(() => {
|
|
318
|
+
syncInputValue(state);
|
|
319
|
+
const min = minValue(state);
|
|
320
|
+
if (min != null) {
|
|
321
|
+
writeNumberValue(state, min);
|
|
322
|
+
commitValidation(state.validation);
|
|
323
|
+
}
|
|
324
|
+
});
|
|
325
|
+
}
|
|
326
|
+
// Shallow equality is sufficient here because all values in Intl.NumberFormatOptions are primitives.
|
|
327
|
+
function isEqualFormatOptions(a, b) {
|
|
328
|
+
if (a === b) {
|
|
329
|
+
return true;
|
|
330
|
+
}
|
|
331
|
+
if (!a || !b) {
|
|
332
|
+
return false;
|
|
333
|
+
}
|
|
334
|
+
const aKeys = Object.keys(a);
|
|
335
|
+
const bKeys = Object.keys(b);
|
|
336
|
+
if (aKeys.length !== bKeys.length) {
|
|
337
|
+
return false;
|
|
338
|
+
}
|
|
339
|
+
for (const key of aKeys) {
|
|
340
|
+
if (b[key] !== a[key]) {
|
|
341
|
+
return false;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
return true;
|
|
345
|
+
}
|
|
346
|
+
function handleDecimalOperation(operator, value1, value2) {
|
|
347
|
+
let result = operator === "+" ? value1 + value2 : value1 - value2;
|
|
348
|
+
// Check if we have decimals
|
|
349
|
+
if (value1 % 1 !== 0 || value2 % 1 !== 0) {
|
|
350
|
+
const value1Decimal = value1.toString().split(".");
|
|
351
|
+
const value2Decimal = value2.toString().split(".");
|
|
352
|
+
const value1DecimalLength = (value1Decimal[1] && value1Decimal[1].length) || 0;
|
|
353
|
+
const value2DecimalLength = (value2Decimal[1] && value2Decimal[1].length) || 0;
|
|
354
|
+
const multiplier = Math.pow(10, Math.max(value1DecimalLength, value2DecimalLength));
|
|
355
|
+
// Transform the decimals to integers based on the precision
|
|
356
|
+
value1 = Math.round(value1 * multiplier);
|
|
357
|
+
value2 = Math.round(value2 * multiplier);
|
|
358
|
+
// Perform the operation on integers values to make sure we don't get a fancy decimal value
|
|
359
|
+
result = operator === "+" ? value1 + value2 : value1 - value2;
|
|
360
|
+
// Transform the integer result back to decimal
|
|
361
|
+
result /= multiplier;
|
|
362
|
+
}
|
|
363
|
+
return result;
|
|
364
|
+
}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { type MaybeAccessor } from "../interactions/utils.js";
|
|
2
|
+
import type { PressEvent } from "../interactions/press.jsx";
|
|
3
|
+
import { type FieldIds } from "../label/behaviour.js";
|
|
4
|
+
import { type ValidationResult } from "../state/form-validation.js";
|
|
5
|
+
import { type NumberFieldProps, type NumberFieldState } from "../number/number-field-state.jsx";
|
|
6
|
+
import { type SpinButtonProps, type SpinButtonState } from "../spinbutton/behaviour.jsx";
|
|
7
|
+
type Bag = Record<string, unknown>;
|
|
8
|
+
export interface AriaNumberFieldProps extends NumberFieldProps {
|
|
9
|
+
/** The input id (label / description / error ids derive from it). Read once at mount. */
|
|
10
|
+
id?: string;
|
|
11
|
+
/** The content of the visible label (RA `label`; any truthy value = a label renders). */
|
|
12
|
+
label?: unknown;
|
|
13
|
+
/** RA `description` (truthy: a description renders). */
|
|
14
|
+
description?: unknown;
|
|
15
|
+
/** RA `errorMessage`. */
|
|
16
|
+
errorMessage?: unknown;
|
|
17
|
+
placeholder?: string;
|
|
18
|
+
/** A value, or an accessor that stays live (live props). */
|
|
19
|
+
isRequired?: MaybeAccessor<boolean | undefined>;
|
|
20
|
+
/** Whether the input takes focus when it mounts. Read once at mount. */
|
|
21
|
+
autoFocus?: boolean;
|
|
22
|
+
/** The name of the hidden input submitted with a form. Read once at mount (form identity). */
|
|
23
|
+
name?: string;
|
|
24
|
+
form?: string;
|
|
25
|
+
/**
|
|
26
|
+
* A custom aria-label for the decrement button. If not provided, the localized string "Decrement"
|
|
27
|
+
* is used. Read once at mount (it decides the button's labelling ids).
|
|
28
|
+
*/
|
|
29
|
+
decrementAriaLabel?: string;
|
|
30
|
+
/**
|
|
31
|
+
* A custom aria-label for the increment button. If not provided, the localized string "Increment"
|
|
32
|
+
* is used. Read once at mount (it decides the button's labelling ids).
|
|
33
|
+
*/
|
|
34
|
+
incrementAriaLabel?: string;
|
|
35
|
+
/** Enables or disables changing the value with scroll (a value, or an accessor read at scroll time). */
|
|
36
|
+
isWheelDisabled?: MaybeAccessor<boolean | undefined>;
|
|
37
|
+
/** Rivet: the locale (RA `useLocale()`); required (`I18nProvider` in the component). */
|
|
38
|
+
locale: MaybeAccessor<string>;
|
|
39
|
+
/** Read once at mount (combined with the label into the input's and the steppers' labels). */
|
|
40
|
+
"aria-label"?: string;
|
|
41
|
+
/** Read once at mount (combined with the label into the input's and the steppers' labels). */
|
|
42
|
+
"aria-labelledby"?: string;
|
|
43
|
+
"aria-describedby"?: string;
|
|
44
|
+
"aria-details"?: string;
|
|
45
|
+
"aria-errormessage"?: string;
|
|
46
|
+
onFocus?: (e: FocusEvent) => void;
|
|
47
|
+
onBlur?: (e: FocusEvent) => void;
|
|
48
|
+
onFocusChange?: (isFocused: boolean) => void;
|
|
49
|
+
onKeyDown?: (e: KeyboardEvent) => void;
|
|
50
|
+
onKeyUp?: (e: KeyboardEvent) => void;
|
|
51
|
+
onCopy?: (e: ClipboardEvent) => void;
|
|
52
|
+
onCut?: (e: ClipboardEvent) => void;
|
|
53
|
+
onPaste?: (e: ClipboardEvent) => void;
|
|
54
|
+
onCompositionStart?: (e: CompositionEvent) => void;
|
|
55
|
+
onCompositionEnd?: (e: CompositionEvent) => void;
|
|
56
|
+
onCompositionUpdate?: (e: CompositionEvent) => void;
|
|
57
|
+
onSelect?: (e: Event) => void;
|
|
58
|
+
onBeforeInput?: (e: InputEvent) => void;
|
|
59
|
+
onInput?: (e: Event) => void;
|
|
60
|
+
}
|
|
61
|
+
export interface NumberFieldAria {
|
|
62
|
+
/** Props for the label element. */
|
|
63
|
+
labelProps: Bag;
|
|
64
|
+
/** Props for the group wrapper around the input and stepper buttons. */
|
|
65
|
+
groupProps: Bag;
|
|
66
|
+
/** Props for the input element. */
|
|
67
|
+
inputProps: Bag;
|
|
68
|
+
/** Props for the increment button (Button / useButton props). */
|
|
69
|
+
incrementButtonProps: Bag;
|
|
70
|
+
/** Props for the decrement button (Button / useButton props). */
|
|
71
|
+
decrementButtonProps: Bag;
|
|
72
|
+
/** Props for the number field's description element, if any. */
|
|
73
|
+
descriptionProps: Bag;
|
|
74
|
+
/** Props for the number field's error message element, if any. */
|
|
75
|
+
errorMessageProps: Bag;
|
|
76
|
+
isInvalid: () => boolean;
|
|
77
|
+
validationErrors: () => string[];
|
|
78
|
+
validationDetails: () => ValidationResult["validationDetails"];
|
|
79
|
+
/** Rivet: ids of the parts. */
|
|
80
|
+
ids: FieldIds & {
|
|
81
|
+
inputId: string;
|
|
82
|
+
incrementId: string;
|
|
83
|
+
decrementId: string;
|
|
84
|
+
};
|
|
85
|
+
/** Rivet: the spin button's state (RA refs of useSpinButton; plain JSON). */
|
|
86
|
+
spin: SpinButtonState;
|
|
87
|
+
/** Rivet: focus-within state of the group (RA `useFocusWithin` + `focusWithin` state). */
|
|
88
|
+
within: {
|
|
89
|
+
isFocusWithin: boolean;
|
|
90
|
+
globals: (() => void)[];
|
|
91
|
+
};
|
|
92
|
+
/** Rivet: a native `change` committed the validation since the input got focus (re-committed after blur's commit). */
|
|
93
|
+
edit: {
|
|
94
|
+
changed: boolean;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/** RA `textValue`: the number formatted without `currencySign: 'accounting'` (announced with a minus sign). */
|
|
98
|
+
export declare function numberFieldTextValue(props: AriaNumberFieldProps, state: NumberFieldState): string;
|
|
99
|
+
/** RA `inputMode`: numeric / decimal / text by platform and whether negative / fractional numbers are allowed. */
|
|
100
|
+
export declare function numberFieldInputMode(props: AriaNumberFieldProps, state: NumberFieldState): "numeric" | "decimal" | "text";
|
|
101
|
+
/** The spin button props RA passes to useSpinButton (built at event time: browser-only closures). */
|
|
102
|
+
export declare function numberFieldSpinProps(props: AriaNumberFieldProps, state: NumberFieldState): SpinButtonProps;
|
|
103
|
+
/**
|
|
104
|
+
* Provides the behavior and accessibility implementation for a number field component. Number
|
|
105
|
+
* fields allow users to enter a number, and increment or decrement the value using stepper
|
|
106
|
+
* buttons (RA `useNumberField`).
|
|
107
|
+
*/
|
|
108
|
+
export declare function numberFieldProps(props: AriaNumberFieldProps, state: NumberFieldState): NumberFieldAria;
|
|
109
|
+
/**
|
|
110
|
+
* RA `useNativeValidation` (commitBehavior 'validate'): validity of min / max / step from a native number input,
|
|
111
|
+
* merged with the text input's validity (browser messages, no own translations).
|
|
112
|
+
*/
|
|
113
|
+
export declare function numberFieldNativeValidation(props: AriaNumberFieldProps, state: NumberFieldState, input: HTMLInputElement | null): void;
|
|
114
|
+
/** RA text field `onChange` (native `input`): accept the text if it is a valid partial number. */
|
|
115
|
+
export declare function numberFieldInput(event: Event, props: AriaNumberFieldProps, state: NumberFieldState, _aria?: NumberFieldAria): void;
|
|
116
|
+
/**
|
|
117
|
+
* Native `change` (RA useFormValidation change listener): commit the validation. RA defers that commit to after the
|
|
118
|
+
* next render, so it sees the validity of the blur's number commit (`change` fires before `blur`): the blur handler
|
|
119
|
+
* commits again when a change was committed during this edit.
|
|
120
|
+
*/
|
|
121
|
+
export declare function numberFieldChange(event: Event, props: AriaNumberFieldProps, state: NumberFieldState, aria?: NumberFieldAria): void;
|
|
122
|
+
/** `invalid` (form submit / checkValidity). */
|
|
123
|
+
export declare function numberFieldInvalid(event: Event, props: AriaNumberFieldProps, state: NumberFieldState): void;
|
|
124
|
+
/** RA `commitAndAnnounce`: commit the input, announce the normalized text when it changed. */
|
|
125
|
+
export declare function numberFieldCommitAndAnnounce(props: AriaNumberFieldProps, state: NumberFieldState, input: HTMLInputElement | null): void;
|
|
126
|
+
/** focus of the input: spin button focus, native custom validity, the platform input mode, user focus events. */
|
|
127
|
+
export declare function numberFieldFocus(event: FocusEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
128
|
+
/** blur of the input (RA chain: spin button onBlur, useFocus onBlur → commitAndAnnounce, text field onBlur). */
|
|
129
|
+
export declare function numberFieldBlur(event: FocusEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
130
|
+
/** keydown of the input: spin button shortcuts, then Enter commits (RA `useKeyboard` + user `onKeyDown`). */
|
|
131
|
+
export declare function numberFieldKeyDown(event: KeyboardEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
132
|
+
/** keyup of the input. */
|
|
133
|
+
export declare function numberFieldKeyUp(event: KeyboardEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
134
|
+
/** RA `onPaste`: a paste replacing the whole text commits it at once (the user sees the formatted result). */
|
|
135
|
+
export declare function numberFieldPaste(event: ClipboardEvent, props: AriaNumberFieldProps, state: NumberFieldState): void;
|
|
136
|
+
/** beforeinput (useFormattedTextField): cancel input that would make an invalid partial number. */
|
|
137
|
+
export declare function numberFieldBeforeInput(event: InputEvent, props: AriaNumberFieldProps, state: NumberFieldState): void;
|
|
138
|
+
export declare function numberFieldCompositionStart(event: CompositionEvent, props: AriaNumberFieldProps, _state: NumberFieldState): void;
|
|
139
|
+
export declare function numberFieldCompositionEnd(event: CompositionEvent, props: AriaNumberFieldProps, state: NumberFieldState): void;
|
|
140
|
+
/** RA `onWheel`: vertical wheel increments / decrements (trackpad: mostly-horizontal motion is ignored). */
|
|
141
|
+
export declare function numberFieldScroll(e: {
|
|
142
|
+
deltaX: number;
|
|
143
|
+
deltaY: number;
|
|
144
|
+
}, state: NumberFieldState): void;
|
|
145
|
+
/** focusin of the group (RA useFocusWithin): focus within → the input's non-passive wheel listener (useScrollWheel). */
|
|
146
|
+
export declare function numberFieldGroupFocusIn(event: FocusEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
147
|
+
/** focusout of the group. */
|
|
148
|
+
export declare function numberFieldGroupFocusOut(event: FocusEvent, props: AriaNumberFieldProps, _state: NumberFieldState, aria: NumberFieldAria): void;
|
|
149
|
+
/**
|
|
150
|
+
* RA `onButtonPressStart` (both stepper buttons): keep focus on the input if it has it (software keyboard stays);
|
|
151
|
+
* a mouse moves focus to the input; touch / screen reader focus the button.
|
|
152
|
+
*/
|
|
153
|
+
export declare function numberFieldButtonPressStart(e: PressEvent, _props: AriaNumberFieldProps, _state: NumberFieldState, aria: NumberFieldAria): void;
|
|
154
|
+
export declare function numberFieldIncrementPressStart(e: PressEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
155
|
+
export declare function numberFieldIncrementPressUp(e: PressEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
156
|
+
export declare function numberFieldIncrementPressEnd(e: PressEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
157
|
+
export declare function numberFieldDecrementPressStart(e: PressEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
158
|
+
export declare function numberFieldDecrementPressUp(e: PressEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
159
|
+
export declare function numberFieldDecrementPressEnd(e: PressEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
160
|
+
/** focus / blur of a stepper button (useSpinButton's onFocus / onBlur). */
|
|
161
|
+
export declare function numberFieldButtonFocus(e: FocusEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
162
|
+
export declare function numberFieldButtonBlur(e: FocusEvent, props: AriaNumberFieldProps, state: NumberFieldState, aria: NumberFieldAria): void;
|
|
163
|
+
/** RA unmount cleanup (spin timers, global listeners, wheel listener). */
|
|
164
|
+
export declare function numberFieldDispose(aria: NumberFieldAria): void;
|
|
165
|
+
export {};
|