@ryuzaki13/react-foundation-ui 1.8.19 → 1.8.20
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/package.json +1 -1
- package/storybook-static/assets/{Badge-CAM2jkFm.js → Badge-CtgCgcrE.js} +1 -1
- package/storybook-static/assets/{Badge.stories-DRjjmR32.js → Badge.stories-Bde8GdpE.js} +1 -1
- package/storybook-static/assets/{BadgeList-D4Swhp3V.js → BadgeList-B354PiFh.js} +1 -1
- package/storybook-static/assets/{Button-4YB5_DwT.js → Button-BC1vJeBh.js} +1 -1
- package/storybook-static/assets/{Button-1UZNz2k4.js → Button-DdWXdL9L.js} +1 -1
- package/storybook-static/assets/{Button.stories-B0sdwFqZ.js → Button.stories-CvsBKXsv.js} +1 -1
- package/storybook-static/assets/{CalendarView-sSyZ5jCR.js → CalendarView-CJkJU4EC.js} +1 -1
- package/storybook-static/assets/{CheckBox-BdGaGy4_.js → CheckBox-BaKD1lsb.js} +1 -1
- package/storybook-static/assets/{CheckBox-Cpt5rjSg.js → CheckBox-DlCG7Opb.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-6d6-rkNo.js → CheckBox.stories-noW5T-OA.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-sKBB2RBT.js → Color-6AOWCN3U-DVSJ6tQm.js} +1 -1
- package/storybook-static/assets/{ContextMenu-B155_m2F.js → ContextMenu-D79bky7p.js} +1 -1
- package/storybook-static/assets/{ContextMenu-BLnt5p2W.js → ContextMenu-DL12BLWo.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-B8sv4v3Q.js → ContextMenu.stories-BwyqG2jc.js} +1 -1
- package/storybook-static/assets/{CustomOptionButton-hKfsqWNH.js → CustomOptionButton-oTNty8hW.js} +1 -1
- package/storybook-static/assets/{DateInput-XvSKmvqi.js → DateInput-X20d2Q59.js} +1 -1
- package/storybook-static/assets/{DateInput-DvIl6s-f.js → DateInput-YyZk0Ov_.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-SU41oukh.js → DateInput.stories-DQoF9ZwI.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-tz-3m9UI.js → DateRangePresetSelect-BauBnnPB.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-BCLZcXdv.js → DateRangePresetSelect-C-AvOpuX.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-D8zuTlHo.js → DateRangePresetSelect.stories-XvgjFAh7.js} +1 -1
- package/storybook-static/assets/{Detail-Ct95dA1k.js → Detail-BpXehD7_.js} +1 -1
- package/storybook-static/assets/{Detail.stories-Chedt7EX.js → Detail.stories-BQWhtlp0.js} +1 -1
- package/storybook-static/assets/{Dialog-C7Duw0PA.js → Dialog-D3hJTgwE.js} +1 -1
- package/storybook-static/assets/{Dialog-BX3QZOnt.js → Dialog-DODbPv79.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-J0w0R0Db.js → Dialog.stories-DcgpUIUP.js} +1 -1
- package/storybook-static/assets/{Disclosure-BzlV54RK.js → Disclosure-5UdBgIbZ.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-z7gnOr5h.js → Disclosure.stories-IYljEE4h.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-c179TOi5.js → DisclosureGroup-Bbseg3US.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-Ba9N3QAD.js → DocsRenderer-JROSPFPF-CADpK3Xb.js} +1 -1
- package/storybook-static/assets/{DropZone-vxUU2p-k.js → DropZone-BKncWUns.js} +1 -1
- package/storybook-static/assets/{DropZone-D5X0oV8O.js → DropZone-CI5qAgz5.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-iNXgESGM.js → DropZone.stories-CmLlcGx0.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-CJlpP3HB.js → DropdownMenu-K7NYW8LX.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-CmkEByID.js → ExpandableActionPanel-DSHE6wTG.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-DmRLaVxn.js → ExpandableActionPanel.stories-BN_qe4FR.js} +1 -1
- package/storybook-static/assets/{Flex-tVAYZ-nU.js → Flex-BP4dH1EM.js} +1 -1
- package/storybook-static/assets/{Flex.stories-CVYDcbvw.js → Flex.stories-CG6MjVWv.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-DMTLPzR3.js → FloatingPopover-CbuI645U.js} +1 -1
- package/storybook-static/assets/{FormattedTableCell-DP6-D86D.js → FormattedTableCell-SiBfPwwP.js} +1 -1
- package/storybook-static/assets/{Grid-Vm-amT-a.js → Grid-CcYtG8qC.js} +1 -1
- package/storybook-static/assets/{Grid.stories-B0beH9CK.js → Grid.stories-D8AkQcoe.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-Dt-IA4EB.js → ImageCropper.stories-DgYml-BE.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-DudkQ-3G.js → ImageRenderer-DdnnseXq.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-CNeSiXkj.js → ImageRenderer.stories-BN4QxhBf.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-DMtpy--X.js → ImageView.stories-2LMwV4qh.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-BkoV0li4.js → ImageViewer.stories-D6BcidoN.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-BLgQCsSL.js → ImageViewerRuntime-DVUlXl_G.js} +1 -1
- package/storybook-static/assets/{Input-WhTMStKL.js → Input-Bb5uuJsd.js} +1 -1
- package/storybook-static/assets/{Input-MPCFEMQm.js → Input-CWQgYEr9.js} +1 -1
- package/storybook-static/assets/{Input.stories-B50KKSiz.js → Input.stories-B0SSM1T_.js} +1 -1
- package/storybook-static/assets/{InputDateTime-1zTFbNEF.js → InputDateTime-EefPx2jA.js} +1 -1
- package/storybook-static/assets/InputDateTime.stories-B71jcVWG.js +30 -0
- package/storybook-static/assets/{InputFile-B3QB0SLD.js → InputFile-BqoeOsqC.js} +1 -1
- package/storybook-static/assets/{InputFile-DYHuD6B8.js → InputFile-CktSGEBF.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-B-hrCtm_.js → InputFile.stories-Ce3mDoRs.js} +1 -1
- package/storybook-static/assets/{InputFiles-CPPAJxgC.js → InputFiles-B5O1fLjO.js} +1 -1
- package/storybook-static/assets/{InputFiles-Dpa2BiyZ.js → InputFiles-RrvJwhF3.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-1ocz2wNw.js → InputFiles.stories-BwWItttY.js} +1 -1
- package/storybook-static/assets/{InputFilesList-D2Ro-1Hm.js → InputFilesList-DStssgki.js} +1 -1
- package/storybook-static/assets/{InputImage-DPmkvGcl.js → InputImage-CPGNaW07.js} +1 -1
- package/storybook-static/assets/{InputImage-BDC2lyVo.js → InputImage-CvuIiNq_.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-D3hWZBtn.js → InputImage.stories-CCG2g2Io.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-Djz3CtkU.js → InteractiveComponents-BgsmaSTZ.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-CJ2VWPLD.js → InteractiveComponents.stories-BwtQ8dqK.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-BFShZhhi.js → LayoutPicker-DRtnMCPh.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-CMMEs83d.js → LayoutPicker-DsGelRcW.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-Cdb_UnBI.js → LayoutPicker.stories-BWnRDODR.js} +1 -1
- package/storybook-static/assets/{Listbox-B7nZijLJ.js → Listbox-DOUFsbK8.js} +1 -1
- package/storybook-static/assets/{Listbox-DM1vuGVD.js → Listbox-IR21PF4n.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-DTs-ANe9.js → Listbox.stories-qC0AcRTK.js} +1 -1
- package/storybook-static/assets/{Modal-D0dkB7lh.js → Modal-D8Il31Wx.js} +1 -1
- package/storybook-static/assets/{Modal.stories-BOh10Fkn.js → Modal.stories-Vb_wvC7j.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-CEEmviJU.js → ModalManagerProvider-DW29PIGA.js} +1 -1
- package/storybook-static/assets/{MultiSelect-CbrRNOEZ.js → MultiSelect-BTXEzEbr.js} +1 -1
- package/storybook-static/assets/{MultiSelect-oJhMsKuC.js → MultiSelect-Bi7awY_l.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-mLWhd-au.js → MultiSelect.stories-BHm7nyE0.js} +1 -1
- package/storybook-static/assets/{NoData-C7Kj62Zk.js → NoData-D2fqJN8_.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-D_i7EsJA.js → NotificationsHost-CB4Caorz.js} +1 -1
- package/storybook-static/assets/NotificationsHost.stories-ClREN7GD.js +29 -0
- package/storybook-static/assets/{ODataMultiSelect-B6hKhD2q.js → ODataMultiSelect-DVqtuVtf.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-BO7WaR9I.js → ODataMultiSelect.stories-BXspOSkv.js} +1 -1
- package/storybook-static/assets/{ODataSelect-BW8S-U91.js → ODataSelect-ODT2BTTx.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-rVZ8RYIu.js → ODataSelect.stories-Czh9ONwP.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-BhvUurca.js → ODataTreeMultiSelect-D2CfiHud.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-CM8wiVsI.js → ODataTreeMultiSelect.stories-C5CcMnCO.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-B96PJWcL.js → ODataTreeSelect-CtXGcTu6.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-HHLJZrD8.js → ODataTreeSelect.stories-D9C0TW7E.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-DzrN3WVZ.js → OneStepScroller-DvNxIB4z.js} +1 -1
- package/storybook-static/assets/{Option-BwWLsS-Q.js → Option-EvZAvPlO.js} +1 -1
- package/storybook-static/assets/{OptionButton-CdYqQAwC.js → OptionButton-ClHPJWSS.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-CJejEx-e.js → PeriodSelect-Cj4KFbL8.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-_GvgXTKk.js → PeriodSelect-CopVqvke.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-CGNmEIBG.js → PeriodSelect.stories-CdPRC5lO.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-apA_Ruie.js → PickerTriggerActions-CChnIvDY.js} +1 -1
- package/storybook-static/assets/{Popover-BYGM8Bjj.js → Popover-D84worS4.js} +1 -1
- package/storybook-static/assets/{Popover-CDeopGLJ.js → Popover-GCefn4ZK.js} +1 -1
- package/storybook-static/assets/{Popover.stories-DTeZeyAB.js → Popover.stories-Km8RZinG.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-BdFjz9Ed.js → PresetRangeDateInput-CKkA7evU.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-D3FBpZqV.js → PresetRangeDateInput-D8Nd8OKM.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-B2HCz7Tw.js → PresetRangeDateInput.stories-mEsDYDGg.js} +1 -1
- package/storybook-static/assets/{PresetSelect-BgzVe_NB.js → PresetSelect-Bm-UK37m.js} +1 -1
- package/storybook-static/assets/{README-eqGIA1ao.js → README-9g3GgWWF.js} +1 -1
- package/storybook-static/assets/{README-DNDYDuQ4.js → README-AVujzV-Q.js} +1 -1
- package/storybook-static/assets/{README-DZmDqmSd.js → README-B2M46KR7.js} +1 -1
- package/storybook-static/assets/{README-Chc7eGGc.js → README-B2OZG04f.js} +1 -1
- package/storybook-static/assets/{README-HhDoM8Gq.js → README-BAsxlcAX.js} +1 -1
- package/storybook-static/assets/{README-BTp9nnLv.js → README-BPyrojLC.js} +1 -1
- package/storybook-static/assets/{README-_aVIdcMd.js → README-BQw3k-Ra.js} +1 -1
- package/storybook-static/assets/{README-C_uOxFAl.js → README-BYe60A3Z.js} +1 -1
- package/storybook-static/assets/{README-DLBEUtiL.js → README-BZOXtBHM.js} +1 -1
- package/storybook-static/assets/{README-9flk-o3B.js → README-Bn52nDUU.js} +1 -1
- package/storybook-static/assets/{README-1tFUbU_N.js → README-Btc8dTTa.js} +1 -1
- package/storybook-static/assets/{README-CxsAd0Iq.js → README-Bu8NSN83.js} +1 -1
- package/storybook-static/assets/{README-BSrGqFaw.js → README-ByU9WtnE.js} +1 -1
- package/storybook-static/assets/{README-DSsqg62x.js → README-C-HfyZj6.js} +1 -1
- package/storybook-static/assets/{README-fLJ5n8A8.js → README-C19FjXEc.js} +1 -1
- package/storybook-static/assets/{README-Cl2jxLna.js → README-C3ootpC3.js} +1 -1
- package/storybook-static/assets/{README-m0xvi4o1.js → README-C65NMR4N.js} +1 -1
- package/storybook-static/assets/{README-NwNz8xro.js → README-C7uZcWP5.js} +1 -1
- package/storybook-static/assets/{README-BRnZl0of.js → README-C9g6HTtO.js} +1 -1
- package/storybook-static/assets/{README-DHJwCm5f.js → README-CGtXxNWL.js} +1 -1
- package/storybook-static/assets/{README-CeuRBAf6.js → README-CJIysyPl.js} +1 -1
- package/storybook-static/assets/{README-CBhnA3Kz.js → README-CU0nO91c.js} +1 -1
- package/storybook-static/assets/{README-bhX-QiSo.js → README-CV043M5l.js} +1 -1
- package/storybook-static/assets/{README-DldTDL_-.js → README-CeVilD38.js} +1 -1
- package/storybook-static/assets/{README-DGTIYOSH.js → README-Ch_Q8rfx.js} +1 -1
- package/storybook-static/assets/{README-n3wmMhlD.js → README-CpJrFpd-.js} +1 -1
- package/storybook-static/assets/{README-DcJ05Rnh.js → README-CzVaDwCa.js} +1 -1
- package/storybook-static/assets/{README-GstpCBI6.js → README-D3ahQzwF.js} +1 -1
- package/storybook-static/assets/{README-VwNH_K60.js → README-DBedFn2k.js} +1 -1
- package/storybook-static/assets/{README-DQSMXoRa.js → README-DBgowiDe.js} +1 -1
- package/storybook-static/assets/{README-BtPehMeb.js → README-DEZR-nsP.js} +1 -1
- package/storybook-static/assets/{README-OGP9mnSD.js → README-DIz7GaJX.js} +1 -1
- package/storybook-static/assets/{README-Dju2IqV_.js → README-DOwtu6P8.js} +1 -1
- package/storybook-static/assets/{README-I0-Ly9-N.js → README-DRlbzNwm.js} +1 -1
- package/storybook-static/assets/{README-C2rr_CMA.js → README-DS9gKK_l.js} +1 -1
- package/storybook-static/assets/{README-g3WhSoX3.js → README-DTM6S2tD.js} +1 -1
- package/storybook-static/assets/{README-DYKVnI5h.js → README-DazyZywt.js} +1 -1
- package/storybook-static/assets/{README-CuYqzgi0.js → README-DgVBKXxO.js} +1 -1
- package/storybook-static/assets/{README-B8dyxeZz.js → README-Dga9VBXp.js} +1 -1
- package/storybook-static/assets/{README-mXAkjKF0.js → README-DsG_VYny.js} +1 -1
- package/storybook-static/assets/{README-Bv9s5Hlv.js → README-DsTcywLt.js} +1 -1
- package/storybook-static/assets/{README-Dq0P8Ach.js → README-Du_uNuzw.js} +1 -1
- package/storybook-static/assets/{README-C8K3rQpu.js → README-Dwu0rBCx.js} +1 -1
- package/storybook-static/assets/{README-Cuj7DFn9.js → README-EfW0h3H2.js} +1 -1
- package/storybook-static/assets/{README-Br9h1slQ.js → README-GPrnGZGg.js} +1 -1
- package/storybook-static/assets/{README-z2leBvSk.js → README-I-J1PF75.js} +1 -1
- package/storybook-static/assets/{README-Bht25HeR.js → README-cHwz_DGu.js} +1 -1
- package/storybook-static/assets/{README-Se6780nc.js → README-efyzb9zY.js} +1 -1
- package/storybook-static/assets/{README-B5QVQmyU.js → README-foisdU5e.js} +1 -1
- package/storybook-static/assets/{README-BJEbnNWP.js → README-na4Tvba4.js} +1 -1
- package/storybook-static/assets/{README-BUkpxX-E.js → README-oFnWsuXd.js} +1 -1
- package/storybook-static/assets/{README-CvrH-776.js → README-pdJ6FjLG.js} +1 -1
- package/storybook-static/assets/{RadioButton-JEqzXOJN.js → RadioButton-CFIAc4xz.js} +1 -1
- package/storybook-static/assets/{RadioButton-DqEZ3dh2.js → RadioButton-Dk52KGyn.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-CzIM9dix.js → RadioButton.stories-B10De9DU.js} +1 -1
- package/storybook-static/assets/{RadioGroup-D4EHkLTb.js → RadioGroup-B7X4Pr-l.js} +1 -1
- package/storybook-static/assets/{RadioGroup-COIsrK0r.js → RadioGroup-DHpLxYGV.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-BdAv58pJ.js → RadioGroup.stories-BAE8jGr_.js} +1 -1
- package/storybook-static/assets/{Scrollable-noVIQseX.js → Scrollable-vhQ02gPl.js} +1 -1
- package/storybook-static/assets/{Select-DgPcfbEp.js → Select-5pGJ-9Pp.js} +1 -1
- package/storybook-static/assets/{Select-9v7A23y8.js → Select-wSFMQijV.js} +1 -1
- package/storybook-static/assets/{Select.stories-yIRnlqrF.js → Select.stories-D6_viZUX.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-CnPwQtgN.js → SerializableSelect-DDx9-Bur.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-9QxpRX-K.js → SerializableSelect.stories-lLHLEyB9.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-DBrfgnnn.js → SingleDateTimeInput-B4vUIB4m.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-CxKz7tUP.js → SingleDateTimeInput-DKleuzaX.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-lOLyuR7U.js → SingleDateTimeInput.stories-U_d98CIX.js} +1 -1
- package/storybook-static/assets/{Slider-KC0hs5nY.js → Slider-C9EHsb-H.js} +1 -1
- package/storybook-static/assets/{Slider-Cn1YHOVt.js → Slider-Dfj4alv-.js} +1 -1
- package/storybook-static/assets/{Slider.stories-C-IjisOs.js → Slider.stories-vZkWxSqT.js} +1 -1
- package/storybook-static/assets/{SliderInput-Bz4D-xc3.js → SliderInput-BdYHLdem.js} +1 -1
- package/storybook-static/assets/{SliderInput-BVDFbjAz.js → SliderInput-CzlPZSO9.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-SlhRnTWN.js → SliderInput.stories-C6tBSbPb.js} +1 -1
- package/storybook-static/assets/{Sortable-d-UOB6NI.js → Sortable-BGVo-kNH.js} +1 -1
- package/storybook-static/assets/Sortable.stories-vIFl2X-p.js +44 -0
- package/storybook-static/assets/{Splitter-t2bV_zrF.js → Splitter-BQWPhfku.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-CTTTfgXu.js → Splitter.stories-ICS_ZBHX.js} +1 -1
- package/storybook-static/assets/{StateSelect-CR5WR-IW.js → StateSelect-CyReXSM1.js} +1 -1
- package/storybook-static/assets/{StateSelect-CX7Xf-aX.js → StateSelect-Dd6SpUUh.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-3KkvmQ80.js → StateSelect.stories-D0-HsFXZ.js} +1 -1
- package/storybook-static/assets/StringToggle.stories-pC48Sxqx.js +3 -0
- package/storybook-static/assets/{Switch-Deae3h9G.js → Switch-BqR-1lxY.js} +1 -1
- package/storybook-static/assets/{Switch-DB4EZ32N.js → Switch-Cj8-VcVg.js} +1 -1
- package/storybook-static/assets/{Switch.stories-CZxayDtX.js → Switch.stories-WiYjSzuW.js} +1 -1
- package/storybook-static/assets/{Table-CrxyY7zt.js → Table-BxXretCJ.js} +1 -1
- package/storybook-static/assets/Table.stories-BNQvlsuf.js +178 -0
- package/storybook-static/assets/{Tabs-L4LxDqx4.js → Tabs-Bfy1NJMT.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-C4XMXjqd.js → Tabs.stories-CPIuTwP2.js} +1 -1
- package/storybook-static/assets/{TabsBox-Bnvm4jMi.js → TabsBox-jMCEuOZ4.js} +1 -1
- package/storybook-static/assets/{TagInput-DW0JzYQ3.js → TagInput-BUw0lagA.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-zF7cV7Cp.js → TagInput.stories-DFt-q5Jo.js} +1 -1
- package/storybook-static/assets/{Text-ByhnRSgp.js → Text-qYKrK4eb.js} +1 -1
- package/storybook-static/assets/{Textarea-WtjTIiyq.js → Textarea-CHFjT8jC.js} +1 -1
- package/storybook-static/assets/{Textarea-BySrQxab.js → Textarea-evU43JN1.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-jFSqX_4h.js → Textarea.stories-DEIYLgZF.js} +1 -1
- package/storybook-static/assets/{TimePanel-B-rvi-xm.js → TimePanel-DTiDfMFt.js} +1 -1
- package/storybook-static/assets/TimePanel.stories-Ct__ocID.js +10 -0
- package/storybook-static/assets/{Toggle-BfRh792z.js → Toggle-IPvbQmMD.js} +1 -1
- package/storybook-static/assets/{Toggle-BkglFvBx.js → Toggle-IdtrAW0T.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-BonTJbH-.js → Toggle.stories-BJ9VWYeG.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-CKr7kx7s.js → TreeMultiSelect-CH0Zc3KF.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-7E1j6lHT.js → TreeMultiSelect-CSd33bKQ.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-DQ9N-EPu.js → TreeMultiSelect.stories-BJwU3XBe.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-DwoQyBMk.js → TreePickerBase-CKnyu6AR.js} +1 -1
- package/storybook-static/assets/{TreeSelect-BLc7zLho.js → TreeSelect-DYJm99Z2.js} +1 -1
- package/storybook-static/assets/{TreeSelect-BP_YoVCu.js → TreeSelect-DiiLtgN_.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-CyurXsU_.js → TreeSelect.stories-CEiN12BG.js} +1 -1
- package/storybook-static/assets/{TreeTable-wfgjChnU.js → TreeTable-CInX-hLX.js} +1 -1
- package/storybook-static/assets/TreeTable.stories-DQsXSocU.js +138 -0
- package/storybook-static/assets/{blocks-DNj8uFSt.js → blocks-v2XPznvF.js} +3 -3
- package/storybook-static/assets/{check-CS2caYIB.js → check-Cw2uZkgi.js} +1 -1
- package/storybook-static/assets/{chevron-down-DXkNPvpX.js → chevron-down-DCcoFYMu.js} +1 -1
- package/storybook-static/assets/{chevron-left-5q-SFjrm.js → chevron-left-DbTmcqTw.js} +1 -1
- package/storybook-static/assets/{chevron-right-u6yLjLrs.js → chevron-right-BhBh36az.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-CfJGLIdy.js → chunk-W22LQPXL-2pLErBcr.js} +1 -1
- package/storybook-static/assets/{circle-alert-Cs1OuREv.js → circle-alert-DztOdOaG.js} +1 -1
- package/storybook-static/assets/{circle-check-Cvppn-HO.js → circle-check-CAdrHnV2.js} +1 -1
- package/storybook-static/assets/{components-B6cPezpK.js → components-BTpiQE9n.js} +3 -3
- package/storybook-static/assets/{contextMenu-CX8Geuik.js → contextMenu-DJ0HpnV6.js} +1 -1
- package/storybook-static/assets/{download-DY_RFHLw.js → download-BT_zAyTC.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-CCV40RlP.js → floating-ui.react-Cvohd2Gw.js} +1 -1
- package/storybook-static/assets/{foundationApi-naPnCFLL.js → foundationApi-DJeCu7Ht.js} +1 -1
- package/storybook-static/assets/{foundationLib-CSxKMNQk.js → foundationLib-hGtcm5KL.js} +1 -1
- package/storybook-static/assets/{hooks-CK4me-dJ.js → hooks-BCeL5FKt.js} +1 -1
- package/storybook-static/assets/iframe-B-Rqywce.js +1 -0
- package/storybook-static/assets/{iframe-YrfSEgEg.js → iframe-DlUmG4EA.js} +3 -3
- package/storybook-static/assets/{info-BEkn6tJB.js → info-BkC2CBYX.js} +1 -1
- package/storybook-static/assets/odata-BMO7cuBZ.js +1 -0
- package/storybook-static/assets/odataStoryFixtures-CWldE9pM.js +25 -0
- package/storybook-static/assets/{react-BihcRTyZ.js → react-C0u6t2Tr.js} +1 -1
- package/storybook-static/assets/{refresh-cw-uKRX7BI0.js → refresh-cw-BA16_2Dg.js} +1 -1
- package/storybook-static/assets/{settings-2-DTKuqR8p.js → settings-2-C3fAar8h.js} +1 -1
- package/storybook-static/assets/{sortable-sVqTZjeF.js → sortable-4U2uS5RT.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-GFZ4bA4u.js → syntaxhighlighter-QEQV7K2Y-e4tU0oKD.js} +1 -1
- package/storybook-static/assets/{trash-2-C6QVfyTq.js → trash-2-DIhA8-QF.js} +1 -1
- package/storybook-static/assets/{triangle-alert-DKkTKSAW.js → triangle-alert-CYOiH1yf.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-BxPpoJje.js → useODataSelectBase-CcvoIMyY.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-Ct-ZR8pA.js → useODataTreeData-Vkqc6Vi_.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-DJMG-4Gl.js → usePickerQuery-7mnpDV7K.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-DeZhyi9h.js → usePickerTriggerController-fH-NsvWu.js} +1 -1
- package/storybook-static/assets/{x-cU42PK2s.js → x-BJ8ArZif.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/project.json +1 -1
- package/storybook-static/assets/InputDateTime.stories-B7W4BkU6.js +0 -38
- package/storybook-static/assets/NotificationsHost.stories-5GPO8lQl.js +0 -29
- package/storybook-static/assets/Sortable.stories-DWywtUOf.js +0 -77
- package/storybook-static/assets/StringToggle.stories-D7r-Du4d.js +0 -5
- package/storybook-static/assets/Table.stories-Cwxd5T2K.js +0 -207
- package/storybook-static/assets/TimePanel.stories-BQJruT0g.js +0 -14
- package/storybook-static/assets/TreeTable.stories-DUBR67SN.js +0 -168
- package/storybook-static/assets/iframe-uYND_WUi.js +0 -1
- package/storybook-static/assets/odata-j4p1dw3i.js +0 -1
- package/storybook-static/assets/odataStoryFixtures-B_1MKEB-.js +0 -25
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-DlUmG4EA.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-v2XPznvF.js";import{a as p,c as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x}from"./TreeMultiSelect.stories-BJwU3XBe.js";function S(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s,{of:m,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,w.jsx)(u,{children:`TreeMultiSelect`}),`
|
|
3
3
|
`,(0,w.jsx)(o,{children:`Мультивыбор узлов дерева с компрессией subtree в parent`}),`
|
|
4
4
|
`,(0,w.jsxs)(t.p,{children:[(0,w.jsx)(t.code,{children:`TreeMultiSelect`}),` хранит наружу не “все листья”, а канонизированный frontier по уровням дерева.`]}),`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-DlUmG4EA.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./TreeMultiSelect-CH0Zc3KF.js";import{n as s,r as c,t as l}from"./treeStoryFixtures-DXHh9GL3.js";var u=t({BalancedColumns:()=>x,Basic:()=>_,FirstTwoLevelsExpanded:()=>b,MixedSelection:()=>y,OrphanProtectionColumns:()=>S,ParentCompression:()=>v,RightEdgeColumns:()=>C,__namedExportsOrder:()=>w,default:()=>g});function d({args:e,updateArgs:t}){return(0,f.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,f.jsx)(o,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,f.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(e.value)]})]})}var f,p,m,h,g,_,v,y,b,x,S,C,w;function T(){return(T=e((()=>{r(),a(),s(),f=n(),p=Array.from({length:66},(e,t)=>{let n=String(t+1).padStart(2,`0`),r=`D${n}`;return{id:`DIVISION:${r}`,codeKey:`DIVISION`,value:r,label:`Дивизион ${n}`,code:r,searchText:`${r} Дивизион ${n}`}}),m=i((e,t)=>(0,f.jsx)(d,{args:e,updateArgs:t})),h=i((e,t)=>(0,f.jsx)(`div`,{style:{display:`flex`,minHeight:`calc(100vh - 32px)`,alignItems:`center`,justifyContent:`flex-end`},children:(0,f.jsx)(`div`,{style:{width:260},children:(0,f.jsx)(d,{args:e,updateArgs:t})})})),g={title:`UI/TreeMultiSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узлов`,description:`Мультивыбор с канонизацией subtree в ближайший parent.`,nodes:l,value:{},onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст без выбранных узлов.`,control:`text`},nodes:{description:`Дерево доступных узлов.`,control:!1},value:{description:`Контролируемое отображение выбранных узлов по codeKey.`,control:!1},onChange:{description:`Вызывается при commit набора узлов.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},isLoading:{description:`Показывает загрузку дерева.`,control:`boolean`},error:{description:`Текст ошибки загрузки.`,control:`text`},optionsLayout:{description:`Способ показа: дерево или адаптивные колонки.`,control:`inline-radio`,options:[`tree`,`columns`]},defaultExpandedCodeKeys:{description:`Ключи уровней, раскрываемых при открытии.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},_={render:m,args:{value:{OWNER:[`P0001`]}}},v={render:m,args:{label:`Компрессия parent`,description:`Когда выбран весь subtree, наружу может уйти только родительский узел.`,value:{REGION:[`R01`]}}},y={render:m,args:{label:`Смешанный выбор`,description:`Пример mixed frontier по соседним уровням.`,value:{BRANCH:[`B0101`],OWNER:[`P0004`]}}},b={render:m,args:{label:`Раскрыты два уровня`,description:`Уровни REGION и BRANCH раскрыты по умолчанию, остальные уровни остаются закрытыми.`,defaultExpandedCodeKeys:[`REGION`,`BRANCH`]}},x={render:m,args:{label:`Все уровни в столбцах`,description:`Popover подбирает число столбцов по количеству опций и доступному viewport.`,optionsLayout:`columns`,value:{BRANCH:[`B0101`]}}},S={render:m,args:{label:`Защита начала большой группы`,description:`Начало группы остаётся в текущем столбце при трёх свободных строках; при одной или двух переносится в новый.`,optionsLayout:`columns`,nodes:c}},C={render:h,args:{label:`Контрол у правой границы`,description:`Popover для 66 опций должен сравнить вертикальные и горизонтальные стороны и остаться внутри viewport.`,optionsLayout:`columns`,nodes:p}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
render: renderTreeMultiSelectStory,
|
|
3
3
|
args: {
|
|
4
4
|
value: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./chevron-right-u6yLjLrs.js";import{n as i,t as a}from"./CheckBox-Cpt5rjSg.js";import{n as o}from"./iframe-YrfSEgEg.js";import{a as s,i as c,r as l,s as u,t as d}from"./utils-tg3ibbzi.js";import{n as f,t as p}from"./OptionButton-CdYqQAwC.js";import{l as m,o as h}from"./Input-WhTMStKL.js";import{c as g,i as ee,l as te,m as _,n as ne,p as re,r as ie,s as ae,t as oe,u as v}from"./usePickerTriggerController-DeZhyi9h.js";import{a as se,n as ce,o as le,t as ue}from"./Option-BwWLsS-Q.js";import{i as de,n as fe,r as pe,t as me}from"./usePickerQuery-DJMG-4Gl.js";function y(e,t){return`${e}::${t}`}function he(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=new Map,o=new Map,s=new Map,c=0,l=(e,u)=>{t.set(e.id,e),n.set(e.id,u),i.set(e.id,c++);let d=y(e.codeKey,e.value);a.set(d,e.id);let f=o.get(d);f?f.push(e.id):o.set(d,[e.id]);let p=(e.children??[]).map(e=>e.id);r.set(e.id,p);for(let t of e.children??[])l(t,e.id);s.set(e.id,e.disabled===!0||p.some(e=>s.get(e)===!0))};for(let t of e)l(t);return{rootIds:e.map(e=>e.id),nodeById:t,parentById:n,childrenById:r,preorderIndexById:i,nodeIdByCodeValue:a,nodeIdsByCodeValue:o,subtreeContainsDisabledById:s}}function b(e,t){let n=t.nodeById.get(e);return n?t.nodeIdsByCodeValue.get(y(n.codeKey,n.value))??[]:[]}function ge(e,t){if(e)return t.nodeIdByCodeValue.get(y(e.codeKey,e.value))}function x(e,t){let n=new Set;if(!e)return n;for(let[r,i]of Object.entries(e))for(let e of i)for(let i of t.nodeIdsByCodeValue.get(y(r,e))??[])n.add(i);return O(n,t)}function S(e,t){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1)),r={},i=new Set;for(let e of n){let n=t.nodeById.get(e);if(!n)continue;let a=y(n.codeKey,n.value);i.has(a)||(r[n.codeKey]=r[n.codeKey]??[],r[n.codeKey].push(n.value),i.add(a))}return r}function _e(e,t){let n=[],r=t.parentById.get(e);for(;r;)n.push(r),r=t.parentById.get(r);return n}function C(e,t,n){let r=n.parentById.get(e);for(;r;){if(r===t)return!0;r=n.parentById.get(r)}return!1}function w(e,t){let n=b(e,t);return!n.length||n.some(e=>{let n=t.nodeById.get(e);return!n||n.selectionBehavior===`descendants`||t.subtreeContainsDisabledById.get(e)===!0})?!1:!n.some((e,r)=>n.some((n,i)=>r!==i&&(C(e,n,t)||C(n,e,t))))}function ve(e,t){return w(e,t)?b(e,t):[e]}function ye(e,t,n){for(let r of[...e])C(r,t,n)&&e.delete(r)}function T(e,t,n){let r=[t];for(let t=0;t<r.length;t+=1){let i=r[t];if(i){r.push(...n.childrenById.get(i)??[]);for(let t of b(i,n))e.delete(t)}}}function E(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&&r.every(e=>E(e,t,n))}function D(e,t,n){if(!n.nodeById.has(e))return!1;let r=t.childrenById.get(e)??[],i=n.childrenById.get(e)??[];return r.length===i.length&&r.every((e,r)=>i[r]===e&&D(e,t,n))}function O(e,t){let n=new Set(e);for(let e of[...n])if(t.nodeById.get(e)?.selectionBehavior===`descendants`){n.delete(e);for(let r of j(t,t.childrenById.get(e)??[]))n.add(r)}for(let e of[...n])_e(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)??[];if(!(r.length===0||n.has(e)||t.nodeById.get(e)?.disabled||t.nodeById.get(e)?.selectionBehavior===`descendants`)&&r.every(e=>E(e,n,t))){let r=b(e,t);if(w(e,t)&&r.every(e=>{let r=t.nodeById.get(e);return r&&!r.disabled&&r.selectionBehavior!==`descendants`&&E(e,n,t)}))for(let e of r)ye(n,e,t),n.add(e)}}return n}function k(e,t,n){let r=n.parentById.get(t);for(;r;){if(e.has(r)){for(let t of b(r,n))if(e.has(t)){e.delete(t);for(let r of j(n,n.childrenById.get(t)??[]))e.add(r)}return!0}r=n.parentById.get(r)}return!1}function A(e,t,n){return t.has(e)?!0:_e(e,n).some(e=>t.has(e))}function be(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=>be(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 xe(e,t){let n={selectedIds:new Set,partialIds:new Set};for(let r of t.rootIds)be(r,e,t,n);return n}function j(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);if(!r||r.disabled)return{containsDisabled:!0,selectedIds:a};if(r.selectionBehavior===`descendants`)return{containsDisabled:o,selectedIds:a};let s=!w(t,e);return o||s?{containsDisabled:!0,selectedIds:a}:{containsDisabled:!1,selectedIds:[t]}};return new Set(t.flatMap(e=>n(e).selectedIds))}function M(e,t,n,r){let i=x(e,n),a=r!==void 0&&!D(t,n,r);if(!a&&E(t,i,n))return T(i,t,n),S(O(i,n),n);let o=e=>{if(i.has(e)){T(i,e,n);return}if(E(e,i,n)){T(i,e,n);return}if(A(e,i,n)){k(i,e,n)&&(A(e,i,n)||E(e,i,n)?o(e):T(i,e,n));return}for(let t of ve(e,n))ye(i,t,n),i.add(t)},s=e=>{if(!r?.nodeById.has(e))return[];if(D(e,n,r)){let t=[...j(n,[e])];return t.length>0?t:A(e,i,n)||E(e,i,n)?[e]:[]}return(r.childrenById.get(e)??[]).flatMap(s)},c=a?s(t):[...j(n,[t])],l=c.length===0&&(A(t,i,n)||E(t,i,n))?[t]:c,u=l.length>0&&l.every(e=>A(e,i,n)||E(e,i,n));for(let e of l){let t=A(e,i,n)||E(e,i,n);(u&&t||!u&&!t)&&o(e)}return S(O(i,n),n)}function N(e,t,n){let r=t.parentById.get(e);for(;r;)n.add(r),r=t.parentById.get(r)}function Se(e,t){let n=new Set;for(let r of e)N(r,t,n);return n}function Ce(e,t,n){let r=new Set;for(let[i,a]of e.childrenById){if(a.length===0)continue;let o=e.nodeById.get(i);o&&(n.get(i)??t.has(o.codeKey))&&r.add(i)}return r}function P(e,t,n){let r=(e.children??[]).map(e=>P(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 we(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:[...e],expandedIds:new Set};let r=new Set;return{nodes:e.map(e=>P(e,n,r)).filter(e=>!!e),expandedIds:r}}function Te(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}function F(){return(F=e((()=>{})))()}function Ee(e){let t=[],n=0;for(;n<e.length;){let r=n+1;for(;r<e.length&&e[r]?.level!==0;)r+=1;t.push({startIndex:n,endIndexExclusive:r}),n=r}let r=t.map(({startIndex:e,endIndexExclusive:t})=>`${e}:${t}`).join(`|`);return{itemCount:e.length,groups:t,signature:`${e.length}|${r}`}}function I(e,t){return Number.isFinite(e)&&e>0?e:t}function De(e){let t=e.endIndexExclusive-e.startIndex;return Math.min(Ae,t)}function L(e,t){let n=Math.max(1,t),r=[],i=1,a=1,o=0;for(let t of e.groups){let e=De(t),s=n-a+1;a>1&&e>s&&(o+=s,i+=1,a=1);for(let e=t.startIndex;e<t.endIndexExclusive;e+=1)r[e]={column:i,row:a},a+=1,a>n&&(i+=1,a=1)}return{placements:r,usedColumnCount:r.length?Math.max(...r.map(e=>e.column)):1,intentionalGapCount:o}}function Oe({descriptor:e,availableWidth:t,availableHeight:n,viewportWidth:r,viewportHeight:i,referenceWidth:a}){let o=Math.max(0,Math.floor(Number.isFinite(e.itemCount)?e.itemCount:0)),s=I(t,240),c=I(n,80),l=I(r,s+16),u=I(i,c),d=Math.max(1,Math.min(s,Math.max(1,l-16))),f=Math.max(1,Math.min(c,u-16)),p=Math.max(1,I(a,1)),m=Math.min(d,p),h=Math.max(1,Math.floor((d-R+B)/234)),g=Math.max(1,Math.min(H,h,o||1)),ee=e.groups.reduce((e,t)=>Math.max(e,De(t)),1);if(o===0)return{columnCount:1,rowCount:1,width:m,minWidth:m,maxHeight:f,placements:[]};let te,_=1/0;for(let t=1;t<=g;t+=1){let n=Math.max(ee,Math.ceil(o/t)),r=L(e,n);for(;r.usedColumnCount>t&&n<o;)n+=1,r=L(e,n);let i=r.usedColumnCount,a=Math.max(m,R+i*z+(i-1)*B),s=ke+n*V,c=a/d,l=s/f,u=(i*n-o)/o,p=r.intentionalGapCount/o,h=Math.max(c,l)+.25*Math.abs(c-l)+.01*u+.02*p+.04*(i-1);h<_&&(_=h,te={columnCount:i,rowCount:n,width:Math.min(d,a),minWidth:m,maxHeight:f,placements:r.placements})}return te??{columnCount:1,rowCount:o,width:m,minWidth:m,maxHeight:f,placements:L(e,o).placements}}var R,ke,z,B,V,H,Ae;function U(){return(U=e((()=>{R=16,ke=48,z=224,B=10,V=32,H=6,Ae=3})))()}var je,W,G,Me,K,Ne,Pe,Fe,Ie,Le,Re,q;function J(){return(J=e((()=>{je=`_6EH37F`,W=`UBll8Q`,G=`-y3RZP`,Me=`ayLJ50`,K=`_430vL2`,Ne=`_2MFkGF`,Pe=`o5NWnX`,Fe=`ibSd-S`,Ie=`lXezvv`,Le=`FMlLGX`,Re=`d2Zt7U`,q={treeNodeButton:je,treePopupHeader:W,treeColumns:G,treeColumnRow:Me,treeColumnsPopupLayout:K,treeColumnCheckBox:Ne,treeIndent:Pe,treeExpander:Fe,treeExpanderPlaceholder:Ie,treeExpanderIcon:Le,treeExpanderIconExpanded:Re}})))()}function ze({node:e,level:t,highlight:n,hasChildren:i,isExpanded:o,selected:c,partial:l,selectionMode:u,optionsLayout:d=`tree`,onToggleExpand:f,onToggleSelection:m,onActivate:h}){let g=d===`tree`,ee=d===`columns`&&t===0;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:q.treeIndent,style:{"--tree-level":t},"aria-hidden":`true`}),g&&i?(0,Y.jsx)(`button`,{type:`button`,className:q.treeExpander,onClick:e=>{e.stopPropagation(),f?.()},"aria-label":o?`Свернуть ветку`:`Развернуть ветку`,"data-ui":`tree-select-expander`,"data-action":o?`collapse-tree-select-node`:`expand-tree-select-node`,children:(0,Y.jsx)(r,{className:s(q.treeExpanderIcon,o&&q.treeExpanderIconExpanded)})}):g?(0,Y.jsx)(`div`,{className:q.treeExpanderPlaceholder,"aria-hidden":`true`}):null,u===`multi`?(0,Y.jsx)(`div`,{className:q.treeColumnCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,Y.jsx)(a,{value:c,indeterminate:l,disabled:e.disabled,"aria-label":`Выбрать ${e.label}`,onChange:()=>m?.()})}):null,(0,Y.jsx)(p,{className:q.treeNodeButton,tabIndex:-1,disabled:e.disabled,text:e.label,code:e.code,searchText:n,emphasizeContent:ee,onMouseDown:e=>e.preventDefault(),onClick:h})]})}var Y;function Be(){return(Be=e((()=>{c(),n(),i(),f(),J(),Y=o(),ze.__docgenInfo={description:``,methods:[],displayName:`TreeNodeContent`,props:{node:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./chevron-right-BhBh36az.js";import{n as i,t as a}from"./CheckBox-DlCG7Opb.js";import{n as o}from"./iframe-DlUmG4EA.js";import{a as s,i as c,r as l,s as u,t as d}from"./utils-tg3ibbzi.js";import{n as f,t as p}from"./OptionButton-ClHPJWSS.js";import{l as m,o as h}from"./Input-Bb5uuJsd.js";import{c as g,i as ee,l as te,m as _,n as ne,p as re,r as ie,s as ae,t as oe,u as v}from"./usePickerTriggerController-fH-NsvWu.js";import{a as se,n as ce,o as le,t as ue}from"./Option-EvZAvPlO.js";import{i as de,n as fe,r as pe,t as me}from"./usePickerQuery-7mnpDV7K.js";function y(e,t){return`${e}::${t}`}function he(e){let t=new Map,n=new Map,r=new Map,i=new Map,a=new Map,o=new Map,s=new Map,c=0,l=(e,u)=>{t.set(e.id,e),n.set(e.id,u),i.set(e.id,c++);let d=y(e.codeKey,e.value);a.set(d,e.id);let f=o.get(d);f?f.push(e.id):o.set(d,[e.id]);let p=(e.children??[]).map(e=>e.id);r.set(e.id,p);for(let t of e.children??[])l(t,e.id);s.set(e.id,e.disabled===!0||p.some(e=>s.get(e)===!0))};for(let t of e)l(t);return{rootIds:e.map(e=>e.id),nodeById:t,parentById:n,childrenById:r,preorderIndexById:i,nodeIdByCodeValue:a,nodeIdsByCodeValue:o,subtreeContainsDisabledById:s}}function b(e,t){let n=t.nodeById.get(e);return n?t.nodeIdsByCodeValue.get(y(n.codeKey,n.value))??[]:[]}function ge(e,t){if(e)return t.nodeIdByCodeValue.get(y(e.codeKey,e.value))}function x(e,t){let n=new Set;if(!e)return n;for(let[r,i]of Object.entries(e))for(let e of i)for(let i of t.nodeIdsByCodeValue.get(y(r,e))??[])n.add(i);return O(n,t)}function S(e,t){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1)),r={},i=new Set;for(let e of n){let n=t.nodeById.get(e);if(!n)continue;let a=y(n.codeKey,n.value);i.has(a)||(r[n.codeKey]=r[n.codeKey]??[],r[n.codeKey].push(n.value),i.add(a))}return r}function _e(e,t){let n=[],r=t.parentById.get(e);for(;r;)n.push(r),r=t.parentById.get(r);return n}function C(e,t,n){let r=n.parentById.get(e);for(;r;){if(r===t)return!0;r=n.parentById.get(r)}return!1}function w(e,t){let n=b(e,t);return!n.length||n.some(e=>{let n=t.nodeById.get(e);return!n||n.selectionBehavior===`descendants`||t.subtreeContainsDisabledById.get(e)===!0})?!1:!n.some((e,r)=>n.some((n,i)=>r!==i&&(C(e,n,t)||C(n,e,t))))}function ve(e,t){return w(e,t)?b(e,t):[e]}function ye(e,t,n){for(let r of[...e])C(r,t,n)&&e.delete(r)}function T(e,t,n){let r=[t];for(let t=0;t<r.length;t+=1){let i=r[t];if(i){r.push(...n.childrenById.get(i)??[]);for(let t of b(i,n))e.delete(t)}}}function E(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&&r.every(e=>E(e,t,n))}function D(e,t,n){if(!n.nodeById.has(e))return!1;let r=t.childrenById.get(e)??[],i=n.childrenById.get(e)??[];return r.length===i.length&&r.every((e,r)=>i[r]===e&&D(e,t,n))}function O(e,t){let n=new Set(e);for(let e of[...n])if(t.nodeById.get(e)?.selectionBehavior===`descendants`){n.delete(e);for(let r of j(t,t.childrenById.get(e)??[]))n.add(r)}for(let e of[...n])_e(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)??[];if(!(r.length===0||n.has(e)||t.nodeById.get(e)?.disabled||t.nodeById.get(e)?.selectionBehavior===`descendants`)&&r.every(e=>E(e,n,t))){let r=b(e,t);if(w(e,t)&&r.every(e=>{let r=t.nodeById.get(e);return r&&!r.disabled&&r.selectionBehavior!==`descendants`&&E(e,n,t)}))for(let e of r)ye(n,e,t),n.add(e)}}return n}function k(e,t,n){let r=n.parentById.get(t);for(;r;){if(e.has(r)){for(let t of b(r,n))if(e.has(t)){e.delete(t);for(let r of j(n,n.childrenById.get(t)??[]))e.add(r)}return!0}r=n.parentById.get(r)}return!1}function A(e,t,n){return t.has(e)?!0:_e(e,n).some(e=>t.has(e))}function be(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=>be(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 xe(e,t){let n={selectedIds:new Set,partialIds:new Set};for(let r of t.rootIds)be(r,e,t,n);return n}function j(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);if(!r||r.disabled)return{containsDisabled:!0,selectedIds:a};if(r.selectionBehavior===`descendants`)return{containsDisabled:o,selectedIds:a};let s=!w(t,e);return o||s?{containsDisabled:!0,selectedIds:a}:{containsDisabled:!1,selectedIds:[t]}};return new Set(t.flatMap(e=>n(e).selectedIds))}function M(e,t,n,r){let i=x(e,n),a=r!==void 0&&!D(t,n,r);if(!a&&E(t,i,n))return T(i,t,n),S(O(i,n),n);let o=e=>{if(i.has(e)){T(i,e,n);return}if(E(e,i,n)){T(i,e,n);return}if(A(e,i,n)){k(i,e,n)&&(A(e,i,n)||E(e,i,n)?o(e):T(i,e,n));return}for(let t of ve(e,n))ye(i,t,n),i.add(t)},s=e=>{if(!r?.nodeById.has(e))return[];if(D(e,n,r)){let t=[...j(n,[e])];return t.length>0?t:A(e,i,n)||E(e,i,n)?[e]:[]}return(r.childrenById.get(e)??[]).flatMap(s)},c=a?s(t):[...j(n,[t])],l=c.length===0&&(A(t,i,n)||E(t,i,n))?[t]:c,u=l.length>0&&l.every(e=>A(e,i,n)||E(e,i,n));for(let e of l){let t=A(e,i,n)||E(e,i,n);(u&&t||!u&&!t)&&o(e)}return S(O(i,n),n)}function N(e,t,n){let r=t.parentById.get(e);for(;r;)n.add(r),r=t.parentById.get(r)}function Se(e,t){let n=new Set;for(let r of e)N(r,t,n);return n}function Ce(e,t,n){let r=new Set;for(let[i,a]of e.childrenById){if(a.length===0)continue;let o=e.nodeById.get(i);o&&(n.get(i)??t.has(o.codeKey))&&r.add(i)}return r}function P(e,t,n){let r=(e.children??[]).map(e=>P(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 we(e,t){let n=t.trim().toLowerCase();if(!n)return{nodes:[...e],expandedIds:new Set};let r=new Set;return{nodes:e.map(e=>P(e,n,r)).filter(e=>!!e),expandedIds:r}}function Te(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}function F(){return(F=e((()=>{})))()}function Ee(e){let t=[],n=0;for(;n<e.length;){let r=n+1;for(;r<e.length&&e[r]?.level!==0;)r+=1;t.push({startIndex:n,endIndexExclusive:r}),n=r}let r=t.map(({startIndex:e,endIndexExclusive:t})=>`${e}:${t}`).join(`|`);return{itemCount:e.length,groups:t,signature:`${e.length}|${r}`}}function I(e,t){return Number.isFinite(e)&&e>0?e:t}function De(e){let t=e.endIndexExclusive-e.startIndex;return Math.min(Ae,t)}function L(e,t){let n=Math.max(1,t),r=[],i=1,a=1,o=0;for(let t of e.groups){let e=De(t),s=n-a+1;a>1&&e>s&&(o+=s,i+=1,a=1);for(let e=t.startIndex;e<t.endIndexExclusive;e+=1)r[e]={column:i,row:a},a+=1,a>n&&(i+=1,a=1)}return{placements:r,usedColumnCount:r.length?Math.max(...r.map(e=>e.column)):1,intentionalGapCount:o}}function Oe({descriptor:e,availableWidth:t,availableHeight:n,viewportWidth:r,viewportHeight:i,referenceWidth:a}){let o=Math.max(0,Math.floor(Number.isFinite(e.itemCount)?e.itemCount:0)),s=I(t,240),c=I(n,80),l=I(r,s+16),u=I(i,c),d=Math.max(1,Math.min(s,Math.max(1,l-16))),f=Math.max(1,Math.min(c,u-16)),p=Math.max(1,I(a,1)),m=Math.min(d,p),h=Math.max(1,Math.floor((d-R+B)/234)),g=Math.max(1,Math.min(H,h,o||1)),ee=e.groups.reduce((e,t)=>Math.max(e,De(t)),1);if(o===0)return{columnCount:1,rowCount:1,width:m,minWidth:m,maxHeight:f,placements:[]};let te,_=1/0;for(let t=1;t<=g;t+=1){let n=Math.max(ee,Math.ceil(o/t)),r=L(e,n);for(;r.usedColumnCount>t&&n<o;)n+=1,r=L(e,n);let i=r.usedColumnCount,a=Math.max(m,R+i*z+(i-1)*B),s=ke+n*V,c=a/d,l=s/f,u=(i*n-o)/o,p=r.intentionalGapCount/o,h=Math.max(c,l)+.25*Math.abs(c-l)+.01*u+.02*p+.04*(i-1);h<_&&(_=h,te={columnCount:i,rowCount:n,width:Math.min(d,a),minWidth:m,maxHeight:f,placements:r.placements})}return te??{columnCount:1,rowCount:o,width:m,minWidth:m,maxHeight:f,placements:L(e,o).placements}}var R,ke,z,B,V,H,Ae;function U(){return(U=e((()=>{R=16,ke=48,z=224,B=10,V=32,H=6,Ae=3})))()}var je,W,G,Me,K,Ne,Pe,Fe,Ie,Le,Re,q;function J(){return(J=e((()=>{je=`_6EH37F`,W=`UBll8Q`,G=`-y3RZP`,Me=`ayLJ50`,K=`_430vL2`,Ne=`_2MFkGF`,Pe=`o5NWnX`,Fe=`ibSd-S`,Ie=`lXezvv`,Le=`FMlLGX`,Re=`d2Zt7U`,q={treeNodeButton:je,treePopupHeader:W,treeColumns:G,treeColumnRow:Me,treeColumnsPopupLayout:K,treeColumnCheckBox:Ne,treeIndent:Pe,treeExpander:Fe,treeExpanderPlaceholder:Ie,treeExpanderIcon:Le,treeExpanderIconExpanded:Re}})))()}function ze({node:e,level:t,highlight:n,hasChildren:i,isExpanded:o,selected:c,partial:l,selectionMode:u,optionsLayout:d=`tree`,onToggleExpand:f,onToggleSelection:m,onActivate:h}){let g=d===`tree`,ee=d===`columns`&&t===0;return(0,Y.jsxs)(Y.Fragment,{children:[(0,Y.jsx)(`div`,{className:q.treeIndent,style:{"--tree-level":t},"aria-hidden":`true`}),g&&i?(0,Y.jsx)(`button`,{type:`button`,className:q.treeExpander,onClick:e=>{e.stopPropagation(),f?.()},"aria-label":o?`Свернуть ветку`:`Развернуть ветку`,"data-ui":`tree-select-expander`,"data-action":o?`collapse-tree-select-node`:`expand-tree-select-node`,children:(0,Y.jsx)(r,{className:s(q.treeExpanderIcon,o&&q.treeExpanderIconExpanded)})}):g?(0,Y.jsx)(`div`,{className:q.treeExpanderPlaceholder,"aria-hidden":`true`}):null,u===`multi`?(0,Y.jsx)(`div`,{className:q.treeColumnCheckBox,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:(0,Y.jsx)(a,{value:c,indeterminate:l,disabled:e.disabled,"aria-label":`Выбрать ${e.label}`,onChange:()=>m?.()})}):null,(0,Y.jsx)(p,{className:q.treeNodeButton,tabIndex:-1,disabled:e.disabled,text:e.label,code:e.code,searchText:n,emphasizeContent:ee,onMouseDown:e=>e.preventDefault(),onClick:h})]})}var Y;function Be(){return(Be=e((()=>{c(),n(),i(),f(),J(),Y=o(),ze.__docgenInfo={description:``,methods:[],displayName:`TreeNodeContent`,props:{node:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
|
|
2
2
|
id: string;
|
|
3
3
|
codeKey: string;
|
|
4
4
|
value: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-DlUmG4EA.js";import{n as r,r as i,t as a,u as o}from"./TreePickerBase-CKnyu6AR.js";function s(e){if(e)return e.code&&e.code!==e.label?`${e.label} · ${e.code}`:e.label}function c({label:e,description:t,disabled:n,placeholder:r=`Выберите значение`,size:c,nodes:d,value:f,onChange:p,query:m,defaultQuery:h,onQuery:g,isLoading:_,error:v,clearable:y=!1,defaultExpandedCodeKeys:b}){let x=(0,l.useMemo)(()=>i(d),[d]),S=o(f,x),C=S?x.nodeById.get(S):void 0;return(0,u.jsx)(a,{label:e,description:t,disabled:n,placeholder:r,size:c,nodes:d,selectedIds:S?new Set([S]):new Set,partialIds:new Set,selectionMode:`single`,defaultExpandedCodeKeys:b,triggerMode:`search`,selectedSummaryText:s(C),query:m,defaultQuery:h,onQuery:g,onNodeActivate:e=>p({codeKey:e.codeKey,value:e.value}),onClearSelection:y?()=>p(void 0):void 0,isLoading:_,error:v})}var l,u;function d(){return(d=e((()=>{l=t(),r(),u=n(),c.__docgenInfo={description:``,methods:[],displayName:`TreeSelect`,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:``},clearable:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nЗначения сопоставляются с `TreeSelectNode.codeKey`."}},composes:[`Omit`]}})))()}export{d as n,c as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-DlUmG4EA.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-v2XPznvF.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./TreeSelect.stories-CEiN12BG.js";function y(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,x.jsx)(u,{children:`TreeSelect`}),`
|
|
3
3
|
`,(0,x.jsx)(o,{children:`Single-select для выбора одного узла из дерева`}),`
|
|
4
4
|
`,(0,x.jsxs)(t.p,{children:[(0,x.jsx)(t.code,{children:`TreeSelect`}),` подходит для сценариев, где выбор должен происходить по одному узлу, но пользователь работает не с плоским списком, а с иерархией.`]}),`
|
package/storybook-static/assets/{TreeSelect.stories-CyurXsU_.js → TreeSelect.stories-CEiN12BG.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-DlUmG4EA.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./treeStoryFixtures-DXHh9GL3.js";import{n as s,t as c}from"./TreeSelect-DYJm99Z2.js";var l=t({Basic:()=>m,Empty:()=>_,FirstLevelExpanded:()=>g,SelectParent:()=>h,__namedExportsOrder:()=>v,default:()=>p});function u({args:e,updateArgs:t}){return(0,d.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,d.jsx)(c,{...e,onChange:n=>{e.onChange(n),t({value:n})}}),(0,d.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,e.value?`${e.value.codeKey}=${e.value.value}`:`пусто`]})]})}var d,f,p,m,h,g,_,v;function y(){return(y=e((()=>{r(),s(),a(),d=n(),f=i((e,t)=>(0,d.jsx)(u,{args:e,updateArgs:t})),p={title:`UI/TreeSelect`,component:c,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узла`,description:`Single-select поверх дерева. Можно выбрать любой узел.`,nodes:o,value:void 0,onChange:()=>{}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст без выбранного узла.`,control:`text`},nodes:{description:`Дерево доступных узлов.`,control:!1},value:{description:`Выбранный узел в формате codeKey/value.`,control:!1},onChange:{description:`Вызывается при выборе узла.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},isLoading:{description:`Показывает загрузку дерева.`,control:`boolean`},error:{description:`Текст ошибки загрузки.`,control:`text`},clearable:{description:`Показывает действие очистки выбора.`,control:`boolean`},defaultExpandedCodeKeys:{description:`Ключи уровней, раскрываемых при открытии.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},m={render:f,args:{value:{codeKey:`BRANCH`,value:`B0101`}}},h={render:f,args:{label:`Выбор родителя`,description:`Проверка single-select сценария, когда выбирается не leaf, а промежуточный узел.`,value:{codeKey:`REGION`,value:`R01`}}},g={render:f,args:{label:`Раскрыт первый уровень`,description:`Все узлы уровня REGION раскрыты до первого ручного действия пользователя.`,defaultExpandedCodeKeys:[`REGION`]}},_={render:f,args:{nodes:[],description:`Состояние без доступных узлов.`}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
render: renderTreeSelectStory,
|
|
3
3
|
args: {
|
|
4
4
|
value: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-DlUmG4EA.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-v2XPznvF.js";import{_ as p,a as m,c as h,d as g,f as _,g as v,h as y,i as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k}from"./TreeTable.stories-DQsXSocU.js";function A(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(s,{of:D,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,M.jsx)(u,{children:`TreeTable`}),`
|
|
3
3
|
`,(0,M.jsx)(o,{children:`Древовидная таблица для плоских OData-данных на базе TanStack Table`}),`
|
|
4
4
|
`,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`TreeTable`}),` предназначен для сценариев, где данные приходят плоским списком, но в UI должны выглядеть как дерево.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r,t as i}from"./chevron-down-DCcoFYMu.js";import{n as a,t as o}from"./chevron-right-BhBh36az.js";import{n as s}from"./iframe-DlUmG4EA.js";import{$ as c,J as l,Q as u,X as d,Z as f,_ as ee,a as te,b as ne,g as re,h as ie,i as ae,y as oe}from"./odata-BMO7cuBZ.js";import{a as se,i as ce}from"./utils-tg3ibbzi.js";import{i as le,y as ue}from"./formatters-D33Uh3si-Df97arf9.js";import{n as de,t as p}from"./createControlledStoryRender-BouhvX-R.js";import{_ as fe,a as pe,b as me,c as he,d as ge,f as _e,g as ve,h as ye,i as be,l as xe,m as Se,n as Ce,o as we,p as Te,r as Ee,s as De,t as Oe,u as ke,v as Ae,x as je,y as m}from"./FormattedTableCell-SiBfPwwP.js";function Me(e,t,n){let r=e.get(t);if(r){r.push(n);return}e.set(t,[n])}function h(e){return Array.from(new Set(e))}function Ne(e,t){let n=new Map,r=new Map,i=new Map,a=[],o=[],s=[],c=[];for(let o of e){let e=t.getRowId(o);if(n.has(e)){a.push(e);continue}let s=t.getParentRowId(o)??null;n.set(e,o),r.set(e,s),c.push(e),s!==null&&s!==e&&Me(i,s,e)}let l=[];for(let e of c){let t=r.get(e)??null;if(t===null){l.push(e);continue}if(t===e){s.push(e),l.push(e);continue}n.has(t)||(o.push(e),l.push(e))}let u=new Set,d=(e,t)=>{let r=n.get(e);if(!r)throw Error(`Не удалось построить дерево: строка "${e}" отсутствует в индексе.`);u.add(e);let a=new Set(t);a.add(e);let o={...r},c=i.get(e)??[],l=[];for(let e of c){if(a.has(e)){s.push(e);continue}u.has(e)||l.push(d(e,a))}return l.length>0&&(o.children=l),o},f=[],ee=[];for(let e of l)u.has(e)||(f.push(d(e,new Set)),ee.push(e));for(let e of c)u.has(e)||(s.push(e),f.push(d(e,new Set)),ee.push(e));return{rows:f,rowById:n,allRowIds:c,rootRowIds:h(ee),orphanRowIds:h(o),duplicateRowIds:h(a),cyclicRowIds:h(s)}}function Pe(){return(Pe=e((()=>{})))()}var Fe,g,_,Ie,v,y,b,x;function S(){return(S=e((()=>{Fe=`jOS9rT`,g=`zHOAf7`,_=`j48cXg`,Ie=`mf4-Kr`,v=`p8pb0F`,y=`KIudLf`,b=`bJsPGU`,x={treeColumnCell:Fe,selectedIndicatorCell:g,treeCell:_,treeCellContent:Ie,expanderButton:v,expanderSpacer:y,sentinel:b}})))()}function Le(e){return Object.fromEntries(e.map(e=>[e,!0]))}function Re(e){return typeof e==`boolean`?[]:Object.keys(e).filter(t=>e[t])}function ze(e,t){return t.get(e.id)??e.original}function Be(e,t,n,r){return e.cell.column.id===n?(0,T.jsxs)(`div`,{className:x.treeCell,style:{paddingInlineStart:`calc(${e.row.depth} * ${oe(r)??`0em`})`},children:[e.row.getCanExpand()?(0,T.jsx)(`button`,{type:`button`,className:x.expanderButton,"aria-label":e.row.getIsExpanded()?`Свернуть строку`:`Развернуть строку`,"data-tree-table-interactive":`true`,"data-ui":`tree-table-expander`,"data-action":e.row.getIsExpanded()?`collapse-tree-table-row`:`expand-tree-table-row`,onClick:t=>{t.stopPropagation(),e.row.toggleExpanded()},children:e.row.getIsExpanded()?(0,T.jsx)(i,{size:16}):(0,T.jsx)(o,{size:16})}):(0,T.jsx)(`span`,{className:x.expanderSpacer,"aria-hidden":`true`}),(0,T.jsx)(`div`,{className:x.treeCellContent,children:t})]}):t}function C({title:e,isLoading:t,isFetching:n,data:r,columns:i,hierarchy:a,selectionMode:o=`none`,expandFirstLevel:s=!1,defaultExpandedRowIds:c,treeColumnId:l,indentSize:u=1,className:d,tableClassName:f,columnVisibility:te,defaultColumnVisibility:ne,columnOrder:ie,defaultColumnOrder:ae,columnSizing:oe,defaultColumnSizing:ce,columnPinning:ue,defaultColumnPinning:de,enableColumnResizing:p=!1,enableColumnReordering:pe=!1,columnResizeMinWidth:me,onColumnVisibilityChange:ge,onColumnOrderChange:ve,onColumnSizingChange:be,onColumnPinningChange:xe,onRowClick:Se,onRowSelectionChange:Ce,onExpandedRowIdsChange:De,onReachEnd:m,getRowCanSelect:Me,getRowClassName:h,renderHeaderContextMenu:Pe,renderCellContent:Fe}){let g=(0,w.useMemo)(()=>Ne(r??[],a),[r,a]),_=(0,w.useMemo)(()=>ye(i),[i]),Ie=(0,w.useMemo)(()=>{let e=new Set(c??[]);if(s)for(let t of g.rootRowIds)e.add(t);return Array.from(e)},[c,s,g.rootRowIds]),[v,y]=(0,w.useState)({}),b=(0,w.useRef)(!1),S=(0,w.useRef)(null),C=(0,w.useRef)(null),{rowSelection:Ve,activateRowSelection:He}=re({availableRowIds:g.allRowIds,rowById:g.rowById,selectionMode:o,onRowSelectionChange:Ce}),{columnVisibility:Ue,onColumnVisibilityChange:E}=we({columnVisibility:te,defaultColumnVisibility:ne,onColumnVisibilityChange:ge}),{columnOrder:D,onColumnOrderChange:We}=_e({columnOrder:ie,defaultColumnOrder:ae,onColumnOrderChange:ve}),{columnSizing:O,onColumnSizingChange:k}=he({columnSizing:oe,defaultColumnSizing:ce,columnResizeMinWidth:me,onColumnSizingChange:be}),{columnPinning:A,onColumnPinningChange:Ge}=ke({columnPinning:ue,defaultColumnPinning:de,onColumnPinningChange:xe}),Ke=(0,w.useMemo)(()=>({columnOrder:D,columnPinning:A,columnSizing:O,columnVisibility:Ue}),[D,A,O,Ue]),qe=(0,w.useEffectEvent)((e,t)=>{if(e.length===0){b.current=!1,y({});return}let n=new Set(e);y(e=>{let r=Re(e).filter(e=>n.has(e));return b.current?Le(r):(b.current=!0,Le(Array.from(new Set([...r,...t.filter(e=>n.has(e))]))))})}),j=(0,w.useEffectEvent)(e=>{De?.(Re(e))}),Je=(0,w.useEffectEvent)(()=>{m?.()});(0,w.useEffect)(()=>{qe(g.allRowIds,Ie)},[Ie,g.allRowIds]),(0,w.useEffect)(()=>{j(v)},[v]),(0,w.useEffect)(()=>{if(!m||!S.current||!C.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&Je()},{root:S.current,threshold:.1});return e.observe(C.current),()=>e.disconnect()},[t,m,g.rows.length]);let M=je({features:ee,data:g.rows,columns:i,state:{columnOrder:D,columnPinning:A,columnSizing:O,columnVisibility:Ue,expanded:v,rowSelection:Ve},getRowId:e=>a.getRowId(e),getSubRows:e=>e.children,onColumnOrderChange:We,onColumnPinningChange:Ge,onColumnSizingChange:k,onColumnVisibilityChange:E,onExpandedChange:y,enableMultiRowSelection:o===`multi`,enableRowSelection:e=>{if(o===`none`)return!1;let t=ze(e,g.rowById);return!Me||Me(t)}}),N=Ae(M,Ke),P=l??N[0]?.id,Ye=M.getRowModel().rows,Xe=(0,w.useMemo)(()=>Te({rows:Ye,columns:N,resolveRowBoundaryKey:e=>e.depth,excludeColumnIds:P?new Set([P]):void 0}),[Ye,N,P]);return(0,T.jsx)(Ee,{table:M,columnState:Ke,title:e,isLoading:t,isFetching:n,className:d,tableClassName:f,selectionMode:o,scrollableRef:S,interactiveElementSelector:`[data-tree-table-interactive="true"]`,onActivateRow:o!==`none`||Se?e=>{let t=ze(e,g.rowById);He(e.id,e.getCanSelect()),Se?.(t)}:void 0,isRowInteractive:e=>!!(Se||o!==`none`&&e.getCanSelect()),getRowClassName:e=>{let t=ze(e,g.rowById);return h?.(t)},getCellClassName:({row:e,cell:t})=>se(t.column.id===P&&x.treeColumnCell,t.column.id===P&&e.getIsSelected()&&x.selectedIndicatorCell),getCellLayout:({cell:e})=>Xe.get(e.id),renderHeaderContextMenu:Pe,enableColumnResizing:p,enableColumnReordering:pe,columnResizeMinWidth:me,renderCellContent:e=>{let t=ze(e.row,g.rowById),n=le({field:_.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:t,rowKind:`tree`}),r=fe({columnId:e.cell.column.id,runtimeByColumnId:_.runtimeByColumnId,customCellColumnIds:_.customCellColumnIds})?(0,T.jsx)(Oe,{displayValue:n,align:e.columnMeta?.align}):e.defaultContent;return Be(e,Fe?Fe({...e,defaultContent:r,displayValue:n}):r,P,u)},afterTableContent:m?(0,T.jsx)(`div`,{ref:C,className:x.sentinel,"aria-hidden":`true`}):null})}var w,T;function Ve(){return(Ve=e((()=>{w=n(),ue(),ne(),Pe(),ce(),me(),r(),a(),be(),Se(),ve(),Ce(),m(),ge(),xe(),De(),pe(),S(),T=s(),C.__docgenInfo={description:`Древовидная таблица на базе TanStack Table для плоских OData-данных.`,methods:[],displayName:`TreeTable`,props:{title:{required:!1,tsType:{name:`string`},description:`Необязательный заголовок над таблицей.`},isLoading:{required:!1,tsType:{name:`boolean`},description:`Признак первичной загрузки.`},isFetching:{required:!1,tsType:{name:`boolean`},description:`Признак фоновой догрузки или обновления данных.`},data:{required:!0,tsType:{name:`union`,raw:`readonly TData[] | undefined | null`,elements:[{name:`unknown`},{name:`undefined`},{name:`null`}]},description:`Плоский источник строк.`},columns:{required:!0,tsType:{name:`unknown`},description:`Описание колонок через исходный тип строки.`},hierarchy:{required:!0,tsType:{name:`TreeTableFlatHierarchy`,elements:[{name:`TData`}],raw:`TreeTableFlatHierarchy<TData>`},description:`Правила восстановления дерева из плоского списка.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},expandFirstLevel:{required:!1,tsType:{name:`boolean`},description:"Если `true`, при первом появлении данных раскрывает корневой уровень.",defaultValue:{value:`false`,computed:!1}},defaultExpandedRowIds:{required:!1,tsType:{name:`unknown`},description:`Дополнительные строки, которые должны быть раскрыты при первой инициализации.`},treeColumnId:{required:!1,tsType:{name:`string`},description:`Идентификатор колонки, в которой нужно рисовать tree-toggle и отступы.
|
|
2
|
+
|
|
3
|
+
Если не указан, используется первая видимая колонка.`},indentSize:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:`Отступ на один уровень вложенности.
|
|
4
|
+
|
|
5
|
+
Числовое значение трактуется как \`em\`.`,defaultValue:{value:`1`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:`Дополнительный CSS-класс корневого контейнера.`},tableClassName:{required:!1,tsType:{name:`string`},description:"Дополнительный CSS-класс тега `table`."},columnVisibility:{required:!1,tsType:{name:`TableColumnVisibilityState`},description:`Внешнее controlled-состояние видимости колонок.`},defaultColumnVisibility:{required:!1,tsType:{name:`TableColumnVisibilityState`},description:`Стартовое uncontrolled-состояние видимости колонок.`},columnOrder:{required:!1,tsType:{name:`unknown`},description:`Внешнее controlled-состояние порядка колонок.`},defaultColumnOrder:{required:!1,tsType:{name:`unknown`},description:`Стартовое uncontrolled-состояние порядка колонок.`},columnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Внешнее controlled-состояние ширин колонок в px.`},defaultColumnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Стартовое uncontrolled-состояние ширин колонок в px.`},columnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Внешнее controlled-состояние start-pinning для колонок.`},defaultColumnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Стартовое uncontrolled-состояние start-pinning для колонок.`},enableColumnResizing:{required:!1,tsType:{name:`boolean`},description:`Включает изменение ширины колонок через header-handle.`,defaultValue:{value:`false`,computed:!1}},enableColumnReordering:{required:!1,tsType:{name:`boolean`},description:`Включает изменение порядка колонок через drag&drop заголовков.`,defaultValue:{value:`false`,computed:!1}},columnResizeMinWidth:{required:!1,tsType:{name:`number`},description:`Минимальная ширина колонки при resize в px.`},onColumnVisibilityChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnVisibilityState) => void`,signature:{arguments:[{type:{name:`TableColumnVisibilityState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения видимости колонок.`},onColumnOrderChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnOrderState) => void`,signature:{arguments:[{type:{name:`TableColumnOrderState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения порядка колонок.`},onColumnSizingChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnSizingState) => void`,signature:{arguments:[{type:{name:`TableColumnSizingState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения ширины колонок.`},onColumnPinningChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnPinningState) => void`,signature:{arguments:[{type:{name:`TableColumnPinningState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения start-pinning state.`},onRowClick:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => void`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`void`}}},description:`Вызывается при активации строки кликом или клавиатурой.`},onRowSelectionChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(rows: TData[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TData`}],raw:`TData[]`},name:`rows`}],return:{name:`void`}}},description:`Вызывается после изменения выбранных строк.`},onExpandedRowIdsChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(rowIds: string[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`string`}],raw:`string[]`},name:`rowIds`}],return:{name:`void`}}},description:`Вызывается после изменения раскрытых узлов.`},onReachEnd:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Вызывается при достижении конца таблицы внутри scroll-контейнера.`},getRowCanSelect:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => boolean`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`boolean`}}},description:`Позволяет запретить выбор отдельных строк.`},getRowClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => string | undefined`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:`Позволяет добавить CSS-класс для конкретной строки.`},renderHeaderContextMenu:{required:!1,tsType:{name:`BaseTableProps["renderHeaderContextMenu"]`,raw:`BaseTableProps<TreeTableRuntimeRow<TData>>["renderHeaderContextMenu"]`},description:`Контекстное меню заголовка колонки. Получает runtime-строки дерева,
|
|
6
|
+
потому что BaseTable работает уже после сборки flat hierarchy.`},renderCellContent:{required:!1,tsType:{name:`BaseTableProps["renderCellContent"]`,raw:`BaseTableProps<TreeTableRuntimeRow<TData>>["renderCellContent"]`},description:`Точка расширения содержимого ячейки после общего форматирования.
|
|
7
|
+
|
|
8
|
+
Для tree-column в \`defaultContent\` передается только содержимое ячейки:
|
|
9
|
+
TreeTable сам добавит expander и отступ после выполнения слота.`}}}})))()}var He=t({Basic:()=>z,CollapsedByDefault:()=>V,Empty:()=>G,Fetching:()=>W,Loading:()=>K,MultiSelect:()=>B,WithDefaultExpandedBranch:()=>H,WithDisabledRows:()=>U,WithFormattedTreeColumn:()=>J,WithFormulaColumn:()=>q,WithHiddenZero:()=>Y,WithMergedDuplicates:()=>X,WithODataMetadataAdapter:()=>Z,WithUseODataTableColumnsBuildHook:()=>Q,WithUseODataTableColumnsEnrichHook:()=>$,__namedExportsOrder:()=>it,default:()=>nt});function Ue(){return{version:1,plan:{steps:[{id:`state`,type:`resolveValueState`,config:{resolver:{kind:`threshold`,thresholds:[100],states:[`success`,`warning`],invalidState:`none`},icon:{enabled:!0,showValue:!0,position:`right`}}},{id:`typed`,type:`typedValueFormat`}]}}}function E({args:e,updateArgs:t}){return(0,A.jsx)(C,{...e,onColumnVisibilityChange:n=>{e.onColumnVisibilityChange?.(n),t({columnVisibility:n})},onColumnOrderChange:n=>{e.onColumnOrderChange?.(n),t({columnOrder:n})},onColumnSizingChange:n=>{e.onColumnSizingChange?.(n),t({columnSizing:n})},onColumnPinningChange:n=>{e.onColumnPinningChange?.(n),t({columnPinning:n})}})}function D({args:e,updateArgs:t}){let{columns:n,metadata:r,isLoading:i}=ae({service:F,target:I,mode:`build`});return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,A.jsxs)(`div`,{children:[`Режим build: hook собрал `,n.length,` колонки из metadata`,r?` для сущности «${r.title}».`:`.`]}),(0,A.jsx)(E,{args:{...e,columns:n,isLoading:e.isLoading??i},updateArgs:t})]})}function We({args:e,updateArgs:t}){let{columns:n,metadata:r,isLoading:i}=ae({service:F,target:I,mode:`enrich`,columns:[{id:`label`,accessorKey:`label`,header:`Статья`,meta:{width:16}},{id:`createdAt`,accessorKey:`createdAt`,header:`Создано`,meta:{width:12}},{id:`totalAmount`,accessorKey:`totalAmount`,header:`Итог`,meta:{width:10,align:`right`}}]});return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,A.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные tree-колонки и дополнил их formatting-контекстом`,r?` из metadata «${r.title}».`:`.`]}),(0,A.jsx)(E,{args:{...e,columns:n,isLoading:e.isLoading??i},updateArgs:t})]})}function O({args:e,updateArgs:t,intro:n}){let[r,i]=(0,k.useState)([]);return(0,A.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[n?(0,A.jsx)(`div`,{children:n}):null,(0,A.jsxs)(`div`,{children:[`Выбрано: `,r.length>0?r.join(`, `):`ничего`]}),(0,A.jsx)(E,{args:{...e,onRowSelectionChange:t=>{e.onRowSelectionChange?.(t),i(t.map(e=>e.label))}},updateArgs:t})]})}var k,A,Ge,Ke,qe,j,Je,M,N,P,Ye,Xe,Ze,Qe,$e,F,I,et,tt,nt,L,R,rt,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,it;function at(){return(at=e((()=>{k=n(),te(),f(),ne(),c(),de(),Ve(),A=s(),Ge=[{id:`revenue`,parentId:null,label:`Выручка`,jan:`1 240`,feb:`1 320`,mar:`1 410`,apr:`1 505`},{id:`revenue_clients`,parentId:`revenue`,label:`Клиентский сегмент`,jan:`920`,feb:`960`,mar:`1 020`,apr:`1 080`},{id:`revenue_exports`,parentId:`revenue`,label:`Экспорт`,jan:`320`,feb:`360`,mar:`390`,apr:`425`},{id:`margin`,parentId:null,label:`Маржинальность`,jan:`18%`,feb:`19%`,mar:`21%`,apr:`20%`},{id:`margin_sales`,parentId:`margin`,label:`Продажи`,jan:`12%`,feb:`13%`,mar:`14%`,apr:`14%`},{id:`margin_logistics`,parentId:`margin`,label:`Логистика`,jan:`6%`,feb:`6%`,mar:`7%`,apr:`6%`},{id:`margin_logistics_local`,parentId:`margin_logistics`,label:`Локальная логистика`,jan:`4%`,feb:`4%`,mar:`5%`,apr:`4%`},{id:`margin_logistics_export`,parentId:`margin_logistics`,label:`Экспортная логистика`,jan:`2%`,feb:`2%`,mar:`2%`,apr:`2%`,isLocked:!0},{id:`orphan_costs`,parentId:`missing_parent`,label:`Прочие расходы без родителя`,jan:`30`,feb:`28`,mar:`31`,apr:`35`}],Ke=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:18,align:`left`}},{id:`jan`,accessorKey:`jan`,header:`янв`,meta:{width:8,align:`right`}},{id:`feb`,accessorKey:`feb`,header:`фев`,meta:{width:8,align:`right`}},{id:`mar`,accessorKey:`mar`,header:`мар`,meta:{width:8,align:`right`}},{id:`apr`,accessorKey:`apr`,header:`апр`,meta:{width:8,align:`right`}}],qe={getRowId:e=>e.id,getParentRowId:e=>e.parentId},j={getRowId:e=>e.id,getParentRowId:e=>e.parentId},Je={getRowId:e=>e.id,getParentRowId:e=>e.parentId},M=[{id:`revenue`,parentId:null,label:`Выручка`,purchasePrice:80,salePrice:125,healthScore:40,pendingAmount:0,createdAt:`2026-03-18T09:15:00.000Z`,totalAmount:1820},{id:`revenue_domestic`,parentId:`revenue`,label:`Внутренний рынок`,purchasePrice:82,salePrice:129,healthScore:120,pendingAmount:250,createdAt:`2026-03-18T10:00:00.000Z`,totalAmount:980},{id:`revenue_export`,parentId:`revenue`,label:`Экспорт`,purchasePrice:75,salePrice:118,healthScore:95,pendingAmount:0,createdAt:`2026-03-19T08:25:00.000Z`,totalAmount:840},{id:`margin`,parentId:null,label:`Маржинальность`,purchasePrice:60,salePrice:90,healthScore:70,pendingAmount:0,createdAt:`2026-03-20T07:05:00.000Z`,totalAmount:640}],N=[{id:`div-root-1`,parentId:null,label:`Корень 1`,division:`ДВД`},{id:`div-root-2`,parentId:null,label:`Корень 2`,division:`ДВД`},{id:`div-root-3`,parentId:null,label:`Корень 3`,division:`УД`},{id:`div-child-1`,parentId:`div-root-3`,label:`Дочерний узел`,division:`УД`}],P=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:14}},{id:`division`,accessorKey:`division`,header:`Дивизион`,meta:{width:10,mergeDuplicates:!0}}],Ye=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:16}},{id:`purchasePrice`,accessorKey:`purchasePrice`,header:`Закупка`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`salePrice`,accessorKey:`salePrice`,header:`Продажа`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`markup`,accessorFn:()=>void 0,header:`Наценка`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`,formulaId:`markup`,formulaDependencies:[`purchasePrice`,`salePrice`],purelyDerived:!0}}}],Xe=[{id:`totalAmount`,accessorKey:`totalAmount`,header:`Сумма в дереве`,meta:{width:12,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:Ue()}}},{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:14}}],Ze=[{id:`label`,accessorKey:`label`,header:`Показатель`,meta:{width:16}},{id:`pendingAmount`,accessorKey:`pendingAmount`,header:`Резерв`,meta:{width:8,align:`right`,formatting:{role:`measure`,type:`decimal`,emptyWhenZero:!0}}}],Qe=[{id:`label`,type:`string`,originalType:`Edm.String`,label:`Показатель`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`createdAt`,type:`datetime`,originalType:`Edm.DateTime`,label:`Дата создания`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`totalAmount`,type:`decimal`,originalType:`Edm.Decimal`,label:`Сумма`,semanticType:`none`,sortable:!0,filterable:!0,role:`measure`}],$e=ie(Qe),F=`ZDEMO_FINANCE_SRV`,I=`FinanceSet`,et={title:`Финансовая иерархия`,columns:Qe},tt=(e,t)=>{let n=(0,k.useMemo)(()=>{let e=d({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(l({service:n}).queryKey,{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]);return(0,A.jsx)(u,{client:n,children:e()})},nt={title:`UI/TreeTable`,component:C,args:{title:`Финансовые показатели`,data:Ge,columns:Ke,hierarchy:qe,selectionMode:`single`,expandFirstLevel:!0,indentSize:1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{title:{description:`Заголовок таблицы.`,control:`text`},isLoading:{description:`Показывает состояние первичной загрузки.`,control:`boolean`},isFetching:{description:`Показывает фоновое обновление без очистки дерева.`,control:`boolean`},data:{description:`Плоский источник данных OData.`,control:!1},columns:{description:`Колонки TreeTable.`,control:!1},hierarchy:{description:`Функции получения id строки и id родителя.`,control:!1},selectionMode:{description:`Режим выбора строк.`,control:`inline-radio`,options:[`none`,`single`,`multi`]},expandFirstLevel:{description:`Автоматически раскрывает корневой уровень при первой инициализации.`,control:`boolean`},defaultExpandedRowIds:{description:`Дополнительные строки, которые должны быть раскрыты при первой инициализации.`,control:!1},treeColumnId:{description:`Колонка, в которой рисуется дерево.`,control:`text`},indentSize:{description:`Отступ на уровень вложенности; число трактуется как em.`,control:`number`},columnVisibility:{description:`Controlled-состояние видимости колонок.`,control:!1},defaultColumnVisibility:{description:`Стартовое uncontrolled-состояние видимости колонок.`,control:!1},columnOrder:{description:`Controlled-порядок идентификаторов колонок.`,control:!1},defaultColumnOrder:{description:`Стартовый uncontrolled-порядок колонок.`,control:!1},columnSizing:{description:`Controlled-ширины колонок в px.`,control:!1},defaultColumnSizing:{description:`Стартовые uncontrolled-ширины колонок.`,control:!1},columnPinning:{description:`Controlled-состояние закрепления колонок слева.`,control:!1},defaultColumnPinning:{description:`Стартовое uncontrolled-состояние закрепления колонок слева.`,control:!1},enableColumnResizing:{description:`Включает изменение ширины колонок через header-handle.`,control:`boolean`},enableColumnReordering:{description:`Включает перетаскивание заголовков для изменения порядка колонок.`,control:`boolean`},columnResizeMinWidth:{description:`Минимальная ширина колонки при resize в px.`,control:`number`},onColumnVisibilityChange:{description:`Вызывается после изменения видимости колонок.`,control:!1},onColumnOrderChange:{description:`Вызывается после изменения порядка колонок.`,control:!1},onColumnSizingChange:{description:`Вызывается после изменения ширины колонок.`,control:!1},onColumnPinningChange:{description:`Вызывается после изменения закрепления колонок слева.`,control:!1},getRowCanSelect:{description:`Позволяет запретить выбор отдельных строк.`,control:!1},getRowClassName:{description:`Позволяет назначить CSS-класс конкретной строке.`,control:!1},onRowClick:{description:`Вызывается при активации строки.`,control:!1},onRowSelectionChange:{description:`Вызывается после изменения выбранных строк.`,control:!1},onExpandedRowIdsChange:{description:`Вызывается после изменения раскрытых строк.`,control:!1},onReachEnd:{description:`Вызывается при достижении конца дерева внутри scroll-контейнера.`,control:!1},renderHeaderContextMenu:{description:`Слот контекстного меню заголовка колонки.`,control:!1},renderCellContent:{description:`Слот содержимого ячейки поверх стандартного formatting-runtime.`,control:!1}}},L=p((e,t)=>(0,A.jsx)(E,{args:e,updateArgs:t})),R=p((e,t)=>(0,A.jsx)(E,{args:e,updateArgs:t})),rt=p((e,t)=>(0,A.jsx)(E,{args:e,updateArgs:t})),z={render:L},B={args:{selectionMode:`multi`},render:p((e,t)=>(0,A.jsx)(O,{args:e,updateArgs:t}))},V={args:{expandFirstLevel:!1},render:L},H={args:{expandFirstLevel:!1,defaultExpandedRowIds:[`margin`,`margin_logistics`]},render:L},U={args:{selectionMode:`multi`,getRowCanSelect:e=>!e.isLocked},render:p((e,t)=>(0,A.jsx)(O,{args:e,updateArgs:t,intro:`Строка «Экспортная логистика» остаётся в дереве, но не участвует в выборе.`}))},W={args:{isFetching:!0},render:L},G={args:{data:[]},render:L},K={args:{isLoading:!0},render:L},q={args:{title:`Формула в дереве`,data:M,columns:Ye,hierarchy:j,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:R},J={args:{title:`Форматирование tree-колонки`,data:M,columns:Xe,hierarchy:j,treeColumnId:`totalAmount`,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:R},Y={args:{title:`Скрытие нулей в дереве`,data:M,columns:Ze,hierarchy:j,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:R},X={args:{title:`Слияние дубликатов в дереве`,data:N,columns:P,hierarchy:Je,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:rt},Z={args:{title:`OData metadata adapter`,data:M,columns:$e,hierarchy:j,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},render:R},Q={args:{title:`useODataTableColumns: build`,data:M,columns:[],hierarchy:j,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},decorators:[tt],parameters:{odataService:F,odataEntity:I,odataMetadata:et},render:p((e,t)=>(0,A.jsx)(D,{args:e,updateArgs:t}))},$={args:{title:`useODataTableColumns: enrich`,data:M,columns:[],hierarchy:j,selectionMode:`none`,expandFirstLevel:!0,indentSize:1},decorators:[tt],parameters:{odataService:F,odataEntity:I,odataMetadata:et},render:p((e,t)=>(0,A.jsx)(We,{args:e,updateArgs:t}))},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{
|
|
10
|
+
render: renderFinancialTreeTableStory
|
|
11
|
+
}`,...z.parameters?.docs?.source},description:{story:`Базовый сценарий дерева с раскрытием первого уровня.`,...z.parameters?.docs?.description}}},B.parameters={...B.parameters,docs:{...B.parameters?.docs,source:{originalSource:`{
|
|
12
|
+
args: {
|
|
13
|
+
selectionMode: "multi"
|
|
14
|
+
},
|
|
15
|
+
render: createControlledStoryRender<TreeTableProps<FinancialRow>>((args, updateArgs) => <SelectionTreeTableCanvas args={args} updateArgs={updateArgs} />)
|
|
16
|
+
}`,...B.parameters?.docs?.source},description:{story:`Множественный выбор с отображением текущего результата.`,...B.parameters?.docs?.description}}},V.parameters={...V.parameters,docs:{...V.parameters?.docs,source:{originalSource:`{
|
|
17
|
+
args: {
|
|
18
|
+
expandFirstLevel: false
|
|
19
|
+
},
|
|
20
|
+
render: renderFinancialTreeTableStory
|
|
21
|
+
}`,...V.parameters?.docs?.source},description:{story:`Дерево остаётся свёрнутым до взаимодействия пользователя.`,...V.parameters?.docs?.description}}},H.parameters={...H.parameters,docs:{...H.parameters?.docs,source:{originalSource:`{
|
|
22
|
+
args: {
|
|
23
|
+
expandFirstLevel: false,
|
|
24
|
+
defaultExpandedRowIds: ["margin", "margin_logistics"]
|
|
25
|
+
},
|
|
26
|
+
render: renderFinancialTreeTableStory
|
|
27
|
+
}`,...H.parameters?.docs?.source},description:{story:`Дополнительно раскрывает конкретную ветку при первой инициализации.`,...H.parameters?.docs?.description}}},U.parameters={...U.parameters,docs:{...U.parameters?.docs,source:{originalSource:`{
|
|
28
|
+
args: {
|
|
29
|
+
selectionMode: "multi",
|
|
30
|
+
getRowCanSelect: row => !row.isLocked
|
|
31
|
+
},
|
|
32
|
+
render: createControlledStoryRender<TreeTableProps<FinancialRow>>((args, updateArgs) => <SelectionTreeTableCanvas args={args} updateArgs={updateArgs} intro="Строка «Экспортная логистика» остаётся в дереве, но не участвует в выборе." />)
|
|
33
|
+
}`,...U.parameters?.docs?.source},description:{story:`Часть строк можно показать, но запретить выбирать.`,...U.parameters?.docs?.description}}},W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`{
|
|
34
|
+
args: {
|
|
35
|
+
isFetching: true
|
|
36
|
+
},
|
|
37
|
+
render: renderFinancialTreeTableStory
|
|
38
|
+
}`,...W.parameters?.docs?.source},description:{story:`Сценарий фонового обновления данных без очистки дерева.`,...W.parameters?.docs?.description}}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
|
|
39
|
+
args: {
|
|
40
|
+
data: []
|
|
41
|
+
},
|
|
42
|
+
render: renderFinancialTreeTableStory
|
|
43
|
+
}`,...G.parameters?.docs?.source},description:{story:`Пустой источник данных.`,...G.parameters?.docs?.description}}},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`{
|
|
44
|
+
args: {
|
|
45
|
+
isLoading: true
|
|
46
|
+
},
|
|
47
|
+
render: renderFinancialTreeTableStory
|
|
48
|
+
}`,...K.parameters?.docs?.source},description:{story:`Состояние первичной загрузки.`,...K.parameters?.docs?.description}}},q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`{
|
|
49
|
+
args: {
|
|
50
|
+
title: "Формула в дереве",
|
|
51
|
+
data: formattingRows,
|
|
52
|
+
columns: formulaColumns,
|
|
53
|
+
hierarchy: formattingHierarchy,
|
|
54
|
+
selectionMode: "none",
|
|
55
|
+
expandFirstLevel: true,
|
|
56
|
+
indentSize: 1
|
|
57
|
+
},
|
|
58
|
+
render: renderFormattingTreeTableStory
|
|
59
|
+
}`,...q.parameters?.docs?.source},description:{story:`Сценарий с formula-based колонкой в древовидной таблице.`,...q.parameters?.docs?.description}}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`{
|
|
60
|
+
args: {
|
|
61
|
+
title: "Форматирование tree-колонки",
|
|
62
|
+
data: formattingRows,
|
|
63
|
+
columns: treeFormattedColumns,
|
|
64
|
+
hierarchy: formattingHierarchy,
|
|
65
|
+
treeColumnId: "totalAmount",
|
|
66
|
+
selectionMode: "none",
|
|
67
|
+
expandFirstLevel: true,
|
|
68
|
+
indentSize: 1
|
|
69
|
+
},
|
|
70
|
+
render: renderFormattingTreeTableStory
|
|
71
|
+
}`,...J.parameters?.docs?.source},description:{story:`Сценарий, где formatting применяется прямо в tree-колонке.`,...J.parameters?.docs?.description}}},Y.parameters={...Y.parameters,docs:{...Y.parameters?.docs,source:{originalSource:`{
|
|
72
|
+
args: {
|
|
73
|
+
title: "Скрытие нулей в дереве",
|
|
74
|
+
data: formattingRows,
|
|
75
|
+
columns: hiddenZeroColumns,
|
|
76
|
+
hierarchy: formattingHierarchy,
|
|
77
|
+
selectionMode: "none",
|
|
78
|
+
expandFirstLevel: true,
|
|
79
|
+
indentSize: 1
|
|
80
|
+
},
|
|
81
|
+
render: renderFormattingTreeTableStory
|
|
82
|
+
}`,...Y.parameters?.docs?.source},description:{story:`Сценарий со скрытием нулевых значений в дереве.`,...Y.parameters?.docs?.description}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`{
|
|
83
|
+
args: {
|
|
84
|
+
title: "Слияние дубликатов в дереве",
|
|
85
|
+
data: divisionTreeRows,
|
|
86
|
+
columns: divisionTreeColumns,
|
|
87
|
+
hierarchy: divisionTreeHierarchy,
|
|
88
|
+
selectionMode: "none",
|
|
89
|
+
expandFirstLevel: true,
|
|
90
|
+
indentSize: 1
|
|
91
|
+
},
|
|
92
|
+
render: renderDivisionTreeTableStory
|
|
93
|
+
}`,...X.parameters?.docs?.source},description:{story:"Сценарий со слиянием дубликатов на одной глубине в `TreeTable`.",...X.parameters?.docs?.description}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
|
|
94
|
+
args: {
|
|
95
|
+
title: "OData metadata adapter",
|
|
96
|
+
data: formattingRows,
|
|
97
|
+
columns: adapterColumns,
|
|
98
|
+
hierarchy: formattingHierarchy,
|
|
99
|
+
selectionMode: "none",
|
|
100
|
+
expandFirstLevel: true,
|
|
101
|
+
indentSize: 1
|
|
102
|
+
},
|
|
103
|
+
render: renderFormattingTreeTableStory
|
|
104
|
+
}`,...Z.parameters?.docs?.source},description:{story:`Сценарий со статическим OData metadata adapter в build-режиме.`,...Z.parameters?.docs?.description}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`{
|
|
105
|
+
args: {
|
|
106
|
+
title: "useODataTableColumns: build",
|
|
107
|
+
data: formattingRows,
|
|
108
|
+
columns: [],
|
|
109
|
+
hierarchy: formattingHierarchy,
|
|
110
|
+
selectionMode: "none",
|
|
111
|
+
expandFirstLevel: true,
|
|
112
|
+
indentSize: 1
|
|
113
|
+
},
|
|
114
|
+
decorators: [withMockedHookODataMetadata],
|
|
115
|
+
parameters: {
|
|
116
|
+
odataService: HOOK_ODATA_SERVICE,
|
|
117
|
+
odataEntity: HOOK_ODATA_ENTITY,
|
|
118
|
+
odataMetadata: hookMetadata
|
|
119
|
+
},
|
|
120
|
+
render: createControlledStoryRender<TreeTableProps<FinancialFormattingRow>>((args, updateArgs) => <HookBuildTreeTableStory args={args} updateArgs={updateArgs} />)
|
|
121
|
+
}`,...Q.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме build для TreeTable.",...Q.parameters?.docs?.description}}},$.parameters={...$.parameters,docs:{...$.parameters?.docs,source:{originalSource:`{
|
|
122
|
+
args: {
|
|
123
|
+
title: "useODataTableColumns: enrich",
|
|
124
|
+
data: formattingRows,
|
|
125
|
+
columns: [],
|
|
126
|
+
hierarchy: formattingHierarchy,
|
|
127
|
+
selectionMode: "none",
|
|
128
|
+
expandFirstLevel: true,
|
|
129
|
+
indentSize: 1
|
|
130
|
+
},
|
|
131
|
+
decorators: [withMockedHookODataMetadata],
|
|
132
|
+
parameters: {
|
|
133
|
+
odataService: HOOK_ODATA_SERVICE,
|
|
134
|
+
odataEntity: HOOK_ODATA_ENTITY,
|
|
135
|
+
odataMetadata: hookMetadata
|
|
136
|
+
},
|
|
137
|
+
render: createControlledStoryRender<TreeTableProps<FinancialFormattingRow>>((args, updateArgs) => <HookEnrichTreeTableStory args={args} updateArgs={updateArgs} />)
|
|
138
|
+
}`,...$.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме enrich для TreeTable.",...$.parameters?.docs?.description}}},it=[`Basic`,`MultiSelect`,`CollapsedByDefault`,`WithDefaultExpandedBranch`,`WithDisabledRows`,`Fetching`,`Empty`,`Loading`,`WithFormulaColumn`,`WithFormattedTreeColumn`,`WithHiddenZero`,`WithMergedDuplicates`,`WithODataMetadataAdapter`,`WithUseODataTableColumnsBuildHook`,`WithUseODataTableColumnsEnrichHook`]})))()}export{at as _,K as a,H as c,q as d,Y as f,$ as g,Q as h,W as i,U as l,Z as m,V as n,B as o,X as p,G as r,He as s,z as t,J as u};
|