@ryuzaki13/react-foundation-ui 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/tree-select/index.js +144 -135
- package/dist/tree-select/index.js.map +1 -1
- package/dist/tree-select/model/buildODataTreeNodes.d.ts +3 -1
- package/dist/tree-select/model/buildODataTreeNodes.d.ts.map +1 -1
- package/dist/tree-select/model/useODataTreeData.d.ts.map +1 -1
- package/package.json +1 -1
- package/storybook-static/assets/{Badge-BJfG7TL9.js → Badge-zkZEH9YA.js} +1 -1
- package/storybook-static/assets/{Badge.stories-B9amyb_v.js → Badge.stories-DtP9p0kq.js} +1 -1
- package/storybook-static/assets/{Button-BY_lhEpO.js → Button-DMl-6JIb.js} +1 -1
- package/storybook-static/assets/{Button-VfYkwXun.js → Button-zPlrr4BS.js} +1 -1
- package/storybook-static/assets/{Button.stories-CVyqsY9V.js → Button.stories-D6RyOgsB.js} +1 -1
- package/storybook-static/assets/{CheckBox-CLhrvMfW.js → CheckBox-BaG7s4Cz.js} +1 -1
- package/storybook-static/assets/{CheckBox-BB5HsQCI.js → CheckBox-DNBF3Ks-.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-BcvgwSIF.js → CheckBox.stories-9T8Rsd8X.js} +1 -1
- package/storybook-static/assets/{Color-KMSTOMOX-XufDIttI.js → Color-KMSTOMOX-DquhuvgS.js} +1 -1
- package/storybook-static/assets/{ContextMenu-v36UYBX4.js → ContextMenu-B7nXceEQ.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-CkgXK9xO.js → ContextMenu.stories-DbMPw1v9.js} +1 -1
- package/storybook-static/assets/{DateInput-BBF4VcnL.js → DateInput-6tKLbofj.js} +1 -1
- package/storybook-static/assets/{DateInput-Bqfl0TSD.js → DateInput-CoUys1jD.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-Bltw2rwE.js → DateInput.stories-DsLpE_GF.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-YGMbuRyb.js → DateRangePresetSelect-A3v5EWNz.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-DfC60pRP.js → DateRangePresetSelect-BOzYLOjf.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-Bs8Liulp.js → DateRangePresetSelect.stories-BZvsBzQk.js} +1 -1
- package/storybook-static/assets/{Detail-7Xxyt3X6.js → Detail-DCJ4loww.js} +1 -1
- package/storybook-static/assets/{Detail.stories-CMjmwDws.js → Detail.stories-DyKJwUZa.js} +1 -1
- package/storybook-static/assets/{Dialog-Bvz8a5zM.js → Dialog-BOJ3RYVz.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-C0PbYHLg.js → Dialog.stories-CXbEj5L4.js} +1 -1
- package/storybook-static/assets/{Disclosure-B3iGBpzu.js → Disclosure--W-EAAIy.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-Dz1sgqe7.js → Disclosure.stories-DoTRGvmn.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-UOSbf-wF.js → DocsRenderer-JROSPFPF-DleaYdG7.js} +2 -2
- package/storybook-static/assets/{DropZone-DP368v3f.js → DropZone-CkQP6v9g.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-CHUJTV1B.js → DropZone.stories-C1zcVNPl.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-C7cTUwAk.js → DropdownMenu-DEvWFL4t.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-C-KLunvX.js → ExpandableActionPanel.stories-BqIC9qEA.js} +1 -1
- package/storybook-static/assets/{Flex-ujvqS9D5.js → Flex-15HLJkcx.js} +1 -1
- package/storybook-static/assets/{Flex-BVBDWH4Y.js → Flex-DN99ulrp.js} +1 -1
- package/storybook-static/assets/{Flex.stories-B1ew71yo.js → Flex.stories-Bo-WYa3I.js} +1 -1
- package/storybook-static/assets/{Grid-2BVw166B.js → Grid-DhDXoOVG.js} +1 -1
- package/storybook-static/assets/{Grid-BVLh7CBB.js → Grid-ocYYZDCx.js} +1 -1
- package/storybook-static/assets/{Grid.stories-BcOKdORL.js → Grid.stories-UoXOmqNN.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-N4PBxIYI.js → ImageCropper.stories-DC_sKrUG.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-DUKtMPT_.js → ImageRenderer-DDphXIRV.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-D8ZBUBW3.js → ImageRenderer.stories-Bc7FRacW.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-DFOEnczv.js → ImageView.stories-Dq7j_e-P.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-CmAEMTnB.js → ImageViewer.stories-C6uoxfbp.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-CgGPJYFB.js → ImageViewerRuntime-C-Vsq4pT.js} +1 -1
- package/storybook-static/assets/{Input-DBdBWVr4.js → Input-5YkCA709.js} +1 -1
- package/storybook-static/assets/{Input-DaYBrTfS.js → Input-nC3liV_k.js} +1 -1
- package/storybook-static/assets/{Input.stories-CKIAZPDM.js → Input.stories-DfupRT4g.js} +1 -1
- package/storybook-static/assets/{InputDateTime-DsFv6XGu.js → InputDateTime-D06IXa8m.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-TbC6Rb1h.js → InputDateTime.stories-2m6J6PRF.js} +1 -1
- package/storybook-static/assets/{InputFile-BL9Q8wIQ.js → InputFile-YjglC3BH.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-B-xZLbCw.js → InputFile.stories-CEm2dCiL.js} +1 -1
- package/storybook-static/assets/{InputFiles-CV4O-Dib.js → InputFiles-Cvun794E.js} +1 -1
- package/storybook-static/assets/{InputFiles-wCHPE4Yq.js → InputFiles-DnRctHku.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-CLYYAa_h.js → InputFiles.stories-CLnAmDM0.js} +1 -1
- package/storybook-static/assets/{InputImage-DRi8zu_-.js → InputImage-cTbxzy0x.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-Dk1oTe9k.js → InputImage.stories-DKrhqpIN.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-D2lKE9gF.js → LayoutPicker-CTKmKJug.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-B2MroY_m.js → LayoutPicker.stories-BrlmXzKU.js} +1 -1
- package/storybook-static/assets/{Listbox-C5Ke56lE.js → Listbox-B6EQ_iO6.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-B1bRO9v-.js → Listbox.stories-DabuvP5R.js} +1 -1
- package/storybook-static/assets/{Modal-BCRuFbLN.js → Modal-DrK_HM-a.js} +1 -1
- package/storybook-static/assets/{Modal.stories-De7qP4Yw.js → Modal.stories-DgW1zX4p.js} +1 -1
- package/storybook-static/assets/{MultiSelect-BcCPh9Sx.js → MultiSelect-DeSU5vf8.js} +1 -1
- package/storybook-static/assets/{MultiSelect-DYmURCc7.js → MultiSelect-EUq0nGvq.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-_GG3IsH_.js → MultiSelect.stories-BDBoS2qV.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-D5ULLKMP.js → NotificationsHost-BP-cQhdm.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-Bfs3RKqZ.js → NotificationsHost.stories-BvZapsLQ.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-B1eb2orj.js → ODataMultiSelect-CCxxhymC.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-Dq9Pn3DU.js → ODataMultiSelect-Co9UuAvM.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-DmLyxBBW.js → ODataMultiSelect.stories-BrB1jJ2N.js} +1 -1
- package/storybook-static/assets/{ODataSelect-FsPOae4n.js → ODataSelect-BC3vCCte.js} +1 -1
- package/storybook-static/assets/{ODataSelect-CM7PmZ0c.js → ODataSelect-C7kAnrKY.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-CaJe5Eiu.js → ODataSelect.stories-CxhSfBxq.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-B-ruEiP7.js → ODataTreeMultiSelect-C7nvg88T.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-DflRW7Vy.js → ODataTreeMultiSelect.stories-DbQ9lOK_.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-BNX_4VuP.js → ODataTreeSelect-Cj2QXkos.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-CSrqSI5Q.js → ODataTreeSelect.stories-CsOwUC4P.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-DqP9e6lo.js → PeriodSelect-DjLvfYn8.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-430mMKg0.js → PeriodSelect.stories-DVUw9Sg9.js} +1 -1
- package/storybook-static/assets/{Popover-C82iARgf.js → Popover-CdBZPGwi.js} +1 -1
- package/storybook-static/assets/{Popover.stories-B_AZsMXW.js → Popover.stories-CdiZ5xxZ.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-KZX1smeJ.js → PresetRangeDateInput-vuxzGscI.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-Cneqqcve.js → PresetRangeDateInput.stories-D78QUDvO.js} +1 -1
- package/storybook-static/assets/{RadioButton-BUwRFPDv.js → RadioButton-BwI6i1rE.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-Dt3UbhD0.js → RadioButton.stories-IE0E96pS.js} +1 -1
- package/storybook-static/assets/{RadioGroup-aDcNqFwo.js → RadioGroup-Bim0eupF.js} +1 -1
- package/storybook-static/assets/{RadioGroup-CwG_-hUU.js → RadioGroup-tryTiFtc.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-rDU4elR_.js → RadioGroup.stories-Ceq0N-vt.js} +1 -1
- package/storybook-static/assets/{Select-X_v4isQI.js → Select-BCL2jNL8.js} +1 -1
- package/storybook-static/assets/{Select-C6eJJgTa.js → Select-DMXjzkDO.js} +1 -1
- package/storybook-static/assets/{Select.stories-DJMpruQ9.js → Select.stories-B_g_hOqR.js} +1 -1
- package/storybook-static/assets/{SelectOptionContent-m1FQ85gz.js → SelectOptionContent-BDd8ltGY.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-UQbCVBrs.js → SerializableSelect-AOkjv9yq.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-Cse03sYy.js → SerializableSelect-BGChjWPB.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-Bzt6M8md.js → SerializableSelect.stories-NYCIKA2l.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-CBl_vLsm.js → SingleDateTimeInput-7wU4lnCx.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-B1pct6z-.js → SingleDateTimeInput.stories-Du0Bzxa9.js} +1 -1
- package/storybook-static/assets/{Slider-BBDg-35r.js → Slider-B-EGHeZG.js} +1 -1
- package/storybook-static/assets/{Slider.stories-CdlMDygU.js → Slider.stories-xyE0ag0o.js} +1 -1
- package/storybook-static/assets/{SliderInput-D1a2wSux.js → SliderInput-B5qr3f1G.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-Jaqh7OMg.js → SliderInput.stories-DawHF4zR.js} +1 -1
- package/storybook-static/assets/{Sortable-CYA7YgLt.js → Sortable-BgtK-JWo.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-kLG3tMyP.js → Sortable.stories-BjWFWBd2.js} +1 -1
- package/storybook-static/assets/{Splitter-CIfcCutf.js → Splitter-CAvtJptJ.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-jVmMLEtq.js → Splitter.stories-Cm8DHzNI.js} +1 -1
- package/storybook-static/assets/{StateSelect-Izq80vYH.js → StateSelect-BR3D-VIm.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-BdyqhVVM.js → StateSelect.stories-Cs0cD5IW.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-C-4tJewJ.js → StringToggle.stories-pu8egCZ2.js} +1 -1
- package/storybook-static/assets/{Switch-DpRk_nSp.js → Switch-C9uo4c37.js} +1 -1
- package/storybook-static/assets/{Switch.stories-lgRuduXh.js → Switch.stories-C3ghBhkq.js} +1 -1
- package/storybook-static/assets/{Table-C3ka7v9I.js → Table-Bk-hBsI8.js} +1 -1
- package/storybook-static/assets/{Table.stories-Y8KDscQg.js → Table.stories--eah5PqC.js} +2 -2
- package/storybook-static/assets/{Tabs-ByiWG0yq.js → Tabs-IRUImwhh.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-BsrIwicY.js → Tabs.stories-CUlplANQ.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-Cz_gArzl.js → TagInput.stories-B6FPhOKm.js} +1 -1
- package/storybook-static/assets/{Textarea-D6ujEzWo.js → Textarea-CiC0pZhh.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-B8Yi5x83.js → Textarea.stories-yvjUxFuQ.js} +1 -1
- package/storybook-static/assets/{TimePanel-DQ-k5XD3.js → TimePanel-Dgerz5If.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-CzJ9V-ap.js → TimePanel.stories-D6gcbXWL.js} +1 -1
- package/storybook-static/assets/{Toggle-B9BKVrJ8.js → Toggle-8cLEtvUT.js} +1 -1
- package/storybook-static/assets/{Toggle-DPADYJyW.js → Toggle-CXCTnnSV.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-BKdotgIv.js → Toggle.stories-DMiwsbGp.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-B56m4otS.js → TreeMultiSelect-C8jqcnIV.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-BwcUAYM2.js → TreeMultiSelect-Codlm2j5.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-VdpLr5qv.js → TreeMultiSelect.stories-DPjynkTo.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-Cb-UkdR0.js → TreePickerBase-DCR2ymQN.js} +1 -1
- package/storybook-static/assets/{TreeSelect-v9pHEbqj.js → TreeSelect-CQ1Qc8zG.js} +1 -1
- package/storybook-static/assets/{TreeSelect-Dey6R6mH.js → TreeSelect-Dp9cZxwB.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-CYGNCQFi.js → TreeSelect.stories-DK-bK8lu.js} +1 -1
- package/storybook-static/assets/{TreeTable-C-ZFD17r.js → TreeTable-DiDzbNMx.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-CBVq9zsa.js → TreeTable.stories-GziVUTaf.js} +2 -2
- package/storybook-static/assets/{WithTooltip-7X4HQR7L-lcx_T6Sk.js → WithTooltip-7X4HQR7L-vQhTSEvu.js} +1 -1
- package/storybook-static/assets/{async-B4eW5paY.js → async-C5D1K82E.js} +1 -1
- package/storybook-static/assets/{base-table-V5vYVjv3.js → base-table-D971UHyZ.js} +1 -1
- package/storybook-static/assets/{blocks-BfeXcdfV.js → blocks-D3IlvJMm.js} +6 -6
- package/storybook-static/assets/{button-BF1Y9370.js → button-ByG7LVhg.js} +1 -1
- package/storybook-static/assets/{check-box-CaNfTPMX.js → check-box-Bshfr00a.js} +1 -1
- package/storybook-static/assets/{chunk-3LY4VQVK-S6pIIHmL.js → chunk-3LY4VQVK-BcD4_J-s.js} +1 -1
- package/storybook-static/assets/{chunk-LITCR56V-DVN9_3yA.js → chunk-LITCR56V-eYedee22.js} +1 -1
- package/storybook-static/assets/{contextMenu-Bdm2V453.js → contextMenu-BTxGIdrx.js} +1 -1
- package/storybook-static/assets/{date-QBjWrutM.js → date-Bx7K_8ZB.js} +1 -1
- package/storybook-static/assets/{error-CjJwkTRw.js → error-nmUxd6Ys.js} +1 -1
- package/storybook-static/assets/{file-HPNGxX2P.js → file-BHDrAlNC.js} +1 -1
- package/storybook-static/assets/{flex-CGBx53MY.js → flex-BpqnRSxr.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-CtX6b5Qj.js → floating-ui.react-C7ly6YFH.js} +1 -1
- package/storybook-static/assets/formatter-L2YTDE3Q-CekaMrC5.js +1 -0
- package/storybook-static/assets/{formatters-BA3gvq4J.js → formatters-CvqCBcOp.js} +1 -1
- package/storybook-static/assets/{formulas-HzbBz7rp.js → formulas-DKtSEXBn.js} +1 -1
- package/storybook-static/assets/grid-pIXbJ1YW.js +1 -0
- package/storybook-static/assets/{hooks-NHqW_6rU.js → hooks-CE9rRN1m.js} +1 -1
- package/storybook-static/assets/{iframe-DQftV5V8.js → iframe-CMLjY6eW.js} +3 -3
- package/storybook-static/assets/{input-BfFFpKxR.js → input-CCEUBfi5.js} +1 -1
- package/storybook-static/assets/{mdx-react-shim-Fcf307Vr.js → mdx-react-shim-DzMf9EAg.js} +1 -1
- package/storybook-static/assets/{media-BqW3iZV5.js → media-Xpom3JTM.js} +1 -1
- package/storybook-static/assets/{misc-Dunu3bsn.js → misc-DDShyfNn.js} +1 -1
- package/storybook-static/assets/{notifications-CYY-q2jd.js → notifications-CnTOvE6M.js} +1 -1
- package/storybook-static/assets/{number-BTVVXgfm.js → number-jvg5KgAt.js} +1 -1
- package/storybook-static/assets/{odata-BRqkuW47.js → odata-CaYek0XH.js} +1 -1
- package/storybook-static/assets/odata-service-CNHjiS2C.js +1 -0
- package/storybook-static/assets/{odataFetchFn-Cuga5UnH.js → odataFetchFn-DaFGY1h9.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-CVjoP_TB.js → odataStoryFixtures-Cu0CcqEL.js} +2 -2
- package/storybook-static/assets/{persisted-C7eG3N1M.js → persisted-C21zLLTr.js} +1 -1
- package/storybook-static/assets/{picker-Cgjy26QD.js → picker-9NUs0t2j.js} +1 -1
- package/storybook-static/assets/{popover-DMmNl7q1.js → popover-Cok2orIz.js} +1 -1
- package/storybook-static/assets/{preset-select-d6LwIZwW.js → preset-select-BKJU7Z15.js} +1 -1
- package/storybook-static/assets/{pwa-ukmk9Fmc.js → pwa-8qqfGJq3.js} +1 -1
- package/storybook-static/assets/{queryClient-59Fvs-PK.js → queryClient-DGAxuUPB.js} +1 -1
- package/storybook-static/assets/{react-18-CAHwKNVB.js → react-18-BlyDfFu8.js} +1 -1
- package/storybook-static/assets/{react-CJN_wjB1.js → react-NOEzU_6K.js} +1 -1
- package/storybook-static/assets/{react-dom-D9wf45HM.js → react-dom-CVpgvhSC.js} +1 -1
- package/storybook-static/assets/select-DhlrNWXm.js +1 -0
- package/storybook-static/assets/{slider-CkK6V4Wh.js → slider-D3ATX0IT.js} +1 -1
- package/storybook-static/assets/{sortable-DsR8Xub5.js → sortable-BL48OEDq.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-RTCFPKCB-DgfsZjA0.js → syntaxhighlighter-RTCFPKCB-CvruUeCc.js} +1 -1
- package/storybook-static/assets/{text-CLJ4ecV3.js → text-D19XuJeq.js} +1 -1
- package/storybook-static/assets/{theming-CXLHwNci.js → theming-Dtq-a93s.js} +1 -1
- package/storybook-static/assets/ui-lVQZnhTj.js +1 -0
- package/storybook-static/assets/{useODataSelectBase-BTE0YRXX.js → useODataSelectBase-Dvnu67xy.js} +1 -1
- package/storybook-static/assets/useODataTreeData-Ck4VREaM.js +1 -0
- package/storybook-static/assets/{utils-0oP3Ontt.js → utils-PcgESe3m.js} +1 -1
- package/storybook-static/assets/{valueState-DRQshnUU.js → valueState-BA_iqYhi.js} +1 -1
- package/storybook-static/iframe.html +1 -1
- package/storybook-static/project.json +1 -1
- package/storybook-static/assets/formatter-L2YTDE3Q-Dy1q_w4B.js +0 -1
- package/storybook-static/assets/grid-EVQPOCgO.js +0 -1
- package/storybook-static/assets/odata-service-CxrX96Ws.js +0 -1
- package/storybook-static/assets/select-BAiyH-cR.js +0 -1
- package/storybook-static/assets/ui-Bkwk06fv.js +0 -1
- package/storybook-static/assets/useODataTreeData-C36PXK0J.js +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-
|
|
1
|
+
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-CMLjY6eW.js";import{t as a,w as ee}from"./formatters-CvqCBcOp.js";import{D as te,E as o,O as ne,T as re,c as ie,l as ae,s as oe,t as s,v as c}from"./odata-CaYek0XH.js";import{C as se,S as ce,d as le,g as ue,i as de,l as fe,m as pe,n as me,p as he,s as ge,t as l,v as _e,x as u,y as ve}from"./base-table-D971UHyZ.js";var d,f,p,ye=n((()=>{d=`hKghZt`,f=`QsLRvS`,p={selectedIndicatorCell:d,sentinel:f}}));function be(e,t){return String(t)}function m({title:e,isLoading:t,isFetching:n,data:r,columns:i,selectionMode:a=`none`,selectedRowIds:te,getRowId:o,className:ne,minHeight:re,tableClassName:ae,columnVisibility:oe,defaultColumnVisibility:s,columnOrder:c,defaultColumnOrder:l,columnSizing:u,defaultColumnSizing:d,columnPinning:f,defaultColumnPinning:ye,enableColumnResizing:m=!1,enableColumnReordering:xe=!1,columnResizeMinWidth:_,onColumnVisibilityChange:Se,onColumnOrderChange:Ce,onColumnSizingChange:we,onColumnPinningChange:Te,onRowClick:v,onRowSelectionChange:y,onReachEnd:b,getRowCanSelect:x,getRowClassName:S,renderHeaderContextMenu:C,renderCellContent:w}){let T=(0,h.useMemo)(()=>r??[],[r]),E=(0,h.useMemo)(()=>ue(i),[i]),D=o??be,O=(0,h.useMemo)(()=>new Map(T.map((e,t)=>[D(e,t),e])),[D,T]),k=(0,h.useMemo)(()=>Array.from(O.keys()),[O]),A=(0,h.useRef)(null),j=(0,h.useRef)(null),{rowSelection:M,activateRowSelection:N}=ie({availableRowIds:k,rowById:O,selectionMode:a,selectedRowIds:te,onRowSelectionChange:y}),{columnVisibility:P,onColumnVisibilityChange:F}=ge({columnVisibility:oe,defaultColumnVisibility:s,onColumnVisibilityChange:Se}),{columnOrder:I,onColumnOrderChange:L}=he({columnOrder:c,defaultColumnOrder:l,onColumnOrderChange:Ce}),{columnSizing:R,onColumnSizingChange:z}=fe({columnSizing:u,defaultColumnSizing:d,columnResizeMinWidth:_,onColumnSizingChange:we}),{columnPinning:B,onColumnPinningChange:V}=le({columnPinning:f,defaultColumnPinning:ye,onColumnPinningChange:Te}),H=(0,h.useMemo)(()=>({columnOrder:I,columnPinning:B,columnSizing:R,columnVisibility:P}),[I,B,R,P]),U=(0,h.useEffectEvent)(()=>{b?.()});(0,h.useEffect)(()=>{if(!b||!A.current||!j.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&U()},{root:A.current,threshold:.1});return e.observe(j.current),()=>e.disconnect()},[t,b,T.length]);let W=ce({data:T,columns:i,state:{columnOrder:I,columnPinning:B,columnSizing:R,columnVisibility:P,rowSelection:M},onColumnOrderChange:L,onColumnPinningChange:V,onColumnSizingChange:z,onColumnVisibilityChange:F,getRowId:(e,t)=>D(e,t),getCoreRowModel:se(),enableMultiRowSelection:a===`multi`,enableRowSelection:e=>a===`none`?!1:x?x(e.original):!0}),G=ve(W,H),K=W.getRowModel().rows,q=(0,h.useMemo)(()=>pe({rows:K,columns:G}),[K,G]),J=G[0]?.id;return(0,g.jsx)(de,{table:W,columnState:H,title:e,isLoading:t,isFetching:n,className:ne,minHeight:re,tableClassName:ae,selectionMode:a,scrollableRef:A,onActivateRow:a!==`none`||v?e=>{N(e.id,e.getCanSelect()),v?.(e.original)}:void 0,isRowInteractive:e=>!!(v||a!==`none`&&e.getCanSelect()),getRowClassName:e=>S?.(e.original),getCellClassName:({row:e,cell:t})=>t.column.id===J&&e.getIsSelected()?p.selectedIndicatorCell:void 0,getCellLayout:({cell:e})=>q.get(e.id),renderHeaderContextMenu:C,enableColumnResizing:m,enableColumnReordering:xe,columnResizeMinWidth:_,renderCellContent:e=>{let t=ee({field:E.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:e.row.original,rowKind:`plain`}),n=_e({columnId:e.cell.column.id,runtimeByColumnId:E.runtimeByColumnId,customCellColumnIds:E.customCellColumnIds})?(0,g.jsx)(me,{displayValue:t,align:e.columnMeta?.align}):e.defaultContent;return w?w({...e,defaultContent:n,displayValue:t}):n},afterTableContent:b?(0,g.jsx)(`div`,{ref:j,className:p.sentinel,"aria-hidden":`true`}):null})}var h,g,xe=n((()=>{h=t(r(),1),a(),c(),u(),l(),ye(),g=i(),m.__docgenInfo={description:"Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.",methods:[],displayName:`Table`,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:`Описание колонок таблицы.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},selectedRowIds:{required:!1,tsType:{name:`unknown`},description:`Внешний список выбранных строк.
|
|
2
2
|
|
|
3
3
|
Если передан, таблица синхронизирует визуальное выделение с этим набором id.`},getRowId:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData, index: number) => string`,signature:{arguments:[{type:{name:`TData`},name:`row`},{type:{name:`number`},name:`index`}],return:{name:`string`}}},description:`Стабильный идентификатор строки.
|
|
4
4
|
|
|
5
5
|
Если не задан, используется индекс строки.`},className:{required:!1,tsType:{name:`string`},description:`Дополнительный CSS-класс корневого контейнера.`},minHeight:{required:!1,tsType:{name:`union`,raw:"`${number}em` | `${number}%`",elements:[{name:`literal`,value:"`${number}em`"},{name:`literal`,value:"`${number}%`"}]},description:``},tableClassName:{required:!1,tsType:{name:`string`},description:"Дополнительный CSS-класс тега `table`."},columnVisibility:{required:!1,tsType:{name:`VisibilityState`},description:`Внешнее controlled-состояние видимости колонок.`},defaultColumnVisibility:{required:!1,tsType:{name:`VisibilityState`},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-состояние left-pinning для колонок.`},defaultColumnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Стартовое uncontrolled-состояние left-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: VisibilityState) => void`,signature:{arguments:[{type:{name:`VisibilityState`},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:`Вызывается после изменения left-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:`Вызывается после изменения выбранных строк.`},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<TData>["renderHeaderContextMenu"]`},description:`Контекстное меню заголовка колонки. Используется для общих runtime-действий
|
|
6
|
-
вроде server sorting без встраивания доменной логики в shared-таблицу.`},renderCellContent:{required:!1,tsType:{name:`BaseTableProps["renderCellContent"]`,raw:`BaseTableProps<TData>["renderCellContent"]`},description:"Тонкая точка расширения содержимого ячейки поверх стандартного форматирования.\n\nВ отличие от `column.cell`, этот слот не отключает общий formatting-runtime:\n`defaultContent` уже содержит отформатированное значение, если оно применимо."}}}})),_=e({Basic:()=>R,Empty:()=>U,Fetching:()=>H,Loading:()=>G,MultiSelect:()=>B,ReachEnd:()=>W,WithColumnPinning:()=>z,WithDisabledRows:()=>V,WithFormattingPipeline:()=>q,WithFormulaColumn:()=>K,WithHiddenZero:()=>J,WithMergedDuplicates:()=>Y,WithODataMetadataAdapter:()=>X,WithUseODataTableColumnsBuildHook:()=>Z,WithUseODataTableColumnsEnrichHook:()=>Q,__namedExportsOrder:()=>$,default:()=>L});function Se(){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 Ce(e){return[`odata`,`metadata`,{service:e}]}function we(){let{columns:e,metadata:t,isLoading:n}=s({service:N,target:P,mode:`build`});return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsxs)(`div`,{children:[`Режим build: hook собрал `,e.length,` колонки из metadata`,t?` для сущности «${t.title}».`:`.`]}),(0,y.jsx)(m,{title:`useODataTableColumns: build`,data:w,columns:e,selectionMode:`none`,isLoading:n,getRowId:e=>e.id})]})}function Te(){let{columns:e,metadata:t,isLoading:n}=s({service:N,target:P,mode:`enrich`,columns:j});return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные заголовки и дополнил formatting-контекст`,t?` из metadata «${t.title}».`:`.`]}),(0,y.jsx)(m,{title:`useODataTableColumns: enrich`,data:w,columns:e,selectionMode:`none`,isLoading:n,getRowId:e=>e.id})]})}var v,y,b,x,S,C,w,T,E,D,O,k,A,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,Ee=n((()=>{v=t(r(),1),ae(),ne(),c(),o(),xe(),y=i(),b=[{id:`1`,number:`450001`,client:`Северсталь`,manager:`Иван Петров`,amount:`1 250 000`,status:`Новая`},{id:`2`,number:`450002`,client:`ММК`,manager:`Анна Смирнова`,amount:`980 000`,status:`В работе`},{id:`3`,number:`450003`,client:`НЛМК`,manager:`Олег Николаев`,amount:`1 540 000`,status:`Согласование`},{id:`4`,number:`450004`,client:`ЕВРАЗ`,manager:`Мария Кузнецова`,amount:`760 000`,status:`Отгружена`},{id:`5`,number:`450005`,client:`ТМК`,manager:`Дмитрий Волков`,amount:`1 120 000`,status:`Закрыта`}],x=[...b,{id:`6`,number:`450006`,client:`ОМК`,manager:`Елена Андреева`,amount:`680 000`,status:`Архив`,isLocked:!0}],S=Array.from({length:18},(e,t)=>({id:String(t+1),number:`4600${String(t+1).padStart(2,`0`)}`,client:`Клиент ${t+1}`,manager:`Менеджер ${t+1}`,amount:`${850+t*15} 000`,status:t%2==0?`В работе`:`Согласование`})),C=[{id:`number`,accessorKey:`number`,header:`Номер`,meta:{width:9}},{id:`client`,accessorKey:`client`,header:`Клиент`,meta:{width:14}},{id:`manager`,accessorKey:`manager`,header:`Менеджер`,meta:{width:12}},{id:`amount`,accessorKey:`amount`,header:`Сумма`,meta:{width:10,align:`right`}},{id:`status`,accessorKey:`status`,header:`Статус`,meta:{width:11}}],w=[{id:`fmt-1`,product:`Лист горячекатаный`,purchasePrice:80,salePrice:120,healthScore:35,pendingAmount:0,createdAt:`2026-03-18T09:15:00.000Z`,totalAmount:1520.5},{id:`fmt-2`,product:`Рулон оцинкованный`,purchasePrice:95,salePrice:150,healthScore:125,pendingAmount:320,createdAt:`2026-03-19T11:40:00.000Z`,totalAmount:2140},{id:`fmt-3`,product:`Арматура`,purchasePrice:60,salePrice:90,healthScore:70,pendingAmount:0,createdAt:`2026-03-20T07:05:00.000Z`,totalAmount:980.75}],T=[{id:`merge-1`,division:`ДВД`,department:`Продажи`,employee:`Иван Петров`},{id:`merge-2`,division:`ДВД`,department:`Продажи`,employee:`Анна Смирнова`},{id:`merge-3`,division:`ДВД`,department:`Продажи`,employee:`Олег Николаев`},{id:`merge-4`,division:`УД`,department:`Логистика`,employee:`Мария Кузнецова`},{id:`merge-5`,division:`УД`,department:`Логистика`,employee:`Дмитрий Волков`},{id:`merge-6`,division:`УД`,department:`Логистика`,employee:`Елена Андреева`},{id:`merge-7`,division:`УД`,department:`Логистика`,employee:`Николай Орлов`}],E=[{id:`division`,accessorKey:`division`,header:`Дивизион`,meta:{width:10,mergeDuplicates:!0}},{id:`department`,accessorKey:`department`,header:`Подразделение`,meta:{width:12}},{id:`employee`,accessorKey:`employee`,header:`Сотрудник`,meta:{width:14}}],D=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`purchasePrice`,accessorKey:`purchasePrice`,header:`Закупка`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`salePrice`,accessorKey:`salePrice`,header:`Продажа`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`markup`,accessorFn:()=>void 0,header:`Наценка`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`,formulaId:`markup`,formulaDependencies:[`purchasePrice`,`salePrice`],purelyDerived:!0}}}],O=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`healthScore`,accessorKey:`healthScore`,header:`Индекс риска`,meta:{width:10,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:Se()}}}],k=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`pendingAmount`,accessorKey:`pendingAmount`,header:`Резерв`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`,emptyWhenZero:!0}}}],A=[{id:`product`,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`}],j=[{id:`product`,accessorKey:`product`,header:`Позиция`,meta:{width:16}},{id:`createdAt`,accessorKey:`createdAt`,header:`Создано`,meta:{width:12}},{id:`totalAmount`,accessorKey:`totalAmount`,header:`Итог`,meta:{width:9,align:`right`}}],M=ie(j,A),N=`ZDEMO_DEALS_SRV`,P=`DealSet`,F={title:`Портфель сделок`,columns:A},I=(e,t)=>(0,y.jsx)(te,{client:(0,v.useMemo)(()=>{let e=oe({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(Ce(n),{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]),children:e()}),L={title:`Shared/UI/Table`,component:m,args:{title:`Сделки`,data:b,columns:C,getRowId:e=>e.id,selectionMode:`single`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{data:{description:`Плоский источник данных.`,control:!1},columns:{description:`Колонки таблицы.`,control:!1},title:{description:`Заголовок таблицы.`,control:`text`},selectionMode:{description:`Режим выбора строк.`,control:`inline-radio`,options:[`none`,`single`,`multi`]},getRowId:{description:`Функция получения стабильного id строки.`,control:!1},columnPinning:{description:`Controlled-состояние закрепления колонок слева.`,control:!1},defaultColumnPinning:{description:`Стартовое uncontrolled-состояние закрепления колонок слева.`,control:!1},onColumnPinningChange:{description:`Вызывается после изменения закрепления колонок слева.`,control:!1},getRowCanSelect:{description:`Позволяет запретить выбор отдельных строк.`,control:!1},getRowClassName:{description:`Позволяет добавить CSS-класс для конкретной строки.`,control:!1},onRowClick:{description:`Вызывается при активации строки.`,control:!1},onRowSelectionChange:{description:`Вызывается после изменения выбранных строк.`,control:!1},onReachEnd:{description:`Вызывается при достижении конца списка внутри scroll-контейнера.`,control:!1},isLoading:{description:`Первичная загрузка таблицы.`,control:`boolean`},isFetching:{description:`Фоновое обновление уже загруженных данных.`,control:`boolean`}}},R={},z={render:e=>{let[t,n]=(0,v.useState)({left:[`number`]});return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsxs)(`div`,{style:{display:`flex`,gap:`0.5em`,flexWrap:`wrap`},children:[(0,y.jsx)(`button`,{type:`button`,onClick:()=>n({left:[`number`]}),children:`Закрепить «Номер»`}),(0,y.jsx)(`button`,{type:`button`,onClick:()=>n({left:[`number`,`client`]}),children:`Закрепить «Номер» и «Клиент»`}),(0,y.jsx)(`button`,{type:`button`,onClick:()=>n({left:[]}),children:`Снять закрепление`})]}),(0,y.jsxs)(`div`,{children:[`Закреплено слева: `,t.left?.length?t.left.join(`, `):`ничего`]}),(0,y.jsx)(m,{...e,columnPinning:t,onColumnPinningChange:n})]})}},B={render:e=>{let[t,n]=(0,v.useState)([]);return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsxs)(`div`,{children:[`Выбрано: `,t.length>0?t.join(`, `):`ничего`]}),(0,y.jsx)(m,{...e,selectionMode:`multi`,onRowSelectionChange:e=>n(e.map(e=>e.number))})]})}},V={args:{data:x,selectionMode:`multi`,getRowCanSelect:e=>!e.isLocked},render:e=>{let[t,n]=(0,v.useState)([]);return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsx)(`div`,{children:`Строка со статусом «Архив» остаётся видимой, но не участвует в выборе.`}),(0,y.jsxs)(`div`,{children:[`Выбрано: `,t.length>0?t.join(`, `):`ничего`]}),(0,y.jsx)(m,{...e,onRowSelectionChange:e=>n(e.map(e=>e.number))})]})}},H={args:{isFetching:!0}},U={args:{data:[]}},W={args:{data:S},render:e=>{let[t,n]=(0,v.useState)(0);return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsxs)(`div`,{children:[`Событие достижения конца: `,t]}),(0,y.jsx)(m,{...e,onReachEnd:()=>n(e=>e+1)})]})}},G={args:{isLoading:!0}},K={render:()=>(0,y.jsx)(m,{title:`Формула наценки`,data:w,columns:D,selectionMode:`none`,getRowId:e=>e.id})},q={render:()=>(0,y.jsx)(m,{title:`Pipeline форматирования`,data:w,columns:O,selectionMode:`none`,getRowId:e=>e.id})},J={render:()=>(0,y.jsx)(m,{title:`Скрытие нулей`,data:w,columns:k,selectionMode:`none`,getRowId:e=>e.id})},Y={render:()=>(0,y.jsx)(m,{title:`Слияние дубликатов`,data:T,columns:E,selectionMode:`none`,getRowId:e=>e.id})},X={render:()=>(0,y.jsx)(m,{title:`OData metadata adapter`,data:w,columns:M,selectionMode:`none`,getRowId:e=>e.id})},Z={decorators:[I],parameters:{odataService:N,odataEntity:P,odataMetadata:F},render:()=>(0,y.jsx)(we,{})},Q={decorators:[I],parameters:{odataService:N,odataEntity:P,odataMetadata:F},render:()=>(0,y.jsx)(Te,{})},R.parameters={...R.parameters,docs:{...R.parameters?.docs,source:{originalSource:`{}`,...R.parameters?.docs?.source},description:{story:`Базовый сценарий плоской таблицы с одиночным выбором.`,...R.parameters?.docs?.description}}},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{
|
|
6
|
+
вроде server sorting без встраивания доменной логики в shared-таблицу.`},renderCellContent:{required:!1,tsType:{name:`BaseTableProps["renderCellContent"]`,raw:`BaseTableProps<TData>["renderCellContent"]`},description:"Тонкая точка расширения содержимого ячейки поверх стандартного форматирования.\n\nВ отличие от `column.cell`, этот слот не отключает общий formatting-runtime:\n`defaultContent` уже содержит отформатированное значение, если оно применимо."}}}})),_=e({Basic:()=>R,Empty:()=>U,Fetching:()=>H,Loading:()=>G,MultiSelect:()=>B,ReachEnd:()=>W,WithColumnPinning:()=>z,WithDisabledRows:()=>V,WithFormattingPipeline:()=>q,WithFormulaColumn:()=>K,WithHiddenZero:()=>J,WithMergedDuplicates:()=>Y,WithODataMetadataAdapter:()=>X,WithUseODataTableColumnsBuildHook:()=>Z,WithUseODataTableColumnsEnrichHook:()=>Q,__namedExportsOrder:()=>$,default:()=>L});function Se(){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 Ce(e){return[`odata`,`metadata`,{service:e}]}function we(){let{columns:e,metadata:t,isLoading:n}=s({service:N,target:P,mode:`build`});return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsxs)(`div`,{children:[`Режим build: hook собрал `,e.length,` колонки из metadata`,t?` для сущности «${t.title}».`:`.`]}),(0,y.jsx)(m,{title:`useODataTableColumns: build`,data:w,columns:e,selectionMode:`none`,isLoading:n,getRowId:e=>e.id})]})}function Te(){let{columns:e,metadata:t,isLoading:n}=s({service:N,target:P,mode:`enrich`,columns:j});return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные заголовки и дополнил formatting-контекст`,t?` из metadata «${t.title}».`:`.`]}),(0,y.jsx)(m,{title:`useODataTableColumns: enrich`,data:w,columns:e,selectionMode:`none`,isLoading:n,getRowId:e=>e.id})]})}var v,y,b,x,S,C,w,T,E,D,O,k,A,j,M,N,P,F,I,L,R,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,Ee=n((()=>{v=t(r(),1),oe(),o(),c(),te(),xe(),y=i(),b=[{id:`1`,number:`450001`,client:`Северсталь`,manager:`Иван Петров`,amount:`1 250 000`,status:`Новая`},{id:`2`,number:`450002`,client:`ММК`,manager:`Анна Смирнова`,amount:`980 000`,status:`В работе`},{id:`3`,number:`450003`,client:`НЛМК`,manager:`Олег Николаев`,amount:`1 540 000`,status:`Согласование`},{id:`4`,number:`450004`,client:`ЕВРАЗ`,manager:`Мария Кузнецова`,amount:`760 000`,status:`Отгружена`},{id:`5`,number:`450005`,client:`ТМК`,manager:`Дмитрий Волков`,amount:`1 120 000`,status:`Закрыта`}],x=[...b,{id:`6`,number:`450006`,client:`ОМК`,manager:`Елена Андреева`,amount:`680 000`,status:`Архив`,isLocked:!0}],S=Array.from({length:18},(e,t)=>({id:String(t+1),number:`4600${String(t+1).padStart(2,`0`)}`,client:`Клиент ${t+1}`,manager:`Менеджер ${t+1}`,amount:`${850+t*15} 000`,status:t%2==0?`В работе`:`Согласование`})),C=[{id:`number`,accessorKey:`number`,header:`Номер`,meta:{width:9}},{id:`client`,accessorKey:`client`,header:`Клиент`,meta:{width:14}},{id:`manager`,accessorKey:`manager`,header:`Менеджер`,meta:{width:12}},{id:`amount`,accessorKey:`amount`,header:`Сумма`,meta:{width:10,align:`right`}},{id:`status`,accessorKey:`status`,header:`Статус`,meta:{width:11}}],w=[{id:`fmt-1`,product:`Лист горячекатаный`,purchasePrice:80,salePrice:120,healthScore:35,pendingAmount:0,createdAt:`2026-03-18T09:15:00.000Z`,totalAmount:1520.5},{id:`fmt-2`,product:`Рулон оцинкованный`,purchasePrice:95,salePrice:150,healthScore:125,pendingAmount:320,createdAt:`2026-03-19T11:40:00.000Z`,totalAmount:2140},{id:`fmt-3`,product:`Арматура`,purchasePrice:60,salePrice:90,healthScore:70,pendingAmount:0,createdAt:`2026-03-20T07:05:00.000Z`,totalAmount:980.75}],T=[{id:`merge-1`,division:`ДВД`,department:`Продажи`,employee:`Иван Петров`},{id:`merge-2`,division:`ДВД`,department:`Продажи`,employee:`Анна Смирнова`},{id:`merge-3`,division:`ДВД`,department:`Продажи`,employee:`Олег Николаев`},{id:`merge-4`,division:`УД`,department:`Логистика`,employee:`Мария Кузнецова`},{id:`merge-5`,division:`УД`,department:`Логистика`,employee:`Дмитрий Волков`},{id:`merge-6`,division:`УД`,department:`Логистика`,employee:`Елена Андреева`},{id:`merge-7`,division:`УД`,department:`Логистика`,employee:`Николай Орлов`}],E=[{id:`division`,accessorKey:`division`,header:`Дивизион`,meta:{width:10,mergeDuplicates:!0}},{id:`department`,accessorKey:`department`,header:`Подразделение`,meta:{width:12}},{id:`employee`,accessorKey:`employee`,header:`Сотрудник`,meta:{width:14}}],D=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`purchasePrice`,accessorKey:`purchasePrice`,header:`Закупка`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`salePrice`,accessorKey:`salePrice`,header:`Продажа`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`markup`,accessorFn:()=>void 0,header:`Наценка`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`,formulaId:`markup`,formulaDependencies:[`purchasePrice`,`salePrice`],purelyDerived:!0}}}],O=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`healthScore`,accessorKey:`healthScore`,header:`Индекс риска`,meta:{width:10,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:Se()}}}],k=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`pendingAmount`,accessorKey:`pendingAmount`,header:`Резерв`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`,emptyWhenZero:!0}}}],A=[{id:`product`,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`}],j=[{id:`product`,accessorKey:`product`,header:`Позиция`,meta:{width:16}},{id:`createdAt`,accessorKey:`createdAt`,header:`Создано`,meta:{width:12}},{id:`totalAmount`,accessorKey:`totalAmount`,header:`Итог`,meta:{width:9,align:`right`}}],M=ae(j,A),N=`ZDEMO_DEALS_SRV`,P=`DealSet`,F={title:`Портфель сделок`,columns:A},I=(e,t)=>(0,y.jsx)(ne,{client:(0,v.useMemo)(()=>{let e=re({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(Ce(n),{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]),children:e()}),L={title:`Shared/UI/Table`,component:m,args:{title:`Сделки`,data:b,columns:C,getRowId:e=>e.id,selectionMode:`single`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{data:{description:`Плоский источник данных.`,control:!1},columns:{description:`Колонки таблицы.`,control:!1},title:{description:`Заголовок таблицы.`,control:`text`},selectionMode:{description:`Режим выбора строк.`,control:`inline-radio`,options:[`none`,`single`,`multi`]},getRowId:{description:`Функция получения стабильного id строки.`,control:!1},columnPinning:{description:`Controlled-состояние закрепления колонок слева.`,control:!1},defaultColumnPinning:{description:`Стартовое uncontrolled-состояние закрепления колонок слева.`,control:!1},onColumnPinningChange:{description:`Вызывается после изменения закрепления колонок слева.`,control:!1},getRowCanSelect:{description:`Позволяет запретить выбор отдельных строк.`,control:!1},getRowClassName:{description:`Позволяет добавить CSS-класс для конкретной строки.`,control:!1},onRowClick:{description:`Вызывается при активации строки.`,control:!1},onRowSelectionChange:{description:`Вызывается после изменения выбранных строк.`,control:!1},onReachEnd:{description:`Вызывается при достижении конца списка внутри scroll-контейнера.`,control:!1},isLoading:{description:`Первичная загрузка таблицы.`,control:`boolean`},isFetching:{description:`Фоновое обновление уже загруженных данных.`,control:`boolean`}}},R={},z={render:e=>{let[t,n]=(0,v.useState)({left:[`number`]});return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsxs)(`div`,{style:{display:`flex`,gap:`0.5em`,flexWrap:`wrap`},children:[(0,y.jsx)(`button`,{type:`button`,onClick:()=>n({left:[`number`]}),children:`Закрепить «Номер»`}),(0,y.jsx)(`button`,{type:`button`,onClick:()=>n({left:[`number`,`client`]}),children:`Закрепить «Номер» и «Клиент»`}),(0,y.jsx)(`button`,{type:`button`,onClick:()=>n({left:[]}),children:`Снять закрепление`})]}),(0,y.jsxs)(`div`,{children:[`Закреплено слева: `,t.left?.length?t.left.join(`, `):`ничего`]}),(0,y.jsx)(m,{...e,columnPinning:t,onColumnPinningChange:n})]})}},B={render:e=>{let[t,n]=(0,v.useState)([]);return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsxs)(`div`,{children:[`Выбрано: `,t.length>0?t.join(`, `):`ничего`]}),(0,y.jsx)(m,{...e,selectionMode:`multi`,onRowSelectionChange:e=>n(e.map(e=>e.number))})]})}},V={args:{data:x,selectionMode:`multi`,getRowCanSelect:e=>!e.isLocked},render:e=>{let[t,n]=(0,v.useState)([]);return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsx)(`div`,{children:`Строка со статусом «Архив» остаётся видимой, но не участвует в выборе.`}),(0,y.jsxs)(`div`,{children:[`Выбрано: `,t.length>0?t.join(`, `):`ничего`]}),(0,y.jsx)(m,{...e,onRowSelectionChange:e=>n(e.map(e=>e.number))})]})}},H={args:{isFetching:!0}},U={args:{data:[]}},W={args:{data:S},render:e=>{let[t,n]=(0,v.useState)(0);return(0,y.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,y.jsxs)(`div`,{children:[`Событие достижения конца: `,t]}),(0,y.jsx)(m,{...e,onReachEnd:()=>n(e=>e+1)})]})}},G={args:{isLoading:!0}},K={render:()=>(0,y.jsx)(m,{title:`Формула наценки`,data:w,columns:D,selectionMode:`none`,getRowId:e=>e.id})},q={render:()=>(0,y.jsx)(m,{title:`Pipeline форматирования`,data:w,columns:O,selectionMode:`none`,getRowId:e=>e.id})},J={render:()=>(0,y.jsx)(m,{title:`Скрытие нулей`,data:w,columns:k,selectionMode:`none`,getRowId:e=>e.id})},Y={render:()=>(0,y.jsx)(m,{title:`Слияние дубликатов`,data:T,columns:E,selectionMode:`none`,getRowId:e=>e.id})},X={render:()=>(0,y.jsx)(m,{title:`OData metadata adapter`,data:w,columns:M,selectionMode:`none`,getRowId:e=>e.id})},Z={decorators:[I],parameters:{odataService:N,odataEntity:P,odataMetadata:F},render:()=>(0,y.jsx)(we,{})},Q={decorators:[I],parameters:{odataService:N,odataEntity:P,odataMetadata:F},render:()=>(0,y.jsx)(Te,{})},R.parameters={...R.parameters,docs:{...R.parameters?.docs,source:{originalSource:`{}`,...R.parameters?.docs?.source},description:{story:`Базовый сценарий плоской таблицы с одиночным выбором.`,...R.parameters?.docs?.description}}},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{
|
|
7
7
|
render: args => {
|
|
8
8
|
const [columnPinning, setColumnPinning] = useState<{
|
|
9
9
|
left?: string[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-
|
|
1
|
+
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CMLjY6eW.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u}from"./blocks-D3IlvJMm.js";import{t as d}from"./mdx-react-shim-DzMf9EAg.js";import{BoxBasic as f,BoxControlled as p,BoxMountStrategies as m,BoxVertical as h,DisabledTabs as g,Empty as _,LayoutPanels as v,LegacyTabs as y,Loading as b,n as x,t as S}from"./Tabs.stories-CUlplANQ.js";function C(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(o,{of:S,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,T.jsx)(l,{children:`Tabs`}),`
|
|
3
3
|
`,(0,T.jsx)(a,{children:`Набор tabs-компонентов с разделением простого scroll-сценария и составного panel-layout сценария`}),`
|
|
4
4
|
`,(0,T.jsxs)(t.p,{children:[`После рефакторинга `,(0,T.jsx)(t.code,{children:`tabs`}),` разделены на два независимых сценария:`]}),`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-
|
|
1
|
+
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-CMLjY6eW.js";import{a,i as o,o as ee}from"./utils-PcgESe3m.js";import{c as s,i as c,o as l,t as u,u as d}from"./misc-DDShyfNn.js";function f(e){return e.find(e=>!e.disabled)?.id??null}function p(e,t){return t?e.find(e=>e.id===t&&!e.disabled)?.id??f(e):f(e)}function m(e){return e.filter(e=>!e.disabled)}function h({mountStrategy:e,isSelected:t,isVisited:n}){return e===`keep-mounted`||t||e===`lazy`&&n}var g=n((()=>{}));function _({items:e,value:t,defaultValue:n,onValueChange:r,orientation:i=`horizontal`,activationMode:a=`automatic`,loop:o=!0}){let s=t!==void 0,c=(0,v.useMemo)(()=>m(e),[e]),l=c[0]?.id??null,[u,d]=(0,v.useState)(()=>p(e,n)),[f,h]=(0,v.useState)(()=>p(e,t??n)),g=p(e,t??n),[_,y]=(0,v.useState)(()=>g?new Set([g]):new Set),b=(0,v.useId)(),x=(0,v.useRef)({}),S=p(e,s?t:u),C=p(e,f)??S??l,te=(0,v.useMemo)(()=>{if(!S||_.has(S))return _;let e=new Set(_);return e.add(S),e},[S,_]),w=t=>{let n=p(e,t);n&&(y(e=>{if(e.has(n))return e;let t=new Set(e);return t.add(n),t}),s||d(n),r?.(n))},ne=e=>{x.current[e]?.focus()},re=e=>{if(c.length<2)return;let t=ee({currentIndex:Math.max(0,c.findIndex(e=>e.id===(C??S??l))),itemCount:c.length,key:e.key,orientation:i,wrap:o});if(t===null)return;e.preventDefault();let n=c[t]?.id;n&&(h(n),ne(n),a===`automatic`&&w(n))},ie=e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||h(S??l)},T=e=>`${b}-tab-${e}`,E=e=>`${b}-panel-${e}`;return{activationMode:a,orientation:i,selectedTabId:S,tabbableTabId:C,onTabListKeyDown:re,onTabListBlur:ie,getTabElementId:T,getPanelElementId:E,getTabButtonProps:e=>{let t=e.id===S,n=e.id===C;return{ref:t=>{x.current[e.id]=t},type:`button`,role:`tab`,id:T(e.id),disabled:e.disabled,"aria-selected":t,"aria-controls":E(e.id),"aria-disabled":e.disabled||void 0,tabIndex:e.disabled?-1:n?0:-1,onFocus:()=>h(e.id),onClick:()=>w(e.id)}},isVisited:e=>te.has(e)}}var v,y=n((()=>{v=t(r(),1),o(),g()})),b,x,S,C,te,w,ne,re,ie,T,E,ae,oe,se,ce,le,D,O=n((()=>{b=`pcMjuj`,x=`ITP5v-`,S=`kzs94N`,C=`ZSAoAa`,te=`psYhsZ`,w=`mNDq9-`,ne=`g156KO`,re=`C2mO1e`,ie=`_28F3fs`,T=`UKZXTZ`,E=`jiTafe`,ae=`nhD0k7`,oe=`G8FICe`,se=`W50XHh`,ce=`vnjXkU`,le=`Nzvfhw`,D={tabsContainer:b,bordered:x,cleanPanel:S,tabs:C,panels:te,horizontal:w,vertical:ne,panelScrollable:re,tab:ie,selected:T,panel:E,panelBody:ae,layoutPanels:oe,layoutPanel:se,layoutSection:ce,layoutContent:le}}));function ue({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:r,panelBodyClassName:i,loadingText:o}){return(0,k.jsxs)(`div`,{className:e,children:[(0,k.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,k.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:a(D.tab,`skeletonLine`),children:`Загрузка...`})}),(0,k.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,k.jsx)(`div`,{className:r,children:(0,k.jsx)(`div`,{className:i,children:(0,k.jsx)(d,{text:o,className:`radiusSm`})})})})]})}var k,de=n((()=>{o(),u(),O(),k=i(),ue.__docgenInfo={description:"Служебное loading-состояние для `TabsBox`.",methods:[],displayName:`TabsLoadingState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},tabListClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}}));function fe({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,A.jsx)(`div`,{className:e,children:(0,A.jsx)(`div`,{className:t,children:(0,A.jsx)(`div`,{className:n,children:(0,A.jsx)(`div`,{className:r,children:(0,A.jsx)(s,{className:`radiusSm`})})})})})}var A,pe=n((()=>{u(),A=i(),fe.__docgenInfo={description:"Служебное empty-состояние для `TabsBox`.",methods:[],displayName:`TabsNoDataState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``}}}}));function me({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,he.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,className:n,children:a})}var he,ge=n((()=>{r(),he=i(),me.__docgenInfo={description:``,methods:[],displayName:`TabsPanel`,props:{tabId:{required:!0,tsType:{name:`string`},description:``},isSelected:{required:!0,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},getTabElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},getPanelElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}}}));function _e({items:e,state:t,className:n,ariaLabel:r,ariaLabelledBy:i}){return(0,j.jsx)(`div`,{className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":r,"aria-labelledby":i,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:(e=>t.orientation===`horizontal`?(0,j.jsx)(l,{children:e}):(0,j.jsx)(j.Fragment,{children:e}))(e.map(e=>(0,j.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:a(D.tab,`textWrap`,e.id===t.selectedTabId&&D.selected),children:e.title},e.id)))})}var j,ve=n((()=>{o(),u(),O(),j=i(),_e.__docgenInfo={description:``,methods:[],displayName:`TabsTabList`,props:{items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsDescriptor`}],raw:`TabsDescriptor[]`},description:``},state:{required:!0,tsType:{name:`TabsStateModel`},description:``},className:{required:!1,tsType:{name:`string`},description:``},ariaLabel:{required:!1,tsType:{name:`string`},description:``},ariaLabelledBy:{required:!1,tsType:{name:`string`},description:``}}}}));function M({items:e,value:t,defaultValue:n,onValueChange:r,className:i,isLoading:o,loadingText:ee,cleanPanel:s,bordered:c=!1,orientation:l=`horizontal`,activationMode:u=`automatic`,mountStrategy:d=`unmount`,loop:f=!0,"aria-label":p,"aria-labelledby":m}){let g=_({items:e,value:t,defaultValue:n,onValueChange:r,orientation:l,activationMode:u,loop:f}),v=a(D.tabsContainer,D[l],c&&D.bordered,s&&D.cleanPanel,i),y=D.tabs,b=a(D.panels,D.panelScrollable,`scrollable overscroll`),x=D.panel,S=D.panelBody;return o?(0,N.jsx)(ue,{containerClassName:v,tabListClassName:y,panelsClassName:b,panelClassName:x,panelBodyClassName:S,loadingText:ee}):e.length?(0,N.jsxs)(`div`,{className:v,children:[(0,N.jsx)(_e,{items:e,state:g,className:y,ariaLabel:p,ariaLabelledBy:m}),(0,N.jsx)(`div`,{className:b,children:e.map(e=>{let t=e.id===g.selectedTabId;return h({mountStrategy:d,isSelected:t,isVisited:g.isVisited(e.id)})?(0,N.jsx)(me,{tabId:e.id,isSelected:t,className:x,getTabElementId:g.getTabElementId,getPanelElementId:g.getPanelElementId,children:(0,N.jsx)(`div`,{className:S,children:e.content})},e.id):null})})]}):(0,N.jsx)(fe,{containerClassName:v,panelsClassName:b,panelClassName:x,panelBodyClassName:S})}var N,ye=n((()=>{o(),g(),y(),O(),de(),pe(),ge(),ve(),N=i(),M.__docgenInfo={description:`Простой items-based tabs-компонент.
|
|
2
2
|
Сам управляет областью панели и её прокруткой.`,methods:[],displayName:`TabsBox`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"automatic"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"unmount"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},cleanPanel:{required:!1,tsType:{name:`boolean`},description:``},bordered:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsBoxItem`}],raw:`TabsBoxItem[]`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}}));function be({onChange:e,onValueChange:t,...n}){return(0,xe.jsx)(M,{...n,onValueChange:n=>{t?.(n),e?.(n)}})}var xe,Se=n((()=>{ye(),xe=i(),be.__docgenInfo={description:"@deprecated Используйте `TabsBox` для простого сценария и `TabsLayout` для составных layout-сценариев.",methods:[],displayName:`Tabs`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``},loop:{required:!1,tsType:{name:`boolean`},description:``},cleanPanel:{required:!1,tsType:{name:`boolean`},description:``},bordered:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsBoxItem`}],raw:`TabsBoxItem[]`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``}}}}));function Ce(e){let{type:t}=e;if(typeof t==`function`){let e=t;return e.displayName??e.name??null}if(typeof t==`object`&&t&&`displayName`in t){let e=t;return typeof e.displayName==`string`?e.displayName:null}return null}function P(e,t){return(0,F.isValidElement)(e)&&Ce(e)===t}function we({children:e}){return(0,I.jsx)(I.Fragment,{children:e})}function Te({children:e}){return(0,I.jsx)(I.Fragment,{children:e})}function Ee({children:e}){return(0,I.jsx)(I.Fragment,{children:e})}function De({children:e}){return(0,I.jsx)(I.Fragment,{children:e})}function Oe(e,t){let n=null,r=null,i=null;for(let a of F.Children.toArray(e)){if(!(0,F.isValidElement)(a))throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);if(P(a,L)){if(n)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Toolbar.`);n=a.props;continue}if(P(a,je)){if(r)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Content.`);r=a.props;continue}if(P(a,Me)){if(i)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Footer.`);i=a.props;continue}throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`)}if(!r)throw Error(`TabsLayout.Tab "${t}" должен содержать блок TabsLayout.Content.`);return{toolbar:n,content:r,footer:i}}function ke(e){return F.Children.toArray(e).map(e=>{if(!P(e,Ae))throw Error(`TabsLayout принимает только дочерние элементы TabsLayout.Tab.`);return{id:e.props.id,title:e.props.title,disabled:e.props.disabled,...Oe(e.props.children,e.props.id)}})}var F,I,Ae,L,je,Me,R,z,Ne=n((()=>{F=t(r(),1),o(),g(),y(),O(),ge(),ve(),I=i(),Ae=`TabsLayout.Tab`,L=`TabsLayout.Toolbar`,je=`TabsLayout.Content`,Me=`TabsLayout.Footer`,we.displayName=Ae,Te.displayName=L,Ee.displayName=je,De.displayName=Me,R=({children:e,value:t,defaultValue:n,onValueChange:r,className:i,bordered:o,cleanPanel:ee,orientation:s=`horizontal`,activationMode:c=`manual`,mountStrategy:l=`lazy`,loop:u=!0,"aria-label":d,"aria-labelledby":f})=>{let p=(0,F.useMemo)(()=>ke(e),[e]),m=_({items:p,value:t,defaultValue:n,onValueChange:r,orientation:s,activationMode:c,loop:u}),g=a(D.tabsContainer,D[s],o&&D.bordered,ee&&D.cleanPanel,i),v=a(D.panels,D.layoutPanels);return(0,I.jsxs)(`div`,{className:g,children:[(0,I.jsx)(_e,{items:p,state:m,className:D.tabs,ariaLabel:d,ariaLabelledBy:f}),(0,I.jsx)(`div`,{className:v,children:p.map(e=>{let t=e.id===m.selectedTabId;if(!h({mountStrategy:l,isSelected:t,isVisited:m.isVisited(e.id)}))return null;let n=`${e.toolbar?`auto `:``}minmax(0, 1fr)${e.footer?` auto`:``}`;return(0,I.jsx)(me,{tabId:e.id,isSelected:t,className:D.panel,getTabElementId:m.getTabElementId,getPanelElementId:m.getPanelElementId,children:(0,I.jsxs)(`div`,{className:D.layoutPanel,style:{gridTemplateRows:n},children:[e.toolbar?(0,I.jsx)(`div`,{className:a(D.layoutSection,e.toolbar.className),children:e.toolbar.children}):null,(0,I.jsx)(`div`,{className:a(D.layoutSection,D.layoutContent,e.content.className),children:e.content.children}),e.footer?(0,I.jsx)(`div`,{className:a(D.layoutSection,e.footer.className),children:e.footer.children}):null]})},e.id)})})]})},R.displayName=`TabsLayout`,z=Object.assign(R,{Tab:we,Toolbar:Te,Content:Ee,Footer:De}),R.__docgenInfo={description:`Compound-оболочка tabs для составных panel-layout сценариев.
|
|
3
3
|
Сам компонент управляет только переключением и каркасом панели.`,methods:[],displayName:`TabsLayout`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"manual"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"lazy"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},cleanPanel:{required:!1,tsType:{name:`boolean`},description:``},bordered:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}}})),Pe=n((()=>{Se(),ye(),Ne()})),Fe=e({BoxBasic:()=>G,BoxControlled:()=>K,BoxMountStrategies:()=>J,BoxVertical:()=>q,DisabledTabs:()=>Y,Empty:()=>$,LayoutPanels:()=>X,LegacyTabs:()=>Z,Loading:()=>Q,__namedExportsOrder:()=>Ve,default:()=>Be});function Ie({label:e}){let[t,n]=(0,B.useState)(0);return(0,V.jsxs)(`div`,{style:H,children:[(0,V.jsxs)(`div`,{children:[`Панель: `,e]}),(0,V.jsxs)(`div`,{children:[`Локальный счётчик: `,t]}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>n(e=>e+1),children:`Увеличить`})]})}function Le(){let[e,t]=(0,B.useState)(`details`);return(0,V.jsx)(`div`,{style:{height:360},children:(0,V.jsxs)(z,{value:e,onValueChange:t,bordered:!0,"aria-label":`Составные панели документа`,children:[(0,V.jsxs)(z.Tab,{id:`details`,title:`Детали`,children:[(0,V.jsx)(z.Toolbar,{children:(0,V.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Панель инструментов вне scroll-области.`})}),(0,V.jsx)(z.Content,{children:(0,V.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:12,height:`100%`},children:[(0,V.jsx)(c,{className:`surface0 border radiusSm paddingSm h100`,children:W.map(e=>(0,V.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Левая колонка: `,e]},`left-${e}`))}),(0,V.jsx)(c,{className:`surface0 border radiusSm paddingSm h100`,children:W.map(e=>(0,V.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Правая колонка: `,e]},`right-${e}`))})]})}),(0,V.jsx)(z.Footer,{children:(0,V.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Футер тоже исключён из scroll-контента.`})})]}),(0,V.jsx)(z.Tab,{id:`history`,title:`История`,children:(0,V.jsx)(z.Content,{children:(0,V.jsx)(c,{className:`surface0 border radiusSm paddingSm h100`,children:W.map(e=>(0,V.jsxs)(`div`,{className:`paddingBlockXs`,children:[`История изменения: `,e]},`history-${e}`))})})})]})})}var B,V,H,U,Re,ze,W,Be,G,K,q,J,Y,X,Z,Q,$,Ve,He=n((()=>{B=t(r(),1),Pe(),u(),V=i(),H={padding:16,display:`grid`,gap:12},U=[{id:`profile`,title:`Профиль`,content:(0,V.jsx)(`div`,{style:H,children:`Карточка пользователя и основные поля профиля.`})},{id:`settings`,title:`Настройки`,content:(0,V.jsx)(`div`,{style:H,children:`Параметры интерфейса, уведомлений и доступа.`})},{id:`history`,title:`История`,content:(0,V.jsx)(`div`,{style:H,children:`Последние действия, комментарии и изменения.`})}],Re=[{id:`first`,title:`Первая`,content:(0,V.jsx)(Ie,{label:`Первая`})},{id:`second`,title:`Вторая`,content:(0,V.jsx)(Ie,{label:`Вторая`})},{id:`third`,title:`Третья`,content:(0,V.jsx)(Ie,{label:`Третья`})}],ze=[{id:`overview`,title:`Обзор`,content:(0,V.jsx)(`div`,{style:H,children:`Раздел доступен сразу.`})},{id:`analytics`,title:`Аналитика`,disabled:!0,content:(0,V.jsx)(`div`,{style:H,children:`Пока недоступно.`})},{id:`history`,title:`История`,content:(0,V.jsx)(`div`,{style:H,children:`История изменений и действий.`})}],W=Array.from({length:12},(e,t)=>`Элемент ${t+1}`),Be={title:`Shared/UI/Tabs`,component:M,args:{items:U,orientation:`horizontal`,activationMode:`automatic`,mountStrategy:`unmount`,isLoading:!1,loadingText:`Загрузка вкладок...`,bordered:!1,loop:!0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{items:{description:"Набор вкладок для `TabsBox`. Каждая вкладка задаётся через `id`, `title`, `content` и опциональный `disabled`.",control:!1},value:{description:`Активная вкладка в controlled-режиме.`,control:`text`},defaultValue:{description:`Начальная вкладка в uncontrolled-режиме.`,control:`text`},onValueChange:{description:`Вызывается при смене активной вкладки.`,control:!1},orientation:{description:`Направление списка вкладок.`,control:`inline-radio`,options:[`horizontal`,`vertical`]},activationMode:{description:"Режим клавиатурной активации: `automatic` меняет вкладку стрелками, `manual` только переводит фокус.",control:`inline-radio`,options:[`automatic`,`manual`]},mountStrategy:{description:"Политика монтирования панелей: `unmount`, `lazy` или `keep-mounted`.",control:`inline-radio`,options:[`unmount`,`lazy`,`keep-mounted`]},bordered:{description:`Добавляет рамку вокруг области панелей.`,control:`boolean`},loop:{description:`Разрешает циклическую навигацию стрелками и Home/End.`,control:`boolean`},className:{description:`Дополнительный CSS-класс корневого контейнера.`,control:`text`},isLoading:{description:"Показывает loading-состояние `TabsBox`.",control:`boolean`},loadingText:{description:`Текст внутри loading-состояния.`,control:`text`},"aria-label":{description:"Текстовая подпись для `tablist`, если рядом нет видимого заголовка.",control:`text`},"aria-labelledby":{description:"Ссылка на внешний заголовок `tablist`.",control:`text`}}},G={args:{"aria-label":`Основные разделы профиля`}},K={render:e=>{let[t,n]=(0,B.useState)(`settings`);return(0,V.jsx)(M,{...e,value:t,onValueChange:n})},args:{value:`settings`,"aria-label":`Управляемые вкладки`}},q={render:e=>(0,V.jsx)(`div`,{style:{height:320},children:(0,V.jsx)(M,{...e})}),args:{orientation:`vertical`,bordered:!0,"aria-label":`Вертикальные вкладки`}},J={render:e=>(0,V.jsx)(M,{...e,items:Re}),args:{mountStrategy:`lazy`,"aria-label":`Демонстрация стратегий монтирования`}},Y={args:{items:ze,"aria-label":`Вкладки с недоступным разделом`}},X={render:()=>(0,V.jsx)(Le,{})},Z={render:e=>(0,V.jsx)(be,{...e,items:U,"aria-label":`Устаревший совместимый API`}),parameters:{docs:{description:{story:"Совместимый фасад поверх `TabsBox`. Новый функционал добавляется только в `TabsBox` и `TabsLayout`."}}}},Q={args:{isLoading:!0,items:U}},$={args:{items:[]}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
|
|
4
4
|
args: {
|
package/storybook-static/assets/{TagInput.stories-Cz_gArzl.js → TagInput.stories-B6FPhOKm.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{n,pn as r,s as i,t as a}from"./iframe-
|
|
1
|
+
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{n,pn as r,s as i,t as a}from"./iframe-CMLjY6eW.js";import{a as o,i as s}from"./utils-PcgESe3m.js";import{n as c,t as l}from"./ui.module-wFHXkJzp.js";import{o as ee,u}from"./Input-nC3liV_k.js";import{t as d}from"./input-CCEUBfi5.js";function f(...e){return e.filter(Boolean).join(` `)||void 0}var p=t((()=>{}));function te(e){return e.trim()}function ne(e){return e}function re(e){return`Удалить тег «${e}»`}var m=t((()=>{})),h,g,_,v,y,b,x,S=t((()=>{h=`AoFB3K`,g=`PvaUEA`,_=`FZ-xEM`,v=`-RCqfG`,y=`ggY643`,b=`hiZq-y`,x={control:h,tagList:g,tag:_,tagText:v,removeButton:y,input:b}}));function C({ref:e,value:t,onChange:n,label:r,description:a,placeholder:s,size:l,disabled:d,readOnly:p=!1,error:m,onClearError:h,maxTags:g,normalizeTag:_=te,getTagKey:v=ne,addOnBlur:y=!0,getRemoveButtonAriaLabel:b=re,tokensAriaLabel:S=`Добавленные теги`,inputClassName:C,className:O,id:k,name:A,form:j,required:M,maxLength:N,onKeyDown:P,onPaste:F,onBlur:I,onCompositionStart:L,onCompositionEnd:R,"aria-describedby":z,"aria-labelledby":B,...ie}){let V=(0,w.useRef)(null),H=(0,w.useRef)(null),U=(0,w.useRef)(!1),[W,G]=(0,w.useState)(``),[ae,K]=(0,w.useState)(``),{controlId:q,labelId:J,descriptionId:oe,errorId:se,describedBy:ce}=u({id:k,hasLabel:r!=null,hasDescription:!!a,hasError:!!m}),Y=g===void 0?1/0:Math.max(0,Math.floor(g)),X=d||p,le=f(ce,z),ue=f(J,B);(0,w.useImperativeHandle)(e,()=>{let e=V.current;if(!e)throw Error(`TagInput: внутренний input недоступен при создании imperative handle.`);return e},[]);let Z=e=>{if(X)return;h?.();let r=[...t],i=new Set(r.map(e=>v(e))),a=[],o=0,s=!1;for(let t of e){let e=_(t);if(!e)continue;if(N!==void 0&&e.length>N){K(`Тег «${e}» длиннее допустимого значения.`);continue}let n=v(e);if(i.has(n)){o+=1;continue}if(r.length>=Y){s=!0;break}i.add(n),r.push(e),a.push(e)}a.length>0?(n(r),K(a.length===1?`Добавлен тег «${a[0]}».`:`Добавлено тегов: ${a.length}.`)):s?K(`Достигнуто максимальное количество тегов: ${Y}.`):o>0&&K(`Такой тег уже добавлен.`)},Q=()=>W?(Z(W.split(D)),G(``),!0):!1,$=e=>{if(X)return;let r=t[e];r!==void 0&&(n(t.filter((t,n)=>n!==e)),h?.(),K(`Удалён тег «${r}».`),V.current?.focus())},de=e=>{if(P?.(e),!(e.defaultPrevented||e.nativeEvent.isComposing||U.current||X)){if(e.key===`Enter`||e.key===`,`){(Q()||e.key===`,`)&&e.preventDefault();return}e.key===`Backspace`&&W.length===0&&t.length>0&&(e.preventDefault(),$(t.length-1))}},fe=e=>{if(F?.(e),e.defaultPrevented||X)return;let t=e.clipboardData.getData(`text`);if(!E.test(t))return;e.preventDefault();let n=e.currentTarget.selectionStart??W.length,r=e.currentTarget.selectionEnd??n,i=`${W.slice(0,n)}${t}${W.slice(r)}`;Z(i.split(D)),G(``)};return(0,T.jsxs)(ee,{label:r,description:a,disabled:d,className:O,size:l,error:m,controlId:q,labelId:J,descriptionId:oe,errorId:se,children:[(0,T.jsxs)(`div`,{ref:H,className:o(c.uiControl,m&&c.invalid,x.control),"data-disabled":d?``:void 0,"data-readonly":p?``:void 0,"data-invalid":m?``:void 0,onClick:()=>V.current?.focus(),children:[t.length>0&&(0,T.jsx)(`ul`,{className:x.tagList,"aria-label":S,children:t.map((e,t)=>(0,T.jsxs)(`li`,{className:x.tag,children:[(0,T.jsx)(`span`,{className:x.tagText,children:e}),!X&&(0,T.jsx)(`button`,{type:`button`,className:x.removeButton,onClick:e=>{e.stopPropagation(),$(t)},"aria-label":b(e,t),children:(0,T.jsx)(i,{"aria-hidden":`true`})})]},`${v(e)}-${t}`))}),(0,T.jsx)(`input`,{...ie,ref:V,id:q,form:j,disabled:d,readOnly:p,required:M&&t.length===0,maxLength:N,value:W,placeholder:t.length===0?s:void 0,"aria-invalid":!!m||void 0,"aria-labelledby":ue,"aria-describedby":le,className:o(x.input,C),onChange:e=>{let t=e.target.value,n=E.test(t);if(U.current)G(t);else if(n){let e=t.split(D),n=E.test(t.at(-1)??``)?``:e.pop()??``;Z(e),G(n)}else G(t);(U.current||!n)&&h?.()},onKeyDown:de,onPaste:fe,onCompositionStart:e=>{U.current=!0,L?.(e)},onCompositionEnd:e=>{U.current=!1,R?.(e)},onBlur:e=>{I?.(e);let t=e.relatedTarget,n=t instanceof Node&&H.current?.contains(t);!e.defaultPrevented&&!n&&y&&!X&&Q()}}),A&&t.map((e,t)=>(0,T.jsx)(`input`,{type:`hidden`,name:A,value:e,form:j,disabled:d},`${v(e)}-${t}`))]}),(0,T.jsx)(`span`,{className:`visuallyHidden`,"aria-live":`polite`,"aria-atomic":`true`,children:ae})]})}var w,T,E,D,O=t((()=>{w=e(r(),1),s(),n(),d(),l(),p(),m(),S(),T=a(),E=/[,\r\n]/,D=/[,\r\n]+/,C.__docgenInfo={description:"Controlled-поле для создания коротких строковых тегов.\n\nНовое значение фиксируется по `Enter`, запятой, вставке списка или потере фокуса. Компонент хранит\nтолько незавершённый текст input, а окончательный набор всегда принадлежит потребителю через `value`.",methods:[],displayName:`TagInput`,props:{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:``},ref:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLInputElement`}],raw:`Ref<HTMLInputElement>`},description:"Ссылка на внутренний нативный `input`, передаваемая напрямую как React 19 prop."},error:{required:!1,tsType:{name:`string`},description:"Сообщение валидации, связанное с полем через `aria-describedby`."},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Сбрасывает внешнюю ошибку после изменения черновика или набора тегов.`},readOnly:{required:!1,tsType:{name:`boolean`},description:`Запрещает изменение набора тегов, сохраняя возможность выделять и копировать текст.`,defaultValue:{value:`false`,computed:!1}},maxTags:{required:!1,tsType:{name:`number`},description:`Максимальное количество тегов. Отсутствие значения не ограничивает набор.`},normalizeTag:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => string`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`string`}}},description:`Нормализует введённое значение перед проверкой дубликата и добавлением.
|
|
2
2
|
По умолчанию удаляет пробелы в начале и конце.`,defaultValue:{value:`function defaultNormalizeTag(value: string) {
|
|
3
3
|
return value.trim();
|
|
4
4
|
}`,computed:!1}},getTagKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => string`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`string`}}},description:`Возвращает ключ сравнения тегов. Позволяет, например, запретить дубликаты без учёта регистра.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-
|
|
1
|
+
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CMLjY6eW.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-D3IlvJMm.js";import{t as f}from"./mdx-react-shim-DzMf9EAg.js";import{Controlled as p,Disabled as m,WithValue as h,n as g,t as _}from"./Textarea.stories-yvjUxFuQ.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o,{of:_,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,b.jsx)(l,{children:`Textarea`}),`
|
|
3
3
|
`,(0,b.jsx)(a,{children:`Многострочное текстовое поле для описаний, комментариев и заметок`}),`
|
|
4
4
|
`,(0,b.jsx)(t.p,{children:`Textarea уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
package/storybook-static/assets/{Textarea.stories-B8Yi5x83.js → Textarea.stories-yvjUxFuQ.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-
|
|
1
|
+
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-CMLjY6eW.js";import{a,i as o}from"./utils-PcgESe3m.js";import{n as s,t as c}from"./ui.module-wFHXkJzp.js";import{o as l,u}from"./Input-nC3liV_k.js";import{t as d}from"./input-CCEUBfi5.js";var f,p,m=n((()=>{f=`TjY2iu`,p={textarea:f}}));function h({label:e,description:t,className:n,disabled:r,size:i,value:o,onChange:c,error:d,onClearError:f,id:m,...h}){let{controlId:_,labelId:v,descriptionId:y,errorId:b,describedBy:x}=u({id:m,hasLabel:e!=null,hasDescription:!!t,hasError:!!d});return(0,g.jsx)(l,{label:e,description:t,disabled:r,size:i,error:d,controlId:_,labelId:v,descriptionId:y,errorId:b,children:(0,g.jsx)(`textarea`,{...h,id:_,disabled:r,value:o,"aria-invalid":!!d||void 0,"aria-labelledby":v,"aria-describedby":x,"data-invalid":d?``:void 0,className:a(s.uiControl,p.textarea,`scrollable`,n),onChange:e=>{c?.(e.target.value),d&&f&&f()}})})}var g,_=n((()=>{o(),d(),c(),m(),g=i(),h.__docgenInfo={description:`Многострочное текстовое поле для ввода свободного текста. Поддерживает подпись, описание, ошибки и единый визуальный стиль формы.`,methods:[],displayName:`Textarea`,props:{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:``},error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}},composes:[`Omit`]}})),v=e({Controlled:()=>S,Disabled:()=>w,WithValue:()=>C,__namedExportsOrder:()=>T,default:()=>x}),y,b,x,S,C,w,T,E=n((()=>{y=t(r(),1),_(),b=i(),x={title:`Shared/UI/Textarea`,component:h,args:{label:`Комментарий`,description:`Оставьте примечание к документу.`,placeholder:`Введите текст...`,rows:4,disabled:!1,value:``,onChange:()=>void 0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок текстовой области.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Плейсхолдер поля ввода.`,control:`text`},value:{description:`Текущее значение текстовой области.`,control:`text`},onChange:{description:`Вызывается при изменении текста.`,control:!1},rows:{description:`Количество видимых строк.`,control:`number`},cols:{description:`Ширина в количестве символов.`,control:`number`},disabled:{description:`Блокирует редактирование.`,control:`boolean`},className:{description:`Дополнительный CSS-класс.`,control:`text`}}},S={args:{value:``,onChange:()=>void 0},render:e=>{let[t,n]=(0,y.useState)(`Первичный комментарий`);return(0,b.jsx)(h,{...e,value:t,onChange:n})}},C={args:{rows:5,value:``,onChange:()=>void 0},render:e=>{let[t,n]=(0,y.useState)(`Шаблонный текст для редактирования.`);return(0,b.jsx)(h,{...e,value:t,onChange:n})}},w={args:{disabled:!0,value:`Редактирование недоступно.`,onChange:()=>void 0},render:e=>(0,b.jsx)(h,{...e})},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
args: {
|
|
3
3
|
value: "",
|
|
4
4
|
onChange: () => undefined
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-
|
|
1
|
+
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-CMLjY6eW.js";import{a as i,i as a}from"./utils-PcgESe3m.js";import{R as o,h as s,t as c}from"./formatters-CvqCBcOp.js";import{i as l,r as u}from"./date-segments-CzU9k5bl.js";function d(e=0,t=0){return s(S,C,w,e,t,0,0)}function f(e=`date-time`){return e===`time`?x:b}function p(e,t=`date-time`){if(e==null)return null;let n=o(e);return n?t===`time`?d(n.getHours(),n.getMinutes()):n:null}function m(e,t,n,r=`date-time`){let i=p(e,r);if(!i)return!1;if(r===`time`){let e=i.getHours()*60+i.getMinutes(),r=t?p(t,`time`):null,a=n?p(n,`time`):null;return!(r&&e<r.getHours()*60+r.getMinutes()||a&&e>a.getHours()*60+a.getMinutes())}return!(t&&i<t||n&&i>n)}function h(e,t){let n=p(t),r=n?.getHours()??0,i=n?.getMinutes()??0;return s(e.getFullYear(),e.getMonth(),e.getDate(),r,i,0,0)}function g(e,t,n,r=`date-time`){return r===`time`?d(t,n):s(e.getFullYear(),e.getMonth(),e.getDate(),t,n,0,0)}function _(e,t,n=`date-time`){return n===`time`?p(e,`time`)??d():p(e,n)??t}function v(e,t,n,r=`date-time`){let i=p(e,r)??e,a=t?p(t,r):null,o=n?p(n,r):null,s=!!a&&i.getFullYear()===a.getFullYear()&&i.getMonth()===a.getMonth()&&i.getDate()===a.getDate(),c=!!o&&i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate(),l=s?a.getHours():0,u=c?o.getHours():23,d=s&&l===u?a.getMinutes():0,f=c&&l===u?o.getMinutes():59,m=l>u||l===u&&d>f;return{disabled:m,minHour:l,maxHour:u,minMinuteByHour:e=>m?0:s&&e===l?a.getMinutes():0,maxMinuteByHour:e=>m?59:c&&e===u?o.getMinutes():59}}function y(e,t,n,r,i,a=`date-time`){let o=v(e,r,i,a);if(o.disabled)return{hours:0,minutes:0};let s=Math.min(Math.max(t,o.minHour),o.maxHour),c=o.minMinuteByHour(s),l=o.maxMinuteByHour(s);return{hours:s,minutes:Math.min(Math.max(n,c),l)}}var b,x,S,C,w,T=t((()=>{u(),c(),b=`dd.MM.yyyy HH:mm`,x=`HH:mm`,S=1970,C=0,w=1,l(x)}));function ee(e,t,n,r=`date-time`){let i=v(e,t,n,r),a=e.getHours(),o=e.getMinutes(),s=i.minMinuteByHour(a),c=i.maxMinuteByHour(a);return i.disabled?{disabled:!0,selectedHour:a,selectedMinute:o,hours:[],minutes:[]}:{disabled:!1,selectedHour:a,selectedMinute:o,hours:Array.from({length:i.maxHour-i.minHour+1},(e,t)=>i.minHour+t),minutes:Array.from({length:c-s+1},(e,t)=>s+t)}}var te=t((()=>{T()}));function E(e,t){return t<=0||e<0?0:e>t-1?t-1:e}function D(e,t){return!Number.isFinite(e)||e<=0?t:Math.max(e,t)}function ne(e,t){return Math.max(1,Math.round(e/Math.max(1,t)))}function re(e,t){return Math.max(0,Math.round(e/2-t/2))}function O(e,t){return Math.max(0,Math.round(e*t))}function k(e,t,n){return n<=0||t<=0?0:E(Math.round(e/t),n)}var A=t((()=>{})),j,M,N,P,F,I,L,R=t((()=>{j=`GLhdJ6`,M=`_2xLNL2`,N=`dgX32S`,P=`WfOtQ9`,F=`XIdSMi`,I=`_--Hsbk`,L={wheelPicker:j,viewport:M,scroller:N,items:P,item:F,selectionFrame:I}}));function z({items:e,value:t,onChange:n,ariaLabel:r,disabled:a,className:o,minHeight:s=H,visibleRows:c=U,formatItem:l,getItemKey:u}){let d=(0,B.useRef)(null),f=(0,B.useRef)(null),p=(0,B.useRef)(null),m=(0,B.useMemo)(()=>Math.max(0,e.findIndex(e=>Object.is(e,t))),[e,t]),[h,g]=(0,B.useState)(0),_=D(h,s),v=ne(_,c),y=re(_,v),b=(0,B.useRef)(m),x=(0,B.useCallback)(e=>Math.round(e.clientHeight),[]),S=(0,B.useCallback)(()=>{let t=f.current;if(!t||e.length===0)return;let r=k(t.scrollTop,v,e.length);t.scrollTo({top:O(r,v),behavior:`smooth`}),r!==b.current&&(b.current=r,n(e[r]))},[v,e,n]),C=(0,B.useCallback)(()=>{p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{p.current=null,S()},W)},[S]);(0,B.useEffect)(()=>{let e=d.current;if(!e||typeof ResizeObserver>`u`)return;let t=e=>{g(t=>t===e?t:e)},n=new ResizeObserver(n=>{let r=n[0],i=Math.round(r?.contentRect.height??x(e));t(i)});return n.observe(e),t(x(e)),()=>n.disconnect()},[x]),(0,B.useEffect)(()=>{let t=f.current;if(!t||e.length===0)return;let n=E(m,e.length);b.current=n,t.scrollTo({top:O(n,v),behavior:`auto`})},[v,e.length,m]),(0,B.useEffect)(()=>{let e=f.current;if(!e)return;let t=()=>{a||C()},n=t=>{a||(t.preventDefault(),e.scrollTop+=t.deltaY,C())};return e.addEventListener(`scroll`,t,{passive:!0}),e.addEventListener(`wheel`,n,{passive:!1}),()=>{e.removeEventListener(`scroll`,t),e.removeEventListener(`wheel`,n)}},[a,e,n,C]),(0,B.useEffect)(()=>()=>{p.current!==null&&window.clearTimeout(p.current)},[]);let w=t=>{if(a||e.length===0||t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let r=t.key===`ArrowUp`?-1:1,i=E(m+r,e.length);i!==m&&(b.current=i,n(e[i]))},T={"--wheel-picker-min-height":`${s}px`,"--wheel-picker-viewport-height":`${_}px`,"--wheel-picker-item-height":`${v}px`,"--wheel-picker-edge-padding":`${y}px`};return(0,V.jsx)(`div`,{ref:d,className:i(L.wheelPicker,o),style:T,children:(0,V.jsxs)(`div`,{className:L.viewport,children:[(0,V.jsx)(`div`,{ref:f,className:L.scroller,role:`listbox`,tabIndex:a?-1:0,"aria-label":r,"aria-disabled":a||void 0,onKeyDown:w,children:(0,V.jsx)(`div`,{className:L.items,children:e.map((e,t)=>{let r=t===m;return(0,V.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":r,className:L.item,"data-selected":r?``:void 0,disabled:a,onClick:()=>{b.current=t,n(e)},children:l?.(e)??String(e)},u?.(e,t)??t)})})}),(0,V.jsx)(`div`,{className:L.selectionFrame,"aria-hidden":`true`})]})})}var B,V,H,U,W,ie=t((()=>{B=e(n(),1),a(),A(),R(),V=r(),H=192,U=7,W=96,z.__docgenInfo={description:`Внутренний wheel-picker со snap-кареткой по центру и блокировкой page scroll.`,methods:[],displayName:`WheelPicker`,props:{items:{required:!0,tsType:{name:`unknown`},description:``},value:{required:!0,tsType:{name:`T`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},ariaLabel:{required:!0,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`192`,computed:!1}},visibleRows:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`7`,computed:!1}},formatItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T) => ReactNode`,signature:{arguments:[{type:{name:`T`},name:`item`}],return:{name:`ReactNode`}}},description:``},getItemKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T, index: number) => Key`,signature:{arguments:[{type:{name:`T`},name:`item`},{type:{name:`number`},name:`index`}],return:{name:`Key`}}},description:``}}}})),ae=t((()=>{ie()})),G,K,q,J,Y,X,Z,oe=t((()=>{G=`_5-SSnO`,K=`s1NHua`,q=`KQC9-8`,J=`WDu02W`,Y=`_9mEhfD`,X=`N-Fzjk`,Z={timePanel:G,hint:K,fields:q,field:J,label:Y,wheel:X}}));function Q({value:e,disabled:t,minDate:n,maxDate:r,mode:i=`date-time`,onChange:a}){let o=ee(e,n,r,i),s=e=>String(e).padStart(2,`0`);return o.disabled?(0,$.jsx)(`div`,{className:Z.timePanel,children:(0,$.jsx)(`p`,{className:Z.hint,children:`Для выбранного дня нет доступного времени в заданном диапазоне.`})}):(0,$.jsx)(`div`,{className:Z.timePanel,children:(0,$.jsxs)(`div`,{className:Z.fields,children:[(0,$.jsxs)(`label`,{className:Z.field,children:[(0,$.jsx)(`span`,{className:Z.label,children:`Часы`}),(0,$.jsx)(z,{className:Z.wheel,items:o.hours,value:o.selectedHour,onChange:e=>a(e,o.selectedMinute),ariaLabel:`Выбор часов`,disabled:t,formatItem:s})]}),(0,$.jsxs)(`label`,{className:Z.field,children:[(0,$.jsx)(`span`,{className:Z.label,children:`Минуты`}),(0,$.jsx)(z,{className:Z.wheel,items:o.minutes,value:o.selectedMinute,onChange:e=>a(o.selectedHour,e),ariaLabel:`Выбор минут`,disabled:t,formatItem:s})]})]})})}var $,se=t((()=>{ae(),te(),oe(),$=r(),Q.__docgenInfo={description:`Переиспользуемая панель выбора времени поверх internal wheel-picker.`,methods:[],displayName:`TimePanel`,props:{value:{required:!0,tsType:{name:`Date`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},mode:{required:!1,tsType:{name:`union`,raw:`"date-time" | "time"`,elements:[{name:`literal`,value:`"date-time"`},{name:`literal`,value:`"time"`}]},description:``,defaultValue:{value:`"date-time"`,computed:!1}},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(hours: number, minutes: number) => void`,signature:{arguments:[{type:{name:`number`},name:`hours`},{type:{name:`number`},name:`minutes`}],return:{name:`void`}}},description:``}}}}));export{f as a,h as c,_ as d,d as i,g as l,se as n,T as o,y as r,m as s,Q as t,p as u};
|
package/storybook-static/assets/{TimePanel.stories-CzJ9V-ap.js → TimePanel.stories-D6gcbXWL.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-
|
|
1
|
+
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-CMLjY6eW.js";import{n as i,t as a}from"./TimePanel-Dgerz5If.js";var o,s,c,l,u,d;t((()=>{o=e(n(),1),i(),s=r(),c={title:`Shared/UI/Internal/DateTime/TimePanel`,component:a,args:{value:new Date(2026,2,10,12,30,0,0),onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`centered`}},l={render:e=>{let[t,n]=(0,o.useState)(e.value);return(0,s.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,s.jsx)(a,{...e,value:t,onChange:(e,r)=>{n(new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,r,0,0))}})})}},u={render:e=>{let[t,n]=(0,o.useState)(new Date(2026,2,10,9,30,0,0));return(0,s.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,s.jsx)(a,{...e,value:t,minDate:new Date(2026,2,10,9,15,0,0),maxDate:new Date(2026,2,10,18,30,0,0),onChange:(e,r)=>{n(new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,r,0,0))}})})}},l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
render: args => {
|
|
3
3
|
const [value, setValue] = useState<Date>(args.value);
|
|
4
4
|
return <div style={{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-
|
|
1
|
+
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-CMLjY6eW.js";import{a as i,i as a}from"./utils-PcgESe3m.js";import{n as o,t as s}from"./ui.module-wFHXkJzp.js";var c,l,u,d,f,p,m,h,g,_=t((()=>{c=`FFyoOs`,l=`zPYy7T`,u=`j6ek6R`,d=`HFTPXI`,f=`_0RK4xF`,p=`kDPnKt`,m=`DQHqws`,h=`nCQ9v4`,g={row:c,wrapper:l,input:u,track:d,thumb:f,unchecked:p,checked:m,option:h}}));function v({label:e,description:t,placeholder:n,disabled:r,size:a,className:s,onChange:c,value:l,id:u,checkedText:d=`ВКЛ`,uncheckedText:f=`ВЫКЛ`,labelPosition:p=`before`,...m}){let h=(0,y.useId)(),_=u??h,v=t?`${_}-description`:void 0,x=e??n,S=!!l,C=!x&&!m[`aria-label`]?`${f} / ${d}`:void 0,w=x?(0,b.jsx)(`label`,{htmlFor:_,className:o.uiLabel,children:x}):null;return(0,b.jsxs)(`div`,{className:i(o.uiElement,r&&o.disabled,a&&o.uiSizable,a&&o[a],s),"aria-disabled":r||void 0,children:[(0,b.jsxs)(`div`,{className:g.row,children:[p===`before`&&w,(0,b.jsxs)(`div`,{className:g.wrapper,children:[(0,b.jsx)(`input`,{...m,id:_,type:`checkbox`,role:`switch`,checked:S,disabled:r,"aria-checked":S,"aria-describedby":v,"aria-label":C,className:i(o.uiInputControl,g.input),onChange:e=>c?.(e.currentTarget.checked)}),(0,b.jsxs)(`div`,{className:g.track,"data-disabled":r||void 0,"aria-hidden":`true`,children:[(0,b.jsx)(`div`,{className:g.thumb}),(0,b.jsx)(`div`,{className:i(g.option,g.unchecked),children:f}),(0,b.jsx)(`div`,{className:i(g.option,g.checked),children:d})]})]}),p===`after`&&w]}),t&&(0,b.jsx)(`p`,{id:v,className:o.uiDescription,children:t})]})}var y,b,x=t((()=>{y=e(n(),1),a(),s(),_(),b=r(),v.__docgenInfo={description:`Переключаемая кнопка с сохранением активного состояния. Используется для локального выбора режима, фильтра или форматирования.`,methods:[],displayName:`Toggle`,props:{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:``},checkedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВКЛ"`,computed:!1}},uncheckedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВЫКЛ"`,computed:!1}},labelPosition:{required:!1,tsType:{name:`union`,raw:`"before" | "after"`,elements:[{name:`literal`,value:`"before"`},{name:`literal`,value:`"after"`}]},description:``,defaultValue:{value:`"before"`,computed:!1}}},composes:[`Omit`]}}));export{x as n,v as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-
|
|
1
|
+
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CMLjY6eW.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-D3IlvJMm.js";import{t as f}from"./mdx-react-shim-DzMf9EAg.js";import{Controlled as p,Disabled as m,LabelAfter as h,n as g,t as _}from"./Toggle.stories-DMiwsbGp.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o,{of:_,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,b.jsx)(l,{children:`Toggle`}),`
|
|
3
3
|
`,(0,b.jsx)(a,{children:`Переключаемый булев контрол для локальных режимов и простых опций`}),`
|
|
4
4
|
`,(0,b.jsx)(t.p,{children:`Toggle уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-
|
|
1
|
+
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-CMLjY6eW.js";import{n as a,t as o}from"./Toggle-8cLEtvUT.js";var s=e({Controlled:()=>d,Disabled:()=>p,LabelAfter:()=>f,__namedExportsOrder:()=>m,default:()=>u}),c,l,u,d,f,p,m,h=n((()=>{c=t(r(),1),a(),l=i(),u={title:`Shared/UI/Toggle`,component:o,args:{value:!1,onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи переключателя.`,control:`text`},description:{description:`Описание под переключателем.`,control:`text`},value:{description:`Текущее значение переключателя.`,control:`boolean`},onChange:{description:`Вызывается при изменении значения.`,control:!1},checkedText:{description:`Текст для включенного состояния.`,control:`text`},uncheckedText:{description:`Текст для выключенного состояния.`,control:`text`},labelPosition:{description:`Положение подписи относительно переключателя.`,control:`inline-radio`,options:[`before`,`after`]},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},d={render:e=>{let[t,n]=(0,c.useState)(e.value??!1);return(0,l.jsx)(o,{...e,value:t,onChange:n})},args:{label:`Режим синхронизации`,description:`Мгновенное переключение состояния.`,value:!1,checkedText:`ВКЛ`,uncheckedText:`ВЫКЛ`,labelPosition:`before`}},f={render:e=>{let[t,n]=(0,c.useState)(e.value??!0);return(0,l.jsx)(o,{...e,value:t,onChange:n})},args:{label:`Уведомления`,value:!0,labelPosition:`after`}},p={args:{label:`Недоступный переключатель`,value:!0,disabled:!0}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
render: args => {
|
|
3
3
|
const [value, setValue] = useState(args.value ?? false);
|
|
4
4
|
return <Toggle {...args} value={value} onChange={setValue} />;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-
|
|
1
|
+
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CMLjY6eW.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-D3IlvJMm.js";import{t as f}from"./mdx-react-shim-DzMf9EAg.js";import{Basic as p,MixedSelection as m,ParentCompression as h,n as g,t as _}from"./TreeMultiSelect.stories-DPjynkTo.js";function v(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o,{of:_,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,b.jsx)(l,{children:`TreeMultiSelect`}),`
|
|
3
3
|
`,(0,b.jsx)(a,{children:`Мультивыбор узлов дерева с компрессией subtree в parent`}),`
|
|
4
4
|
`,(0,b.jsxs)(t.p,{children:[(0,b.jsx)(t.code,{children:`TreeMultiSelect`}),` хранит наружу не “все листья”, а канонизированный frontier по уровням дерева.`]}),`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-
|
|
1
|
+
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-CMLjY6eW.js";import{a as i,t as a}from"./picker-9NUs0t2j.js";import{i as o,n as s,r as c,t as l}from"./MultiSelect-EUq0nGvq.js";import{n as u,t as d}from"./ODataMultiSelect-Co9UuAvM.js";import{a as f,c as p,i as m,n as h,o as g,r as _,s as v,t as y,u as b}from"./TreePickerBase-DCR2ymQN.js";var x,S,C,w=t((()=>{x=e(n(),1),u(),S=r(),C=({item:e,values:t,onChange:n,width:r=15})=>{let[i,a]=(0,x.useState)({}),o=t??i,s=`calc(${r}em + var(--width-add))`,c=(0,x.useCallback)(r=>{let i={...o,[e.id]:r};t||a(i),n?.(i)},[e.id,n,o,t]);return(0,S.jsx)(`div`,{style:{maxWidth:s,minWidth:s},children:(0,S.jsx)(d,{odata:e.odata,segment:e.segment,model:e.model,dependencies:o,value:o[e.id],onChange:c})})},C.__docgenInfo={description:``,methods:[],displayName:`ODataDependentSegmentMultiSelect`,props:{width:{defaultValue:{value:`15`,computed:!1},required:!1}}}})),T=t((()=>{n(),r()}));function E(e,t){return e[t]}function D(e,t,n){let r=e[t];if(typeof r==`string`)return r;let i=E(e,n);return typeof i==`string`?i:String(i)}function O({label:e,description:t,disabled:n,placeholder:r,size:i,options:a,value:o,onChange:s,optionKey:c,optionLabel:u,renderCode:d}){let f=a.map(e=>({key:String(E(e,c)),text:D(e,u,c)})),p=new Set((o??[]).map(e=>String(e))),m=f.filter(e=>p.has(e.key));return(0,k.jsx)(l,{label:e,description:t,disabled:n,placeholder:r,size:i,items:f,codeKey:`key`,textKey:`text`,hideCode:d?void 0:!0,value:m,onChange:e=>s(e.map(e=>e.key))})}var k,A=t((()=>{s(),k=r(),O.__docgenInfo={description:``,methods:[],displayName:`SerializableMultiSelect`,props:{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:``},options:{required:!0,tsType:{name:`unknown`},description:``},optionKey:{required:!0,tsType:{name:`TOptionKey`},description:``},optionLabel:{required:!0,tsType:{name:`TOptionLabel`},description:``},renderCode:{required:!1,tsType:{name:`literal`,value:`true`},description:``}}}})),j=t((()=>{s(),o(),T(),w(),u(),A()})),M=t((()=>{j()}));function N(e,t){if(e.size!==0){if(e.size===1){let n=t.nodeById.get([...e][0]);return n?n.label:void 0}return`${e.size} элементов`}}function P(e,t,n){let r=p(e,n),i=p(t,n);return r.size===i.size&&[...r].every(e=>i.has(e))}function F({label:e,description:t,disabled:n,placeholder:r=`Выберите значения`,size:a,nodes:o,value:s,onChange:l,query:u,defaultQuery:d,onQuery:h,isLoading:g,error:x,optionsLayout:S=`tree`}){let[C,w]=(0,I.useState)(!1),T=(0,I.useMemo)(()=>_(o),[o]),{draftValue:E,setDraftValue:D,prepareOpen:O}=i({value:s,open:C,onCommit:l,isEqual:(e,t)=>P(e,t,T)}),k=C?E:s,A=(0,I.useMemo)(()=>p(k,T),[k,T]),j=(0,I.useMemo)(()=>f(A,T),[A,T]),M=(0,I.useMemo)(()=>N(A,T),[A,T]);return(0,L.jsx)(y,{label:e,description:t,disabled:n,placeholder:r,size:a,nodes:o,selectedIds:j.selectedIds,partialIds:j.partialIds,selectionMode:`multi`,optionsLayout:S,open:C,onOpenChange:e=>{e&&!C&&O(),w(e)},bulkActions:{onSelectAll:()=>{D(b(m(T),T))},onDeselectAll:()=>D({})},triggerMode:`search`,selectedSummary:M?(0,L.jsx)(c,{value:M}):void 0,query:u,defaultQuery:d,onQuery:h,onNodeActivate:e=>{D(t=>v(t,e.id,T))},onClearSelection:()=>{D({}),C||l({})},isLoading:g,error:x})}var I,L,R=t((()=>{I=e(n(),1),M(),a(),g(),h(),L=r(),F.__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{R as n,F as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-
|
|
1
|
+
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-CMLjY6eW.js";import{n as a,t as o}from"./TreeMultiSelect-Codlm2j5.js";import{n as s,t as c}from"./treeStoryFixtures-Cd984L7t.js";var l=e({BalancedColumns:()=>v,Basic:()=>h,MixedSelection:()=>_,ParentCompression:()=>g,RightEdgeColumns:()=>y,__namedExportsOrder:()=>b,default:()=>m});function u({initialValue:e={},label:t=`TreeMultiSelect`,description:n,optionsLayout:r=`tree`,nodes:i=c}){let[a,s]=(0,d.useState)(e);return(0,f.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,f.jsx)(o,{label:t,description:n,nodes:i,value:a,onChange:s,optionsLayout:r}),(0,f.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,JSON.stringify(a)]})]})}var d,f,p,m,h,g,_,v,y,b,x=n((()=>{d=t(r(),1),a(),s(),f=i(),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={title:`Shared/UI/TreeMultiSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узлов`,description:`Мультивыбор с канонизацией subtree в ближайший parent.`,nodes:c,value:{},onChange:()=>{}},argTypes:{nodes:{control:!1},value:{control:!1},onChange:{control:!1}}},h={render:()=>(0,f.jsx)(u,{initialValue:{OWNER:[`P0001`]}})},g={render:()=>(0,f.jsx)(u,{label:`Компрессия parent`,description:`Когда выбран весь subtree, наружу может уйти только родительский узел.`,initialValue:{REGION:[`R01`]}})},_={render:()=>(0,f.jsx)(u,{label:`Смешанный выбор`,description:`Пример mixed frontier по соседним уровням.`,initialValue:{BRANCH:[`B0101`],OWNER:[`P0004`]}})},v={render:()=>(0,f.jsx)(u,{label:`Все уровни в столбцах`,description:`Popover подбирает число столбцов по количеству опций и доступному viewport.`,optionsLayout:`columns`,initialValue:{BRANCH:[`B0101`]}})},y={render:()=>(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)(u,{label:`Контрол у правой границы`,description:`Popover для 66 опций должен сравнить вертикальные и горизонтальные стороны и остаться внутри viewport.`,optionsLayout:`columns`,nodes:p})})})},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
render: () => <StatefulTreeMultiSelect initialValue={{
|
|
3
3
|
OWNER: ["P0001"]
|
|
4
4
|
}} />
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{Tt as n,j as r,n as i,pn as a,s as o,t as s,yt as c}from"./iframe-
|
|
1
|
+
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{Tt as n,j as r,n as i,pn as a,s as o,t as s,yt as c}from"./iframe-CMLjY6eW.js";import{a as l,i as u}from"./utils-PcgESe3m.js";import{n as d,t as f}from"./ui.module-wFHXkJzp.js";import{t as p}from"./CheckBox-DNBF3Ks-.js";import{a as m}from"./Input-nC3liV_k.js";import{t as h}from"./input-CCEUBfi5.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-9NUs0t2j.js";import{n as v,t as y}from"./SelectOptionContent-BDd8ltGY.js";import{t as b}from"./check-box-Bshfr00a.js";function x(e,t){return`${e}::${t}`}function ce(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(x(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 le(e,t){if(e)return t.nodeIdByCodeValue.get(x(e.codeKey,e.value))}function ue(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(x(r,e));i&&n.add(i)}return E(n,t)}function de(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 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,n){for(let r of[...e])C(r,t,n)&&e.delete(r)}function T(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=>T(e,t,n))}function E(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=>T(e,n,t))&&(w(n,e,t),n.add(e))}return n}function fe(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 D(e,t,n){return t.has(e)?!0:S(e,n).some(e=>t.has(e))}function O(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=>O(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 pe(e,t){let n={selectedIds:new Set,partialIds:new Set};for(let r of t.rootIds)O(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=ue(e,n),i=e=>{if(D(e,r,n)){if(r.has(e)){r.delete(e);return}fe(r,e,n)&&i(e);return}w(r,e,n),r.add(e)},a=[...k(n,[t])],o=a.length>0&&a.every(e=>D(e,r,n));for(let e of a){let t=D(e,r,n);(o&&t||!o&&!t)&&i(e)}return de(E(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+z)/234)),g=Math.max(1,Math.min(B,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*R+(e-1)*z),r=L+t*ve,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+_*R+(_-1)*z);return{columnCount:_,rowCount:te,width:Math.min(d,ne),minWidth:m,maxHeight:f}}var F,I,L,R,z,ve,B,V=t((()=>{F=8,I=16,L=48,R=224,z=10,ve=32,B=6})),ye,be,xe,Se,Ce,we,H,Te,Ee,U,De,Oe,ke,W,G,K,Ae,q,je,Me,J,Y,Ne,Pe,X,Fe=t((()=>{ye=`eMqOwq`,be=`JKstO-`,xe=`hKgr8e`,Se=`KjPZjd`,Ce=`_6EH37F`,we=`UBll8Q`,H=`-y3RZP`,Te=`ayLJ50`,Ee=`_2MFkGF`,U=`SWQUvb`,De=`o5NWnX`,Oe=`ibSd-S`,ke=`lXezvv`,W=`FMlLGX`,G=`d2Zt7U`,K=`_8PN4hs`,Ae=`_4JEoen`,q=`GS8eEC`,je=`T8gVno`,Me=`o6stdX`,J=`I5zvhe`,Y=`KQ0PBI`,Ne=`_7hAQQA`,Pe=`XeUHNc`,X={treeRow:ye,treeRowSelected:be,treeRowActive:xe,treeRowDisabled:Se,treeNodeButton:Ce,treePopupHeader:we,treeColumns:H,treeColumnRow:Te,treeColumnCheckBox:Ee,treeNodeOptionContent:U,treeIndent:De,treeExpander:Oe,treeExpanderPlaceholder:ke,treeExpanderIcon:W,treeExpanderIconExpanded:G,treeSelection:K,treeSelectionChecked:Ae,treeSelectionPartial:q,treeSelectionIcon:je,treeSummary:Me,inputWithOverlay:J,valueOverlay:Y,treeActions:Ne,treeClearButton:Pe}}));function Ie({node:e,level:t,highlight:i,hasChildren:a,isExpanded:o,selected:s,partial:u,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&&a?(0,Z.jsx)(`button`,{type:`button`,className:X.treeExpander,onClick:e=>{e.stopPropagation(),m?.()},"aria-label":o?`Свернуть ветку`:`Развернуть ветку`,"data-ui":`tree-select-expander`,"data-action":o?`collapse-tree-select-node`:`expand-tree-select-node`,children:(0,Z.jsx)(c,{className:l(X.treeExpanderIcon,o&&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:u,disabled:e.disabled,"aria-label":`Выбрать ${e.label}`,onChange:()=>h?.()})}):d===`multi`?(0,Z.jsx)(`span`,{className:l(X.treeSelection,s&&X.treeSelectionChecked,u&&X.treeSelectionPartial),"aria-hidden":`true`,children:s?(0,Z.jsx)(n,{className:X.treeSelectionIcon}):u?(0,Z.jsx)(r,{className:X.treeSelectionIcon}):null}):null,(0,Z.jsx)(`div`,{className:X.treeNodeOptionContent,children:(0,Z.jsx)(y,{label:e.label,code:e.code,highlight:i})})]})}var Z,Le=t((()=>{u(),i(),b(),v(),Fe(),Z=s(),Ie.__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,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-
|
|
1
|
+
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CMLjY6eW.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-D3IlvJMm.js";import{t as f}from"./mdx-react-shim-DzMf9EAg.js";import{Basic as p,Empty as m,SelectParent as h,n as g,t as _}from"./TreeSelect.stories-DK-bK8lu.js";function v(e){let t={code:`code`,h2:`h2`,p:`p`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(o,{of:_,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,b.jsx)(l,{children:`TreeSelect`}),`
|
|
3
3
|
`,(0,b.jsx)(a,{children:`Single-select для выбора одного узла из дерева`}),`
|
|
4
4
|
`,(0,b.jsxs)(t.p,{children:[(0,b.jsx)(t.code,{children:`TreeSelect`}),` подходит для сценариев, где выбор должен происходить по одному узлу, но пользователь работает не с плоским списком, а с иерархией.`]}),`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-
|
|
1
|
+
import{c as e,i as t}from"./preload-helper-B45gAKPr.js";import{pn as n,t as r}from"./iframe-CMLjY6eW.js";import{l as i,n as a,o,r as s,t as c}from"./TreePickerBase-DCR2ymQN.js";function l(e){if(e)return e.code&&e.code!==e.label?`${e.label} · ${e.code}`:e.label}function u({label:e,description:t,disabled:n,placeholder:r=`Выберите значение`,size:a,nodes:o,value:u,onChange:p,query:m,defaultQuery:h,onQuery:g,isLoading:_,error:v,clearable:y=!1}){let b=(0,d.useMemo)(()=>s(o),[o]),x=i(u,b),S=x?b.nodeById.get(x):void 0;return(0,f.jsx)(c,{label:e,description:t,disabled:n,placeholder:r,size:a,nodes:o,selectedIds:x?new Set([x]):new Set,partialIds:new Set,selectionMode:`single`,triggerMode:`search`,selectedSummaryText:l(S),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 d,f,p=t((()=>{d=e(n(),1),o(),a(),f=r(),u.__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}}},composes:[`Omit`]}}));export{p as n,u as t};
|
package/storybook-static/assets/{TreeSelect.stories-CYGNCQFi.js → TreeSelect.stories-DK-bK8lu.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-
|
|
1
|
+
import{a as e,c as t,i as n}from"./preload-helper-B45gAKPr.js";import{pn as r,t as i}from"./iframe-CMLjY6eW.js";import{n as a,t as o}from"./TreeSelect-Dp9cZxwB.js";import{n as s,t as c}from"./treeStoryFixtures-Cd984L7t.js";var l=e({Basic:()=>m,Empty:()=>g,SelectParent:()=>h,__namedExportsOrder:()=>_,default:()=>p});function u({initialValue:e,label:t=`TreeSelect`,description:n}){let[r,i]=(0,d.useState)(e);return(0,f.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:520},children:[(0,f.jsx)(o,{label:t,description:n,nodes:c,value:r,onChange:i}),(0,f.jsxs)(`div`,{style:{fontSize:`var(--font-size-sm)`,color:`var(--content-1)`},children:[`Текущее значение: `,r?`${r.codeKey}=${r.value}`:`пусто`]})]})}var d,f,p,m,h,g,_,v=n((()=>{d=t(r(),1),a(),s(),f=i(),p={title:`Shared/UI/TreeSelect`,component:o,parameters:{atomicCanvas:!0,layout:`padded`},args:{label:`Выбор узла`,description:`Single-select поверх дерева. Можно выбрать любой узел.`,nodes:c,value:void 0,onChange:()=>{}},argTypes:{nodes:{control:!1},value:{control:!1},onChange:{control:!1}}},m={render:()=>(0,f.jsx)(u,{initialValue:{codeKey:`BRANCH`,value:`B0101`}})},h={render:()=>(0,f.jsx)(u,{label:`Выбор родителя`,description:`Проверка single-select сценария, когда выбирается не leaf, а промежуточный узел.`,initialValue:{codeKey:`REGION`,value:`R01`}})},g={args:{nodes:[],description:`Состояние без доступных узлов.`}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
render: () => <StatefulTreeSelect initialValue={{
|
|
3
3
|
codeKey: "BRANCH",
|
|
4
4
|
value: "B0101"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-
|
|
1
|
+
import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-CMLjY6eW.js";import{E as n,a as r,d as i,f as a,l as o,m as s,n as c,p as l,r as u,u as d}from"./blocks-D3IlvJMm.js";import{t as f}from"./mdx-react-shim-DzMf9EAg.js";import{Basic as p,CollapsedByDefault as m,Empty as h,Fetching as g,Loading as _,MultiSelect as v,WithDefaultExpandedBranch as y,WithDisabledRows as b,WithFormattedTreeColumn as x,WithFormulaColumn as S,WithHiddenZero as C,WithMergedDuplicates as w,WithODataMetadataAdapter as T,WithUseODataTableColumnsBuildHook as E,WithUseODataTableColumnsEnrichHook as D,n as O,t as k}from"./TreeTable.stories-GziVUTaf.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)(o,{of:k,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,M.jsx)(l,{children:`TreeTable`}),`
|
|
3
3
|
`,(0,M.jsx)(a,{children:`Древовидная таблица для плоских OData-данных на базе TanStack Table`}),`
|
|
4
4
|
`,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`TreeTable`}),` предназначен для сценариев, где данные приходят плоским списком, но в UI должны выглядеть как дерево.
|