@ryuzaki13/react-foundation-ui 3.4.3 → 3.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/badge/index.js +65 -2
- package/dist/badge/index.js.map +1 -0
- package/dist/barcode-scanner/index.js +18 -18
- package/dist/base-table/index.js +2 -2
- package/dist/button/Button.d.ts +4 -2
- package/dist/button/Button.d.ts.map +1 -1
- package/dist/button/index.js +1 -1
- package/dist/check-box/index.js +1 -1
- package/dist/chunks/{CalendarView-Dm55k0bN.js → CalendarView-BCXVjLFz.js} +102 -92
- package/dist/chunks/CalendarView-BCXVjLFz.js.map +1 -0
- package/dist/chunks/{ImageViewerRuntime-HGBWp9NM.js → ImageViewerRuntime-DZpgxzF1.js} +25 -25
- package/dist/chunks/{ImageViewerRuntime-HGBWp9NM.js.map → ImageViewerRuntime-DZpgxzF1.js.map} +1 -1
- package/dist/chunks/OptionContentContainer-CWHlfm5Z.js +14 -0
- package/dist/chunks/OptionContentContainer-CWHlfm5Z.js.map +1 -0
- package/dist/chunks/{TextEditorLexicalClient-C8nSoz85.js → TextEditorLexicalClient-DrSVnvOe.js} +355 -355
- package/dist/chunks/{TextEditorLexicalClient-C8nSoz85.js.map → TextEditorLexicalClient-DrSVnvOe.js.map} +1 -1
- package/dist/chunks/{base-table-BWvKfI2W.js → base-table-BBp5WMDM.js} +138 -138
- package/dist/chunks/{base-table-BWvKfI2W.js.map → base-table-BBp5WMDM.js.map} +1 -1
- package/dist/chunks/button-DudCl375.js +75 -0
- package/dist/chunks/button-DudCl375.js.map +1 -0
- package/dist/chunks/{check-box-CZyhzmR0.js → check-box-D_Y6iIWv.js} +19 -19
- package/dist/chunks/{check-box-CZyhzmR0.js.map → check-box-D_Y6iIWv.js.map} +1 -1
- package/dist/chunks/context-menu-CrSXJxQL.js +621 -0
- package/dist/chunks/context-menu-CrSXJxQL.js.map +1 -0
- package/dist/chunks/{date-input-D7aBsPJc.js → date-input-CzCDou4s.js} +72 -69
- package/dist/chunks/{date-input-D7aBsPJc.js.map → date-input-CzCDou4s.js.map} +1 -1
- package/dist/chunks/{date-range-preset-select-BLnY47cv.js → date-range-preset-select-CyzGMvVp.js} +6 -6
- package/dist/chunks/{date-range-preset-select-BLnY47cv.js.map → date-range-preset-select-CyzGMvVp.js.map} +1 -1
- package/dist/chunks/{dialog-1Z1zCNCe.js → dialog-BcQGVNbu.js} +13 -13
- package/dist/chunks/{dialog-1Z1zCNCe.js.map → dialog-BcQGVNbu.js.map} +1 -1
- package/dist/chunks/flex-D86M_h-0.js +222 -0
- package/dist/chunks/flex-D86M_h-0.js.map +1 -0
- package/dist/chunks/{floating-arrow-DPKwJfww.js → floating-arrow-B_iSbzUZ.js} +20 -19
- package/dist/chunks/{floating-arrow-DPKwJfww.js.map → floating-arrow-B_iSbzUZ.js.map} +1 -1
- package/dist/chunks/{grid-dI94AAbi.js → grid-CFuzBigM.js} +77 -68
- package/dist/chunks/grid-CFuzBigM.js.map +1 -0
- package/dist/chunks/{input-DSPKgiCK.js → input-CuRK9Vbz.js} +78 -78
- package/dist/chunks/{input-DSPKgiCK.js.map → input-CuRK9Vbz.js.map} +1 -1
- package/dist/chunks/{input-files-tIS17-zX.js → input-files-B8j6Pb_M.js} +31 -31
- package/dist/chunks/{input-files-tIS17-zX.js.map → input-files-B8j6Pb_M.js.map} +1 -1
- package/dist/chunks/misc-Cm_LDrUD.js +332 -0
- package/dist/chunks/misc-Cm_LDrUD.js.map +1 -0
- package/dist/chunks/{modal-dplfAaER.js → modal-Dz5TzkTB.js} +79 -70
- package/dist/chunks/modal-Dz5TzkTB.js.map +1 -0
- package/dist/chunks/picker-SJXnHwsj.js +462 -0
- package/dist/chunks/picker-SJXnHwsj.js.map +1 -0
- package/dist/chunks/popover-BJH-yHvb.js +263 -0
- package/dist/chunks/popover-BJH-yHvb.js.map +1 -0
- package/dist/chunks/radio-group-CW-K1n9c.js +125 -0
- package/dist/chunks/{radio-group-sSnlYjAX.js.map → radio-group-CW-K1n9c.js.map} +1 -1
- package/dist/chunks/select--oIrv7SC.js +357 -0
- package/dist/chunks/select--oIrv7SC.js.map +1 -0
- package/dist/chunks/separator-CHpBud1e.js +18 -0
- package/dist/chunks/separator-CHpBud1e.js.map +1 -0
- package/dist/chunks/{sortable-BKIwlqhI.js → sortable-BujAJgFa.js} +42 -40
- package/dist/chunks/{sortable-BKIwlqhI.js.map → sortable-BujAJgFa.js.map} +1 -1
- package/dist/chunks/{table-DxoSOvQK.js → table-BDY9Zw--.js} +18 -18
- package/dist/chunks/{table-DxoSOvQK.js.map → table-BDY9Zw--.js.map} +1 -1
- package/dist/chunks/{table-column-interactions-DzEvVuXe.js → table-column-interactions-Do8LFtiv.js} +20 -20
- package/dist/chunks/{table-column-interactions-DzEvVuXe.js.map → table-column-interactions-Do8LFtiv.js.map} +1 -1
- package/dist/chunks/{types-D9Wj9wrg.js → types-CxXyru6U.js} +21 -21
- package/dist/chunks/{types-D9Wj9wrg.js.map → types-CxXyru6U.js.map} +1 -1
- package/dist/chunks/ui.module-oRwY3Zli.js.map +1 -1
- package/dist/chunks/{useODataSelectBase-DR4PrY1j.js → useODataSelectBase-DwR4Lfv-.js} +5 -5
- package/dist/chunks/{useODataSelectBase-DR4PrY1j.js.map → useODataSelectBase-DwR4Lfv-.js.map} +1 -1
- package/dist/chunks/{wheel-picker-FS58cRsQ.js → wheel-picker-DUHGy7wE.js} +23 -23
- package/dist/chunks/{wheel-picker-FS58cRsQ.js.map → wheel-picker-DUHGy7wE.js.map} +1 -1
- package/dist/context-menu/components/ContextMenu.d.ts +16 -9
- package/dist/context-menu/components/ContextMenu.d.ts.map +1 -1
- package/dist/context-menu/components/ContextMenuTrigger.d.ts +6 -4
- package/dist/context-menu/components/ContextMenuTrigger.d.ts.map +1 -1
- package/dist/context-menu/components/DropdownMenu.d.ts +12 -7
- package/dist/context-menu/components/DropdownMenu.d.ts.map +1 -1
- package/dist/context-menu/components/DropdownMenuTrigger.d.ts +6 -4
- package/dist/context-menu/components/DropdownMenuTrigger.d.ts.map +1 -1
- package/dist/context-menu/components/MenuContent.d.ts +6 -4
- package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
- package/dist/context-menu/components/MenuContext.d.ts +12 -7
- package/dist/context-menu/components/MenuContext.d.ts.map +1 -1
- package/dist/context-menu/components/MenuGroupLabel.d.ts +1 -1
- package/dist/context-menu/components/MenuGroupLabel.d.ts.map +1 -1
- package/dist/context-menu/components/MenuItem.d.ts.map +1 -1
- package/dist/context-menu/components/MenuRoot.d.ts +5 -5
- package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
- package/dist/context-menu/components/MenuSeparator.d.ts +1 -2
- package/dist/context-menu/components/MenuSeparator.d.ts.map +1 -1
- package/dist/context-menu/components/RadialMenuContent.d.ts +6 -4
- package/dist/context-menu/components/RadialMenuContent.d.ts.map +1 -1
- package/dist/context-menu/components/RadialMenuItem.d.ts +1 -1
- package/dist/context-menu/components/RadialMenuItem.d.ts.map +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/date-input/index.js +2 -2
- package/dist/date-input/ui/CalendarDayView.d.ts +1 -1
- package/dist/date-input/ui/CalendarDayView.d.ts.map +1 -1
- package/dist/date-input/ui/CalendarMonthView.d.ts +1 -1
- package/dist/date-input/ui/CalendarMonthView.d.ts.map +1 -1
- package/dist/date-input/ui/CalendarView.d.ts.map +1 -1
- package/dist/date-input/ui/CalendarYearView.d.ts +1 -1
- package/dist/date-input/ui/CalendarYearView.d.ts.map +1 -1
- package/dist/date-input/ui/DateInput.d.ts.map +1 -1
- package/dist/date-range-preset-select/index.js +1 -1
- package/dist/date-time-input/index.js +128 -125
- package/dist/date-time-input/index.js.map +1 -1
- package/dist/date-time-input/ui/SingleDateTimeInput.d.ts.map +1 -1
- package/dist/detail/Detail.d.ts +6 -1
- package/dist/detail/Detail.d.ts.map +1 -1
- package/dist/detail/index.js +23 -23
- package/dist/detail/index.js.map +1 -1
- package/dist/dialog/index.js +1 -1
- package/dist/disclosure/index.js +9 -9
- package/dist/drop-zone/index.js +21 -21
- package/dist/errors/BadRequestPage.d.ts +1 -1
- package/dist/errors/BadRequestPage.d.ts.map +1 -1
- package/dist/errors/ErrorDisplay.d.ts +2 -2
- package/dist/errors/ErrorDisplay.d.ts.map +1 -1
- package/dist/errors/ErrorExplosion.d.ts +1 -2
- package/dist/errors/ErrorExplosion.d.ts.map +1 -1
- package/dist/errors/ForbiddenPage.d.ts +1 -1
- package/dist/errors/ForbiddenPage.d.ts.map +1 -1
- package/dist/errors/NotFoundPage.d.ts +1 -1
- package/dist/errors/NotFoundPage.d.ts.map +1 -1
- package/dist/errors/PageError.d.ts +1 -2
- package/dist/errors/PageError.d.ts.map +1 -1
- package/dist/errors/UnauthorizedPage.d.ts +1 -1
- package/dist/errors/UnauthorizedPage.d.ts.map +1 -1
- package/dist/errors/ViewNotChanged.d.ts +1 -2
- package/dist/errors/ViewNotChanged.d.ts.map +1 -1
- package/dist/errors/index.js +110 -80
- package/dist/errors/index.js.map +1 -1
- package/dist/expandable-action-panel/index.js +24 -24
- package/dist/flex/Flex.d.ts +6 -3
- package/dist/flex/Flex.d.ts.map +1 -1
- package/dist/flex/FlexCenter.d.ts +1 -1
- package/dist/flex/FlexCenter.d.ts.map +1 -1
- package/dist/flex/FlexContainer.d.ts +7 -1
- package/dist/flex/FlexContainer.d.ts.map +1 -1
- package/dist/flex/FlexItem.d.ts +7 -1
- package/dist/flex/FlexItem.d.ts.map +1 -1
- package/dist/flex/FlexSpacer.d.ts +7 -1
- package/dist/flex/FlexSpacer.d.ts.map +1 -1
- package/dist/flex/PredefinedFlex.d.ts +7 -1
- package/dist/flex/PredefinedFlex.d.ts.map +1 -1
- package/dist/flex/index.js +1 -1
- package/dist/flex/useFlexClasses.d.ts +1 -1
- package/dist/floating-arrow/FloatingArrow.d.ts +4 -1
- package/dist/floating-arrow/FloatingArrow.d.ts.map +1 -1
- package/dist/floating-arrow/index.js +1 -1
- package/dist/fullscreen-portal/index.js +8 -8
- package/dist/grid/Grid.d.ts +4 -2
- package/dist/grid/Grid.d.ts.map +1 -1
- package/dist/grid/GridContainer.d.ts +7 -1
- package/dist/grid/GridContainer.d.ts.map +1 -1
- package/dist/grid/GridItem.d.ts +7 -1
- package/dist/grid/GridItem.d.ts.map +1 -1
- package/dist/grid/index.js +1 -1
- package/dist/image/index.js +120 -120
- package/dist/input/index.js +1 -1
- package/dist/input-date-time/index.js +55 -55
- package/dist/input-file/index.js +16 -16
- package/dist/input-files/index.js +1 -1
- package/dist/input-image/index.js +17 -17
- package/dist/input-search/index.js +30 -2
- package/dist/input-search/index.js.map +1 -0
- package/dist/layout-picker/index.js +95 -97
- package/dist/layout-picker/index.js.map +1 -1
- package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
- package/dist/list/List.d.ts +9 -9
- package/dist/list/List.d.ts.map +1 -1
- package/dist/list/index.js +51 -44
- package/dist/list/index.js.map +1 -1
- package/dist/listbox/Listbox.d.ts.map +1 -1
- package/dist/listbox/index.js +33 -39
- package/dist/listbox/index.js.map +1 -1
- package/dist/misc/CopyTextWrapper.d.ts +1 -1
- package/dist/misc/CopyTextWrapper.d.ts.map +1 -1
- package/dist/misc/OneStepScroller.d.ts +1 -1
- package/dist/misc/OneStepScroller.d.ts.map +1 -1
- package/dist/misc/Scrollable.d.ts +9 -7
- package/dist/misc/Scrollable.d.ts.map +1 -1
- package/dist/misc/SkeletonLine.d.ts +1 -1
- package/dist/misc/SkeletonLine.d.ts.map +1 -1
- package/dist/misc/StateIcon.d.ts +6 -7
- package/dist/misc/StateIcon.d.ts.map +1 -1
- package/dist/misc/index.d.ts +1 -0
- package/dist/misc/index.d.ts.map +1 -1
- package/dist/misc/index.js +1 -1
- package/dist/modal/Modal.d.ts +14 -5
- package/dist/modal/Modal.d.ts.map +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/multi-select/index.js +481 -2
- package/dist/multi-select/index.js.map +1 -0
- package/dist/multi-select/ui/MultiSelect.d.ts +7 -2
- package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/ODataMultiSelect.d.ts +1 -2
- package/dist/multi-select/ui/ODataMultiSelect.d.ts.map +1 -1
- package/dist/notifications/index.js +46 -48
- package/dist/notifications/index.js.map +1 -1
- package/dist/option/Option.d.ts +3 -3
- package/dist/option/OptionContentContainer.d.ts +7 -0
- package/dist/option/OptionContentContainer.d.ts.map +1 -0
- package/dist/option/index.js +30 -30
- package/dist/option/index.js.map +1 -1
- package/dist/period-select/index.js +7 -7
- package/dist/picker/PickerOptions.d.ts +3 -1
- package/dist/picker/PickerOptions.d.ts.map +1 -1
- package/dist/picker/PickerPopup.d.ts +1 -1
- package/dist/picker/PickerPopup.d.ts.map +1 -1
- package/dist/picker/PickerTriggerActions.d.ts +7 -2
- package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
- package/dist/picker/PickerTriggerInput.d.ts +7 -2
- package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/polymorphic/PolymorphicComponent.d.ts +1 -1
- package/dist/polymorphic/PolymorphicComponent.d.ts.map +1 -1
- package/dist/polymorphic/index.js +3 -1
- package/dist/polymorphic/index.js.map +1 -1
- package/dist/popover/FloatingPopover.d.ts +1 -1
- package/dist/popover/FloatingPopover.d.ts.map +1 -1
- package/dist/popover/FloatingTooltip.d.ts +2 -2
- package/dist/popover/FloatingTooltip.d.ts.map +1 -1
- package/dist/popover/components/Popover.d.ts +11 -10
- package/dist/popover/components/Popover.d.ts.map +1 -1
- package/dist/popover/components/PopoverContent.d.ts +6 -4
- package/dist/popover/components/PopoverContent.d.ts.map +1 -1
- package/dist/popover/components/PopoverContext.d.ts +2 -1
- package/dist/popover/components/PopoverContext.d.ts.map +1 -1
- package/dist/popover/components/PopoverTrigger.d.ts +1 -1
- package/dist/popover/components/PopoverTrigger.d.ts.map +1 -1
- package/dist/popover/index.js +1 -1
- package/dist/preset-range-date-input/index.js +10 -10
- package/dist/preset-select/index.js +1 -1
- package/dist/radio-button/RadioButton.d.ts +1 -1
- package/dist/radio-button/RadioButton.d.ts.map +1 -1
- package/dist/radio-button/index.js +14 -11
- package/dist/radio-button/index.js.map +1 -1
- package/dist/radio-group/index.js +1 -1
- package/dist/select/ODataSelect.d.ts +1 -2
- package/dist/select/ODataSelect.d.ts.map +1 -1
- package/dist/select/Select.d.ts.map +1 -1
- package/dist/select/index.js +1 -1
- package/dist/separator/Separator.d.ts +1 -1
- package/dist/separator/Separator.d.ts.map +1 -1
- package/dist/separator/index.js +1 -1
- package/dist/simple-table/index.js +5 -5
- package/dist/slider/Slider.d.ts.map +1 -1
- package/dist/slider/SliderInput.d.ts.map +1 -1
- package/dist/slider/SliderPopoverToggle.d.ts +11 -0
- package/dist/slider/SliderPopoverToggle.d.ts.map +1 -0
- package/dist/slider/index.js +298 -277
- package/dist/slider/index.js.map +1 -1
- package/dist/sortable/Sortable.d.ts.map +1 -1
- package/dist/sortable/SortableDragHandle.d.ts +1 -1
- package/dist/sortable/SortableDragHandle.d.ts.map +1 -1
- package/dist/sortable/index.js +1 -1
- package/dist/splitter/index.js +55 -55
- package/dist/state-select/index.js +17 -17
- package/dist/styles.css +1 -1
- package/dist/switch/index.js +18 -18
- package/dist/table/index.js +1 -1
- package/dist/table-column-interactions/index.js +1 -1
- package/dist/table-editor/index.js +99 -99
- package/dist/table-sorting/index.js +13 -13
- package/dist/tabs/index.js +103 -104
- package/dist/tabs/index.js.map +1 -1
- package/dist/tabs/ui/TabsBox.d.ts +1 -1
- package/dist/tabs/ui/TabsBox.d.ts.map +1 -1
- package/dist/tabs/ui/TabsLayout.d.ts +11 -7
- package/dist/tabs/ui/TabsLayout.d.ts.map +1 -1
- package/dist/tabs/ui/TabsPanel.d.ts +3 -3
- package/dist/tabs/ui/TabsPanel.d.ts.map +1 -1
- package/dist/tabs/ui/TabsTabList.d.ts +2 -2
- package/dist/tabs/ui/TabsTabList.d.ts.map +1 -1
- package/dist/tag-input/index.js +58 -58
- package/dist/tag-input/index.js.map +1 -1
- package/dist/text/HighlightText.d.ts +2 -2
- package/dist/text/HighlightText.d.ts.map +1 -1
- package/dist/text/index.js +23 -18
- package/dist/text/index.js.map +1 -1
- package/dist/text-editor/index.js +3 -3
- package/dist/textarea/index.js +1 -1
- package/dist/three-scene/index.js +7 -7
- package/dist/toggle/index.js +20 -20
- package/dist/toolbar/Toolbar.d.ts +8 -2
- package/dist/toolbar/Toolbar.d.ts.map +1 -1
- package/dist/toolbar/index.js +21 -17
- package/dist/toolbar/index.js.map +1 -1
- package/dist/tree/index.js +24 -24
- package/dist/tree-select/TreeNodeContent.d.ts +3 -1
- package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
- package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
- package/dist/tree-select/index.js +469 -392
- package/dist/tree-select/index.js.map +1 -1
- package/dist/tree-table/index.js +33 -33
- package/dist/tree-table/index.js.map +1 -1
- package/dist/wheel-picker/index.js +1 -1
- package/package.json +1 -5
- package/storybook-static/assets/{Badge-BKRvorSi.js → Badge-r7lsdHne.js} +1 -1
- package/storybook-static/assets/{Badge.stories-19yFfupy.js → Badge.stories-P4qdQ7cm.js} +1 -1
- package/storybook-static/assets/{BadgeList-DMkfxply.js → BadgeList-8NyPAV2Q.js} +1 -1
- package/storybook-static/assets/{BarcodeScannerDialog.stories-DdnHxu5x.js → BarcodeScannerDialog.stories--TadwGdZ.js} +1 -1
- package/storybook-static/assets/{Button-Di-0Ionw.js → Button-BP0DDcNq.js} +1 -1
- package/storybook-static/assets/{Button-CoOZeR_z.js → Button-X3OT5zE7.js} +2 -2
- package/storybook-static/assets/{Button.stories-Bd1To5BN.js → Button.stories-CFiUr_xE.js} +1 -1
- package/storybook-static/assets/CalendarView-nWuZBE9T.js +1 -0
- package/storybook-static/assets/{CheckBox-DSmGYEML.js → CheckBox-BId2Zf_m.js} +1 -1
- package/storybook-static/assets/{CheckBox-DfRTTXg1.js → CheckBox-Bde9tud-.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-DaldWgEI.js → CheckBox.stories-BVU9Rkai.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-DIhia6KS.js → Color-6AOWCN3U-BeUy9gum.js} +1 -1
- package/storybook-static/assets/{ContextMenu-BGMQHT9V.js → ContextMenu-BS2UVgbu.js} +6 -2
- package/storybook-static/assets/ContextMenu-Byksyz_8.js +33 -0
- package/storybook-static/assets/ContextMenu.stories-DmJPp2YR.js +37 -0
- package/storybook-static/assets/{DateInput-DUl5Bb0j.js → DateInput-CQe_1Dk-.js} +8 -1
- package/storybook-static/assets/{DateInput-MgdMtvtr.js → DateInput-CgETMk9B.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-B6Ol0Ak3.js → DateInput.stories-BOst6EKv.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-CPj0pSGc.js → DateRangePresetSelect-CxrNYBTe.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-C4MVqjXa.js → DateRangePresetSelect-DHJ31vIB.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-tPaMURtH.js → DateRangePresetSelect.stories-CiyN1joN.js} +1 -1
- package/storybook-static/assets/{Detail-DnHTVRb5.js → Detail-V_NYrUJR.js} +1 -1
- package/storybook-static/assets/Detail.stories-B4tf6inN.js +56 -0
- package/storybook-static/assets/{Dialog-COpvqcXi.js → Dialog-B6miFej7.js} +1 -1
- package/storybook-static/assets/{Dialog-LMnrvBpx.js → Dialog-DNTx5Unm.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-BE2I5ny2.js → Dialog.stories-BS1dDTLW.js} +1 -1
- package/storybook-static/assets/{Disclosure-BZ3jd5nu.js → Disclosure-4sf5BIn1.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-cMcF8a8I.js → Disclosure.stories-DhUQNdEC.js} +1 -1
- package/storybook-static/assets/DisclosureGroup-Codiur77.js +2 -0
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-CurHdzu8.js → DocsRenderer-JROSPFPF-yT2aWNaF.js} +1 -1
- package/storybook-static/assets/{DropZone-VEmgdfs6.js → DropZone-D4rl2WEV.js} +1 -1
- package/storybook-static/assets/{DropZone-DGMAbY1z.js → DropZone-Du0BQAyO.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-B8N17-bV.js → DropZone.stories-B8iPjYH_.js} +1 -1
- package/storybook-static/assets/DropdownMenu-BcdS3oNz.js +21 -0
- package/storybook-static/assets/{ExpandableActionPanel-C7CFQZLD.js → ExpandableActionPanel-6u6YJanI.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-CnBr0s9R.js → ExpandableActionPanel.stories-D-CZHUv0.js} +1 -1
- package/storybook-static/assets/{Flex-RpqsC-gQ.js → Flex-DWi0hQ-f.js} +1 -1
- package/storybook-static/assets/Flex.stories-CKKi33JK.js +300 -0
- package/storybook-static/assets/FlexContainer-BMK_YH72.js +1 -0
- package/storybook-static/assets/{FlexItem-pu3E11Sf.js → FlexItem-DpSHNBxJ.js} +2 -2
- package/storybook-static/assets/FloatingPopover-D9nTd47B.js +1 -0
- package/storybook-static/assets/FormattedTableCell-DyBhk9rG.js +15 -0
- package/storybook-static/assets/{Grid-CzO0Ae1r.js → Grid-BZgzDCLK.js} +2 -2
- package/storybook-static/assets/{Grid-BRnqEtg1.js → Grid-DbvUGBEN.js} +1 -1
- package/storybook-static/assets/{Grid.stories-DXY7Cvfu.js → Grid.stories-BeEAzTxD.js} +4 -4
- package/storybook-static/assets/{GridContainer-fKYgDsLl.js → GridContainer-B82Onj6x.js} +2 -2
- package/storybook-static/assets/{ImageCropper.stories-ZnvbFN71.js → ImageCropper.stories-SDIt19aO.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-DUOhCfac.js → ImageRenderer-Bzg27pq7.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-Dj6NQm2k.js → ImageRenderer.stories-C-IE84zV.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-QTzOsByD.js → ImageView.stories-DIcx2Krs.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-CpnUEgZW.js → ImageViewer.stories-CQTy0uPX.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-B1PicLUw.js → ImageViewerRuntime-CA5BYQsX.js} +1 -1
- package/storybook-static/assets/{Input-B8eGQXlp.js → Input-D8uMye_9.js} +1 -1
- package/storybook-static/assets/{Input-DnFc_Pwx.js → Input-DmsN6uC_.js} +1 -1
- package/storybook-static/assets/{Input.stories-C6CbYvZP.js → Input.stories-D8QWPnMD.js} +1 -1
- package/storybook-static/assets/{InputDateTime-DoMduRde.js → InputDateTime-Cczll-bH.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories--LHpvJjY.js → InputDateTime.stories-DeZ6XHwa.js} +1 -1
- package/storybook-static/assets/{InputFile-CunQ8F4s.js → InputFile-BbPjLN4E.js} +1 -1
- package/storybook-static/assets/{InputFile-DFv3WAWa.js → InputFile-C0_L0zTd.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-B0WZhic1.js → InputFile.stories-Di_6BkX1.js} +1 -1
- package/storybook-static/assets/{InputFiles-DyiPQ_tH.js → InputFiles-B3uOwqKF.js} +1 -1
- package/storybook-static/assets/{InputFiles-CKDPmjWY.js → InputFiles-CF60S_qG.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-BbP_bEnL.js → InputFiles.stories-BkTiEPX6.js} +1 -1
- package/storybook-static/assets/{InputFilesList-BAIGwV7V.js → InputFilesList-C9cudcHe.js} +1 -1
- package/storybook-static/assets/{InputImage-2G1pRNbw.js → InputImage-Aq_ZXmtw.js} +1 -1
- package/storybook-static/assets/{InputImage-ZvEB_TIT.js → InputImage-Dx0DIf4l.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-BiShLRcw.js → InputImage.stories-D7LfEcn4.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-CT99QfHX.js → InteractiveComponents-DP5FyU4S.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-BPTICQZz.js → InteractiveComponents.stories-CE5L5PAB.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-BDpc8LBa.js → LayoutPicker-BehxFQsU.js} +2 -2
- package/storybook-static/assets/{LayoutPicker-Cg_AM-pj.js → LayoutPicker-CW1W-CAf.js} +2 -1
- package/storybook-static/assets/{LayoutPicker.stories-Ca9WZdPW.js → LayoutPicker.stories-DtvfpOUS.js} +1 -1
- package/storybook-static/assets/Listbox-Bn_6WyQc.js +1 -0
- package/storybook-static/assets/{Listbox-LbbFtte9.js → Listbox-VcD28kxl.js} +2 -1
- package/storybook-static/assets/{Listbox.stories-xDpbFNZk.js → Listbox.stories-CL6fJlUm.js} +1 -1
- package/storybook-static/assets/{Modal-CXd2j0up.js → Modal-D0D5WZ_O.js} +1 -1
- package/storybook-static/assets/Modal-DrSX0i3a.js +1 -0
- package/storybook-static/assets/{Modal.stories-cNLvFjmT.js → Modal.stories-Ch3P8_kY.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-ClXvSB9a.js → ModalManagerProvider-B0Lf7xX0.js} +1 -1
- package/storybook-static/assets/MultiSelect-Bw3qf8eW.js +2 -0
- package/storybook-static/assets/{MultiSelect-Na2VdNy3.js → MultiSelect-Cmxa5Vho.js} +4 -1
- package/storybook-static/assets/MultiSelect-SJBp1Ymv.css +1 -0
- package/storybook-static/assets/{MultiSelect.stories-4nFshdtz.js → MultiSelect.stories-DKHPBUWD.js} +1 -1
- package/storybook-static/assets/NoData-seFnJNiE.js +1 -0
- package/storybook-static/assets/{NotificationsHost-CrLL4WK9.js → NotificationsHost-d770FjSM.js} +11 -8
- package/storybook-static/assets/{NotificationsHost.stories-Ci2q0W9-.js → NotificationsHost.stories-BYmVl44l.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-Cc09uTB8.js → ODataMultiSelect-BN0pcCmQ.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-CzGzREa9.js → ODataMultiSelect.stories-D5zrkaFW.js} +2 -2
- package/storybook-static/assets/{ODataSelect-DqoRg5pz.js → ODataSelect-C5DXRRVH.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-BCcxERn3.js → ODataSelect.stories-ClYp08JR.js} +2 -2
- package/storybook-static/assets/{ODataTreeMultiSelect-qZEcSE5O.js → ODataTreeMultiSelect-CsvSq1G1.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-Bfees7Qr.js → ODataTreeMultiSelect.stories-DFXLQjms.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-IOVS6uQc.js → ODataTreeSelect-CdN-NwV7.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-CO7DClzd.js → ODataTreeSelect.stories-CDffbvxi.js} +1 -1
- package/storybook-static/assets/OneStepScroller-qXHo2r0J.js +5 -0
- package/storybook-static/assets/Option-tEWfKgN_.js +10 -0
- package/storybook-static/assets/OptionButton-DOj_dfd1.js +1 -0
- package/storybook-static/assets/OptionContent-6iwuLpQP.js +1 -0
- package/storybook-static/assets/OptionContentContainer-DbdHO42m.js +2 -0
- package/storybook-static/assets/{PeriodSelect-D-jXJf5C.js → PeriodSelect-Bo_B6jdw.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-BAVDztkI.js → PeriodSelect-DffBuv6v.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-CscsENT9.js → PeriodSelect.stories-Boq-fBL8.js} +1 -1
- package/storybook-static/assets/{PickerField-CRtltoce.js → PickerField-fMVQUcBX.js} +1 -1
- package/storybook-static/assets/PickerTriggerActions-zS0JUD-3.js +2 -0
- package/storybook-static/assets/PolymorphicComponent-NBvIz9JD.js +1 -0
- package/storybook-static/assets/Popover-5c_n39x0.js +55 -0
- package/storybook-static/assets/Popover-u02JbpuP.js +46 -0
- package/storybook-static/assets/Popover.stories-BUVgJJQI.js +63 -0
- package/storybook-static/assets/{PresetRangeDateInput-VZnM8RNV.js → PresetRangeDateInput-EiaEd6Qp.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-CVPMYlEV.js → PresetRangeDateInput-TyV-u0Db.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-DdBWlSV-.js → PresetRangeDateInput.stories-jJq5Gkdb.js} +1 -1
- package/storybook-static/assets/{PresetSelect-C7YYBjlL.js → PresetSelect-Cnl_fXjS.js} +1 -1
- package/storybook-static/assets/{README-6XPUoxFl.js → README-10_nKrEg.js} +1 -1
- package/storybook-static/assets/{README-DIWsYBR7.js → README-6n5fAnyG.js} +1 -1
- package/storybook-static/assets/{README-oKLTQYfV.js → README-7mbN7jNm.js} +1 -1
- package/storybook-static/assets/{README-D2AT2-yD.js → README-8qj7XGDa.js} +1 -1
- package/storybook-static/assets/{README-DADnaXLy.js → README-8vaqVs2t.js} +1 -1
- package/storybook-static/assets/{README-ZxRwqfIH.js → README-AbbeH5rC.js} +1 -1
- package/storybook-static/assets/{README-Bk1oSDWQ.js → README-B-K2UPpo.js} +1 -1
- package/storybook-static/assets/{README-DoxVtmRh.js → README-B-z6znlC.js} +1 -1
- package/storybook-static/assets/{README-BL8ZNGNi.js → README-B6uVB1ib.js} +1 -1
- package/storybook-static/assets/{README-B0FbTpix.js → README-B7f6XRLa.js} +1 -1
- package/storybook-static/assets/{README-BGBxEe4u.js → README-BGEviJbA.js} +1 -1
- package/storybook-static/assets/{README-C-IUw1gX.js → README-BPWr_0XE.js} +1 -1
- package/storybook-static/assets/{README-_KzyG4dS.js → README-BWiCGCpy.js} +1 -1
- package/storybook-static/assets/{README-DrTR5pSr.js → README-BfF9g6q6.js} +1 -1
- package/storybook-static/assets/{README-2NTkucdH.js → README-BgbmWbpJ.js} +1 -1
- package/storybook-static/assets/{README-DC0vNdOD.js → README-Bn7SBLqL.js} +1 -1
- package/storybook-static/assets/{README-w9FMhq0X.js → README-BoXMNqUS.js} +1 -1
- package/storybook-static/assets/{README-DyWhmOFY.js → README-BoZbB8t8.js} +1 -1
- package/storybook-static/assets/{README-b3wA6wFr.js → README-BsHrwATK.js} +1 -1
- package/storybook-static/assets/{README-CB5BpIBF.js → README-By7MmJad.js} +1 -1
- package/storybook-static/assets/{README-DWzfTSuq.js → README-BylyIJ4z.js} +1 -1
- package/storybook-static/assets/{README-CeNQeTK-.js → README-ByxHEXaq.js} +1 -1
- package/storybook-static/assets/{README-UcyyK9jn.js → README-CO0Anr1W.js} +1 -1
- package/storybook-static/assets/{README-BdsFByUw.js → README-CXhBUq08.js} +1 -1
- package/storybook-static/assets/{README-Bvo0Qxde.js → README-CXlUZ-Tw.js} +1 -1
- package/storybook-static/assets/{README-CTF9mVZL.js → README-CZBT22Qx.js} +1 -1
- package/storybook-static/assets/{README-B0Nb0jf2.js → README-CZaKBu1r.js} +1 -1
- package/storybook-static/assets/{README-C_lKreF9.js → README-Cc5RUdsX.js} +1 -1
- package/storybook-static/assets/{README-BZlnzGAh.js → README-CmCyESsg.js} +1 -1
- package/storybook-static/assets/{README-jvtwVY_n.js → README-CoofcGyA.js} +1 -1
- package/storybook-static/assets/{README-Wli4AXG5.js → README-CqCDXjY-.js} +1 -1
- package/storybook-static/assets/{README-DOi6rx7n.js → README-CqMgUXym.js} +1 -1
- package/storybook-static/assets/{README-na5mQX4V.js → README-DB3HzmYa.js} +1 -1
- package/storybook-static/assets/{README-DMwF_O1R.js → README-DBqb3xHL.js} +1 -1
- package/storybook-static/assets/{README-CvaizZr1.js → README-DKMzvCHg.js} +1 -1
- package/storybook-static/assets/{README-CqiNQGIJ.js → README-DLGk_zi3.js} +1 -1
- package/storybook-static/assets/{README-Dm7CwuVP.js → README-DT4BWDzj.js} +1 -1
- package/storybook-static/assets/{README-Brn9Tjjc.js → README-DXzLMFnF.js} +1 -1
- package/storybook-static/assets/{README-8L1vpZcz.js → README-DZKQ2NbJ.js} +1 -1
- package/storybook-static/assets/{README-C7N5_6-c.js → README-DnIK-CvZ.js} +1 -1
- package/storybook-static/assets/{README-GChrAHFQ.js → README-DsEaeYrz.js} +1 -1
- package/storybook-static/assets/{README-DkBG5Azm.js → README-DsqwQGJx.js} +1 -1
- package/storybook-static/assets/{README-Dr8TxFTe.js → README-DyhDd6j2.js} +1 -1
- package/storybook-static/assets/{README-HWuoKwKL.js → README-E09CwLzJ.js} +1 -1
- package/storybook-static/assets/{README-DlfWWC7n.js → README-W30_dPSQ.js} +1 -1
- package/storybook-static/assets/{README-DOBIWrus.js → README-WtLMdn_H.js} +1 -1
- package/storybook-static/assets/{README-g1VWHzAJ.js → README-_UuZJvdY.js} +1 -1
- package/storybook-static/assets/{README-BD-WSEvQ.js → README-bJALHbSR.js} +1 -1
- package/storybook-static/assets/{README-Dmu5lsNT.js → README-e3Zi9n04.js} +1 -1
- package/storybook-static/assets/{README-DgXAMdBY.js → README-g4l3WFXZ.js} +1 -1
- package/storybook-static/assets/{README-jQcGKqqm.js → README-jb10Ekr5.js} +1 -1
- package/storybook-static/assets/{README-CTwfFqJG.js → README-q6R_bF6h.js} +1 -1
- package/storybook-static/assets/{README-BGmO6U9j.js → README-tDgobAYS.js} +1 -1
- package/storybook-static/assets/{RadioButton-Dgkz1EWU.js → RadioButton-DGjO61a9.js} +1 -1
- package/storybook-static/assets/RadioButton-j3O4woG8.js +1 -0
- package/storybook-static/assets/{RadioButton.stories-DO14jTfm.js → RadioButton.stories-COGMYQcq.js} +1 -1
- package/storybook-static/assets/{RadioGroup-Db0AhiKo.js → RadioGroup-Cuj2D_RZ.js} +1 -1
- package/storybook-static/assets/{RadioGroup-BSiqjVai.js → RadioGroup-D9samx7D.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-C0D6n83q.js → RadioGroup.stories-KSDvpgqY.js} +1 -1
- package/storybook-static/assets/Scrollable-DsOw--4y.js +1 -0
- package/storybook-static/assets/Scrollable-tPrIOchd.js +18 -0
- package/storybook-static/assets/Scrollable.stories-B7d_6eGB.js +1 -0
- package/storybook-static/assets/Select-D0CHiGkz.js +12 -0
- package/storybook-static/assets/{Select-D8X-SkP2.js → Select-h0tWQbii.js} +3 -1
- package/storybook-static/assets/{Select.stories-8_zvonmc.js → Select.stories-GmGbpUoi.js} +1 -1
- package/storybook-static/assets/Separator-C8aQcNns.js +1 -0
- package/storybook-static/assets/Separator-Dh8kzf-5.js +14 -0
- package/storybook-static/assets/Separator.stories-nQ9bDdo1.js +14 -0
- package/storybook-static/assets/{SerializableSelect-ii6T140l.js → SerializableSelect-BJAxQ8an.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-Ba3ABMGt.js → SerializableSelect.stories-CzVCg1_7.js} +1 -1
- package/storybook-static/assets/{ShimmerText-C6vkZwUV.js → ShimmerText-DnEOvvJA.js} +1 -1
- package/storybook-static/assets/{ShimmerText.stories-CVpSxXHJ.js → ShimmerText.stories-D2XRPcMC.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-96-mrjq8.js → SingleDateTimeInput-Bwn8kqI3.js} +8 -1
- package/storybook-static/assets/{SingleDateTimeInput-DpETPR89.js → SingleDateTimeInput-DwY38Bzb.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-JhviurJO.js → SingleDateTimeInput.stories-DKq1_AqA.js} +1 -1
- package/storybook-static/assets/{Slider-B27TdvRV.js → Slider-CT0jMXMY.js} +8 -1
- package/storybook-static/assets/Slider-KiXLZUpw.js +1 -0
- package/storybook-static/assets/{Slider.stories-d1YeKe5r.js → Slider.stories-Cmcm8HlR.js} +1 -1
- package/storybook-static/assets/SliderInput-Dd_yvyMG.js +3 -0
- package/storybook-static/assets/{SliderInput-D2d23mEI.js → SliderInput-Unp3YEcU.js} +8 -1
- package/storybook-static/assets/{SliderInput.stories-CwqT79oE.js → SliderInput.stories-C0MwvTOV.js} +1 -1
- package/storybook-static/assets/{Sortable-DiJuiI6V.js → Sortable-CnCowZw-.js} +4 -2
- package/storybook-static/assets/Sortable.stories-DCrIurAg.js +44 -0
- package/storybook-static/assets/{Splitter-QwdfWNbm.js → Splitter-BErks2lB.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-C2iDPz8c.js → Splitter.stories-DyRlCVUo.js} +1 -1
- package/storybook-static/assets/{StateSelect-D1ZDM6bC.js → StateSelect-DXfsbduM.js} +1 -1
- package/storybook-static/assets/{StateSelect-Bw9H1Cus.js → StateSelect-DuVzqi0t.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-DEFvQ15O.js → StateSelect.stories-CnIXqGFB.js} +1 -1
- package/storybook-static/assets/{StatusIndicator-D6Pbdz37.js → StatusIndicator-Bz3JF899.js} +1 -1
- package/storybook-static/assets/{StatusIndicator.stories-COgpy5cK.js → StatusIndicator.stories-B5RMchH3.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-BFwMh0Yd.js → StringToggle.stories-CcR8KHGF.js} +1 -1
- package/storybook-static/assets/{Switch-Bmj2AItH.js → Switch-Bo-dd4nL.js} +1 -1
- package/storybook-static/assets/{Switch-DyDk152g.js → Switch-a7GMbDn9.js} +1 -1
- package/storybook-static/assets/{Switch.stories-C10NxPL4.js → Switch.stories-B9c9CAmZ.js} +1 -1
- package/storybook-static/assets/{Table-YcEwF4aO.js → Table-BgmEmcbL.js} +1 -1
- package/storybook-static/assets/{Table.stories-DgxFS9Sa.js → Table.stories-BByDPmdZ.js} +1 -1
- package/storybook-static/assets/{TableEditor.stories-CSMoxO4O.js → TableEditor.stories-DJi7VPcY.js} +1 -1
- package/storybook-static/assets/{Tabs-DOsPN2X1.js → Tabs-CV1ykDlt.js} +2 -3
- package/storybook-static/assets/Tabs.stories-DOyJdrcR.js +57 -0
- package/storybook-static/assets/{TabsBox-B3REnb6D.css → TabsBox-DuBKU62M.css} +1 -1
- package/storybook-static/assets/{TabsBox-Ovukgo9G.js → TabsBox-n38x7_yO.js} +1 -1
- package/storybook-static/assets/{TagInput-BQBOGr9G.js → TagInput-j4mVWIf0.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-DAAyJlgm.js → TagInput.stories-DSU97IRU.js} +1 -1
- package/storybook-static/assets/{Text-fdwuak_J.js → Text-COGTV38X.js} +1 -1
- package/storybook-static/assets/{Textarea-A22Efyk-.js → Textarea-BcgmS9aD.js} +1 -1
- package/storybook-static/assets/{Textarea-D80ZPpEy.js → Textarea-Byqjr2Ve.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-DfaOYMoN.js → Textarea.stories-D1gXsWxK.js} +1 -1
- package/storybook-static/assets/{TimePanel-Bd5T_SfL.js → TimePanel-DzFFLXJP.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-D6TIpKp4.js → TimePanel.stories-287q5ipF.js} +1 -1
- package/storybook-static/assets/{Toggle-BvHMq6f_.js → Toggle-CCkzi_xC.js} +1 -1
- package/storybook-static/assets/{Toggle-DUyCRH0o.js → Toggle-KtpVC-vX.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-ZPgC-EWw.js → Toggle.stories-BLKa6Zst.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-DTMybWfP.js → TreeMultiSelect-CbnCiXFa.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-DTmB9s8s.js → TreeMultiSelect-sYAglJIC.js} +2 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-1_HB74Gf.js → TreeMultiSelect.stories-DGw_tJQ5.js} +1 -1
- package/storybook-static/assets/TreePickerBase-ClWTQVKW.css +1 -0
- package/storybook-static/assets/TreePickerBase-wz0-Y-eg.js +76 -0
- package/storybook-static/assets/{TreeSelect-CTN6cRRr.js → TreeSelect-BCOJNrl1.js} +1 -1
- package/storybook-static/assets/{TreeSelect-UsZGYhUO.js → TreeSelect-BJ6C_2pM.js} +2 -1
- package/storybook-static/assets/{TreeSelect.stories-B01pZcR9.js → TreeSelect.stories-DKdmUNAI.js} +1 -1
- package/storybook-static/assets/{TreeTable-dr3jK3Ih.js → TreeTable-DIRsmeC8.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-B1DPasDc.js → TreeTable.stories-BfqeLJU6.js} +1 -1
- package/storybook-static/assets/{blocks-Cw5Dm88b.js → blocks-r6nP1Mk3.js} +3 -3
- package/storybook-static/assets/{check-028VTQ8f.js → check-CX66-EtS.js} +1 -1
- package/storybook-static/assets/{chevron-down-CjXVIhzi.js → chevron-down-BpTVPmXw.js} +1 -1
- package/storybook-static/assets/{chevron-left-CktI1oFP.js → chevron-left-BDyvowID.js} +1 -1
- package/storybook-static/assets/{chevron-right-CF10QSRI.js → chevron-right-PitONC71.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-C0ehDnCq.js → chunk-W22LQPXL-Bd54JRSO.js} +1 -1
- package/storybook-static/assets/{circle-alert-s0HpHvQO.js → circle-alert-BxfK632o.js} +1 -1
- package/storybook-static/assets/{circle-check-C7Lv1fv9.js → circle-check-CQ0mrCVh.js} +1 -1
- package/storybook-static/assets/{components-ClxgOUq5.js → components-CJIwocXl.js} +3 -3
- package/storybook-static/assets/contextMenu-BodN1HdA.js +2 -0
- package/storybook-static/assets/{download-B1U5w3LU.js → download-C_lZf2f4.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-CyNWkXBV.js → floating-ui.react-BzwQR5CG.js} +1 -1
- package/storybook-static/assets/{foundationApi-CY0sxk8w.js → foundationApi-BgE0geET.js} +1 -1
- package/storybook-static/assets/{foundationLib-BCpSUA25.js → foundationLib-6nKeXUFS.js} +1 -1
- package/storybook-static/assets/{hooks-DjR-EyBl.js → hooks-DDySZJGR.js} +1 -1
- package/storybook-static/assets/{iframe-woVbsQH3.js → iframe-B9PXVErw.js} +4 -4
- package/storybook-static/assets/iframe-f5g4GUQw.js +1 -0
- package/storybook-static/assets/{info-DKbXBIbQ.js → info-rdW9neC9.js} +1 -1
- package/storybook-static/assets/{odata-CMCuN2Rx.js → odata-D6cOAxLt.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-a4Q2PLas.js → odataStoryFixtures-CGQ31IO_.js} +1 -1
- package/storybook-static/assets/{react-D3CyilRt.js → react-BMktiE65.js} +1 -1
- package/storybook-static/assets/{refresh-cw-DXEJelAO.js → refresh-cw-CfKvrc1N.js} +1 -1
- package/storybook-static/assets/{settings-2-CKbiQBX8.js → settings-2-Drz-L5J9.js} +1 -1
- package/storybook-static/assets/sortable-BMuu2DRC.js +1 -0
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-CLptde2b.js → syntaxhighlighter-QEQV7K2Y-eBmofw1l.js} +1 -1
- package/storybook-static/assets/{trash-2-CPWRIQlJ.js → trash-2-DEbF1hh6.js} +1 -1
- package/storybook-static/assets/{triangle-alert-XjzWCHp5.js → triangle-alert--nwD_1ZX.js} +1 -1
- package/storybook-static/assets/{ui-FA-1R8mO.css → ui-Bpz_yxm8.css} +1 -1
- package/storybook-static/assets/{uiClasses-DNnVkKPr.js → uiClasses-Bar5W7-L.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-ZGFa3pdT.js → useODataSelectBase-DSOGiMIw.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-DAdLowou.js → useODataTreeData-Cn_XaKz_.js} +1 -1
- package/storybook-static/assets/usePickerQuery-B5ZZQg8g.js +1 -0
- package/storybook-static/assets/usePickerTriggerController-Cqy5IfOJ.js +6 -0
- package/storybook-static/assets/{x-D2Q9PGsq.js → x-DSHJbBBz.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/dist/advanced-search/index.d.ts +0 -3
- package/dist/advanced-search/index.d.ts.map +0 -1
- package/dist/advanced-search/index.js +0 -399
- package/dist/advanced-search/index.js.map +0 -1
- package/dist/advanced-search/lib/index.d.ts +0 -2
- package/dist/advanced-search/lib/index.d.ts.map +0 -1
- package/dist/advanced-search/lib/searchParts.d.ts +0 -3
- package/dist/advanced-search/lib/searchParts.d.ts.map +0 -1
- package/dist/advanced-search/model/index.d.ts +0 -5
- package/dist/advanced-search/model/index.d.ts.map +0 -1
- package/dist/advanced-search/model/types.d.ts +0 -55
- package/dist/advanced-search/model/types.d.ts.map +0 -1
- package/dist/advanced-search/model/useAdvancedSearch.d.ts +0 -11
- package/dist/advanced-search/model/useAdvancedSearch.d.ts.map +0 -1
- package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts +0 -6
- package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts.map +0 -1
- package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts +0 -13
- package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts.map +0 -1
- package/dist/advanced-search/ui/AdvancedSearchModal.d.ts +0 -23
- package/dist/advanced-search/ui/AdvancedSearchModal.d.ts.map +0 -1
- package/dist/advanced-search/ui/AdvancedSearchModalSession.d.ts +0 -16
- package/dist/advanced-search/ui/AdvancedSearchModalSession.d.ts.map +0 -1
- package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts +0 -9
- package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts.map +0 -1
- package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts +0 -9
- package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts.map +0 -1
- package/dist/advanced-search/ui/index.d.ts +0 -2
- package/dist/advanced-search/ui/index.d.ts.map +0 -1
- package/dist/chunks/CalendarView-Dm55k0bN.js.map +0 -1
- package/dist/chunks/badge-6mXO9BWP.js +0 -65
- package/dist/chunks/badge-6mXO9BWP.js.map +0 -1
- package/dist/chunks/button-DF21yxVp.js +0 -72
- package/dist/chunks/button-DF21yxVp.js.map +0 -1
- package/dist/chunks/context-menu-DgvXGCuI.js +0 -532
- package/dist/chunks/context-menu-DgvXGCuI.js.map +0 -1
- package/dist/chunks/flex-C7njxZ74.js +0 -207
- package/dist/chunks/flex-C7njxZ74.js.map +0 -1
- package/dist/chunks/grid-dI94AAbi.js.map +0 -1
- package/dist/chunks/input-search-Cat4c7SM.js +0 -30
- package/dist/chunks/input-search-Cat4c7SM.js.map +0 -1
- package/dist/chunks/misc-DeGboAt-.js +0 -309
- package/dist/chunks/misc-DeGboAt-.js.map +0 -1
- package/dist/chunks/modal-dplfAaER.js.map +0 -1
- package/dist/chunks/multi-select-BZ9N6Dal.js +0 -466
- package/dist/chunks/multi-select-BZ9N6Dal.js.map +0 -1
- package/dist/chunks/picker-lvm82d0A.js +0 -439
- package/dist/chunks/picker-lvm82d0A.js.map +0 -1
- package/dist/chunks/popover-Bne-Ljbs.js +0 -245
- package/dist/chunks/popover-Bne-Ljbs.js.map +0 -1
- package/dist/chunks/radio-group-sSnlYjAX.js +0 -125
- package/dist/chunks/select-aTGupQan.js +0 -363
- package/dist/chunks/select-aTGupQan.js.map +0 -1
- package/dist/chunks/separator-B72Aq-6a.js +0 -15
- package/dist/chunks/separator-B72Aq-6a.js.map +0 -1
- package/storybook-static/assets/CalendarView-Dz8cY1fo.js +0 -1
- package/storybook-static/assets/ContextMenu-XS7B8QUC.js +0 -1
- package/storybook-static/assets/ContextMenu.stories-Dp2t2BZa.js +0 -37
- package/storybook-static/assets/CustomOptionButton-DNd0GDWp.js +0 -1
- package/storybook-static/assets/Detail.stories-CXg_w4qM.js +0 -56
- package/storybook-static/assets/DisclosureGroup-JNnTj18G.js +0 -2
- package/storybook-static/assets/DropdownMenu-xjOtBneA.js +0 -1
- package/storybook-static/assets/Flex.stories-CCVNsX23.js +0 -300
- package/storybook-static/assets/FlexContainer-BWyPlTMB.js +0 -1
- package/storybook-static/assets/FloatingPopover-D6tO24aO.js +0 -1
- package/storybook-static/assets/FormattedTableCell-CDaDfaXy.js +0 -15
- package/storybook-static/assets/Listbox-3Npc4PI_.js +0 -1
- package/storybook-static/assets/Modal-Ddmc8-2-.js +0 -1
- package/storybook-static/assets/MultiSelect-BkLCM22R.js +0 -2
- package/storybook-static/assets/MultiSelect-DI_UD1B-.css +0 -1
- package/storybook-static/assets/NoData-bUonNuRR.js +0 -1
- package/storybook-static/assets/OneStepScroller-B_IRz2Rw.js +0 -5
- package/storybook-static/assets/Option-fRoOLqLF.js +0 -10
- package/storybook-static/assets/OptionButton--hnpJ-88.js +0 -1
- package/storybook-static/assets/PickerTriggerActions-BDGEQPvP.js +0 -1
- package/storybook-static/assets/Popover-BYO0DlBg.js +0 -45
- package/storybook-static/assets/Popover-Byy9_Twt.js +0 -2
- package/storybook-static/assets/Popover.stories-8RhemIQg.js +0 -47
- package/storybook-static/assets/RadioButton-DMn-soQD.js +0 -1
- package/storybook-static/assets/Scrollable-BI3OE8gc.js +0 -1
- package/storybook-static/assets/Select-1MNiFkxm.js +0 -12
- package/storybook-static/assets/Slider-DbiDvmoV.js +0 -1
- package/storybook-static/assets/SliderInput-CzYn9gor.js +0 -2
- package/storybook-static/assets/Sortable.stories-DFCzTok0.js +0 -44
- package/storybook-static/assets/Tabs.stories-BdZilcp2.js +0 -57
- package/storybook-static/assets/TreePickerBase-CmFF9pWE.css +0 -1
- package/storybook-static/assets/TreePickerBase-Cu2mneBS.js +0 -76
- package/storybook-static/assets/contextMenu-CWGju9qn.js +0 -2
- package/storybook-static/assets/iframe-Dyd6jnSv.js +0 -1
- package/storybook-static/assets/sortable-CXLU2ip-.js +0 -1
- package/storybook-static/assets/usePickerQuery-CaO8hXyH.js +0 -1
- package/storybook-static/assets/usePickerTriggerController-DWjrt_q_.js +0 -6
- /package/storybook-static/assets/{ui.module-CyEEibCu.js → ui.module-0uniSGT-.js} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-select-BZ9N6Dal.js","names":[],"sources":["../../src/multi-select/ui/MultiSelect.module.scss","../../src/multi-select/ui/MultiSelectOptionSkeleton.tsx","../../src/multi-select/ui/MultiSelect.tsx","../../src/multi-select/model/useODataMultiSelect.ts","../../src/multi-select/ui/ODataMultiSelect.tsx","../../src/multi-select/ui/ODataDependentSegmentMultiSelect.tsx","../../src/multi-select/ui/ODataDependentMultiSelect.tsx","../../src/multi-select/ui/SerializableMultiSelect.tsx"],"sourcesContent":["@use \"@/styles/mixins\" as *;\n\n.multiSelect {\n\t// Общий контейнер\n\tpadding: 0;\n}\n\n.optionCheckBox {\n\tdisplay: inline-flex;\n\tflex-shrink: 0;\n\n\t--check-box-control-size: auto;\n\tpadding-left: var(--space-sm);\n}\n","import { Text } from \"../../text\";\nimport uiStyles from \"../../ui.module.scss\";\n\ninterface MultiSelectOptionSkeletonProps {\n\ttext: string;\n\tisError?: boolean;\n}\n\n/**\n * Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.\n */\nexport function MultiSelectOptionSkeleton({ text, isError }: MultiSelectOptionSkeletonProps) {\n\treturn (\n\t\t<div className={uiStyles.uiPopupOption}>\n\t\t\t<span className={uiStyles.uiPopupOptionIcon}></span>\n\t\t\t<Text color={isError ? \"error\" : \"primary\"}>{text}</Text>\n\t\t</div>\n\t);\n}\n","import React, { forwardRef, type PropsWithChildren, useCallback, useMemo, useRef, useState } from \"react\";\n\nimport { CheckBox } from \"../../check-box\";\nimport { Option, OptionButton } from \"../../option\";\nimport {\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTrigger,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerSelectionLifecycle,\n\tusePickerTriggerController\n} from \"../../picker\";\nimport { Separator } from \"../../separator\";\nimport { type UiBaseProps } from \"../../types\";\n\nimport { createDefaultMultiSelectItemRenderer, createDefaultMultiSelectTokenRenderer, resolveMultiSelectTextKey } from \"./defaultRenderers\";\nimport styles from \"./MultiSelect.module.scss\";\nimport { MultiSelectOptionSkeleton } from \"./MultiSelectOptionSkeleton\";\n\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\ninterface MultiSelectOptionsProps extends PropsWithChildren {\n\tisNoData?: boolean;\n\t// isLoading?: boolean;\n\terror?: string;\n}\n\nfunction MultiSelectOptionsWrapper({ isNoData, error, children }: MultiSelectOptionsProps) {\n\tif (isNoData) return <PickerStatus emptyState={<MultiSelectOptionSkeleton text=\"Нет данных\" />} />;\n\t// if (isLoading) return <PickerStatus loadingState={<MultiSelectOptionSkeleton text=\"Загрузка...\" />} />;\n\tif (error) return <PickerStatus errorState={<MultiSelectOptionSkeleton isError text=\"Ошибка загрузки\" />} />;\n\n\treturn <>{children}</>;\n}\n\nexport interface MultiSelectItemState {\n\tselected: boolean;\n\tactive: boolean;\n\tdisabled: boolean;\n\tquery: string;\n\thighlightQuery: string;\n}\n\n/**\n * Структурированное содержимое опции множественного выбора. `MultiSelect` владеет\n * интерактивной оболочкой и checkbox-слотом, а renderer отвечает только за данные\n * текстовой части, поэтому единая композиция `OptionButton` сохраняется и для\n * произвольного ReactNode.\n */\nexport interface MultiSelectOptionContent {\n\ttext: string;\n\tcode: string | undefined;\n}\n\nexport interface MultiSelectRenderContext {\n\tselectedItems: CollectionItem[];\n\tcommittedSelectedItems: CollectionItem[];\n\tavailableItems: CollectionItem[];\n\tquery: string;\n\topen: boolean;\n\tclearSelection: () => void;\n\tselectAll: () => void;\n\tdeselectAll: () => void;\n}\n\nexport interface MultiSelectOptionDisableContext {\n\tselectedItems: CollectionItem[];\n\tcommittedSelectedItems: CollectionItem[];\n\tselectedKeys: ReadonlySet<string>;\n\topen: boolean;\n}\n\ntype MultiSelectOptionalRenderer<TContext> = ((context: TContext) => React.ReactNode) | null | false;\n\ninterface MultiSelectRenderers {\n\trenderToken?: MultiSelectOptionalRenderer<MultiSelectRenderContext>;\n\trenderToolbar?: MultiSelectOptionalRenderer<MultiSelectRenderContext>;\n\trenderItem?: (item: CollectionItem, state: MultiSelectItemState) => MultiSelectOptionContent;\n}\n\nexport interface MultiSelectProps<TOption extends Record<string, string> = CollectionItem>\n\textends MultiSelectRenderers, UiBaseProps<TOption[]> {\n\tcodeKey: string;\n\ttextKey?: string;\n\thideCode?: boolean;\n\tquery?: string;\n\tdefaultQuery?: string;\n\thighlightQuery?: string;\n\tonQuery?: (value: string) => void;\n\tdefaultFilter?: boolean;\n\titems: TOption[];\n\tgetOptionDisabled?: (item: TOption, context: MultiSelectOptionDisableContext) => boolean;\n\tonOpen?: () => void;\n\tonClose?: (value: TOption[]) => void;\n\terror?: string;\n\tisLoading?: boolean;\n}\n\nconst fallback: CollectionItem[] = [];\n\nfunction getItemKey(item: CollectionItem, codeKey: string) {\n\treturn item[codeKey];\n}\n\nfunction getItemSearchParts(item: CollectionItem, codeKey: string, textKey: string) {\n\treturn Array.from(new Set([item[textKey], item[codeKey], ...Object.values(item)]));\n}\n\nfunction areSelectionsEqual(left: CollectionItem[], right: CollectionItem[], codeKey: string) {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tconst rightKeys = new Set(right.map((item) => getItemKey(item, codeKey)));\n\n\treturn left.every((item) => rightKeys.has(getItemKey(item, codeKey)));\n}\n\ninterface MultiSelectOptionEntry {\n\titem: CollectionItem;\n\tindex: number;\n}\n\ninterface MultiSelectOptionGroupProps {\n\tentries: MultiSelectOptionEntry[];\n\tlistId: string;\n\tactiveIndex: number;\n\tselectedKeys: Set<string>;\n\tcodeKey: string;\n\tquery: string;\n\thighlightQuery: string;\n\tgetOptionDisabled?: (item: CollectionItem) => boolean;\n\tgetOptionId: (listId: string, index: number) => string;\n\tsetOptionRef: (index: number, node: HTMLElement | null) => void;\n\ttoggleOption: (item: CollectionItem) => void;\n\tselectOnlyOption: (item: CollectionItem) => void;\n\trenderItem: (item: CollectionItem, state: MultiSelectItemState) => MultiSelectOptionContent;\n}\n\nfunction MultiSelectOptionGroup({\n\tentries,\n\tlistId,\n\tactiveIndex,\n\tselectedKeys,\n\tcodeKey,\n\tquery,\n\thighlightQuery,\n\tgetOptionDisabled,\n\tgetOptionId,\n\tsetOptionRef,\n\ttoggleOption,\n\tselectOnlyOption,\n\trenderItem\n}: MultiSelectOptionGroupProps) {\n\treturn entries.map(({ item, index }) => {\n\t\tconst active = index === activeIndex;\n\t\tconst itemKey = getItemKey(item, codeKey);\n\t\tconst selected = selectedKeys.has(itemKey);\n\t\tconst optionDisabled = getOptionDisabled?.(item) ?? false;\n\t\tconst content = renderItem(item, { selected, active, disabled: optionDisabled, query, highlightQuery });\n\n\t\treturn (\n\t\t\t<Option\n\t\t\t\tkey={`${itemKey}-${index}`}\n\t\t\t\tid={getOptionId(listId, index)}\n\t\t\t\tref={(node) => setOptionRef(index, node)}\n\t\t\t\trole=\"option\"\n\t\t\t\taria-selected={selected}\n\t\t\t\taria-disabled={optionDisabled || undefined}\n\t\t\t\tselected={selected}\n\t\t\t\tactive={active}\n\t\t\t\tdisabled={optionDisabled}>\n\t\t\t\t<div\n\t\t\t\t\tclassName={styles.optionCheckBox}\n\t\t\t\t\tonMouseDown={(event) => event.stopPropagation()}\n\t\t\t\t\tonClick={(event) => event.stopPropagation()}>\n\t\t\t\t\t<CheckBox\n\t\t\t\t\t\tvalue={selected}\n\t\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\t\taria-label={`Выбрать ${highlightQuery ?? itemKey}`}\n\t\t\t\t\t\tonChange={() => toggleOption(item)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<OptionButton\n\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\tdisabled={optionDisabled}\n\t\t\t\t\ttext={content.text}\n\t\t\t\t\tcode={content.code}\n\t\t\t\t\tsearchText={highlightQuery}\n\t\t\t\t\tonMouseDown={(event) => event.preventDefault()}\n\t\t\t\t\tonClick={() => selectOnlyOption(item)}\n\t\t\t\t/>\n\t\t\t</Option>\n\t\t);\n\t});\n}\n\n/**\n * Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.\n * Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.\n */\nexport const MultiSelect = forwardRef<HTMLInputElement, MultiSelectProps>(\n\t(\n\t\t{\n\t\t\tcodeKey,\n\t\t\ttextKey,\n\t\t\thideCode,\n\t\t\titems,\n\t\t\tvalue,\n\t\t\tonChange,\n\t\t\tlabel,\n\t\t\tdescription,\n\t\t\tplaceholder,\n\t\t\tsize,\n\t\t\tquery,\n\t\t\tdefaultQuery,\n\t\t\thighlightQuery,\n\t\t\tonQuery,\n\t\t\tdefaultFilter = true,\n\t\t\tonOpen,\n\t\t\tonClose,\n\t\t\tgetOptionDisabled,\n\t\t\tdisabled,\n\t\t\terror,\n\t\t\tisLoading,\n\t\t\trenderToken,\n\t\t\trenderToolbar,\n\t\t\trenderItem\n\t\t},\n\t\tref\n\t) => {\n\t\tconst inputRef = useRef<HTMLInputElement | null>(null);\n\t\tconst [open, setOpen] = useState(false);\n\t\tconst triggerMode = \"search-multi\";\n\t\tconst committedSelectedItems = value ?? fallback;\n\t\tconst committedSelectedKeys = useMemo(\n\t\t\t() => new Set(committedSelectedItems.map((item) => getItemKey(item, codeKey))),\n\t\t\t[codeKey, committedSelectedItems]\n\t\t);\n\t\tconst availableItems = useMemo(\n\t\t\t() => items.filter((item) => !committedSelectedKeys.has(getItemKey(item, codeKey))),\n\t\t\t[codeKey, committedSelectedKeys, items]\n\t\t);\n\t\tconst resolvedTextKey = useMemo(\n\t\t\t() => resolveMultiSelectTextKey([...committedSelectedItems, ...items], codeKey, textKey),\n\t\t\t[codeKey, committedSelectedItems, items, textKey]\n\t\t);\n\t\tconst {\n\t\t\tquery: currentQuery,\n\t\t\tsetQuery,\n\t\t\tresetQueryOnClose\n\t\t} = usePickerQuery({\n\t\t\tquery,\n\t\t\tdefaultQuery,\n\t\t\tonQuery,\n\t\t\ttriggerMode\n\t\t});\n\t\tconst handleOpenChange = (nextOpen: boolean) => {\n\t\t\tif (open && !nextOpen && resetQueryOnClose) {\n\t\t\t\tsetQuery(\"\");\n\t\t\t}\n\n\t\t\tsetOpen(nextOpen);\n\t\t};\n\t\tconst filteredCommittedSelectedItems = usePickerDefaultFilter({\n\t\t\toptions: committedSelectedItems,\n\t\t\tquery: currentQuery,\n\t\t\tenabled: defaultFilter,\n\t\t\tgetSearchText: (item) => getItemSearchParts(item, codeKey, resolvedTextKey)\n\t\t});\n\t\tconst filteredAvailableItems = usePickerDefaultFilter({\n\t\t\toptions: availableItems,\n\t\t\tquery: currentQuery,\n\t\t\tenabled: defaultFilter,\n\t\t\tgetSearchText: (item) => getItemSearchParts(item, codeKey, resolvedTextKey)\n\t\t});\n\t\tconst visibleOptions = useMemo(\n\t\t\t() => [...filteredCommittedSelectedItems, ...filteredAvailableItems],\n\t\t\t[filteredAvailableItems, filteredCommittedSelectedItems]\n\t\t);\n\t\tconst selectedIndex = filteredCommittedSelectedItems.length > 0 ? 0 : -1;\n\t\tconst {\n\t\t\tdraftValue: draftSelectedItems,\n\t\t\tsetDraftValue: setDraftSelectedItems,\n\t\t\tprepareOpen\n\t\t} = usePickerSelectionLifecycle({\n\t\t\tvalue: committedSelectedItems,\n\t\t\topen,\n\t\t\tonCommit: onChange,\n\t\t\tonOpen,\n\t\t\tonClose,\n\t\t\tisEqual: (left, right) => areSelectionsEqual(left, right, codeKey)\n\t\t});\n\t\tconst selectedKeys = useMemo(\n\t\t\t() => new Set(draftSelectedItems.map((item) => getItemKey(item, codeKey))),\n\t\t\t[codeKey, draftSelectedItems]\n\t\t);\n\t\tconst optionDisableContext = useMemo<MultiSelectOptionDisableContext>(\n\t\t\t() => ({\n\t\t\t\tselectedItems: draftSelectedItems,\n\t\t\t\tcommittedSelectedItems,\n\t\t\t\tselectedKeys,\n\t\t\t\topen\n\t\t\t}),\n\t\t\t[committedSelectedItems, draftSelectedItems, open, selectedKeys]\n\t\t);\n\t\tconst isOptionDisabled = useCallback(\n\t\t\t(item: CollectionItem) => getOptionDisabled?.(item, optionDisableContext) ?? false,\n\t\t\t[getOptionDisabled, optionDisableContext]\n\t\t);\n\t\tconst {\n\t\t\tactiveIndex,\n\t\t\tcontext,\n\t\t\tfloatingStyles,\n\t\t\tgetFloatingProps,\n\t\t\tsetReference,\n\t\t\tsetFloating,\n\t\t\tsetOptionRef,\n\t\t\tclose,\n\t\t\topenList,\n\t\t\ttoggleOpen,\n\t\t\tselectActiveOption,\n\t\t\thandleReferenceKeyDown,\n\t\t\thandleFloatingKeyDown,\n\t\t\tgetOptionId,\n\t\t\tgetActiveOptionId\n\t\t} = usePickerFloatingListbox({\n\t\t\toptions: visibleOptions,\n\t\t\tselectedIndex,\n\t\t\topen,\n\t\t\tonOpenChange: handleOpenChange,\n\t\t\tonSelect: undefined,\n\t\t\tdisabled,\n\t\t\tgetOptionDisabled: isOptionDisabled,\n\t\t\tcloseOnSelect: false,\n\t\t\tallowOpenWithoutOptions: true,\n\t\t\ttriggerMode\n\t\t});\n\n\t\tconst currentHighlightQuery = highlightQuery ?? currentQuery;\n\t\tconst toggleDraftSelection = (item: CollectionItem) => {\n\t\t\tconst itemKey = getItemKey(item, codeKey);\n\n\t\t\tsetDraftSelectedItems((currentItems) => {\n\t\t\t\tconst isSelected = currentItems.some((selectedItem) => getItemKey(selectedItem, codeKey) === itemKey);\n\n\t\t\t\tif (isSelected) {\n\t\t\t\t\treturn currentItems.filter((selectedItem) => getItemKey(selectedItem, codeKey) !== itemKey);\n\t\t\t\t}\n\n\t\t\t\tif (isOptionDisabled(item)) {\n\t\t\t\t\treturn currentItems;\n\t\t\t\t}\n\n\t\t\t\treturn [...currentItems, item];\n\t\t\t});\n\t\t};\n\n\t\tconst setInputNode = (node: HTMLInputElement | null) => {\n\t\t\tinputRef.current = node;\n\n\t\t\tif (typeof ref === \"function\") {\n\t\t\t\tref(node);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (ref) {\n\t\t\t\tref.current = node;\n\t\t\t}\n\t\t};\n\n\t\tconst clearSelection = () => {\n\t\t\tsetDraftSelectedItems([]);\n\n\t\t\tif (!open) {\n\t\t\t\tonChange([]);\n\t\t\t}\n\t\t};\n\n\t\tconst selectAll = () => {\n\t\t\tsetDraftSelectedItems((currentItems) => {\n\t\t\t\tconst nextItems = [...currentItems];\n\t\t\t\tconst selectedKeys = new Set(currentItems.map((item) => getItemKey(item, codeKey)));\n\n\t\t\t\tfor (const item of visibleOptions) {\n\t\t\t\t\tconst itemKey = getItemKey(item, codeKey);\n\n\t\t\t\t\tif (!selectedKeys.has(itemKey) && !isOptionDisabled(item)) {\n\t\t\t\t\t\tselectedKeys.add(itemKey);\n\t\t\t\t\t\tnextItems.push(item);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn nextItems;\n\t\t\t});\n\t\t};\n\n\t\tconst deselectAll = () => {\n\t\t\tsetDraftSelectedItems([]);\n\t\t};\n\n\t\tconst selectOnlyOption = (item: CollectionItem) => {\n\t\t\tif (isOptionDisabled(item)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetDraftSelectedItems([item]);\n\t\t\tclose();\n\t\t};\n\n\t\tconst currentSelectedItems = open ? draftSelectedItems : committedSelectedItems;\n\t\tconst hasSelectedItems = currentSelectedItems.length > 0;\n\t\tconst renderContext: MultiSelectRenderContext = {\n\t\t\tselectedItems: currentSelectedItems,\n\t\t\tcommittedSelectedItems,\n\t\t\tavailableItems: filteredAvailableItems,\n\t\t\tquery: currentQuery,\n\t\t\topen,\n\t\t\tclearSelection,\n\t\t\tselectAll,\n\t\t\tdeselectAll\n\t\t};\n\t\tconst tokenRenderer =\n\t\t\trenderToken === undefined ? createDefaultMultiSelectTokenRenderer({ codeKey, textKey: resolvedTextKey }) : renderToken;\n\t\tconst itemRenderer =\n\t\t\trenderItem ??\n\t\t\tcreateDefaultMultiSelectItemRenderer({\n\t\t\t\tcodeKey,\n\t\t\t\ttextKey: resolvedTextKey,\n\t\t\t\thideCode\n\t\t\t});\n\t\tconst tokenNode = typeof tokenRenderer === \"function\" ? tokenRenderer(renderContext) : null;\n\t\tconst toolbarNode = typeof renderToolbar === \"function\" ? renderToolbar(renderContext) : renderToolbar;\n\t\tconst selectedEntries = filteredCommittedSelectedItems.map((item, index) => ({ item, index }));\n\t\tconst itemEntries = filteredAvailableItems.map((item, index) => ({ item, index: index + selectedEntries.length }));\n\t\tconst isNoData = !isLoading && !error && visibleOptions.length === 0;\n\t\tconst triggerController = usePickerTriggerController({\n\t\t\tmode: triggerMode,\n\t\t\topen,\n\t\t\tcurrentQuery,\n\t\t\thasDisplayValue: false,\n\t\t\tinputRef,\n\t\t\tsetQuery,\n\t\t\topenList,\n\t\t\tclose,\n\t\t\ttoggleOpen,\n\t\t\tonBeforeOpen: () => {\n\t\t\t\tif (!open) {\n\t\t\t\t\tprepareOpen();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn (\n\t\t\t<PickerField label={label} description={description} disabled={disabled} size={size} className={styles.multiSelect}>\n\t\t\t\t{({ controlId, labelId, describedBy }) => {\n\t\t\t\t\tconst listId = `${controlId}-listbox`;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t<PickerTrigger\n\t\t\t\t\t\t\t\tref={setInputNode}\n\t\t\t\t\t\t\t\trootRef={setReference}\n\t\t\t\t\t\t\t\tid={controlId}\n\t\t\t\t\t\t\t\ttype=\"text\"\n\t\t\t\t\t\t\t\trole=\"combobox\"\n\t\t\t\t\t\t\t\tautoComplete=\"off\"\n\t\t\t\t\t\t\t\tisLoading={isLoading}\n\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\toptionCount={items.length}\n\t\t\t\t\t\t\t\tlabel={label}\n\t\t\t\t\t\t\t\tplaceholder={placeholder}\n\t\t\t\t\t\t\t\tplaceholderFallback=\"Выберите значения\"\n\t\t\t\t\t\t\t\tvalue={currentQuery}\n\t\t\t\t\t\t\t\tselectedValue={tokenNode}\n\t\t\t\t\t\t\t\thasSelection={hasSelectedItems}\n\t\t\t\t\t\t\t\tshowSelectedValue={hasSelectedItems && currentQuery.length === 0}\n\t\t\t\t\t\t\t\tclearable\n\t\t\t\t\t\t\t\tonClear={clearSelection}\n\t\t\t\t\t\t\t\tclearAriaLabel=\"Очистить все\"\n\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}\n\t\t\t\t\t\t\t\taria-labelledby={labelId}\n\t\t\t\t\t\t\t\taria-describedby={describedBy}\n\t\t\t\t\t\t\t\taria-haspopup=\"listbox\"\n\t\t\t\t\t\t\t\taria-expanded={open}\n\t\t\t\t\t\t\t\taria-controls={open ? listId : undefined}\n\t\t\t\t\t\t\t\taria-autocomplete=\"list\"\n\t\t\t\t\t\t\t\taria-activedescendant={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\t\trootClassName=\"flex alignItemsCenter\"\n\t\t\t\t\t\t\t\tonChange={(event) => {\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerInputChange(event.target.value);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonClick={triggerController.handleTriggerClick}\n\t\t\t\t\t\t\t\tonFocus={(event) => {\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerFocus(event.currentTarget);\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonKeyDown={(event) => {\n\t\t\t\t\t\t\t\t\thandleReferenceKeyDown(event);\n\n\t\t\t\t\t\t\t\t\tif (event.defaultPrevented) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\ttriggerController.handleTriggerKeyDown({\n\t\t\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\t\t\tonActivateWhenOpen: () => {\n\t\t\t\t\t\t\t\t\t\t\tif (activeIndex >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst activeItem = visibleOptions[activeIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tif (activeItem) {\n\t\t\t\t\t\t\t\t\t\t\t\t\ttoggleDraftSelection(activeItem);\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\tselectActiveOption();\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tenableClosedArrowDownOpen: true,\n\t\t\t\t\t\t\t\t\t\tsuppressClosedArrowUp: true\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t<PickerPopup\n\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\tcontext={context}\n\t\t\t\t\t\t\t\tfloatingStyles={floatingStyles}\n\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\tlabelId={labelId}\n\t\t\t\t\t\t\t\tdescriptionId={describedBy}\n\t\t\t\t\t\t\t\tactiveOptionId={open ? getActiveOptionId(listId) : undefined}\n\t\t\t\t\t\t\t\tsetFloating={setFloating}\n\t\t\t\t\t\t\t\tgetFloatingProps={getFloatingProps}\n\t\t\t\t\t\t\t\tonKeyDown={handleFloatingKeyDown}\n\t\t\t\t\t\t\t\tinitialFocus={-1}\n\t\t\t\t\t\t\t\treturnFocus={false}\n\t\t\t\t\t\t\t\ttabIndex={-1}\n\t\t\t\t\t\t\t\ttoolbar={toolbarNode}\n\t\t\t\t\t\t\t\tselectionActions={\n\t\t\t\t\t\t\t\t\trenderToolbar === undefined ? { onSelectAll: selectAll, onDeselectAll: deselectAll } : undefined\n\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t<MultiSelectOptionsWrapper isNoData={isNoData} error={error}>\n\t\t\t\t\t\t\t\t\t<div className=\"scrollable overscroll h100\">\n\t\t\t\t\t\t\t\t\t\t<MultiSelectOptionGroup\n\t\t\t\t\t\t\t\t\t\t\tentries={selectedEntries}\n\t\t\t\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\t\t\t\tactiveIndex={activeIndex}\n\t\t\t\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\t\t\t\tcodeKey={codeKey}\n\t\t\t\t\t\t\t\t\t\t\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionDisabled={isOptionDisabled}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionId={getOptionId}\n\t\t\t\t\t\t\t\t\t\t\tsetOptionRef={setOptionRef}\n\t\t\t\t\t\t\t\t\t\t\ttoggleOption={toggleDraftSelection}\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption={selectOnlyOption}\n\t\t\t\t\t\t\t\t\t\t\trenderItem={itemRenderer}\n\t\t\t\t\t\t\t\t\t\t/>\n\n\t\t\t\t\t\t\t\t\t\t{selectedEntries.length > 0 && availableItems.length > 0 && <Separator className=\"marginBlockSm\" />}\n\n\t\t\t\t\t\t\t\t\t\t<MultiSelectOptionGroup\n\t\t\t\t\t\t\t\t\t\t\tentries={itemEntries}\n\t\t\t\t\t\t\t\t\t\t\tlistId={listId}\n\t\t\t\t\t\t\t\t\t\t\tactiveIndex={activeIndex}\n\t\t\t\t\t\t\t\t\t\t\tselectedKeys={selectedKeys}\n\t\t\t\t\t\t\t\t\t\t\tcodeKey={codeKey}\n\t\t\t\t\t\t\t\t\t\t\tquery={currentQuery}\n\t\t\t\t\t\t\t\t\t\t\thighlightQuery={currentHighlightQuery}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionDisabled={isOptionDisabled}\n\t\t\t\t\t\t\t\t\t\t\tgetOptionId={getOptionId}\n\t\t\t\t\t\t\t\t\t\t\tsetOptionRef={setOptionRef}\n\t\t\t\t\t\t\t\t\t\t\ttoggleOption={toggleDraftSelection}\n\t\t\t\t\t\t\t\t\t\t\tselectOnlyOption={selectOnlyOption}\n\t\t\t\t\t\t\t\t\t\t\trenderItem={itemRenderer}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</MultiSelectOptionsWrapper>\n\t\t\t\t\t\t\t</PickerPopup>\n\t\t\t\t\t\t</>\n\t\t\t\t\t);\n\t\t\t\t}}\n\t\t\t</PickerField>\n\t\t);\n\t}\n);\n\nMultiSelect.displayName = \"MultiSelect\";\n","import { ODataCollectionModel, ODataSelectBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\n\nimport { mapSelectedItemsToValues, useODataSelectBase } from \"../../select/model/useODataSelectBase\";\n\ninterface UseODataMultiSelectOptions extends Omit<ODataSelectBaseProps, \"model\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tonChange: (keys: string[]) => void;\n}\n\nexport function useODataMultiSelect({ odata, segment, model, value, dependencies, onChange }: UseODataMultiSelectOptions) {\n\tconst odataModel = useODataSelectBase({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies\n\t});\n\n\tconst handleChange = (items: CollectionItem[]) => {\n\t\tonChange(mapSelectedItemsToValues(items, odataModel.selectionKey));\n\t};\n\n\treturn {\n\t\t...odataModel,\n\t\thandleChange\n\t};\n}\n","import React from \"react\";\n\nimport { ODataSelectBaseProps, useODataCollectionModel } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { UiBaseProps } from \"../../types\";\nimport { useODataMultiSelect } from \"../model/useODataMultiSelect\";\n\nimport { MultiSelect } from \"./MultiSelect\";\n\ntype ODataMultiSelectProps = ODataSelectBaseProps & Omit<UiBaseProps<string[]>, \"placeholder\"> & {};\n\nexport const ODataMultiSelect: React.FC<ODataMultiSelectProps> = ({\n\todata,\n\tsegment,\n\tmodel: initialModel,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tvalue,\n\tdependencies,\n\tonChange,\n\tsize\n}) => {\n\tconst model = useODataCollectionModel(initialModel);\n\tconst odataModel = useODataMultiSelect({\n\t\todata,\n\t\tsegment,\n\t\tmodel,\n\t\tvalue,\n\t\tdependencies,\n\t\tonChange\n\t});\n\n\treturn (\n\t\t<MultiSelect\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tsize={size}\n\t\t\tcodeKey={odataModel.codeKey}\n\t\t\ttextKey={odataModel.textKey}\n\t\t\thideCode={segment.hideCode ?? odata.hideCode}\n\t\t\titems={odataModel.filteredItems}\n\t\t\tvalue={odataModel.selectedItems}\n\t\t\tonChange={odataModel.handleChange}\n\t\t\tonQuery={odataModel.setQuery}\n\t\t\tquery={odataModel.query}\n\t\t\tdefaultFilter={false}\n\t\t\thighlightQuery={odataModel.debouncedQuery}\n\t\t\tisLoading={odataModel.isLoading}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\terror={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t/>\n\t);\n};\n","import { useCallback } from \"react\";\n\nimport { useODataDependentSelection } from \"../../odata-dependent\";\n\nimport { ODataMultiSelect } from \"./ODataMultiSelect\";\n\nimport type { ODataDependentSegmentControlProps } from \"../../odata-dependent\";\n\nexport type ODataDependentSegmentMultiSelectProps = ODataDependentSegmentControlProps;\n\nexport function ODataDependentSegmentMultiSelect(props: ODataDependentSegmentMultiSelectProps) {\n\tconst { item, disabled, label, description, size, width = 15 } = props;\n\tconst selection = useODataDependentSelection(props);\n\tconst { updateSegment } = selection;\n\tconst widthStyle = `calc(${width}em + var(--width-add))`;\n\n\tconst handleSelectionChange = useCallback(\n\t\t(keys: string[]) => {\n\t\t\tupdateSegment(item.id, keys);\n\t\t},\n\t\t[item.id, updateSegment]\n\t);\n\n\treturn (\n\t\t<div style={{ maxWidth: widthStyle, minWidth: widthStyle }}>\n\t\t\t<ODataMultiSelect\n\t\t\t\todata={item.odata}\n\t\t\t\tsegment={item.segment}\n\t\t\t\tmodel={item.model}\n\t\t\t\tdependencies={selection.values}\n\t\t\t\tvalue={selection.values[item.id]}\n\t\t\t\tonChange={handleSelectionChange}\n\t\t\t\tdisabled={disabled || selection.isSegmentDisabled(item.id)}\n\t\t\t\tlabel={label}\n\t\t\t\tdescription={description}\n\t\t\t\tsize={size}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { flattenODataDependentServices, type ODataDependentBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { useODataDependentSelection } from \"../../odata-dependent\";\n\nimport { ODataDependentSegmentMultiSelect } from \"./ODataDependentSegmentMultiSelect\";\n\nimport type { UseODataDependentSelectionOptions } from \"../../odata-dependent\";\n\nexport type ODataDependentMultiSelectProps = Omit<ODataDependentBaseProps, \"dependencies\" | \"value\"> &\n\tUseODataDependentSelectionOptions & {\n\t\t/**\n\t\t * Ширина одного элемента в `em` единицах.\n\t\t *\n\t\t * @default 15\n\t\t */\n\t\twidth?: number;\n\t};\n\nexport function ODataDependentMultiSelect(props: ODataDependentMultiSelectProps) {\n\tconst { width = 15, odata, segments, model, values, defaultValues, onChange, selectionMode, segmentOrder } = props;\n\tconst selection = useODataDependentSelection({ values, defaultValues, onChange });\n\tconst segmentSelectionProps =\n\t\tselectionMode === \"sequential\" ? { selectionMode: \"sequential\" as const, segmentOrder } : { selectionMode, segmentOrder };\n\tconst items = flattenODataDependentServices([\n\t\t{\n\t\t\todata,\n\t\t\tsegments,\n\t\t\tmodel\n\t\t}\n\t]);\n\n\treturn items.map((item) => (\n\t\t<ODataDependentSegmentMultiSelect\n\t\t\tkey={item.id}\n\t\t\titem={item}\n\t\t\tvalues={selection.values}\n\t\t\tonChange={selection.updateValues}\n\t\t\t{...segmentSelectionProps}\n\t\t\twidth={width}\n\t\t/>\n\t));\n}\n","import { MultiSelect } from \"./MultiSelect\";\n\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata-service\";\nimport type { UiBaseProps } from \"../../types\";\n\ntype SerializableOptionRecord = Record<string, unknown>;\n\ntype SerializableOptionKeyField<TOption extends SerializableOptionRecord> = {\n\t[K in keyof TOption]: Extract<TOption[K], string> extends never ? never : K;\n}[keyof TOption];\n\nexport interface SerializableMultiSelectProps<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n> extends UiBaseProps<Extract<TOption[TOptionKey], string>[]> {\n\toptions: readonly TOption[];\n\toptionKey: TOptionKey;\n\toptionLabel: TOptionLabel;\n\trenderCode?: true;\n}\n\nfunction getSerializableOptionKey<TOption extends SerializableOptionRecord, TOptionKey extends SerializableOptionKeyField<TOption>>(\n\toption: TOption,\n\toptionKey: TOptionKey\n): Extract<TOption[TOptionKey], string> {\n\treturn option[optionKey] as Extract<TOption[TOptionKey], string>;\n}\n\nfunction getSerializableOptionLabel<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>(option: TOption, optionLabel: TOptionLabel, optionKey: TOptionKey): string {\n\tconst label = option[optionLabel];\n\n\tif (typeof label === \"string\") {\n\t\treturn label;\n\t}\n\n\tconst key = getSerializableOptionKey(option, optionKey);\n\treturn typeof key === \"string\" ? key : String(key);\n}\n\nexport function SerializableMultiSelect<\n\tTOption extends SerializableOptionRecord,\n\tTOptionKey extends SerializableOptionKeyField<TOption>,\n\tTOptionLabel extends keyof TOption\n>({\n\tlabel,\n\tdescription,\n\tdisabled,\n\tplaceholder,\n\tsize,\n\toptions,\n\tvalue,\n\tonChange,\n\toptionKey,\n\toptionLabel,\n\trenderCode\n}: SerializableMultiSelectProps<TOption, TOptionKey, TOptionLabel>) {\n\t// Как будто можно не мемоизировать, нет смысла\n\tconst items = options.map<CollectionItem>((option) => ({\n\t\tkey: String(getSerializableOptionKey(option, optionKey)),\n\t\ttext: getSerializableOptionLabel(option, optionLabel, optionKey)\n\t}));\n\tconst selectedKeys = new Set((value ?? []).map((item) => String(item)));\n\tconst selectedItems = items.filter((item) => selectedKeys.has(item.key));\n\n\treturn (\n\t\t<MultiSelect\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={placeholder}\n\t\t\tsize={size}\n\t\t\titems={items}\n\t\t\tcodeKey=\"key\"\n\t\t\ttextKey=\"text\"\n\t\t\thideCode={renderCode ? undefined : true}\n\t\t\tvalue={selectedItems}\n\t\t\tonChange={(nextItems) => onChange(nextItems.map((item) => item.key) as Extract<TOption[TOptionKey], string>[])}\n\t\t/>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1,439 +0,0 @@
|
|
|
1
|
-
import { t as e } from "./ui.module-oRwY3Zli.js";
|
|
2
|
-
import { t } from "./grid-dI94AAbi.js";
|
|
3
|
-
import { a as n, c as r, d as i, i as a } from "./input-DSPKgiCK.js";
|
|
4
|
-
import { t as o } from "./separator-B72Aq-6a.js";
|
|
5
|
-
import { forwardRef as s, isValidElement as c, useEffect as l, useMemo as u, useRef as d, useState as f } from "react";
|
|
6
|
-
import { cn as p } from "@ryuzaki13/react-foundation-lib/utils";
|
|
7
|
-
import { FloatingFocusManager as m, FloatingPortal as h } from "@floating-ui/react";
|
|
8
|
-
import { Fragment as g, jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
9
|
-
import { ChevronDownIcon as y, XIcon as b } from "lucide-react";
|
|
10
|
-
import { useFloatingListbox as x } from "@ryuzaki13/react-foundation-lib/hooks";
|
|
11
|
-
import { normalizeTextToLower as S } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
12
|
-
import { AnimatePresence as C, motion as w } from "motion/react";
|
|
13
|
-
//#region src/picker/PickerField.tsx
|
|
14
|
-
function T({ id: e, label: t, description: n, disabled: a, size: o, className: s, error: c, children: l }) {
|
|
15
|
-
let { controlId: u, labelId: d, descriptionId: f, errorId: p, describedBy: m } = i({
|
|
16
|
-
id: e,
|
|
17
|
-
hasLabel: t != null,
|
|
18
|
-
hasDescription: !!n,
|
|
19
|
-
hasError: !!c
|
|
20
|
-
});
|
|
21
|
-
return /* @__PURE__ */ _(r, {
|
|
22
|
-
label: t,
|
|
23
|
-
description: n,
|
|
24
|
-
disabled: a,
|
|
25
|
-
size: o,
|
|
26
|
-
className: s,
|
|
27
|
-
error: c,
|
|
28
|
-
controlId: u,
|
|
29
|
-
labelId: d,
|
|
30
|
-
descriptionId: f,
|
|
31
|
-
errorId: p,
|
|
32
|
-
children: l({
|
|
33
|
-
controlId: u,
|
|
34
|
-
labelId: d,
|
|
35
|
-
descriptionId: f,
|
|
36
|
-
errorId: p,
|
|
37
|
-
describedBy: m
|
|
38
|
-
})
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
//#endregion
|
|
42
|
-
//#region src/picker/PickerClearButton.tsx
|
|
43
|
-
function E({ disabled: t, ariaLabel: n = "Очистить выбор", onClear: r }) {
|
|
44
|
-
let i = (e) => {
|
|
45
|
-
e.preventDefault(), e.stopPropagation();
|
|
46
|
-
};
|
|
47
|
-
return /* @__PURE__ */ _("button", {
|
|
48
|
-
type: "button",
|
|
49
|
-
disabled: t,
|
|
50
|
-
className: e.uiClearButton,
|
|
51
|
-
"data-ui": "picker-clear-button",
|
|
52
|
-
"data-action": "clear-picker",
|
|
53
|
-
onMouseDown: i,
|
|
54
|
-
onClick: (e) => {
|
|
55
|
-
i(e), r();
|
|
56
|
-
},
|
|
57
|
-
"aria-label": n,
|
|
58
|
-
children: /* @__PURE__ */ _(b, {})
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
var D = {
|
|
62
|
-
popupPositioner: "_81qOBF",
|
|
63
|
-
options: "Fj-KxT",
|
|
64
|
-
optionsToolbar: "tCn0CX",
|
|
65
|
-
optionsBody: "pP2yXa",
|
|
66
|
-
status: "bupTWA",
|
|
67
|
-
statusError: "GkeyGF",
|
|
68
|
-
triggerContainer: "_8F667e",
|
|
69
|
-
triggerHasClear: "RMwzIX",
|
|
70
|
-
selectedToken: "wvU2oL",
|
|
71
|
-
selectedTokenText: "efKX6F",
|
|
72
|
-
selectionActionButton: "OGMk6I"
|
|
73
|
-
};
|
|
74
|
-
//#endregion
|
|
75
|
-
//#region src/picker/PickerSelectionToolbar.tsx
|
|
76
|
-
function O({ onSelectAll: e, onDeselectAll: n, selectAllButtonRef: r }) {
|
|
77
|
-
return /* @__PURE__ */ v(t.Container, {
|
|
78
|
-
gap: "xs",
|
|
79
|
-
templateColumns: "1fr 1fr",
|
|
80
|
-
children: [/* @__PURE__ */ _("button", {
|
|
81
|
-
ref: r,
|
|
82
|
-
type: "button",
|
|
83
|
-
className: D.selectionActionButton,
|
|
84
|
-
onClick: e,
|
|
85
|
-
"data-ui": "picker-select-all",
|
|
86
|
-
"data-action": "select-all",
|
|
87
|
-
children: "Выбрать все"
|
|
88
|
-
}), /* @__PURE__ */ _("button", {
|
|
89
|
-
type: "button",
|
|
90
|
-
className: D.selectionActionButton,
|
|
91
|
-
onClick: n,
|
|
92
|
-
"data-ui": "picker-deselect-all",
|
|
93
|
-
"data-action": "deselect-all",
|
|
94
|
-
children: "Снять выбор"
|
|
95
|
-
})]
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
//#endregion
|
|
99
|
-
//#region src/picker/PickerOptions.tsx
|
|
100
|
-
function k({ rootRef: e, children: t, toolbar: n, selectionActions: r, layoutClassName: i, bodyClassName: a, scrollable: s = !0, className: c, ...l }) {
|
|
101
|
-
let u = n === void 0 && r ? /* @__PURE__ */ _(O, { ...r }) : n || null;
|
|
102
|
-
return /* @__PURE__ */ v("div", {
|
|
103
|
-
...l,
|
|
104
|
-
ref: e,
|
|
105
|
-
className: p(D.options, i, c),
|
|
106
|
-
"data-ui": "picker-options",
|
|
107
|
-
"data-has-toolbar": u ? "true" : void 0,
|
|
108
|
-
children: [u ? /* @__PURE__ */ v("div", {
|
|
109
|
-
className: D.optionsToolbar,
|
|
110
|
-
children: [u, /* @__PURE__ */ _(o, {})]
|
|
111
|
-
}) : null, /* @__PURE__ */ _("div", {
|
|
112
|
-
className: p(D.optionsBody, s ? "scrollable overscroll" : "overflowHidden", a),
|
|
113
|
-
children: t
|
|
114
|
-
})]
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
//#endregion
|
|
118
|
-
//#region src/picker/model/extractPickerTextContent.ts
|
|
119
|
-
function A(e) {
|
|
120
|
-
if (typeof e == "string" || typeof e == "number") return String(e);
|
|
121
|
-
if (Array.isArray(e)) {
|
|
122
|
-
let t = e.map(A).filter((e) => !!e).map((e) => e.trim()).filter(Boolean);
|
|
123
|
-
return t.length ? t.join(" ") : void 0;
|
|
124
|
-
}
|
|
125
|
-
if (c(e)) return typeof e.props.searchText == "string" ? e.props.searchText : A(e.props.children);
|
|
126
|
-
}
|
|
127
|
-
//#endregion
|
|
128
|
-
//#region src/picker/PickerPlaceholder.ts
|
|
129
|
-
function j({ placeholder: e, label: t, optionCount: n, fallback: r = "Выберите значение" }) {
|
|
130
|
-
let i = A(t);
|
|
131
|
-
return `${e ?? i ?? r} <${n}>`;
|
|
132
|
-
}
|
|
133
|
-
//#endregion
|
|
134
|
-
//#region src/picker/PickerPopup.tsx
|
|
135
|
-
function M(e) {
|
|
136
|
-
e.stopPropagation();
|
|
137
|
-
}
|
|
138
|
-
function N({ open: e, context: t, floatingStyles: n, listId: r, labelId: i, popupAriaLabel: a, descriptionId: o, activeOptionId: s, ariaMultiselectable: c, popupRole: l = "listbox", setFloating: u, getFloatingProps: d, onKeyDown: f, initialFocus: p = -1, returnFocus: g = !1, tabIndex: v = 0, className: y, maxWidth: b, layoutClassName: x, bodyClassName: S, toolbar: T, selectionActions: E, children: O }) {
|
|
139
|
-
return /* @__PURE__ */ _(C, { children: e && /* @__PURE__ */ _(h, { children: /* @__PURE__ */ _(m, {
|
|
140
|
-
context: t,
|
|
141
|
-
modal: !1,
|
|
142
|
-
initialFocus: p,
|
|
143
|
-
returnFocus: g,
|
|
144
|
-
children: /* @__PURE__ */ _(w.div, {
|
|
145
|
-
ref: u,
|
|
146
|
-
style: {
|
|
147
|
-
...n,
|
|
148
|
-
maxWidth: b
|
|
149
|
-
},
|
|
150
|
-
initial: {
|
|
151
|
-
opacity: 0,
|
|
152
|
-
scale: .95
|
|
153
|
-
},
|
|
154
|
-
animate: {
|
|
155
|
-
opacity: 1,
|
|
156
|
-
scale: 1
|
|
157
|
-
},
|
|
158
|
-
exit: {
|
|
159
|
-
opacity: 0,
|
|
160
|
-
scale: .95
|
|
161
|
-
},
|
|
162
|
-
...d({
|
|
163
|
-
id: r,
|
|
164
|
-
role: l,
|
|
165
|
-
tabIndex: v,
|
|
166
|
-
"aria-labelledby": i,
|
|
167
|
-
"aria-label": i ? void 0 : a,
|
|
168
|
-
"aria-describedby": o,
|
|
169
|
-
"aria-activedescendant": s,
|
|
170
|
-
"aria-multiselectable": c || void 0,
|
|
171
|
-
onMouseDown: M,
|
|
172
|
-
onKeyDown: f,
|
|
173
|
-
className: D.popupPositioner
|
|
174
|
-
}),
|
|
175
|
-
children: /* @__PURE__ */ _(k, {
|
|
176
|
-
className: y,
|
|
177
|
-
layoutClassName: x,
|
|
178
|
-
bodyClassName: S,
|
|
179
|
-
toolbar: T,
|
|
180
|
-
selectionActions: E,
|
|
181
|
-
scrollable: !1,
|
|
182
|
-
children: O
|
|
183
|
-
})
|
|
184
|
-
})
|
|
185
|
-
}) }) });
|
|
186
|
-
}
|
|
187
|
-
//#endregion
|
|
188
|
-
//#region src/picker/PickerSelectedToken.tsx
|
|
189
|
-
function P({ children: e, className: t, ...n }) {
|
|
190
|
-
return /* @__PURE__ */ _("span", {
|
|
191
|
-
...n,
|
|
192
|
-
className: p(D.selectedToken, t),
|
|
193
|
-
"data-ui": "picker-selected-token",
|
|
194
|
-
children: /* @__PURE__ */ _("span", {
|
|
195
|
-
className: D.selectedTokenText,
|
|
196
|
-
children: e
|
|
197
|
-
})
|
|
198
|
-
});
|
|
199
|
-
}
|
|
200
|
-
//#endregion
|
|
201
|
-
//#region src/picker/PickerStatus.tsx
|
|
202
|
-
function F({ emptyState: t, errorState: n }) {
|
|
203
|
-
let r = n ?? t;
|
|
204
|
-
return r == null ? null : /* @__PURE__ */ _("div", {
|
|
205
|
-
className: p(e.uiPopupOption, D.status, n !== void 0 && D.statusError),
|
|
206
|
-
"aria-disabled": !0,
|
|
207
|
-
children: r
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
//#endregion
|
|
211
|
-
//#region src/picker/PickerTriggerActions.tsx
|
|
212
|
-
function I({ open: t, disabled: n, children: r, onToggleMouseDown: i, onToggleClick: a, openAriaLabel: o = "Открыть список", closeAriaLabel: s = "Закрыть список" }) {
|
|
213
|
-
return /* @__PURE__ */ v("div", {
|
|
214
|
-
className: e.uiToggleButtonContainer,
|
|
215
|
-
"data-disabled": n || void 0,
|
|
216
|
-
children: [
|
|
217
|
-
r,
|
|
218
|
-
/* @__PURE__ */ _("div", { className: e.uiButtonSeparator }),
|
|
219
|
-
/* @__PURE__ */ _("button", {
|
|
220
|
-
type: "button",
|
|
221
|
-
disabled: n,
|
|
222
|
-
"aria-label": t ? s : o,
|
|
223
|
-
className: e.uiToggleButton,
|
|
224
|
-
onMouseDown: i,
|
|
225
|
-
onClick: a,
|
|
226
|
-
children: /* @__PURE__ */ _(y, { className: p(e.uiToggleIcon, t && e.uiToggleIconOpen) })
|
|
227
|
-
})
|
|
228
|
-
]
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
//#endregion
|
|
232
|
-
//#region src/picker/PickerTriggerInput.tsx
|
|
233
|
-
var L = s(({ rootRef: t, endAdornment: r, overlay: i, rootClassName: o, inputClassName: s, isLoading: c, ...l }, u) => {
|
|
234
|
-
let d = i != null;
|
|
235
|
-
return /* @__PURE__ */ _("div", {
|
|
236
|
-
ref: t,
|
|
237
|
-
className: p(e.uiInputContainer, D.triggerContainer, o),
|
|
238
|
-
"data-has-overlay": d || void 0,
|
|
239
|
-
children: c ? /* @__PURE__ */ _(n, {}) : /* @__PURE__ */ v(g, { children: [/* @__PURE__ */ _(a, {
|
|
240
|
-
endAdornment: r,
|
|
241
|
-
children: ({ controlClassName: t }) => /* @__PURE__ */ _("input", {
|
|
242
|
-
...l,
|
|
243
|
-
ref: u,
|
|
244
|
-
className: p(e.uiInputWithToggle, t, s)
|
|
245
|
-
})
|
|
246
|
-
}), d ? i : null] })
|
|
247
|
-
});
|
|
248
|
-
});
|
|
249
|
-
L.displayName = "PickerTriggerInput";
|
|
250
|
-
//#endregion
|
|
251
|
-
//#region src/picker/PickerTrigger.tsx
|
|
252
|
-
function R({ ref: e, open: t, optionCount: n, placeholder: r, label: i, placeholderFallback: a, selectedValue: o, hasSelection: s, showSelectedValue: c = o != null, clearable: l = !1, onClear: u, clearAriaLabel: d, onToggleMouseDown: f, onToggleClick: p, openAriaLabel: m, closeAriaLabel: h, disabled: g, inputClassName: v, ...y }) {
|
|
253
|
-
let b = l && (s ?? o != null) && u !== void 0 && !g;
|
|
254
|
-
return /* @__PURE__ */ _(L, {
|
|
255
|
-
...y,
|
|
256
|
-
ref: e,
|
|
257
|
-
disabled: g,
|
|
258
|
-
placeholder: c ? void 0 : j({
|
|
259
|
-
placeholder: r,
|
|
260
|
-
label: i,
|
|
261
|
-
optionCount: n,
|
|
262
|
-
fallback: a
|
|
263
|
-
}),
|
|
264
|
-
inputClassName: v,
|
|
265
|
-
rootClassName: l ? D.triggerHasClear : void 0,
|
|
266
|
-
overlay: c ? /* @__PURE__ */ _(P, { children: o }) : void 0,
|
|
267
|
-
endAdornment: /* @__PURE__ */ _(I, {
|
|
268
|
-
open: t,
|
|
269
|
-
disabled: g,
|
|
270
|
-
onToggleMouseDown: f,
|
|
271
|
-
onToggleClick: p,
|
|
272
|
-
openAriaLabel: m,
|
|
273
|
-
closeAriaLabel: h,
|
|
274
|
-
children: b ? /* @__PURE__ */ _(E, {
|
|
275
|
-
ariaLabel: d,
|
|
276
|
-
onClear: u
|
|
277
|
-
}) : null
|
|
278
|
-
})
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
//#endregion
|
|
282
|
-
//#region src/picker/model/createPickerTriggerPolicy.ts
|
|
283
|
-
function z(e) {
|
|
284
|
-
switch (e) {
|
|
285
|
-
case "search-single": return {
|
|
286
|
-
focusFloatingOnOpen: !1,
|
|
287
|
-
restoreFocusOnClose: !1,
|
|
288
|
-
resetQueryOnClose: !0,
|
|
289
|
-
shouldOpenOnTriggerClick: () => !1,
|
|
290
|
-
shouldOpenOnInputChange: (e) => !e,
|
|
291
|
-
shouldFocusReferenceOnToggle: (e) => !e,
|
|
292
|
-
shouldSelectTriggerTextOnFocus: ({ open: e, currentQuery: t, hasDisplayValue: n }) => !e && t.length === 0 && n
|
|
293
|
-
};
|
|
294
|
-
case "search-multi": return {
|
|
295
|
-
focusFloatingOnOpen: !1,
|
|
296
|
-
restoreFocusOnClose: !1,
|
|
297
|
-
resetQueryOnClose: !0,
|
|
298
|
-
shouldOpenOnTriggerClick: () => !1,
|
|
299
|
-
shouldOpenOnInputChange: (e) => !e,
|
|
300
|
-
shouldFocusReferenceOnToggle: (e) => !e,
|
|
301
|
-
shouldSelectTriggerTextOnFocus: () => !1
|
|
302
|
-
};
|
|
303
|
-
default: return {
|
|
304
|
-
focusFloatingOnOpen: !0,
|
|
305
|
-
restoreFocusOnClose: !0,
|
|
306
|
-
resetQueryOnClose: !1,
|
|
307
|
-
shouldOpenOnTriggerClick: (e) => !e,
|
|
308
|
-
shouldOpenOnInputChange: () => !1,
|
|
309
|
-
shouldFocusReferenceOnToggle: () => !1,
|
|
310
|
-
shouldSelectTriggerTextOnFocus: () => !1
|
|
311
|
-
};
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
//#endregion
|
|
315
|
-
//#region src/picker/model/usePickerDefaultFilter.ts
|
|
316
|
-
function B(e) {
|
|
317
|
-
return S((Array.isArray(e) ? e : [e]).filter(Boolean).join(" "));
|
|
318
|
-
}
|
|
319
|
-
function V({ options: e, query: t, enabled: n = !0, getSearchText: r }) {
|
|
320
|
-
let i = S(t);
|
|
321
|
-
return u(() => !n || !i ? [...e] : e.filter((e) => B(r(e)).includes(i)), [
|
|
322
|
-
n,
|
|
323
|
-
r,
|
|
324
|
-
i,
|
|
325
|
-
e
|
|
326
|
-
]);
|
|
327
|
-
}
|
|
328
|
-
//#endregion
|
|
329
|
-
//#region src/picker/model/usePickerFloatingListbox.ts
|
|
330
|
-
function H(e) {
|
|
331
|
-
let t = e.triggerMode ? z(e.triggerMode) : void 0;
|
|
332
|
-
return x({
|
|
333
|
-
...e,
|
|
334
|
-
focusFloatingOnOpen: e.focusFloatingOnOpen ?? t?.focusFloatingOnOpen,
|
|
335
|
-
restoreFocusOnClose: e.restoreFocusOnClose ?? t?.restoreFocusOnClose
|
|
336
|
-
});
|
|
337
|
-
}
|
|
338
|
-
//#endregion
|
|
339
|
-
//#region src/picker/model/usePickerQuery.ts
|
|
340
|
-
function U({ query: e, defaultQuery: t, onQuery: n, resetOnClose: r, triggerMode: i }) {
|
|
341
|
-
let a = e !== void 0, [o, s] = f(t ?? ""), c = a ? e ?? "" : o, l = r ?? (!i || z(i).resetQueryOnClose), u = (e) => {
|
|
342
|
-
a || s(e), n?.(e);
|
|
343
|
-
};
|
|
344
|
-
return {
|
|
345
|
-
query: c,
|
|
346
|
-
setQuery: u,
|
|
347
|
-
clearQuery: () => u(""),
|
|
348
|
-
resetQueryOnClose: l
|
|
349
|
-
};
|
|
350
|
-
}
|
|
351
|
-
//#endregion
|
|
352
|
-
//#region src/picker/model/usePickerSelectionLifecycle.ts
|
|
353
|
-
function W({ value: e, open: t, onCommit: n, onOpen: r, onClose: i, isEqual: a }) {
|
|
354
|
-
let o = d(!1), [s, c] = f(e);
|
|
355
|
-
return l(() => {
|
|
356
|
-
o.current && !t && (a(s, e) || n(s), i?.(s)), o.current = t;
|
|
357
|
-
}, [
|
|
358
|
-
s,
|
|
359
|
-
a,
|
|
360
|
-
i,
|
|
361
|
-
n,
|
|
362
|
-
t,
|
|
363
|
-
e
|
|
364
|
-
]), {
|
|
365
|
-
draftValue: s,
|
|
366
|
-
setDraftValue: c,
|
|
367
|
-
prepareOpen: () => {
|
|
368
|
-
c(e), r?.();
|
|
369
|
-
}
|
|
370
|
-
};
|
|
371
|
-
}
|
|
372
|
-
//#endregion
|
|
373
|
-
//#region src/picker/model/usePickerTriggerController.ts
|
|
374
|
-
function G(e) {
|
|
375
|
-
requestAnimationFrame(() => {
|
|
376
|
-
e.current?.focus();
|
|
377
|
-
});
|
|
378
|
-
}
|
|
379
|
-
function K({ mode: e, open: t, currentQuery: n, hasDisplayValue: r, inputRef: i, setQuery: a, openList: o, close: s, toggleOpen: c, onBeforeOpen: l }) {
|
|
380
|
-
let u = z(e), d = () => {
|
|
381
|
-
if (l?.(), o) {
|
|
382
|
-
o();
|
|
383
|
-
return;
|
|
384
|
-
}
|
|
385
|
-
c?.();
|
|
386
|
-
}, f = () => {
|
|
387
|
-
if (s) {
|
|
388
|
-
s();
|
|
389
|
-
return;
|
|
390
|
-
}
|
|
391
|
-
c?.();
|
|
392
|
-
}, p = () => {
|
|
393
|
-
t ? f() : d(), u.shouldFocusReferenceOnToggle(t) && G(i);
|
|
394
|
-
};
|
|
395
|
-
return {
|
|
396
|
-
policy: u,
|
|
397
|
-
handleTriggerInputChange: (e) => {
|
|
398
|
-
a?.(e), u.shouldOpenOnInputChange(t) && d();
|
|
399
|
-
},
|
|
400
|
-
handleTriggerClick: () => {
|
|
401
|
-
u.shouldOpenOnTriggerClick(t) && d();
|
|
402
|
-
},
|
|
403
|
-
handleTriggerFocus: (e) => {
|
|
404
|
-
u.shouldSelectTriggerTextOnFocus({
|
|
405
|
-
open: t,
|
|
406
|
-
currentQuery: n,
|
|
407
|
-
hasDisplayValue: r
|
|
408
|
-
}) && requestAnimationFrame(() => {
|
|
409
|
-
e.select();
|
|
410
|
-
});
|
|
411
|
-
},
|
|
412
|
-
handleToggleMouseDown: (e) => {
|
|
413
|
-
e.preventDefault();
|
|
414
|
-
},
|
|
415
|
-
handleToggleClick: () => {
|
|
416
|
-
p();
|
|
417
|
-
},
|
|
418
|
-
handleTriggerKeyDown: ({ event: e, onActivateWhenOpen: n, enableSpaceActivation: r = !1, enableClosedArrowDownOpen: i = !1, suppressClosedArrowUp: a = !1 }) => {
|
|
419
|
-
if (!t && a && e.key === "ArrowUp") {
|
|
420
|
-
e.preventDefault();
|
|
421
|
-
return;
|
|
422
|
-
}
|
|
423
|
-
if (!t && i && e.key === "ArrowDown") {
|
|
424
|
-
e.preventDefault(), p();
|
|
425
|
-
return;
|
|
426
|
-
}
|
|
427
|
-
if (e.key === "Enter") {
|
|
428
|
-
e.preventDefault(), t ? n?.() : p();
|
|
429
|
-
return;
|
|
430
|
-
}
|
|
431
|
-
r && e.key === " " && (e.preventDefault(), t ? n?.() : p());
|
|
432
|
-
},
|
|
433
|
-
toggleTrigger: p
|
|
434
|
-
};
|
|
435
|
-
}
|
|
436
|
-
//#endregion
|
|
437
|
-
export { E as _, V as a, L as c, P as d, N as f, O as g, k as h, H as i, I as l, A as m, W as n, z as o, j as p, U as r, R as s, K as t, F as u, T as v };
|
|
438
|
-
|
|
439
|
-
//# sourceMappingURL=picker-lvm82d0A.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"picker-lvm82d0A.js","names":[],"sources":["../../src/picker/PickerField.tsx","../../src/picker/PickerClearButton.tsx","../../src/picker/Picker.module.scss","../../src/picker/PickerSelectionToolbar.tsx","../../src/picker/PickerOptions.tsx","../../src/picker/model/extractPickerTextContent.ts","../../src/picker/PickerPlaceholder.ts","../../src/picker/PickerPopup.tsx","../../src/picker/PickerSelectedToken.tsx","../../src/picker/PickerStatus.tsx","../../src/picker/PickerTriggerActions.tsx","../../src/picker/PickerTriggerInput.tsx","../../src/picker/PickerTrigger.tsx","../../src/picker/model/createPickerTriggerPolicy.ts","../../src/picker/model/usePickerDefaultFilter.ts","../../src/picker/model/usePickerFloatingListbox.ts","../../src/picker/model/usePickerQuery.ts","../../src/picker/model/usePickerSelectionLifecycle.ts","../../src/picker/model/usePickerTriggerController.ts"],"sourcesContent":["import { InputType } from \"@ryuzaki13/react-foundation-lib/types\";\n\nimport { InputUI } from \"../input\";\nimport { useInputFieldIds } from \"../input/lib/useInputFieldIds\";\n\nimport { PickerFieldProps } from \"./types\";\n\nexport function PickerField<TValue extends InputType>({\n\tid,\n\tlabel,\n\tdescription,\n\tdisabled,\n\tsize,\n\tclassName,\n\terror,\n\tchildren\n}: PickerFieldProps<TValue>) {\n\tconst { controlId, labelId, descriptionId, errorId, describedBy } = useInputFieldIds({\n\t\tid,\n\t\thasLabel: label !== undefined && label !== null,\n\t\thasDescription: !!description,\n\t\thasError: !!error\n\t});\n\n\treturn (\n\t\t<InputUI\n\t\t\tlabel={label}\n\t\t\tdescription={description}\n\t\t\tdisabled={disabled}\n\t\t\tsize={size}\n\t\t\tclassName={className}\n\t\t\terror={error}\n\t\t\tcontrolId={controlId}\n\t\t\tlabelId={labelId}\n\t\t\tdescriptionId={descriptionId}\n\t\t\terrorId={errorId}>\n\t\t\t{children({ controlId, labelId, descriptionId, errorId, describedBy })}\n\t\t</InputUI>\n\t);\n}\n","import { type MouseEvent } from \"react\";\n\nimport { XIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ntype PickerClearButtonProps = {\n\tdisabled?: boolean;\n\tariaLabel?: string;\n\tonClear: () => void;\n};\n\n/** Единое действие очистки выбранного значения во всех clearable picker-компонентах. */\nexport function PickerClearButton({ disabled, ariaLabel = \"Очистить выбор\", onClear }: PickerClearButtonProps) {\n\tconst stopTriggerInteraction = (event: MouseEvent<HTMLButtonElement>) => {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t};\n\n\treturn (\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tdisabled={disabled}\n\t\t\tclassName={uiStyles.uiClearButton}\n\t\t\tdata-ui=\"picker-clear-button\"\n\t\t\tdata-action=\"clear-picker\"\n\t\t\tonMouseDown={stopTriggerInteraction}\n\t\t\tonClick={(event) => {\n\t\t\t\tstopTriggerInteraction(event);\n\t\t\t\tonClear();\n\t\t\t}}\n\t\t\taria-label={ariaLabel}>\n\t\t\t<XIcon />\n\t\t</button>\n\t);\n}\n","@use \"@/styles/mixins\" as *;\n\n.popupPositioner,\n.options {\n\toverflow: hidden;\n\tdisplay: grid;\n\tgrid-template-rows: minmax(0, 1fr);\n\tborder-radius: var(--radius-sm);\n}\n\n.popupPositioner {\n\t--anchor-gap: var(--space-xs);\n\t--anchor-padding: var(--space-xs);\n\t--anchor-offset: 0;\n\t// Минимальная ширина нужна только floating-панели. Встроенный Listbox получает ширину от UiBaseProps.size.\n\t--input-width: min(100vw, var(--base-width, 15em));\n\n\tmin-width: 0;\n\tz-index: var(--z-dropdown);\n\tbox-shadow: var(--shadow-md);\n\n\t.options {\n\t\tmin-width: var(--input-width);\n\t}\n}\n\n.options {\n\twidth: 100%;\n\tmin-height: 0;\n\tmax-height: 75vh;\n\n\tpadding: var(--space-sm);\n\tbackground-color: var(--surface-0);\n\tborder: var(--border);\n\n\t&:empty {\n\t\tvisibility: hidden;\n\t}\n\n\t&[data-has-toolbar=\"true\"] {\n\t\tgrid-template-rows: auto minmax(0, 1fr);\n\t}\n}\n\n.optionsToolbar {\n\tdisplay: grid;\n\tgap: var(--space-xs);\n\tpadding: var(--space-xs);\n}\n\n.optionsBody {\n\tmin-height: 0;\n}\n\n.status {\n\tpadding: var(--space-xs) var(--space-sm);\n\tcolor: var(--content-2);\n}\n\n.statusError {\n\tcolor: var(--error-text);\n}\n\n.triggerContainer {\n\tposition: relative;\n\n\t&[data-has-overlay=\"true\"] input {\n\t\t--ui-color: transparent;\n\t\t--ui-color-hover: transparent;\n\t\t--ui-color-active: transparent;\n\n\t\tcolor: transparent;\n\t\tcaret-color: transparent;\n\t\t-webkit-text-fill-color: transparent;\n\t}\n}\n\n.triggerHasClear {\n\t--trigger-count: 2;\n\t// Резервирует в input место для кнопок очистки и открытия списка.\n\t--input-end-adornment-width: calc(var(--control-height) * 2);\n}\n\n.selectedToken {\n\tposition: absolute;\n\tinset: 0 calc(var(--control-height) * var(--trigger-count, 1) + var(--space-sm)) 0 var(--space-sm);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\tmin-width: 0;\n\tpointer-events: none;\n}\n\n.selectedTokenText {\n\toverflow: hidden;\n\twhite-space: nowrap;\n\ttext-overflow: ellipsis;\n}\n\n@include mobile {\n\t.popupPositioner {\n\t\t--input-width: calc(100dvw - var(--space-xl));\n\t}\n}\n\n.selectionActionButton {\n\tpadding-block: var(--space-xs);\n\tborder-radius: var(--radius-sm);\n\n\t&:hover {\n\t\tbackground-color: var(--surface-2);\n\t}\n}\n","import { type Ref } from \"react\";\n\nimport { Grid } from \"../grid\";\n\nimport styles from \"./Picker.module.scss\";\n\ntype PickerSelectionToolbarProps = {\n\tonSelectAll: () => void;\n\tonDeselectAll: () => void;\n\tselectAllButtonRef?: Ref<HTMLButtonElement>;\n};\n\n/**\n * Общая панель массовых действий для picker-компонентов с множественным выбором.\n * Компонент не знает формат значения и делегирует изменение владельцу selection-модели.\n */\nexport function PickerSelectionToolbar({ onSelectAll, onDeselectAll, selectAllButtonRef }: PickerSelectionToolbarProps) {\n\treturn (\n\t\t<Grid.Container gap=\"xs\" templateColumns=\"1fr 1fr\">\n\t\t\t<button\n\t\t\t\tref={selectAllButtonRef}\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={styles.selectionActionButton}\n\t\t\t\tonClick={onSelectAll}\n\t\t\t\tdata-ui=\"picker-select-all\"\n\t\t\t\tdata-action=\"select-all\">\n\t\t\t\tВыбрать все\n\t\t\t</button>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tclassName={styles.selectionActionButton}\n\t\t\t\tonClick={onDeselectAll}\n\t\t\t\tdata-ui=\"picker-deselect-all\"\n\t\t\t\tdata-action=\"deselect-all\">\n\t\t\t\tСнять выбор\n\t\t\t</button>\n\t\t</Grid.Container>\n\t);\n}\n","import { type HTMLAttributes, type ReactNode, type Ref } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { Separator } from \"../separator\";\n\nimport styles from \"./Picker.module.scss\";\nimport { PickerSelectionToolbar } from \"./PickerSelectionToolbar\";\n\nexport type PickerSelectionActions = {\n\tonSelectAll: () => void;\n\tonDeselectAll: () => void;\n\tselectAllButtonRef?: Ref<HTMLButtonElement>;\n};\n\nexport interface PickerOptionsProps extends Omit<HTMLAttributes<HTMLDivElement>, \"children\"> {\n\trootRef?: Ref<HTMLDivElement>;\n\tchildren: ReactNode;\n\ttoolbar?: ReactNode | false;\n\tselectionActions?: PickerSelectionActions;\n\tlayoutClassName?: string;\n\tbodyClassName?: string;\n\tscrollable?: boolean;\n}\n\n/**\n * Единая оболочка списка опций для picker, listbox и menu. Если переданы\n * selectionActions, но не передан toolbar, компонент показывает стандартные\n * действия выбора и снятия выбора.\n */\nexport function PickerOptions({\n\trootRef,\n\tchildren,\n\ttoolbar,\n\tselectionActions,\n\tlayoutClassName,\n\tbodyClassName,\n\tscrollable = true,\n\tclassName,\n\t...props\n}: PickerOptionsProps) {\n\tconst resolvedToolbar = toolbar === undefined && selectionActions ? <PickerSelectionToolbar {...selectionActions} /> : toolbar || null;\n\n\treturn (\n\t\t<div\n\t\t\t{...props}\n\t\t\tref={rootRef}\n\t\t\tclassName={cn(styles.options, layoutClassName, className)}\n\t\t\tdata-ui=\"picker-options\"\n\t\t\tdata-has-toolbar={resolvedToolbar ? \"true\" : undefined}>\n\t\t\t{resolvedToolbar ? (\n\t\t\t\t<div className={styles.optionsToolbar}>\n\t\t\t\t\t{resolvedToolbar}\n\t\t\t\t\t<Separator />\n\t\t\t\t</div>\n\t\t\t) : null}\n\t\t\t<div className={cn(styles.optionsBody, scrollable ? \"scrollable overscroll\" : \"overflowHidden\", bodyClassName)}>{children}</div>\n\t\t</div>\n\t);\n}\n","import { isValidElement, type ReactNode } from \"react\";\n\nexport function extractPickerTextContent(node: ReactNode): string | undefined {\n\tif (typeof node === \"string\" || typeof node === \"number\") {\n\t\treturn String(node);\n\t}\n\n\tif (Array.isArray(node)) {\n\t\tconst values = node\n\t\t\t.map(extractPickerTextContent)\n\t\t\t.filter((value): value is string => Boolean(value))\n\t\t\t.map((value) => value.trim())\n\t\t\t.filter(Boolean);\n\t\treturn values.length ? values.join(\" \") : undefined;\n\t}\n\n\tif (isValidElement<{ children?: ReactNode; searchText?: unknown }>(node)) {\n\t\tif (typeof node.props.searchText === \"string\") {\n\t\t\treturn node.props.searchText;\n\t\t}\n\n\t\treturn extractPickerTextContent(node.props.children);\n\t}\n\n\treturn undefined;\n}\n","import { type ReactNode } from \"react\";\n\nimport { extractPickerTextContent } from \"./model/extractPickerTextContent\";\n\ntype PickerPlaceholderParams = {\n\tplaceholder?: string;\n\tlabel?: ReactNode;\n\toptionCount: number;\n\tfallback?: string;\n};\n\n/**\n * Формирует единый текст placeholder для picker-компонентов и всегда показывает\n * актуальное количество доступных вариантов.\n */\nexport function getPickerPlaceholder({ placeholder, label, optionCount, fallback = \"Выберите значение\" }: PickerPlaceholderParams) {\n\tconst labelText = extractPickerTextContent(label);\n\tconst text = placeholder ?? labelText ?? fallback;\n\n\treturn `${text} <${optionCount}>`;\n}\n","import { type CSSProperties, type KeyboardEvent, type MouseEvent, type ReactNode } from \"react\";\n\nimport { FloatingContext, FloatingFocusManager, FloatingPortal } from \"@floating-ui/react\";\nimport { AnimatePresence, motion } from \"motion/react\";\n\nimport styles from \"./Picker.module.scss\";\nimport { PickerOptions, type PickerSelectionActions } from \"./PickerOptions\";\n\ninterface PickerPopupProps {\n\topen: boolean;\n\tcontext: FloatingContext;\n\tfloatingStyles: CSSProperties;\n\tlistId: string;\n\tlabelId?: string;\n\tpopupAriaLabel?: string;\n\tdescriptionId?: string;\n\tactiveOptionId?: string;\n\tariaMultiselectable?: boolean;\n\tpopupRole?: \"listbox\" | \"dialog\";\n\tsetFloating: (node: HTMLElement | null) => void;\n\tgetFloatingProps: (userProps?: Record<string, unknown>) => Record<string, unknown>;\n\tonKeyDown: (event: KeyboardEvent<HTMLElement>) => void;\n\tinitialFocus?: number;\n\treturnFocus?: boolean;\n\ttabIndex?: number;\n\tclassName?: string;\n\tmaxWidth?: CSSProperties[\"maxWidth\"];\n\tlayoutClassName?: string;\n\tbodyClassName?: string;\n\ttoolbar?: ReactNode | false;\n\tselectionActions?: PickerSelectionActions;\n\tchildren: ReactNode;\n}\n\nfunction stopNestedFloatingMouseDown(event: MouseEvent<HTMLElement>): void {\n\tevent.stopPropagation();\n}\n\nexport function PickerPopup({\n\topen,\n\tcontext,\n\tfloatingStyles,\n\tlistId,\n\tlabelId,\n\tpopupAriaLabel,\n\tdescriptionId,\n\tactiveOptionId,\n\tariaMultiselectable,\n\tpopupRole = \"listbox\",\n\tsetFloating,\n\tgetFloatingProps,\n\tonKeyDown,\n\tinitialFocus = -1,\n\treturnFocus = false,\n\ttabIndex = 0,\n\tclassName,\n\tmaxWidth,\n\tlayoutClassName,\n\tbodyClassName,\n\ttoolbar,\n\tselectionActions,\n\tchildren\n}: PickerPopupProps) {\n\treturn (\n\t\t<AnimatePresence>\n\t\t\t{open && (\n\t\t\t\t<FloatingPortal>\n\t\t\t\t\t<FloatingFocusManager context={context} modal={false} initialFocus={initialFocus} returnFocus={returnFocus}>\n\t\t\t\t\t\t<motion.div\n\t\t\t\t\t\t\tref={setFloating}\n\t\t\t\t\t\t\tstyle={{ ...floatingStyles, maxWidth }}\n\t\t\t\t\t\t\tinitial={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\tanimate={{ opacity: 1, scale: 1 }}\n\t\t\t\t\t\t\texit={{ opacity: 0, scale: 0.95 }}\n\t\t\t\t\t\t\t{...getFloatingProps({\n\t\t\t\t\t\t\t\tid: listId,\n\t\t\t\t\t\t\t\trole: popupRole,\n\t\t\t\t\t\t\t\ttabIndex,\n\t\t\t\t\t\t\t\t\"aria-labelledby\": labelId,\n\t\t\t\t\t\t\t\t\"aria-label\": labelId ? undefined : popupAriaLabel,\n\t\t\t\t\t\t\t\t\"aria-describedby\": descriptionId,\n\t\t\t\t\t\t\t\t\"aria-activedescendant\": activeOptionId,\n\t\t\t\t\t\t\t\t\"aria-multiselectable\": ariaMultiselectable || undefined,\n\t\t\t\t\t\t\t\tonMouseDown: stopNestedFloatingMouseDown,\n\t\t\t\t\t\t\t\tonKeyDown,\n\t\t\t\t\t\t\t\tclassName: styles.popupPositioner\n\t\t\t\t\t\t\t})}>\n\t\t\t\t\t\t\t<PickerOptions\n\t\t\t\t\t\t\t\tclassName={className}\n\t\t\t\t\t\t\t\tlayoutClassName={layoutClassName}\n\t\t\t\t\t\t\t\tbodyClassName={bodyClassName}\n\t\t\t\t\t\t\t\ttoolbar={toolbar}\n\t\t\t\t\t\t\t\tselectionActions={selectionActions}\n\t\t\t\t\t\t\t\tscrollable={false}>\n\t\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t\t</PickerOptions>\n\t\t\t\t\t\t</motion.div>\n\t\t\t\t\t</FloatingFocusManager>\n\t\t\t\t</FloatingPortal>\n\t\t\t)}\n\t\t</AnimatePresence>\n\t);\n}\n","import { type HTMLAttributes, type ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport styles from \"./Picker.module.scss\";\n\nexport interface PickerSelectedTokenProps extends Omit<HTMLAttributes<HTMLSpanElement>, \"children\"> {\n\tchildren: ReactNode;\n}\n\n/** Единое визуальное представление выбранного значения внутри picker-trigger. */\nexport function PickerSelectedToken({ children, className, ...props }: PickerSelectedTokenProps) {\n\treturn (\n\t\t<span {...props} className={cn(styles.selectedToken, className)} data-ui=\"picker-selected-token\">\n\t\t\t<span className={styles.selectedTokenText}>{children}</span>\n\t\t</span>\n\t);\n}\n","import { ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\ninterface PickerStatusProps {\n\temptyState?: ReactNode;\n\t// loadingState?: ReactNode;\n\terrorState?: ReactNode;\n}\n\nexport function PickerStatus({ emptyState, errorState }: PickerStatusProps) {\n\tconst content = errorState ?? emptyState;\n\n\tif (content === undefined || content === null) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<div className={cn(uiStyles.uiPopupOption, styles.status, errorState !== undefined && styles.statusError)} aria-disabled={true}>\n\t\t\t{content}\n\t\t</div>\n\t);\n}\n","import { MouseEvent, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { ChevronDownIcon } from \"lucide-react\";\n\nimport uiStyles from \"../ui.module.scss\";\n\ninterface PickerTriggerActionsProps {\n\topen: boolean;\n\tdisabled?: boolean;\n\tchildren?: ReactNode;\n\tonToggleMouseDown?: (event: MouseEvent<HTMLButtonElement>) => void;\n\tonToggleClick: () => void;\n\topenAriaLabel?: string;\n\tcloseAriaLabel?: string;\n}\n\nexport function PickerTriggerActions({\n\topen,\n\tdisabled,\n\tchildren,\n\tonToggleMouseDown,\n\tonToggleClick,\n\topenAriaLabel = \"Открыть список\",\n\tcloseAriaLabel = \"Закрыть список\"\n}: PickerTriggerActionsProps) {\n\treturn (\n\t\t<div className={uiStyles.uiToggleButtonContainer} data-disabled={disabled || undefined}>\n\t\t\t{children}\n\n\t\t\t<div className={uiStyles.uiButtonSeparator} />\n\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tdisabled={disabled}\n\t\t\t\taria-label={open ? closeAriaLabel : openAriaLabel}\n\t\t\t\tclassName={uiStyles.uiToggleButton}\n\t\t\t\tonMouseDown={onToggleMouseDown}\n\t\t\t\tonClick={onToggleClick}>\n\t\t\t\t<ChevronDownIcon className={cn(uiStyles.uiToggleIcon, open && uiStyles.uiToggleIconOpen)} />\n\t\t\t</button>\n\t\t</div>\n\t);\n}\n","import { ComponentPropsWithoutRef, forwardRef, ReactNode } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport { InputControl, InputLoadingFrame } from \"../input\";\nimport uiStyles from \"../ui.module.scss\";\n\nimport styles from \"./Picker.module.scss\";\n\nexport interface PickerTriggerInputProps extends Omit<ComponentPropsWithoutRef<\"input\">, \"size\"> {\n\trootRef?: (node: HTMLDivElement | null) => void;\n\tendAdornment?: ReactNode;\n\toverlay?: ReactNode;\n\trootClassName?: string;\n\tinputClassName?: string;\n\tisLoading?: boolean;\n}\n\nexport const PickerTriggerInput = forwardRef<HTMLInputElement, PickerTriggerInputProps>(\n\t({ rootRef, endAdornment, overlay, rootClassName, inputClassName, isLoading, ...props }, ref) => {\n\t\tconst hasOverlay = overlay !== undefined && overlay !== null;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tref={rootRef}\n\t\t\t\tclassName={cn(uiStyles.uiInputContainer, styles.triggerContainer, rootClassName)}\n\t\t\t\tdata-has-overlay={hasOverlay || undefined}>\n\t\t\t\t{isLoading ? (\n\t\t\t\t\t<InputLoadingFrame />\n\t\t\t\t) : (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<InputControl endAdornment={endAdornment}>\n\t\t\t\t\t\t\t{({ controlClassName }) => (\n\t\t\t\t\t\t\t\t<input {...props} ref={ref} className={cn(uiStyles.uiInputWithToggle, controlClassName, inputClassName)} />\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t</InputControl>\n\t\t\t\t\t\t{hasOverlay ? overlay : null}\n\t\t\t\t\t</>\n\t\t\t\t)}\n\t\t\t</div>\n\t\t);\n\t}\n);\n\nPickerTriggerInput.displayName = \"PickerTriggerInput\";\n","import { type ReactNode, type Ref } from \"react\";\n\nimport styles from \"./Picker.module.scss\";\nimport { PickerClearButton } from \"./PickerClearButton\";\nimport { getPickerPlaceholder } from \"./PickerPlaceholder\";\nimport { PickerSelectedToken } from \"./PickerSelectedToken\";\nimport { PickerTriggerActions } from \"./PickerTriggerActions\";\nimport { PickerTriggerInput, type PickerTriggerInputProps } from \"./PickerTriggerInput\";\n\nexport interface PickerTriggerProps extends Omit<PickerTriggerInputProps, \"placeholder\" | \"overlay\" | \"endAdornment\"> {\n\tref?: Ref<HTMLInputElement>;\n\topen: boolean;\n\toptionCount: number;\n\tplaceholder?: string;\n\tlabel?: ReactNode;\n\tplaceholderFallback?: string;\n\tselectedValue?: ReactNode;\n\thasSelection?: boolean;\n\tshowSelectedValue?: boolean;\n\tclearable?: boolean;\n\tonClear?: () => void;\n\tclearAriaLabel?: string;\n\tonToggleMouseDown?: PickerTriggerActionsProps[\"onToggleMouseDown\"];\n\tonToggleClick: PickerTriggerActionsProps[\"onToggleClick\"];\n\topenAriaLabel?: string;\n\tcloseAriaLabel?: string;\n}\n\ntype PickerTriggerActionsProps = Parameters<typeof PickerTriggerActions>[0];\n\n/**\n * Общая композиция picker-trigger: input, выбранное значение, очистка и кнопка\n * открытия. Владельцы picker-моделей передают только состояние и обработчики.\n */\nexport function PickerTrigger({\n\tref,\n\topen,\n\toptionCount,\n\tplaceholder,\n\tlabel,\n\tplaceholderFallback,\n\tselectedValue,\n\thasSelection,\n\tshowSelectedValue = selectedValue !== undefined && selectedValue !== null,\n\tclearable = false,\n\tonClear,\n\tclearAriaLabel,\n\tonToggleMouseDown,\n\tonToggleClick,\n\topenAriaLabel,\n\tcloseAriaLabel,\n\tdisabled,\n\tinputClassName,\n\t...inputProps\n}: PickerTriggerProps) {\n\tconst hasSelectedValue = hasSelection ?? (selectedValue !== undefined && selectedValue !== null);\n\tconst canClear = clearable && hasSelectedValue && onClear !== undefined && !disabled;\n\n\treturn (\n\t\t<PickerTriggerInput\n\t\t\t{...inputProps}\n\t\t\tref={ref}\n\t\t\tdisabled={disabled}\n\t\t\tplaceholder={\n\t\t\t\tshowSelectedValue ? undefined : getPickerPlaceholder({ placeholder, label, optionCount, fallback: placeholderFallback })\n\t\t\t}\n\t\t\tinputClassName={inputClassName}\n\t\t\trootClassName={clearable ? styles.triggerHasClear : undefined}\n\t\t\toverlay={showSelectedValue ? <PickerSelectedToken>{selectedValue}</PickerSelectedToken> : undefined}\n\t\t\tendAdornment={\n\t\t\t\t<PickerTriggerActions\n\t\t\t\t\topen={open}\n\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\tonToggleMouseDown={onToggleMouseDown}\n\t\t\t\t\tonToggleClick={onToggleClick}\n\t\t\t\t\topenAriaLabel={openAriaLabel}\n\t\t\t\t\tcloseAriaLabel={closeAriaLabel}>\n\t\t\t\t\t{canClear ? <PickerClearButton ariaLabel={clearAriaLabel} onClear={onClear} /> : null}\n\t\t\t\t</PickerTriggerActions>\n\t\t\t}\n\t\t/>\n\t);\n}\n","export type PickerTriggerMode = \"display\" | \"search-single\" | \"search-multi\";\n\ninterface PickerTriggerTextFocusParams {\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n}\n\nexport interface PickerTriggerPolicy {\n\tfocusFloatingOnOpen: boolean;\n\trestoreFocusOnClose: boolean;\n\tresetQueryOnClose: boolean;\n\tshouldOpenOnTriggerClick: (open: boolean) => boolean;\n\tshouldOpenOnInputChange: (open: boolean) => boolean;\n\tshouldFocusReferenceOnToggle: (open: boolean) => boolean;\n\tshouldSelectTriggerTextOnFocus: (params: PickerTriggerTextFocusParams) => boolean;\n}\n\n/**\n * Единая политика поведения trigger-input для picker-компонентов.\n * Нормализует различия между display-режимом, single-search и multi-search.\n */\nexport function createPickerTriggerPolicy(mode: PickerTriggerMode): PickerTriggerPolicy {\n\tswitch (mode) {\n\t\tcase \"search-single\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: ({ open, currentQuery, hasDisplayValue }) =>\n\t\t\t\t\t!open && currentQuery.length === 0 && hasDisplayValue\n\t\t\t};\n\t\tcase \"search-multi\":\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: false,\n\t\t\t\trestoreFocusOnClose: false,\n\t\t\t\tresetQueryOnClose: true,\n\t\t\t\tshouldOpenOnTriggerClick: () => false,\n\t\t\t\tshouldOpenOnInputChange: (open) => !open,\n\t\t\t\tshouldFocusReferenceOnToggle: (open) => !open,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t\tcase \"display\":\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tfocusFloatingOnOpen: true,\n\t\t\t\trestoreFocusOnClose: true,\n\t\t\t\tresetQueryOnClose: false,\n\t\t\t\tshouldOpenOnTriggerClick: (open) => !open,\n\t\t\t\tshouldOpenOnInputChange: () => false,\n\t\t\t\tshouldFocusReferenceOnToggle: () => false,\n\t\t\t\tshouldSelectTriggerTextOnFocus: () => false\n\t\t\t};\n\t}\n}\n","import { useMemo } from \"react\";\n\nimport { normalizeTextToLower } from \"@ryuzaki13/react-foundation-lib/formatters\";\n\ninterface UsePickerDefaultFilterOptions<T> {\n\toptions: readonly T[];\n\tquery: string;\n\tenabled?: boolean;\n\tgetSearchText: (option: T) => unknown;\n}\n\nfunction normalizeSearchText(value: unknown) {\n\tconst parts = Array.isArray(value) ? value : [value];\n\n\treturn normalizeTextToLower(parts.filter(Boolean).join(\" \"));\n}\n\nexport function usePickerDefaultFilter<T>({ options, query, enabled = true, getSearchText }: UsePickerDefaultFilterOptions<T>) {\n\tconst normalizedQuery = normalizeTextToLower(query);\n\n\treturn useMemo(() => {\n\t\tif (!enabled || !normalizedQuery) {\n\t\t\treturn [...options];\n\t\t}\n\n\t\treturn options.filter((option) => normalizeSearchText(getSearchText(option)).includes(normalizedQuery));\n\t}, [enabled, getSearchText, normalizedQuery, options]);\n}\n","import { Placement } from \"@floating-ui/react\";\nimport {\n\ttype FloatingListboxPlacementStrategy,\n\ttype FloatingListboxSizeResolver,\n\tuseFloatingListbox\n} from \"@ryuzaki13/react-foundation-lib/hooks\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerFloatingListboxParams<T> {\n\toptions: readonly T[];\n\tselectedIndex: number;\n\topen?: boolean;\n\tonOpenChange?: (open: boolean) => void;\n\tgetOptionDisabled?: (option: T) => boolean;\n\tonSelect?: (option: T) => void;\n\tdisabled?: boolean;\n\tplacement?: Placement;\n\tplacementStrategy?: FloatingListboxPlacementStrategy;\n\tcloseOnSelect?: boolean;\n\tfocusFloatingOnOpen?: boolean;\n\tallowOpenWithoutOptions?: boolean;\n\trestoreFocusOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n\tresolveFloatingSize?: FloatingListboxSizeResolver;\n}\n\n/**\n * Единая точка входа для popup/listbox поведения во всех picker-компонентах.\n */\nexport function usePickerFloatingListbox<T>(params: UsePickerFloatingListboxParams<T>) {\n\tconst triggerPolicy = params.triggerMode ? createPickerTriggerPolicy(params.triggerMode) : undefined;\n\n\treturn useFloatingListbox({\n\t\t...params,\n\t\tfocusFloatingOnOpen: params.focusFloatingOnOpen ?? triggerPolicy?.focusFloatingOnOpen,\n\t\trestoreFocusOnClose: params.restoreFocusOnClose ?? triggerPolicy?.restoreFocusOnClose\n\t});\n}\n","import { useState } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerQueryOptions {\n\tquery?: string;\n\tdefaultQuery?: string;\n\tonQuery?: (value: string) => void;\n\tresetOnClose?: boolean;\n\ttriggerMode?: PickerTriggerMode;\n}\n\n/**\n * Управляет controlled/uncontrolled query и возвращает policy закрытия владельцу open-state.\n * Сброс выполняется самим владельцем в событии close, поэтому hook не зеркалит lifecycle через effect.\n */\nexport function usePickerQuery({ query, defaultQuery, onQuery, resetOnClose, triggerMode }: UsePickerQueryOptions) {\n\tconst isControlled = query !== undefined;\n\tconst [internalQuery, setInternalQuery] = useState(defaultQuery ?? \"\");\n\tconst currentQuery = isControlled ? (query ?? \"\") : internalQuery;\n\tconst resolvedResetOnClose = resetOnClose ?? (triggerMode ? createPickerTriggerPolicy(triggerMode).resetQueryOnClose : true);\n\n\tconst setQuery = (nextValue: string) => {\n\t\tif (!isControlled) {\n\t\t\tsetInternalQuery(nextValue);\n\t\t}\n\n\t\tonQuery?.(nextValue);\n\t};\n\n\treturn {\n\t\tquery: currentQuery,\n\t\tsetQuery,\n\t\tclearQuery: () => setQuery(\"\"),\n\t\tresetQueryOnClose: resolvedResetOnClose\n\t};\n}\n","import { useEffect, useRef, useState } from \"react\";\n\ninterface UsePickerSelectionLifecycleOptions<TValue> {\n\tvalue: TValue;\n\topen: boolean;\n\tonCommit: (value: TValue) => void;\n\tonOpen?: () => void;\n\tonClose?: (value: TValue) => void;\n\tisEqual: (left: TValue, right: TValue) => boolean;\n}\n\n/**\n * Общий жизненный цикл чернового выбора для picker-компонентов,\n * где изменения подтверждаются при закрытии popup.\n */\nexport function usePickerSelectionLifecycle<TValue>({\n\tvalue,\n\topen,\n\tonCommit,\n\tonOpen,\n\tonClose,\n\tisEqual\n}: UsePickerSelectionLifecycleOptions<TValue>) {\n\tconst previousOpenRef = useRef(false);\n\tconst [draftValue, setDraftValue] = useState(value);\n\n\tuseEffect(() => {\n\t\tif (previousOpenRef.current && !open) {\n\t\t\tif (!isEqual(draftValue, value)) {\n\t\t\t\tonCommit(draftValue);\n\t\t\t}\n\n\t\t\tonClose?.(draftValue);\n\t\t}\n\n\t\tpreviousOpenRef.current = open;\n\t}, [draftValue, isEqual, onClose, onCommit, open, value]);\n\n\tconst prepareOpen = () => {\n\t\tsetDraftValue(value);\n\t\tonOpen?.();\n\t};\n\n\treturn {\n\t\tdraftValue,\n\t\tsetDraftValue,\n\t\tprepareOpen\n\t};\n}\n","import { MouseEvent, RefObject } from \"react\";\n\nimport { PickerTriggerMode, createPickerTriggerPolicy } from \"./createPickerTriggerPolicy\";\n\ninterface UsePickerTriggerControllerOptions {\n\tmode: PickerTriggerMode;\n\topen: boolean;\n\tcurrentQuery: string;\n\thasDisplayValue: boolean;\n\tinputRef: RefObject<HTMLInputElement | null>;\n\tsetQuery?: (value: string) => void;\n\topenList?: () => void;\n\tclose?: () => void;\n\ttoggleOpen?: () => void;\n\tonBeforeOpen?: () => void;\n}\n\ninterface HandleTriggerKeyDownOptions {\n\tevent: React.KeyboardEvent<HTMLElement>;\n\tonActivateWhenOpen?: () => void;\n\tenableSpaceActivation?: boolean;\n\tenableClosedArrowDownOpen?: boolean;\n\tsuppressClosedArrowUp?: boolean;\n}\n\nfunction focusInput(inputRef: RefObject<HTMLInputElement | null>) {\n\trequestAnimationFrame(() => {\n\t\tinputRef.current?.focus();\n\t});\n}\n\n/**\n * Единый контроллер пользовательских действий на trigger-input.\n * Держит поведение display/search-single/search-multi в одном месте.\n */\nexport function usePickerTriggerController({\n\tmode,\n\topen,\n\tcurrentQuery,\n\thasDisplayValue,\n\tinputRef,\n\tsetQuery,\n\topenList,\n\tclose,\n\ttoggleOpen,\n\tonBeforeOpen\n}: UsePickerTriggerControllerOptions) {\n\tconst policy = createPickerTriggerPolicy(mode);\n\n\tconst openTrigger = () => {\n\t\tonBeforeOpen?.();\n\n\t\tif (openList) {\n\t\t\topenList();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst closeTrigger = () => {\n\t\tif (close) {\n\t\t\tclose();\n\t\t\treturn;\n\t\t}\n\n\t\ttoggleOpen?.();\n\t};\n\n\tconst toggleTrigger = () => {\n\t\tif (open) {\n\t\t\tcloseTrigger();\n\t\t} else {\n\t\t\topenTrigger();\n\t\t}\n\n\t\tif (policy.shouldFocusReferenceOnToggle(open)) {\n\t\t\tfocusInput(inputRef);\n\t\t}\n\t};\n\n\treturn {\n\t\tpolicy,\n\t\thandleTriggerInputChange: (nextValue: string) => {\n\t\t\tsetQuery?.(nextValue);\n\n\t\t\tif (policy.shouldOpenOnInputChange(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerClick: () => {\n\t\t\tif (policy.shouldOpenOnTriggerClick(open)) {\n\t\t\t\topenTrigger();\n\t\t\t}\n\t\t},\n\t\thandleTriggerFocus: (input: HTMLInputElement) => {\n\t\t\tif (\n\t\t\t\tpolicy.shouldSelectTriggerTextOnFocus({\n\t\t\t\t\topen,\n\t\t\t\t\tcurrentQuery,\n\t\t\t\t\thasDisplayValue\n\t\t\t\t})\n\t\t\t) {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tinput.select();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\thandleToggleMouseDown: (event: MouseEvent<HTMLButtonElement>) => {\n\t\t\tevent.preventDefault();\n\t\t},\n\t\thandleToggleClick: () => {\n\t\t\ttoggleTrigger();\n\t\t},\n\t\thandleTriggerKeyDown: ({\n\t\t\tevent,\n\t\t\tonActivateWhenOpen,\n\t\t\tenableSpaceActivation = false,\n\t\t\tenableClosedArrowDownOpen = false,\n\t\t\tsuppressClosedArrowUp = false\n\t\t}: HandleTriggerKeyDownOptions) => {\n\t\t\tif (!open && suppressClosedArrowUp && event.key === \"ArrowUp\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!open && enableClosedArrowDownOpen && event.key === \"ArrowDown\") {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleTrigger();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (event.key === \"Enter\") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (enableSpaceActivation && event.key === \" \") {\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\tif (open) {\n\t\t\t\t\tonActivateWhenOpen?.();\n\t\t\t\t} else {\n\t\t\t\t\ttoggleTrigger();\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttoggleTrigger\n\t};\n}\n"],"mappings":"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"}
|