@ryuzaki13/react-foundation-ui 1.2.1 → 1.2.3
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 +1 -1
- package/dist/chunks/{multi-select-Bg7Psslp.js → multi-select-DgSwr3Pf.js} +5 -6
- package/dist/chunks/multi-select-DgSwr3Pf.js.map +1 -0
- package/dist/chunks/{select-DKbSVCp4.js → select-kZQRRj2e.js} +23 -24
- package/dist/chunks/{select-DKbSVCp4.js.map → select-kZQRRj2e.js.map} +1 -1
- package/dist/chunks/useODataSelectBase-CWBR3WCn.js +149 -0
- package/dist/chunks/useODataSelectBase-CWBR3WCn.js.map +1 -0
- package/dist/multi-select/index.js +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/select/index.js +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
- package/dist/tree-select/TreePickerBase.d.ts +3 -1
- package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
- package/dist/tree-select/index.js +233 -213
- package/dist/tree-select/index.js.map +1 -1
- package/package.json +1 -1
- package/storybook-static/assets/{Badge-DGkAgQtD.js → Badge-BIKYTtco.js} +1 -1
- package/storybook-static/assets/{Badge.stories-BNnfMijp.js → Badge.stories-CncojL5C.js} +1 -1
- package/storybook-static/assets/{Button-2V7cFs7U.js → Button-CoI7y0yw.js} +1 -1
- package/storybook-static/assets/{Button-vNsY1Xgh.js → Button-CxnsMm79.js} +1 -1
- package/storybook-static/assets/{Button.stories-qrLBulWZ.js → Button.stories-BQOEmKV6.js} +1 -1
- package/storybook-static/assets/{CheckBox-Dnxk4w_M.js → CheckBox-AaX4I2tK.js} +1 -1
- package/storybook-static/assets/{CheckBox-DeEGRsNS.js → CheckBox-C9xyHCEm.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-CuPBzuQf.js → CheckBox.stories-Bqc_KJoS.js} +1 -1
- package/storybook-static/assets/{Color-KMSTOMOX-3kWYdPbk.js → Color-KMSTOMOX-8EfFozrt.js} +1 -1
- package/storybook-static/assets/{ContextMenu-C1EU4pnG.js → ContextMenu-tRvF17GN.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-BWOdu8nd.js → ContextMenu.stories-CfPs3YF2.js} +1 -1
- package/storybook-static/assets/{DateInput-Qi0iElov.js → DateInput-BEX6gS7B.js} +1 -1
- package/storybook-static/assets/{DateInput-D1rE9ZF6.js → DateInput-C1M5fBun.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-DfNzJVzP.js → DateInput.stories-B5ik5xR6.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-DASkcMx3.js → DateRangePresetSelect-56MmxTDN.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-B5FJLqSK.js → DateRangePresetSelect-CfMrQiwF.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-3ZcfGTpo.js → DateRangePresetSelect.stories-Bn-kss98.js} +1 -1
- package/storybook-static/assets/{Detail-B02ATDwL.js → Detail-BtFR_9Lr.js} +1 -1
- package/storybook-static/assets/{Detail.stories-ehMtdhKV.js → Detail.stories-92t-tnA_.js} +1 -1
- package/storybook-static/assets/{Dialog-CB0KyNOp.js → Dialog-XSnikIme.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-CO5-c6KC.js → Dialog.stories-fqipFzyg.js} +1 -1
- package/storybook-static/assets/{Disclosure-CWvegL_8.js → Disclosure-C6AW6Foa.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-_0z-uGCF.js → Disclosure.stories-Pkrv7McR.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-e6fFOpcs.js → DocsRenderer-JROSPFPF-CwkQtr9r.js} +2 -2
- package/storybook-static/assets/{DropZone-BQryB_S-.js → DropZone-CdkCN0e2.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-viPFVTfL.js → DropZone.stories-BgZ4qgFG.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-CJiWiCWO.js → DropdownMenu-zFlS97JH.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-DwL1eUl0.js → ExpandableActionPanel.stories-B0jfDSj4.js} +1 -1
- package/storybook-static/assets/{Flex-HhZPENBj.js → Flex-C6JDO21X.js} +1 -1
- package/storybook-static/assets/{Flex-c2FgZKph.js → Flex-LnWfxePp.js} +1 -1
- package/storybook-static/assets/{Flex.stories-BdEfqTKQ.js → Flex.stories-vGuYo6Ig.js} +1 -1
- package/storybook-static/assets/{Grid-CXYJrcNO.js → Grid-CDYAcgQ5.js} +1 -1
- package/storybook-static/assets/{Grid-CMUBLPOI.js → Grid-DZhbrDyP.js} +1 -1
- package/storybook-static/assets/{Grid.stories-CSo_R9bk.js → Grid.stories-B44mFBm1.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-DPUCdwDr.js → ImageCropper.stories-DTRleQTH.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-DIEFIwlO.js → ImageRenderer-BC_vga6w.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-BAzbbd54.js → ImageRenderer.stories-INXwAt3u.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-d6p9XR7R.js → ImageView.stories-BpdLIN-r.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-DqBkvrje.js → ImageViewer.stories-Cw7wfnLa.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-DVM6ctfF.js → ImageViewerRuntime-CyAIKnz4.js} +1 -1
- package/storybook-static/assets/{Input-KjqYLUEq.js → Input-BB3KTZHQ.js} +1 -1
- package/storybook-static/assets/{Input-v-SWe_uB.js → Input-D5mvLxWW.js} +1 -1
- package/storybook-static/assets/{Input.stories-0dcZXgca.js → Input.stories-C1w4MjX_.js} +1 -1
- package/storybook-static/assets/{InputDateTime-BMM480ZM.js → InputDateTime-B15GrPaF.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-B8BnTwZN.js → InputDateTime.stories-CxUG6chq.js} +1 -1
- package/storybook-static/assets/{InputFile-vetf3pm3.js → InputFile-DbofxZw1.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-DCg1YCRD.js → InputFile.stories--GtJW-fp.js} +1 -1
- package/storybook-static/assets/{InputFiles-B3lJfRWZ.js → InputFiles-CYpfY5z5.js} +1 -1
- package/storybook-static/assets/{InputFiles-DsMZLICv.js → InputFiles-DFOP6bqq.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-DwLeAv35.js → InputFiles.stories-COfPtsSA.js} +1 -1
- package/storybook-static/assets/{InputImage-DMMraEzR.js → InputImage-BfHuV4-_.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-CMOZu1f6.js → InputImage.stories-DkCbg5QX.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-CoTbJOK9.js → LayoutPicker-CHJiw4_N.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-BXk3mwYX.js → LayoutPicker.stories-BNQJY7ct.js} +1 -1
- package/storybook-static/assets/{Listbox-BQHunK7L.js → Listbox-Ct_C09Jt.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-DxGIgwKd.js → Listbox.stories-DM4uphxZ.js} +1 -1
- package/storybook-static/assets/{Modal-wvQf3E-t.js → Modal-CRy5Q-IO.js} +1 -1
- package/storybook-static/assets/{Modal.stories-CV9fGbCP.js → Modal.stories-BMzL24Va.js} +1 -1
- package/storybook-static/assets/{MultiSelect-BwIbw9ss.js → MultiSelect-BY_6axjT.js} +1 -1
- package/storybook-static/assets/MultiSelect-COcKuFiq.js +2 -0
- package/storybook-static/assets/{MultiSelect.stories-CKbPYanW.js → MultiSelect.stories-Bfksoi8d.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-v6O42GH9.js → NotificationsHost-6esXfRHL.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-DWtIwIMT.js → NotificationsHost.stories-D88sWZTp.js} +1 -1
- package/storybook-static/assets/ODataMultiSelect-Bkod6dU-.js +1 -0
- package/storybook-static/assets/{ODataMultiSelect-B7VmCCyD.js → ODataMultiSelect-D5I110Xb.js} +1 -1
- package/storybook-static/assets/ODataMultiSelect.stories-uDcGeScJ.js +73 -0
- package/storybook-static/assets/{ODataSelect-CHD3MCHd.js → ODataSelect-CwlzYk3r.js} +1 -1
- package/storybook-static/assets/{ODataSelect-BCq3J8js.js → ODataSelect-D_WEdyYt.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-C3G6df2Y.js → ODataSelect.stories-C7v7euCg.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-CFEzZtem.js → ODataTreeMultiSelect-CSBS4VEM.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-BJpkyABJ.js → ODataTreeMultiSelect.stories-CredX_b6.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-Dmk59MWR.js → ODataTreeSelect-DuEXLe7A.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-KV2ngm1a.js → ODataTreeSelect.stories-Dq1FT9Bn.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-xv0hygbe.js → PeriodSelect-DrJErzKP.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-D9VNWc-J.js → PeriodSelect.stories-CYFk1T1O.js} +1 -1
- package/storybook-static/assets/{Popover-DI7zaH4O.js → Popover-DCfnoXMV.js} +1 -1
- package/storybook-static/assets/{Popover.stories-CA57v2N3.js → Popover.stories-D_ZSUJSj.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-3AIccdEE.js → PresetRangeDateInput-CpIFfw3O.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-7pPiYINM.js → PresetRangeDateInput.stories-CKoX_ei2.js} +1 -1
- package/storybook-static/assets/{RadioButton-BGfGiK2D.js → RadioButton-CAlECH22.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-BOeSQ7Qy.js → RadioButton.stories-BIEtJvoM.js} +1 -1
- package/storybook-static/assets/{RadioGroup-BteZ8Zfh.js → RadioGroup-C1pgN3Tl.js} +1 -1
- package/storybook-static/assets/{RadioGroup-BXdWvE2x.js → RadioGroup-Dn9BiTze.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-DdCAD6fi.js → RadioGroup.stories-BQcz94Ou.js} +1 -1
- package/storybook-static/assets/{Select-S1Kq352p.js → Select-BSQe4q10.js} +1 -1
- package/storybook-static/assets/{Select-BA_oiGy1.js → Select-Bcdklx9Y.js} +1 -1
- package/storybook-static/assets/{Select.stories-0y2Tbi0E.js → Select.stories-D2wvcnka.js} +1 -1
- package/storybook-static/assets/{SelectOptionContent-DNO6pn8i.js → SelectOptionContent-B2i9PYpP.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-d1Emzd9y.js → SerializableSelect-B6P4hdhn.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-DLLMZfeg.js → SerializableSelect-WAyfxEJb.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-DlrUNt98.js → SerializableSelect.stories-Nm4NURui.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-PZjf5coN.js → SingleDateTimeInput-CEwwfP6n.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-D-LF20Xf.js → SingleDateTimeInput.stories-CHB3MzMG.js} +1 -1
- package/storybook-static/assets/{Slider-Cnt-h4QU.js → Slider-CxPsFPz5.js} +1 -1
- package/storybook-static/assets/{Slider.stories-CspORXQq.js → Slider.stories-Br6WEtlZ.js} +1 -1
- package/storybook-static/assets/{SliderInput-DKEzvdee.js → SliderInput-DOW0sFqI.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-Ds7ENz3W.js → SliderInput.stories-B0B7pMUV.js} +1 -1
- package/storybook-static/assets/{Sortable-Boktuyds.js → Sortable-BpBzkgoq.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-DVP9I-8-.js → Sortable.stories-CIxN4eWq.js} +1 -1
- package/storybook-static/assets/{Splitter-DjjitTJC.js → Splitter-B0SUV6R6.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-TONEtB2o.js → Splitter.stories-xoiwS0Dj.js} +1 -1
- package/storybook-static/assets/{StateSelect-CKS5OKFD.js → StateSelect-aYkBGK5g.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-1PpI7sB7.js → StateSelect.stories-BmXL9sT7.js} +1 -1
- package/storybook-static/assets/{Switch-DJpASzdE.js → Switch-Ck5umwPZ.js} +1 -1
- package/storybook-static/assets/{Switch.stories-DFrplfI2.js → Switch.stories-u7aYivBX.js} +1 -1
- package/storybook-static/assets/{Table-BhHNM7kb.js → Table-ByKCf_-J.js} +1 -1
- package/storybook-static/assets/{Table.stories-BifwgPO8.js → Table.stories-CHtEQxx6.js} +1 -1
- package/storybook-static/assets/{Tabs-p9UXYlyD.js → Tabs-DMIFjHcg.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-Fiib2sS7.js → Tabs.stories-CewQXOib.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-Gg038VKV.js → TagInput.stories-8s1cUttc.js} +1 -1
- package/storybook-static/assets/{Textarea-SlgV7esV.js → Textarea-C0MD6syk.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-DBFORAfY.js → Textarea.stories-BgfD4BjE.js} +1 -1
- package/storybook-static/assets/{TimePanel-C0P98Tt-.js → TimePanel-EqT2RtLs.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-Dp993HaV.js → TimePanel.stories-TquvDyJA.js} +1 -1
- package/storybook-static/assets/{Toggle-CWy__Mll.js → Toggle-kP7DcMwh.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-BvLgd3ea.js → Toggle.stories-DWp4QITl.js} +1 -1
- package/storybook-static/assets/TreeMultiSelect-CNe8Clp1.js +1 -0
- package/storybook-static/assets/{TreeMultiSelect-CrDJlnbX.js → TreeMultiSelect-SM8sSK8U.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-C3zkS-ak.js → TreeMultiSelect.stories-BsHWzhgq.js} +1 -1
- package/storybook-static/assets/TreePickerBase-C4HDn6rl.js +22 -0
- package/storybook-static/assets/{TreeSelect-CuaoMlYe.js → TreeSelect-CdPAYiqJ.js} +1 -1
- package/storybook-static/assets/{TreeSelect-BrFxwiBP.js → TreeSelect-Ph8AS4Pz.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-rzd0vNoK.js → TreeSelect.stories-CSSIeNDY.js} +1 -1
- package/storybook-static/assets/{TreeTable-uvfUlKoJ.js → TreeTable-BV4eaKVP.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-FUOaBB9J.js → TreeTable.stories-Bqj4u8WT.js} +1 -1
- package/storybook-static/assets/{WithTooltip-7X4HQR7L-LW5ygQJA.js → WithTooltip-7X4HQR7L-DfkweHgM.js} +1 -1
- package/storybook-static/assets/{base-table-DPs5qte-.js → base-table-DR5AGMDH.js} +1 -1
- package/storybook-static/assets/{blocks-C6uFFMmb.js → blocks-Lc8OH6Kn.js} +6 -6
- package/storybook-static/assets/{button-DyEbX-UX.js → button-BugzrKtF.js} +1 -1
- package/storybook-static/assets/{check-box-ByXAYB_w.js → check-box-DIbcopNk.js} +1 -1
- package/storybook-static/assets/{chunk-3LY4VQVK-D0GJRVS7.js → chunk-3LY4VQVK-DeznUmkf.js} +1 -1
- package/storybook-static/assets/{chunk-LITCR56V-CElM9plZ.js → chunk-LITCR56V-CgsluJ-b.js} +1 -1
- package/storybook-static/assets/{contextMenu-BQKOQzU1.js → contextMenu-W5wJLht_.js} +1 -1
- package/storybook-static/assets/{error-SC0Oqs6M.js → error-C7_wICEB.js} +1 -1
- package/storybook-static/assets/{flex-BOqV4dzk.js → flex-oADhFXFK.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-CiEPwtuP.js → floating-ui.react-CTnofZZa.js} +1 -1
- package/storybook-static/assets/formatter-L2YTDE3Q-Sffy4nfH.js +1 -0
- package/storybook-static/assets/{formatters-C29y1vJ_.js → formatters-CkLGLcIQ.js} +1 -1
- package/storybook-static/assets/grid-CbHiOvd1.js +1 -0
- package/storybook-static/assets/{hooks-4Gvtb540.js → hooks-tFsvVXZo.js} +1 -1
- package/storybook-static/assets/{iframe-Cqdlb8-A.js → iframe--uVUQxom.js} +4 -4
- package/storybook-static/assets/{input-BcaISJRy.js → input-Boc_JTE5.js} +1 -1
- package/storybook-static/assets/{lucide-react-BdqrDz6_.js → lucide-react-CsbAWn0Z.js} +1 -1
- package/storybook-static/assets/{mdx-react-shim-Rn_bm6Wj.js → mdx-react-shim-DLwoEMcU.js} +1 -1
- package/storybook-static/assets/{media-dmdQkM5d.js → media-D67bmqBU.js} +1 -1
- package/storybook-static/assets/{misc-C1Uf9TI0.js → misc-wXl6WXKr.js} +1 -1
- package/storybook-static/assets/{notifications-Br3lffDl.js → notifications-BpbpUSCJ.js} +1 -1
- package/storybook-static/assets/{odata-BT-Vuah1.js → odata-ClVp9G1V.js} +1 -1
- package/storybook-static/assets/odata-service-h8z23YIv.js +1 -0
- package/storybook-static/assets/{odataStoryFixtures-CEQgZ8Ju.js → odataStoryFixtures-BLDb5DL3.js} +1 -1
- package/storybook-static/assets/{picker-eODRzsH5.js → picker-D6ug2u6l.js} +1 -1
- package/storybook-static/assets/{popover-Cf-d9CBe.js → popover-C_8XI95k.js} +1 -1
- package/storybook-static/assets/{preset-select-Divqvyhr.js → preset-select-BIBQkEB0.js} +1 -1
- package/storybook-static/assets/{react-18-C8ZBY1Ky.js → react-18-BG1aXPoV.js} +1 -1
- package/storybook-static/assets/{react-oW-8yUPs.js → react-BGKtZuf_.js} +1 -1
- package/storybook-static/assets/{react-dom-DEo6Vc1z.js → react-dom-Bs81e7_0.js} +1 -1
- package/storybook-static/assets/select-ID2qmQtH.js +1 -0
- package/storybook-static/assets/{slider-BgZTddiR.js → slider-BZ72Q894.js} +1 -1
- package/storybook-static/assets/{sortable-BZttsbB-.js → sortable-IKWOgu_t.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-RTCFPKCB-DHMad3_O.js → syntaxhighlighter-RTCFPKCB-DUbCGMD4.js} +1 -1
- package/storybook-static/assets/{text-DX5yXvyz.js → text-DkF4lhBW.js} +1 -1
- package/storybook-static/assets/{theming-x5D2-3Wh.js → theming-8xkNGFYG.js} +1 -1
- package/storybook-static/assets/ui-Dmzx05-N.js +1 -0
- package/storybook-static/assets/{useODataSelectBase-ByD_yhA4.js → useODataSelectBase-BnB7NIiP.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-C-pt6PNC.js → useODataTreeData-06rMzbgp.js} +1 -1
- package/storybook-static/assets/{utils-238J8rpj.js → utils-KKlP_was.js} +1 -1
- package/storybook-static/iframe.html +1 -1
- package/storybook-static/project.json +1 -1
- package/dist/chunks/SelectOptionContent-CI7wq9Oi.js +0 -27
- package/dist/chunks/SelectOptionContent-CI7wq9Oi.js.map +0 -1
- package/dist/chunks/multi-select-Bg7Psslp.js.map +0 -1
- package/dist/chunks/useODataSelectBase-wZ07hQFv.js +0 -125
- package/dist/chunks/useODataSelectBase-wZ07hQFv.js.map +0 -1
- package/storybook-static/assets/MultiSelect-DMbWfmcw.js +0 -2
- package/storybook-static/assets/ODataMultiSelect.stories-B_GztBj9.js +0 -73
- package/storybook-static/assets/TreeMultiSelect-CDFFjZnT.js +0 -1
- package/storybook-static/assets/TreePickerBase-Bn8pSo-u.js +0 -22
- package/storybook-static/assets/formatter-L2YTDE3Q-DfQ24eKP.js +0 -1
- package/storybook-static/assets/grid-DNJaN2X3.js +0 -1
- package/storybook-static/assets/odata-service-QOs47Qvv.js +0 -1
- package/storybook-static/assets/select-B2Yo9S2f.js +0 -1
- package/storybook-static/assets/ui-CuulZK-0.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multi-select-Bg7Psslp.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\theight: calc(100% - var(--space-sm));\n\tmax-width: calc(100% - var(--control-height) * 2);\n\n\t// overflow: hidden;\n\n\t&:empty {\n\t\tdisplay: none;\n\t}\n}\n\n.multiSelectToken {\n\t// font-size: var(--font-size-sm);\n\n\t// flex: 1 1 0%;\n\t// min-width: 0;\n\tmax-width: 70%;\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 { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\nimport { PickerSelectionToolbar } from \"../../picker\";\n\nimport { MultiSelectOption } from \"./MultiSelectOption\";\nimport { MultiSelectToken } from \"./MultiSelectToken\";\n\nimport type { MultiSelectItemState, MultiSelectRenderContext } from \"./MultiSelect\";\n\ninterface MultiSelectRendererConfig {\n\tcodeKey: string;\n\ttextKey?: string;\n\thideCode?: boolean;\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 `${items.length} элемент${items.length > 5 ? \"ов\" : \"а\"})`;\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 { query: currentQuery, setQuery } = usePickerQuery({\n\t\t\topen,\n\t\t\tquery,\n\t\t\tdefaultQuery,\n\t\t\tonQuery,\n\t\t\ttriggerMode\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: setOpen,\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\n\t\t\t\tlabel={label}\n\t\t\t\tdescription={description}\n\t\t\t\tdisabled={disabled}\n\t\t\t\tplaceholder={placeholder}\n\t\t\t\tsize={size}\n\t\t\t\tclassName={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={hasSelectedItems ? undefined : placeholder}\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{tokenNode}\n\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\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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"}
|
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { useEffect as e, useMemo as t, useState as n } from "react";
|
|
2
|
-
import { useODataCollection as r } from "@ryuzaki13/react-foundation-api/odata";
|
|
3
|
-
import { startsWithIgnoringZeros as i } from "@ryuzaki13/react-foundation-lib/formatters";
|
|
4
|
-
//#region src/select/model/useODataSelectBase.ts
|
|
5
|
-
var a = "", o = "";
|
|
6
|
-
function s(e) {
|
|
7
|
-
return e?.length ? [...new Set(e)].sort() : [];
|
|
8
|
-
}
|
|
9
|
-
function c(e, t, n) {
|
|
10
|
-
let r = [];
|
|
11
|
-
for (let i of Object.keys(t).sort()) {
|
|
12
|
-
if (i === e) continue;
|
|
13
|
-
let t = s(n?.[i]);
|
|
14
|
-
t.length && r.push(`${i}:${t.join(o)}`);
|
|
15
|
-
}
|
|
16
|
-
return r.join(a);
|
|
17
|
-
}
|
|
18
|
-
function l(e) {
|
|
19
|
-
let t = /* @__PURE__ */ new Map();
|
|
20
|
-
if (!e) return t;
|
|
21
|
-
for (let n of e.split(a)) {
|
|
22
|
-
let e = n.indexOf(":");
|
|
23
|
-
if (e < 0) continue;
|
|
24
|
-
let r = n.slice(0, e), i = n.slice(e + 1).split(o).filter(Boolean);
|
|
25
|
-
r && i.length && t.set(r, i);
|
|
26
|
-
}
|
|
27
|
-
return t;
|
|
28
|
-
}
|
|
29
|
-
function u({ odata: a, segment: o, model: s, value: u, dependencies: d }) {
|
|
30
|
-
let [f, p] = n(""), [m, h] = n(""), { codeKey: g, searchDebounceDelay: _, minSearchCodeLength: v, minSearchTextLength: y } = s, { data: b, textKey: x, isLoading: S, isError: C, getItems: w, separatedItems: T, findSourceItemsByKeys: E, setFilteredItems: D, debounce: O } = r({
|
|
31
|
-
odata: a,
|
|
32
|
-
model: s
|
|
33
|
-
}), k = T.length, A = o.selectText && x ? x : g, j = t(() => b ? c(g, b.keyPairsMap, d) : "", [
|
|
34
|
-
b,
|
|
35
|
-
g,
|
|
36
|
-
d
|
|
37
|
-
]);
|
|
38
|
-
e(() => {
|
|
39
|
-
if (!b) return;
|
|
40
|
-
let e = b.chain.findIndex((e) => e.codeKey === g), t = l(j), n = (e) => {
|
|
41
|
-
let n = b.chain[e].codeKey, r = t.get(n);
|
|
42
|
-
if (r?.length) return E(n, r);
|
|
43
|
-
};
|
|
44
|
-
for (let t = b.chain.length - 1; t > e; t--) {
|
|
45
|
-
let e = n(t);
|
|
46
|
-
if (e) {
|
|
47
|
-
D(e);
|
|
48
|
-
return;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
for (let t = 0; t < e; t++) {
|
|
52
|
-
let e = n(t);
|
|
53
|
-
if (e) {
|
|
54
|
-
D(e);
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
D(void 0);
|
|
59
|
-
}, [
|
|
60
|
-
b,
|
|
61
|
-
j,
|
|
62
|
-
g,
|
|
63
|
-
E,
|
|
64
|
-
D
|
|
65
|
-
]), e(() => {
|
|
66
|
-
O("search", () => {
|
|
67
|
-
h(f.trim().toLowerCase());
|
|
68
|
-
}, _);
|
|
69
|
-
}, [
|
|
70
|
-
O,
|
|
71
|
-
f,
|
|
72
|
-
_
|
|
73
|
-
]);
|
|
74
|
-
let M = t(() => {
|
|
75
|
-
if (!u?.length || !A) return [];
|
|
76
|
-
let e = new Set(u);
|
|
77
|
-
return T.filter((t) => e.has(t[A]));
|
|
78
|
-
}, [
|
|
79
|
-
T,
|
|
80
|
-
A,
|
|
81
|
-
u
|
|
82
|
-
]), N = t(() => {
|
|
83
|
-
if (!b) return [];
|
|
84
|
-
if (!(m.length >= y)) return w(void 0, M);
|
|
85
|
-
let e = m.length >= y, t = !o.hideCode && m.length >= v && !Number.isNaN(Number(m));
|
|
86
|
-
return w((n, r) => !!(n && r && (t && i(n, m) || e && r.toLowerCase().includes(m))), M);
|
|
87
|
-
}, [
|
|
88
|
-
m,
|
|
89
|
-
w,
|
|
90
|
-
v,
|
|
91
|
-
y,
|
|
92
|
-
b,
|
|
93
|
-
o.hideCode,
|
|
94
|
-
M
|
|
95
|
-
]);
|
|
96
|
-
return {
|
|
97
|
-
query: f,
|
|
98
|
-
setQuery: p,
|
|
99
|
-
debouncedQuery: m,
|
|
100
|
-
selectedItems: M,
|
|
101
|
-
filteredItems: N,
|
|
102
|
-
itemsCount: k,
|
|
103
|
-
isLoading: S,
|
|
104
|
-
isError: C,
|
|
105
|
-
codeKey: g,
|
|
106
|
-
textKey: x,
|
|
107
|
-
selectionKey: A,
|
|
108
|
-
placeholder: t(() => {
|
|
109
|
-
let e = N.length;
|
|
110
|
-
return k ? e < k ? `${o.placeholder} <${e}+>` : `${o.placeholder} <${k > s.maxVisibleItems ? `${s.maxVisibleItems}+` : k}>` : `${o.placeholder} <пусто>`;
|
|
111
|
-
}, [
|
|
112
|
-
N.length,
|
|
113
|
-
k,
|
|
114
|
-
s.maxVisibleItems,
|
|
115
|
-
o.placeholder
|
|
116
|
-
])
|
|
117
|
-
};
|
|
118
|
-
}
|
|
119
|
-
function d(e, t) {
|
|
120
|
-
return e.map((e) => e[t]);
|
|
121
|
-
}
|
|
122
|
-
//#endregion
|
|
123
|
-
export { u as n, d as t };
|
|
124
|
-
|
|
125
|
-
//# sourceMappingURL=useODataSelectBase-wZ07hQFv.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useODataSelectBase-wZ07hQFv.js","names":[],"sources":["../../src/select/model/useODataSelectBase.ts"],"sourcesContent":["import { useEffect, useMemo, useState } from \"react\";\n\nimport { ODataCollectionModel, ODataSelectBaseProps, useODataCollection } from \"@ryuzaki13/react-foundation-api/odata\";\nimport { startsWithIgnoringZeros } from \"@ryuzaki13/react-foundation-lib/formatters\";\nimport { CollectionItem } from \"@ryuzaki13/react-foundation-lib/odata\";\n\ninterface UseODataSelectBaseOptions extends Omit<ODataSelectBaseProps, \"model\" | \"value\"> {\n\tmodel: Required<ODataCollectionModel>;\n\tvalue?: string[];\n}\n\nconst DEPENDENCY_KEY_SEPARATOR = \"\\u0002\";\nconst DEPENDENCY_VALUE_SEPARATOR = \"\\u0001\";\n\nfunction normalizeDependencyValues(values?: readonly string[]) {\n\tif (!values?.length) return [];\n\treturn [...new Set(values)].sort();\n}\n\nfunction createDependencySignature(codeKey: string, availableKeys: Record<string, unknown>, dependencies?: Record<string, string[]>) {\n\tconst parts: string[] = [];\n\n\tfor (const key of Object.keys(availableKeys).sort()) {\n\t\tif (key === codeKey) continue;\n\n\t\tconst values = normalizeDependencyValues(dependencies?.[key]);\n\t\tif (!values.length) continue;\n\n\t\tparts.push(`${key}:${values.join(DEPENDENCY_VALUE_SEPARATOR)}`);\n\t}\n\n\treturn parts.join(DEPENDENCY_KEY_SEPARATOR);\n}\n\nfunction parseDependencySignature(signature: string) {\n\tconst dependencies = new Map<string, string[]>();\n\tif (!signature) return dependencies;\n\n\tfor (const part of signature.split(DEPENDENCY_KEY_SEPARATOR)) {\n\t\tconst separatorIndex = part.indexOf(\":\");\n\t\tif (separatorIndex < 0) continue;\n\n\t\tconst key = part.slice(0, separatorIndex);\n\t\tconst values = part\n\t\t\t.slice(separatorIndex + 1)\n\t\t\t.split(DEPENDENCY_VALUE_SEPARATOR)\n\t\t\t.filter(Boolean);\n\t\tif (key && values.length) {\n\t\t\tdependencies.set(key, values);\n\t\t}\n\t}\n\n\treturn dependencies;\n}\n\nexport function useODataSelectBase({ odata, segment, model, value, dependencies }: UseODataSelectBaseOptions) {\n\tconst [query, setQuery] = useState(\"\");\n\tconst [debouncedQuery, setDebouncedQuery] = useState(\"\");\n\n\tconst { codeKey, searchDebounceDelay, minSearchCodeLength, minSearchTextLength: minSearchLength } = model;\n\n\tconst {\n\t\tdata: rawData,\n\t\ttextKey,\n\t\tisLoading,\n\t\tisError,\n\t\tgetItems,\n\t\tseparatedItems,\n\t\tfindSourceItemsByKeys,\n\t\tsetFilteredItems,\n\t\tdebounce\n\t} = useODataCollection({ odata, model });\n\n\tconst itemsCount = separatedItems.length;\n\tconst selectionKey = segment.selectText && textKey ? textKey : codeKey;\n\n\tconst dependencySignature = useMemo(() => {\n\t\tif (!rawData) return \"\";\n\t\treturn createDependencySignature(codeKey, rawData.keyPairsMap, dependencies);\n\t}, [rawData, codeKey, dependencies]);\n\n\tuseEffect(() => {\n\t\tif (!rawData) return;\n\n\t\tconst selfIndex = rawData.chain.findIndex((c) => c.codeKey === codeKey);\n\t\tconst currentDependencies = parseDependencySignature(dependencySignature);\n\n\t\tconst resolveFilteredItems = (index: number) => {\n\t\t\tconst key = rawData.chain[index].codeKey;\n\t\t\tconst dependenciesValues = currentDependencies.get(key);\n\t\t\tif (dependenciesValues?.length) {\n\t\t\t\treturn findSourceItemsByKeys(key, dependenciesValues);\n\t\t\t}\n\t\t};\n\n\t\tfor (let i = rawData.chain.length - 1; i > selfIndex; i--) {\n\t\t\tconst filteredItems = resolveFilteredItems(i);\n\t\t\tif (filteredItems) {\n\t\t\t\tsetFilteredItems(filteredItems);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < selfIndex; i++) {\n\t\t\tconst filteredItems = resolveFilteredItems(i);\n\t\t\tif (filteredItems) {\n\t\t\t\tsetFilteredItems(filteredItems);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tsetFilteredItems(undefined);\n\t}, [rawData, dependencySignature, codeKey, findSourceItemsByKeys, setFilteredItems]);\n\n\tuseEffect(() => {\n\t\tdebounce(\n\t\t\t\"search\",\n\t\t\t() => {\n\t\t\t\tsetDebouncedQuery(query.trim().toLowerCase());\n\t\t\t},\n\t\t\tsearchDebounceDelay\n\t\t);\n\t}, [debounce, query, searchDebounceDelay]);\n\n\tconst selectedItems = useMemo(() => {\n\t\tif (!value?.length || !selectionKey) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst selectedValues = new Set(value);\n\t\treturn separatedItems.filter((item) => selectedValues.has(item[selectionKey]));\n\t}, [separatedItems, selectionKey, value]);\n\n\tconst filteredItems = useMemo(() => {\n\t\tif (!rawData) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst isFiltered = debouncedQuery.length >= minSearchLength;\n\n\t\tif (!isFiltered) {\n\t\t\treturn getItems(undefined, selectedItems);\n\t\t}\n\n\t\tconst isAheadText = debouncedQuery.length >= minSearchLength;\n\t\tconst isAheadCode = !segment.hideCode && debouncedQuery.length >= minSearchCodeLength && !Number.isNaN(Number(debouncedQuery));\n\n\t\treturn getItems((codeValue: string, textValue: string) => {\n\t\t\tif (codeValue && textValue) {\n\t\t\t\tif (isAheadCode && startsWithIgnoringZeros(codeValue, debouncedQuery)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tif (isAheadText && textValue.toLowerCase().includes(debouncedQuery)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}, selectedItems);\n\t}, [debouncedQuery, getItems, minSearchCodeLength, minSearchLength, rawData, segment.hideCode, selectedItems]);\n\n\tconst placeholder = useMemo(() => {\n\t\tconst filteredItemsLength = filteredItems.length;\n\n\t\tif (!itemsCount) {\n\t\t\treturn `${segment.placeholder} <пусто>`;\n\t\t}\n\n\t\tif (filteredItemsLength < itemsCount) {\n\t\t\treturn `${segment.placeholder} <${filteredItemsLength}+>`;\n\t\t}\n\n\t\treturn `${segment.placeholder} <${itemsCount > model.maxVisibleItems ? `${model.maxVisibleItems}+` : itemsCount}>`;\n\t}, [filteredItems.length, itemsCount, model.maxVisibleItems, segment.placeholder]);\n\n\treturn {\n\t\tquery,\n\t\tsetQuery,\n\t\tdebouncedQuery,\n\t\tselectedItems,\n\t\tfilteredItems,\n\t\titemsCount,\n\t\tisLoading,\n\t\tisError,\n\t\tcodeKey,\n\t\ttextKey,\n\t\tselectionKey,\n\t\tplaceholder\n\t};\n}\n\nexport type ODataSelectBaseModel = ReturnType<typeof useODataSelectBase>;\n\nexport function mapSelectedItemsToValues(items: CollectionItem[], selectionKey: string) {\n\treturn items.map((item) => item[selectionKey]);\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-Cqdlb8-A.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a}from"./utils-238J8rpj.js";import{o as ee,t as o}from"./lucide-react-BdqrDz6_.js";import{i as s,t as c}from"./text-DX5yXvyz.js";import{n as l,t as u}from"./ui.module-wFHXkJzp.js";import{t as te}from"./CheckBox-Dnxk4w_M.js";import{D as ne,S as re,T as ie,a as d,b as f,d as p,g as m,l as ae,m as oe,r as se,s as ce,t as h,v as g,w as _}from"./picker-eODRzsH5.js";import{n as le,t as ue}from"./SelectOptionContent-DNO6pn8i.js";import{t as v}from"./check-box-ByXAYB_w.js";function y({item:e,textKey:t,codeKey:n,highlight:r}){return(0,b.jsx)(ue,{label:e[t],code:n&&e[n],highlight:r})}var b,x=t((()=>{le(),b=r(),y.__docgenInfo={description:"Отдельная опция внутри `MultiSelect`. Отрисовывает состояние выбора и подсветку текста для найденных совпадений.",methods:[],displayName:`MultiSelectOption`,props:{item:{required:!0,tsType:{name:`CollectionItem`},description:``},textKey:{required:!0,tsType:{name:`string`},description:``},codeKey:{required:!1,tsType:{name:`string`},description:``},highlight:{required:!1,tsType:{name:`string`},description:``},selected:{required:!0,tsType:{name:`boolean`},description:``}}}})),S,C,w,T,E=t((()=>{S=`_9oSdQi`,C=`iobHig`,w=`yatXso`,T={multiSelect:S,multiSelectTokens:C,multiSelectToken:w}}));function D({value:e}){return e?(0,O.jsx)(`div`,{className:T.multiSelectTokens,children:(0,O.jsx)(`div`,{className:T.multiSelectToken,children:e})}):null}var O,de=t((()=>{E(),O=r(),D.__docgenInfo={description:"Токен выбранного значения в `MultiSelect`. Показывает выбранный элемент и кнопку его удаления из текущего набора.",methods:[],displayName:`MultiSelectToken`,props:{value:{required:!0,tsType:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]},description:``}}}}));function k(e,t,n){if(n)return n;let r=e[0];return r?Object.keys(r).find(e=>e!==t)??t:t}function A(e,t,n){if(e.length===0)return;if(e.length>1)return`${e.length} элемент${e.length>5?`ов`:`а`})`;let r=k(e,t,n);return e[0]?.[r]??e[0]?.[t]}function fe(e){return function(t){return(0,j.jsx)(D,{value:A(t.selectedItems,e.codeKey,e.textKey)})}}function pe(e){return(0,j.jsx)(f,{onSelectAll:e.selectAll,onDeselectAll:e.deselectAll})}function me(e){return function(t,n){return(0,j.jsx)(y,{item:t,selected:n.selected,highlight:n.highlightQuery,textKey:k([t],e.codeKey,e.textKey),codeKey:e.hideCode?void 0:e.codeKey})}}var j,M=t((()=>{h(),x(),de(),j=r(),pe.__docgenInfo={description:``,methods:[],displayName:`renderDefaultMultiSelectToolbar`,props:{selectedItems:{required:!0,tsType:{name:`Array`,elements:[{name:`CollectionItem`}],raw:`CollectionItem[]`},description:``},committedSelectedItems:{required:!0,tsType:{name:`Array`,elements:[{name:`CollectionItem`}],raw:`CollectionItem[]`},description:``},availableItems:{required:!0,tsType:{name:`Array`,elements:[{name:`CollectionItem`}],raw:`CollectionItem[]`},description:``},query:{required:!0,tsType:{name:`string`},description:``},open:{required:!0,tsType:{name:`boolean`},description:``},clearSelection:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},selectAll:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},deselectAll:{required:!0,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}}}}));function N({text:e,isError:t}){return(0,P.jsxs)(`div`,{className:l.uiPopupOption,children:[(0,P.jsx)(`span`,{className:l.uiPopupOptionIcon}),(0,P.jsx)(s,{color:t?`error`:`primary`,children:e})]})}var P,F=t((()=>{c(),u(),P=r(),N.__docgenInfo={description:"Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.",methods:[],displayName:`MultiSelectOptionSkeleton`,props:{text:{required:!0,tsType:{name:`string`},description:``},isError:{required:!1,tsType:{name:`boolean`},description:``}}}}));function he({isNoData:e,isLoading:t,error:n,children:r}){return e?(0,B.jsx)(g,{emptyState:(0,B.jsx)(N,{text:`Нет данных`})}):t?(0,B.jsx)(g,{loadingState:(0,B.jsx)(N,{text:`Загрузка...`})}):n?(0,B.jsx)(g,{errorState:(0,B.jsx)(N,{isError:!0,text:`Ошибка загрузки`})}):(0,B.jsx)(B.Fragment,{children:r})}function I(e,t){return e[t]}function L(e,t,n){return Array.from(new Set([e[n],e[t],...Object.values(e)]))}function ge(e,t,n){if(e.length!==t.length)return!1;let r=new Set(t.map(e=>I(e,n)));return e.every(e=>r.has(I(e,n)))}function R({entries:e,listId:t,activeIndex:n,selectedKeys:r,codeKey:a,query:ee,highlightQuery:o,getOptionDisabled:s,getOptionId:c,setOptionRef:u,toggleOption:ne,selectOnlyOption:re,renderItem:ie}){return e.map(({item:e,index:d})=>{let f=d===n,p=r.has(I(e,a)),m=s?.(e)??!1;return(0,B.jsxs)(`div`,{id:c(t,d),ref:e=>u(d,e),role:`option`,"aria-selected":p,"aria-disabled":m||void 0,className:i(l.uiSelectOption,m&&l.disabled,p&&l.selected,f&&l.uiPopupOptionActive),onMouseDown:e=>{e.preventDefault()},children:[(0,B.jsx)(`div`,{onClick:e=>{e.stopPropagation()},children:(0,B.jsx)(te,{value:p,disabled:m,onChange:()=>{m||ne(e)},onClick:e=>{e.stopPropagation()},onMouseDown:e=>{e.stopPropagation()}})}),(0,B.jsx)(`div`,{className:`overflowHidden`,onClick:()=>{m||re(e)},children:ie(e,{selected:p,active:f,disabled:m,query:ee,highlightQuery:o})})]},`${I(e,a)}-${d}`)})}var z,B,_e,V,H=t((()=>{z=e(n(),1),a(),o(),v(),h(),_(),u(),M(),E(),F(),B=r(),_e=[],V=(0,z.forwardRef)(({codeKey:e,textKey:t,hideCode:n,items:r,value:i,onChange:a,label:o,description:s,placeholder:c,size:u,query:te,defaultQuery:f,highlightQuery:h,onQuery:g,defaultFilter:_=!0,onOpen:le,onClose:ue,getOptionDisabled:v,disabled:y,error:b,isLoading:x,renderToken:S,renderToolbar:C,renderItem:w},E)=>{let D=(0,z.useRef)(null),[O,de]=(0,z.useState)(!1),A=`search-multi`,j=i??_e,M=(0,z.useMemo)(()=>new Set(j.map(t=>I(t,e))),[e,j]),N=(0,z.useMemo)(()=>r.filter(t=>!M.has(I(t,e))),[e,M,r]),P=(0,z.useMemo)(()=>k([...j,...r],e,t),[e,j,r,t]),{query:F,setQuery:V}=ce({open:O,query:te,defaultQuery:f,onQuery:g,triggerMode:A}),H=p({options:j,query:F,enabled:_,getSearchText:t=>L(t,e,P)}),U=p({options:N,query:F,enabled:_,getSearchText:t=>L(t,e,P)}),W=(0,z.useMemo)(()=>[...H,...U],[U,H]),ve=H.length>0?0:-1,{draftValue:G,setDraftValue:K,prepareOpen:ye}=d({value:j,open:O,onCommit:a,onOpen:le,onClose:ue,isEqual:(t,n)=>ge(t,n,e)}),q=(0,z.useMemo)(()=>new Set(G.map(t=>I(t,e))),[e,G]),be=(0,z.useMemo)(()=>({selectedItems:G,committedSelectedItems:j,selectedKeys:q,open:O}),[j,G,O,q]),J=(0,z.useCallback)(e=>v?.(e,be)??!1,[v,be]),{activeIndex:Y,context:xe,floatingStyles:Se,getFloatingProps:Ce,setReference:we,setFloating:Te,setOptionRef:Ee,close:De,openList:Oe,toggleOpen:ke,selectActiveOption:Ae,handleReferenceKeyDown:je,handleFloatingKeyDown:Me,getOptionId:Ne,getActiveOptionId:Pe}=ae({options:W,selectedIndex:ve,open:O,onOpenChange:de,onSelect:void 0,disabled:y,getOptionDisabled:J,closeOnSelect:!1,allowOpenWithoutOptions:!0,triggerMode:A}),Fe=h??F,X=t=>{let n=I(t,e);K(r=>r.some(t=>I(t,e)===n)?r.filter(t=>I(t,e)!==n):J(t)?r:[...r,t])},Ie=e=>{if(D.current=e,typeof E==`function`){E(e);return}E&&(E.current=e)},Le=()=>{K([]),O||a([])},Re=()=>{K(t=>{let n=[...t],r=new Set(t.map(t=>I(t,e)));for(let t of W){let i=I(t,e);!r.has(i)&&!J(t)&&(r.add(i),n.push(t))}return n})},ze=()=>{K([])},Z=e=>{J(e)||(K([e]),De())},Be=O?G:j,Ve=Be.length>0,He={selectedItems:Be,committedSelectedItems:j,availableItems:U,query:F,open:O,clearSelection:Le,selectAll:Re,deselectAll:ze},Ue=S===void 0?fe({codeKey:e,textKey:P}):S,We=C===void 0?pe:C,Ge=w??me({codeKey:e,textKey:P,hideCode:n}),Ke=typeof Ue==`function`?Ue(He):null,qe=typeof We==`function`?We(He):null,Q=H.map((e,t)=>({item:e,index:t})),Je=U.map((e,t)=>({item:e,index:t+Q.length})),Ye=!x&&!b&&W.length===0,$=se({mode:A,open:O,currentQuery:F,hasDisplayValue:!1,inputRef:D,setQuery:V,openList:Oe,close:De,toggleOpen:ke,onBeforeOpen:()=>{O||ye()}});return(0,B.jsx)(ne,{label:o,description:s,disabled:y,placeholder:c,size:u,className:T.multiSelect,children:({controlId:t,labelId:n,describedBy:r})=>{let i=`${t}-listbox`;return(0,B.jsxs)(B.Fragment,{children:[(0,B.jsx)(oe,{ref:Ie,rootRef:we,id:t,type:`text`,role:`combobox`,autoComplete:`off`,disabled:y,value:F,placeholder:Ve?void 0:c,"aria-labelledby":n,"aria-describedby":r,"aria-haspopup":`listbox`,"aria-expanded":O,"aria-controls":O?i:void 0,"aria-autocomplete":`list`,"aria-activedescendant":O?Pe(i):void 0,rootClassName:`flex alignItemsCenter`,endAdornment:(0,B.jsxs)(m,{open:O,disabled:y,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,children:[Ke,(0,B.jsx)(`button`,{type:`button`,disabled:!Ve,className:l.uiClearButton,"data-ui":`multi-select-clear-button`,"data-action":`clear-multi-select`,onClick:Le,"aria-label":`Очистить все`,children:(0,B.jsx)(ee,{})})]}),onChange:e=>{$.handleTriggerInputChange(e.target.value)},onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{je(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{if(Y>=0){let e=W[Y];if(e){X(e);return}}Ae()},enableClosedArrowDownOpen:!0,suppressClosedArrowUp:!0})}}),(0,B.jsx)(re,{open:O,context:xe,floatingStyles:Se,listId:i,labelId:n,descriptionId:r,activeOptionId:O?Pe(i):void 0,setFloating:Te,getFloatingProps:Ce,onKeyDown:Me,initialFocus:-1,returnFocus:!1,tabIndex:-1,className:l.uiPopupOptions,header:qe,children:(0,B.jsx)(he,{isNoData:Ye,isLoading:x,error:b,children:(0,B.jsxs)(`div`,{className:`scrollable h100`,children:[(0,B.jsx)(R,{entries:Q,listId:i,activeIndex:Y,selectedKeys:q,codeKey:e,query:F,highlightQuery:Fe,getOptionDisabled:J,getOptionId:Ne,setOptionRef:Ee,toggleOption:X,selectOnlyOption:Z,renderItem:Ge}),Q.length>0&&N.length>0&&(0,B.jsx)(ie,{className:`marginBlockSm`}),(0,B.jsx)(R,{entries:Je,listId:i,activeIndex:Y,selectedKeys:q,codeKey:e,query:F,highlightQuery:Fe,getOptionDisabled:J,getOptionId:Ne,setOptionRef:Ee,toggleOption:X,selectOnlyOption:Z,renderItem:Ge})]})})})]})}})}),V.displayName=`MultiSelect`,V.__docgenInfo={description:`Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.
|
|
2
|
-
Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.`,methods:[],displayName:`MultiSelect`,props:{renderToken:{required:!1,tsType:{name:`union`,raw:`((context: TContext) => React.ReactNode) | null | false`,elements:[{name:`unknown`},{name:`null`},{name:`literal`,value:`false`}]},description:``},renderToolbar:{required:!1,tsType:{name:`union`,raw:`((context: TContext) => React.ReactNode) | null | false`,elements:[{name:`unknown`},{name:`null`},{name:`literal`,value:`false`}]},description:``},renderItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: CollectionItem, state: MultiSelectItemState) => React.ReactNode`,signature:{arguments:[{type:{name:`CollectionItem`},name:`item`},{type:{name:`MultiSelectItemState`},name:`state`}],return:{name:`ReactReactNode`,raw:`React.ReactNode`}}},description:``},label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},codeKey:{required:!0,tsType:{name:`string`},description:``},textKey:{required:!1,tsType:{name:`string`},description:``},hideCode:{required:!1,tsType:{name:`boolean`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},highlightQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},defaultFilter:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TOption`}],raw:`TOption[]`},description:``},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: TOption, context: MultiSelectOptionDisableContext) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`item`},{type:{name:`MultiSelectOptionDisableContext`},name:`context`}],return:{name:`boolean`}}},description:``},onOpen:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onClose:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: TOption[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TOption`}],raw:`TOption[]`},name:`value`}],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``}}}}));export{H as n,V as t};
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{C as r}from"./iframe-Cqdlb8-A.js";import{t as i}from"./jsx-runtime-BBQGix-2.js";import{a,s as o}from"./odata-BT-Vuah1.js";import{n as s,r as c,t as l}from"./useODataSelectBase-ByD_yhA4.js";import{n as u,t as d}from"./MultiSelect-DMbWfmcw.js";import{a as f,i as p,n as m,r as h,s as g,t as _}from"./odataStoryFixtures-CEQgZ8Ju.js";function v({odata:e,segment:t,model:n,value:r,dependencies:i,onChange:a}){let o=c({odata:e,segment:t,model:n,value:r,dependencies:i}),l=e=>{a(s(e,o.selectionKey))};return{...o,handleChange:l}}var y=n((()=>{l()})),b,x,S=n((()=>{r(),o(),y(),u(),b=i(),x=({odata:e,segment:t,model:n,label:r,description:i,disabled:o,value:s,dependencies:c,onChange:l,size:u})=>{let f=v({odata:e,segment:t,model:a(n),value:s,dependencies:c,onChange:l});return(0,b.jsx)(d,{label:r,description:i,size:u,codeKey:f.codeKey,textKey:f.textKey,hideCode:t.hideCode??e.hideCode,items:f.filteredItems,value:f.selectedItems,onChange:f.handleChange,onQuery:f.setQuery,query:f.query,defaultFilter:!1,highlightQuery:f.debouncedQuery,disabled:o||f.isLoading,placeholder:f.placeholder,error:f.isError?`Ошибка загрузки`:void 0})},x.__docgenInfo={description:``,methods:[],displayName:`ODataMultiSelect`}})),C=e({BasicDivision:()=>k,CollectionError:()=>I,HideCode:()=>A,LinkedFilters:()=>N,LoadingState:()=>P,MetadataError:()=>F,SelectTextValue:()=>j,StaticDependency:()=>M,__namedExportsOrder:()=>L,default:()=>O});function w({initialValue:e=[],odata:t=m,model:n=_,segment:r=h,dependencies:i,label:a=`OData MultiSelect`,description:o}){let[s,c]=(0,E.useState)(e);return(0,D.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,D.jsx)(x,{label:a,description:o,odata:t,model:n,segment:r,value:s,dependencies:i,onChange:c}),(0,D.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,s.length?s.join(`, `):`пусто`]})]})}function T(){let[e,t]=(0,E.useState)([f.region]),[n,r]=(0,E.useState)([f.branch,f.branchAlt]),[i,a]=(0,E.useState)([f.team]),[o,s]=(0,E.useState)([f.owner,f.ownerAlt]),c=e.length?{REGION:e}:void 0,l=e.length&&n.length?{REGION:e,BRANCH:n}:c,u=e.length&&n.length&&i.length?{REGION:e,BRANCH:n,TEAM:i}:l;return(0,D.jsxs)(`div`,{style:{display:`grid`,gap:16,maxWidth:720},children:[(0,D.jsx)(x,{label:`Регион`,description:`Корневой фильтр для цепочки. После смены значения downstream-фильтры сбрасываются.`,odata:m,model:{..._,codeKey:`REGION`},segment:{placeholder:`Регион`},value:e,onChange:e=>{t(e),r([]),a([]),s([])}}),(0,D.jsx)(x,{label:`Подразделение`,description:`Выбор нескольких подразделений внутри выбранных регионов.`,odata:m,model:{..._,codeKey:`BRANCH`},segment:{placeholder:`Подразделение`},dependencies:c,value:n,onChange:e=>{r(e),a([]),s([])}}),(0,D.jsx)(x,{label:`Команда`,description:`Третий уровень зависит от текущего набора подразделений.`,odata:m,model:{..._,codeKey:`TEAM`},segment:{placeholder:`Команда`},dependencies:l,value:i,onChange:e=>{a(e),s([])}}),(0,D.jsx)(x,{label:`Ответственный`,description:`Leaf-уровень для выбранных команд.`,odata:m,model:{..._,codeKey:`OWNER`},segment:{placeholder:`Ответственный`},dependencies:u,value:o,onChange:s}),(0,D.jsxs)(`div`,{style:{display:`grid`,gap:4,fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[(0,D.jsxs)(`div`,{children:[`Регион: `,e.length?e.join(`, `):`пусто`]}),(0,D.jsxs)(`div`,{children:[`Подразделение: `,n.length?n.join(`, `):`пусто`]}),(0,D.jsxs)(`div`,{children:[`Команда: `,i.length?i.join(`, `):`пусто`]}),(0,D.jsxs)(`div`,{children:[`Ответственный: `,o.length?o.join(`, `):`пусто`]})]})]})}var E,D,O,k,A,j,M,N,P,F,I,L,R=n((()=>{E=t(r(),1),p(),S(),D=i(),O={title:`Shared/UI/ODataMultiSelect`,component:x,decorators:[g],parameters:{atomicCanvas:!0,layout:`padded`,odataMockMode:`success`},args:{label:`Регион`,description:`Пример OData MultiSelect на основе конфигурации ui control.`,odata:m,model:_,segment:h,value:[],onChange:()=>{}},argTypes:{onChange:{control:!1},value:{control:!1},dependencies:{control:!1}}},k={name:`Базовый регион`,render:()=>(0,D.jsx)(w,{label:`Регион`,description:`Базовая настройка из multiSelectConfig: выбор кодов REGION с текстовым отображением.`,model:{..._,codeKey:`REGION`},segment:{placeholder:`Регион`},initialValue:[f.region]})},A={name:`Скрытый код`,render:()=>(0,D.jsx)(w,{label:`Подразделение`,description:`Сценарий segment.hideCode: в списке и токене показывается только текст без кода.`,model:{..._,codeKey:`BRANCH`},segment:{placeholder:`Подразделение`,hideCode:!0},initialValue:[f.branch,f.branchAlt]})},j={name:`Выбор текста вместо кода`,render:()=>(0,D.jsx)(w,{label:`Регион по тексту`,description:`Сценарий segment.selectText: наружу возвращаются текстовые значения, а не коды.`,model:{..._,codeKey:`REGION`},segment:{placeholder:`Регион`,selectText:!0},initialValue:[f.regionText]})},M={name:`Зависимость от региона`,render:()=>(0,D.jsx)(w,{label:`Подразделение c зависимостью`,description:`Фильтрация подразделений по уже выбранному региону через props.dependencies.`,model:{..._,codeKey:`BRANCH`},segment:{placeholder:`Подразделение`},dependencies:{REGION:[f.region]},initialValue:[f.branch]})},N={name:`Связанная цепочка фильтров`,render:()=>(0,D.jsx)(T,{})},P={name:`Состояние загрузки`,parameters:{odataMockMode:`loading`},render:()=>(0,D.jsx)(w,{label:`Команда`,description:`Mock с задержкой ответа, чтобы проверить loading-state и skeleton.`,model:{..._,codeKey:`TEAM`},segment:{placeholder:`Команда`}})},F={name:`Ошибка metadata`,parameters:{odataMockMode:`metadataError`},render:()=>(0,D.jsx)(w,{label:`Регион`,description:`Сервис возвращает ошибку metadata. Полезно для проверки поведения хука useODataEntity.`,model:{..._,codeKey:`REGION`},segment:{placeholder:`Регион`}})},I={name:`Ошибка коллекции`,parameters:{odataMockMode:`collectionError`},render:()=>(0,D.jsx)(w,{label:`Ответственный`,description:`Metadata доступна, но загрузка коллекции завершается ошибкой.`,model:{..._,codeKey:`OWNER`},segment:{placeholder:`Ответственный`}})},k.parameters={...k.parameters,docs:{...k.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
name: "Базовый регион",
|
|
3
|
-
render: () => <StatefulODataMultiSelect label="Регион" description="Базовая настройка из multiSelectConfig: выбор кодов REGION с текстовым отображением." model={{
|
|
4
|
-
...baseModel,
|
|
5
|
-
codeKey: "REGION"
|
|
6
|
-
}} segment={{
|
|
7
|
-
placeholder: "Регион"
|
|
8
|
-
}} initialValue={[storyValues.region]} />
|
|
9
|
-
}`,...k.parameters?.docs?.source}}},A.parameters={...A.parameters,docs:{...A.parameters?.docs,source:{originalSource:`{
|
|
10
|
-
name: "Скрытый код",
|
|
11
|
-
render: () => <StatefulODataMultiSelect label="Подразделение" description="Сценарий segment.hideCode: в списке и токене показывается только текст без кода." model={{
|
|
12
|
-
...baseModel,
|
|
13
|
-
codeKey: "BRANCH"
|
|
14
|
-
}} segment={{
|
|
15
|
-
placeholder: "Подразделение",
|
|
16
|
-
hideCode: true
|
|
17
|
-
}} initialValue={[storyValues.branch, storyValues.branchAlt]} />
|
|
18
|
-
}`,...A.parameters?.docs?.source}}},j.parameters={...j.parameters,docs:{...j.parameters?.docs,source:{originalSource:`{
|
|
19
|
-
name: "Выбор текста вместо кода",
|
|
20
|
-
render: () => <StatefulODataMultiSelect label="Регион по тексту" description="Сценарий segment.selectText: наружу возвращаются текстовые значения, а не коды." model={{
|
|
21
|
-
...baseModel,
|
|
22
|
-
codeKey: "REGION"
|
|
23
|
-
}} segment={{
|
|
24
|
-
placeholder: "Регион",
|
|
25
|
-
selectText: true
|
|
26
|
-
}} initialValue={[storyValues.regionText]} />
|
|
27
|
-
}`,...j.parameters?.docs?.source}}},M.parameters={...M.parameters,docs:{...M.parameters?.docs,source:{originalSource:`{
|
|
28
|
-
name: "Зависимость от региона",
|
|
29
|
-
render: () => <StatefulODataMultiSelect label="Подразделение c зависимостью" description="Фильтрация подразделений по уже выбранному региону через props.dependencies." model={{
|
|
30
|
-
...baseModel,
|
|
31
|
-
codeKey: "BRANCH"
|
|
32
|
-
}} segment={{
|
|
33
|
-
placeholder: "Подразделение"
|
|
34
|
-
}} dependencies={{
|
|
35
|
-
REGION: [storyValues.region]
|
|
36
|
-
}} initialValue={[storyValues.branch]} />
|
|
37
|
-
}`,...M.parameters?.docs?.source}}},N.parameters={...N.parameters,docs:{...N.parameters?.docs,source:{originalSource:`{
|
|
38
|
-
name: "Связанная цепочка фильтров",
|
|
39
|
-
render: () => <LinkedFiltersDemo />
|
|
40
|
-
}`,...N.parameters?.docs?.source}}},P.parameters={...P.parameters,docs:{...P.parameters?.docs,source:{originalSource:`{
|
|
41
|
-
name: "Состояние загрузки",
|
|
42
|
-
parameters: {
|
|
43
|
-
odataMockMode: "loading"
|
|
44
|
-
},
|
|
45
|
-
render: () => <StatefulODataMultiSelect label="Команда" description="Mock с задержкой ответа, чтобы проверить loading-state и skeleton." model={{
|
|
46
|
-
...baseModel,
|
|
47
|
-
codeKey: "TEAM"
|
|
48
|
-
}} segment={{
|
|
49
|
-
placeholder: "Команда"
|
|
50
|
-
}} />
|
|
51
|
-
}`,...P.parameters?.docs?.source}}},F.parameters={...F.parameters,docs:{...F.parameters?.docs,source:{originalSource:`{
|
|
52
|
-
name: "Ошибка metadata",
|
|
53
|
-
parameters: {
|
|
54
|
-
odataMockMode: "metadataError"
|
|
55
|
-
},
|
|
56
|
-
render: () => <StatefulODataMultiSelect label="Регион" description="Сервис возвращает ошибку metadata. Полезно для проверки поведения хука useODataEntity." model={{
|
|
57
|
-
...baseModel,
|
|
58
|
-
codeKey: "REGION"
|
|
59
|
-
}} segment={{
|
|
60
|
-
placeholder: "Регион"
|
|
61
|
-
}} />
|
|
62
|
-
}`,...F.parameters?.docs?.source}}},I.parameters={...I.parameters,docs:{...I.parameters?.docs,source:{originalSource:`{
|
|
63
|
-
name: "Ошибка коллекции",
|
|
64
|
-
parameters: {
|
|
65
|
-
odataMockMode: "collectionError"
|
|
66
|
-
},
|
|
67
|
-
render: () => <StatefulODataMultiSelect label="Ответственный" description="Metadata доступна, но загрузка коллекции завершается ошибкой." model={{
|
|
68
|
-
...baseModel,
|
|
69
|
-
codeKey: "OWNER"
|
|
70
|
-
}} segment={{
|
|
71
|
-
placeholder: "Ответственный"
|
|
72
|
-
}} />
|
|
73
|
-
}`,...I.parameters?.docs?.source}}},L=[`BasicDivision`,`HideCode`,`SelectTextValue`,`StaticDependency`,`LinkedFilters`,`LoadingState`,`MetadataError`,`CollectionError`]}));R();export{k as BasicDivision,I as CollectionError,A as HideCode,N as LinkedFilters,P as LoadingState,F as MetadataError,j as SelectTextValue,M as StaticDependency,L as __namedExportsOrder,O as default,R as n,C as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-Cqdlb8-A.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,c as a,i as o,n as s,o as c,r as l,s as u,t as d,u as f}from"./TreePickerBase-Bn8pSo-u.js";function p(e,t){if(e.size!==0){if(e.size===1){let n=t.nodeById.get([...e][0]);return n?n.code&&n.code!==n.label?`${n.label} · ${n.code}`:n.label:void 0}return`Выбрано ${e.size} узл.`}}function m({label:e,description:t,disabled:n,placeholder:r=`Выберите значения`,size:s,nodes:c,value:m,onChange:_,query:v,defaultQuery:y,onQuery:b,isLoading:x,error:S,optionsLayout:C=`tree`}){let w=(0,h.useMemo)(()=>l(c),[c]),T=(0,h.useMemo)(()=>a(m,w),[w,m]),E=(0,h.useMemo)(()=>i(T,w),[T,w]),D=(0,h.useMemo)(()=>p(T,w),[T,w]);return(0,g.jsx)(d,{label:e,description:t,disabled:n,placeholder:r,size:s,nodes:c,selectedIds:E.selectedIds,partialIds:E.partialIds,selectionMode:`multi`,optionsLayout:C,bulkActions:{onSelectAll:()=>{_(f(o(w),w))},onDeselectAll:()=>_({})},triggerMode:`search`,selectedSummary:D,query:v,defaultQuery:y,onQuery:b,onNodeActivate:e=>_(u(m,e.id,w)),onClearSelection:()=>_({}),isLoading:x,error:S})}var h,g,_=t((()=>{h=e(n(),1),c(),s(),g=r(),m.__docgenInfo={description:``,methods:[],displayName:`TreeMultiSelect`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"Выберите значения"`,computed:!1}},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:`Определяет обычное раскрываемое дерево или полностью открытый адаптивный набор колонок.`,defaultValue:{value:`"tree"`,computed:!1}}},composes:[`Omit`]}}));export{_ as n,m as t};
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{C as n}from"./iframe-Cqdlb8-A.js";import{t as r}from"./jsx-runtime-BBQGix-2.js";import{a as i,i as a}from"./utils-238J8rpj.js";import{A as o,o as s,t as c,vt as l,wt as u}from"./lucide-react-BdqrDz6_.js";import{n as d,t as f}from"./ui.module-wFHXkJzp.js";import{t as p}from"./CheckBox-Dnxk4w_M.js";import{a as m}from"./Input-KjqYLUEq.js";import{t as h}from"./input-BcaISJRy.js";import{D as g,S as _,b as ee,g as te,l as ne,m as re,r as ie,s as ae,t as oe,v as se}from"./picker-eODRzsH5.js";import{n as v,t as ce}from"./SelectOptionContent-DNO6pn8i.js";import{t as le}from"./check-box-ByXAYB_w.js";function y(e,t){return`${e}::${t}`}function ue(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=new Map,o=0,s=(e,c)=>{t.set(e.id,e),n.set(e.id,c),i.set(e.id,o++),a.set(y(e.codeKey,e.value),e.id);let l=(e.children??[]).map(e=>e.id);r.set(e.id,l);for(let t of e.children??[])s(t,e.id)};for(let t of e)s(t);return{rootIds:e.map(e=>e.id),nodeById:t,parentById:n,childrenById:r,preorderIndexById:i,nodeIdByCodeValue:a}}function de(e,t){if(e)return t.nodeIdByCodeValue.get(y(e.codeKey,e.value))}function b(e,t){let n=new Set;if(!e)return n;for(let[r,i]of Object.entries(e))for(let e of i){let i=t.nodeIdByCodeValue.get(y(r,e));i&&n.add(i)}return T(n,t)}function x(e,t){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1)),r={};for(let e of n){let n=t.nodeById.get(e);n&&(r[n.codeKey]=r[n.codeKey]??[],r[n.codeKey].push(n.value))}return r}function S(e,t){let n=[],r=t.parentById.get(e);for(;r;)n.push(r),r=t.parentById.get(r);return n}function fe(e,t,n){let r=n.parentById.get(e);for(;r;){if(r===t)return!0;r=n.parentById.get(r)}return!1}function C(e,t,n){for(let r of[...e])fe(r,t,n)&&e.delete(r)}function w(e,t,n){if(t.has(e))return!0;if(n.nodeById.get(e)?.disabled)return!1;let r=n.childrenById.get(e)??[];return r.length===0?!1:r.every(e=>w(e,t,n))}function T(e,t){let n=new Set(e);for(let e of[...n])S(e,t).some(e=>n.has(e))&&n.delete(e);let r=[...t.nodeById.keys()].sort((e,n)=>(t.preorderIndexById.get(n)??0)-(t.preorderIndexById.get(e)??0));for(let e of r){let r=t.childrenById.get(e)??[];r.length===0||n.has(e)||t.nodeById.get(e)?.disabled||r.every(e=>w(e,n,t))&&(C(n,e,t),n.add(e))}return n}function pe(e,t,n){let r=n.parentById.get(t);for(;r;){if(e.has(r)){e.delete(r);for(let t of k(n,n.childrenById.get(r)??[]))e.add(t);return!0}r=n.parentById.get(r)}return!1}function E(e,t,n){return t.has(e)?!0:S(e,n).some(e=>t.has(e))}function D(e,t,n,r){let i=n.childrenById.get(e)??[];if(t.has(e))return r.selectedIds.add(e),{selected:!0,partial:!1};if(i.length===0)return{selected:!1,partial:!1};let a=i.map(e=>D(e,t,n,r)),o=a.every(e=>e.selected&&!e.partial),s=a.some(e=>e.selected||e.partial);return o?(r.selectedIds.add(e),{selected:!0,partial:!1}):s?(r.partialIds.add(e),{selected:!1,partial:!0}):{selected:!1,partial:!1}}function O(e,t){let n={selectedIds:new Set,partialIds:new Set};for(let r of t.rootIds)D(r,e,t,n);return n}function k(e,t=e.rootIds){let n=t=>{let r=e.nodeById.get(t),i=(e.childrenById.get(t)??[]).map(n),a=i.flatMap(e=>e.selectedIds),o=r?.disabled===!0||i.some(e=>e.containsDisabled);return!r||r.disabled||o?{containsDisabled:!0,selectedIds:a}:{containsDisabled:!1,selectedIds:[t]}};return new Set(t.flatMap(e=>n(e).selectedIds))}function A(e,t,n){let r=b(e,n),i=e=>{if(E(e,r,n)){if(r.has(e)){r.delete(e);return}pe(r,e,n)&&i(e);return}C(r,e,n),r.add(e)},a=[...k(n,[t])],o=a.length>0&&a.every(e=>E(e,r,n));for(let e of a){let t=E(e,r,n);(o&&t||!o&&!t)&&i(e)}return x(T(r,n),n)}function j(e,t,n){let r=t.parentById.get(e);for(;r;)n.add(r),r=t.parentById.get(r)}function me(e,t){let n=new Set;for(let r of e)j(r,t,n);return n}function M(e,t,n){let r=(e.children??[]).map(e=>M(e,t,n)).filter(e=>!!e);return!e.searchText.toLowerCase().includes(t)&&r.length===0?null:(r.length>0&&n.add(e.id),r.length===0?e:{...e,children:r})}function he(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:[...e],expandedIds:new Set};let r=new Set;return{nodes:e.map(e=>M(e,n,r)).filter(e=>!!e),expandedIds:r}}function ge(e,t){let n=[],r=(e,i,a)=>{let o=(e.children?.length??0)>0,s=o&&t.has(e.id);if(n.push({node:e,level:i,parentId:a,hasChildren:o,isExpanded:s,isLeaf:!o}),s)for(let t of e.children??[])r(t,i+1,e.id)};for(let t of e)r(t,0);return n}var N=t((()=>{}));function P(e,t){return Number.isFinite(e)&&e>0?e:t}function _e({itemCount:e,availableWidth:t,availableHeight:n,viewportWidth:r,viewportHeight:i,referenceWidth:a}){let o=Math.max(0,Math.floor(Number.isFinite(e)?e:0)),s=P(t,240),c=P(n,80),l=P(r,s+F*2),u=P(i,c),d=Math.max(1,Math.min(s,Math.max(1,l-F*2))),f=Math.max(1,Math.min(c,u*.75)),p=Math.max(1,P(a,1)),m=Math.min(d,p),h=Math.max(1,Math.floor((d-I+R)/234)),g=Math.max(1,Math.min(ye,h,o||1)),_=1,ee=1/0;for(let e=1;e<=g;e+=1){let t=Math.ceil(o/e),n=Math.max(m,I+e*L+(e-1)*R),r=ve+t*z,i=n/d,a=r/f,s=o?(e*t-o)/o:0,c=Math.max(i,a)+.25*Math.abs(i-a)+.01*s+.04*(e-1);c<ee&&(ee=c,_=e)}let te=Math.ceil(o/_),ne=Math.max(m,I+_*L+(_-1)*R);return{columnCount:_,rowCount:te,width:Math.min(d,ne),minWidth:m,maxHeight:f}}var F,I,ve,L,R,z,ye,be=t((()=>{F=8,I=16,ve=48,L=224,R=10,z=32,ye=6})),xe,Se,B,Ce,V,we,Te,H,Ee,De,Oe,U,W,G,ke,K,q,J,Y,Ae,je,Me,Ne,Pe,X,Fe=t((()=>{xe=`eMqOwq`,Se=`JKstO-`,B=`hKgr8e`,Ce=`KjPZjd`,V=`_6EH37F`,we=`UBll8Q`,Te=`-y3RZP`,H=`ayLJ50`,Ee=`_2MFkGF`,De=`SWQUvb`,Oe=`o5NWnX`,U=`ibSd-S`,W=`lXezvv`,G=`FMlLGX`,ke=`d2Zt7U`,K=`_8PN4hs`,q=`_4JEoen`,J=`GS8eEC`,Y=`T8gVno`,Ae=`o6stdX`,je=`I5zvhe`,Me=`KQ0PBI`,Ne=`_7hAQQA`,Pe=`XeUHNc`,X={treeRow:xe,treeRowSelected:Se,treeRowActive:B,treeRowDisabled:Ce,treeNodeButton:V,treePopupHeader:we,treeColumns:Te,treeColumnRow:H,treeColumnCheckBox:Ee,treeNodeOptionContent:De,treeIndent:Oe,treeExpander:U,treeExpanderPlaceholder:W,treeExpanderIcon:G,treeExpanderIconExpanded:ke,treeSelection:K,treeSelectionChecked:q,treeSelectionPartial:J,treeSelectionIcon:Y,treeSummary:Ae,inputWithOverlay:je,valueOverlay:Me,treeActions:Ne,treeClearButton:Pe}}));function Ie({node:e,level:t,highlight:n,hasChildren:r,isExpanded:a,selected:s,partial:c,selectionMode:d,optionsLayout:f=`tree`,onToggleExpand:m,onToggleSelection:h}){let g=f===`tree`;return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(`span`,{className:X.treeIndent,style:{"--tree-level":t},"aria-hidden":`true`}),g&&r?(0,Z.jsx)(`button`,{type:`button`,className:X.treeExpander,onClick:e=>{e.stopPropagation(),m?.()},"aria-label":a?`Свернуть ветку`:`Развернуть ветку`,"data-ui":`tree-select-expander`,"data-action":a?`collapse-tree-select-node`:`expand-tree-select-node`,children:(0,Z.jsx)(l,{className:i(X.treeExpanderIcon,a&&X.treeExpanderIconExpanded)})}):g?(0,Z.jsx)(`span`,{className:X.treeExpanderPlaceholder,"aria-hidden":`true`}):null,d===`multi`&&f===`columns`?(0,Z.jsx)(`span`,{className:X.treeColumnCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,Z.jsx)(p,{value:s,indeterminate:c,disabled:e.disabled,"aria-label":`Выбрать ${e.label}`,onChange:()=>h?.()})}):d===`multi`?(0,Z.jsx)(`span`,{className:i(X.treeSelection,s&&X.treeSelectionChecked,c&&X.treeSelectionPartial),"aria-hidden":`true`,children:s?(0,Z.jsx)(u,{className:X.treeSelectionIcon}):c?(0,Z.jsx)(o,{className:X.treeSelectionIcon}):null}):null,(0,Z.jsx)(`div`,{className:X.treeNodeOptionContent,children:(0,Z.jsx)(ce,{label:e.label,code:e.code,highlight:n})})]})}var Z,Le=t((()=>{a(),c(),le(),v(),Fe(),Z=r(),Ie.__docgenInfo={description:``,methods:[],displayName:`TreeNodeContent`,props:{node:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
|
|
2
|
-
id: string;
|
|
3
|
-
codeKey: string;
|
|
4
|
-
value: string;
|
|
5
|
-
label: string;
|
|
6
|
-
code?: string;
|
|
7
|
-
searchText: string;
|
|
8
|
-
children?: TreeSelectNode[];
|
|
9
|
-
disabled?: boolean;
|
|
10
|
-
}`,signature:{properties:[{key:`id`,value:{name:`string`,required:!0}},{key:`codeKey`,value:{name:`string`,required:!0}},{key:`value`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`string`,required:!0}},{key:`code`,value:{name:`string`,required:!1}},{key:`searchText`,value:{name:`string`,required:!0}},{key:`children`,value:{name:`Array`,elements:[{name:`TreeSelectNode`}],raw:`TreeSelectNode[]`,required:!1}},{key:`disabled`,value:{name:`boolean`,required:!1}}]}},description:``},level:{required:!0,tsType:{name:`number`},description:``},highlight:{required:!1,tsType:{name:`string`},description:``},hasChildren:{required:!0,tsType:{name:`boolean`},description:``},isExpanded:{required:!0,tsType:{name:`boolean`},description:``},selected:{required:!0,tsType:{name:`boolean`},description:``},partial:{required:!0,tsType:{name:`boolean`},description:``},selectionMode:{required:!0,tsType:{name:`union`,raw:`"single" | "multi"`,elements:[{name:`literal`,value:`"single"`},{name:`literal`,value:`"multi"`}]},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:``,defaultValue:{value:`"tree"`,computed:!1}},onToggleExpand:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onToggleSelection:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}}}}));function Re({label:e,description:t,disabled:n,placeholder:r,size:a,nodes:o,selectedIds:c,partialIds:l,selectionMode:u,optionsLayout:f=`tree`,bulkActions:p,triggerMode:h=`display`,selectedSummary:oe,selectedSummaryText:v,query:ce,defaultQuery:le,onQuery:y,onNodeActivate:de,onClearSelection:b,isLoading:x,error:S}){let fe=(0,Q.useRef)(null),C=(0,Q.useRef)(null),w=(0,Q.useRef)(!1),[T,pe]=(0,Q.useState)(()=>new Set),D=h===`search`?`search-single`:`display`,O=(0,Q.useMemo)(()=>ue(o),[o]),{query:k,setQuery:A}=ae({open:!0,query:ce,defaultQuery:le,onQuery:y,triggerMode:`display`}),{nodes:j,expandedIds:M}=(0,Q.useMemo)(()=>he(o,k),[o,k]),N=(0,Q.useMemo)(()=>me(c,O),[c,O]),P=(0,Q.useMemo)(()=>new Set([...O.childrenById].filter(([,e])=>e.length>0).map(([e])=>e)),[O]),F=(0,Q.useMemo)(()=>f===`columns`?P:new Set([...T,...M,...N]),[P,T,f,M,N]),I=(0,Q.useMemo)(()=>ge(j,F),[j,F]),ve=(0,Q.useMemo)(()=>I.findIndex(e=>c.has(e.node.id)),[c,I]),L=(0,Q.useCallback)(e=>{let t=_e({...e,itemCount:I.length});return{width:`${t.width}px`,minWidth:`${t.minWidth}px`,maxWidth:`${t.width}px`,maxHeight:`${t.maxHeight}px`,"--tree-column-count":String(t.columnCount),"--tree-row-count":String(Math.max(t.rowCount,1))}},[I.length]),{open:R,activeIndex:z,context:ye,floatingStyles:be,getFloatingProps:xe,setReference:Se,setFloating:B,setOptionRef:Ce,close:V,openList:we,toggleOpen:Te,selectOption:H,handleReferenceKeyDown:Ee,handleFloatingKeyDown:De,getOptionId:Oe,getActiveOptionId:U}=ne({options:I,selectedIndex:ve,onSelect:e=>de(e.node),getOptionDisabled:e=>e.node.disabled===!0,disabled:n||x,closeOnSelect:u===`single`,allowOpenWithoutOptions:!0,triggerMode:D,placementStrategy:f===`columns`?`auto`:`flip`,resolveFloatingSize:f===`columns`?L:void 0}),W=c.size>0,G=h===`search`&&(R||k.length>0),ke=G?k:v??``,K=h===`display`&&!!oe,q=ie({mode:D,open:R,currentQuery:k,hasDisplayValue:!!v,inputRef:fe,setQuery:A,openList:we,close:V,toggleOpen:Te}),J=f===`columns`&&u===`multi`&&p,Y=h===`display`,Ae=J||Y?(0,$.jsxs)(`div`,{className:X.treePopupHeader,children:[J?(0,$.jsx)(ee,{onSelectAll:p.onSelectAll,onDeselectAll:p.onDeselectAll,selectAllButtonRef:C}):null,Y?(0,$.jsx)(m,{value:k,onChange:A,onClear:()=>A(``),placeholder:`Поиск по дереву`,onKeyDown:e=>{e.key!==`Escape`&&e.key!==`Tab`&&e.stopPropagation()},onClick:e=>{e.stopPropagation()}}):null]}):void 0;(0,Q.useEffect)(()=>{w.current&&!R&&q.policy.resetQueryOnClose&&A(``),w.current=R},[R,A,q.policy.resetQueryOnClose]);let je=e=>{fe.current=e},Me=()=>{b?.(),A(``),V()},Ne=e=>{e.hasChildren&&pe(t=>{let n=new Set(t);return n.has(e.node.id)?n.delete(e.node.id):n.add(e.node.id),n})};return(0,$.jsx)(g,{label:e,description:t,disabled:n,placeholder:r,size:a,children:({controlId:t,labelId:a,describedBy:o})=>{let p=`${t}-listbox`,m=typeof e==`string`?e:r;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(re,{ref:je,rootRef:Se,id:t,type:`text`,role:`combobox`,autoComplete:`off`,disabled:n||x,readOnly:h!==`search`,value:h===`display`&&K?``:ke,placeholder:h===`search`?!v||G?r:void 0:W?void 0:r,"aria-labelledby":a,"aria-describedby":o,"aria-haspopup":f===`columns`?`dialog`:`listbox`,"aria-expanded":R,"aria-controls":R?p:void 0,"aria-autocomplete":f!==`columns`&&h===`search`?`list`:`none`,"aria-activedescendant":f!==`columns`&&R&&I.length>0?U(p):void 0,inputClassName:i(W&&X.treeSummary,K&&X.inputWithOverlay),overlay:K?(0,$.jsx)(`div`,{className:X.valueOverlay,children:oe}):void 0,endAdornment:(0,$.jsx)(te,{open:R,disabled:n||x,onToggleMouseDown:q.handleToggleMouseDown,onToggleClick:q.handleToggleClick,children:W&&b?(0,$.jsx)(`button`,{type:`button`,className:X.treeClearButton,onMouseDown:e=>{e.preventDefault(),e.stopPropagation()},onClick:e=>{e.preventDefault(),e.stopPropagation(),Me()},"aria-label":`Очистить выбор`,children:(0,$.jsx)(s,{})}):null}),onChange:e=>{h===`search`&&q.handleTriggerInputChange(e.target.value)},onClick:q.handleTriggerClick,onFocus:e=>{q.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{if(f===`columns`&&R&&e.key===`Tab`&&!e.shiftKey&&C.current){e.preventDefault(),C.current.focus();return}Ee(e),!e.defaultPrevented&&q.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{let e=z>=0?I[z]:void 0;e&&H(e)},enableSpaceActivation:h===`display`})}}),(0,$.jsx)(_,{open:R,context:ye,floatingStyles:be,listId:p,labelId:a,popupAriaLabel:m,descriptionId:o,activeOptionId:f!==`columns`&&I.length>0?U(p):void 0,ariaMultiselectable:f!==`columns`&&u===`multi`,popupRole:f===`columns`?`dialog`:`listbox`,setFloating:B,getFloatingProps:xe,onKeyDown:De,className:d.uiPopupOptions,bodyClassName:`scrollable`,header:Ae,children:(0,$.jsx)(`div`,{className:i(f===`columns`&&X.treeColumns),children:I.length===0?(0,$.jsx)(se,{errorState:S,loadingState:x?`Загрузка...`:void 0,emptyState:!S&&!x?`Нет данных`:void 0}):I.map((e,t)=>{let n=u===`multi`?E(e.node.id,c,O):c.has(e.node.id),r=u===`multi`&&!n&&l.has(e.node.id),a=t===z,o=e.node.disabled===!0;return(0,$.jsx)(`div`,{"data-ui":`tree-select-option`,id:Oe(p,t),ref:e=>Ce(t,e),role:f===`columns`?void 0:`option`,"aria-selected":f===`columns`?void 0:n,"aria-disabled":o||void 0,className:i(X.treeRow,f===`columns`&&X.treeColumnRow,o&&X.treeRowDisabled,a&&X.treeRowActive,n&&X.treeRowSelected),onMouseDown:e=>{e.preventDefault()},onClick:()=>H(e),children:(0,$.jsx)(`div`,{className:X.treeNodeButton,children:(0,$.jsx)(Ie,{node:e.node,level:e.level,highlight:k,hasChildren:e.hasChildren,isExpanded:e.isExpanded,selected:n,partial:r,selectionMode:u,optionsLayout:f,onToggleExpand:()=>Ne(e),onToggleSelection:()=>H(e)})})},e.node.id)})})})]})}})}var Q,$,ze=t((()=>{Q=e(n(),1),a(),c(),h(),oe(),f(),be(),N(),Le(),Fe(),$=r(),Re.__docgenInfo={description:``,methods:[],displayName:`TreePickerBase`,props:{nodes:{required:!0,tsType:{name:`unknown`},description:``},selectedIds:{required:!0,tsType:{name:`Set`,elements:[{name:`string`}],raw:`Set<string>`},description:``},partialIds:{required:!0,tsType:{name:`Set`,elements:[{name:`string`}],raw:`Set<string>`},description:``},selectionMode:{required:!0,tsType:{name:`union`,raw:`"single" | "multi"`,elements:[{name:`literal`,value:`"single"`},{name:`literal`,value:`"multi"`}]},description:``},optionsLayout:{required:!1,tsType:{name:`union`,raw:`"tree" | "columns"`,elements:[{name:`literal`,value:`"tree"`},{name:`literal`,value:`"columns"`}]},description:``,defaultValue:{value:`"tree"`,computed:!1}},bulkActions:{required:!1,tsType:{name:`signature`,type:`object`,raw:`{
|
|
11
|
-
onSelectAll: () => void;
|
|
12
|
-
onDeselectAll: () => void;
|
|
13
|
-
}`,signature:{properties:[{key:`onSelectAll`,value:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}},required:!0}},{key:`onDeselectAll`,value:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}},required:!0}}]}},description:``},triggerMode:{required:!1,tsType:{name:`union`,raw:`"display" | "search"`,elements:[{name:`literal`,value:`"display"`},{name:`literal`,value:`"search"`}]},description:``,defaultValue:{value:`"display"`,computed:!1}},selectedSummary:{required:!1,tsType:{name:`ReactNode`},description:``},selectedSummaryText:{required:!1,tsType:{name:`string`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},onNodeActivate:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(node: TreeSelectNode) => void`,signature:{arguments:[{type:{name:`signature`,type:`object`,raw:`{
|
|
14
|
-
id: string;
|
|
15
|
-
codeKey: string;
|
|
16
|
-
value: string;
|
|
17
|
-
label: string;
|
|
18
|
-
code?: string;
|
|
19
|
-
searchText: string;
|
|
20
|
-
children?: TreeSelectNode[];
|
|
21
|
-
disabled?: boolean;
|
|
22
|
-
}`,signature:{properties:[{key:`id`,value:{name:`string`,required:!0}},{key:`codeKey`,value:{name:`string`,required:!0}},{key:`value`,value:{name:`string`,required:!0}},{key:`label`,value:{name:`string`,required:!0}},{key:`code`,value:{name:`string`,required:!1}},{key:`searchText`,value:{name:`string`,required:!0}},{key:`children`,value:{name:`Array`,elements:[{name:`TreeSelectNode`}],raw:`TreeSelectNode[]`,required:!1}},{key:`disabled`,value:{name:`boolean`,required:!1}}]}},name:`node`}],return:{name:`void`}}},description:``},onClearSelection:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},error:{required:!1,tsType:{name:`string`},description:``}}}}));export{O as a,b as c,k as i,de as l,ze as n,N as o,ue as r,A as s,Re as t,x as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{m as t,p as n}from"./iframe-Cqdlb8-A.js";import{i as r,n as i,r as a,t as o}from"./chunk-3LY4VQVK-D0GJRVS7.js";var s;e((()=>{a(),i(),t(),s=(0,n(r(),1).default)(2)(async(e,t)=>e===!1?t:o(t))}))();export{s as formatter};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{a as t,n,r}from"./Grid-CXYJrcNO.js";var i=e((()=>{n(),t(),r()}));export{i as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{P as t}from"./formatters-C29y1vJ_.js";var n=e((()=>{t()}));export{n as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{n as t}from"./Select-S1Kq352p.js";import{n}from"./ODataSelect-BCq3J8js.js";import{n as r}from"./SerializableSelect-DLLMZfeg.js";var i=e((()=>{n(),t(),r()}));export{i as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{a as t,r as n}from"./DateInput-Qi0iElov.js";var r=e((()=>{t(),n()}));export{r as t};
|