@ryuzaki13/react-foundation-ui 3.8.3 → 3.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/base-table/index.js +1 -1
- package/dist/base-table/ui/BaseTable.d.ts +9 -1
- package/dist/base-table/ui/BaseTable.d.ts.map +1 -1
- package/dist/chunks/{TextEditorLexicalClient-U-sTxmCU.js → TextEditorLexicalClient-BQH41FFT.js} +2 -2
- package/dist/chunks/{TextEditorLexicalClient-U-sTxmCU.js.map → TextEditorLexicalClient-BQH41FFT.js.map} +1 -1
- package/dist/chunks/{base-table-BMesCx6H.js → base-table-CacTH3BE.js} +130 -112
- package/dist/chunks/base-table-CacTH3BE.js.map +1 -0
- package/dist/chunks/{context-menu-CrSXJxQL.js → context-menu-BV8636Ou.js} +2 -2
- package/dist/chunks/{context-menu-CrSXJxQL.js.map → context-menu-BV8636Ou.js.map} +1 -1
- package/dist/chunks/{date-input-CzCDou4s.js → date-input-B7iG9cA7.js} +2 -2
- package/dist/chunks/{date-input-CzCDou4s.js.map → date-input-B7iG9cA7.js.map} +1 -1
- package/dist/chunks/{input-CuRK9Vbz.js → input-KXI7o06g.js} +7 -7
- package/dist/chunks/input-KXI7o06g.js.map +1 -0
- package/dist/chunks/{input-files-B8j6Pb_M.js → input-files-CnBNlJo0.js} +2 -2
- package/dist/chunks/{input-files-B8j6Pb_M.js.map → input-files-CnBNlJo0.js.map} +1 -1
- package/dist/chunks/{picker-SJXnHwsj.js → picker-DagDe9OH.js} +17 -16
- package/dist/chunks/picker-DagDe9OH.js.map +1 -0
- package/dist/chunks/select-C-1U-ujV.js +368 -0
- package/dist/chunks/select-C-1U-ujV.js.map +1 -0
- package/dist/chunks/table-Cx__DvpN.js +154 -0
- package/dist/chunks/table-Cx__DvpN.js.map +1 -0
- package/dist/context-menu/index.js +1 -1
- package/dist/date-input/index.js +1 -1
- package/dist/date-time-input/index.js +1 -1
- package/dist/drop-zone/index.js +1 -1
- package/dist/image/index.js +2 -2
- package/dist/input/Input.d.ts +2 -2
- package/dist/input/Input.d.ts.map +1 -1
- package/dist/input/index.js +1 -1
- package/dist/input-date-time/index.js +1 -1
- package/dist/input-file/index.js +1 -1
- package/dist/input-files/index.js +1 -1
- package/dist/input-image/index.js +1 -1
- package/dist/input-search/index.js +1 -1
- package/dist/layout-picker/index.js +1 -1
- package/dist/listbox/index.js +1 -1
- package/dist/multi-select/index.js +171 -161
- package/dist/multi-select/index.js.map +1 -1
- package/dist/multi-select/ui/DeprecatedMultiSelect.d.ts +2 -0
- package/dist/multi-select/ui/DeprecatedMultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/MultiSelect.d.ts +3 -0
- package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/MultiSelectCore.d.ts +1 -1
- package/dist/multi-select/ui/MultiSelectCore.d.ts.map +1 -1
- package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/ODataMultiSelect.d.ts +5 -2
- package/dist/multi-select/ui/ODataMultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/SerializableMultiSelect.d.ts +3 -1
- package/dist/multi-select/ui/SerializableMultiSelect.d.ts.map +1 -1
- package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts +4 -0
- package/dist/odata-dependent/ODataDependentSegmentControlProps.d.ts.map +1 -1
- package/dist/period-select/PeriodSelect.d.ts +2 -0
- package/dist/period-select/PeriodSelect.d.ts.map +1 -1
- package/dist/period-select/index.js.map +1 -1
- package/dist/picker/PickerField.d.ts +1 -1
- package/dist/picker/PickerField.d.ts.map +1 -1
- package/dist/picker/PickerTriggerInput.d.ts.map +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/picker/types.d.ts +2 -0
- package/dist/picker/types.d.ts.map +1 -1
- package/dist/preset-range-date-input/index.js +1 -1
- package/dist/preset-select/PresetSelect.d.ts +2 -0
- package/dist/preset-select/PresetSelect.d.ts.map +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/preset-select/index.js.map +1 -1
- package/dist/select/ODataDependentSegmentSelect.d.ts.map +1 -1
- package/dist/select/ODataSelect.d.ts +3 -1
- package/dist/select/ODataSelect.d.ts.map +1 -1
- package/dist/select/Select.d.ts +3 -0
- package/dist/select/Select.d.ts.map +1 -1
- package/dist/select/SerializableSelect.d.ts +3 -1
- package/dist/select/SerializableSelect.d.ts.map +1 -1
- package/dist/select/index.js +1 -1
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/index.js +2 -2
- package/dist/state-select/StateSelect.d.ts +3 -1
- package/dist/state-select/StateSelect.d.ts.map +1 -1
- package/dist/state-select/index.js +10 -8
- package/dist/state-select/index.js.map +1 -1
- package/dist/table/Table.d.ts +10 -1
- package/dist/table/Table.d.ts.map +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table-editor/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tag-input/index.js +1 -1
- package/dist/text-editor/index.js +1 -1
- package/dist/textarea/index.js +1 -1
- package/dist/tree-select/ODataTreeMultiSelect.d.ts +3 -1
- package/dist/tree-select/ODataTreeMultiSelect.d.ts.map +1 -1
- package/dist/tree-select/ODataTreeSelect.d.ts +3 -1
- package/dist/tree-select/ODataTreeSelect.d.ts.map +1 -1
- package/dist/tree-select/TreeMultiSelect.d.ts +4 -1
- package/dist/tree-select/TreeMultiSelect.d.ts.map +1 -1
- package/dist/tree-select/TreePickerBase.d.ts +3 -1
- package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
- package/dist/tree-select/TreeSelect.d.ts +4 -1
- package/dist/tree-select/TreeSelect.d.ts.map +1 -1
- package/dist/tree-select/index.js +271 -259
- package/dist/tree-select/index.js.map +1 -1
- package/dist/tree-table/index.js +1 -1
- package/package.json +1 -1
- package/storybook-static/assets/{Badge-Exgo2liR.js → Badge-DxGi2POg.js} +1 -1
- package/storybook-static/assets/{Badge.stories-BSZPB2hP.js → Badge.stories-D6Em1fN8.js} +1 -1
- package/storybook-static/assets/{BadgeList-vXAflISJ.js → BadgeList-DemBuxUQ.js} +1 -1
- package/storybook-static/assets/{BarcodeScannerDialog.stories-B5JJTqxe.js → BarcodeScannerDialog.stories-Bxnb0wH3.js} +1 -1
- package/storybook-static/assets/{Button-W5ftYk1w.js → Button-9vGUTM3m.js} +1 -1
- package/storybook-static/assets/{Button-BzRtAjtM.js → Button-dlGIhkja.js} +1 -1
- package/storybook-static/assets/{Button.stories-DcuEJMqp.js → Button.stories-WOE1_ovM.js} +1 -1
- package/storybook-static/assets/{CalendarView-C8taheM_.js → CalendarView-Co2EiQf9.js} +1 -1
- package/storybook-static/assets/{CheckBox-Cahw6EU8.js → CheckBox-CwJshQX2.js} +1 -1
- package/storybook-static/assets/{CheckBox-C-EWY4_-.js → CheckBox-Dpg2QsvS.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-DL49eu_s.js → CheckBox.stories-K8wng7-q.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-B0iuSBAP.js → Color-6AOWCN3U-D-64SqRn.js} +1 -1
- package/storybook-static/assets/{ContextMenu-k1Mubm6h.js → ContextMenu-C1zzFMni.js} +1 -1
- package/storybook-static/assets/{ContextMenu-DqLKk-wW.js → ContextMenu-DbmUWR4I.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-CNnrfTxO.js → ContextMenu.stories-D0tclMo1.js} +1 -1
- package/storybook-static/assets/{DateInput-CgBBiqYK.js → DateInput-BDxg1E80.js} +1 -1
- package/storybook-static/assets/{DateInput-NSuuc0Vu.js → DateInput-DxpENevn.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-eWY9Pqwp.js → DateInput.stories-De_AOkrK.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-Ch6rsktY.js → DateRangePresetSelect-CD7jNInU.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-DibXoV_U.js → DateRangePresetSelect-CD8qu2LL.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-B8yndfPd.js → DateRangePresetSelect.stories-phHkk3Q1.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect-1K4GSVRr.js → DeprecatedMultiSelect-B4VEjiTj.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect-D8BCr3qw.js → DeprecatedMultiSelect-Bdv505U3.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect.stories-DH7fIprL.js → DeprecatedMultiSelect.stories-DdPzDJjx.js} +1 -1
- package/storybook-static/assets/{Detail-CzQ7DLhL.js → Detail-BoazSWw_.js} +1 -1
- package/storybook-static/assets/{Detail.stories-DzmSAGkt.js → Detail.stories-Cc9fEkdx.js} +1 -1
- package/storybook-static/assets/{Dialog-Cm7gLcJI.js → Dialog-VJ62BLtp.js} +1 -1
- package/storybook-static/assets/{Dialog-DEDDnDtQ.js → Dialog-ieE9mpAU.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-BzvBjaiX.js → Dialog.stories-CUyAMGoD.js} +1 -1
- package/storybook-static/assets/{Disclosure-Bpji7KuP.js → Disclosure-BP8VhRCA.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-Bwuzf5fl.js → Disclosure.stories-DwIo-o1J.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-bCpsF5YE.js → DisclosureGroup-LjgDW-Z6.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-DQRIOLjc.js → DocsRenderer-JROSPFPF-BjRaiNDG.js} +1 -1
- package/storybook-static/assets/{DropZone-Diu_Hlgs.js → DropZone-BMT4jv2L.js} +1 -1
- package/storybook-static/assets/{DropZone-qvCLdJmm.js → DropZone-Dg3GZxY8.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-DHgexefI.js → DropZone.stories-szOGIPHx.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-Bl2IPF3Q.js → DropdownMenu-B0EI5ePH.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-B3iQGrX8.js → ExpandableActionPanel-D_qy2JID.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-DRnMPxSP.js → ExpandableActionPanel.stories-wdmlBDmK.js} +1 -1
- package/storybook-static/assets/{Flex-CrWmRoxc.js → Flex-DYXuexPG.js} +1 -1
- package/storybook-static/assets/{Flex.stories-Db20If9k.js → Flex.stories-DH1BReS-.js} +1 -1
- package/storybook-static/assets/{FlexContainer-YYPiKtpT.js → FlexContainer-DO3X5f_1.js} +1 -1
- package/storybook-static/assets/{FlexItem-CXY6tvoB.js → FlexItem-BE_4juAd.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-DSRofmW2.js → FloatingPopover-DHxMCBdS.js} +1 -1
- package/storybook-static/assets/FormattedTableCell-BfEiCYOi.js +15 -0
- package/storybook-static/assets/{Grid-CUmJniwF.js → Grid-0NnWfTJ7.js} +1 -1
- package/storybook-static/assets/{Grid-Ad2q9giD.js → Grid-ChS0GzNg.js} +1 -1
- package/storybook-static/assets/{Grid.stories-CsohhjMJ.js → Grid.stories-ClZzgSfZ.js} +1 -1
- package/storybook-static/assets/{GridContainer-DfZnU_h-.js → GridContainer-BHSfIiml.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-Bdg7E1B6.js → ImageCropper.stories-Cf5ogf7p.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-DEsg7Nf5.js → ImageRenderer-CsN1-IP6.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-C2uPYFbK.js → ImageRenderer.stories-DIC-UR-l.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-qFIo_3jG.js → ImageView.stories-DT6QZR-1.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-D6RoxWRG.js → ImageViewer.stories-DxpCKbpk.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-DEVRfnpp.js → ImageViewerRuntime-COhNh4_y.js} +1 -1
- package/storybook-static/assets/{Input-CXSVW4qb.js → Input-BJ3sPHt1.js} +1 -1
- package/storybook-static/assets/Input-D2eqioLp.js +3 -0
- package/storybook-static/assets/{Input.stories-CKUo8mda.js → Input.stories-MtAx6H2F.js} +1 -1
- package/storybook-static/assets/{InputDateTime-CBgevl2k.js → InputDateTime-CNNqhoo6.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-Dc_yRirT.js → InputDateTime.stories-DT3CvxRy.js} +1 -1
- package/storybook-static/assets/{InputFile-BX9qIipq.js → InputFile-DiI_0QV5.js} +1 -1
- package/storybook-static/assets/{InputFile-VkGuvstd.js → InputFile-RfdomZEH.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-VernHNAn.js → InputFile.stories-CiqGBnkS.js} +1 -1
- package/storybook-static/assets/{InputFiles-CRFuNd-6.js → InputFiles-CBrPDNlV.js} +1 -1
- package/storybook-static/assets/{InputFiles-BpSb2G11.js → InputFiles-CgyVXpI1.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-CfrGV2lA.js → InputFiles.stories-QHNxJjiV.js} +1 -1
- package/storybook-static/assets/{InputFilesList-BoL4jQmC.js → InputFilesList-BEIBTAEK.js} +1 -1
- package/storybook-static/assets/{InputImage-BKfXCZHx.js → InputImage-BBJr8TWl.js} +1 -1
- package/storybook-static/assets/{InputImage-BcUm7aKp.js → InputImage-vXbhnE46.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-l1xnaTXn.js → InputImage.stories-VoVU0QZB.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-DKix-b3k.js → InteractiveComponents-CjkX3vU6.js} +5 -5
- package/storybook-static/assets/{InteractiveComponents.stories-CK118Tbj.js → InteractiveComponents.stories-Gc_Ju4xJ.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-Ca57uusp.js → LayoutPicker-DwpDr_Is.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-BqI2-D2r.js → LayoutPicker-ONnrtLDR.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-BDRBBnj-.js → LayoutPicker.stories-B-HIq6DD.js} +1 -1
- package/storybook-static/assets/{Listbox-lrvI9Fx9.js → Listbox-DoF5nZIP.js} +1 -1
- package/storybook-static/assets/{Listbox-D_Qgzkw1.js → Listbox-XIi0yHgl.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-Djb1uju9.js → Listbox.stories-DT8FJQ3z.js} +1 -1
- package/storybook-static/assets/{Modal-CLZFIZH2.js → Modal-C3F4r2UA.js} +1 -1
- package/storybook-static/assets/{Modal-BpqYaQXu.js → Modal-Ml7EuSvu.js} +1 -1
- package/storybook-static/assets/{Modal.stories-DNpMq9oL.js → Modal.stories-DRwnYxst.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-DMlNCo5h.js → ModalManagerProvider-CmqdB_ni.js} +1 -1
- package/storybook-static/assets/MultiSelect-B1QokJ3C.js +79 -0
- package/storybook-static/assets/{MultiSelect-C593f3VV.js → MultiSelect-CAg-L0dM.js} +1 -1
- package/storybook-static/assets/MultiSelect.stories-Dfh2Lp0N.js +81 -0
- package/storybook-static/assets/MultiSelectCore-GRGtCBO1.js +3 -0
- package/storybook-static/assets/{NoData-Bvl_1jH4.js → NoData-BZhNhaYV.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-CdPm_hcB.js → NotificationsHost-BUPLrDM3.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-Bo_dwZZe.js → NotificationsHost.stories-CKbR-_nq.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-BVlJ8U90.js → ODataMultiSelect-CDW0B1az.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-CqHpctYU.js → ODataMultiSelect.stories-BbKrxs7t.js} +1 -1
- package/storybook-static/assets/{ODataSelect-BCl-z6Sg.js → ODataSelect-C5G0dCnn.js} +1 -1
- package/storybook-static/assets/ODataSelect.stories-DcX50cyD.js +148 -0
- package/storybook-static/assets/{ODataTreeMultiSelect-1CrmEPOx.js → ODataTreeMultiSelect-4mTjhnlJ.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-B2YMNMyr.js → ODataTreeMultiSelect.stories-B-4UUg5l.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-BqP9H4QH.js → ODataTreeSelect-D-wcx2OH.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-x_GCdGW8.js → ODataTreeSelect.stories-uB_sG4ga.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-B1H-Yg0P.js → OneStepScroller-DQI5POnJ.js} +1 -1
- package/storybook-static/assets/{Option-ChGr-plg.js → Option-CrEWqsFF.js} +1 -1
- package/storybook-static/assets/{OptionButton-D6mT04a1.js → OptionButton-BEQ2oSPf.js} +1 -1
- package/storybook-static/assets/{OptionContent-CXc6K3fK.js → OptionContent-C8S7IjI3.js} +1 -1
- package/storybook-static/assets/{OptionContentContainer-D0p7mbft.js → OptionContentContainer-ljQts_jY.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-Bm9WdjpG.js → PeriodSelect-BTdDU06N.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-CpnYgcOA.js → PeriodSelect-DuqatGdk.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-4Im6GLjq.js → PeriodSelect.stories-CX4DSFJG.js} +1 -1
- package/storybook-static/assets/PickerField-Cgcm-Y5T.js +1 -0
- package/storybook-static/assets/{PickerTriggerActions-BCupttoF.js → PickerTriggerActions-DWe2uX0K.js} +1 -1
- package/storybook-static/assets/{Popover-CbgP8DJy.js → Popover-0QfSvwRS.js} +1 -1
- package/storybook-static/assets/{Popover-CCHTXorF.js → Popover-C55I0GTn.js} +1 -1
- package/storybook-static/assets/{Popover.stories-zZ2fYcQb.js → Popover.stories-Bgjomdgb.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-D-Xf5CL3.js → PresetRangeDateInput-C-vQa5BZ.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-cmWbFoHz.js → PresetRangeDateInput-Cai5fvRb.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-C3VxU77P.js → PresetRangeDateInput.stories-CWtIukRG.js} +1 -1
- package/storybook-static/assets/{PresetSelect-BmTJNeUt.js → PresetSelect-HqtmoRLb.js} +2 -2
- package/storybook-static/assets/{README-DVPc9Io_.js → README-2lBx3R6g.js} +1 -1
- package/storybook-static/assets/{README-CXLnU8PY.js → README-B1IMnjhg.js} +1 -1
- package/storybook-static/assets/{README-Cu9QJjVK.js → README-B41_J33v.js} +1 -1
- package/storybook-static/assets/{README-Iwf47F8s.js → README-B5Lc1yT4.js} +1 -1
- package/storybook-static/assets/{README-Dv4LnFqu.js → README-B5wBU6mA.js} +1 -1
- package/storybook-static/assets/{README-DFF21yas.js → README-B8RrtmaZ.js} +1 -1
- package/storybook-static/assets/{README-T35eDlrl.js → README-BEypAdTE.js} +1 -1
- package/storybook-static/assets/{README-BRE26E-6.js → README-BFjx8Jxa.js} +1 -1
- package/storybook-static/assets/{README-UcG-T3oc.js → README-BHrzFd3i.js} +1 -1
- package/storybook-static/assets/{README-C_zVigpw.js → README-BNLmyDfy.js} +1 -1
- package/storybook-static/assets/{README-zF7TglyH.js → README-BRJHDPaP.js} +1 -1
- package/storybook-static/assets/{README-3VGZSgWz.js → README-BTk3TSh8.js} +1 -1
- package/storybook-static/assets/{README-CaZGDS4o.js → README-BUKlvu1v.js} +1 -1
- package/storybook-static/assets/{README-BW8ukk_3.js → README-BgbNoj4_.js} +1 -1
- package/storybook-static/assets/{README-DcMAIy3x.js → README-BhvWyeL_.js} +1 -1
- package/storybook-static/assets/{README-BZW-Ku8G.js → README-Bk6x-7we.js} +1 -1
- package/storybook-static/assets/{README-BcSaq4c4.js → README-BkFTTVE2.js} +1 -1
- package/storybook-static/assets/{README-IkL3xuvr.js → README-Bl1rJEQE.js} +1 -1
- package/storybook-static/assets/{README-jg6CIybs.js → README-BqMpFJKP.js} +1 -1
- package/storybook-static/assets/{README-BsvaCxyJ.js → README-Brd9di5k.js} +1 -1
- package/storybook-static/assets/{README-Bl2m1JMK.js → README-BzIE9gSk.js} +1 -1
- package/storybook-static/assets/{README-DEOe-D4O.js → README-C1BajdmC.js} +1 -1
- package/storybook-static/assets/{README-DXajBW2j.js → README-C2xdMez4.js} +1 -1
- package/storybook-static/assets/{README-CZciBX1A.js → README-C6ryhIOV.js} +1 -1
- package/storybook-static/assets/{README-vCy3YlCq.js → README-C702dbsS.js} +1 -1
- package/storybook-static/assets/{README-DkgiAGPo.js → README-C8oftQ5c.js} +1 -1
- package/storybook-static/assets/{README-Bfp-2y9L.js → README-CM5yZ6jf.js} +1 -1
- package/storybook-static/assets/{README-B3bdpv3F.js → README-CUUPvXQd.js} +1 -1
- package/storybook-static/assets/{README-B_TP46xP.js → README-CdMmAh_G.js} +1 -1
- package/storybook-static/assets/{README-BfbEWAVW.js → README-CdnQbIDn.js} +1 -1
- package/storybook-static/assets/{README-D7IHIZJQ.js → README-ClH6EKpO.js} +1 -1
- package/storybook-static/assets/{README-5uy1ulgc.js → README-CxEn3Q3j.js} +1 -1
- package/storybook-static/assets/{README-CLTYPp6T.js → README-CxMmicr4.js} +1 -1
- package/storybook-static/assets/{README-DnkVTJ7s.js → README-CxsbsDff.js} +1 -1
- package/storybook-static/assets/{README-BiyBf-O3.js → README-DAozVWEl.js} +1 -1
- package/storybook-static/assets/{README-BkJ_PjJk.js → README-DBpH2nf1.js} +1 -1
- package/storybook-static/assets/{README-HRwASuVm.js → README-DF3qw7Jo.js} +1 -1
- package/storybook-static/assets/{README-BeMdGWkW.js → README-DFGUcAOx.js} +1 -1
- package/storybook-static/assets/{README-EmDsFxzc.js → README-DUShQLyj.js} +1 -1
- package/storybook-static/assets/{README-CnX5IOsQ.js → README-DfVaZ9rz.js} +1 -1
- package/storybook-static/assets/{README-DEtA9vXg.js → README-DitsKP8x.js} +1 -1
- package/storybook-static/assets/{README-CwqRXSIJ.js → README-Dk7syFq-.js} +1 -1
- package/storybook-static/assets/{README-BC4nu9of.js → README-DlBBM40-.js} +1 -1
- package/storybook-static/assets/{README-CjwMWiHf.js → README-DycS0KDV.js} +1 -1
- package/storybook-static/assets/{README-BMXu-jQk.js → README-QWeHqOh2.js} +1 -1
- package/storybook-static/assets/{README-xMu2rAZ4.js → README-QZrJnhYv.js} +1 -1
- package/storybook-static/assets/{README-k2-wWcjY.js → README-RGQ7HMZR.js} +1 -1
- package/storybook-static/assets/{README-B7kN5fdq.js → README-SafL9Bz5.js} +1 -1
- package/storybook-static/assets/{README-lHhj1ioe.js → README-UC0a4Wh9.js} +1 -1
- package/storybook-static/assets/{README-C4vu077M.js → README-_K214jGV.js} +1 -1
- package/storybook-static/assets/{README-Bf9aqOSG.js → README-eRuOqnaA.js} +1 -1
- package/storybook-static/assets/{README-DLtEU6xV.js → README-kvlO41U2.js} +1 -1
- package/storybook-static/assets/{README-Bc63jJ_g.js → README-mxJzt2Xo.js} +1 -1
- package/storybook-static/assets/{RadioButton-Cy_jQtud.js → RadioButton-BKsBk3--.js} +1 -1
- package/storybook-static/assets/{RadioButton-BBfQWcy3.js → RadioButton-CsM-RT0A.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-9V4bon68.js → RadioButton.stories-D5PGiHj5.js} +1 -1
- package/storybook-static/assets/{RadioGroup-TwFpisuE.js → RadioGroup-B3bLu8Qg.js} +1 -1
- package/storybook-static/assets/{RadioGroup-BndgLwX8.js → RadioGroup-BZY_jeje.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-DJLxesgz.js → RadioGroup.stories-DMfcZFp0.js} +1 -1
- package/storybook-static/assets/{Scrollable-DtB02dAG.js → Scrollable-DLyQwImF.js} +1 -1
- package/storybook-static/assets/{Scrollable-pBI6H_we.js → Scrollable-DdXQmkMU.js} +1 -1
- package/storybook-static/assets/{Scrollable.stories-CahJ5rFA.js → Scrollable.stories-Du5joHAp.js} +1 -1
- package/storybook-static/assets/Select-8PYQeQRR.js +66 -0
- package/storybook-static/assets/Select-CT_wwcDN.js +12 -0
- package/storybook-static/assets/Select.stories-DIqia2Hb.js +86 -0
- package/storybook-static/assets/{Separator-BdOz35ux.js → Separator-CelBAATq.js} +1 -1
- package/storybook-static/assets/{Separator-BQlVHMcy.js → Separator-DJ93-Cvq.js} +1 -1
- package/storybook-static/assets/{Separator.stories-DRmR0Kda.js → Separator.stories-DBEDpiqL.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-ClSz_VvD.js → SerializableSelect-C-00d6wC.js} +1 -1
- package/storybook-static/assets/SerializableSelect.stories-CP7fJBNa.js +73 -0
- package/storybook-static/assets/{ShimmerText-CuhrU7uk.js → ShimmerText-qA7CslLE.js} +1 -1
- package/storybook-static/assets/{ShimmerText.stories-Djb6DvbN.js → ShimmerText.stories-CiGIbhCm.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-hC1Ft3qs.js → SingleDateTimeInput-B7tnYWQl.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-C4jzvJ05.js → SingleDateTimeInput-DJ2vRS9H.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-D-HmSpnz.js → SingleDateTimeInput.stories-BK59HKLf.js} +1 -1
- package/storybook-static/assets/{Slider-u0qKNrgI.js → Slider-CXcIxUE3.js} +1 -1
- package/storybook-static/assets/{Slider-WLUfmHyw.js → Slider-Cm6kd77G.js} +1 -1
- package/storybook-static/assets/{Slider.stories-CX8fS5Ax.js → Slider.stories-BuhFWvUX.js} +1 -1
- package/storybook-static/assets/{SliderInput-BEirf0Ys.js → SliderInput-DI2h4X8P.js} +1 -1
- package/storybook-static/assets/{SliderInput-ibTyal5l.js → SliderInput-DpmYS5Zb.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-xuycnRN_.js → SliderInput.stories-CLdLS0_8.js} +1 -1
- package/storybook-static/assets/{Sortable-p0kUHa8E.js → Sortable-CpjAZLxn.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-BdCtmfnr.js → Sortable.stories-Ck2MHBoR.js} +1 -1
- package/storybook-static/assets/{Splitter-BzAg1cZ0.js → Splitter-Cpk_5dTf.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-C5zZ4lHf.js → Splitter.stories-BIf9NNWq.js} +1 -1
- package/storybook-static/assets/{StateSelect-CyjHfKNv.js → StateSelect-BznE9WIu.js} +1 -1
- package/storybook-static/assets/StateSelect-C5tnrhWT.js +4 -0
- package/storybook-static/assets/{StateSelect.stories-D94g21N9.js → StateSelect.stories-DLvSnAcF.js} +1 -1
- package/storybook-static/assets/{StatusIndicator-ylfiroPh.js → StatusIndicator-vJAPPq2m.js} +1 -1
- package/storybook-static/assets/{StatusIndicator.stories-BB7y4KGW.js → StatusIndicator.stories-B7PGK2_C.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-BwuTZAGa.js → StringToggle.stories-DBpxJZL-.js} +1 -1
- package/storybook-static/assets/{Switch-BXWiUOXs.js → Switch-BkTvYjyQ.js} +1 -1
- package/storybook-static/assets/{Switch-DRLWRp0P.js → Switch-DlRrk6o7.js} +1 -1
- package/storybook-static/assets/{Switch.stories-taC_bi5a.js → Switch.stories-BtctkC2W.js} +1 -1
- package/storybook-static/assets/Table-xOdM6spm.js +219 -0
- package/storybook-static/assets/Table.stories-FORIU5CX.js +184 -0
- package/storybook-static/assets/{TableEditor.stories-CG0ULNok.js → TableEditor.stories-GU46gl20.js} +1 -1
- package/storybook-static/assets/{Tabs-BYp06IN2.js → Tabs-Cg_IYAXs.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-BCkUYsqs.js → Tabs.stories-2cS0B94o.js} +1 -1
- package/storybook-static/assets/{TabsBox-DBm2a1iA.js → TabsBox-Dz3AsaoR.js} +1 -1
- package/storybook-static/assets/{TagInput-D9gedxBU.js → TagInput-CCTgbRhQ.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-6eOGQ16t.js → TagInput.stories-CevhCeXY.js} +1 -1
- package/storybook-static/assets/{Text-CcgH9LXI.js → Text-CDCeYwIB.js} +1 -1
- package/storybook-static/assets/{Textarea-DXOTj2Y7.js → Textarea-Ba4MyNoY.js} +1 -1
- package/storybook-static/assets/{Textarea-aGrLpQXu.js → Textarea-CNsrFSip.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-BwqxG2lk.js → Textarea.stories-laVFWVXL.js} +1 -1
- package/storybook-static/assets/{TimePanel-DroAbbvD.js → TimePanel-Ddy67nzH.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-DgU6ia4A.js → TimePanel.stories-OLefy0XD.js} +1 -1
- package/storybook-static/assets/{Toggle-BUSzQ1ww.js → Toggle-BGbyfmSW.js} +1 -1
- package/storybook-static/assets/{Toggle-B7MbU9HB.js → Toggle-BlCBtQd1.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-BYU9hS62.js → Toggle.stories-BjeTDL90.js} +1 -1
- package/storybook-static/assets/TreeMultiSelect-BJnAzsFO.js +1 -0
- package/storybook-static/assets/TreeMultiSelect-ZVSLdnCU.js +22 -0
- package/storybook-static/assets/TreeMultiSelect.stories-BJOtdIDe.js +68 -0
- package/storybook-static/assets/TreePickerBase-BQKfhufH.js +76 -0
- package/storybook-static/assets/TreeSelect-BSr4FMlq.js +1 -0
- package/storybook-static/assets/TreeSelect-DSHQjGD1.js +19 -0
- package/storybook-static/assets/TreeSelect.stories-GRcEv-kN.js +40 -0
- package/storybook-static/assets/{TreeTable-AIcYVdfl.js → TreeTable-CzmxD2ee.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-BKbbLMK7.js → TreeTable.stories-35ufhVh1.js} +1 -1
- package/storybook-static/assets/{array-D-_yMMUK-DnJ_b27D.js → array-D-_yMMUK-BBmW5vUr.js} +1 -1
- package/storybook-static/assets/{blocks-Bdsl8TP-.js → blocks-SX-KK9Lg.js} +3 -3
- package/storybook-static/assets/{check-DGqyuB4O.js → check-BYM7OgKl.js} +1 -1
- package/storybook-static/assets/{chevron-down-BykqjXRq.js → chevron-down-Mu7usNfR.js} +1 -1
- package/storybook-static/assets/{chevron-left-Z5uCO076.js → chevron-left-CiOR-CGA.js} +1 -1
- package/storybook-static/assets/{chevron-right-C8yfwmkk.js → chevron-right-5Rrk5UhO.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-hfBk2z5K.js → chunk-W22LQPXL-Cj8Y9DHq.js} +1 -1
- package/storybook-static/assets/{circle-alert-C9sxb8DT.js → circle-alert-BXB7LSDS.js} +1 -1
- package/storybook-static/assets/{circle-check-BLrYJ_8h.js → circle-check-DrVuYn1Q.js} +1 -1
- package/storybook-static/assets/{components-xYnqEbBt.js → components-BEDJAYMp.js} +3 -3
- package/storybook-static/assets/{contextMenu-C-b4jBpY.js → contextMenu-BaB_e0Tl.js} +1 -1
- package/storybook-static/assets/{download-g1fk8W6J.js → download-W-Vr_TI7.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-cCWtY5RA.js → floating-ui.react-BTEwHffF.js} +1 -1
- package/storybook-static/assets/{formatMultiSelectOptionCount-xGq1uM2H.js → formatMultiSelectOptionCount-BxXwE0wd.js} +1 -1
- package/storybook-static/assets/{formatters-DVE1YVNQ-YIdRxgw-.js → formatters-DVE1YVNQ-CJCkXjuI.js} +1 -1
- package/storybook-static/assets/{foundationApi-Ci5vPKh_.js → foundationApi-BcoJ1zeX.js} +1 -1
- package/storybook-static/assets/{foundationLib-DNlIsEyf.js → foundationLib-B2kQ07LT.js} +1 -1
- package/storybook-static/assets/{hooks-XqeLihmr.js → hooks-BgMXxXbY.js} +1 -1
- package/storybook-static/assets/{iframe-ltYEol2F.js → iframe-CU98mtpe.js} +3 -3
- package/storybook-static/assets/iframe-DaZCH1M-.js +1 -0
- package/storybook-static/assets/{info-CBSXRv7d.js → info-BhHmytIH.js} +1 -1
- package/storybook-static/assets/{odata-Dd_3_5NS.js → odata-yWIAioh9.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-3lOfs9T6.js → odataStoryFixtures-CnZ_YrUb.js} +1 -1
- package/storybook-static/assets/{react-BxWB81Qy.js → react-C2mSveWL.js} +1 -1
- package/storybook-static/assets/{refresh-cw-FKHfW9eG.js → refresh-cw-D8_L8K4Y.js} +1 -1
- package/storybook-static/assets/{settings-2-Cz1PtqGa.js → settings-2-jWGaWGT0.js} +1 -1
- package/storybook-static/assets/{sortable-BelHSus7.js → sortable-BteEe6X0.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-gGot_qSq.js → syntaxhighlighter-QEQV7K2Y-eEu1MRSg.js} +1 -1
- package/storybook-static/assets/{trash-2-BT2kW3r-.js → trash-2-CwmbYA8i.js} +1 -1
- package/storybook-static/assets/{triangle-alert-CPiJJHYc.js → triangle-alert-TRLt6Woa.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-bPN0T_Xm.js → useODataSelectBase-BxHmAh7D.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-CIpE4LZu.js → useODataTreeData-dSt1HJsq.js} +1 -1
- package/storybook-static/assets/{usePickerDefaultFilter-ien2ZY7g.js → usePickerDefaultFilter-Djn1liy6.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-OTz4Oze6.js → usePickerQuery-ByBt1NRd.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-vNC5e_t0.js → usePickerTriggerController-CqdXiV2q.js} +2 -2
- package/storybook-static/assets/{x-BdAuXjBq.js → x-BPRzfyys.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/dist/chunks/base-table-BMesCx6H.js.map +0 -1
- package/dist/chunks/input-CuRK9Vbz.js.map +0 -1
- package/dist/chunks/picker-SJXnHwsj.js.map +0 -1
- package/dist/chunks/select--oIrv7SC.js +0 -357
- package/dist/chunks/select--oIrv7SC.js.map +0 -1
- package/dist/chunks/table-OvvWkKfy.js +0 -141
- package/dist/chunks/table-OvvWkKfy.js.map +0 -1
- package/storybook-static/assets/FormattedTableCell-B-t0D2oX.js +0 -15
- package/storybook-static/assets/Input-b2F0zrLw.js +0 -3
- package/storybook-static/assets/MultiSelect-DmC3DaMc.js +0 -76
- package/storybook-static/assets/MultiSelect.stories-R6JTKnFI.js +0 -64
- package/storybook-static/assets/MultiSelectCore-BaRmQrD-.js +0 -3
- package/storybook-static/assets/ODataSelect.stories-Cm-Xkq40.js +0 -148
- package/storybook-static/assets/PickerField-w1JCZyzA.js +0 -1
- package/storybook-static/assets/Select-BOnv-Uuv.js +0 -63
- package/storybook-static/assets/Select-CClfxa48.js +0 -12
- package/storybook-static/assets/Select.stories-C0X5pvUk.js +0 -69
- package/storybook-static/assets/SerializableSelect.stories-DozN_Quy.js +0 -73
- package/storybook-static/assets/StateSelect-bHA1Vf6z.js +0 -4
- package/storybook-static/assets/Table-BYiIQfjA.js +0 -197
- package/storybook-static/assets/Table.stories-B9u81cAN.js +0 -178
- package/storybook-static/assets/TreeMultiSelect-BhFYUbr0.js +0 -1
- package/storybook-static/assets/TreeMultiSelect-CZIyMaIZ.js +0 -20
- package/storybook-static/assets/TreeMultiSelect.stories-DG_mdSkQ.js +0 -60
- package/storybook-static/assets/TreePickerBase-CbULuQpp.js +0 -76
- package/storybook-static/assets/TreeSelect-CMSolQHr.js +0 -17
- package/storybook-static/assets/TreeSelect-Cu1BsepL.js +0 -1
- package/storybook-static/assets/TreeSelect.stories-B2J0N4ke.js +0 -32
- package/storybook-static/assets/iframe-TsWsvoxA.js +0 -1
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-ltYEol2F.js";import{n as i,t as a}from"./Select-CClfxa48.js";var o=t({ControlledObjects:()=>m,CustomOptionLayout:()=>v,Disabled:()=>y,GroupedOptions:()=>_,Placeholder:()=>g,PrimitiveOptions:()=>h,__namedExportsOrder:()=>b,default:()=>p}),s,c,l,u,d,f,p,m,h,g,_,v,y,b;function x(){return(x=e((()=>{s=n(),i(),c=r(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=[{id:1,name:`Отдел продаж`,code:`SLS`,manager:`Елена Миронова`,direction:`Коммерческий блок`},{id:2,name:`Закупки`,code:`PRC`,manager:`Антон Мелихов`,direction:`Коммерческий блок`},{id:3,name:`Логистика`,code:`LGS`,manager:`Мария Климова`,direction:`Операционный блок`,disabled:!0},{id:4,name:`Поддержка клиентов`,code:`SUP`,manager:`Ирина Белова`,direction:`Операционный блок`}],f=[`Новый`,`В работе`,`Завершён`,`Архив`],p={title:`UI/Select`,component:a,args:{label:`Подразделение`,description:`Выберите подразделение из списка.`,placeholder:`Не выбрано`,value:void 0,options:d,onChange:u(),getOptionKey:e=>e.id,getOptionLabel:e=>e.name,getOptionCode:e=>e.code,getOptionDisabled:e=>e.disabled??!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Низкоуровневый getter-based select. Подходит для произвольных структур данных, примитивов и сложного кастомного рендера. Компонент возвращает наружу саму выбранную option. Для сериализуемых конфигов и сценариев с optionKey/optionLabel используйте SerializableSelect.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда значение ещё не выбрано.`,control:`text`},value:{description:`Текущая выбранная option целиком.`,control:!1},options:{description:`Массив опций любого поддерживаемого формата.`,control:!1},onChange:{description:`Вызывается с выбранной option.`,control:!1},getOptionKey:{description:`Функция получения уникального ключа option.`,control:!1},getOptionLabel:{description:`Функция получения основного текста option.`,control:!1},getOptionCode:{description:`Опциональный рендер дополнительного кода справа.`,control:!1},getOptionDisabled:{description:`Опциональная функция блокировки отдельных option.`,control:!1},getOptionAriaLabel:{description:`Опциональная функция для aria-label option.`,control:!1},getOptionGroup:{description:`Опциональная функция, которая объединяет соседние option под доступным заголовком группы.`,control:!1},getOptionClassName:{description:`Опциональная функция CSS-класса option по её состоянию.`,control:!1},renderOption:{description:`Полностью кастомный рендер option в списке.`,control:!1},renderValue:{description:`Кастомный рендер выбранного значения в кнопке.`,control:!1},optionsMaxWidth:{description:`Максимальная ширина выпадающего списка в любом допустимом CSS-формате.`,control:`text`},buttonClassName:{description:`Класс trigger-кнопки Select без изменения корневого контейнера.`,control:`text`},optionsClassName:{description:`Класс popup со списком option.`,control:`text`},optionsContentClassName:{description:`Класс области содержимого popup, например для особой плотности списка.`,control:`text`},searchable:{description:`Включает поиск по option в trigger-поле.`,control:`boolean`},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},defaultFilter:{description:`Включает встроенную фильтрацию option.`,control:`boolean`},renderPopupHeader:{description:`Дополнительное содержимое над списком option.`,control:!1},emptyState:{description:`Содержимое при пустом списке option.`,control:!1},loadingState:{description:`Содержимое при загрузке option.`,control:!1},errorState:{description:`Содержимое при ошибке загрузки option.`,control:!1},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},placement:{description:`Позиционирование выпадающего списка.`,control:`select`,options:[`bottom-start`,`bottom-end`,`top-start`,`top-end`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},clearable:{description:`Показывает действие очистки выбранной option.`,control:`boolean`}}},m={name:`Объекты`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??d[1],onChange:n=>{e.onChange(n),t({value:n})}})},args:{value:d[1]}},h={name:`Примитивы`,render:()=>{let[e,t]=(0,s.useState)(f[1]);return(0,c.jsx)(a,{label:`Статус`,description:`Пример использования низкоуровневого Select со строковыми значениями.`,placeholder:`Выберите статус`,options:f,value:e,onChange:t,getOptionKey:e=>e,getOptionLabel:e=>e,size:`md`})}},g={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,onChange:n=>{e.onChange(n),t({value:n})}})}},_={name:`Группированные опции`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,onChange:n=>{e.onChange(n),t({value:n})},getOptionGroup:e=>({key:e.direction,label:e.direction}),optionsMaxWidth:`40rem`})}},v={name:`Кастомный рендер`,render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??d[0],onChange:n=>{e.onChange(n),t({value:n})},renderValue:e=>`${e.code} · ${e.name}`,renderOption:(e,t)=>(0,c.jsxs)(c.Fragment,{children:[(0,c.jsxs)(`div`,{className:`flexEllipsis`,children:[(0,c.jsx)(`div`,{children:e.name}),(0,c.jsx)(`div`,{className:`fontSizeSm content2`,children:e.manager})]}),(0,c.jsx)(`div`,{style:{opacity:t.selected?1:.5},children:e.code})]})})}},y={args:{disabled:!0,value:d[0]}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
|
|
2
|
-
name: "Объекты",
|
|
3
|
-
render: function Render(args) {
|
|
4
|
-
const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
|
|
5
|
-
return <Select {...args} value={args.value ?? departmentOptions[1]} onChange={value => {
|
|
6
|
-
args.onChange(value);
|
|
7
|
-
updateArgs({
|
|
8
|
-
value
|
|
9
|
-
});
|
|
10
|
-
}} />;
|
|
11
|
-
},
|
|
12
|
-
args: {
|
|
13
|
-
value: departmentOptions[1]
|
|
14
|
-
}
|
|
15
|
-
}`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
|
|
16
|
-
name: "Примитивы",
|
|
17
|
-
render: () => {
|
|
18
|
-
const [value, setValue] = useState<(typeof primitiveOptions)[number] | undefined>(primitiveOptions[1]);
|
|
19
|
-
return <Select label="Статус" description="Пример использования низкоуровневого Select со строковыми значениями." placeholder="Выберите статус" options={primitiveOptions} value={value} onChange={setValue} getOptionKey={option => option} getOptionLabel={option => option} size="md" />;
|
|
20
|
-
}
|
|
21
|
-
}`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
|
|
22
|
-
render: function Render(args) {
|
|
23
|
-
const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
|
|
24
|
-
return <Select {...args} onChange={value => {
|
|
25
|
-
args.onChange(value);
|
|
26
|
-
updateArgs({
|
|
27
|
-
value
|
|
28
|
-
});
|
|
29
|
-
}} />;
|
|
30
|
-
}
|
|
31
|
-
}`,...g.parameters?.docs?.source}}},_.parameters={..._.parameters,docs:{..._.parameters?.docs,source:{originalSource:`{
|
|
32
|
-
name: "Группированные опции",
|
|
33
|
-
render: function Render(args) {
|
|
34
|
-
const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
|
|
35
|
-
return <Select {...args} onChange={value => {
|
|
36
|
-
args.onChange(value);
|
|
37
|
-
updateArgs({
|
|
38
|
-
value
|
|
39
|
-
});
|
|
40
|
-
}} getOptionGroup={option => ({
|
|
41
|
-
key: option.direction,
|
|
42
|
-
label: option.direction
|
|
43
|
-
})} optionsMaxWidth="40rem" />;
|
|
44
|
-
}
|
|
45
|
-
}`,..._.parameters?.docs?.source}}},v.parameters={...v.parameters,docs:{...v.parameters?.docs,source:{originalSource:`{
|
|
46
|
-
name: "Кастомный рендер",
|
|
47
|
-
render: function Render(args) {
|
|
48
|
-
const [, updateArgs] = useArgs<SelectProps<DepartmentOption>>();
|
|
49
|
-
return <Select {...args} value={args.value ?? departmentOptions[0]} onChange={value => {
|
|
50
|
-
args.onChange(value);
|
|
51
|
-
updateArgs({
|
|
52
|
-
value
|
|
53
|
-
});
|
|
54
|
-
}} renderValue={option => \`\${option.code} · \${option.name}\`} renderOption={(option, state) => <>
|
|
55
|
-
<div className="flexEllipsis">
|
|
56
|
-
<div>{option.name}</div>
|
|
57
|
-
<div className="fontSizeSm content2">{option.manager}</div>
|
|
58
|
-
</div>
|
|
59
|
-
<div style={{
|
|
60
|
-
opacity: state.selected ? 1 : 0.5
|
|
61
|
-
}}>{option.code}</div>
|
|
62
|
-
</>} />;
|
|
63
|
-
}
|
|
64
|
-
}`,...v.parameters?.docs?.source}}},y.parameters={...y.parameters,docs:{...y.parameters?.docs,source:{originalSource:`{
|
|
65
|
-
args: {
|
|
66
|
-
disabled: true,
|
|
67
|
-
value: departmentOptions[0]
|
|
68
|
-
}
|
|
69
|
-
}`,...y.parameters?.docs?.source}}},b=[`ControlledObjects`,`PrimitiveOptions`,`Placeholder`,`GroupedOptions`,`CustomOptionLayout`,`Disabled`]})))()}export{g as a,x as c,_ as i,v as n,h as o,y as r,o as s,m as t};
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-ltYEol2F.js";import{n as i,t as a}from"./Select-CClfxa48.js";function o(e,t){return String(e[t])}function s(e,t,n){let r=e[t];if(typeof r==`string`||typeof r==`number`)return String(r);let i=o(e,n);return String(i)}function c({label:e,description:t,disabled:n,placeholder:r,size:i,options:c,value:u,onChange:d,optionKey:f,optionLabel:p,renderCode:m,className:h,clearable:g}){let _=u===void 0?void 0:c.find(e=>o(e,f)===u);return(0,l.jsx)(a,{label:e,description:t,disabled:n,placeholder:r,size:i,options:c,value:_,onChange:e=>d(e?o(e,f):void 0),getOptionKey:e=>o(e,f),getOptionLabel:e=>s(e,p,f),getOptionCode:m?e=>o(e,f):void 0,className:h,clearable:g})}var l;function u(){return(u=e((()=>{i(),l=r(),c.__docgenInfo={description:``,methods:[],displayName:`SerializableSelect`,props:{options:{required:!0,tsType:{name:`unknown`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: SerializableOptionValue<TOption, TOptionKey> | undefined) => void`,signature:{arguments:[{type:{name:`union`,raw:`SerializableOptionValue<TOption, TOptionKey> | undefined`,elements:[{name:`Extract`,elements:[{name:`TOption[TOptionKey]`,raw:`TOption[TOptionKey]`},{name:`string`}],raw:`Extract<
|
|
2
|
-
TOption[TOptionKey],
|
|
3
|
-
SelectOptionKey
|
|
4
|
-
>`},{name:`undefined`}]},name:`value`}],return:{name:`void`}}},description:``},optionKey:{required:!0,tsType:{name:`TOptionKey`},description:``},optionLabel:{required:!0,tsType:{name:`TOptionLabel`},description:``},renderCode:{required:!1,tsType:{name:`literal`,value:`true`},description:``},className:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`Omit`]}})))()}var d=t({AsyncReloadLike:()=>S,Controlled:()=>y,Disabled:()=>C,Placeholder:()=>b,WithCode:()=>x,__namedExportsOrder:()=>w,default:()=>v}),f,p,m,h,g,_,v,y,b,x,S,C,w;function T(){return(T=e((()=>{f=n(),u(),p=r(),{useArgs:m,useState:h}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:g}=__STORYBOOK_MODULE_TEST__,_=[{id:10,name:`Продажи`,code:`SLS`,branch:`Екатеринбург`},{id:20,name:`Закупки`,code:`PRC`,branch:`Челябинск`},{id:30,name:`Логистика`,code:`LGS`,branch:`Новосибирск`},{id:40,name:`Сервис`,code:`SRV`,branch:`Москва`}],v={title:`UI/SerializableSelect`,component:c,args:{label:`Подразделение`,description:`Сериализуемая обёртка над Select для object-options и field-based конфигурации.`,placeholder:`Выберите подразделение`,options:_,optionKey:`id`,optionLabel:`name`,value:void 0,onChange:g(),size:`md`},parameters:{atomicCanvas:!0,layout:`padded`,docs:{description:{component:`Высокоуровневая обёртка над low-level Select. Принимает массив объектов, получает key и label по именам полей, а наружу возвращает только значение ключа. Нужна для сериализуемых конфигов, в том числе в src/shared/ui/controls/*.`}}},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда ключ ещё не выбран.`,control:`text`},options:{description:`Массив объектных option.`,control:!1},optionKey:{description:`Поле объекта, значение которого используется как ключ и отдаётся наружу через onChange.`,control:!1},optionLabel:{description:`Поле объекта, значение которого отображается как основной текст option.`,control:!1},renderCode:{description:`Если включено, справа от текста будет показан ключ optionKey.`,control:`boolean`},value:{description:`Текущий выбранный ключ option, а не вся option целиком.`,control:!1},onChange:{description:`Вызывается с новым значением optionKey.`,control:!1},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},clearable:{description:`Показывает действие очистки выбранного ключа.`,control:`boolean`}}},y={name:`Выбор по ключу`,render:function(e){let[,t]=m();return(0,p.jsx)(c,{...e,value:e.value??20,onChange:n=>{e.onChange(n),t({value:n})}})},args:{value:20}},b={render:function(e){let[,t]=m();return(0,p.jsx)(c,{...e,onChange:n=>{e.onChange(n),t({value:n})}})}},x={name:`С кодом`,render:function(e){let[,t]=m();return(0,p.jsx)(c,{...e,value:e.value??10,renderCode:!0,onChange:n=>{e.onChange(n),t({value:n})}})},args:{value:10,renderCode:!0}},S={name:`Смена набора опций`,render:function(e){let[,t]=m(),[n,r]=h(!1),i=(0,f.useMemo)(()=>n?_.filter(e=>e.id!==20):_,[n]);return(0,p.jsxs)(`div`,{style:{display:`grid`,gap:`12px`,maxWidth:`320px`},children:[(0,p.jsx)(`button`,{type:`button`,onClick:()=>r(e=>!e),children:n?`Показать полный список`:`Скрыть одну опцию`}),(0,p.jsx)(c,{...e,options:i,value:e.value??30,onChange:n=>{e.onChange(n),t({value:n})}})]})},args:{value:30}},C={args:{disabled:!0,value:10}},y.parameters={...y.parameters,docs:{...y.parameters?.docs,source:{originalSource:`{
|
|
5
|
-
name: "Выбор по ключу",
|
|
6
|
-
render: function Render(args) {
|
|
7
|
-
const [, updateArgs] = useArgs<SerializableSelectProps<DepartmentOption, "id", "name">>();
|
|
8
|
-
return <SerializableSelect {...args} value={args.value ?? 20} onChange={value => {
|
|
9
|
-
args.onChange(value);
|
|
10
|
-
updateArgs({
|
|
11
|
-
value
|
|
12
|
-
});
|
|
13
|
-
}} />;
|
|
14
|
-
},
|
|
15
|
-
args: {
|
|
16
|
-
value: 20
|
|
17
|
-
}
|
|
18
|
-
}`,...y.parameters?.docs?.source}}},b.parameters={...b.parameters,docs:{...b.parameters?.docs,source:{originalSource:`{
|
|
19
|
-
render: function Render(args) {
|
|
20
|
-
const [, updateArgs] = useArgs<SerializableSelectProps<DepartmentOption, "id", "name">>();
|
|
21
|
-
return <SerializableSelect {...args} onChange={value => {
|
|
22
|
-
args.onChange(value);
|
|
23
|
-
updateArgs({
|
|
24
|
-
value
|
|
25
|
-
});
|
|
26
|
-
}} />;
|
|
27
|
-
}
|
|
28
|
-
}`,...b.parameters?.docs?.source}}},x.parameters={...x.parameters,docs:{...x.parameters?.docs,source:{originalSource:`{
|
|
29
|
-
name: "С кодом",
|
|
30
|
-
render: function Render(args) {
|
|
31
|
-
const [, updateArgs] = useArgs<SerializableSelectProps<DepartmentOption, "id", "name">>();
|
|
32
|
-
return <SerializableSelect {...args} value={args.value ?? 10} renderCode onChange={value => {
|
|
33
|
-
args.onChange(value);
|
|
34
|
-
updateArgs({
|
|
35
|
-
value
|
|
36
|
-
});
|
|
37
|
-
}} />;
|
|
38
|
-
},
|
|
39
|
-
args: {
|
|
40
|
-
value: 10,
|
|
41
|
-
renderCode: true
|
|
42
|
-
}
|
|
43
|
-
}`,...x.parameters?.docs?.source}}},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
|
|
44
|
-
name: "Смена набора опций",
|
|
45
|
-
render: function Render(args) {
|
|
46
|
-
const [, updateArgs] = useArgs<SerializableSelectProps<DepartmentOption, "id", "name">>();
|
|
47
|
-
const [showShortList, setShowShortList] = useStorybookState(false);
|
|
48
|
-
const options = useMemo(() => showShortList ? departmentOptions.filter(option => option.id !== 20) : departmentOptions, [showShortList]);
|
|
49
|
-
return <div style={{
|
|
50
|
-
display: "grid",
|
|
51
|
-
gap: "12px",
|
|
52
|
-
maxWidth: "320px"
|
|
53
|
-
}}>
|
|
54
|
-
<button type="button" onClick={() => setShowShortList(current => !current)}>
|
|
55
|
-
{showShortList ? "Показать полный список" : "Скрыть одну опцию"}
|
|
56
|
-
</button>
|
|
57
|
-
<SerializableSelect {...args} options={options} value={args.value ?? 30} onChange={value => {
|
|
58
|
-
args.onChange(value);
|
|
59
|
-
updateArgs({
|
|
60
|
-
value
|
|
61
|
-
});
|
|
62
|
-
}} />
|
|
63
|
-
</div>;
|
|
64
|
-
},
|
|
65
|
-
args: {
|
|
66
|
-
value: 30
|
|
67
|
-
}
|
|
68
|
-
}`,...S.parameters?.docs?.source}}},C.parameters={...C.parameters,docs:{...C.parameters?.docs,source:{originalSource:`{
|
|
69
|
-
args: {
|
|
70
|
-
disabled: true,
|
|
71
|
-
value: 10
|
|
72
|
-
}
|
|
73
|
-
}`,...C.parameters?.docs?.source}}},w=[`Controlled`,`Placeholder`,`WithCode`,`AsyncReloadLike`,`Disabled`]})))()}export{d as a,b as i,y as n,x as o,C as r,T as s,S as t};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-ltYEol2F.js";import{a as r,i}from"./utils-tg3ibbzi.js";import{a,h as o,o as s}from"./formatters-DVE1YVNQ-YIdRxgw-.js";import{n as c,t as l}from"./Select-CClfxa48.js";var u,d,f,p,m,h,g,_,v,y,b,x;function S(){return(S=e((()=>{u=`p4nQdZ`,d=`_94tg5v`,f=`HyK7Zs`,p=`Mm4hrB`,m=`clxxBQ`,h=`_5pJ7o-`,g=`VV6hKN`,_=`cuQNP0`,v=`w7nIOT`,y=`ed-Afj`,b=`Lbxloe`,x={button:u,valueContainer:d,swatch:f,optionsPalette:p,optionsDetailed:m,option:h,optionPalette:g,optionDetailed:_,optionMeta:v,optionMetaIcon:y,optionMetaLabel:b}})))()}function C({state:e,className:t}){return(0,A.jsx)(`span`,{className:r(x.swatch,t),"data-empty":e===`none`?``:void 0,style:{"--state-color":s[e]}})}function w(e){return!!(e?.icon||e?.label)}function T(e,t){return typeof t?.label==`string`&&t.label.trim()?t.label:e||`empty`}function E(e){return w(e)?(0,A.jsxs)(`span`,{className:x.optionMeta,children:[e?.icon?(0,A.jsx)(`span`,{className:x.optionMetaIcon,children:e.icon}):null,e?.label?(0,A.jsx)(`span`,{className:x.optionMetaLabel,children:e.label}):null]}):null}function D(e,t){return(0,A.jsxs)(`div`,{className:x.valueContainer,children:[(0,A.jsx)(C,{state:e}),E(t)]})}function O({label:e,description:t,disabled:n,placeholder:i,size:o,value:s,onChange:c,options:u=a,stateMeta:d,className:f,clearable:p}){let m=(0,k.useMemo)(()=>Array.from(new Set(u)),[u]),h=m.some(e=>w(d?.[e])),g={getOptionKey:e=>e||`__empty_state__`,getOptionLabel:e=>d?.[e]?.label??e,getOptionAriaLabel:e=>T(e,d?.[e]),renderValue:e=>D(e,d?.[e]),renderOption:e=>(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(C,{state:e}),h?E(d?.[e]):null]}),buttonClassName:x.button,optionsContentClassName:r(h?x.optionsDetailed:x.optionsPalette),getOptionClassName:()=>r(x.option,h?x.optionDetailed:x.optionPalette)};return(0,A.jsx)(l,{label:e,description:t,disabled:n,placeholder:i,size:o,value:s,onChange:c,options:m,className:f,clearable:p,...g})}var k,A;function j(){return(j=e((()=>{k=t(),o(),i(),c(),S(),A=n(),O.__docgenInfo={description:`Специализированный селект для выбора цветового или статусного состояния. Используется там, где значению соответствует визуальный swatch.`,methods:[],displayName:`StateSelect`,props:{placeholder:{required:!1,tsType:{name:`string`},description:``},options:{required:!1,tsType:{name:`unknown`},description:``,defaultValue:{value:`DEFAULT_VALUE_STATES`,computed:!0}},stateMeta:{required:!1,tsType:{name:`Partial`,elements:[{name:`Record`,elements:[{name:`State`},{name:`signature`,type:`object`,raw:`{
|
|
2
|
-
label?: string;
|
|
3
|
-
icon?: ReactNode;
|
|
4
|
-
}`,signature:{properties:[{key:`label`,value:{name:`string`,required:!1}},{key:`icon`,value:{name:`ReactNode`,required:!1}}]}}],raw:`Record<State, StateMeta>`}],raw:`Partial<Record<State, StateMeta>>`},description:``},className:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`Omit`]}})))()}export{j as n,O as t};
|
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-ltYEol2F.js";import{i as n,r}from"./react-Bl2r1tuC.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-Bdsl8TP-.js";import{_ as p,a as m,c as h,d as g,f as _,g as v,h as y,i as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k}from"./Table.stories-B9u81cAN.js";function A(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(s,{of:D,parameters:{docs:{toc:!0}}}),`
|
|
2
|
-
`,(0,M.jsx)(u,{children:`Table`}),`
|
|
3
|
-
`,(0,M.jsxs)(o,{children:[`Плоская таблица как React-альтернатива `,(0,M.jsx)(t.code,{children:`sap.m.Table`})]}),`
|
|
4
|
-
`,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`Table`}),` предназначен для плоских данных и по поведению осознанно сближен с `,(0,M.jsx)(t.code,{children:`TreeTable`}),`.
|
|
5
|
-
Оба компонента используют общий табличный каркас, поэтому здесь совпадают states загрузки, визуальная структура, обработка выбора строк и клавиатурная активация.
|
|
6
|
-
`,(0,M.jsx)(t.code,{children:`Table`}),` также поддерживает декларативное форматирование через `,(0,M.jsx)(t.code,{children:`meta.formatting`}),`, formulas, безопасное pipeline-formatting и optional OData adapter.`]}),`
|
|
7
|
-
`,(0,M.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
|
|
8
|
-
`,(0,M.jsx)(f,{}),`
|
|
9
|
-
`,(0,M.jsx)(i,{of:O}),`
|
|
10
|
-
`,(0,M.jsx)(t.pre,{children:(0,M.jsx)(t.code,{className:`language-tsx`,children:`import { Table, type TableColumnDef } from "@ryuzaki13/react-foundation-ui";
|
|
11
|
-
|
|
12
|
-
interface DealRow {
|
|
13
|
-
id: string;
|
|
14
|
-
number: string;
|
|
15
|
-
client: string;
|
|
16
|
-
amount: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
const columns: TableColumnDef<DealRow>[] = [
|
|
20
|
-
{
|
|
21
|
-
id: "number",
|
|
22
|
-
accessorKey: "number",
|
|
23
|
-
header: "Номер",
|
|
24
|
-
meta: { width: "9em" }
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
id: "client",
|
|
28
|
-
accessorKey: "client",
|
|
29
|
-
header: "Клиент",
|
|
30
|
-
meta: { width: "14em" }
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
id: "amount",
|
|
34
|
-
accessorKey: "amount",
|
|
35
|
-
header: "Сумма",
|
|
36
|
-
meta: { width: "10em", align: "right" }
|
|
37
|
-
}
|
|
38
|
-
];
|
|
39
|
-
|
|
40
|
-
export function Example({ rows }: { rows: DealRow[] }) {
|
|
41
|
-
return <Table data={rows} columns={columns} getRowId={(row) => row.id} selectionMode="single" height="20em" />;
|
|
42
|
-
}
|
|
43
|
-
`})}),`
|
|
44
|
-
`,(0,M.jsx)(t.h2,{id:`форматирование-ячеек`,children:`Форматирование ячеек`}),`
|
|
45
|
-
`,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`meta.formatting`}),` добавляет к колонке декларативный runtime-контракт:`]}),`
|
|
46
|
-
`,(0,M.jsxs)(t.ul,{children:[`
|
|
47
|
-
`,(0,M.jsxs)(t.li,{children:[`typed formatting по `,(0,M.jsx)(t.code,{children:`role/type`}),`;`]}),`
|
|
48
|
-
`,(0,M.jsx)(t.li,{children:`formula-based вычисление значения;`}),`
|
|
49
|
-
`,(0,M.jsxs)(t.li,{children:[`pipeline display-formatting (`,(0,M.jsx)(t.code,{children:`normalizeLeadingZeros`}),`, `,(0,M.jsx)(t.code,{children:`resolveValueState`}),`, `,(0,M.jsx)(t.code,{children:`typedValueFormat`}),`);`]}),`
|
|
50
|
-
`,(0,M.jsxs)(t.li,{children:[(0,M.jsx)(t.code,{children:`emptyWhenZero`}),` для скрытия нулевых значений;`]}),`
|
|
51
|
-
`,(0,M.jsxs)(t.li,{children:[(0,M.jsx)(t.code,{children:`overflowTooltip`}),` для длинного текста.`]}),`
|
|
52
|
-
`]}),`
|
|
53
|
-
`,(0,M.jsx)(t.p,{children:`Важно:`}),`
|
|
54
|
-
`,(0,M.jsxs)(t.ul,{children:[`
|
|
55
|
-
`,(0,M.jsxs)(t.li,{children:[(0,M.jsx)(t.code,{children:`meta.formatting`}),` применяется только если у колонки нет кастомного `,(0,M.jsx)(t.code,{children:`cell`}),`;`]}),`
|
|
56
|
-
`,(0,M.jsx)(t.li,{children:`formulas и pipeline компилируются один раз на снимок колонок;`}),`
|
|
57
|
-
`,(0,M.jsxs)(t.li,{children:[`ошибки formula/pipeline не роняют таблицу и не подставляют универсальный `,(0,M.jsx)(t.code,{children:`0`}),`;`]}),`
|
|
58
|
-
`,(0,M.jsxs)(t.li,{children:[`OData adapter остаётся внешней прослойкой, а не частью `,(0,M.jsx)(t.code,{children:`Table`}),`.`]}),`
|
|
59
|
-
`]}),`
|
|
60
|
-
`,(0,M.jsx)(t.pre,{children:(0,M.jsx)(t.code,{className:`language-tsx`,children:`const columns: TableColumnDef<Row>[] = [
|
|
61
|
-
{
|
|
62
|
-
id: "amount",
|
|
63
|
-
accessorKey: "amount",
|
|
64
|
-
header: "Сумма",
|
|
65
|
-
meta: {
|
|
66
|
-
align: "right",
|
|
67
|
-
formatting: {
|
|
68
|
-
role: "measure",
|
|
69
|
-
type: "decimal",
|
|
70
|
-
emptyWhenZero: true
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
];
|
|
75
|
-
`})}),`
|
|
76
|
-
`,(0,M.jsxs)(t.p,{children:[`Для OData-сценариев можно не прописывать `,(0,M.jsx)(t.code,{children:`role/type`}),` вручную, а обогатить колонки через adapter:`]}),`
|
|
77
|
-
`,(0,M.jsx)(t.pre,{children:(0,M.jsx)(t.code,{className:`language-tsx`,children:`import { enrichTableColumnsWithODataFormatting } from "@ryuzaki13/react-foundation-lib/table";
|
|
78
|
-
|
|
79
|
-
const columns = enrichTableColumnsWithODataFormatting(manualColumns, metadata.columns);
|
|
80
|
-
`})}),`
|
|
81
|
-
`,(0,M.jsx)(t.h2,{id:`слияние-дубликатов`,children:`Слияние дубликатов`}),`
|
|
82
|
-
`,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`meta.mergeDuplicates`}),` включает display-only слияние подряд идущих одинаковых raw-значений без изменения структуры строк.`]}),`
|
|
83
|
-
`,(0,M.jsx)(t.p,{children:`Важно:`}),`
|
|
84
|
-
`,(0,M.jsxs)(t.ul,{children:[`
|
|
85
|
-
`,(0,M.jsxs)(t.li,{children:[`сравнение идёт по `,(0,M.jsx)(t.code,{children:`cell.getValue()`}),`, а не по formatted display;`]}),`
|
|
86
|
-
`,(0,M.jsx)(t.li,{children:`объединяются только подряд идущие строки;`}),`
|
|
87
|
-
`,(0,M.jsxs)(t.li,{children:[(0,M.jsx)(t.code,{children:`null`}),`, `,(0,M.jsx)(t.code,{children:`undefined`}),` и пустая строка `,(0,M.jsx)(t.code,{children:`""`}),` не объединяются;`]}),`
|
|
88
|
-
`,(0,M.jsx)(t.li,{children:`повторяющееся значение остаётся только в первой строке группы, а ниже рендерятся пустые ячейки;`}),`
|
|
89
|
-
`,(0,M.jsx)(t.li,{children:`если сервер не отсортировал данные так, чтобы дубликаты шли подряд, слияния не будет.`}),`
|
|
90
|
-
`]}),`
|
|
91
|
-
`,(0,M.jsx)(t.pre,{children:(0,M.jsx)(t.code,{className:`language-tsx`,children:`const columns: TableColumnDef<Row>[] = [
|
|
92
|
-
{
|
|
93
|
-
id: "division",
|
|
94
|
-
accessorKey: "division",
|
|
95
|
-
header: "Дивизион",
|
|
96
|
-
meta: {
|
|
97
|
-
mergeDuplicates: true
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
];
|
|
101
|
-
`})}),`
|
|
102
|
-
`,(0,M.jsxs)(t.h2,{id:`хук-useodatatablecolumns`,children:[`Хук `,(0,M.jsx)(t.code,{children:`useODataTableColumns`})]}),`
|
|
103
|
-
`,(0,M.jsxs)(t.p,{children:[`Наиболее частый кейс - работать не с pure-helper напрямую, а с hook-слоем `,(0,M.jsx)(t.code,{children:`useODataTableColumns(...)`}),`.`]}),`
|
|
104
|
-
`,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`build`}),` стоит выбирать, когда колонки можно полностью собрать из `,(0,M.jsx)(t.code,{children:`metadata.columns`}),`:`]}),`
|
|
105
|
-
`,(0,M.jsx)(t.pre,{children:(0,M.jsx)(t.code,{className:`language-tsx`,children:`import { useODataTableColumns } from "@ryuzaki13/react-foundation-api/odata";
|
|
106
|
-
import { Table } from "@ryuzaki13/react-foundation-ui";
|
|
107
|
-
|
|
108
|
-
function DealsTable({ rows }: { rows: DealRow[] }) {
|
|
109
|
-
const { columns, metadata, isLoading } = useODataTableColumns<DealRow>({
|
|
110
|
-
service: "ZSD_SALES_SRV",
|
|
111
|
-
entity: "DealSet",
|
|
112
|
-
mode: "build"
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
return (
|
|
116
|
-
<Table
|
|
117
|
-
title={metadata?.title ?? "Сделки"}
|
|
118
|
-
data={rows}
|
|
119
|
-
columns={columns}
|
|
120
|
-
isLoading={isLoading}
|
|
121
|
-
getRowId={(row) => row.id}
|
|
122
|
-
selectionMode="single"
|
|
123
|
-
/>
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
`})}),`
|
|
127
|
-
`,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`enrich`}),` подходит, когда колонки уже описаны вручную и нужно только дозаполнить `,(0,M.jsx)(t.code,{children:`meta.formatting.role/type`}),`:`]}),`
|
|
128
|
-
`,(0,M.jsx)(t.pre,{children:(0,M.jsx)(t.code,{className:`language-tsx`,children:`import { useODataTableColumns } from "@ryuzaki13/react-foundation-api/odata";
|
|
129
|
-
import { Table } from "@ryuzaki13/react-foundation-ui";
|
|
130
|
-
|
|
131
|
-
const manualColumns: TableColumnDef<DealRow>[] = [
|
|
132
|
-
{ id: "product", accessorKey: "product", header: "Позиция" },
|
|
133
|
-
{ id: "createdAt", accessorKey: "createdAt", header: "Создано" },
|
|
134
|
-
{ id: "totalAmount", accessorKey: "totalAmount", header: "Итог", meta: { align: "right" } }
|
|
135
|
-
];
|
|
136
|
-
|
|
137
|
-
function DealsTable({ rows }: { rows: DealRow[] }) {
|
|
138
|
-
const { columns, isLoading } = useODataTableColumns<DealRow>({
|
|
139
|
-
service: "ZSD_SALES_SRV",
|
|
140
|
-
entity: "DealSet",
|
|
141
|
-
mode: "enrich",
|
|
142
|
-
columns: manualColumns
|
|
143
|
-
});
|
|
144
|
-
|
|
145
|
-
return <Table data={rows} columns={columns} isLoading={isLoading} getRowId={(row) => row.id} selectionMode="single" />;
|
|
146
|
-
}
|
|
147
|
-
`})}),`
|
|
148
|
-
`,(0,M.jsx)(t.p,{children:`Практическая семантика хука:`}),`
|
|
149
|
-
`,(0,M.jsxs)(t.ul,{children:[`
|
|
150
|
-
`,(0,M.jsxs)(t.li,{children:[(0,M.jsx)(t.code,{children:`columns`}),` уже готовы для прямой передачи в `,(0,M.jsx)(t.code,{children:`Table`}),`;`]}),`
|
|
151
|
-
`,(0,M.jsxs)(t.li,{children:[(0,M.jsx)(t.code,{children:`metadata`}),` можно использовать для заголовка, пустых состояний или дополнительной UI-подписи;`]}),`
|
|
152
|
-
`,(0,M.jsxs)(t.li,{children:[(0,M.jsx)(t.code,{children:`isLoading`}),` нужно прокидывать в `,(0,M.jsx)(t.code,{children:`Table`}),`, чтобы сохранить единое табличное состояние загрузки;`]}),`
|
|
153
|
-
`,(0,M.jsxs)(t.li,{children:[`сам `,(0,M.jsx)(t.code,{children:`Table`}),` остаётся OData-независимым и получает только готовые `,(0,M.jsx)(t.code,{children:`columns`}),`.`]}),`
|
|
154
|
-
`]}),`
|
|
155
|
-
`,(0,M.jsx)(t.h2,{id:`что-важно-знать`,children:`Что важно знать`}),`
|
|
156
|
-
`,(0,M.jsxs)(t.ul,{children:[`
|
|
157
|
-
`,(0,M.jsx)(t.li,{children:`Компонент принимает именно плоский массив строк и не содержит древовидной логики.`}),`
|
|
158
|
-
`,(0,M.jsxs)(t.li,{children:[`Поведение `,(0,M.jsx)(t.code,{children:`selectionMode`}),` идентично `,(0,M.jsx)(t.code,{children:`TreeTable`}),`: `,(0,M.jsx)(t.code,{children:`single`}),` не снимает выбор повторным кликом по уже выбранной строке.`]}),`
|
|
159
|
-
`,(0,M.jsxs)(t.li,{children:[(0,M.jsx)(t.code,{children:`height`}),` и ширины колонок можно задавать строками в `,(0,M.jsx)(t.code,{children:`em`}),`, `,(0,M.jsx)(t.code,{children:`rem`}),`, `,(0,M.jsx)(t.code,{children:`%`}),` и других CSS-единицах; числовые значения трактуются как `,(0,M.jsx)(t.code,{children:`em`}),`.`]}),`
|
|
160
|
-
`,(0,M.jsxs)(t.li,{children:[(0,M.jsx)(t.code,{children:`onReachEnd`}),` срабатывает внутри scroll-контейнера и подходит для постепенной догрузки длинного списка.`]}),`
|
|
161
|
-
`,(0,M.jsxs)(t.li,{children:[(0,M.jsx)(t.code,{children:`Table`}),` не зависит от OData напрямую и продолжает работать на plain local data без metadata.`]}),`
|
|
162
|
-
`]}),`
|
|
163
|
-
`,(0,M.jsx)(t.h2,{id:`сценарии`,children:`Сценарии`}),`
|
|
164
|
-
`,(0,M.jsx)(t.h3,{id:`базовый-режим`,children:`Базовый режим`}),`
|
|
165
|
-
`,(0,M.jsx)(d,{of:O}),`
|
|
166
|
-
`,(0,M.jsx)(t.h3,{id:`left-pinning-столбцов`,children:`Left-pinning столбцов`}),`
|
|
167
|
-
`,(0,M.jsx)(d,{of:h}),`
|
|
168
|
-
`,(0,M.jsx)(t.h3,{id:`множественный-выбор`,children:`Множественный выбор`}),`
|
|
169
|
-
`,(0,M.jsx)(d,{of:m}),`
|
|
170
|
-
`,(0,M.jsx)(t.h3,{id:`строки-с-ограничением-выбора`,children:`Строки с ограничением выбора`}),`
|
|
171
|
-
`,(0,M.jsx)(d,{of:x}),`
|
|
172
|
-
`,(0,M.jsx)(t.h3,{id:`фоновое-обновление-данных`,children:`Фоновое обновление данных`}),`
|
|
173
|
-
`,(0,M.jsx)(d,{of:E}),`
|
|
174
|
-
`,(0,M.jsx)(t.h3,{id:`пустая-таблица`,children:`Пустая таблица`}),`
|
|
175
|
-
`,(0,M.jsx)(d,{of:C}),`
|
|
176
|
-
`,(0,M.jsx)(t.h3,{id:`достижение-конца-списка`,children:`Достижение конца списка`}),`
|
|
177
|
-
`,(0,M.jsx)(d,{of:w}),`
|
|
178
|
-
`,(0,M.jsx)(t.h3,{id:`первичная-загрузка`,children:`Первичная загрузка`}),`
|
|
179
|
-
`,(0,M.jsx)(d,{of:b}),`
|
|
180
|
-
`,(0,M.jsx)(t.h3,{id:`formula-based-колонка`,children:`Formula-based колонка`}),`
|
|
181
|
-
`,(0,M.jsx)(d,{of:g}),`
|
|
182
|
-
`,(0,M.jsx)(t.h3,{id:`pipeline-display-formatting`,children:`Pipeline display-formatting`}),`
|
|
183
|
-
`,(0,M.jsx)(d,{of:k}),`
|
|
184
|
-
`,(0,M.jsx)(t.h3,{id:`скрытие-нулевых-значений`,children:`Скрытие нулевых значений`}),`
|
|
185
|
-
`,(0,M.jsx)(d,{of:_}),`
|
|
186
|
-
`,(0,M.jsx)(t.h3,{id:`слияние-дубликатов-1`,children:`Слияние дубликатов`}),`
|
|
187
|
-
`,(0,M.jsx)(d,{of:T}),`
|
|
188
|
-
`,(0,M.jsx)(t.h3,{id:`odata-metadata-adapter`,children:`OData metadata adapter`}),`
|
|
189
|
-
`,(0,M.jsx)(d,{of:S}),`
|
|
190
|
-
`,(0,M.jsx)(t.h3,{id:`useodatatablecolumns-build`,children:`useODataTableColumns: build`}),`
|
|
191
|
-
`,(0,M.jsx)(d,{of:y}),`
|
|
192
|
-
`,(0,M.jsx)(t.h3,{id:`useodatatablecolumns-enrich`,children:`useODataTableColumns: enrich`}),`
|
|
193
|
-
`,(0,M.jsx)(d,{of:v}),`
|
|
194
|
-
`,(0,M.jsx)(t.h2,{id:`api`,children:`API`}),`
|
|
195
|
-
`,(0,M.jsx)(l,{of:D}),`
|
|
196
|
-
`,(0,M.jsx)(t.h2,{id:`все-stories`,children:`Все stories`}),`
|
|
197
|
-
`,(0,M.jsx)(a,{includePrimary:!1})]})}function j(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,M.jsx)(t,{...e,children:(0,M.jsx)(A,{...e})}):A(e)}var M;function N(){return(N=e((()=>{M=t(),r(),c(),p()})))()}N();export{j as default};
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{t as n}from"./react-BZJXY1be.js";import{n as r}from"./iframe-ltYEol2F.js";import{A as i,D as a,O as ee,T as te,_ as ne,a as re,b as o,d as ie,g as ae,i as oe,k as se}from"./odata-Dd_3_5NS.js";import{h as ce,u as le}from"./formatters-DVE1YVNQ-YIdRxgw-.js";import{n as ue,t as de}from"./useTable-CK68Q4S4.js";import{_ as fe,a as pe,c as me,d as he,f as ge,g as _e,h as ve,i as ye,l as be,m as xe,n as Se,o as Ce,p as we,r as Te,s as Ee,t as De,u as Oe,v as ke,y as Ae}from"./FormattedTableCell-B-t0D2oX.js";import{n as je,t as s}from"./createControlledStoryRender-BouhvX-R.js";var c,Me,Ne;function l(){return(l=e((()=>{c=`hKghZt`,Me=`QsLRvS`,Ne={selectedIndicatorCell:c,sentinel:Me}})))()}function Pe(e,t){return String(t)}function u({title:e,isLoading:t,isFetching:n,data:r,columns:i,selectionMode:a=`none`,selectedRowIds:ee,getRowId:te,className:re,minHeight:o,tableClassName:ie,columnVisibility:oe,defaultColumnVisibility:se,columnOrder:ce,defaultColumnOrder:de,columnSizing:pe,defaultColumnSizing:he,columnPinning:_e,defaultColumnPinning:ye,enableColumnResizing:be=!1,enableColumnReordering:xe=!1,columnResizeMinWidth:Se,onColumnVisibilityChange:Ee,onColumnOrderChange:Ae,onColumnSizingChange:je,onColumnPinningChange:s,onRowClick:c,onRowSelectionChange:Me,onReachEnd:l,getRowCanSelect:u,getRowClassName:p,renderHeaderContextMenu:Fe,renderCellContent:m}){let h=(0,d.useMemo)(()=>r??[],[r]),g=(0,d.useMemo)(()=>ve(i),[i]),_=te??Pe,v=(0,d.useMemo)(()=>new Map(h.map((e,t)=>[_(e,t),e])),[_,h]),Ie=(0,d.useMemo)(()=>Array.from(v.keys()),[v]),y=(0,d.useRef)(null),b=(0,d.useRef)(null),{rowSelection:x,activateRowSelection:S}=ae({availableRowIds:Ie,rowById:v,selectionMode:a,selectedRowIds:ee,onRowSelectionChange:Me}),{columnVisibility:C,onColumnVisibilityChange:w}=Ce({columnVisibility:oe,defaultColumnVisibility:se,onColumnVisibilityChange:Ee}),{columnOrder:T,onColumnOrderChange:E}=ge({columnOrder:ce,defaultColumnOrder:de,onColumnOrderChange:Ae}),{columnSizing:D,onColumnSizingChange:O}=me({columnSizing:pe,defaultColumnSizing:he,columnResizeMinWidth:Se,onColumnSizingChange:je}),{columnPinning:k,onColumnPinningChange:Le}=Oe({columnPinning:_e,defaultColumnPinning:ye,onColumnPinningChange:s}),A=(0,d.useMemo)(()=>({columnOrder:T,columnPinning:k,columnSizing:D,columnVisibility:C}),[T,k,D,C]),j=(0,d.useEffectEvent)(()=>{l?.()});(0,d.useEffect)(()=>{if(!l||!y.current||!b.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&j()},{root:y.current,threshold:.1});return e.observe(b.current),()=>e.disconnect()},[t,l,h.length]);let M=ue({features:ne,data:h,columns:i,state:{columnOrder:T,columnPinning:k,columnSizing:D,columnVisibility:C,rowSelection:x},onColumnOrderChange:E,onColumnPinningChange:Le,onColumnSizingChange:O,onColumnVisibilityChange:w,getRowId:(e,t)=>_(e,t),enableMultiRowSelection:a===`multi`,enableRowSelection:e=>a===`none`?!1:!u||u(e.original)}),N=ke(M,A),P=M.getRowModel().rows,F=(0,d.useMemo)(()=>we({rows:P,columns:N}),[P,N]),I=N[0]?.id;return(0,f.jsx)(Te,{table:M,columnState:A,title:e,isLoading:t,isFetching:n,className:re,minHeight:o,tableClassName:ie,selectionMode:a,scrollableRef:y,onActivateRow:a!==`none`||c?e=>{S(e.id,e.getCanSelect()),c?.(e.original)}:void 0,isRowInteractive:e=>!!(c||a!==`none`&&e.getCanSelect()),getRowClassName:e=>p?.(e.original),getCellClassName:({row:e,cell:t})=>t.column.id===I&&e.getIsSelected()?Ne.selectedIndicatorCell:void 0,getCellLayout:({cell:e})=>F.get(e.id),renderHeaderContextMenu:Fe,enableColumnResizing:be,enableColumnReordering:xe,columnResizeMinWidth:Se,renderCellContent:e=>{let t=le({field:g.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:e.row.original,rowKind:`plain`}),n=fe({columnId:e.cell.column.id,runtimeByColumnId:g.runtimeByColumnId,customCellColumnIds:g.customCellColumnIds})?(0,f.jsx)(De,{displayValue:t,align:e.columnMeta?.align}):e.defaultContent;return m?m({...e,defaultContent:n,displayValue:t}):n},afterTableContent:l?(0,f.jsx)(`div`,{ref:b,className:Ne.sentinel,"aria-hidden":`true`}):null})}var d,f;function p(){return(p=e((()=>{d=n(),ce(),o(),de(),ye(),xe(),_e(),Se(),Ae(),he(),be(),Ee(),pe(),l(),f=r(),u.__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
|
-
|
|
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
|
-
|
|
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:`TableColumnVisibilityState`},description:`Внешнее controlled-состояние видимости колонок.`},defaultColumnVisibility:{required:!1,tsType:{name:`TableColumnVisibilityState`},description:`Стартовое uncontrolled-состояние видимости колонок.`},columnOrder:{required:!1,tsType:{name:`unknown`},description:`Внешнее controlled-состояние порядка колонок.`},defaultColumnOrder:{required:!1,tsType:{name:`unknown`},description:`Стартовое uncontrolled-состояние порядка колонок.`},columnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Внешнее controlled-состояние ширин колонок в px.`},defaultColumnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Стартовое uncontrolled-состояние ширин колонок в px.`},columnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Внешнее controlled-состояние start-pinning для колонок.`},defaultColumnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Стартовое uncontrolled-состояние start-pinning для колонок.`},enableColumnResizing:{required:!1,tsType:{name:`boolean`},description:`Включает изменение ширины колонок через header-handle.`,defaultValue:{value:`false`,computed:!1}},enableColumnReordering:{required:!1,tsType:{name:`boolean`},description:`Включает изменение порядка колонок через drag&drop заголовков.`,defaultValue:{value:`false`,computed:!1}},columnResizeMinWidth:{required:!1,tsType:{name:`number`},description:`Минимальная ширина колонки при resize в px.`},onColumnVisibilityChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnVisibilityState) => void`,signature:{arguments:[{type:{name:`TableColumnVisibilityState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения видимости колонок.`},onColumnOrderChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnOrderState) => void`,signature:{arguments:[{type:{name:`TableColumnOrderState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения порядка колонок.`},onColumnSizingChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnSizingState) => void`,signature:{arguments:[{type:{name:`TableColumnSizingState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения ширины колонок.`},onColumnPinningChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnPinningState) => void`,signature:{arguments:[{type:{name:`TableColumnPinningState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения start-pinning state.`},onRowClick:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => void`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`void`}}},description:`Вызывается при активации строки кликом или клавиатурой.`},onRowSelectionChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(rows: TData[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TData`}],raw:`TData[]`},name:`rows`}],return:{name:`void`}}},description:`Вызывается после изменения выбранных строк.`},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` уже содержит отформатированное значение, если оно применимо."}}}})))()}var Fe=t({Basic:()=>z,Empty:()=>W,Fetching:()=>U,Loading:()=>K,MultiSelect:()=>V,ReachEnd:()=>G,WithColumnPinning:()=>B,WithDisabledRows:()=>H,WithFormattingPipeline:()=>J,WithFormulaColumn:()=>q,WithHiddenZero:()=>Y,WithMergedDuplicates:()=>X,WithODataMetadataAdapter:()=>Z,WithUseODataTableColumnsBuildHook:()=>Q,WithUseODataTableColumnsEnrichHook:()=>$,__namedExportsOrder:()=>Be,default:()=>Re});function m(){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 h(e,t){let n=e.data??[];return t.map(t=>{let r=n.indexOf(t);return e.getRowId?.(t,r)??String(r)})}function g({args:e,updateArgs:t}){return(0,b.jsx)(u,{...e,onColumnVisibilityChange:n=>{e.onColumnVisibilityChange?.(n),t({columnVisibility:n})},onColumnOrderChange:n=>{e.onColumnOrderChange?.(n),t({columnOrder:n})},onColumnSizingChange:n=>{e.onColumnSizingChange?.(n),t({columnSizing:n})},onColumnPinningChange:n=>{e.onColumnPinningChange?.(n),t({columnPinning:n})},onRowSelectionChange:n=>{e.onRowSelectionChange?.(n),t({selectedRowIds:h(e,n)})}})}function _({args:e,updateArgs:t}){let{columns:n,metadata:r,isLoading:i}=oe({service:N,target:P,mode:`build`});return(0,b.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,b.jsxs)(`div`,{children:[`Режим build: hook собрал `,n.length,` колонки из metadata`,r?` для сущности «${r.title}».`:`.`]}),(0,b.jsx)(g,{args:{...e,columns:n,isLoading:e.isLoading??i},updateArgs:t})]})}function v({args:e,updateArgs:t}){let{columns:n,metadata:r,isLoading:i}=oe({service:N,target:P,mode:`enrich`,columns:j});return(0,b.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,b.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные заголовки и дополнил formatting-контекст`,r?` из metadata «${r.title}».`:`.`]}),(0,b.jsx)(g,{args:{...e,columns:n,isLoading:e.isLoading??i},updateArgs:t})]})}function Ie({args:e,updateArgs:t}){let[n,r]=(0,y.useState)(0);return(0,b.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,b.jsxs)(`div`,{children:[`Событие достижения конца: `,n]}),(0,b.jsx)(g,{args:{...e,onReachEnd:()=>{e.onReachEnd?.(),r(e=>e+1)}},updateArgs:t})]})}var y,b,x,S,C,w,T,E,D,O,k,Le,A,j,M,N,P,F,I,Re,L,R,ze,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,Be;function Ve(){return(Ve=e((()=>{y=n(),re(),ee(),o(),i(),je(),p(),b=r(),x=[{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:`Закрыта`}],S=[...x,{id:`6`,number:`450006`,client:`ОМК`,manager:`Елена Андреева`,amount:`680 000`,status:`Архив`,isLocked:!0}],C=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?`В работе`:`Согласование`})),w=[{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}}],T=[{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}],E=[{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:`Николай Орлов`}],D=[{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}}],O=[{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}}}],k=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`healthScore`,accessorKey:`healthScore`,header:`Индекс риска`,meta:{width:10,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:m()}}}],Le=[{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)=>{let n=(0,y.useMemo)(()=>{let e=a({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(te({service:n}).queryKey,{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]);return(0,b.jsx)(se,{client:n,children:e()})},Re={title:`UI/Table`,component:u,args:{title:`Сделки`,data:x,columns:w,getRowId:e=>e.id,selectionMode:`single`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{title:{description:`Заголовок таблицы.`,control:`text`},isLoading:{description:`Показывает состояние первичной загрузки.`,control:`boolean`},isFetching:{description:`Показывает фоновое обновление без очистки строк.`,control:`boolean`},data:{description:`Плоский источник строк.`,control:!1},columns:{description:`Описание колонок таблицы.`,control:!1},selectionMode:{description:`Режим выбора строк.`,control:`inline-radio`,options:[`none`,`single`,`multi`]},selectedRowIds:{description:`Controlled-набор выбранных id строк.`,control:!1},getRowId:{description:`Функция получения стабильного id строки.`,control:!1},minHeight:{description:`Минимальная высота scroll-области таблицы в em или процентах.`,control:`text`},columnVisibility:{description:`Controlled-состояние видимости колонок.`,control:!1},defaultColumnVisibility:{description:`Стартовое uncontrolled-состояние видимости колонок.`,control:!1},columnOrder:{description:`Controlled-порядок идентификаторов колонок.`,control:!1},defaultColumnOrder:{description:`Стартовый uncontrolled-порядок колонок.`,control:!1},columnSizing:{description:`Controlled-ширины колонок в px.`,control:!1},defaultColumnSizing:{description:`Стартовые uncontrolled-ширины колонок.`,control:!1},columnPinning:{description:`Controlled-состояние закрепления колонок слева.`,control:!1},defaultColumnPinning:{description:`Стартовое uncontrolled-состояние закрепления колонок слева.`,control:!1},onColumnPinningChange:{description:`Вызывается после изменения закрепления колонок слева.`,control:!1},enableColumnResizing:{description:`Включает изменение ширины колонок через header-handle.`,control:`boolean`},enableColumnReordering:{description:`Включает перетаскивание заголовков для изменения порядка колонок.`,control:`boolean`},columnResizeMinWidth:{description:`Минимальная ширина колонки при resize в px.`,control:`number`},onColumnVisibilityChange:{description:`Вызывается после изменения видимости колонок.`,control:!1},onColumnOrderChange:{description:`Вызывается после изменения порядка колонок.`,control:!1},onColumnSizingChange:{description:`Вызывается после изменения ширины колонок.`,control:!1},getRowCanSelect:{description:`Позволяет запретить выбор отдельных строк.`,control:!1},getRowClassName:{description:`Позволяет добавить CSS-класс для конкретной строки.`,control:!1},onRowClick:{description:`Вызывается при активации строки.`,control:!1},onRowSelectionChange:{description:`Вызывается после изменения выбранных строк.`,control:!1},onReachEnd:{description:`Вызывается при достижении конца списка внутри scroll-контейнера.`,control:!1},renderHeaderContextMenu:{description:`Слот контекстного меню заголовка колонки.`,control:!1},renderCellContent:{description:`Слот содержимого ячейки поверх стандартного formatting-runtime.`,control:!1}}},L=s((e,t)=>(0,b.jsx)(g,{args:e,updateArgs:t})),R=s((e,t)=>(0,b.jsx)(g,{args:e,updateArgs:t})),ze=s((e,t)=>(0,b.jsx)(g,{args:e,updateArgs:t})),z={render:L},B={args:{columnPinning:{start:[`number`]}},render:s((e,t)=>{let n=e.columnPinning??{start:[]};return(0,b.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,b.jsxs)(`div`,{style:{display:`flex`,gap:`0.5em`,flexWrap:`wrap`},children:[(0,b.jsx)(`button`,{type:`button`,onClick:()=>t({columnPinning:{start:[`number`]}}),children:`Закрепить «Номер»`}),(0,b.jsx)(`button`,{type:`button`,onClick:()=>t({columnPinning:{start:[`number`,`client`]}}),children:`Закрепить «Номер» и «Клиент»`}),(0,b.jsx)(`button`,{type:`button`,onClick:()=>t({columnPinning:{start:[]}}),children:`Снять закрепление`})]}),(0,b.jsxs)(`div`,{children:[`Закреплено в начале: `,n.start?.length?n.start.join(`, `):`ничего`]}),(0,b.jsx)(g,{args:{...e,columnPinning:n},updateArgs:t})]})})},V={args:{selectionMode:`multi`,selectedRowIds:[]},render:s((e,t)=>(0,b.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,b.jsxs)(`div`,{children:[`Выбрано: `,e.selectedRowIds?.length?e.selectedRowIds.join(`, `):`ничего`]}),(0,b.jsx)(g,{args:e,updateArgs:t})]}))},H={args:{data:S,selectionMode:`multi`,selectedRowIds:[],getRowCanSelect:e=>!e.isLocked},render:s((e,t)=>(0,b.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,b.jsx)(`div`,{children:`Строка со статусом «Архив» остаётся видимой, но не участвует в выборе.`}),(0,b.jsxs)(`div`,{children:[`Выбрано: `,e.selectedRowIds?.length?e.selectedRowIds.join(`, `):`ничего`]}),(0,b.jsx)(g,{args:e,updateArgs:t})]}))},U={args:{isFetching:!0},render:L},W={args:{data:[]},render:L},G={args:{data:C},render:s((e,t)=>(0,b.jsx)(Ie,{args:e,updateArgs:t}))},K={args:{isLoading:!0},render:L},q={args:{title:`Формула наценки`,data:T,columns:O,selectionMode:`none`,getRowId:e=>e.id},render:R},J={args:{title:`Pipeline форматирования`,data:T,columns:k,selectionMode:`none`,getRowId:e=>e.id},render:R},Y={args:{title:`Скрытие нулей`,data:T,columns:Le,selectionMode:`none`,getRowId:e=>e.id},render:R},X={args:{title:`Слияние дубликатов`,data:E,columns:D,selectionMode:`none`,getRowId:e=>e.id},render:ze},Z={args:{title:`OData metadata adapter`,data:T,columns:M,selectionMode:`none`,getRowId:e=>e.id},render:R},Q={args:{title:`useODataTableColumns: build`,data:T,columns:[],selectionMode:`none`,getRowId:e=>e.id},decorators:[I],parameters:{odataService:N,odataEntity:P,odataMetadata:F},render:s((e,t)=>(0,b.jsx)(_,{args:e,updateArgs:t}))},$={args:{title:`useODataTableColumns: enrich`,data:T,columns:[],selectionMode:`none`,getRowId:e=>e.id},decorators:[I],parameters:{odataService:N,odataEntity:P,odataMetadata:F},render:s((e,t)=>(0,b.jsx)(v,{args:e,updateArgs:t}))},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{
|
|
7
|
-
render: renderDealTableStory
|
|
8
|
-
}`,...z.parameters?.docs?.source},description:{story:`Базовый сценарий плоской таблицы с одиночным выбором.`,...z.parameters?.docs?.description}}},B.parameters={...B.parameters,docs:{...B.parameters?.docs,source:{originalSource:`{
|
|
9
|
-
args: {
|
|
10
|
-
columnPinning: {
|
|
11
|
-
start: ["number"]
|
|
12
|
-
}
|
|
13
|
-
},
|
|
14
|
-
render: createControlledStoryRender<TableProps<DealRow>>((args, updateArgs) => {
|
|
15
|
-
const columnPinning = args.columnPinning ?? {
|
|
16
|
-
start: []
|
|
17
|
-
};
|
|
18
|
-
return <div style={{
|
|
19
|
-
display: "grid",
|
|
20
|
-
gap: "0.75em"
|
|
21
|
-
}}>
|
|
22
|
-
<div style={{
|
|
23
|
-
display: "flex",
|
|
24
|
-
gap: "0.5em",
|
|
25
|
-
flexWrap: "wrap"
|
|
26
|
-
}}>
|
|
27
|
-
<button type="button" onClick={() => updateArgs({
|
|
28
|
-
columnPinning: {
|
|
29
|
-
start: ["number"]
|
|
30
|
-
}
|
|
31
|
-
})}>
|
|
32
|
-
Закрепить «Номер»
|
|
33
|
-
</button>
|
|
34
|
-
<button type="button" onClick={() => updateArgs({
|
|
35
|
-
columnPinning: {
|
|
36
|
-
start: ["number", "client"]
|
|
37
|
-
}
|
|
38
|
-
})}>
|
|
39
|
-
Закрепить «Номер» и «Клиент»
|
|
40
|
-
</button>
|
|
41
|
-
<button type="button" onClick={() => updateArgs({
|
|
42
|
-
columnPinning: {
|
|
43
|
-
start: []
|
|
44
|
-
}
|
|
45
|
-
})}>
|
|
46
|
-
Снять закрепление
|
|
47
|
-
</button>
|
|
48
|
-
</div>
|
|
49
|
-
<div>Закреплено в начале: {columnPinning.start?.length ? columnPinning.start.join(", ") : "ничего"}</div>
|
|
50
|
-
<TableStoryCanvas args={{
|
|
51
|
-
...args,
|
|
52
|
-
columnPinning
|
|
53
|
-
}} updateArgs={updateArgs} />
|
|
54
|
-
</div>;
|
|
55
|
-
})
|
|
56
|
-
}`,...B.parameters?.docs?.source},description:{story:`Демонстрирует controlled start-pinning через внешний story-state без встроенного UI таблицы.`,...B.parameters?.docs?.description}}},V.parameters={...V.parameters,docs:{...V.parameters?.docs,source:{originalSource:`{
|
|
57
|
-
args: {
|
|
58
|
-
selectionMode: "multi",
|
|
59
|
-
selectedRowIds: []
|
|
60
|
-
},
|
|
61
|
-
render: createControlledStoryRender<TableProps<DealRow>>((args, updateArgs) => <div style={{
|
|
62
|
-
display: "grid",
|
|
63
|
-
gap: "0.75em"
|
|
64
|
-
}}>
|
|
65
|
-
<div>Выбрано: {args.selectedRowIds?.length ? args.selectedRowIds.join(", ") : "ничего"}</div>
|
|
66
|
-
<TableStoryCanvas args={args} updateArgs={updateArgs} />
|
|
67
|
-
</div>)
|
|
68
|
-
}`,...V.parameters?.docs?.source},description:{story:`Множественный выбор с отображением текущего результата.`,...V.parameters?.docs?.description}}},H.parameters={...H.parameters,docs:{...H.parameters?.docs,source:{originalSource:`{
|
|
69
|
-
args: {
|
|
70
|
-
data: nonSelectableRows,
|
|
71
|
-
selectionMode: "multi",
|
|
72
|
-
selectedRowIds: [],
|
|
73
|
-
getRowCanSelect: row => !row.isLocked
|
|
74
|
-
},
|
|
75
|
-
render: createControlledStoryRender<TableProps<DealRow>>((args, updateArgs) => <div style={{
|
|
76
|
-
display: "grid",
|
|
77
|
-
gap: "0.75em"
|
|
78
|
-
}}>
|
|
79
|
-
<div>Строка со статусом «Архив» остаётся видимой, но не участвует в выборе.</div>
|
|
80
|
-
<div>Выбрано: {args.selectedRowIds?.length ? args.selectedRowIds.join(", ") : "ничего"}</div>
|
|
81
|
-
<TableStoryCanvas args={args} updateArgs={updateArgs} />
|
|
82
|
-
</div>)
|
|
83
|
-
}`,...H.parameters?.docs?.source},description:{story:`Часть строк можно показать, но запретить выбирать.`,...H.parameters?.docs?.description}}},U.parameters={...U.parameters,docs:{...U.parameters?.docs,source:{originalSource:`{
|
|
84
|
-
args: {
|
|
85
|
-
isFetching: true
|
|
86
|
-
},
|
|
87
|
-
render: renderDealTableStory
|
|
88
|
-
}`,...U.parameters?.docs?.source},description:{story:`Сценарий фонового обновления данных без очистки таблицы.`,...U.parameters?.docs?.description}}},W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`{
|
|
89
|
-
args: {
|
|
90
|
-
data: []
|
|
91
|
-
},
|
|
92
|
-
render: renderDealTableStory
|
|
93
|
-
}`,...W.parameters?.docs?.source},description:{story:`Пустой источник данных.`,...W.parameters?.docs?.description}}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
|
|
94
|
-
args: {
|
|
95
|
-
data: reachEndRows
|
|
96
|
-
},
|
|
97
|
-
render: createControlledStoryRender<TableProps<DealRow>>((args, updateArgs) => <ReachEndTableCanvas args={args} updateArgs={updateArgs} />)
|
|
98
|
-
}`,...G.parameters?.docs?.source},description:{story:`Демонстрация callback при достижении конца списка.`,...G.parameters?.docs?.description}}},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`{
|
|
99
|
-
args: {
|
|
100
|
-
isLoading: true
|
|
101
|
-
},
|
|
102
|
-
render: renderDealTableStory
|
|
103
|
-
}`,...K.parameters?.docs?.source},description:{story:`Состояние первичной загрузки.`,...K.parameters?.docs?.description}}},q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`{
|
|
104
|
-
args: {
|
|
105
|
-
title: "Формула наценки",
|
|
106
|
-
data: formattingRows,
|
|
107
|
-
columns: formulaColumns,
|
|
108
|
-
selectionMode: "none",
|
|
109
|
-
getRowId: row => row.id
|
|
110
|
-
},
|
|
111
|
-
render: renderFormattingTableStory
|
|
112
|
-
}`,...q.parameters?.docs?.source},description:{story:"Сценарий с formula-based колонкой без кастомного `cell`.",...q.parameters?.docs?.description}}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`{
|
|
113
|
-
args: {
|
|
114
|
-
title: "Pipeline форматирования",
|
|
115
|
-
data: formattingRows,
|
|
116
|
-
columns: pipelineColumns,
|
|
117
|
-
selectionMode: "none",
|
|
118
|
-
getRowId: row => row.id
|
|
119
|
-
},
|
|
120
|
-
render: renderFormattingTableStory
|
|
121
|
-
}`,...J.parameters?.docs?.source},description:{story:`Сценарий с pipeline display-formatting и value-state.`,...J.parameters?.docs?.description}}},Y.parameters={...Y.parameters,docs:{...Y.parameters?.docs,source:{originalSource:`{
|
|
122
|
-
args: {
|
|
123
|
-
title: "Скрытие нулей",
|
|
124
|
-
data: formattingRows,
|
|
125
|
-
columns: hiddenZeroColumns,
|
|
126
|
-
selectionMode: "none",
|
|
127
|
-
getRowId: row => row.id
|
|
128
|
-
},
|
|
129
|
-
render: renderFormattingTableStory
|
|
130
|
-
}`,...Y.parameters?.docs?.source},description:{story:"Сценарий со скрытием нулевых значений через `emptyWhenZero`.",...Y.parameters?.docs?.description}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`{
|
|
131
|
-
args: {
|
|
132
|
-
title: "Слияние дубликатов",
|
|
133
|
-
data: divisionMergeRows,
|
|
134
|
-
columns: divisionMergeColumns,
|
|
135
|
-
selectionMode: "none",
|
|
136
|
-
getRowId: row => row.id
|
|
137
|
-
},
|
|
138
|
-
render: renderDivisionMergeTableStory
|
|
139
|
-
}`,...X.parameters?.docs?.source},description:{story:`Сценарий со display-only слиянием подряд идущих дубликатов через пустые ячейки и CSS-склейку.`,...X.parameters?.docs?.description}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
|
|
140
|
-
args: {
|
|
141
|
-
title: "OData metadata adapter",
|
|
142
|
-
data: formattingRows,
|
|
143
|
-
columns: adapterColumns,
|
|
144
|
-
selectionMode: "none",
|
|
145
|
-
getRowId: row => row.id
|
|
146
|
-
},
|
|
147
|
-
render: renderFormattingTableStory
|
|
148
|
-
}`,...Z.parameters?.docs?.source},description:{story:`Сценарий со статическим OData metadata adapter в режиме enrich.`,...Z.parameters?.docs?.description}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`{
|
|
149
|
-
args: {
|
|
150
|
-
title: "useODataTableColumns: build",
|
|
151
|
-
data: formattingRows,
|
|
152
|
-
columns: [],
|
|
153
|
-
selectionMode: "none",
|
|
154
|
-
getRowId: row => row.id
|
|
155
|
-
},
|
|
156
|
-
decorators: [withMockedHookODataMetadata],
|
|
157
|
-
parameters: {
|
|
158
|
-
odataService: HOOK_ODATA_SERVICE,
|
|
159
|
-
odataEntity: HOOK_ODATA_ENTITY,
|
|
160
|
-
odataMetadata: hookMetadata
|
|
161
|
-
},
|
|
162
|
-
render: createControlledStoryRender<TableProps<DealFormattingRow>>((args, updateArgs) => <HookBuildTableStory args={args} updateArgs={updateArgs} />)
|
|
163
|
-
}`,...Q.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме build.",...Q.parameters?.docs?.description}}},$.parameters={...$.parameters,docs:{...$.parameters?.docs,source:{originalSource:`{
|
|
164
|
-
args: {
|
|
165
|
-
title: "useODataTableColumns: enrich",
|
|
166
|
-
data: formattingRows,
|
|
167
|
-
columns: [],
|
|
168
|
-
selectionMode: "none",
|
|
169
|
-
getRowId: row => row.id
|
|
170
|
-
},
|
|
171
|
-
decorators: [withMockedHookODataMetadata],
|
|
172
|
-
parameters: {
|
|
173
|
-
odataService: HOOK_ODATA_SERVICE,
|
|
174
|
-
odataEntity: HOOK_ODATA_ENTITY,
|
|
175
|
-
odataMetadata: hookMetadata
|
|
176
|
-
},
|
|
177
|
-
render: createControlledStoryRender<TableProps<DealFormattingRow>>((args, updateArgs) => <HookEnrichTableStory args={args} updateArgs={updateArgs} />)
|
|
178
|
-
}`,...$.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме enrich.",...$.parameters?.docs?.description}}},Be=[`Basic`,`WithColumnPinning`,`MultiSelect`,`WithDisabledRows`,`Fetching`,`Empty`,`ReachEnd`,`Loading`,`WithFormulaColumn`,`WithFormattingPipeline`,`WithHiddenZero`,`WithMergedDuplicates`,`WithODataMetadataAdapter`,`WithUseODataTableColumnsBuildHook`,`WithUseODataTableColumnsEnrichHook`]})))()}export{Ve as _,V as a,B as c,q as d,Y as f,$ as g,Q as h,K as i,H as l,Z as m,W as n,G as o,X as p,U as r,Fe as s,z as t,J as u};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-ltYEol2F.js";import{i as r,n as i,r as a,t as o}from"./formatMultiSelectOptionCount-xGq1uM2H.js";import{a as s,c,d as l,i as u,l as d,n as f,r as p,s as m,t as h}from"./TreePickerBase-CbULuQpp.js";function g(e,t){let n=l(e,t),r=Object.values(n).reduce((e,t)=>e+t.length,0);if(r!==0){if(r===1){let n=[...e].sort((e,n)=>(t.preorderIndexById.get(e)??2**53-1)-(t.preorderIndexById.get(n)??2**53-1))[0],r=t.nodeById.get(n);return r?r.label:void 0}return o(r)}}function _(e,t,n){let r=d(e,n),i=d(t,n);return r.size===i.size&&[...r].every(e=>i.has(e))}function v({label:e,description:t,disabled:n,placeholder:i=`Выберите значения`,size:a,nodes:o,value:f,onChange:v,query:x,defaultQuery:S,onQuery:C,isLoading:w,error:T,optionsLayout:E=`tree`,defaultExpandedCodeKeys:D}){let[O,k]=(0,y.useState)(!1),A=(0,y.useMemo)(()=>p(o),[o]),{draftValue:j,setDraftValue:M,prepareOpen:N}=r({value:f,open:O,onCommit:v,isEqual:(e,t)=>_(e,t,A)}),P=O?j:f,F=(0,y.useMemo)(()=>d(P,A),[P,A]),I=(0,y.useMemo)(()=>s(F,A),[F,A]),L=(0,y.useMemo)(()=>new Set([...A.nodeById.keys()].filter(e=>A.nodeById.get(e)?.disabled!==!0&&!m(e,F,A)&&!I.selectedIds.has(e)&&u(A,[e]).size===0)),[F,I.selectedIds,A]),R=(0,y.useMemo)(()=>g(F,A),[F,A]);return(0,b.jsx)(h,{label:e,description:t,disabled:n,placeholder:i,size:a,nodes:o,selectedIds:I.selectedIds,partialIds:I.partialIds,selectionMode:`multi`,optionsLayout:E,defaultExpandedCodeKeys:D,unavailableNodeIds:L,open:O,onOpenChange:e=>{e&&!O&&N(),k(e)},bulkActions:{onSelectAll:()=>{M(l(u(A),A))},onDeselectAll:()=>M({})},triggerMode:`search`,selectedSummary:R,query:x,defaultQuery:S,onQuery:C,onNodeActivate:(e,t)=>{M(c({},e.id,A,t))},onNodeToggleSelection:(e,t)=>{M(n=>c(n,e.id,A,t))},onClearSelection:()=>{M({}),O||v({})},isLoading:w,error:T})}var y,b;function x(){return(x=e((()=>{y=t(),i(),a(),f(),b=n(),v.__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}},defaultExpandedCodeKeys:{required:!1,tsType:{name:`unknown`},description:"Ключи уровней, узлы которых раскрываются до ручного действия пользователя.\nВ режиме `columns` дерево по-прежнему отображается полностью раскрытым."}},composes:[`Omit`]}})))()}export{x as n,v as t};
|