@ryuzaki13/react-foundation-ui 1.5.0 → 1.5.2
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/advanced-search/index.js +4 -4
- package/dist/base-table/index.js +1 -1
- package/dist/chunks/CalendarView-Cfih7hjD.js +439 -0
- package/dist/chunks/{CalendarView-DtacoN_c.js.map → CalendarView-Cfih7hjD.js.map} +1 -1
- package/dist/chunks/CheckBox.module-C5SjPwSj.js.map +1 -1
- package/dist/chunks/{TextEditorLexicalClient-DVML-Nhd.js → TextEditorLexicalClient-BSafrkLJ.js} +241 -275
- package/dist/chunks/TextEditorLexicalClient-BSafrkLJ.js.map +1 -0
- package/dist/chunks/{base-table-BPcdSitC.js → base-table-X7aSSjXa.js} +2 -2
- package/dist/chunks/{base-table-BPcdSitC.js.map → base-table-X7aSSjXa.js.map} +1 -1
- package/dist/chunks/{context-menu-BY4pYGwB.js → context-menu-tcD3kVAc.js} +58 -62
- package/dist/chunks/context-menu-tcD3kVAc.js.map +1 -0
- package/dist/chunks/date-input-Bsl9dxxY.js +341 -0
- package/dist/chunks/date-input-Bsl9dxxY.js.map +1 -0
- package/dist/chunks/{input-BWCaVC06.js → input-CAw1Loze.js} +54 -47
- package/dist/chunks/input-CAw1Loze.js.map +1 -0
- package/dist/chunks/{input-files-62qH2TMj.js → input-files-CLtQ7p8j.js} +2 -2
- package/dist/chunks/{input-files-62qH2TMj.js.map → input-files-CLtQ7p8j.js.map} +1 -1
- package/dist/chunks/{input-search-CdPI1cb6.js → input-search-F6MPrUGF.js} +2 -2
- package/dist/chunks/{input-search-CdPI1cb6.js.map → input-search-F6MPrUGF.js.map} +1 -1
- package/dist/chunks/modal-DPIXoMkB.js.map +1 -1
- package/dist/chunks/{multi-select-01xmD1nZ.js → multi-select-CZPB8H6v.js} +61 -60
- package/dist/chunks/multi-select-CZPB8H6v.js.map +1 -0
- package/dist/chunks/{picker-Mdb73_uW.js → picker-TYLwgl1c.js} +82 -92
- package/dist/chunks/{picker-Mdb73_uW.js.map → picker-TYLwgl1c.js.map} +1 -1
- package/dist/chunks/{select-DRf4_a1Z.js → select-BwbljzU9.js} +35 -34
- package/dist/chunks/select-BwbljzU9.js.map +1 -0
- package/dist/chunks/{table-DSg9gi_l.js → table-DihiNNJt.js} +2 -2
- package/dist/chunks/{table-DSg9gi_l.js.map → table-DihiNNJt.js.map} +1 -1
- package/dist/chunks/types-CxXyru6U.js.map +1 -1
- package/dist/chunks/{useODataSelectBase-DI_wwKgw.js → useODataSelectBase-Bfljwe39.js} +16 -24
- package/dist/chunks/{useODataSelectBase-DI_wwKgw.js.map → useODataSelectBase-Bfljwe39.js.map} +1 -1
- package/dist/context-menu/components/MenuRoot.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/lib/dateInputValue.d.ts +2 -6
- package/dist/date-input/lib/dateInputValue.d.ts.map +1 -1
- package/dist/date-input/lib/types.d.ts +0 -4
- package/dist/date-input/lib/types.d.ts.map +1 -1
- package/dist/date-input/model/useDateInput.d.ts +2 -2
- package/dist/date-input/model/useDateInput.d.ts.map +1 -1
- package/dist/date-input/ui/CalendarView.d.ts.map +1 -1
- package/dist/date-input/ui/DateInput.d.ts +0 -4
- package/dist/date-input/ui/DateInput.d.ts.map +1 -1
- package/dist/date-time-input/index.js +229 -234
- package/dist/date-time-input/index.js.map +1 -1
- package/dist/date-time-input/model/useDateTimeSegments.d.ts.map +1 -1
- package/dist/date-time-input/ui/SingleDateTimeInput.d.ts.map +1 -1
- package/dist/disclosure/index.js.map +1 -1
- package/dist/drop-zone/index.js +1 -1
- package/dist/image/index.js +2 -2
- package/dist/input/Input.d.ts.map +1 -1
- package/dist/input/index.js +1 -1
- package/dist/input-date-time/index.js +1 -1
- package/dist/input-file/index.js +1 -1
- package/dist/input-files/index.js +1 -1
- package/dist/input-image/index.js +1 -1
- package/dist/input-search/index.js +1 -1
- package/dist/layout-picker/index.js +1 -1
- package/dist/list/List.d.ts.map +1 -1
- package/dist/list/index.js +74 -45
- package/dist/list/index.js.map +1 -1
- package/dist/list/useListVirtualizer.d.ts +13 -0
- package/dist/list/useListVirtualizer.d.ts.map +1 -0
- package/dist/multi-select/index.js +1 -1
- package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/picker/model/usePickerQuery.d.ts +6 -2
- package/dist/picker/model/usePickerQuery.d.ts.map +1 -1
- package/dist/picker/model/usePickerSelectionLifecycle.d.ts.map +1 -1
- package/dist/preset-range-date-input/index.js +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/select/Select.d.ts.map +1 -1
- package/dist/select/index.js +1 -1
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/SliderInput.d.ts.map +1 -1
- package/dist/slider/index.js +333 -290
- package/dist/slider/index.js.map +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tabs/index.js.map +1 -1
- package/dist/tag-input/TagInput.d.ts.map +1 -1
- package/dist/tag-input/index.js +1 -1
- package/dist/tag-input/index.js.map +1 -1
- package/dist/text-editor/EmailDialog.d.ts +1 -2
- package/dist/text-editor/EmailDialog.d.ts.map +1 -1
- package/dist/text-editor/LinkDialog.d.ts +1 -2
- package/dist/text-editor/LinkDialog.d.ts.map +1 -1
- package/dist/text-editor/PhoneDialog.d.ts +1 -2
- package/dist/text-editor/PhoneDialog.d.ts.map +1 -1
- package/dist/text-editor/SemanticDialog.d.ts +1 -2
- package/dist/text-editor/SemanticDialog.d.ts.map +1 -1
- package/dist/text-editor/TextEditorDialogs.d.ts +2 -1
- package/dist/text-editor/TextEditorDialogs.d.ts.map +1 -1
- package/dist/text-editor/TimeDialog.d.ts +1 -2
- package/dist/text-editor/TimeDialog.d.ts.map +1 -1
- package/dist/text-editor/index.js +1 -1
- package/dist/text-editor/nodes/AccessibleLinkNode.d.ts.map +1 -1
- package/dist/text-editor/nodes/SemanticTagNode.d.ts.map +1 -1
- package/dist/text-editor/toolbar/types.d.ts.map +1 -1
- package/dist/textarea/index.js +1 -1
- package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
- package/dist/tree-select/index.js +244 -249
- package/dist/tree-select/index.js.map +1 -1
- package/dist/tree-table/index.js +1 -1
- package/package.json +1 -1
- package/storybook-static/assets/{Badge-CblO4qSx.js → Badge-DdvnnE8F.js} +1 -1
- package/storybook-static/assets/{Badge.stories-CtRrqjAo.js → Badge.stories-BUKUom98.js} +1 -1
- package/storybook-static/assets/{Button-Bzc9jBAF.js → Button-CghMveZ5.js} +1 -1
- package/storybook-static/assets/{Button-BVt4jmN4.js → Button-Co_JCRHU.js} +1 -1
- package/storybook-static/assets/{Button.stories-tqfxm0ox.js → Button.stories-CGj8XyOO.js} +1 -1
- package/storybook-static/assets/{CalendarView-MkrPd5D-.js → CalendarView-CaphwAt-.js} +1 -1
- package/storybook-static/assets/{CheckBox-0BK2dgdD.js → CheckBox-BQcaUjLx.js} +1 -1
- package/storybook-static/assets/{CheckBox-CWipX4CI.js → CheckBox-DAffOBou.js} +1 -1
- package/storybook-static/assets/CheckBox-Dw4nDCv8.css +1 -0
- package/storybook-static/assets/{CheckBox.stories-B5yWzlQa.js → CheckBox.stories-D_pMeQfu.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-WdTzF_2p.js → Color-6AOWCN3U--6e3-dEn.js} +1 -1
- package/storybook-static/assets/{ContextMenu-kbSWsoCE.js → ContextMenu-CCuLOUEi.js} +1 -1
- package/storybook-static/assets/ContextMenu-CCwVy2bU.js +1 -0
- package/storybook-static/assets/{ContextMenu.stories-CQcrX3sj.js → ContextMenu.stories-DvArgxXF.js} +1 -1
- package/storybook-static/assets/{DateInput-CyNIW9Md.js → DateInput-2WtbeZR7.js} +1 -1
- package/storybook-static/assets/DateInput-DNJ3WoMQ.js +1 -0
- package/storybook-static/assets/{DateInput.stories-DyB3PjTl.js → DateInput.stories-v5ti6IEo.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-CBZ0OAmn.js → DateRangePresetSelect-CPxgZfAB.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-BwibZk_q.js → DateRangePresetSelect-q30Gumdf.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-kmmKl-3j.js → DateRangePresetSelect.stories-DdOS7cEa.js} +1 -1
- package/storybook-static/assets/{Detail-pHBZ5bkR.js → Detail-DIuLwIa1.js} +1 -1
- package/storybook-static/assets/{Detail.stories-Bs5YNmLn.js → Detail.stories-D3P1LkKH.js} +1 -1
- package/storybook-static/assets/{Dialog-DbFhCtF1.js → Dialog-zOHAVMnY.js} +1 -1
- package/storybook-static/assets/{Dialog-DBTU-LRR.js → Dialog-zxssjiyA.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-_WQW8YNs.js → Dialog.stories-CPdleZZG.js} +1 -1
- package/storybook-static/assets/{Disclosure-vOJWmhLt.js → Disclosure-X-fwyTOO.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-wyulIOoJ.js → Disclosure.stories-DhBj8XEl.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-DjObX5Qs.css → DisclosureGroup-CNoH2D1R.css} +1 -1
- package/storybook-static/assets/{DisclosureGroup-BUDxwl5C.js → DisclosureGroup-COBTA8iF.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-B7vhvrpB.js → DocsRenderer-JROSPFPF-DBKu16F9.js} +1 -1
- package/storybook-static/assets/{DropZone-BvRT0gUm.js → DropZone-BxSCEj48.js} +1 -1
- package/storybook-static/assets/{DropZone-B7Q1qQqP.js → DropZone-C8pMmwdl.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-WmoR3uPj.js → DropZone.stories-BCAhhItK.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-BW35W6_U.js → DropdownMenu-Bi3Tiwls.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-C9G9PsZx.js → ExpandableActionPanel-CBwWx_Nv.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-Dllpmeu_.js → ExpandableActionPanel.stories-BkYsUqoo.js} +1 -1
- package/storybook-static/assets/{Flex-Cydb-4MR.js → Flex-CO947dLM.js} +1 -1
- package/storybook-static/assets/{Flex.stories-Dczj9g4W.js → Flex.stories-DMUThbwO.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-C-W77AcJ.js → FloatingPopover-BlMi_zjk.js} +1 -1
- package/storybook-static/assets/{FormattedTableCell-fePg_bmP.js → FormattedTableCell-DDNLMP5K.js} +1 -1
- package/storybook-static/assets/{Grid-Dal3v5dj.js → Grid-39TY8m4Z.js} +1 -1
- package/storybook-static/assets/{Grid.stories-Byb4mMpE.js → Grid.stories-DYvrXiSG.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-B9OD2pur.js → ImageCropper.stories-B9ltINOC.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-BcUjptiu.js → ImageRenderer-DA--Akcn.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-BuO2nhom.js → ImageRenderer.stories-BVdd0zeh.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-mSkR535R.js → ImageView.stories-DIQCaBWQ.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-DVdR3-_j.js → ImageViewer.stories-CyYc6RrG.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-DiR_HwIE.js → ImageViewerRuntime-eZU4pDw8.js} +1 -1
- package/storybook-static/assets/{Input-DZQKV4DP.js → Input-DvVsbr8K.js} +1 -1
- package/storybook-static/assets/{Input-BdCavSu1.js → Input-VmS-QVKm.js} +1 -1
- package/storybook-static/assets/{Input.stories-Cu66SvKb.js → Input.stories-mATd9a0c.js} +1 -1
- package/storybook-static/assets/{InputDateTime-Day94W-O.js → InputDateTime-BSnv1V99.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-990MuicZ.js → InputDateTime.stories-BHseZWJW.js} +1 -1
- package/storybook-static/assets/{InputFile-CJll5mC-.js → InputFile-Du6kJw8h.js} +1 -1
- package/storybook-static/assets/{InputFile-Cp8x84ZG.js → InputFile-YpStVIKr.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-fNNwbNfa.js → InputFile.stories-B9bGCSU3.js} +1 -1
- package/storybook-static/assets/{InputFiles-OusF5Lfq.js → InputFiles-BNhs2jEI.js} +1 -1
- package/storybook-static/assets/{InputFiles-CBvR3Szf.js → InputFiles-PUk0s7uQ.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-DcpEbOOo.js → InputFiles.stories-CxVfsYaA.js} +1 -1
- package/storybook-static/assets/{InputFilesList-zuNP1QIB.js → InputFilesList-_rwKzQPQ.js} +1 -1
- package/storybook-static/assets/{InputImage-CjMAL3uq.js → InputImage-Trwkv0rb.js} +1 -1
- package/storybook-static/assets/{InputImage-Dl2bJNZk.js → InputImage-XAl4ina5.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-BzxEndIe.js → InputImage.stories-Dddz-oRL.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-CXF1nGLl.js → InteractiveComponents.stories-BZZTxt_C.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-DzAN3gGO.js → LayoutPicker-BzGJmYT0.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-BahcFBzK.js → LayoutPicker-z5o3xDMb.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-ByamaGlv.js → LayoutPicker.stories-Du2gCRWE.js} +1 -1
- package/storybook-static/assets/{Listbox-C5hwzE4s.js → Listbox-C4QRr_MP.js} +1 -1
- package/storybook-static/assets/{Listbox-CHsNGsDc.js → Listbox-DuZWJ8ZZ.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-CvXZeESb.js → Listbox.stories-Y-8RgXM_.js} +1 -1
- package/storybook-static/assets/{Modal-Dib11Lzy.js → Modal-D9Zfvpww.js} +1 -1
- package/storybook-static/assets/{Modal.stories-DYMy-kLP.js → Modal.stories-BnFP5Zrr.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-BL_cTIW7.css → ModalManagerProvider-C5bd7SFD.css} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-natWXnSM.js → ModalManagerProvider-Duey-HBY.js} +1 -1
- package/storybook-static/assets/{MultiSelect-DlCZ7dhH.js → MultiSelect-BeQ2iAxN.js} +1 -1
- package/storybook-static/assets/{MultiSelect-Cl9MkPZw.js → MultiSelect-BhMW5jH5.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-202TRBKq.js → MultiSelect.stories-Cayi9A_V.js} +1 -1
- package/storybook-static/assets/{NoData-DcHZdLTJ.js → NoData-CeHT8LTg.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-DzqEi2vc.js → NotificationsHost-_4XSnTo2.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-CvoQfIjj.js → NotificationsHost.stories-C-2ucbpq.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-CHQguikm.js → ODataMultiSelect-DILkVUzB.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-BZbWK4CP.js → ODataMultiSelect.stories-odWzDl6l.js} +1 -1
- package/storybook-static/assets/{ODataSelect-C1YGDpg_.js → ODataSelect-BUAhfvPU.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-D4tQXs2c.js → ODataSelect.stories-PpNPmCz2.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-BjR7zhyJ.js → ODataTreeMultiSelect-BH7nIL9w.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-Drg8mLhi.js → ODataTreeMultiSelect.stories-C4zOROB1.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-D_fcT3Aw.js → ODataTreeSelect-CkJq3807.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-BWFdmmvf.js → ODataTreeSelect.stories-BcbRGbmJ.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-DWCRXFHq.js → OneStepScroller-BGIjsObI.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-DtfTzrNK.js → PeriodSelect-BcG6A50F.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-C7QQKxZ4.js → PeriodSelect-DvAMLr40.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-CF65LIHm.js → PeriodSelect.stories-DmvK-wEi.js} +1 -1
- package/storybook-static/assets/{PickerSelectionToolbar-D9atWyWj.js → PickerSelectionToolbar-Cas1QrbP.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-C7WeaOKN.js → PickerTriggerActions-DUcQfADH.js} +1 -1
- package/storybook-static/assets/{Popover-CUJF-IMC.js → Popover-Dl9KlVW0.js} +1 -1
- package/storybook-static/assets/{Popover-DQJIeny_.js → Popover-mm3LuMCX.js} +1 -1
- package/storybook-static/assets/{Popover.stories-BON0z3PX.js → Popover.stories-BqlULHhR.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-D3_uzWzQ.js → PresetRangeDateInput-84a4mW00.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-DpA1KOCo.js → PresetRangeDateInput-Dp-RORYt.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-CDDJDiei.js → PresetRangeDateInput.stories-Bw3dSWVM.js} +1 -1
- package/storybook-static/assets/{PresetSelect-DlV2eC-b.js → PresetSelect-DbMc37dQ.js} +1 -1
- package/storybook-static/assets/{RadioButton-BLyqp88m.js → RadioButton-Ceuq5i6x.js} +1 -1
- package/storybook-static/assets/{RadioButton-wkLEwRaH.js → RadioButton-DhaK8UUD.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-DS9RYBEJ.js → RadioButton.stories-S98_hDUl.js} +1 -1
- package/storybook-static/assets/{RadioGroup-CsWIje1J.js → RadioGroup-BqSOcKQI.js} +1 -1
- package/storybook-static/assets/{RadioGroup-DERcyzA0.js → RadioGroup-Di55rXi_.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-DkgUPavS.js → RadioGroup.stories-7RFD3uHM.js} +1 -1
- package/storybook-static/assets/{Scrollable-DvJ3T3Ik.js → Scrollable-B0p5mrx8.js} +1 -1
- package/storybook-static/assets/Select-BS9Its_r.js +12 -0
- package/storybook-static/assets/{Select-DmEm2boi.js → Select-CIqhX4mK.js} +1 -1
- package/storybook-static/assets/{Select.stories-BEPJovVd.js → Select.stories-DNhv8-zb.js} +1 -1
- package/storybook-static/assets/{SelectOptionContent-B5E2W8PZ.js → SelectOptionContent-DXq8ymaG.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-wgzDfqEi.js → SerializableSelect-Wq154MOD.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-V8IqyO9Y.js → SerializableSelect.stories-5sc1J9RV.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-B7v0t9f5.js → SingleDateTimeInput-Bkv6gIle.js} +1 -1
- package/storybook-static/assets/SingleDateTimeInput-D7sbOu36.js +1 -0
- package/storybook-static/assets/{SingleDateTimeInput.stories-FOoEMoyF.js → SingleDateTimeInput.stories-DWWk1ufW.js} +1 -1
- package/storybook-static/assets/{Slider-24H5ASxG.js → Slider-BGsWuJAm.js} +1 -1
- package/storybook-static/assets/{Slider-3HQKHpoi.js → Slider-BxM1AhD9.js} +1 -1
- package/storybook-static/assets/{Slider.stories-DeeP8cmV.js → Slider.stories-VJI4Rnlr.js} +1 -1
- package/storybook-static/assets/{SliderInput-CFbx-GW7.js → SliderInput-CzLa4eqn.js} +1 -1
- package/storybook-static/assets/SliderInput-D4y-O8R2.js +2 -0
- package/storybook-static/assets/{SliderInput.stories-Djli653m.js → SliderInput.stories-g0Kwo7dl.js} +1 -1
- package/storybook-static/assets/{Sortable-CMo2PMKX.js → Sortable-CgA1YBUW.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-BFsQvwMx.js → Sortable.stories-x3gePcSZ.js} +1 -1
- package/storybook-static/assets/{Splitter-dwOhGuIg.js → Splitter-BgFyt-RI.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-DZ3nAxpo.js → Splitter.stories-CkN8ukyN.js} +1 -1
- package/storybook-static/assets/{StateSelect-j3gi4kbM.js → StateSelect-Ce4t44r8.js} +1 -1
- package/storybook-static/assets/{StateSelect-IigEzRom.js → StateSelect-DSuIDlz9.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-Bj-2m2hS.js → StateSelect.stories-BPomWgn7.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-ClSl76ts.js → StringToggle.stories-CnMi5EAT.js} +1 -1
- package/storybook-static/assets/{Switch-C9OAPzUM.js → Switch-DDCJrhcQ.js} +1 -1
- package/storybook-static/assets/{Switch-BDbBZjMA.js → Switch-OWLmHmHZ.js} +1 -1
- package/storybook-static/assets/{Switch.stories-CQ3ueThx.js → Switch.stories-BDu-Afks.js} +1 -1
- package/storybook-static/assets/{Table-BbGcLQ81.js → Table-DZg-HjgT.js} +1 -1
- package/storybook-static/assets/{Table.stories-DvaHP59R.js → Table.stories-C1tWXfqI.js} +1 -1
- package/storybook-static/assets/{Tabs-CNEYvzUv.js → Tabs-DRfMQ8Jx.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-BpyQokl8.js → Tabs.stories-Dgdc1lZD.js} +1 -1
- package/storybook-static/assets/TabsBox-B5ugO318.css +1 -0
- package/storybook-static/assets/{TabsBox-ClZCbgKB.js → TabsBox-DljUVTsd.js} +1 -1
- package/storybook-static/assets/{TagInput-DorsSF_V.js → TagInput-BCS6WLcW.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-ChgRz4Co.js → TagInput.stories-Dy5AVzAj.js} +1 -1
- package/storybook-static/assets/{Text-DUqtop-c.js → Text-C4TWqy0Q.js} +1 -1
- package/storybook-static/assets/{Textarea-ZfZJmHsp.js → Textarea-5Gx2U0_d.js} +1 -1
- package/storybook-static/assets/{Textarea-yZWv6QdW.js → Textarea-BZrJEPN7.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-B5Q7syxH.js → Textarea.stories-BvdLNmb_.js} +1 -1
- package/storybook-static/assets/{TimePanel-C39f__j8.js → TimePanel-D3QC0eS8.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-DtjILTPk.js → TimePanel.stories-BZOB234n.js} +1 -1
- package/storybook-static/assets/{Toggle-CdpPJI_O.js → Toggle-BpzUjB13.js} +1 -1
- package/storybook-static/assets/{Toggle-BndjhQFY.js → Toggle-DarFnpF4.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-BD_C0YTw.js → Toggle.stories-DyPUelGH.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect--M1WiE_f.js → TreeMultiSelect-DNjTWvVq.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-BPz5kISi.js → TreeMultiSelect-DqpIhAuh.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-BgkDJur9.js → TreeMultiSelect.stories-Uc9jwEfE.js} +1 -1
- package/storybook-static/assets/TreePickerBase-BRKipsrA.js +22 -0
- package/storybook-static/assets/{TreeSelect-B0RWsDT4.js → TreeSelect-Bp1Zik9B.js} +1 -1
- package/storybook-static/assets/{TreeSelect-BrQGgG40.js → TreeSelect-CrLx5V7M.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-DkgdJ5XX.js → TreeSelect.stories-RlHKzmuz.js} +1 -1
- package/storybook-static/assets/{TreeTable-HQr8pb9r.js → TreeTable-DhQ6u1Pe.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-C4hcph6x.js → TreeTable.stories-CAs-UAM0.js} +1 -1
- package/storybook-static/assets/{async-lzSWdC34.js → async-B2DliTcn.js} +1 -1
- package/storybook-static/assets/{blocks-D8l_hmHU.js → blocks-CGuhQMXa.js} +3 -3
- package/storybook-static/assets/{browserAndReact-BwvRFhzI.js → browserAndReact-C-OypV8y.js} +1 -1
- package/storybook-static/assets/{check-DpX8PMs_.js → check-Bw0XnpCV.js} +1 -1
- package/storybook-static/assets/{chevron-down-DE8FRR-h.js → chevron-down-CfrX73tO.js} +1 -1
- package/storybook-static/assets/{chevron-left-Cy3TEG_Y.js → chevron-left-DpeXiQaY.js} +1 -1
- package/storybook-static/assets/{chevron-right-CZ4-4s1X.js → chevron-right-BFJM6q51.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-Ci-XApFb.js → chunk-W22LQPXL-Bt3_v9HM.js} +1 -1
- package/storybook-static/assets/{circle-alert-CWbgc3Jn.js → circle-alert-y52RJRUz.js} +1 -1
- package/storybook-static/assets/{circle-check-DODquDnH.js → circle-check-D-VabHaY.js} +1 -1
- package/storybook-static/assets/{components-BdUOCBP9.js → components-I69uHPsH.js} +3 -3
- package/storybook-static/assets/{contextMenu-XvvXJEpW.js → contextMenu-DfPU9cBt.js} +1 -1
- package/storybook-static/assets/defaultRenderers-Bkg6olnb.js +1 -0
- package/storybook-static/assets/{download-BEGaHxQc.js → download-CtH__7oe.js} +1 -1
- package/storybook-static/assets/{filesAndExcel-C9FnZv9P.js → filesAndExcel-BkVmFKKv.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-GziJy4gA.js → floating-ui.react-CxI0EsOT.js} +1 -1
- package/storybook-static/assets/{formatters-CVj-3Vn0-C5-BLq9O.js → formatters-CVj-3Vn0-BFaHJqZL.js} +1 -1
- package/storybook-static/assets/{formatters-vWial7jf.js → formatters-D37vYORi.js} +1 -1
- package/storybook-static/assets/{formatters-runtime-DO0szrYr.js → formatters-runtime-D3X8TbPs.js} +1 -1
- package/storybook-static/assets/{foundationLib-CIqc9fhG.js → foundationLib-DozGtKQB.js} +1 -1
- package/storybook-static/assets/{hooks-DfgvMSqN.js → hooks-Df19Nsi2.js} +1 -1
- package/storybook-static/assets/{iframe-BHhbrImE.js → iframe-BQrLcg06.js} +3 -3
- package/storybook-static/assets/iframe-lJqBcWzL.js +1 -0
- package/storybook-static/assets/{info-DSZ4aUvi.js → info-BeGxRQvx.js} +1 -1
- package/storybook-static/assets/{odata-DmijE2H9.js → odata-BDmwSB0b.js} +1 -1
- package/storybook-static/assets/odata-service-B5w4YBao-BW9QLSrS.js +3 -0
- package/storybook-static/assets/{odataAndTables-m2AMS6oI.js → odataAndTables-CdiAn8YJ.js} +1 -1
- package/storybook-static/assets/{odataFetchFn-CwpkgKoz.js → odataFetchFn-B4sQvu6J.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-CBtJYQsv.js → odataStoryFixtures-DJ_pv2Rq.js} +1 -1
- package/storybook-static/assets/{persisted-DpSU25AR.js → persisted-Cryvs_Te.js} +1 -1
- package/storybook-static/assets/{pureUtilities-BG4ZSO63.js → pureUtilities-YEJFcbIT.js} +1 -1
- package/storybook-static/assets/{react-Bz35HWpn.js → react-D5HGS0WP.js} +1 -1
- package/storybook-static/assets/{refresh-cw-ltgf4cUB.js → refresh-cw-BtYtkXmi.js} +1 -1
- package/storybook-static/assets/{runtimeAndState-C_GrWjr8.js → runtimeAndState-Bc0p1zM-.js} +1 -1
- package/storybook-static/assets/{settings-2-qpVYfZn_.js → settings-2-BTaug5uU.js} +1 -1
- package/storybook-static/assets/{sortable-CrCQ3H1V.js → sortable-CV5Mg3jp.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-eOr9ght-.js → syntaxhighlighter-T5IQBZDB-CyWSuE24.js} +1 -1
- package/storybook-static/assets/{trash-2-lfhUDclN.js → trash-2-Bcxa3Ezm.js} +1 -1
- package/storybook-static/assets/{triangle-alert-D9YGTafY.js → triangle-alert-Cy0xZ6CK.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-BVgxJPNn.js → useODataSelectBase-rnvEwUEf.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-CdLHOBnD.js → useODataTreeData-DFL7fNez.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-B6U-oOS6.js → usePickerQuery-BpbIXzlf.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-C-VxrzSe.js → usePickerTriggerController-CLjquchr.js} +1 -1
- package/storybook-static/assets/{x-CNM39xuu.js → x-CTu2RxD8.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/project.json +1 -1
- package/dist/chunks/CalendarView-DtacoN_c.js +0 -439
- package/dist/chunks/TextEditorLexicalClient-DVML-Nhd.js.map +0 -1
- package/dist/chunks/context-menu-BY4pYGwB.js.map +0 -1
- package/dist/chunks/date-input-DKkJO_-h.js +0 -340
- package/dist/chunks/date-input-DKkJO_-h.js.map +0 -1
- package/dist/chunks/input-BWCaVC06.js.map +0 -1
- package/dist/chunks/multi-select-01xmD1nZ.js.map +0 -1
- package/dist/chunks/select-DRf4_a1Z.js.map +0 -1
- package/storybook-static/assets/CheckBox-8XczNrjq.css +0 -1
- package/storybook-static/assets/ContextMenu-BjWu5DHB.js +0 -1
- package/storybook-static/assets/DateInput-BUgBb3aH.js +0 -1
- package/storybook-static/assets/Select-g0c0XGQY.js +0 -12
- package/storybook-static/assets/SingleDateTimeInput-CN7PyOsb.js +0 -1
- package/storybook-static/assets/SliderInput-bqFr-Lyp.js +0 -2
- package/storybook-static/assets/TabsBox-Co1vxD90.css +0 -1
- package/storybook-static/assets/TreePickerBase-Dup03AiC.js +0 -22
- package/storybook-static/assets/defaultRenderers-lMEgLPIU.js +0 -1
- package/storybook-static/assets/iframe-oIP1aL7X.js +0 -1
- package/storybook-static/assets/odata-service-B5w4YBao-BcP2cvfZ.js +0 -3
- /package/storybook-static/assets/{CheckBox.module-DPvJxTHD.js → CheckBox.module-CM_GPl_E.js} +0 -0
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Text as e } from "../text/index.js";
|
|
2
2
|
import { t } from "./ui.module-BfaIVBba.js";
|
|
3
3
|
import { t as n } from "./check-box-6HGX_KOy.js";
|
|
4
|
-
import { a as r, c as i, d as a, f as o, i as s, l as c, n as l, p as u, r as d, t as f, u as p } from "./picker-
|
|
4
|
+
import { a as r, c as i, d as a, f as o, i as s, l as c, n as l, p as u, r as d, t as f, u as p } from "./picker-TYLwgl1c.js";
|
|
5
5
|
import { t as ee } from "./separator-B72Aq-6a.js";
|
|
6
|
-
import { n as m, r as h, t as g } from "./useODataSelectBase-
|
|
6
|
+
import { n as m, r as h, t as g } from "./useODataSelectBase-Bfljwe39.js";
|
|
7
7
|
import { forwardRef as _, useCallback as te, useMemo as v, useRef as ne, useState as y } from "react";
|
|
8
8
|
import { flattenODataDependentServices as re, useODataCollectionModel as ie } from "@ryuzaki13/react-foundation-api/odata";
|
|
9
9
|
import { cn as ae } from "@ryuzaki13/react-foundation-lib/utils";
|
|
@@ -168,13 +168,14 @@ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange:
|
|
|
168
168
|
z,
|
|
169
169
|
p,
|
|
170
170
|
n
|
|
171
|
-
]), { query: V, setQuery: Se } = d({
|
|
172
|
-
open: L,
|
|
171
|
+
]), { query: V, setQuery: Se, resetQueryOnClose: Ce } = d({
|
|
173
172
|
query: ae,
|
|
174
173
|
defaultQuery: ce,
|
|
175
174
|
onQuery: C,
|
|
176
175
|
triggerMode: R
|
|
177
|
-
}),
|
|
176
|
+
}), we = (e) => {
|
|
177
|
+
L && !e && Ce && Se(""), ye(e);
|
|
178
|
+
}, H = r({
|
|
178
179
|
options: z,
|
|
179
180
|
query: V,
|
|
180
181
|
enabled: w,
|
|
@@ -184,14 +185,14 @@ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange:
|
|
|
184
185
|
query: V,
|
|
185
186
|
enabled: w,
|
|
186
187
|
getSearchText: (t) => ge(t, e, B)
|
|
187
|
-
}), W = v(() => [...H, ...U], [U, H]),
|
|
188
|
+
}), W = v(() => [...H, ...U], [U, H]), Te = H.length > 0 ? 0 : -1, { draftValue: G, setDraftValue: K, prepareOpen: Ee } = l({
|
|
188
189
|
value: z,
|
|
189
190
|
open: L,
|
|
190
191
|
onCommit: h,
|
|
191
192
|
onOpen: T,
|
|
192
193
|
onClose: ue,
|
|
193
194
|
isEqual: (t, n) => _e(t, n, e)
|
|
194
|
-
}), q = v(() => new Set(G.map((t) => O(t, e))), [e, G]),
|
|
195
|
+
}), q = v(() => new Set(G.map((t) => O(t, e))), [e, G]), De = v(() => ({
|
|
195
196
|
selectedItems: G,
|
|
196
197
|
committedSelectedItems: z,
|
|
197
198
|
selectedKeys: q,
|
|
@@ -201,29 +202,29 @@ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange:
|
|
|
201
202
|
G,
|
|
202
203
|
L,
|
|
203
204
|
q
|
|
204
|
-
]), J = te((e) => D?.(e,
|
|
205
|
+
]), J = te((e) => D?.(e, De) ?? !1, [D, De]), { activeIndex: Y, context: Oe, floatingStyles: ke, getFloatingProps: Ae, setReference: je, setFloating: Me, setOptionRef: Ne, close: Pe, openList: Fe, toggleOpen: Ie, selectActiveOption: Le, handleReferenceKeyDown: Re, handleFloatingKeyDown: ze, getOptionId: Be, getActiveOptionId: Ve } = s({
|
|
205
206
|
options: W,
|
|
206
|
-
selectedIndex:
|
|
207
|
+
selectedIndex: Te,
|
|
207
208
|
open: L,
|
|
208
|
-
onOpenChange:
|
|
209
|
+
onOpenChange: we,
|
|
209
210
|
onSelect: void 0,
|
|
210
211
|
disabled: k,
|
|
211
212
|
getOptionDisabled: J,
|
|
212
213
|
closeOnSelect: !1,
|
|
213
214
|
allowOpenWithoutOptions: !0,
|
|
214
215
|
triggerMode: R
|
|
215
|
-
}),
|
|
216
|
+
}), He = le ?? V, X = (t) => {
|
|
216
217
|
let n = O(t, e);
|
|
217
218
|
K((r) => r.some((t) => O(t, e) === n) ? r.filter((t) => O(t, e) !== n) : J(t) ? r : [...r, t]);
|
|
218
|
-
},
|
|
219
|
+
}, Ue = (e) => {
|
|
219
220
|
if (I.current = e, typeof F == "function") {
|
|
220
221
|
F(e);
|
|
221
222
|
return;
|
|
222
223
|
}
|
|
223
224
|
F && (F.current = e);
|
|
224
|
-
},
|
|
225
|
+
}, We = () => {
|
|
225
226
|
K([]), L || h([]);
|
|
226
|
-
},
|
|
227
|
+
}, Ge = () => {
|
|
227
228
|
K((t) => {
|
|
228
229
|
let n = [...t], r = new Set(t.map((t) => O(t, e)));
|
|
229
230
|
for (let t of W) {
|
|
@@ -232,44 +233,44 @@ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange:
|
|
|
232
233
|
}
|
|
233
234
|
return n;
|
|
234
235
|
});
|
|
235
|
-
},
|
|
236
|
+
}, Ke = () => {
|
|
236
237
|
K([]);
|
|
237
|
-
},
|
|
238
|
-
J(e) || (K([e]),
|
|
239
|
-
},
|
|
240
|
-
selectedItems:
|
|
238
|
+
}, qe = (e) => {
|
|
239
|
+
J(e) || (K([e]), Pe());
|
|
240
|
+
}, Je = L ? G : z, Z = Je.length > 0, Ye = {
|
|
241
|
+
selectedItems: Je,
|
|
241
242
|
committedSelectedItems: z,
|
|
242
243
|
availableItems: U,
|
|
243
244
|
query: V,
|
|
244
245
|
open: L,
|
|
245
|
-
clearSelection:
|
|
246
|
-
selectAll:
|
|
247
|
-
deselectAll:
|
|
248
|
-
},
|
|
246
|
+
clearSelection: We,
|
|
247
|
+
selectAll: Ge,
|
|
248
|
+
deselectAll: Ke
|
|
249
|
+
}, Xe = M === void 0 ? de({
|
|
249
250
|
codeKey: e,
|
|
250
251
|
textKey: B
|
|
251
|
-
}) : M,
|
|
252
|
+
}) : M, Ze = N === void 0 ? fe : N, Qe = P ?? pe({
|
|
252
253
|
codeKey: e,
|
|
253
254
|
textKey: B,
|
|
254
255
|
hideCode: a
|
|
255
|
-
}),
|
|
256
|
+
}), $e = typeof Xe == "function" ? Xe(Ye) : null, et = typeof Ze == "function" ? Ze(Ye) : null, Q = H.map((e, t) => ({
|
|
256
257
|
item: e,
|
|
257
258
|
index: t
|
|
258
|
-
})),
|
|
259
|
+
})), tt = U.map((e, t) => ({
|
|
259
260
|
item: e,
|
|
260
261
|
index: t + Q.length
|
|
261
|
-
})),
|
|
262
|
+
})), nt = !j && !A && W.length === 0, $ = f({
|
|
262
263
|
mode: R,
|
|
263
264
|
open: L,
|
|
264
265
|
currentQuery: V,
|
|
265
266
|
hasDisplayValue: !1,
|
|
266
267
|
inputRef: I,
|
|
267
268
|
setQuery: Se,
|
|
268
|
-
openList:
|
|
269
|
-
close:
|
|
270
|
-
toggleOpen:
|
|
269
|
+
openList: Fe,
|
|
270
|
+
close: Pe,
|
|
271
|
+
toggleOpen: Ie,
|
|
271
272
|
onBeforeOpen: () => {
|
|
272
|
-
L ||
|
|
273
|
+
L || Ee();
|
|
273
274
|
}
|
|
274
275
|
});
|
|
275
276
|
return /* @__PURE__ */ b(u, {
|
|
@@ -281,22 +282,22 @@ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange:
|
|
|
281
282
|
children: ({ controlId: n, labelId: r, describedBy: a }) => {
|
|
282
283
|
let s = `${n}-listbox`;
|
|
283
284
|
return /* @__PURE__ */ x(se, { children: [/* @__PURE__ */ b(i, {
|
|
284
|
-
ref:
|
|
285
|
-
rootRef:
|
|
285
|
+
ref: Ue,
|
|
286
|
+
rootRef: je,
|
|
286
287
|
id: n,
|
|
287
288
|
type: "text",
|
|
288
289
|
role: "combobox",
|
|
289
290
|
autoComplete: "off",
|
|
290
291
|
disabled: k,
|
|
291
292
|
value: V,
|
|
292
|
-
placeholder:
|
|
293
|
+
placeholder: Z ? void 0 : `${re ?? g ?? "Выберите значения"} <${p.length}>`,
|
|
293
294
|
"aria-labelledby": r,
|
|
294
295
|
"aria-describedby": a,
|
|
295
296
|
"aria-haspopup": "listbox",
|
|
296
297
|
"aria-expanded": L,
|
|
297
298
|
"aria-controls": L ? s : void 0,
|
|
298
299
|
"aria-autocomplete": "list",
|
|
299
|
-
"aria-activedescendant": L ?
|
|
300
|
+
"aria-activedescendant": L ? Ve(s) : void 0,
|
|
300
301
|
rootClassName: "flex alignItemsCenter",
|
|
301
302
|
endAdornment: /* @__PURE__ */ b(c, {
|
|
302
303
|
open: L,
|
|
@@ -305,16 +306,16 @@ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange:
|
|
|
305
306
|
onToggleClick: $.handleToggleClick,
|
|
306
307
|
children: /* @__PURE__ */ b("button", {
|
|
307
308
|
type: "button",
|
|
308
|
-
disabled: !
|
|
309
|
+
disabled: !Z,
|
|
309
310
|
className: t.uiClearButton,
|
|
310
311
|
"data-ui": "multi-select-clear-button",
|
|
311
312
|
"data-action": "clear-multi-select",
|
|
312
|
-
onClick:
|
|
313
|
+
onClick: We,
|
|
313
314
|
"aria-label": "Очистить все",
|
|
314
315
|
children: /* @__PURE__ */ b(oe, {})
|
|
315
316
|
})
|
|
316
317
|
}),
|
|
317
|
-
overlay:
|
|
318
|
+
overlay: $e,
|
|
318
319
|
onChange: (e) => {
|
|
319
320
|
$.handleTriggerInputChange(e.target.value);
|
|
320
321
|
},
|
|
@@ -323,7 +324,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange:
|
|
|
323
324
|
$.handleTriggerFocus(e.currentTarget);
|
|
324
325
|
},
|
|
325
326
|
onKeyDown: (e) => {
|
|
326
|
-
|
|
327
|
+
Re(e), !e.defaultPrevented && $.handleTriggerKeyDown({
|
|
327
328
|
event: e,
|
|
328
329
|
onActivateWhenOpen: () => {
|
|
329
330
|
if (Y >= 0) {
|
|
@@ -333,7 +334,7 @@ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange:
|
|
|
333
334
|
return;
|
|
334
335
|
}
|
|
335
336
|
}
|
|
336
|
-
|
|
337
|
+
Le();
|
|
337
338
|
},
|
|
338
339
|
enableClosedArrowDownOpen: !0,
|
|
339
340
|
suppressClosedArrowUp: !0
|
|
@@ -341,22 +342,22 @@ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange:
|
|
|
341
342
|
}
|
|
342
343
|
}), /* @__PURE__ */ b(o, {
|
|
343
344
|
open: L,
|
|
344
|
-
context:
|
|
345
|
-
floatingStyles:
|
|
345
|
+
context: Oe,
|
|
346
|
+
floatingStyles: ke,
|
|
346
347
|
listId: s,
|
|
347
348
|
labelId: r,
|
|
348
349
|
descriptionId: a,
|
|
349
|
-
activeOptionId: L ?
|
|
350
|
-
setFloating:
|
|
351
|
-
getFloatingProps:
|
|
352
|
-
onKeyDown:
|
|
350
|
+
activeOptionId: L ? Ve(s) : void 0,
|
|
351
|
+
setFloating: Me,
|
|
352
|
+
getFloatingProps: Ae,
|
|
353
|
+
onKeyDown: ze,
|
|
353
354
|
initialFocus: -1,
|
|
354
355
|
returnFocus: !1,
|
|
355
356
|
tabIndex: -1,
|
|
356
357
|
className: t.uiPopupOptions,
|
|
357
|
-
header:
|
|
358
|
+
header: et,
|
|
358
359
|
children: /* @__PURE__ */ b(me, {
|
|
359
|
-
isNoData:
|
|
360
|
+
isNoData: nt,
|
|
360
361
|
isLoading: j,
|
|
361
362
|
error: A,
|
|
362
363
|
children: /* @__PURE__ */ x("div", {
|
|
@@ -369,29 +370,29 @@ var k = _(({ codeKey: e, textKey: n, hideCode: a, items: p, value: m, onChange:
|
|
|
369
370
|
selectedKeys: q,
|
|
370
371
|
codeKey: e,
|
|
371
372
|
query: V,
|
|
372
|
-
highlightQuery:
|
|
373
|
+
highlightQuery: He,
|
|
373
374
|
getOptionDisabled: J,
|
|
374
|
-
getOptionId:
|
|
375
|
-
setOptionRef:
|
|
375
|
+
getOptionId: Be,
|
|
376
|
+
setOptionRef: Ne,
|
|
376
377
|
toggleOption: X,
|
|
377
|
-
selectOnlyOption:
|
|
378
|
-
renderItem:
|
|
378
|
+
selectOnlyOption: qe,
|
|
379
|
+
renderItem: Qe
|
|
379
380
|
}),
|
|
380
381
|
Q.length > 0 && xe.length > 0 && /* @__PURE__ */ b(ee, { className: "marginBlockSm" }),
|
|
381
382
|
/* @__PURE__ */ b(ve, {
|
|
382
|
-
entries:
|
|
383
|
+
entries: tt,
|
|
383
384
|
listId: s,
|
|
384
385
|
activeIndex: Y,
|
|
385
386
|
selectedKeys: q,
|
|
386
387
|
codeKey: e,
|
|
387
388
|
query: V,
|
|
388
|
-
highlightQuery:
|
|
389
|
+
highlightQuery: He,
|
|
389
390
|
getOptionDisabled: J,
|
|
390
|
-
getOptionId:
|
|
391
|
-
setOptionRef:
|
|
391
|
+
getOptionId: Be,
|
|
392
|
+
setOptionRef: Ne,
|
|
392
393
|
toggleOption: X,
|
|
393
|
-
selectOnlyOption:
|
|
394
|
-
renderItem:
|
|
394
|
+
selectOnlyOption: qe,
|
|
395
|
+
renderItem: Qe
|
|
395
396
|
})
|
|
396
397
|
]
|
|
397
398
|
})
|
|
@@ -522,4 +523,4 @@ function I({ label: e, description: t, disabled: n, placeholder: r, size: i, opt
|
|
|
522
523
|
//#endregion
|
|
523
524
|
export { k as a, j as i, N as n, T as o, M as r, C as s, I as t };
|
|
524
525
|
|
|
525
|
-
//# sourceMappingURL=multi-select-
|
|
526
|
+
//# sourceMappingURL=multi-select-CZPB8H6v.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-select-CZPB8H6v.js","names":[],"sources":["../../src/multi-select/ui/MultiSelectOption.tsx","../../src/multi-select/ui/MultiSelect.module.scss","../../src/multi-select/ui/MultiSelectToken.tsx","../../src/multi-select/ui/defaultRenderers.tsx","../../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":["import { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { SelectOptionContent } from \"../../select/SelectOptionContent\";\n\ninterface MultiSelectOptionProps {\n\titem: CollectionItem;\n\ttextKey: string;\n\tcodeKey?: string;\n\thighlight?: string;\n\tselected: boolean;\n}\n\n/**\n * Отдельная опция внутри `MultiSelect`. Отрисовывает состояние выбора и подсветку текста для найденных совпадений.\n */\nexport function MultiSelectOption({ item, textKey, codeKey, highlight }: MultiSelectOptionProps) {\n\treturn <SelectOptionContent label={item[textKey]} code={codeKey && item[codeKey]} highlight={highlight} />;\n}\n","@use \"@/styles/mixins\" as *;\n\n.multiSelect {\n\t// Общий контейнер\n\tpadding: 0;\n}\n\n.multiSelectTokens {\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: flex-end;\n\n\tposition: absolute;\n\tinset: 0 calc(var(--control-height) * 2) 0 var(--space-md);\n\n\tpointer-events: none;\n\toverflow: hidden;\n\n\t&:empty {\n\t\tdisplay: none;\n\t}\n}\n\n.multiSelectToken {\n\tfont-size: var(--font-size-sm);\n\tfont-weight: 300;\n\tfont-variation-settings: \"wght\" 300;\n\n\t// flex: 1 1 0%;\n\t// min-width: 0;\n\tmax-width: 100%;\n\n\toverflow: hidden;\n\twhite-space: nowrap;\n\tword-break: normal;\n\ttext-overflow: ellipsis;\n\n\tpointer-events: none;\n}\n","import styles from \"./MultiSelect.module.scss\";\n\ninterface MultiSelectTokenProps {\n\tvalue: string | undefined;\n}\n\n/**\n * Токен выбранного значения в `MultiSelect`. Показывает выбранный элемент и кнопку его удаления из текущего набора.\n */\nexport function MultiSelectToken({ value }: MultiSelectTokenProps) {\n\tif (!value) return null;\n\n\treturn (\n\t\t<div className={styles.multiSelectTokens}>\n\t\t\t<div className={styles.multiSelectToken}>{value}</div>\n\t\t</div>\n\t);\n}\n","import { formatRussianPlural, type RussianPluralForms } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { PickerSelectionToolbar } from \"../../picker\";\n\nimport { type MultiSelectItemState, type MultiSelectRenderContext } from \"./MultiSelect\";\nimport { MultiSelectOption } from \"./MultiSelectOption\";\nimport { MultiSelectToken } from \"./MultiSelectToken\";\n\ninterface MultiSelectRendererConfig {\n\tcodeKey: string;\n\ttextKey?: string;\n\thideCode?: boolean;\n}\n\nconst ELEMENT_FORMS: RussianPluralForms = {\n\tone: \"элемент\",\n\tfew: \"элемента\",\n\tmany: \"элементов\"\n};\n\nexport function formatOptionCount(count: number) {\n\treturn formatRussianPlural(count, ELEMENT_FORMS);\n}\n\nexport function resolveMultiSelectTextKey(items: CollectionItem[], codeKey: string, textKey?: string) {\n\tif (textKey) {\n\t\treturn textKey;\n\t}\n\n\tconst sampleItem = items[0];\n\n\tif (!sampleItem) {\n\t\treturn codeKey;\n\t}\n\n\treturn Object.keys(sampleItem).find((key) => key !== codeKey) ?? codeKey;\n}\n\nexport function getDefaultMultiSelectTokenValue(items: CollectionItem[], codeKey: string, textKey?: string) {\n\tif (items.length === 0) {\n\t\treturn undefined;\n\t}\n\n\tif (items.length > 1) {\n\t\treturn formatOptionCount(items.length);\n\t}\n\n\tconst resolvedTextKey = resolveMultiSelectTextKey(items, codeKey, textKey);\n\treturn items[0]?.[resolvedTextKey] ?? items[0]?.[codeKey];\n}\n\nexport function createDefaultMultiSelectTokenRenderer(config: MultiSelectRendererConfig) {\n\treturn function renderDefaultToken(context: MultiSelectRenderContext) {\n\t\treturn <MultiSelectToken value={getDefaultMultiSelectTokenValue(context.selectedItems, config.codeKey, config.textKey)} />;\n\t};\n}\n\nexport function renderDefaultMultiSelectToolbar(context: MultiSelectRenderContext) {\n\treturn <PickerSelectionToolbar onSelectAll={context.selectAll} onDeselectAll={context.deselectAll} />;\n}\n\nexport function createDefaultMultiSelectItemRenderer(config: MultiSelectRendererConfig) {\n\treturn function renderDefaultItem(item: CollectionItem, state: MultiSelectItemState) {\n\t\treturn (\n\t\t\t<MultiSelectOption\n\t\t\t\titem={item}\n\t\t\t\tselected={state.selected}\n\t\t\t\thighlight={state.highlightQuery}\n\t\t\t\ttextKey={resolveMultiSelectTextKey([item], config.codeKey, config.textKey)}\n\t\t\t\tcodeKey={config.hideCode ? undefined : config.codeKey}\n\t\t\t/>\n\t\t);\n\t};\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 { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\nimport { XIcon } from \"lucide-react\";\n\nimport { CheckBox } from \"../../check-box\";\nimport {\n\tPickerField,\n\tPickerPopup,\n\tPickerStatus,\n\tPickerTriggerActions,\n\tPickerTriggerInput,\n\tusePickerDefaultFilter,\n\tusePickerFloatingListbox,\n\tusePickerQuery,\n\tusePickerSelectionLifecycle,\n\tusePickerTriggerController\n} from \"../../picker\";\nimport { Separator } from \"../../separator\";\nimport { type UiBaseProps } from \"../../types\";\nimport uiStyles from \"../../ui.module.scss\";\n\nimport {\n\tcreateDefaultMultiSelectItemRenderer,\n\tcreateDefaultMultiSelectTokenRenderer,\n\trenderDefaultMultiSelectToolbar,\n\tresolveMultiSelectTextKey\n} from \"./defaultRenderers\";\nimport styles from \"./MultiSelect.module.scss\";\nimport { MultiSelectOptionSkeleton } from \"./MultiSelectOptionSkeleton\";\n\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\ninterface MultiSelectOptionsProps extends PropsWithChildren {\n\tisNoData?: boolean;\n\tisLoading?: boolean;\n\terror?: string;\n}\n\nfunction MultiSelectOptionsWrapper({ isNoData, isLoading, error, children }: MultiSelectOptionsProps) {\n\tif (isNoData) return <PickerStatus emptyState={<MultiSelectOptionSkeleton text=\"Нет данных\" />} />;\n\tif (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\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) => React.ReactNode;\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) => React.ReactNode;\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 selected = selectedKeys.has(getItemKey(item, codeKey));\n\t\tconst optionDisabled = getOptionDisabled?.(item) ?? false;\n\n\t\treturn (\n\t\t\t<div\n\t\t\t\tkey={`${getItemKey(item, codeKey)}-${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\tclassName={cn(\n\t\t\t\t\tuiStyles.uiSelectOption,\n\t\t\t\t\toptionDisabled && uiStyles.disabled,\n\t\t\t\t\tselected && uiStyles.selected,\n\t\t\t\t\tactive && uiStyles.uiPopupOptionActive\n\t\t\t\t)}\n\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}}>\n\t\t\t\t<div\n\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t}}>\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\tonChange={() => {\n\t\t\t\t\t\t\tif (!optionDisabled) {\n\t\t\t\t\t\t\t\ttoggleOption(item);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonClick={(event) => {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonMouseDown={(event) => {\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"overflowHidden\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tif (!optionDisabled) {\n\t\t\t\t\t\t\tselectOnlyOption(item);\n\t\t\t\t\t\t}\n\t\t\t\t\t}}>\n\t\t\t\t\t{renderItem(item, { selected, active, disabled: optionDisabled, query, highlightQuery })}\n\t\t\t\t</div>\n\t\t\t</div>\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 toolbarRenderer = renderToolbar === undefined ? renderDefaultMultiSelectToolbar : renderToolbar;\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 toolbarRenderer === \"function\" ? toolbarRenderer(renderContext) : null;\n\t\t// const hasToken = tokenNode !== null && tokenNode !== undefined;\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<PickerTriggerInput\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\tdisabled={disabled}\n\t\t\t\t\t\t\t\tvalue={currentQuery}\n\t\t\t\t\t\t\t\tplaceholder={\n\t\t\t\t\t\t\t\t\thasSelectedItems ? undefined : `${placeholder ?? label ?? \"Выберите значения\"} <${items.length}>`\n\t\t\t\t\t\t\t\t}\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\tendAdornment={\n\t\t\t\t\t\t\t\t\t<PickerTriggerActions\n\t\t\t\t\t\t\t\t\t\topen={open}\n\t\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\t\tonToggleMouseDown={triggerController.handleToggleMouseDown}\n\t\t\t\t\t\t\t\t\t\tonToggleClick={triggerController.handleToggleClick}>\n\t\t\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\t\t\tdisabled={!hasSelectedItems}\n\t\t\t\t\t\t\t\t\t\t\tclassName={uiStyles.uiClearButton}\n\t\t\t\t\t\t\t\t\t\t\tdata-ui=\"multi-select-clear-button\"\n\t\t\t\t\t\t\t\t\t\t\tdata-action=\"clear-multi-select\"\n\t\t\t\t\t\t\t\t\t\t\tonClick={clearSelection}\n\t\t\t\t\t\t\t\t\t\t\taria-label=\"Очистить все\">\n\t\t\t\t\t\t\t\t\t\t\t<XIcon />\n\t\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t\t</PickerTriggerActions>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\toverlay={tokenNode}\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\tclassName={uiStyles.uiPopupOptions}\n\t\t\t\t\t\t\t\theader={toolbarNode}>\n\t\t\t\t\t\t\t\t<MultiSelectOptionsWrapper isNoData={isNoData} isLoading={isLoading} error={error}>\n\t\t\t\t\t\t\t\t\t<div className=\"scrollable 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\";\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\tdisabled={disabled || odataModel.isLoading}\n\t\t\tplaceholder={odataModel.placeholder}\n\t\t\terror={odataModel.isError ? \"Ошибка загрузки\" : undefined}\n\t\t/>\n\t);\n};\n","import { useCallback, useState } from \"react\";\n\nimport { ODataMultiSelect } from \"./ODataMultiSelect\";\n\nimport type { ODataDependentSegmentItem } from \"@ryuzaki13/react-foundation-api/odata\";\n\ninterface ODataDependentSegmentMultiSelectProps {\n\titem: ODataDependentSegmentItem;\n\t/**\n\t * Выбранные значения (управляемый компонент)\n\t */\n\tvalues?: Record<string, string[]>;\n\t/**\n\t * Обработчик изменения выбранных значений\n\t */\n\tonChange?: (selected: Record<string, string[]>) => void;\n\t/**\n\t * Ширина одного элемента в `em` единицах.\n\t *\n\t * @default 15\n\t */\n\twidth?: number;\n}\n\nexport const ODataDependentSegmentMultiSelect: React.FC<ODataDependentSegmentMultiSelectProps> = ({\n\titem,\n\tvalues,\n\tonChange,\n\twidth = 15\n}) => {\n\tconst [internalSelectedValues, setInternalSelectedValues] = useState<Record<string, string[]>>({});\n\tconst selectedValues = values ?? internalSelectedValues;\n\tconst widthStyle = `calc(${width}em + var(--width-add))`;\n\n\tconst handleSelectionChange = useCallback(\n\t\t(keys: string[]) => {\n\t\t\tconst nextSelectedValues = {\n\t\t\t\t...selectedValues,\n\t\t\t\t[item.id]: keys\n\t\t\t};\n\n\t\t\tif (!values) {\n\t\t\t\tsetInternalSelectedValues(nextSelectedValues);\n\t\t\t}\n\n\t\t\tonChange?.(nextSelectedValues);\n\t\t},\n\t\t[item.id, onChange, selectedValues, values]\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={selectedValues}\n\t\t\t\tvalue={selectedValues[item.id]}\n\t\t\t\tonChange={handleSelectionChange}\n\t\t\t/>\n\t\t</div>\n\t);\n};\n","import { useState } from \"react\";\n\nimport { flattenODataDependentServices, ODataDependentBaseProps } from \"@ryuzaki13/react-foundation-api/odata\";\n\nimport { ODataDependentSegmentMultiSelect } from \"./ODataDependentSegmentMultiSelect\";\n\ninterface ODataDependentMultiSelectProps extends ODataDependentBaseProps {\n\t/**\n\t * Выбранные значения (управляемый компонент)\n\t */\n\tvalues?: Record<string, string[]>;\n\n\t/**\n\t * Обработчик изменения выбранных значений\n\t */\n\tonChange?: (selected: Record<string, string[]>) => void;\n\n\t/**\n\t * Ширина одного элемента в `em` единицах.\n\t *\n\t * @default 15\n\t */\n\twidth?: number;\n}\n\nexport const ODataDependentMultiSelect: React.FC<ODataDependentMultiSelectProps> = ({\n\twidth = 15,\n\todata,\n\tsegments,\n\tmodel,\n\tvalues,\n\tonChange\n}) => {\n\tconst [internalSelectedValues, setInternalSelectedValues] = useState<Record<string, string[]>>({});\n\tconst selectedValues = values ?? internalSelectedValues;\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={selectedValues}\n\t\t\tonChange={(nextSelectedValues) => {\n\t\t\t\tif (!values) {\n\t\t\t\t\tsetInternalSelectedValues(nextSelectedValues);\n\t\t\t\t}\n\n\t\t\t\tonChange?.(nextSelectedValues);\n\t\t\t}}\n\t\t\twidth={width}\n\t\t/>\n\t));\n};\n","import { MultiSelect } from \"./MultiSelect\";\n\nimport type { UiBaseProps } from \"../../types\";\nimport type { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\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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"}
|