@ryuzaki13/react-foundation-ui 3.10.1 → 3.12.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/README.md +11 -0
- package/dist/chunks/{TextEditorLexicalClient-Cj6yjCGm.js → TextEditorLexicalClient-apy-Cugj.js} +101 -101
- package/dist/chunks/{TextEditorLexicalClient-Cj6yjCGm.js.map → TextEditorLexicalClient-apy-Cugj.js.map} +1 -1
- package/dist/floating-windows/FloatingWindow.d.ts +19 -0
- package/dist/floating-windows/FloatingWindow.d.ts.map +1 -0
- package/dist/floating-windows/FloatingWindowHeader.d.ts +14 -0
- package/dist/floating-windows/FloatingWindowHeader.d.ts.map +1 -0
- package/dist/floating-windows/FloatingWindows.d.ts +16 -0
- package/dist/floating-windows/FloatingWindows.d.ts.map +1 -0
- package/dist/floating-windows/FloatingWindowsBoundary.d.ts +10 -0
- package/dist/floating-windows/FloatingWindowsBoundary.d.ts.map +1 -0
- package/dist/floating-windows/FloatingWindowsProvider.d.ts +11 -0
- package/dist/floating-windows/FloatingWindowsProvider.d.ts.map +1 -0
- package/dist/floating-windows/index.d.ts +4 -0
- package/dist/floating-windows/index.d.ts.map +1 -0
- package/dist/floating-windows/index.js +576 -0
- package/dist/floating-windows/index.js.map +1 -0
- package/dist/floating-windows/lib/constrainFloatingWindowPosition.d.ts +8 -0
- package/dist/floating-windows/lib/constrainFloatingWindowPosition.d.ts.map +1 -0
- package/dist/floating-windows/lib/floatingWindowsStorage.d.ts +10 -0
- package/dist/floating-windows/lib/floatingWindowsStorage.d.ts.map +1 -0
- package/dist/floating-windows/lib/getFloatingWindowStyle.d.ts +5 -0
- package/dist/floating-windows/lib/getFloatingWindowStyle.d.ts.map +1 -0
- package/dist/floating-windows/lib/isFloatingWindowId.d.ts +3 -0
- package/dist/floating-windows/lib/isFloatingWindowId.d.ts.map +1 -0
- package/dist/floating-windows/lib/selectFloatingWindowCascadePosition.d.ts +8 -0
- package/dist/floating-windows/lib/selectFloatingWindowCascadePosition.d.ts.map +1 -0
- package/dist/floating-windows/lib/selectFloatingWindowRestoreFocus.d.ts +3 -0
- package/dist/floating-windows/lib/selectFloatingWindowRestoreFocus.d.ts.map +1 -0
- package/dist/floating-windows/model/FloatingWindowsContext.d.ts +4 -0
- package/dist/floating-windows/model/FloatingWindowsContext.d.ts.map +1 -0
- package/dist/floating-windows/model/createFloatingWindowsStore.d.ts +8 -0
- package/dist/floating-windows/model/createFloatingWindowsStore.d.ts.map +1 -0
- package/dist/floating-windows/model/floatingWindowMoveTypes.d.ts +27 -0
- package/dist/floating-windows/model/floatingWindowMoveTypes.d.ts.map +1 -0
- package/dist/floating-windows/model/floatingWindowsTypes.d.ts +40 -0
- package/dist/floating-windows/model/floatingWindowsTypes.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowFocus.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowFocus.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowMeasurements.d.ts +5 -0
- package/dist/floating-windows/model/useFloatingWindowMeasurements.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowMove.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowMove.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowSnapshot.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowSnapshot.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowsBounds.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowsBounds.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowsPersistence.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowsPersistence.d.ts.map +1 -0
- package/dist/floating-windows/model/useFloatingWindowsStore.d.ts +4 -0
- package/dist/floating-windows/model/useFloatingWindowsStore.d.ts.map +1 -0
- package/dist/notifications/index.js +9 -9
- package/dist/styles.css +1 -1
- package/dist/text-editor/TextEditorLexicalViewer.d.ts +10 -0
- package/dist/text-editor/TextEditorLexicalViewer.d.ts.map +1 -0
- package/dist/text-editor/index.d.ts +1 -0
- package/dist/text-editor/index.d.ts.map +1 -1
- package/dist/text-editor/index.js +298 -7
- package/dist/text-editor/index.js.map +1 -1
- package/dist/text-editor/lib/viewer/getTextEditorViewerElementStyle.d.ts +5 -0
- package/dist/text-editor/lib/viewer/getTextEditorViewerElementStyle.d.ts.map +1 -0
- package/dist/text-editor/lib/viewer/parseTextEditorViewerDocument.d.ts +4 -0
- package/dist/text-editor/lib/viewer/parseTextEditorViewerDocument.d.ts.map +1 -0
- package/dist/text-editor/lib/viewer/resolveTextEditorViewerLink.d.ts +3 -0
- package/dist/text-editor/lib/viewer/resolveTextEditorViewerLink.d.ts.map +1 -0
- package/dist/text-editor/model/textEditorViewerTypes.d.ts +58 -0
- package/dist/text-editor/model/textEditorViewerTypes.d.ts.map +1 -0
- package/dist/text-editor/ui/viewer/TextEditorViewerNode.d.ts +7 -0
- package/dist/text-editor/ui/viewer/TextEditorViewerNode.d.ts.map +1 -0
- package/dist/text-editor/ui/viewer/TextEditorViewerText.d.ts +8 -0
- package/dist/text-editor/ui/viewer/TextEditorViewerText.d.ts.map +1 -0
- package/package.json +5 -1
- package/storybook-static/assets/{Badge-7nsS5Yyj.js → Badge-Dn4r-dgK.js} +1 -1
- package/storybook-static/assets/{Badge.stories-BzQKeDqC.js → Badge.stories-C8jgD6Tm.js} +1 -1
- package/storybook-static/assets/{BadgeList-WzFV9MB1.js → BadgeList-DoZGQ7qG.js} +1 -1
- package/storybook-static/assets/{BarcodeScannerDialog.stories-Ci8Mf9WX.js → BarcodeScannerDialog.stories-SWsYyoae.js} +1 -1
- package/storybook-static/assets/{Button-DqsSng-I.js → Button-BHqigqOj.js} +1 -1
- package/storybook-static/assets/{Button-6F3OVyTc.js → Button-DLYgesJU.js} +1 -1
- package/storybook-static/assets/{Button.stories-PNc3lIYB.js → Button.stories-B-YCCpsv.js} +1 -1
- package/storybook-static/assets/{CalendarView-BT9X9tky.js → CalendarView-DC9-KqBg.js} +1 -1
- package/storybook-static/assets/{CheckBox-BJhTyl1K.js → CheckBox-A1DE9OKH.js} +1 -1
- package/storybook-static/assets/{CheckBox-BasxUZYS.js → CheckBox-BhDEikPn.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-DLRA5q3H.js → CheckBox.stories-CCwPabOj.js} +1 -1
- package/storybook-static/assets/Color-6AOWCN3U-CZ7Lqth4.js +1 -0
- package/storybook-static/assets/{ContextMenu-BckwURZg.js → ContextMenu-C7QDzxj5.js} +1 -1
- package/storybook-static/assets/{ContextMenu-OOsbvmOa.js → ContextMenu-snDFBA5B.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-BD-wMDNw.js → ContextMenu.stories-DmQHbLWt.js} +1 -1
- package/storybook-static/assets/{DateInput-DT6btAWU.js → DateInput-BkVJLdmV.js} +1 -1
- package/storybook-static/assets/{DateInput-B5MxQUHL.js → DateInput-DLOTW8zG.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-BK2brwe_.js → DateInput.stories-DNMVE7-m.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-gRdIuTx9.js → DateRangePresetSelect-Aswl3yfO.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-Dplr79Cm.js → DateRangePresetSelect-FZ5Wqp5Q.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-BRksGdxw.js → DateRangePresetSelect.stories-D7j1ye-X.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect-1MSPac-V.js → DeprecatedMultiSelect-BrU5iHiB.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect-BOxmEW2D.js → DeprecatedMultiSelect-DZm42dZe.js} +1 -1
- package/storybook-static/assets/{DeprecatedMultiSelect.stories-Ax0zv6Kb.js → DeprecatedMultiSelect.stories-DX5gJVg8.js} +1 -1
- package/storybook-static/assets/{Detail-_5TyqOha.js → Detail-Dm2OB35c.js} +1 -1
- package/storybook-static/assets/{Detail.stories-CJbeEBiY.js → Detail.stories-ChjIDw9R.js} +1 -1
- package/storybook-static/assets/{Dialog-HBOYhMQq.js → Dialog-5Bjs3MIP.js} +1 -1
- package/storybook-static/assets/{Dialog-BodfEiIi.js → Dialog-CppiFu4m.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-Ds4F0ZoJ.js → Dialog.stories-DNKVgKJf.js} +1 -1
- package/storybook-static/assets/{Disclosure-BbvtIOyN.js → Disclosure-B_rE1zlW.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-CnSK79hZ.js → Disclosure.stories-ATxKR5IU.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-Dd0BeL4o.js → DisclosureGroup-ClweT22a.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-BX-ThlFg.js → DocsRenderer-JROSPFPF-m7QPTTWT.js} +1 -1
- package/storybook-static/assets/{DropZone-DPqYieZH.js → DropZone-C6Qx5YnY.js} +1 -1
- package/storybook-static/assets/{DropZone-CCkHaYAD.js → DropZone-CEnjaRlb.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-lfKkNIIl.js → DropZone.stories-8b7TFwCV.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-QWp-lSol.js → DropdownMenu-BvqYqsyj.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-DxPp3zYd.js → ExpandableActionPanel-DfZA1lTx.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-BiklI55p.js → ExpandableActionPanel.stories-Bq2XMot-.js} +1 -1
- package/storybook-static/assets/{Flex-S4mwRnc2.js → Flex-BFGhhseF.js} +1 -1
- package/storybook-static/assets/{Flex.stories-DRBLrgrW.js → Flex.stories-Ct2TXMNG.js} +1 -1
- package/storybook-static/assets/{FlexContainer-4Ap7vbIt.js → FlexContainer-DNTMFsKB.js} +1 -1
- package/storybook-static/assets/{FlexItem-Dwqi7KeT.js → FlexItem-DdZg96Tw.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-D8FScEoc.js → FloatingPopover-Qm2OYQyi.js} +1 -1
- package/storybook-static/assets/FloatingWindows-C2FJO6ij.css +1 -0
- package/storybook-static/assets/FloatingWindows.stories-DSXleet4.js +13 -0
- package/storybook-static/assets/FormattedTableCell-Cfdl2sgg.js +15 -0
- package/storybook-static/assets/{Grid-CJ5RLrgv.js → Grid-DF06uQ48.js} +1 -1
- package/storybook-static/assets/{Grid-DIYjEdUA.js → Grid-DlctIqYo.js} +1 -1
- package/storybook-static/assets/{Grid.stories-Bl35lMkU.js → Grid.stories-CqMEpZ8C.js} +1 -1
- package/storybook-static/assets/{GridContainer-B2iAnXeB.js → GridContainer-BlkGC1Ti.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories--E79MUTS.js → ImageCropper.stories-GlDzLRHa.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-D0stahXz.js → ImageRenderer-DKVKzwts.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-C_Ir6A3m.js → ImageRenderer.stories-D5Ot_LFG.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-DbY7pwWs.js → ImageView.stories-t9WED3jc.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-D2jfTzCV.js → ImageViewer.stories-CTLSla9v.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-DlvGnNv4.js → ImageViewerRuntime-B0a-Sycn.js} +1 -1
- package/storybook-static/assets/{Input-CzvWPW0I.js → Input-C-RwifM5.js} +1 -1
- package/storybook-static/assets/{Input-av5ktymr.js → Input-L7KSl95J.js} +1 -1
- package/storybook-static/assets/{Input.stories-CvLnu270.js → Input.stories-RZ8DST5q.js} +1 -1
- package/storybook-static/assets/{InputDateTime-D5bQuB9a.js → InputDateTime-C3SMAFaX.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-BD9Pt7vB.js → InputDateTime.stories-Bo76yqgM.js} +1 -1
- package/storybook-static/assets/{InputFile-ulrG6ECh.js → InputFile-ByiVAcXi.js} +1 -1
- package/storybook-static/assets/{InputFile-C3nj3qsi.js → InputFile-DeMKgRCz.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-CEewSWb_.js → InputFile.stories-C2xolZZp.js} +1 -1
- package/storybook-static/assets/{InputFiles-DZ1nUYOE.js → InputFiles-D2X5XwMg.js} +1 -1
- package/storybook-static/assets/{InputFiles-lF7Ys1hh.js → InputFiles-DW_A7HZQ.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-CCptKLDn.js → InputFiles.stories-Cy4lGiDs.js} +1 -1
- package/storybook-static/assets/{InputFilesList-DTJkMHNI.js → InputFilesList-D-T9k_qj.js} +1 -1
- package/storybook-static/assets/{InputImage-lDHbW_ac.js → InputImage-COyE-G8n.js} +1 -1
- package/storybook-static/assets/{InputImage-CIPZL6uS.js → InputImage-VviyVqWs.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-CQ2BBGf-.js → InputImage.stories-C7PZBPak.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-DD7TZeA4.js → InteractiveComponents-DsXWc2Ba.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-Bbo3l8WO.js → InteractiveComponents.stories-xzIOC6VP.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-uw1knHzA.js → LayoutPicker-CEe3rtKw.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-A7VlDbc0.js → LayoutPicker-DqauomnH.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-DDR6oiSN.js → LayoutPicker.stories-DZS4nX4W.js} +1 -1
- package/storybook-static/assets/{Listbox-CmkI7dm_.js → Listbox-DMBqQzvF.js} +1 -1
- package/storybook-static/assets/{Listbox-CO1BjyFs.js → Listbox-DcoYj_fu.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-BIPmBbuG.js → Listbox.stories-CiEKNklg.js} +1 -1
- package/storybook-static/assets/{Modal-C3JdXj6Q.js → Modal-B2NdQSX-.js} +1 -1
- package/storybook-static/assets/{Modal-IXMZUaaw.js → Modal-XzWN4rYg.js} +1 -1
- package/storybook-static/assets/{Modal.stories-BD-UnVeM.js → Modal.stories-DiO0SJb6.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-zJVg8-dg.js → ModalManagerProvider-CXZWFJBk.js} +1 -1
- package/storybook-static/assets/{MultiSelect-DZKjK53B.js → MultiSelect-Bdo1Sjz8.js} +1 -1
- package/storybook-static/assets/{MultiSelect-CGoyA8-m.js → MultiSelect-CIrw0Nez.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-D65mpYYt.js → MultiSelect.stories-DsYsvZRr.js} +1 -1
- package/storybook-static/assets/{MultiSelectCore-ih1pgvuq.js → MultiSelectCore-DVlr9xCh.js} +1 -1
- package/storybook-static/assets/{NoData-32gM9qt4.js → NoData-D0rf5MW3.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-pkEhxgz2.js → NotificationsHost-BQZaAM-V.js} +9 -9
- package/storybook-static/assets/{NotificationsHost.stories-BqIayryx.js → NotificationsHost.stories-DwymJZby.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-D42gAcHg.js → ODataMultiSelect-DMSWI6tE.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-DfAkKAsG.js → ODataMultiSelect.stories-B3zztIBx.js} +2 -2
- package/storybook-static/assets/{ODataSelect-DPOMWPKO.js → ODataSelect-C7HWF4Mk.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-DHs3wp7E.js → ODataSelect.stories-BTqluN2n.js} +2 -2
- package/storybook-static/assets/{ODataTreeMultiSelect-CC8yuaVP.js → ODataTreeMultiSelect-D1C46tO1.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-BtwLdGK6.js → ODataTreeMultiSelect.stories-Cau6yuzj.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-qcitpYxj.js → ODataTreeSelect-DjieOI9n.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-1r_tkUVi.js → ODataTreeSelect.stories-C2QXdt7d.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-wz4Qujpx.js → OneStepScroller-srOmxRQp.js} +1 -1
- package/storybook-static/assets/{Option-Beom2xTg.js → Option-7XzYAa1X.js} +1 -1
- package/storybook-static/assets/{OptionButton-D_ZCVbsd.js → OptionButton-De2RG5bE.js} +1 -1
- package/storybook-static/assets/{OptionContent-FZ-u9L1s.js → OptionContent-J_mD8o8Q.js} +1 -1
- package/storybook-static/assets/{OptionContentContainer-HVNOgpjm.js → OptionContentContainer-BMe8XiaH.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-qevVtoSU.js → PeriodSelect-BanQI_dT.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-DbdeznMQ.js → PeriodSelect-DffdZHTx.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-BLi_6rpY.js → PeriodSelect.stories-D_mZIvPa.js} +1 -1
- package/storybook-static/assets/{PickerField-BHSRcQY6.js → PickerField-BiRCrEVk.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-Cxk3YQGF.js → PickerTriggerActions-SYQofxvL.js} +1 -1
- package/storybook-static/assets/{Popover-BosMVXTI.js → Popover-CyFO9TsF.js} +1 -1
- package/storybook-static/assets/{Popover-De2fvkIB.js → Popover-DVLKhPpI.js} +1 -1
- package/storybook-static/assets/{Popover.stories-DM-Plj05.js → Popover.stories-z-_6ttYX.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-jersOEYO.js → PresetRangeDateInput-CNwYUovX.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-CCQuBkJj.js → PresetRangeDateInput-DusPRYOo.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-DwqDWXX9.js → PresetRangeDateInput.stories-C_o_VW2j.js} +1 -1
- package/storybook-static/assets/{PresetSelect-BhwHbWmS.js → PresetSelect-CV3zwYQR.js} +1 -1
- package/storybook-static/assets/{README-LWfExOhc.js → README-0xXSqDp8.js} +1 -1
- package/storybook-static/assets/{README-DmJq-c8n.js → README-2-1qM_na.js} +1 -1
- package/storybook-static/assets/{README-B5eMX8_9.js → README-4aHWePja.js} +1 -1
- package/storybook-static/assets/{README-DzASMBMv.js → README-7eESTN29.js} +1 -1
- package/storybook-static/assets/{README-BzVVPLXk.js → README-B5zjJGVN.js} +1 -1
- package/storybook-static/assets/{README-DQl_3tX1.js → README-BG0ZHFMO.js} +1 -1
- package/storybook-static/assets/{README-ECCgQcGo.js → README-BJ0oZ6IK.js} +1 -1
- package/storybook-static/assets/{README-DT96eoyc.js → README-BaVIhvx2.js} +1 -1
- package/storybook-static/assets/{README-1UUrJXjZ.js → README-BdSEAONV.js} +1 -1
- package/storybook-static/assets/{README-D_d6frx1.js → README-BgG12pti.js} +1 -1
- package/storybook-static/assets/{README-CioPc-xb.js → README-BggXgUKF.js} +1 -1
- package/storybook-static/assets/{README-DK5aZdOt.js → README-BjBW3_iS.js} +1 -1
- package/storybook-static/assets/{README-DKI2c8YJ.js → README-Bjq-bxH1.js} +1 -1
- package/storybook-static/assets/{README-o4PUljT6.js → README-BmcSs4kj.js} +1 -1
- package/storybook-static/assets/{README-BPSG9KrB.js → README-Bn7kAPLQ.js} +1 -1
- package/storybook-static/assets/{README-bWB0c7pN.js → README-BoQbGA96.js} +1 -1
- package/storybook-static/assets/{README-CrhHHw0i.js → README-BwUFmp9h.js} +1 -1
- package/storybook-static/assets/{README-CPZBUXWs.js → README-BwvDtGJp.js} +1 -1
- package/storybook-static/assets/{README-DeHGaTaW.js → README-BxC_3EeL.js} +1 -1
- package/storybook-static/assets/{README-CvReVgGJ.js → README-C-U-dI9P.js} +1 -1
- package/storybook-static/assets/{README-D5YLxtgR.js → README-C-e2RqTI.js} +1 -1
- package/storybook-static/assets/{README-D09okhy9.js → README-C3-4o6yH.js} +1 -1
- package/storybook-static/assets/{README-BNsU3Cqx.js → README-CFpsye1R.js} +1 -1
- package/storybook-static/assets/{README-BK8k_Q4m.js → README-CJG1QnZ8.js} +1 -1
- package/storybook-static/assets/{README-BD5f1if4.js → README-Cc67rRzO.js} +1 -1
- package/storybook-static/assets/{README-BQDFmWGi.js → README-CgHkf8AZ.js} +1 -1
- package/storybook-static/assets/{README-DzrrH56m.js → README-CjwjADv4.js} +1 -1
- package/storybook-static/assets/{README-CvzdarfH.js → README-CtA0tP_V.js} +1 -1
- package/storybook-static/assets/{README-CmzO6bzh.js → README-D0SwEPQG.js} +1 -1
- package/storybook-static/assets/{README-sPm51M3K.js → README-D0eHrEQF.js} +1 -1
- package/storybook-static/assets/{README-Rk3Krdys.js → README-D8bNkmba.js} +1 -1
- package/storybook-static/assets/{README-Cpk-Tr_W.js → README-DCP4ywXT.js} +1 -1
- package/storybook-static/assets/{README-CJ6rsYUk.js → README-DEHjbK77.js} +1 -1
- package/storybook-static/assets/{README-DNeDK1_H.js → README-DHXjeQQR.js} +1 -1
- package/storybook-static/assets/{README-Df8F75dr.js → README-DJsEoOXI.js} +1 -1
- package/storybook-static/assets/{README-BCEKAY_J.js → README-DWfKideq.js} +1 -1
- package/storybook-static/assets/{README-29WDFTDH.js → README-DZD6wqGT.js} +1 -1
- package/storybook-static/assets/{README-CJFgcV8C.js → README-D_V-SEnq.js} +1 -1
- package/storybook-static/assets/{README-By0zyJQ-.js → README-DkEysBXh.js} +1 -1
- package/storybook-static/assets/{README-33qTnj5l.js → README-DuB9PiOM.js} +1 -1
- package/storybook-static/assets/{README-BIvHy4kr.js → README-Duk1AG16.js} +1 -1
- package/storybook-static/assets/{README-BKLeD4y3.js → README-DwC2gAZg.js} +1 -1
- package/storybook-static/assets/{README-Cz14JUTC.js → README-MX6_MwDQ.js} +1 -1
- package/storybook-static/assets/{README-Dc2qBccm.js → README-TaumiOmj.js} +1 -1
- package/storybook-static/assets/{README-B_tg7QVI.js → README-_ysKMvAx.js} +1 -1
- package/storybook-static/assets/{README-BAlXRtAz.js → README-b_q7W3j3.js} +1 -1
- package/storybook-static/assets/{README-B5rmNIab.js → README-gE_kxplo.js} +1 -1
- package/storybook-static/assets/{README-DS63ZnOT.js → README-gjTa9tZ_.js} +1 -1
- package/storybook-static/assets/{README-NHHRscRF.js → README-p62MFS5g.js} +1 -1
- package/storybook-static/assets/{README-CHllxFPj.js → README-swRdnv1f.js} +1 -1
- package/storybook-static/assets/{README-BfRKdJtw.js → README-x--9qFul.js} +1 -1
- package/storybook-static/assets/{README-O9BJmE-H.js → README-xDqMMO8-.js} +1 -1
- package/storybook-static/assets/{README-BoJXfTe6.js → README-xWo3G40o.js} +1 -1
- package/storybook-static/assets/{RadioButton-BZiBFXe1.js → RadioButton-B6x2_7or.js} +1 -1
- package/storybook-static/assets/{RadioButton-CBLdgMz4.js → RadioButton-CBABLSvE.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-BP5yM5qg.js → RadioButton.stories-DLd7EmuZ.js} +1 -1
- package/storybook-static/assets/{RadioGroup-DYRfZVGC.js → RadioGroup-CIaXj3zQ.js} +1 -1
- package/storybook-static/assets/{RadioGroup-epjQdSZn.js → RadioGroup-Ce5Irxz3.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-UOjXIk6v.js → RadioGroup.stories-DKhMElyC.js} +1 -1
- package/storybook-static/assets/{ResponsiveLayoutPreview-BHBxtn2W.js → ResponsiveLayoutPreview-Bcojizl4.js} +1 -1
- package/storybook-static/assets/{Scrollable-DKQa75cf.js → Scrollable-B5e-IEe8.js} +1 -1
- package/storybook-static/assets/{Scrollable-BBYov1Hn.js → Scrollable-BfCUp0BO.js} +1 -1
- package/storybook-static/assets/{Scrollable.stories-BH1-i6nI.js → Scrollable.stories-B4IMoipT.js} +1 -1
- package/storybook-static/assets/{Select-DU6Eh0Lt.js → Select-CdjYSSyG.js} +1 -1
- package/storybook-static/assets/{Select-DYOCTPiv.js → Select-DYHUwcLE.js} +1 -1
- package/storybook-static/assets/{Select.stories-BF3svbAH.js → Select.stories-BuaXB6qE.js} +1 -1
- package/storybook-static/assets/{Separator-_gvt1sqm.js → Separator-CS6gkWSA.js} +1 -1
- package/storybook-static/assets/{Separator-CxviJxG5.js → Separator-D45blL6r.js} +1 -1
- package/storybook-static/assets/{Separator.stories-DN6hlZl5.js → Separator.stories-C2GzCEGW.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-BVTOrYLs.js → SerializableSelect-7raamiuG.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-pcWq603M.js → SerializableSelect.stories-CD0e6DQk.js} +1 -1
- package/storybook-static/assets/{ShimmerText-BDDa_Wf7.js → ShimmerText-DkiewbBe.js} +1 -1
- package/storybook-static/assets/{ShimmerText.stories-DdZPIKwl.js → ShimmerText.stories-DrXMcGDO.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-q-eu2xUU.js → SingleDateTimeInput-BTIgqxH7.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-sGTkT8ZA.js → SingleDateTimeInput-Dj_VSvfb.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-X7CMAFsq.js → SingleDateTimeInput.stories-CnYFrOUX.js} +1 -1
- package/storybook-static/assets/{Slider-CaKY8LIJ.js → Slider-CLE5MSJr.js} +1 -1
- package/storybook-static/assets/{Slider-CqNWljkT.js → Slider-D4wvDQDc.js} +1 -1
- package/storybook-static/assets/{Slider.stories-CMxutCGM.js → Slider.stories-Cbz3RilT.js} +1 -1
- package/storybook-static/assets/{SliderInput-HUUN5_IF.js → SliderInput-AC9oLjGF.js} +1 -1
- package/storybook-static/assets/{SliderInput-scYwk-4g.js → SliderInput-DbyDo3fR.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-CDhgeql1.js → SliderInput.stories-69pRH0Uk.js} +1 -1
- package/storybook-static/assets/{Sortable-CaysnUNW.js → Sortable-E3DirII-.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-C4gHc5ka.js → Sortable.stories-BbmTcem4.js} +1 -1
- package/storybook-static/assets/{Splitter-6cU1s7Qr.js → Splitter-DbaIQk2G.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-CA9A-CZ-.js → Splitter.stories-HntpFa6w.js} +1 -1
- package/storybook-static/assets/{StateSelect-OHl6KWge.js → StateSelect-8r4Qlf4Y.js} +1 -1
- package/storybook-static/assets/{StateSelect-BAqjdi4g.js → StateSelect-C7ZIrgDB.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-xX3ujKGO.js → StateSelect.stories-CfUJCQGE.js} +1 -1
- package/storybook-static/assets/{StatusIndicator-C_7dWY2t.js → StatusIndicator-IqUZ24rN.js} +1 -1
- package/storybook-static/assets/{StatusIndicator.stories-BRlVzKf7.js → StatusIndicator.stories-DhKREzk8.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-DFPLwtHW.js → StringToggle.stories-BOC_AuIw.js} +1 -1
- package/storybook-static/assets/{Switch-CrlrIm3t.js → Switch-58npo6H_.js} +1 -1
- package/storybook-static/assets/{Switch-DHcMczAC.js → Switch-C4wfyH7_.js} +1 -1
- package/storybook-static/assets/{Switch.stories-LhTPX_R-.js → Switch.stories-BpABAFmv.js} +1 -1
- package/storybook-static/assets/{Table-Ct8iqJEY.js → Table-RAMtWu9C.js} +1 -1
- package/storybook-static/assets/Table.stories-Cth_AbDh.js +184 -0
- package/storybook-static/assets/{TableEditor.stories-Qtqr_l4g.js → TableEditor.stories-IfJyun1v.js} +1 -1
- package/storybook-static/assets/{Tabs-CC0IIQwl.js → Tabs-CX67nGv0.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-Bo_Y-dq8.js → Tabs.stories-6wO9Pmly.js} +1 -1
- package/storybook-static/assets/{TabsBox-BMNvHsCH.js → TabsBox-QKS_MMQ0.js} +1 -1
- package/storybook-static/assets/{TagInput-BLwbzCit.js → TagInput-R6ANDdvh.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-DNcD4tn4.js → TagInput.stories-DAyX89-l.js} +1 -1
- package/storybook-static/assets/{Text-Bih-aO3C.js → Text-D3vBpXH0.js} +1 -1
- package/storybook-static/assets/TextEditorLexicalViewer-DRQG2UON.css +1 -0
- package/storybook-static/assets/TextEditorLexicalViewer.stories-RdypWNwx.js +66 -0
- package/storybook-static/assets/{Textarea-DCnLF4aj.js → Textarea-BPtHeqrt.js} +1 -1
- package/storybook-static/assets/{Textarea-D3os1biP.js → Textarea-Cio32hA3.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-CIFzZQ5Z.js → Textarea.stories-DDVaU3Ho.js} +1 -1
- package/storybook-static/assets/{TimePanel-BcVGesht.js → TimePanel-e1drsuDA.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-C6_xVdCq.js → TimePanel.stories-Dze9jjtv.js} +1 -1
- package/storybook-static/assets/{Toggle-BD0YAuO2.js → Toggle-BuLJ3UR_.js} +1 -1
- package/storybook-static/assets/{Toggle-CtABgcO5.js → Toggle-D8UQ_CuL.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-DnTnFcGB.js → Toggle.stories-0wuia83j.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-DHk_QP2h.js → TreeMultiSelect-Ciy9H9Q3.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-Bp_Akwgc.js → TreeMultiSelect-QWOfniqX.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-CBVQbR1c.js → TreeMultiSelect.stories-C5bKUKLA.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-BhWXyIoO.js → TreePickerBase-DAld1sj1.js} +1 -1
- package/storybook-static/assets/{TreeSelect-HNbghKYG.js → TreeSelect-ANFeSIqw.js} +1 -1
- package/storybook-static/assets/{TreeSelect-DleoF0hJ.js → TreeSelect-DKUJycNd.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-BigcPfEn.js → TreeSelect.stories-BJErYrTv.js} +1 -1
- package/storybook-static/assets/{TreeTable-BNkuyFKP.js → TreeTable-DcyUjVXj.js} +1 -1
- package/storybook-static/assets/TreeTable.stories-BnyxdNPz.js +138 -0
- package/storybook-static/assets/blocks-Bn1nLfdu.js +287 -0
- package/storybook-static/assets/{check-DRMDOowi.js → check-DTcQ3CsH.js} +1 -1
- package/storybook-static/assets/{chevron-down-D0ohA4RZ.js → chevron-down-CRBjmU7w.js} +1 -1
- package/storybook-static/assets/{chevron-left-CLqpYqDQ.js → chevron-left-CBPOblch.js} +1 -1
- package/storybook-static/assets/{chevron-right-CXryGzSx.js → chevron-right-Bryg2EIf.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-CxLeSIMq.js → chunk-W22LQPXL-44DPZKTZ.js} +1 -1
- package/storybook-static/assets/{circle-alert-l6NwXGUY.js → circle-alert-DviK8puL.js} +1 -1
- package/storybook-static/assets/{circle-check-B-r716dD.js → circle-check-B1-l7Oh4.js} +1 -1
- package/storybook-static/assets/{contextMenu-Br4n839h.js → contextMenu-DtHQnSjw.js} +1 -1
- package/storybook-static/assets/{download-DqFSGBvN.js → download-BuLQijJq.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-B-qFeMZZ.js → floating-ui.react-iTaFJp98.js} +1 -1
- package/storybook-static/assets/{foundationApi-DxO3oR-c.js → foundationApi-Bjw5h-ru.js} +1 -1
- package/storybook-static/assets/{foundationLib-CTFFCQvn.js → foundationLib-BcePCYWP.js} +1 -1
- package/storybook-static/assets/{hooks-CAgVZJ-F.js → hooks-CiUB_4kG.js} +1 -1
- package/storybook-static/assets/{iframe-E950Ehp0.js → iframe-BvendKJ_.js} +4 -4
- package/storybook-static/assets/iframe-BzGX4Usd.js +1 -0
- package/storybook-static/assets/{info-Dp6XZGwP.js → info-Dq-9oYHd.js} +1 -1
- package/storybook-static/assets/isRecord-DXDTW-jA-CMenzszF.js +1 -0
- package/storybook-static/assets/odata-f2MNATrV.js +1 -0
- package/storybook-static/assets/{odataStoryFixtures-CDArjyM7.js → odataStoryFixtures-BaKh8qyu.js} +1 -1
- package/storybook-static/assets/{react-CGpO0FqR.js → react-B6cO4JYx.js} +1 -1
- package/storybook-static/assets/{refresh-cw-dMgbnEda.js → refresh-cw-DmxZlsqm.js} +1 -1
- package/storybook-static/assets/{settings-2-CmW1dpao.js → settings-2-CBuqWUWt.js} +1 -1
- package/storybook-static/assets/{sortable-D7TAXZBK.js → sortable-BkTzd-5v.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-QEQV7K2Y-ok7zY4QK.js → syntaxhighlighter-QEQV7K2Y-h6bhL7V7.js} +1 -1
- package/storybook-static/assets/{trash-2-5v1tbQ2V.js → trash-2-wTK0eWnF.js} +1 -1
- package/storybook-static/assets/{triangle-alert-CVLPpc5j.js → triangle-alert-CD0VXyGn.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-Bkht6gRs.js → useODataSelectBase-keqr2Q3a.js} +1 -1
- package/storybook-static/assets/useODataTreeData-BLDGoADN.js +1 -0
- package/storybook-static/assets/{usePickerQuery-BmoBHlzm.js → usePickerQuery-BA8NMnw6.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-Dvt7LsFZ.js → usePickerTriggerController-Ceb5Hrtf.js} +1 -1
- package/storybook-static/assets/{x-DZpfbNy0.js → x-CsG3nxct.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/storybook-static/assets/Color-6AOWCN3U-C4R02nIA.js +0 -1
- package/storybook-static/assets/FormattedTableCell-BKSpyxnu.js +0 -15
- package/storybook-static/assets/Table.stories-DO30v6VO.js +0 -184
- package/storybook-static/assets/TreeTable.stories-Bdx3y7Yb.js +0 -138
- package/storybook-static/assets/blocks-DGivDYe5.js +0 -48
- package/storybook-static/assets/components-Vmrwp1qC.js +0 -241
- package/storybook-static/assets/iframe-dKozSQh6.js +0 -1
- package/storybook-static/assets/odata-DuJbgix6.js +0 -1
- package/storybook-static/assets/useODataTreeData-DTWPuC9Y.js +0 -1
|
@@ -0,0 +1,184 @@
|
|
|
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,r as i,t as a}from"./sortable-BkTzd-5v.js";import{n as o}from"./iframe-BvendKJ_.js";import{a as ee,t as te}from"./array-D-_yMMUK-BBmW5vUr.js";import{h as ne,u as re}from"./formatters-DVE1YVNQ-CJCkXjuI.js";import{n as ie,t as ae}from"./useTable-CK68Q4S4.js";import{_ as oe,a as se,c as ce,d as le,f as ue,g as de,h as fe,i as pe,l as me,m as he,n as ge,o as _e,p as ve,r as ye,s as be,t as xe,u as Se,v as Ce,y as we}from"./FormattedTableCell-Cfdl2sgg.js";import{n as Te,t as s}from"./createControlledStoryRender-BouhvX-R.js";import{A as Ee,D as c,O as l,T as De,_ as Oe,a as ke,b as Ae,d as je,g as Me,i as u,k as Ne}from"./odata-f2MNATrV.js";var d,f,Pe;function Fe(){return(Fe=e((()=>{d=`hKghZt`,f=`QsLRvS`,Pe={selectedIndicatorCell:d,sentinel:f}})))()}function Ie(e,t){return String(t)}function p({title:e,isLoading:t,isFetching:n,data:r,columns:a,selectionMode:o=`none`,selectedRowIds:ee,getRowId:ne,className:ae,minHeight:se,tableClassName:le,columnVisibility:de,defaultColumnVisibility:pe,columnOrder:me,defaultColumnOrder:he,columnSizing:ge,defaultColumnSizing:be,columnPinning:we,defaultColumnPinning:Te,enableColumnResizing:s=!1,enableColumnReordering:Ee=!1,rowReordering:c,columnResizeMinWidth:l,onColumnVisibilityChange:De,onColumnOrderChange:ke,onColumnSizingChange:Ae,onColumnPinningChange:je,onRowClick:u,onRowSelectionChange:Ne,onReachEnd:d,getRowCanSelect:f,getRowClassName:Fe,renderHeaderContextMenu:p,renderCellContent:g}){let _=(0,m.useMemo)(()=>r??[],[r]),v=(0,m.useMemo)(()=>fe(a),[a]),y=ne??Ie,b=(0,m.useMemo)(()=>new Map(_.map((e,t)=>[y(e,t),e])),[y,_]),Le=(0,m.useMemo)(()=>Array.from(b.keys()),[b]),x=(0,m.useRef)(null),S=(0,m.useRef)(null),{rowSelection:Re,activateRowSelection:C}=Me({availableRowIds:Le,rowById:b,selectionMode:o,selectedRowIds:ee,onRowSelectionChange:Ne}),{columnVisibility:w,onColumnVisibilityChange:T}=_e({columnVisibility:de,defaultColumnVisibility:pe,onColumnVisibilityChange:De}),{columnOrder:E,onColumnOrderChange:ze}=ue({columnOrder:me,defaultColumnOrder:he,onColumnOrderChange:ke}),{columnSizing:D,onColumnSizingChange:Be}=ce({columnSizing:ge,defaultColumnSizing:be,columnResizeMinWidth:l,onColumnSizingChange:Ae}),{columnPinning:O,onColumnPinningChange:Ve}=Se({columnPinning:we,defaultColumnPinning:Te,onColumnPinningChange:je}),k=(0,m.useMemo)(()=>({columnOrder:E,columnPinning:O,columnSizing:D,columnVisibility:w}),[E,O,D,w]),He=(0,m.useEffectEvent)(()=>{d?.()});(0,m.useEffect)(()=>{if(!d||!x.current||!S.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&He()},{root:x.current,threshold:.1});return e.observe(S.current),()=>e.disconnect()},[t,d,_.length]);let A=ie({features:Oe,data:_,columns:a,state:{columnOrder:E,columnPinning:O,columnSizing:D,columnVisibility:w,rowSelection:Re},onColumnOrderChange:ze,onColumnPinningChange:Ve,onColumnSizingChange:Be,onColumnVisibilityChange:T,getRowId:(e,t)=>y(e,t),enableMultiRowSelection:o===`multi`,enableRowSelection:e=>o===`none`?!1:!f||f(e.original)}),j=Ce(A,k),M=A.getRowModel().rows,N=(0,m.useMemo)(()=>M.map(e=>e.id),[M]),Ue=(0,m.useMemo)(()=>ve({rows:M,columns:j}),[M,j]),P=j[0]?.id;return(0,h.jsx)(ye,{table:A,columnState:k,title:e,isLoading:t,isFetching:n,className:ae,minHeight:se,tableClassName:le,selectionMode:o,scrollableRef:x,onActivateRow:o!==`none`||u?e=>{C(e.id,e.getCanSelect()),u?.(e.original)}:void 0,isRowInteractive:e=>!!(u||o!==`none`&&e.getCanSelect()),getRowClassName:e=>Fe?.(e.original),getCellClassName:({row:e,cell:t})=>t.column.id===P&&e.getIsSelected()?Pe.selectedIndicatorCell:void 0,getCellLayout:({cell:e})=>Ue.get(e.id),renderHeaderContextMenu:p,enableColumnResizing:s,enableColumnReordering:Ee,rowReordering:c?{disabled:c.disabled,onDragEnd:e=>{if(!c||c.disabled)return;let t=i({event:e,items:N});t&&c.onReorder(te(M.map(e=>e.original),t.fromIndex,t.toIndex))}}:void 0,columnResizeMinWidth:l,renderCellContent:e=>{let t=re({field:v.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:e.row.original,rowKind:`plain`}),n=oe({columnId:e.cell.column.id,runtimeByColumnId:v.runtimeByColumnId,customCellColumnIds:v.customCellColumnIds})?(0,h.jsx)(xe,{displayValue:t,align:e.columnMeta?.align}):e.defaultContent;return g?g({...e,defaultContent:n,displayValue:t}):n},afterTableContent:d?(0,h.jsx)(`div`,{ref:S,className:Pe.sentinel,"aria-hidden":`true`}):null})}var m,h;function g(){return(g=e((()=>{m=n(),ee(),ne(),Ae(),ae(),pe(),he(),de(),ge(),we(),le(),me(),be(),se(),r(),Fe(),h=o(),p.__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}},rowReordering:{required:!1,tsType:{name:`TableRowReordering`,elements:[{name:`TData`}],raw:`TableRowReordering<TData>`},description:"Включает вертикальную перестановку строк через `Sortable.DragHandle` в пользовательской колонке."},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 _=t({Basic:()=>R,Empty:()=>W,Fetching:()=>U,Loading:()=>K,MultiSelect:()=>V,ReachEnd:()=>G,WithColumnPinning:()=>B,WithDisabledRows:()=>H,WithFormattingPipeline:()=>J,WithFormulaColumn:()=>q,WithHiddenZero:()=>Y,WithMergedDuplicates:()=>X,WithODataMetadataAdapter:()=>Z,WithRowReordering:()=>z,WithUseODataTableColumnsBuildHook:()=>Q,WithUseODataTableColumnsEnrichHook:()=>$,__namedExportsOrder:()=>Je,default:()=>Ke});function v(){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 y(e,t){let n=e.data??[];return t.map(t=>{let r=n.indexOf(t);return e.getRowId?.(t,r)??String(r)})}function b({args:e,updateArgs:t}){return(0,w.jsx)(p,{...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:y(e,n)})}})}function Le({args:e}){let[t,n]=(0,C.useState)([...e.data??[]]);return(0,w.jsx)(p,{...e,data:t,rowReordering:{onReorder:e=>n([...e])}})}function x({args:e,updateArgs:t}){let{columns:n,metadata:r,isLoading:i}=u({service:P,target:F,mode:`build`});return(0,w.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,w.jsxs)(`div`,{children:[`Режим build: hook собрал `,n.length,` колонки из metadata`,r?` для сущности «${r.title}».`:`.`]}),(0,w.jsx)(b,{args:{...e,columns:n,isLoading:e.isLoading??i},updateArgs:t})]})}function S({args:e,updateArgs:t}){let{columns:n,metadata:r,isLoading:i}=u({service:P,target:F,mode:`enrich`,columns:N});return(0,w.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,w.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные заголовки и дополнил formatting-контекст`,r?` из metadata «${r.title}».`:`.`]}),(0,w.jsx)(b,{args:{...e,columns:n,isLoading:e.isLoading??i},updateArgs:t})]})}function Re({args:e,updateArgs:t}){let[n,r]=(0,C.useState)(0);return(0,w.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,w.jsxs)(`div`,{children:[`Событие достижения конца: `,n]}),(0,w.jsx)(b,{args:{...e,onReachEnd:()=>{e.onReachEnd?.(),r(e=>e+1)}},updateArgs:t})]})}var C,w,T,E,ze,D,Be,O,Ve,k,He,A,j,M,N,Ue,P,F,We,Ge,Ke,I,L,qe,R,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,Je;function Ye(){return(Ye=e((()=>{C=n(),ke(),l(),Ae(),Ee(),Te(),r(),g(),w=o(),T=[{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:`Закрыта`}],E=[...T,{id:`6`,number:`450006`,client:`ОМК`,manager:`Елена Андреева`,amount:`680 000`,status:`Архив`,isLocked:!0}],ze=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?`В работе`:`Согласование`})),D=[{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}}],Be=[{id:`reorder`,header:`Порядок`,cell:({row:e})=>(0,w.jsx)(a.DragHandle,{as:`button`,title:`Переместить сделку ${e.original.number}`}),meta:{width:4}},...D],O=[{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}],Ve=[{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:`Николай Орлов`}],k=[{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}}],He=[{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}}}],A=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`healthScore`,accessorKey:`healthScore`,header:`Индекс риска`,meta:{width:10,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:v()}}}],j=[{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}}}],M=[{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`}],N=[{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`}}],Ue=je(N,M),P=`ZDEMO_DEALS_SRV`,F=`DealSet`,We={title:`Портфель сделок`,columns:M},Ge=(e,t)=>{let n=(0,C.useMemo)(()=>{let e=c({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(De({service:n}).queryKey,{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]);return(0,w.jsx)(Ne,{client:n,children:e()})},Ke={title:`UI/Table`,component:p,args:{title:`Сделки`,data:T,columns:D,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`},rowReordering:{description:`Включает вертикальную перестановку строк через Sortable.DragHandle в пользовательской колонке.`,control:!1},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}}},I=s((e,t)=>(0,w.jsx)(b,{args:e,updateArgs:t})),L=s((e,t)=>(0,w.jsx)(b,{args:e,updateArgs:t})),qe=s((e,t)=>(0,w.jsx)(b,{args:e,updateArgs:t})),R={render:I},z={args:{columns:Be,selectionMode:`none`},render:e=>(0,w.jsx)(Le,{args:e})},B={args:{columnPinning:{start:[`number`]}},render:s((e,t)=>{let n=e.columnPinning??{start:[]};return(0,w.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,w.jsxs)(`div`,{style:{display:`flex`,gap:`0.5em`,flexWrap:`wrap`},children:[(0,w.jsx)(`button`,{type:`button`,onClick:()=>t({columnPinning:{start:[`number`]}}),children:`Закрепить «Номер»`}),(0,w.jsx)(`button`,{type:`button`,onClick:()=>t({columnPinning:{start:[`number`,`client`]}}),children:`Закрепить «Номер» и «Клиент»`}),(0,w.jsx)(`button`,{type:`button`,onClick:()=>t({columnPinning:{start:[]}}),children:`Снять закрепление`})]}),(0,w.jsxs)(`div`,{children:[`Закреплено в начале: `,n.start?.length?n.start.join(`, `):`ничего`]}),(0,w.jsx)(b,{args:{...e,columnPinning:n},updateArgs:t})]})})},V={args:{selectionMode:`multi`,selectedRowIds:[]},render:s((e,t)=>(0,w.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,w.jsxs)(`div`,{children:[`Выбрано: `,e.selectedRowIds?.length?e.selectedRowIds.join(`, `):`ничего`]}),(0,w.jsx)(b,{args:e,updateArgs:t})]}))},H={args:{data:E,selectionMode:`multi`,selectedRowIds:[],getRowCanSelect:e=>!e.isLocked},render:s((e,t)=>(0,w.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,w.jsx)(`div`,{children:`Строка со статусом «Архив» остаётся видимой, но не участвует в выборе.`}),(0,w.jsxs)(`div`,{children:[`Выбрано: `,e.selectedRowIds?.length?e.selectedRowIds.join(`, `):`ничего`]}),(0,w.jsx)(b,{args:e,updateArgs:t})]}))},U={args:{isFetching:!0},render:I},W={args:{data:[]},render:I},G={args:{data:ze},render:s((e,t)=>(0,w.jsx)(Re,{args:e,updateArgs:t}))},K={args:{isLoading:!0},render:I},q={args:{title:`Формула наценки`,data:O,columns:He,selectionMode:`none`,getRowId:e=>e.id},render:L},J={args:{title:`Pipeline форматирования`,data:O,columns:A,selectionMode:`none`,getRowId:e=>e.id},render:L},Y={args:{title:`Скрытие нулей`,data:O,columns:j,selectionMode:`none`,getRowId:e=>e.id},render:L},X={args:{title:`Слияние дубликатов`,data:Ve,columns:k,selectionMode:`none`,getRowId:e=>e.id},render:qe},Z={args:{title:`OData metadata adapter`,data:O,columns:Ue,selectionMode:`none`,getRowId:e=>e.id},render:L},Q={args:{title:`useODataTableColumns: build`,data:O,columns:[],selectionMode:`none`,getRowId:e=>e.id},decorators:[Ge],parameters:{odataService:P,odataEntity:F,odataMetadata:We},render:s((e,t)=>(0,w.jsx)(x,{args:e,updateArgs:t}))},$={args:{title:`useODataTableColumns: enrich`,data:O,columns:[],selectionMode:`none`,getRowId:e=>e.id},decorators:[Ge],parameters:{odataService:P,odataEntity:F,odataMetadata:We},render:s((e,t)=>(0,w.jsx)(S,{args:e,updateArgs:t}))},R.parameters={...R.parameters,docs:{...R.parameters?.docs,source:{originalSource:`{
|
|
7
|
+
render: renderDealTableStory
|
|
8
|
+
}`,...R.parameters?.docs?.source},description:{story:`Базовый сценарий плоской таблицы с одиночным выбором.`,...R.parameters?.docs?.description}}},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{
|
|
9
|
+
args: {
|
|
10
|
+
columns: reorderableDemoColumns,
|
|
11
|
+
selectionMode: "none"
|
|
12
|
+
},
|
|
13
|
+
render: args => <RowReorderingTableStory args={args} />
|
|
14
|
+
}`,...z.parameters?.docs?.source},description:{story:`Перестановка строк с доступной keyboard/pointer ручкой в пользовательской колонке.`,...z.parameters?.docs?.description}}},B.parameters={...B.parameters,docs:{...B.parameters?.docs,source:{originalSource:`{
|
|
15
|
+
args: {
|
|
16
|
+
columnPinning: {
|
|
17
|
+
start: ["number"]
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
render: createControlledStoryRender<TableProps<DealRow>>((args, updateArgs) => {
|
|
21
|
+
const columnPinning = args.columnPinning ?? {
|
|
22
|
+
start: []
|
|
23
|
+
};
|
|
24
|
+
return <div style={{
|
|
25
|
+
display: "grid",
|
|
26
|
+
gap: "0.75em"
|
|
27
|
+
}}>
|
|
28
|
+
<div style={{
|
|
29
|
+
display: "flex",
|
|
30
|
+
gap: "0.5em",
|
|
31
|
+
flexWrap: "wrap"
|
|
32
|
+
}}>
|
|
33
|
+
<button type="button" onClick={() => updateArgs({
|
|
34
|
+
columnPinning: {
|
|
35
|
+
start: ["number"]
|
|
36
|
+
}
|
|
37
|
+
})}>
|
|
38
|
+
Закрепить «Номер»
|
|
39
|
+
</button>
|
|
40
|
+
<button type="button" onClick={() => updateArgs({
|
|
41
|
+
columnPinning: {
|
|
42
|
+
start: ["number", "client"]
|
|
43
|
+
}
|
|
44
|
+
})}>
|
|
45
|
+
Закрепить «Номер» и «Клиент»
|
|
46
|
+
</button>
|
|
47
|
+
<button type="button" onClick={() => updateArgs({
|
|
48
|
+
columnPinning: {
|
|
49
|
+
start: []
|
|
50
|
+
}
|
|
51
|
+
})}>
|
|
52
|
+
Снять закрепление
|
|
53
|
+
</button>
|
|
54
|
+
</div>
|
|
55
|
+
<div>Закреплено в начале: {columnPinning.start?.length ? columnPinning.start.join(", ") : "ничего"}</div>
|
|
56
|
+
<TableStoryCanvas args={{
|
|
57
|
+
...args,
|
|
58
|
+
columnPinning
|
|
59
|
+
}} updateArgs={updateArgs} />
|
|
60
|
+
</div>;
|
|
61
|
+
})
|
|
62
|
+
}`,...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:`{
|
|
63
|
+
args: {
|
|
64
|
+
selectionMode: "multi",
|
|
65
|
+
selectedRowIds: []
|
|
66
|
+
},
|
|
67
|
+
render: createControlledStoryRender<TableProps<DealRow>>((args, updateArgs) => <div style={{
|
|
68
|
+
display: "grid",
|
|
69
|
+
gap: "0.75em"
|
|
70
|
+
}}>
|
|
71
|
+
<div>Выбрано: {args.selectedRowIds?.length ? args.selectedRowIds.join(", ") : "ничего"}</div>
|
|
72
|
+
<TableStoryCanvas args={args} updateArgs={updateArgs} />
|
|
73
|
+
</div>)
|
|
74
|
+
}`,...V.parameters?.docs?.source},description:{story:`Множественный выбор с отображением текущего результата.`,...V.parameters?.docs?.description}}},H.parameters={...H.parameters,docs:{...H.parameters?.docs,source:{originalSource:`{
|
|
75
|
+
args: {
|
|
76
|
+
data: nonSelectableRows,
|
|
77
|
+
selectionMode: "multi",
|
|
78
|
+
selectedRowIds: [],
|
|
79
|
+
getRowCanSelect: row => !row.isLocked
|
|
80
|
+
},
|
|
81
|
+
render: createControlledStoryRender<TableProps<DealRow>>((args, updateArgs) => <div style={{
|
|
82
|
+
display: "grid",
|
|
83
|
+
gap: "0.75em"
|
|
84
|
+
}}>
|
|
85
|
+
<div>Строка со статусом «Архив» остаётся видимой, но не участвует в выборе.</div>
|
|
86
|
+
<div>Выбрано: {args.selectedRowIds?.length ? args.selectedRowIds.join(", ") : "ничего"}</div>
|
|
87
|
+
<TableStoryCanvas args={args} updateArgs={updateArgs} />
|
|
88
|
+
</div>)
|
|
89
|
+
}`,...H.parameters?.docs?.source},description:{story:`Часть строк можно показать, но запретить выбирать.`,...H.parameters?.docs?.description}}},U.parameters={...U.parameters,docs:{...U.parameters?.docs,source:{originalSource:`{
|
|
90
|
+
args: {
|
|
91
|
+
isFetching: true
|
|
92
|
+
},
|
|
93
|
+
render: renderDealTableStory
|
|
94
|
+
}`,...U.parameters?.docs?.source},description:{story:`Сценарий фонового обновления данных без очистки таблицы.`,...U.parameters?.docs?.description}}},W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`{
|
|
95
|
+
args: {
|
|
96
|
+
data: []
|
|
97
|
+
},
|
|
98
|
+
render: renderDealTableStory
|
|
99
|
+
}`,...W.parameters?.docs?.source},description:{story:`Пустой источник данных.`,...W.parameters?.docs?.description}}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
|
|
100
|
+
args: {
|
|
101
|
+
data: reachEndRows
|
|
102
|
+
},
|
|
103
|
+
render: createControlledStoryRender<TableProps<DealRow>>((args, updateArgs) => <ReachEndTableCanvas args={args} updateArgs={updateArgs} />)
|
|
104
|
+
}`,...G.parameters?.docs?.source},description:{story:`Демонстрация callback при достижении конца списка.`,...G.parameters?.docs?.description}}},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`{
|
|
105
|
+
args: {
|
|
106
|
+
isLoading: true
|
|
107
|
+
},
|
|
108
|
+
render: renderDealTableStory
|
|
109
|
+
}`,...K.parameters?.docs?.source},description:{story:`Состояние первичной загрузки.`,...K.parameters?.docs?.description}}},q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`{
|
|
110
|
+
args: {
|
|
111
|
+
title: "Формула наценки",
|
|
112
|
+
data: formattingRows,
|
|
113
|
+
columns: formulaColumns,
|
|
114
|
+
selectionMode: "none",
|
|
115
|
+
getRowId: row => row.id
|
|
116
|
+
},
|
|
117
|
+
render: renderFormattingTableStory
|
|
118
|
+
}`,...q.parameters?.docs?.source},description:{story:"Сценарий с formula-based колонкой без кастомного `cell`.",...q.parameters?.docs?.description}}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`{
|
|
119
|
+
args: {
|
|
120
|
+
title: "Pipeline форматирования",
|
|
121
|
+
data: formattingRows,
|
|
122
|
+
columns: pipelineColumns,
|
|
123
|
+
selectionMode: "none",
|
|
124
|
+
getRowId: row => row.id
|
|
125
|
+
},
|
|
126
|
+
render: renderFormattingTableStory
|
|
127
|
+
}`,...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:`{
|
|
128
|
+
args: {
|
|
129
|
+
title: "Скрытие нулей",
|
|
130
|
+
data: formattingRows,
|
|
131
|
+
columns: hiddenZeroColumns,
|
|
132
|
+
selectionMode: "none",
|
|
133
|
+
getRowId: row => row.id
|
|
134
|
+
},
|
|
135
|
+
render: renderFormattingTableStory
|
|
136
|
+
}`,...Y.parameters?.docs?.source},description:{story:"Сценарий со скрытием нулевых значений через `emptyWhenZero`.",...Y.parameters?.docs?.description}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`{
|
|
137
|
+
args: {
|
|
138
|
+
title: "Слияние дубликатов",
|
|
139
|
+
data: divisionMergeRows,
|
|
140
|
+
columns: divisionMergeColumns,
|
|
141
|
+
selectionMode: "none",
|
|
142
|
+
getRowId: row => row.id
|
|
143
|
+
},
|
|
144
|
+
render: renderDivisionMergeTableStory
|
|
145
|
+
}`,...X.parameters?.docs?.source},description:{story:`Сценарий со display-only слиянием подряд идущих дубликатов через пустые ячейки и CSS-склейку.`,...X.parameters?.docs?.description}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
|
|
146
|
+
args: {
|
|
147
|
+
title: "OData metadata adapter",
|
|
148
|
+
data: formattingRows,
|
|
149
|
+
columns: adapterColumns,
|
|
150
|
+
selectionMode: "none",
|
|
151
|
+
getRowId: row => row.id
|
|
152
|
+
},
|
|
153
|
+
render: renderFormattingTableStory
|
|
154
|
+
}`,...Z.parameters?.docs?.source},description:{story:`Сценарий со статическим OData metadata adapter в режиме enrich.`,...Z.parameters?.docs?.description}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`{
|
|
155
|
+
args: {
|
|
156
|
+
title: "useODataTableColumns: build",
|
|
157
|
+
data: formattingRows,
|
|
158
|
+
columns: [],
|
|
159
|
+
selectionMode: "none",
|
|
160
|
+
getRowId: row => row.id
|
|
161
|
+
},
|
|
162
|
+
decorators: [withMockedHookODataMetadata],
|
|
163
|
+
parameters: {
|
|
164
|
+
odataService: HOOK_ODATA_SERVICE,
|
|
165
|
+
odataEntity: HOOK_ODATA_ENTITY,
|
|
166
|
+
odataMetadata: hookMetadata
|
|
167
|
+
},
|
|
168
|
+
render: createControlledStoryRender<TableProps<DealFormattingRow>>((args, updateArgs) => <HookBuildTableStory args={args} updateArgs={updateArgs} />)
|
|
169
|
+
}`,...Q.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме build.",...Q.parameters?.docs?.description}}},$.parameters={...$.parameters,docs:{...$.parameters?.docs,source:{originalSource:`{
|
|
170
|
+
args: {
|
|
171
|
+
title: "useODataTableColumns: enrich",
|
|
172
|
+
data: formattingRows,
|
|
173
|
+
columns: [],
|
|
174
|
+
selectionMode: "none",
|
|
175
|
+
getRowId: row => row.id
|
|
176
|
+
},
|
|
177
|
+
decorators: [withMockedHookODataMetadata],
|
|
178
|
+
parameters: {
|
|
179
|
+
odataService: HOOK_ODATA_SERVICE,
|
|
180
|
+
odataEntity: HOOK_ODATA_ENTITY,
|
|
181
|
+
odataMetadata: hookMetadata
|
|
182
|
+
},
|
|
183
|
+
render: createControlledStoryRender<TableProps<DealFormattingRow>>((args, updateArgs) => <HookEnrichTableStory args={args} updateArgs={updateArgs} />)
|
|
184
|
+
}`,...$.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме enrich.",...$.parameters?.docs?.description}}},Je=[`Basic`,`WithRowReordering`,`WithColumnPinning`,`MultiSelect`,`WithDisabledRows`,`Fetching`,`Empty`,`ReachEnd`,`Loading`,`WithFormulaColumn`,`WithFormattingPipeline`,`WithHiddenZero`,`WithMergedDuplicates`,`WithODataMetadataAdapter`,`WithUseODataTableColumnsBuildHook`,`WithUseODataTableColumnsEnrichHook`]})))()}export{$ as _,V as a,B as c,q as d,Y as f,Q as g,z as h,K as i,H as l,Z as m,W as n,G as o,X as p,U as r,_ as s,R as t,J as u,Ye as v};
|
package/storybook-static/assets/{TableEditor.stories-Qtqr_l4g.js → TableEditor.stories-IfJyun1v.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./CheckBox-BJhTyl1K.js";import{n as i}from"./iframe-E950Ehp0.js";import{a,u as o}from"./array-D-_yMMUK-BBmW5vUr.js";import{n as s,t as c}from"./Button-DqsSng-I.js";import{n as l,t as u}from"./useTable-CK68Q4S4.js";import{a as d,l as f,t as p}from"./Input-CzvWPW0I.js";import{Et as m,Mt as h,Nt as g,Pt as _,Tt as v,n as ee,wt as te}from"./tableFeatures-Dx3U-F9E.js";import{n as ne,t as re}from"./Dialog-HBOYhMQq.js";import{n as ie,t as ae}from"./Textarea-DCnLF4aj.js";function y(){if(crypto.randomUUID)return crypto.randomUUID();let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array(256);for(let e=0;e<256;e++)t[e]=(e+256).toString(16).slice(1);return t[e[0]]+t[e[1]]+t[e[2]]+t[e[3]]+`-`+t[e[4]]+t[e[5]]+`-`+t[e[6]]+t[e[7]]+`-`+t[e[8]]+t[e[9]]+`-`+t[e[10]]+t[e[11]]+t[e[12]]+t[e[13]]+t[e[14]]+t[e[15]]}function oe(e){let t=e.getRowModel().rows,n=e.atoms.rowPinning?.get();if(!n||!n.top.length&&!n.bottom.length)return{rows:t,sectionStarts:pe};let r=e,i=r.getTopRows?.()??[],a=r.getCenterRows?.()??t,o=r.getBottomRows?.()??[];return{rows:[...i,...a,...o],sectionStarts:[i.length,i.length+a.length]}}function se(e,t){let n=t.getVisibleCells?.()??t.getAllCells(),r=Array(n.length);for(let e=0;e<n.length;e++)r[e]=n[e].column;let i=e.atoms.columnPinning?.get(),a=0,o=r.length;if(i){for(;a<o&&i.start.includes(r[a].id);)a++;for(;o>a&&i.end.includes(r[o-1].id);)o--}return{columns:r,centerStart:a,centerEnd:o}}function b(e){return e.columnDef.enableCellSpanning===!1?!1:e.table.options.enableCellSpanning??!0}function x(e){let{rows:t,sectionStarts:n}=oe(e),r=t.length,i={colSpans:fe,columnIndexes:de,rowSpans:ue,rows:t};if(!r||e.options.enableCellSpanning===!1)return i;let{columns:a,centerStart:o,centerEnd:s}=se(e,t[0]),c=a.length;if(!c)return i;let l=_();for(let e=0;e<c;e++)l[a[e].id]=e;let u=new Uint8Array(r);for(let e=0;e<n.length;e++){let t=n[e];t<r&&(u[t]=1)}for(let e=0;e<r;e++){let n=t[e];n._cellSpanRowIndex=e;let r=e>0?t[e-1]:void 0;(r&&(n.depth!==r.depth||n.parentId!==r.parentId)||n.getIsGrouped?.()===!0)&&(u[e]=1)}let d=[],f=!1;for(let n=0;n<c;n++){let i=a[n],l=i.columnDef.spanColumns;if(l===void 0||!b(i))continue;let u=n<o?o:n<s?s:c;for(let a=0;a<r;a++){let r=d[a];if(r&&r[n]===0)continue;let o=g(l)?l({column:i,row:t[a],table:e}):l;if(!(o>1))continue;let s=Math.min(o,u-n);if(s<2)continue;let p=r??(d[a]=new Int32Array(c).fill(1));p[n]=s;for(let e=n+1;e<n+s;e++)p[e]=0;f=!0}}let p=_();for(let n=0;n<c;n++){let i=a[n],o=i.columnDef.spanRows;if(!o||!b(i)||i.getIsGrouped?.()===!0)continue;let s=i.id,c=g(o)?o:void 0,l=new Int32Array(r).fill(1),m=!1,h=-1,_,v=1;for(let a=0;a<r;a++){let r=t[a],o=f?d[a]:void 0,p=o?o[n]:1;if(p===0){h=-1;continue}let g=r.getValue(s);if(h!==-1&&!u[a]&&p===v&&(c?c({anchorRow:t[h],anchorValue:_,column:i,previousRow:t[a-1],row:r,table:e,value:g}):g!=null&&Object.is(g,_))){l[a]=0,l[h]=l[h]+1,m=!0;continue}h=a,_=g,v=p}m&&(p[s]=l)}return{colSpans:d,columnIndexes:l,rowSpans:p,rows:t}}function S(e,t){let n=t.row._cellSpanRowIndex;return n===void 0||e.rows[n]!==t.row?-1:n}function C(e){let t=e.row.table,n=m(t,`getCellSpanIndex`,x),r=n.rowSpans[e.column.id];if(!r)return 1;let i=S(n,e);return i===-1?1:r[i]}function ce(e){let t=e.row.table,n=m(t,`getCellSpanIndex`,x),r=S(n,e);if(r===-1)return 1;let i=n.colSpans[r];if(!i)return 1;let a=n.columnIndexes[e.column.id];return a===void 0?1:i[a]}function le(e){return C(e)===0||ce(e)===0}var ue,de,fe,pe;function me(){return(me=e((()=>{h(),ue=_(),de=_(),fe=[],pe=[]})))()}var w;function T(){return(T=e((()=>{h(),me(),w={getDefaultTableOptions:()=>({enableCellSpanning:!0}),initRowInstanceData:e=>{e._cellSpanRowIndex=-1},assignCellPrototype:(e,t)=>{te(`cellSpanningFeature`,e,t,{cell_getColSpan:{fn:e=>ce(e)},cell_getIsCovered:{fn:e=>le(e)},cell_getRowSpan:{fn:e=>C(e)}})},constructTableAPIs:e=>{v(`cellSpanningFeature`,e,{table_getCellSpanIndex:{fn:()=>x(e),memoDeps:()=>[e.getRowModel().rows,e.atoms.rowPinning?.get(),e.options.keepPinnedRows,e.atoms.columnVisibility?.get(),e.atoms.columnOrder?.get(),e.atoms.columnPinning?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode,e.options.enableCellSpanning]}})}}})))()}function E(e,t){return e.row<t.row+t.rowSpan&&t.row<e.row+e.rowSpan&&e.column<t.column+t.columnSpan&&t.column<e.column+e.columnSpan}function D(e){let t=e.rows.length,n=e.columns.length;if(e.version!==1||!t||!n||t*n>2e4)throw Error(`Недопустимый размер таблицы.`);if(!Number.isInteger(e.headerRowCount)||e.headerRowCount<0||e.headerRowCount>t)throw Error(`Некорректное число строк заголовка.`);let r=new Set,i=e=>{if(!e||r.has(e))throw Error(`Идентификаторы строк, столбцов и ячеек должны быть уникальными.`);r.add(e)};for(let t of e.columns)if(i(t.id),t.width!==null&&(!Number.isFinite(t.width)||t.width<=0))throw Error(`Некорректная ширина столбца.`);for(let t of e.rows){if(i(t.id),t.cells.length!==n)throw Error(`Все строки должны иметь одинаковое число ячеек.`);t.cells.forEach(e=>i(e.id))}let a=new Set;for(let t of e.merges){if(O(e,t),t.rowSpan*t.columnSpan===1)throw Error(`Объединение должно содержать несколько ячеек.`);if(t.row<e.headerRowCount&&t.row+t.rowSpan>e.headerRowCount)throw Error(`Нельзя объединять заголовок с основной частью таблицы.`);for(let e=t.row;e<t.row+t.rowSpan;e++)for(let r=t.column;r<t.column+t.columnSpan;r++){let t=e*n+r;if(a.has(t))throw Error(`Объединённые области пересекаются.`);a.add(t)}}}function O(e,t){if(![t.row,t.column,t.rowSpan,t.columnSpan].every(Number.isInteger)||t.row<0||t.column<0||t.rowSpan<1||t.columnSpan<1||t.row+t.rowSpan>e.rows.length||t.column+t.columnSpan>e.columns.length)throw Error(`Выделение выходит за границы таблицы.`)}function k(e,t){let n={...t,rowSpan:1,columnSpan:1};return O(e,n),e.merges.find(e=>E(e,n))??n}function A(e,t,n){let r={row:Math.min(t.row,n.row),column:Math.min(t.column,n.column),rowSpan:Math.abs(t.row-n.row)+1,columnSpan:Math.abs(t.column-n.column)+1};O(e,r);let i=!0;for(;i;){i=!1;for(let t of e.merges){if(!E(r,t))continue;let e=Math.min(r.row,t.row),n=Math.min(r.column,t.column),a=Math.max(r.row+r.rowSpan,t.row+t.rowSpan)-e,o=Math.max(r.column+r.columnSpan,t.column+t.columnSpan)-n;(e!==r.row||n!==r.column||a!==r.rowSpan||o!==r.columnSpan)&&(r={row:e,column:n,rowSpan:a,columnSpan:o},i=!0)}}return r}function he(e,t,n){D(e);let r=A(e,t,n);if(r.rowSpan*r.columnSpan===1)return e;let i=e.merges.filter(e=>E(e,r));if(i.length===1&&r.row===i[0].row&&r.column===i[0].column&&r.rowSpan===i[0].rowSpan&&r.columnSpan===i[0].columnSpan)return e;let a={...e,merges:[...e.merges.filter(e=>!E(e,r)),r]};return D(a),a}function ge(e,t){D(e);let n=k(e,t);return n.rowSpan*n.columnSpan===1?e:{...e,merges:e.merges.filter(e=>e!==n)}}function j(e,t,n,r,i,a=`body`){D(e);let o=t===`row`?e.rows.length:e.columns.length;if(!Number.isInteger(n)||n<0||n>o)throw Error(`Некорректная позиция вставки.`);if(i.length!==(t===`row`?e.columns.length:e.rows.length))throw Error(`Неверное число новых ячеек.`);if(t===`row`&&(a===`header`?n>e.headerRowCount:n<e.headerRowCount))throw Error(`Строка вставляется вне выбранной части таблицы.`);let s=t===`row`?`rowSpan`:`columnSpan`,c=e.merges.map(e=>n<=e[t]?{...e,[t]:e[t]+1}:n<e[t]+e[s]?{...e,[s]:e[s]+1}:e),l=t===`row`?{...e,merges:c,headerRowCount:e.headerRowCount+ +(a===`header`),rows:[...e.rows.slice(0,n),{id:r,cells:i},...e.rows.slice(n)]}:{...e,merges:c,columns:[...e.columns.slice(0,n),{id:r,width:null},...e.columns.slice(n)],rows:e.rows.map((e,t)=>({...e,cells:[...e.cells.slice(0,n),i[t],...e.cells.slice(n)]}))};return D(l),l}function _e(e,t,n){return O(e,{...t,rowSpan:1,columnSpan:1}),Object.is(e.rows[t.row].cells[t.column].value,n)?e:{...e,rows:e.rows.map((e,r)=>r===t.row?{...e,cells:e.cells.map((e,r)=>r===t.column?{...e,value:n}:e)}:e)}}function M(e,t){D(e);let n=t===`row`?e.rows.length:e.columns.length,r=new Set;for(let n of e.merges){let e=t===`row`?n.rowSpan:n.columnSpan;for(let i=1;i<e;i++)r.add(n[t]+i)}let i=[],a=0;for(let e=1;e<=n;e++)(e===n||!r.has(e))&&(i.push({start:a,count:e-a}),a=e);return i}function ve(e,t,n){let r=M(e,t).find(e=>n>=e.start&&n<e.start+e.count);if(!r)throw Error(`Группа не найдена.`);let i=t===`row`?e.rows.length:e.columns.length;if(r.count===i)throw Error(`В таблице должна остаться хотя бы одна строка и один столбец.`);let a=r.start+r.count,o=e.merges.filter(e=>e[t]<r.start||e[t]>=a).map(e=>e[t]<a?e:{...e,[t]:e[t]-r.count}),s=t===`row`?{...e,merges:o,rows:e.rows.filter((e,t)=>t<r.start||t>=a),headerRowCount:e.headerRowCount-(r.start<e.headerRowCount?r.count:0)}:{...e,merges:o,columns:e.columns.filter((e,t)=>t<r.start||t>=a),rows:e.rows.map(e=>({...e,cells:e.cells.filter((e,t)=>t<r.start||t>=a)}))};return D(s),s}function ye(e,t,n,r){let i=M(e,t),a=i.findIndex(e=>n>=e.start&&n<e.start+e.count);if(a<0)throw Error(`Группа не найдена.`);let s=a+r;if(s<0||s>=i.length||t===`row`&&i[a].start<e.headerRowCount!=i[s].start<e.headerRowCount)return e;let c=o(i,a,r===-1?`up`:`down`).flatMap(e=>Array.from({length:e.count},(t,n)=>e.start+n)),l=new Map(c.map((e,t)=>[e,t])),u=e.merges.map(e=>({...e,[t]:l.get(e[t])??e[t]})),d=t===`row`?{...e,merges:u,rows:c.map(t=>e.rows[t])}:{...e,merges:u,columns:c.map(t=>e.columns[t]),rows:e.rows.map(e=>({...e,cells:c.map(t=>e.cells[t])}))};return D(d),d}function N(){return(N=e((()=>{a()})))()}var P,F,I,L,R,z,B,V,H;function U(){return(U=e((()=>{P=`_6ftNrS`,F=`tji4uW`,I=`nVFFYk`,L=`S7CdzG`,R=`emaqLv`,z=`VLG992`,B=`Hr0ghz`,V=`tuhyZe`,H={editor:P,toolbar:F,help:I,scroll:L,table:R,cellContent:z,inspector:B,structure:V}})))()}function be(e){let t=(0,W.useMemo)(()=>[...e.rows],[e]),n=(0,W.useMemo)(()=>e.columns.map((t,n)=>({id:t.id,accessorFn:(t,r)=>{let i=k(e,{row:r,column:n});return e.rows[i.row].cells[i.column].id},spanRows:!0,spanColumns:({row:t})=>{let r=k(e,{row:t.index,column:n});return r.column===n?r.columnSpan:1}})),[e]);return l({features:xe,data:t,columns:n,getRowId:e=>e.id})}var W,xe;function G(){return(G=e((()=>{W=t(),N(),T(),u(),xe=ee({cellSpanningFeature:w})})))()}function K({editor:e,extendSelection:t,disabled:n,renderCell:r,getCellText:i}){let a=(0,q.useId)(),o=(0,q.useRef)(new Map),s=be(e.document),{document:c,selection:l,focus:u}=e;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`p`,{id:a,className:H.help,children:`Стрелки — переход между ячейками. Shift + стрелки или Shift + щелчок — выделение диапазона. Содержимое выбранной ячейки редактируется под таблицей.`}),(0,J.jsx)(`div`,{className:H.scroll,children:(0,J.jsxs)(`table`,{role:`grid`,"aria-label":c.caption||`Редактор таблицы`,"aria-describedby":a,"aria-multiselectable":`true`,"aria-disabled":n||void 0,className:H.table,children:[(0,J.jsx)(`colgroup`,{children:c.columns.map(e=>(0,J.jsx)(`col`,{style:{width:e.width??180}},e.id))}),(0,J.jsx)(`tbody`,{children:s.getRowModel().rows.map(a=>(0,J.jsx)(`tr`,{"aria-rowindex":a.index+1,"data-header":a.index<c.headerRowCount||void 0,children:a.getAllCells().map((s,d)=>{if(s.getIsCovered())return null;let f=a.index>=l.row&&a.index<l.row+l.rowSpan&&d>=l.column&&d<l.column+l.columnSpan,p={row:a.index,column:d},m=a.original.cells[d],h=a.index<c.headerRowCount?`th`:`td`;return(0,J.jsxs)(h,{role:a.index<c.headerRowCount?`columnheader`:`gridcell`,ref:e=>{e?o.current.set(m.id,e):o.current.delete(m.id)},rowSpan:s.getRowSpan(),colSpan:s.getColSpan(),"aria-colindex":d+1,"aria-label":`Строка ${a.index+1}, столбец ${d+1}: ${i(m)||`Пустая ячейка`}`,"aria-selected":f,tabIndex:!n&&u.row===a.index&&u.column===d?0:-1,onClick:r=>{n||e.select(p,t||r.shiftKey)},onPointerEnter:t=>{!n&&t.pointerType===`mouse`&&t.buttons===1&&e.select(p,!0)},onKeyDown:t=>{if(n||t.altKey||t.ctrlKey||t.metaKey)return;let r;switch(t.key){case`ArrowRight`:r={...p,column:d+s.getColSpan()};break;case`ArrowLeft`:r={...p,column:d-1};break;case`ArrowDown`:r={...p,row:a.index+s.getRowSpan()};break;case`ArrowUp`:r={...p,row:a.index-1};break;case`Home`:r={...p,column:0};break;case`End`:r={...p,column:c.columns.length-1};break;case` `:t.preventDefault(),e.select(p,t.shiftKey);return;default:return}if(t.preventDefault(),r.row<0||r.column<0||r.row>=c.rows.length||r.column>=c.columns.length)return;let i=k(c,r);e.select(r,t.shiftKey),o.current.get(c.rows[i.row].cells[i.column].id)?.focus()},children:[a.index<c.headerRowCount?(0,J.jsx)(`span`,{className:`visuallyHidden`,children:i(m)||`Пустой заголовок`}):null,(0,J.jsx)(`div`,{inert:!0,className:H.cellContent,children:r(m)})]},s.id)})},a.id))})]})})]})}var q,J;function Se(){return(Se=e((()=>{q=t(),N(),G(),U(),J=i(),K.__docgenInfo={description:`Доступная сетка: roving tabindex, стрелки/Shift и выбор диапазона без drag-only действий.`,methods:[],displayName:`TableEditorGrid`,props:{editor:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./CheckBox-A1DE9OKH.js";import{n as i}from"./iframe-BvendKJ_.js";import{a,u as o}from"./array-D-_yMMUK-BBmW5vUr.js";import{n as s,t as c}from"./Button-BHqigqOj.js";import{n as l,t as u}from"./useTable-CK68Q4S4.js";import{a as d,l as f,t as p}from"./Input-C-RwifM5.js";import{Et as m,Mt as h,Nt as g,Pt as _,Tt as v,n as ee,wt as te}from"./tableFeatures-Dx3U-F9E.js";import{n as ne,t as re}from"./Dialog-5Bjs3MIP.js";import{n as ie,t as ae}from"./Textarea-BPtHeqrt.js";function y(){if(crypto.randomUUID)return crypto.randomUUID();let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array(256);for(let e=0;e<256;e++)t[e]=(e+256).toString(16).slice(1);return t[e[0]]+t[e[1]]+t[e[2]]+t[e[3]]+`-`+t[e[4]]+t[e[5]]+`-`+t[e[6]]+t[e[7]]+`-`+t[e[8]]+t[e[9]]+`-`+t[e[10]]+t[e[11]]+t[e[12]]+t[e[13]]+t[e[14]]+t[e[15]]}function oe(e){let t=e.getRowModel().rows,n=e.atoms.rowPinning?.get();if(!n||!n.top.length&&!n.bottom.length)return{rows:t,sectionStarts:pe};let r=e,i=r.getTopRows?.()??[],a=r.getCenterRows?.()??t,o=r.getBottomRows?.()??[];return{rows:[...i,...a,...o],sectionStarts:[i.length,i.length+a.length]}}function se(e,t){let n=t.getVisibleCells?.()??t.getAllCells(),r=Array(n.length);for(let e=0;e<n.length;e++)r[e]=n[e].column;let i=e.atoms.columnPinning?.get(),a=0,o=r.length;if(i){for(;a<o&&i.start.includes(r[a].id);)a++;for(;o>a&&i.end.includes(r[o-1].id);)o--}return{columns:r,centerStart:a,centerEnd:o}}function b(e){return e.columnDef.enableCellSpanning===!1?!1:e.table.options.enableCellSpanning??!0}function x(e){let{rows:t,sectionStarts:n}=oe(e),r=t.length,i={colSpans:fe,columnIndexes:de,rowSpans:ue,rows:t};if(!r||e.options.enableCellSpanning===!1)return i;let{columns:a,centerStart:o,centerEnd:s}=se(e,t[0]),c=a.length;if(!c)return i;let l=_();for(let e=0;e<c;e++)l[a[e].id]=e;let u=new Uint8Array(r);for(let e=0;e<n.length;e++){let t=n[e];t<r&&(u[t]=1)}for(let e=0;e<r;e++){let n=t[e];n._cellSpanRowIndex=e;let r=e>0?t[e-1]:void 0;(r&&(n.depth!==r.depth||n.parentId!==r.parentId)||n.getIsGrouped?.()===!0)&&(u[e]=1)}let d=[],f=!1;for(let n=0;n<c;n++){let i=a[n],l=i.columnDef.spanColumns;if(l===void 0||!b(i))continue;let u=n<o?o:n<s?s:c;for(let a=0;a<r;a++){let r=d[a];if(r&&r[n]===0)continue;let o=g(l)?l({column:i,row:t[a],table:e}):l;if(!(o>1))continue;let s=Math.min(o,u-n);if(s<2)continue;let p=r??(d[a]=new Int32Array(c).fill(1));p[n]=s;for(let e=n+1;e<n+s;e++)p[e]=0;f=!0}}let p=_();for(let n=0;n<c;n++){let i=a[n],o=i.columnDef.spanRows;if(!o||!b(i)||i.getIsGrouped?.()===!0)continue;let s=i.id,c=g(o)?o:void 0,l=new Int32Array(r).fill(1),m=!1,h=-1,_,v=1;for(let a=0;a<r;a++){let r=t[a],o=f?d[a]:void 0,p=o?o[n]:1;if(p===0){h=-1;continue}let g=r.getValue(s);if(h!==-1&&!u[a]&&p===v&&(c?c({anchorRow:t[h],anchorValue:_,column:i,previousRow:t[a-1],row:r,table:e,value:g}):g!=null&&Object.is(g,_))){l[a]=0,l[h]=l[h]+1,m=!0;continue}h=a,_=g,v=p}m&&(p[s]=l)}return{colSpans:d,columnIndexes:l,rowSpans:p,rows:t}}function S(e,t){let n=t.row._cellSpanRowIndex;return n===void 0||e.rows[n]!==t.row?-1:n}function C(e){let t=e.row.table,n=m(t,`getCellSpanIndex`,x),r=n.rowSpans[e.column.id];if(!r)return 1;let i=S(n,e);return i===-1?1:r[i]}function ce(e){let t=e.row.table,n=m(t,`getCellSpanIndex`,x),r=S(n,e);if(r===-1)return 1;let i=n.colSpans[r];if(!i)return 1;let a=n.columnIndexes[e.column.id];return a===void 0?1:i[a]}function le(e){return C(e)===0||ce(e)===0}var ue,de,fe,pe;function me(){return(me=e((()=>{h(),ue=_(),de=_(),fe=[],pe=[]})))()}var w;function T(){return(T=e((()=>{h(),me(),w={getDefaultTableOptions:()=>({enableCellSpanning:!0}),initRowInstanceData:e=>{e._cellSpanRowIndex=-1},assignCellPrototype:(e,t)=>{te(`cellSpanningFeature`,e,t,{cell_getColSpan:{fn:e=>ce(e)},cell_getIsCovered:{fn:e=>le(e)},cell_getRowSpan:{fn:e=>C(e)}})},constructTableAPIs:e=>{v(`cellSpanningFeature`,e,{table_getCellSpanIndex:{fn:()=>x(e),memoDeps:()=>[e.getRowModel().rows,e.atoms.rowPinning?.get(),e.options.keepPinnedRows,e.atoms.columnVisibility?.get(),e.atoms.columnOrder?.get(),e.atoms.columnPinning?.get(),e.atoms.grouping?.get(),e.options.columns,e.options.groupedColumnMode,e.options.enableCellSpanning]}})}}})))()}function E(e,t){return e.row<t.row+t.rowSpan&&t.row<e.row+e.rowSpan&&e.column<t.column+t.columnSpan&&t.column<e.column+e.columnSpan}function D(e){let t=e.rows.length,n=e.columns.length;if(e.version!==1||!t||!n||t*n>2e4)throw Error(`Недопустимый размер таблицы.`);if(!Number.isInteger(e.headerRowCount)||e.headerRowCount<0||e.headerRowCount>t)throw Error(`Некорректное число строк заголовка.`);let r=new Set,i=e=>{if(!e||r.has(e))throw Error(`Идентификаторы строк, столбцов и ячеек должны быть уникальными.`);r.add(e)};for(let t of e.columns)if(i(t.id),t.width!==null&&(!Number.isFinite(t.width)||t.width<=0))throw Error(`Некорректная ширина столбца.`);for(let t of e.rows){if(i(t.id),t.cells.length!==n)throw Error(`Все строки должны иметь одинаковое число ячеек.`);t.cells.forEach(e=>i(e.id))}let a=new Set;for(let t of e.merges){if(O(e,t),t.rowSpan*t.columnSpan===1)throw Error(`Объединение должно содержать несколько ячеек.`);if(t.row<e.headerRowCount&&t.row+t.rowSpan>e.headerRowCount)throw Error(`Нельзя объединять заголовок с основной частью таблицы.`);for(let e=t.row;e<t.row+t.rowSpan;e++)for(let r=t.column;r<t.column+t.columnSpan;r++){let t=e*n+r;if(a.has(t))throw Error(`Объединённые области пересекаются.`);a.add(t)}}}function O(e,t){if(![t.row,t.column,t.rowSpan,t.columnSpan].every(Number.isInteger)||t.row<0||t.column<0||t.rowSpan<1||t.columnSpan<1||t.row+t.rowSpan>e.rows.length||t.column+t.columnSpan>e.columns.length)throw Error(`Выделение выходит за границы таблицы.`)}function k(e,t){let n={...t,rowSpan:1,columnSpan:1};return O(e,n),e.merges.find(e=>E(e,n))??n}function A(e,t,n){let r={row:Math.min(t.row,n.row),column:Math.min(t.column,n.column),rowSpan:Math.abs(t.row-n.row)+1,columnSpan:Math.abs(t.column-n.column)+1};O(e,r);let i=!0;for(;i;){i=!1;for(let t of e.merges){if(!E(r,t))continue;let e=Math.min(r.row,t.row),n=Math.min(r.column,t.column),a=Math.max(r.row+r.rowSpan,t.row+t.rowSpan)-e,o=Math.max(r.column+r.columnSpan,t.column+t.columnSpan)-n;(e!==r.row||n!==r.column||a!==r.rowSpan||o!==r.columnSpan)&&(r={row:e,column:n,rowSpan:a,columnSpan:o},i=!0)}}return r}function he(e,t,n){D(e);let r=A(e,t,n);if(r.rowSpan*r.columnSpan===1)return e;let i=e.merges.filter(e=>E(e,r));if(i.length===1&&r.row===i[0].row&&r.column===i[0].column&&r.rowSpan===i[0].rowSpan&&r.columnSpan===i[0].columnSpan)return e;let a={...e,merges:[...e.merges.filter(e=>!E(e,r)),r]};return D(a),a}function ge(e,t){D(e);let n=k(e,t);return n.rowSpan*n.columnSpan===1?e:{...e,merges:e.merges.filter(e=>e!==n)}}function j(e,t,n,r,i,a=`body`){D(e);let o=t===`row`?e.rows.length:e.columns.length;if(!Number.isInteger(n)||n<0||n>o)throw Error(`Некорректная позиция вставки.`);if(i.length!==(t===`row`?e.columns.length:e.rows.length))throw Error(`Неверное число новых ячеек.`);if(t===`row`&&(a===`header`?n>e.headerRowCount:n<e.headerRowCount))throw Error(`Строка вставляется вне выбранной части таблицы.`);let s=t===`row`?`rowSpan`:`columnSpan`,c=e.merges.map(e=>n<=e[t]?{...e,[t]:e[t]+1}:n<e[t]+e[s]?{...e,[s]:e[s]+1}:e),l=t===`row`?{...e,merges:c,headerRowCount:e.headerRowCount+ +(a===`header`),rows:[...e.rows.slice(0,n),{id:r,cells:i},...e.rows.slice(n)]}:{...e,merges:c,columns:[...e.columns.slice(0,n),{id:r,width:null},...e.columns.slice(n)],rows:e.rows.map((e,t)=>({...e,cells:[...e.cells.slice(0,n),i[t],...e.cells.slice(n)]}))};return D(l),l}function _e(e,t,n){return O(e,{...t,rowSpan:1,columnSpan:1}),Object.is(e.rows[t.row].cells[t.column].value,n)?e:{...e,rows:e.rows.map((e,r)=>r===t.row?{...e,cells:e.cells.map((e,r)=>r===t.column?{...e,value:n}:e)}:e)}}function M(e,t){D(e);let n=t===`row`?e.rows.length:e.columns.length,r=new Set;for(let n of e.merges){let e=t===`row`?n.rowSpan:n.columnSpan;for(let i=1;i<e;i++)r.add(n[t]+i)}let i=[],a=0;for(let e=1;e<=n;e++)(e===n||!r.has(e))&&(i.push({start:a,count:e-a}),a=e);return i}function ve(e,t,n){let r=M(e,t).find(e=>n>=e.start&&n<e.start+e.count);if(!r)throw Error(`Группа не найдена.`);let i=t===`row`?e.rows.length:e.columns.length;if(r.count===i)throw Error(`В таблице должна остаться хотя бы одна строка и один столбец.`);let a=r.start+r.count,o=e.merges.filter(e=>e[t]<r.start||e[t]>=a).map(e=>e[t]<a?e:{...e,[t]:e[t]-r.count}),s=t===`row`?{...e,merges:o,rows:e.rows.filter((e,t)=>t<r.start||t>=a),headerRowCount:e.headerRowCount-(r.start<e.headerRowCount?r.count:0)}:{...e,merges:o,columns:e.columns.filter((e,t)=>t<r.start||t>=a),rows:e.rows.map(e=>({...e,cells:e.cells.filter((e,t)=>t<r.start||t>=a)}))};return D(s),s}function ye(e,t,n,r){let i=M(e,t),a=i.findIndex(e=>n>=e.start&&n<e.start+e.count);if(a<0)throw Error(`Группа не найдена.`);let s=a+r;if(s<0||s>=i.length||t===`row`&&i[a].start<e.headerRowCount!=i[s].start<e.headerRowCount)return e;let c=o(i,a,r===-1?`up`:`down`).flatMap(e=>Array.from({length:e.count},(t,n)=>e.start+n)),l=new Map(c.map((e,t)=>[e,t])),u=e.merges.map(e=>({...e,[t]:l.get(e[t])??e[t]})),d=t===`row`?{...e,merges:u,rows:c.map(t=>e.rows[t])}:{...e,merges:u,columns:c.map(t=>e.columns[t]),rows:e.rows.map(e=>({...e,cells:c.map(t=>e.cells[t])}))};return D(d),d}function N(){return(N=e((()=>{a()})))()}var P,F,I,L,R,z,B,V,H;function U(){return(U=e((()=>{P=`_6ftNrS`,F=`tji4uW`,I=`nVFFYk`,L=`S7CdzG`,R=`emaqLv`,z=`VLG992`,B=`Hr0ghz`,V=`tuhyZe`,H={editor:P,toolbar:F,help:I,scroll:L,table:R,cellContent:z,inspector:B,structure:V}})))()}function be(e){let t=(0,W.useMemo)(()=>[...e.rows],[e]),n=(0,W.useMemo)(()=>e.columns.map((t,n)=>({id:t.id,accessorFn:(t,r)=>{let i=k(e,{row:r,column:n});return e.rows[i.row].cells[i.column].id},spanRows:!0,spanColumns:({row:t})=>{let r=k(e,{row:t.index,column:n});return r.column===n?r.columnSpan:1}})),[e]);return l({features:xe,data:t,columns:n,getRowId:e=>e.id})}var W,xe;function G(){return(G=e((()=>{W=t(),N(),T(),u(),xe=ee({cellSpanningFeature:w})})))()}function K({editor:e,extendSelection:t,disabled:n,renderCell:r,getCellText:i}){let a=(0,q.useId)(),o=(0,q.useRef)(new Map),s=be(e.document),{document:c,selection:l,focus:u}=e;return(0,J.jsxs)(J.Fragment,{children:[(0,J.jsx)(`p`,{id:a,className:H.help,children:`Стрелки — переход между ячейками. Shift + стрелки или Shift + щелчок — выделение диапазона. Содержимое выбранной ячейки редактируется под таблицей.`}),(0,J.jsx)(`div`,{className:H.scroll,children:(0,J.jsxs)(`table`,{role:`grid`,"aria-label":c.caption||`Редактор таблицы`,"aria-describedby":a,"aria-multiselectable":`true`,"aria-disabled":n||void 0,className:H.table,children:[(0,J.jsx)(`colgroup`,{children:c.columns.map(e=>(0,J.jsx)(`col`,{style:{width:e.width??180}},e.id))}),(0,J.jsx)(`tbody`,{children:s.getRowModel().rows.map(a=>(0,J.jsx)(`tr`,{"aria-rowindex":a.index+1,"data-header":a.index<c.headerRowCount||void 0,children:a.getAllCells().map((s,d)=>{if(s.getIsCovered())return null;let f=a.index>=l.row&&a.index<l.row+l.rowSpan&&d>=l.column&&d<l.column+l.columnSpan,p={row:a.index,column:d},m=a.original.cells[d],h=a.index<c.headerRowCount?`th`:`td`;return(0,J.jsxs)(h,{role:a.index<c.headerRowCount?`columnheader`:`gridcell`,ref:e=>{e?o.current.set(m.id,e):o.current.delete(m.id)},rowSpan:s.getRowSpan(),colSpan:s.getColSpan(),"aria-colindex":d+1,"aria-label":`Строка ${a.index+1}, столбец ${d+1}: ${i(m)||`Пустая ячейка`}`,"aria-selected":f,tabIndex:!n&&u.row===a.index&&u.column===d?0:-1,onClick:r=>{n||e.select(p,t||r.shiftKey)},onPointerEnter:t=>{!n&&t.pointerType===`mouse`&&t.buttons===1&&e.select(p,!0)},onKeyDown:t=>{if(n||t.altKey||t.ctrlKey||t.metaKey)return;let r;switch(t.key){case`ArrowRight`:r={...p,column:d+s.getColSpan()};break;case`ArrowLeft`:r={...p,column:d-1};break;case`ArrowDown`:r={...p,row:a.index+s.getRowSpan()};break;case`ArrowUp`:r={...p,row:a.index-1};break;case`Home`:r={...p,column:0};break;case`End`:r={...p,column:c.columns.length-1};break;case` `:t.preventDefault(),e.select(p,t.shiftKey);return;default:return}if(t.preventDefault(),r.row<0||r.column<0||r.row>=c.rows.length||r.column>=c.columns.length)return;let i=k(c,r);e.select(r,t.shiftKey),o.current.get(c.rows[i.row].cells[i.column].id)?.focus()},children:[a.index<c.headerRowCount?(0,J.jsx)(`span`,{className:`visuallyHidden`,children:i(m)||`Пустой заголовок`}):null,(0,J.jsx)(`div`,{inert:!0,className:H.cellContent,children:r(m)})]},s.id)})},a.id))})]})})]})}var q,J;function Se(){return(Se=e((()=>{q=t(),N(),G(),U(),J=i(),K.__docgenInfo={description:`Доступная сетка: roving tabindex, стрелки/Shift и выбор диапазона без drag-only действий.`,methods:[],displayName:`TableEditorGrid`,props:{editor:{required:!0,tsType:{name:`signature`,type:`object`,raw:`{
|
|
2
2
|
readonly document: TableDocument<T>;
|
|
3
3
|
readonly selection: TableDocumentRange;
|
|
4
4
|
readonly focus: TableDocumentPosition;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{n as t}from"./iframe-BvendKJ_.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}from"./blocks-Bn1nLfdu.js";import{a as f,c as p,i as m,l as h,n as g,o as _,r as v,s as y,t as b,u as x}from"./Tabs.stories-6wO9Pmly.js";function S(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,w.jsxs)(w.Fragment,{children:[(0,w.jsx)(s,{of:h,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,w.jsx)(u,{children:`Tabs`}),`
|
|
3
3
|
`,(0,w.jsx)(o,{children:`Набор tabs-компонентов с разделением простого scroll-сценария и составного panel-layout сценария`}),`
|
|
4
4
|
`,(0,w.jsxs)(t.p,{children:[`После рефакторинга `,(0,w.jsx)(t.code,{children:`tabs`}),` разделены на два независимых сценария:`]}),`
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,n as t,r as n}from"./rolldown-runtime-DkW27tQK.js";import{t as r}from"./react-BZJXY1be.js";import{n as i}from"./iframe-
|
|
1
|
+
import{a as e,n as t,r as n}from"./rolldown-runtime-DkW27tQK.js";import{t as r}from"./react-BZJXY1be.js";import{n as i}from"./iframe-BvendKJ_.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{n as ee,t as s}from"./ui.module-l7VCYIW-.js";import{i as c,n as te}from"./uiClasses-BblrV9p1.js";import{n as l,t as u}from"./Scrollable-BfCUp0BO.js";import{n as d,t as f}from"./createControlledStoryRender-BouhvX-R.js";import{a as ne,c as p,f as re,i as m,l as h,n as g,o as _,r as ie,s as v,t as y,u as ae}from"./TabsBox-QKS_MMQ0.js";function oe(e){let{type:t}=e;if(typeof t==`function`){let e=t;return e.displayName??e.name??null}if(typeof t==`object`&&t&&`displayName`in t){let e=t;return typeof e.displayName==`string`?e.displayName:null}return null}function b(e,t){return(0,E.isValidElement)(e)&&oe(e)===t}function x({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function S({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function C({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function w({children:e}){return(0,D.jsx)(D.Fragment,{children:e})}function se(e,t){let n=null,r=null,i=null;for(let a of E.Children.toArray(e)){if(!(0,E.isValidElement)(a))throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);if(b(a,k)){if(n)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Toolbar.`);n=a.props;continue}if(b(a,A)){if(r)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Content.`);r=a.props;continue}if(b(a,j)){if(i)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Footer.`);i=a.props;continue}throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`)}if(!r)throw Error(`TabsLayout.Tab "${t}" должен содержать блок TabsLayout.Content.`);return{toolbar:n,content:r,footer:i}}function ce(e){return E.Children.toArray(e).map(e=>{if(!b(e,O))throw Error(`TabsLayout принимает только дочерние элементы TabsLayout.Tab.`);return{id:e.props.id,title:e.props.title,disabled:e.props.disabled,...se(e.props.children,e.props.id)}})}function T({children:e,value:t,defaultValue:n,onValueChange:r,className:i,orientation:o=`horizontal`,activationMode:s=`manual`,mountStrategy:c=`lazy`,loop:l=!0,tone:u=`primary`,clean:d=!1,"aria-label":f,"aria-labelledby":p}){let m=(0,E.useMemo)(()=>ce(e),[e]),h=ae({items:m,value:t,defaultValue:n,onValueChange:r,orientation:o,activationMode:s,loop:l}),g=a(v.tabsContainer,d?v.clean:ee.uiFilledPanel,v[o],te(u),i),_=a(v.panels,v.layoutPanels);return(0,D.jsxs)(`div`,{className:g,children:[(0,D.jsx)(`div`,{className:v.tabsWrapper,children:(0,D.jsx)(ie,{items:m,state:h,className:v.tabs,ariaLabel:f,ariaLabelledBy:p})}),(0,D.jsx)(`div`,{className:_,children:m.map(e=>{let t=e.id===h.selectedTabId,n=re({mountStrategy:c,isSelected:t,isVisited:h.isVisited(e.id)}),r=`${e.toolbar?`auto `:``}minmax(0, 1fr)${e.footer?` auto`:``}`;return(0,D.jsx)(ne,{tabId:e.id,isSelected:t,className:v.panel,getTabElementId:h.getTabElementId,getPanelElementId:h.getPanelElementId,children:n?(0,D.jsxs)(`div`,{className:v.layoutPanel,style:{gridTemplateRows:r},children:[e.toolbar?(0,D.jsx)(`div`,{className:a(v.layoutSection,e.toolbar.className),children:e.toolbar.children}):null,(0,D.jsx)(`div`,{className:a(v.layoutSection,v.layoutContent,e.content.className),children:e.content.children}),e.footer?(0,D.jsx)(`div`,{className:a(v.layoutSection,e.footer.className),children:e.footer.children}):null]}):null},e.id)})})]})}var E,D,O,k,A,j;function M(){return(M=t((()=>{E=e(r(),1),o(),s(),c(),h(),p(),_(),m(),D=i(),O=`TabsLayout.Tab`,k=`TabsLayout.Toolbar`,A=`TabsLayout.Content`,j=`TabsLayout.Footer`,x.displayName=O,S.displayName=k,C.displayName=A,w.displayName=j,T.Tab=x,T.Toolbar=S,T.Content=C,T.Footer=w,T.__docgenInfo={description:`Compound-оболочка tabs для составных panel-layout сценариев.
|
|
2
2
|
Сам компонент управляет только переключением и каркасом панели.`,methods:[{name:`Tab`,docblock:null,modifiers:[`static`],params:[{name:`{ children }: TabsLayoutTabProps`,optional:!1,type:{name:`TabsLayoutTabProps`,alias:`TabsLayoutTabProps`}}],returns:null},{name:`Toolbar`,docblock:null,modifiers:[`static`],params:[{name:`{ children }: TabsLayoutSectionProps`,optional:!1,type:{name:`TabsLayoutSectionProps`,alias:`TabsLayoutSectionProps`}}],returns:null},{name:`Content`,docblock:null,modifiers:[`static`],params:[{name:`{ children }: TabsLayoutSectionProps`,optional:!1,type:{name:`TabsLayoutSectionProps`,alias:`TabsLayoutSectionProps`}}],returns:null},{name:`Footer`,docblock:null,modifiers:[`static`],params:[{name:`{ children }: TabsLayoutSectionProps`,optional:!1,type:{name:`TabsLayoutSectionProps`,alias:`TabsLayoutSectionProps`}}],returns:null}],displayName:`TabsLayout`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"manual"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"lazy"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},tone:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "tertiary"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"tertiary"`}]},description:``,defaultValue:{value:`"primary"`,computed:!1}},clean:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`ReactNode`},description:``}}}})))()}var le=n({BoxBasic:()=>G,BoxControlled:()=>K,BoxMountStrategies:()=>J,BoxVertical:()=>q,DisabledTabs:()=>Y,Empty:()=>Q,LayoutPanels:()=>X,Loading:()=>Z,__namedExportsOrder:()=>$,default:()=>U});function N({label:e}){let[t,n]=(0,F.useState)(0);return(0,I.jsxs)(`div`,{style:R,children:[(0,I.jsxs)(`div`,{children:[`Панель: `,e]}),(0,I.jsxs)(`div`,{children:[`Локальный счётчик: `,t]}),(0,I.jsx)(`button`,{type:`button`,onClick:()=>n(e=>e+1),children:`Увеличить`})]})}function P(e){return f((t,n)=>{let r=t.value??t.defaultValue,i=(0,I.jsx)(y,{...t,value:r,onValueChange:e=>{t.onValueChange?.(e),n({value:e})}});return e===void 0?i:(0,I.jsx)(`div`,{style:{height:e},children:i})})}var F,I,L,R,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$;function ue(){return(ue=t((()=>{F=r(),g(),M(),d(),l(),I=i(),{fn:L}=__STORYBOOK_MODULE_TEST__,R={padding:16,display:`grid`,gap:12},z=[{id:`profile`,title:`Профиль`,content:(0,I.jsx)(`div`,{style:R,children:`Карточка пользователя и основные поля профиля.`})},{id:`settings`,title:`Настройки`,content:(0,I.jsx)(`div`,{style:R,children:`Параметры интерфейса, уведомлений и доступа.`})},{id:`history`,title:`История`,content:(0,I.jsx)(`div`,{style:R,children:`Последние действия, комментарии и изменения.`})}],B=[{id:`first`,title:`Первая`,content:(0,I.jsx)(N,{label:`Первая`})},{id:`second`,title:`Вторая`,content:(0,I.jsx)(N,{label:`Вторая`})},{id:`third`,title:`Третья`,content:(0,I.jsx)(N,{label:`Третья`})}],V=[{id:`overview`,title:`Обзор`,content:(0,I.jsx)(`div`,{style:R,children:`Раздел доступен сразу.`})},{id:`analytics`,title:`Аналитика`,disabled:!0,content:(0,I.jsx)(`div`,{style:R,children:`Пока недоступно.`})},{id:`history`,title:`История`,content:(0,I.jsx)(`div`,{style:R,children:`История изменений и действий.`})}],H=Array.from({length:12},(e,t)=>`Элемент ${t+1}`),U={title:`UI/Tabs`,component:y,args:{items:z,value:`profile`,onValueChange:L(),orientation:`horizontal`,activationMode:`automatic`,mountStrategy:`unmount`,isLoading:!1,loadingText:`Загрузка вкладок...`,clean:!1,loop:!0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{items:{description:"Набор вкладок для `TabsBox`. Каждая вкладка задаётся через `id`, `title`, `content` и опциональный `disabled`.",control:!1},value:{description:`Активная вкладка в controlled-режиме.`,control:`text`},defaultValue:{description:`Начальная вкладка в uncontrolled-режиме.`,control:`text`},onValueChange:{description:`Вызывается при смене активной вкладки.`,control:!1},orientation:{description:`Направление списка вкладок.`,control:`inline-radio`,options:[`horizontal`,`vertical`]},activationMode:{description:"Режим клавиатурной активации: `automatic` меняет вкладку стрелками, `manual` только переводит фокус.",control:`inline-radio`,options:[`automatic`,`manual`]},mountStrategy:{description:"Политика монтирования панелей: `unmount`, `lazy` или `keep-mounted`.",control:`inline-radio`,options:[`unmount`,`lazy`,`keep-mounted`]},clean:{description:`Убирает базовые padding и surface-оформление panel-области.`,control:`boolean`},loop:{description:`Разрешает циклическую навигацию стрелками и Home/End.`,control:`boolean`},isLoading:{description:"Показывает loading-состояние `TabsBox`.",control:`boolean`},loadingText:{description:`Текст внутри loading-состояния.`,control:`text`},"aria-label":{description:"Собственное доступное имя `tablist`, если рядом нет видимого заголовка.",control:`text`},"aria-labelledby":{description:"Ссылка на внешний заголовок `tablist` вместо текстовой ARIA-метки.",control:`text`}}},W=f((e,t)=>{let n=e.value??e.defaultValue??`details`;return(0,I.jsx)(`div`,{style:{height:360},children:(0,I.jsxs)(T,{value:n,defaultValue:e.defaultValue,onValueChange:n=>{e.onValueChange?.(n),t({value:n})},orientation:e.orientation,activationMode:e.activationMode,mountStrategy:e.mountStrategy,loop:e.loop,clean:e.clean,className:e.className,"aria-label":e[`aria-label`],"aria-labelledby":e[`aria-labelledby`],children:[(0,I.jsxs)(T.Tab,{id:`details`,title:`Детали`,children:[(0,I.jsx)(T.Toolbar,{children:(0,I.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Панель инструментов вне scroll-области.`})}),(0,I.jsx)(T.Content,{children:(0,I.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:12,height:`100%`},children:[(0,I.jsx)(u,{className:`surface0 border radiusSm paddingSm h100`,children:(0,I.jsx)(`div`,{role:`region`,"aria-label":`Содержимое левой колонки`,tabIndex:0,children:H.map(e=>(0,I.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Левая колонка: `,e]},`left-${e}`))})}),(0,I.jsx)(u,{className:`surface0 border radiusSm paddingSm h100`,children:(0,I.jsx)(`div`,{role:`region`,"aria-label":`Содержимое правой колонки`,tabIndex:0,children:H.map(e=>(0,I.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Правая колонка: `,e]},`right-${e}`))})})]})}),(0,I.jsx)(T.Footer,{children:(0,I.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Футер тоже исключён из scroll-контента.`})})]}),(0,I.jsx)(T.Tab,{id:`history`,title:`История`,children:(0,I.jsx)(T.Content,{children:(0,I.jsx)(u,{className:`surface0 border radiusSm paddingSm h100`,children:(0,I.jsx)(`div`,{role:`region`,"aria-label":`История изменений`,tabIndex:0,children:H.map(e=>(0,I.jsxs)(`div`,{className:`paddingBlockXs`,children:[`История изменения: `,e]},`history-${e}`))})})})})]})})}),G={args:{"aria-label":`Основные разделы профиля`},render:P()},K={args:{value:`settings`,"aria-label":`Управляемые вкладки`},render:P()},q={args:{orientation:`vertical`,"aria-label":`Вертикальные вкладки`},render:P(320)},J={args:{items:B,mountStrategy:`lazy`,"aria-label":`Демонстрация стратегий монтирования`},render:P()},Y={args:{items:V,value:`overview`,"aria-label":`Вкладки с недоступным разделом`},render:P()},X={args:{value:`details`,onValueChange:L(),orientation:`horizontal`,activationMode:`manual`,mountStrategy:`lazy`,clean:!1,loop:!0,"aria-label":`Составные панели документа`},render:W},Z={args:{isLoading:!0,items:z},render:P()},Q={args:{items:[],value:void 0},render:P()},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
|
|
3
3
|
args: {
|
|
4
4
|
"aria-label": "Основные разделы профиля"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-BvendKJ_.js";import{a as r,i,o as a}from"./utils-tg3ibbzi.js";import{n as o,t as s}from"./ui.module-l7VCYIW-.js";import{i as c,n as l}from"./uiClasses-BblrV9p1.js";import{i as u,n as d,r as f,t as p}from"./NoData-D0rf5MW3.js";import{n as m,t as h}from"./OneStepScroller-srOmxRQp.js";function g(e){return e.find(e=>!e.disabled)?.id??null}function _(e,t){return t?e.find(e=>e.id===t&&!e.disabled)?.id??g(e):g(e)}function v(e){return e.filter(e=>!e.disabled)}function y({mountStrategy:e,isSelected:t,isVisited:n}){return e===`keep-mounted`||t||e===`lazy`&&n}function b(){return(b=e((()=>{})))()}function x({items:e,value:t,defaultValue:n,onValueChange:r,orientation:i=`horizontal`,activationMode:o=`automatic`,loop:s=!0}){let c=t!==void 0,l=(0,S.useMemo)(()=>v(e),[e]),u=l[0]?.id??null,[d,f]=(0,S.useState)(()=>_(e,n)),[p,m]=(0,S.useState)(()=>_(e,t??n)),h=_(e,t??n),[g,y]=(0,S.useState)(()=>h?new Set([h]):new Set),b=(0,S.useId)(),x=(0,S.useRef)({}),C=_(e,c?t:d),w=_(e,p)??C??u,T=(0,S.useMemo)(()=>{if(!C||g.has(C))return g;let e=new Set(g);return e.add(C),e},[C,g]),E=t=>{let n=_(e,t);n&&(y(e=>{if(e.has(n))return e;let t=new Set(e);return t.add(n),t}),c||f(n),r?.(n))},D=e=>{x.current[e]?.focus()},O=e=>{if(l.length<2)return;let t=Math.max(0,l.findIndex(e=>e.id===(w??C??u))),n=a({currentIndex:t,itemCount:l.length,key:e.key,orientation:i,wrap:s});if(n===null)return;e.preventDefault();let r=l[n]?.id;r&&(m(r),D(r),o===`automatic`&&E(r))},k=e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||m(C??u)},A=e=>`${b}-tab-${e}`,j=e=>`${b}-panel-${e}`;return{activationMode:o,orientation:i,selectedTabId:C,tabbableTabId:w,onTabListKeyDown:O,onTabListBlur:k,getTabElementId:A,getPanelElementId:j,getTabButtonProps:e=>{let t=e.id===C,n=e.id===w;return{ref:t=>{x.current[e.id]=t},type:`button`,role:`tab`,id:A(e.id),disabled:e.disabled,"aria-selected":t,"aria-controls":j(e.id),"aria-disabled":e.disabled||void 0,tabIndex:e.disabled?-1:n?0:-1,onFocus:()=>m(e.id),onClick:()=>E(e.id)}},isVisited:e=>T.has(e)}}var S;function C(){return(C=e((()=>{S=t(),i()})))()}var w,T,E,D,O,k,A,j,M,N,P,F,I,L,R,z,B;function V(){return(V=e((()=>{w=`pcMjuj`,T=`NLOw2z`,E=`Z6PwjQ`,D=`ZSAoAa`,O=`psYhsZ`,k=`mNDq9-`,A=`g156KO`,j=`C2mO1e`,M=`_28F3fs`,N=`UKZXTZ`,P=`jiTafe`,F=`nhD0k7`,I=`G8FICe`,L=`W50XHh`,R=`vnjXkU`,z=`Nzvfhw`,B={tabsContainer:w,clean:T,tabsWrapper:E,tabs:D,panels:O,horizontal:k,vertical:A,panelScrollable:j,tab:M,selected:N,panel:P,panelBody:F,layoutPanels:I,layoutPanel:L,layoutSection:R,layoutContent:z}})))()}function H({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:i,panelBodyClassName:a,loadingText:o}){return(0,U.jsxs)(`div`,{className:e,children:[(0,U.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,U.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:r(B.tab,`skeletonLine`),children:`Загрузка...`})}),(0,U.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,U.jsx)(`div`,{className:i,children:(0,U.jsx)(`div`,{className:a,children:(0,U.jsx)(f,{text:o,className:`radiusSm`})})})})]})}var U;function W(){return(W=e((()=>{i(),u(),V(),U=n(),H.__docgenInfo={description:"Служебное loading-состояние для `TabsBox`.",methods:[],displayName:`TabsLoadingState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},tabListClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}})))()}function G({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,K.jsx)(`div`,{className:e,children:(0,K.jsx)(`div`,{className:t,children:(0,K.jsx)(`div`,{className:n,children:(0,K.jsx)(`div`,{className:r,children:(0,K.jsx)(p,{className:`radiusSm`})})})})})}var K;function q(){return(q=e((()=>{d(),K=n(),G.__docgenInfo={description:"Служебное empty-состояние для `TabsBox`.",methods:[],displayName:`TabsNoDataState`,props:{containerClassName:{required:!0,tsType:{name:`string`},description:``},panelsClassName:{required:!0,tsType:{name:`string`},description:``},panelClassName:{required:!0,tsType:{name:`string`},description:``},panelBodyClassName:{required:!0,tsType:{name:`string`},description:``}}}})))()}function J({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,ee.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,tabIndex:t?0:-1,className:n,children:a})}var ee;function Y(){return(Y=e((()=>{ee=n(),J.__docgenInfo={description:``,methods:[],displayName:`TabsPanel`,props:{tabId:{required:!0,tsType:{name:`string`},description:``},isSelected:{required:!0,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},getTabElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},getPanelElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},children:{required:!1,tsType:{name:`ReactNode`},description:``}}}})))()}function X({items:e,state:t,className:n,ariaLabel:i,ariaLabelledBy:a}){let o=(0,Z.jsx)(`div`,{"data-ui":`tabs-tablist`,className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":a?void 0:i??`Вкладки`,"aria-labelledby":a,"aria-live":`off`,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:e.map(e=>(0,Z.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:r(B.tab,`textWrap`,e.id===t.selectedTabId&&B.selected),children:e.title},e.id))});return t.orientation===`horizontal`?(0,Z.jsx)(h,{itemSelector:`[role='tab']`,children:o}):o}var Z;function Q(){return(Q=e((()=>{i(),m(),V(),Z=n(),X.__docgenInfo={description:``,methods:[],displayName:`TabsTabList`,props:{items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsDescriptor`}],raw:`TabsDescriptor[]`},description:``},state:{required:!0,tsType:{name:`TabsStateModel`},description:``},className:{required:!1,tsType:{name:`string`},description:``},ariaLabel:{required:!1,tsType:{name:`string`},description:``},ariaLabelledBy:{required:!1,tsType:{name:`string`},description:``}}}})))()}function te({items:e,value:t,defaultValue:n,onValueChange:i,className:a,isLoading:s,loadingText:c,orientation:u=`horizontal`,activationMode:d=`automatic`,mountStrategy:f=`unmount`,loop:p=!0,tone:m=`primary`,clean:h=!1,"aria-label":g,"aria-labelledby":_}){let v=x({items:e,value:t,defaultValue:n,onValueChange:i,orientation:u,activationMode:d,loop:p}),b=r(B.tabsContainer,h?B.clean:o.uiFilledPanel,B[u],l(m),a),S=B.tabs,C=r(B.panels,B.panelScrollable,`scrollable overscroll`),w=B.panel,T=B.panelBody;return s?(0,$.jsx)(H,{containerClassName:b,tabListClassName:S,panelsClassName:C,panelClassName:w,panelBodyClassName:T,loadingText:c}):e.length?(0,$.jsxs)(`div`,{className:b,children:[(0,$.jsx)(`div`,{className:B.tabsWrapper,children:(0,$.jsx)(X,{items:e,state:v,className:S,ariaLabel:g,ariaLabelledBy:_})}),(0,$.jsx)(`div`,{className:C,children:e.map(e=>{let t=e.id===v.selectedTabId,n=y({mountStrategy:f,isSelected:t,isVisited:v.isVisited(e.id)});return(0,$.jsx)(J,{tabId:e.id,isSelected:t,className:w,getTabElementId:v.getTabElementId,getPanelElementId:v.getPanelElementId,children:n?(0,$.jsx)(`div`,{className:T,children:e.content}):null},e.id)})})]}):(0,$.jsx)(G,{containerClassName:b,panelsClassName:C,panelClassName:w,panelBodyClassName:T})}var $;function ne(){return(ne=e((()=>{i(),s(),c(),C(),V(),W(),q(),Y(),Q(),$=n(),te.__docgenInfo={description:`Простой items-based tabs-компонент.
|
|
2
2
|
Сам управляет областью панели и её прокруткой.`,methods:[],displayName:`TabsBox`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"automatic"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"unmount"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},tone:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "tertiary"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"tertiary"`}]},description:``,defaultValue:{value:`"primary"`,computed:!1}},clean:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsBoxItem`}],raw:`TabsBoxItem[]`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}})))()}export{J as a,V as c,b as d,y as f,Q as i,C as l,ne as n,Y as o,X as r,B as s,te as t,x as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./x-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n,t as r}from"./x-CsG3nxct.js";import{n as i}from"./iframe-BvendKJ_.js";import{a,i as o}from"./utils-tg3ibbzi.js";import{n as s,t as c}from"./ui.module-l7VCYIW-.js";import{d as l,l as u,s as ee,u as d}from"./Input-C-RwifM5.js";function f(...e){return e.filter(Boolean).join(` `)||void 0}function p(e){return e.trim()}function m(e){return e}function h(e){return`Удалить тег «${e}»`}var g,_,v,y,b,x,S;function C(){return(C=e((()=>{g=`AoFB3K`,_=`PvaUEA`,v=`FZ-xEM`,y=`-RCqfG`,b=`ggY643`,x=`hiZq-y`,S={control:g,tagList:_,tag:v,tagText:y,removeButton:b,input:x}})))()}function w({ref:e,value:t,onChange:n,label:i,description:o,placeholder:c,size:u,disabled:d,readOnly:g=!1,error:_,onClearError:v,maxTags:y,normalizeTag:b=p,getTagKey:x=m,addOnBlur:C=!0,getRemoveButtonAriaLabel:w=h,tokensAriaLabel:k=`Добавленные теги`,inputClassName:A,className:j,id:M,name:N,form:P,required:te,maxLength:F,onKeyDown:ne,onPaste:re,onBlur:ie,onCompositionStart:ae,onCompositionEnd:oe,"aria-describedby":I,"aria-labelledby":L,...R}){let z=(0,T.useRef)(null),B=(0,T.useRef)(null),V=(0,T.useRef)(!1),[H,U]=(0,T.useState)(``),[W,G]=(0,T.useState)(``),{controlId:K,labelId:q,descriptionId:se,errorId:ce,describedBy:le}=l({id:M,hasLabel:i!=null,hasDescription:!!o,hasError:!!_}),J=y===void 0?1/0:Math.max(0,Math.floor(y)),Y=d||g,X=f(le,I),ue=f(q,L);(0,T.useImperativeHandle)(e,()=>{let e=z.current;if(!e)throw Error(`TagInput: внутренний input недоступен при создании imperative handle.`);return e},[]);let Z=e=>{if(Y)return;v?.();let r=[...t],i=new Set(r.map(e=>x(e))),a=[],o=0,s=!1;for(let t of e){let e=b(t);if(!e)continue;if(F!==void 0&&e.length>F){G(`Тег «${e}» длиннее допустимого значения.`);continue}let n=x(e);if(i.has(n)){o+=1;continue}if(r.length>=J){s=!0;break}i.add(n),r.push(e),a.push(e)}a.length>0?(n(r),G(a.length===1?`Добавлен тег «${a[0]}».`:`Добавлено тегов: ${a.length}.`)):s?G(`Достигнуто максимальное количество тегов: ${J}.`):o>0&&G(`Такой тег уже добавлен.`)},Q=()=>H?(Z(H.split(O)),U(``),!0):!1,$=e=>{if(Y)return;let r=t[e];r!==void 0&&(n(t.filter((t,n)=>n!==e)),v?.(),G(`Удалён тег «${r}».`),z.current?.focus())},de=e=>{if(ne?.(e),!(e.defaultPrevented||e.nativeEvent.isComposing||V.current||Y)){if(e.key===`Enter`||e.key===`,`){(Q()||e.key===`,`)&&e.preventDefault();return}e.key===`Backspace`&&H.length===0&&t.length>0&&(e.preventDefault(),$(t.length-1))}},fe=e=>{if(re?.(e),e.defaultPrevented||Y)return;let t=e.clipboardData.getData(`text`);if(!D.test(t))return;e.preventDefault();let n=e.currentTarget.selectionStart??H.length,r=e.currentTarget.selectionEnd??n,i=`${H.slice(0,n)}${t}${H.slice(r)}`;Z(i.split(O)),U(``)};return(0,E.jsxs)(ee,{label:i,description:o,disabled:d,className:j,size:u,error:_,controlId:K,labelId:q,descriptionId:se,errorId:ce,children:[(0,E.jsxs)(`div`,{ref:B,className:a(s.uiControl,_&&s.invalid,S.control),"data-disabled":d?``:void 0,"data-readonly":g?``:void 0,"data-invalid":_?``:void 0,onClick:()=>z.current?.focus(),children:[t.length>0&&(0,E.jsx)(`ul`,{className:S.tagList,"aria-label":k,children:t.map((e,t)=>(0,E.jsxs)(`li`,{className:S.tag,children:[(0,E.jsx)(`span`,{className:S.tagText,children:e}),!Y&&(0,E.jsx)(`button`,{type:`button`,className:S.removeButton,onClick:e=>{e.stopPropagation(),$(t)},"aria-label":w(e,t),children:(0,E.jsx)(r,{"aria-hidden":`true`})})]},`${x(e)}-${t}`))}),(0,E.jsx)(`input`,{...R,ref:z,id:K,form:P,disabled:d,readOnly:g,required:te&&t.length===0,maxLength:F,value:H,placeholder:t.length===0?c:void 0,"aria-invalid":!!_||void 0,"aria-labelledby":ue,"aria-describedby":X,className:a(S.input,A),onChange:e=>{let t=e.target.value,n=D.test(t);if(V.current)U(t);else if(n){let e=t.split(O),n=D.test(t.at(-1)??``)?``:e.pop()??``;Z(e),U(n)}else U(t);(V.current||!n)&&v?.()},onKeyDown:de,onPaste:fe,onCompositionStart:e=>{V.current=!0,ae?.(e)},onCompositionEnd:e=>{V.current=!1,oe?.(e)},onBlur:e=>{ie?.(e);let t=e.relatedTarget,n=t instanceof Node&&B.current?.contains(t);!e.defaultPrevented&&!n&&C&&!Y&&Q()}}),N&&t.map((e,t)=>(0,E.jsx)(`input`,{type:`hidden`,name:N,value:e,form:P,disabled:d},`${x(e)}-${t}`))]}),(0,E.jsx)(`span`,{className:`visuallyHidden`,"aria-live":`polite`,"aria-atomic":`true`,children:W})]})}var T,E,D,O;function k(){return(k=e((()=>{T=t(),o(),n(),u(),d(),c(),C(),E=i(),D=/[,\r\n]/,O=/[,\r\n]+/,w.__docgenInfo={description:"Controlled-поле для создания коротких строковых тегов.\n\nНовое значение фиксируется по `Enter`, запятой, вставке списка или потере фокуса. Компонент хранит\nтолько незавершённый текст input, а окончательный набор всегда принадлежит потребителю через `value`.",methods:[],displayName:`TagInput`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},ref:{required:!1,tsType:{name:`Ref`,elements:[{name:`HTMLInputElement`}],raw:`Ref<HTMLInputElement>`},description:"Ссылка на внутренний нативный `input`, передаваемая напрямую как React 19 prop."},error:{required:!1,tsType:{name:`string`},description:"Сообщение валидации, связанное с полем через `aria-describedby`."},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Сбрасывает внешнюю ошибку после изменения черновика или набора тегов.`},readOnly:{required:!1,tsType:{name:`boolean`},description:`Запрещает изменение набора тегов, сохраняя возможность выделять и копировать текст.`,defaultValue:{value:`false`,computed:!1}},maxTags:{required:!1,tsType:{name:`number`},description:`Максимальное количество тегов. Отсутствие значения не ограничивает набор.`},normalizeTag:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => string`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`string`}}},description:`Нормализует введённое значение перед проверкой дубликата и добавлением.
|
|
2
2
|
По умолчанию удаляет пробелы в начале и конце.`,defaultValue:{value:`function defaultNormalizeTag(value: string) {
|
|
3
3
|
return value.trim();
|
|
4
4
|
}`,computed:!1}},getTagKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => string`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`string`}}},description:`Возвращает ключ сравнения тегов. Позволяет, например, запретить дубликаты без учёта регистра.
|
package/storybook-static/assets/{TagInput.stories-DNcD4tn4.js → TagInput.stories-DAyX89-l.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-DkW27tQK.js";import{n}from"./iframe-BvendKJ_.js";import{n as r,t as i}from"./createControlledStoryRender-BouhvX-R.js";import{n as a,t as o}from"./TagInput-R6ANDdvh.js";var s=t({Controlled:()=>d,ReadOnly:()=>f,__namedExportsOrder:()=>p,default:()=>u}),c,l,u,d,f,p;function m(){return(m=e((()=>{r(),a(),c=n(),l=i((e,t)=>(0,c.jsx)(o,{...e,value:e.value??[],onChange:n=>{e.onChange?.(n),t({value:n})},onClearError:()=>{e.onClearError?.(),t({error:void 0})}})),u={title:`UI/TagInput`,component:o,args:{value:[],onChange:()=>void 0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля тегов.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Подсказка для черновика нового тега.`,control:`text`},value:{description:`Controlled-набор добавленных тегов.`,control:`object`},onChange:{description:`Возвращает новый набор после добавления или удаления тега.`,control:!1},error:{description:"Текст ошибки, связанный с полем через `aria-describedby`.",control:`text`},onClearError:{description:`Вызывается после изменения черновика или набора тегов.`,control:!1},disabled:{description:`Блокирует ввод и изменение набора тегов.`,control:`boolean`},size:{description:`Размер поля и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]},maxTags:{description:`Максимальное количество тегов.`,control:{type:`number`,min:0,step:1}},readOnly:{description:`Показывает теги без действий добавления и удаления, сохраняя возможность копирования.`,control:`boolean`},normalizeTag:{description:`Нормализует введенный тег до проверки дубликата и добавления.`,control:!1},getTagKey:{description:`Формирует ключ для сравнения тегов и поиска дубликатов.`,control:!1},addOnBlur:{description:`Добавляет непустой черновик при уходе фокуса с поля.`,control:`boolean`},getRemoveButtonAriaLabel:{description:`Формирует доступное имя кнопки удаления конкретного тега.`,control:!1},tokensAriaLabel:{description:`Доступное имя списка уже добавленных тегов.`,control:`text`},inputClassName:{description:`CSS-класс внутреннего поля черновика тега.`,control:`text`}}},d={render:l,args:{label:`Теги материала`,description:`Введите значение и нажмите Enter или запятую. Можно вставить сразу несколько строк.`,placeholder:`Добавить тег`,value:[`Новости`,`Колледж`],maxTags:10,getTagKey:e=>e.toLocaleLowerCase(`ru`)}},f={render:l,args:{label:`Теги материала`,value:[`Новости`,`Колледж`],readOnly:!0}},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
render: renderTagInputStory,
|
|
3
3
|
args: {
|
|
4
4
|
label: "Теги материала",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-DkW27tQK.js";import{t}from"./react-BZJXY1be.js";import{n}from"./iframe-BvendKJ_.js";import{a as r,i}from"./utils-tg3ibbzi.js";function a({size:e,color:t,weight:n,italic:i,uppercase:a,wrap:o,className:c}){return(0,s.useMemo)(()=>{let s=[];return e&&s.push(u[e]),n&&s.push(d[n]),o&&s.push(f[o]),i&&s.push(`fontItalic`),a&&s.push(`textUppercase`),t&&s.push(l[t]),r(...s,c)},[e,n,t,i,a,o,c])}function o({children:e,as:t,style:n,role:r,size:i,color:o,weight:s,italic:l,uppercase:u,wrap:d,className:f,...p}){let m=a({size:i,color:o,weight:s,italic:l,uppercase:u,wrap:d,className:f});return(0,c.jsx)(t||`span`,{...p,role:r,className:m,style:n,children:e})}var s,c,l,u,d,f;function p(){return(p=e((()=>{s=t(),i(),c=n(),l={primary:`content0`,secondary:`content1`,muted:`content2`,info:`statusInfo`,success:`statusSuccess`,warning:`statusWarning`,error:`statusError`,brand:`statusBrand`,accent:`contentAccent`},u={xs:`fontSizeXs`,sm:`fontSizeSm`,md:`fontSizeMd`,lg:`fontSizeLg`,xl:`fontSizeXl`},d={lighter:`fontLighter`,light:`fontLight`,regular:`fontRegular`,medium:`fontMedium`,bold:`fontBold`,bolder:`fontBolder`},f={wrap:`textWrap`,noWrap:`textNoWrap`},o.__docgenInfo={description:``,methods:[],displayName:`Text`,props:{size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},color:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "muted" | "error" | "warning" | "success" | "info" | "brand" | "accent"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"muted"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`},{name:`literal`,value:`"brand"`},{name:`literal`,value:`"accent"`}]},description:``},weight:{required:!1,tsType:{name:`union`,raw:`"lighter" | "light" | "regular" | "medium" | "bold" | "bolder"`,elements:[{name:`literal`,value:`"lighter"`},{name:`literal`,value:`"light"`},{name:`literal`,value:`"regular"`},{name:`literal`,value:`"medium"`},{name:`literal`,value:`"bold"`},{name:`literal`,value:`"bolder"`}]},description:``},italic:{required:!1,tsType:{name:`boolean`},description:``},uppercase:{required:!1,tsType:{name:`boolean`},description:``},wrap:{required:!1,tsType:{name:`union`,raw:`"wrap" | "noWrap"`,elements:[{name:`literal`,value:`"wrap"`},{name:`literal`,value:`"noWrap"`}]},description:``},className:{required:!1,tsType:{name:`string`},description:``},style:{required:!1,tsType:{name:`CSSProperties`},description:``},role:{required:!1,tsType:{name:`AriaRole`},description:``},children:{required:!0,tsType:{name:`ReactNode`},description:``},as:{required:!1,tsType:{name:`union`,raw:`"code" | "span" | "p" | "div" | "h2" | "h3" | "h4" | "h5" | "h6"`,elements:[{name:`literal`,value:`"code"`},{name:`literal`,value:`"span"`},{name:`literal`,value:`"p"`},{name:`literal`,value:`"div"`},{name:`literal`,value:`"h2"`},{name:`literal`,value:`"h3"`},{name:`literal`,value:`"h4"`},{name:`literal`,value:`"h5"`},{name:`literal`,value:`"h6"`}]},description:``}},composes:[`AriaAttributes`]}})))()}export{p as n,o as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.IFCV0m{overflow-wrap:anywhere;min-width:0;max-width:100%;color:var(--content-0)}.IFCV0m p,.IFCV0m blockquote,.IFCV0m h1,.IFCV0m h2,.IFCV0m h3,.IFCV0m h4,.IFCV0m h5,.IFCV0m h6,.IFCV0m ul,.IFCV0m ol{margin-block:0 var(--space-sm)}.IFCV0m p,.IFCV0m blockquote,.IFCV0m h1,.IFCV0m h2,.IFCV0m h3,.IFCV0m h4,.IFCV0m h5,.IFCV0m h6,.IFCV0m li{white-space:pre-wrap}.IFCV0m>:last-child{margin-block-end:0}.IFCV0m ul,.IFCV0m ol{padding-inline-start:var(--space-lg)}.IFCV0m ul{list-style-type:disc}.IFCV0m ol{list-style-type:decimal}.IFCV0m li[data-nested-list=true]{list-style-type:none}.IFCV0m blockquote{border-inline-start:var(--border);color:var(--content-1);margin-inline:0;padding-inline-start:var(--space-md)}.IFCV0m code{border-radius:var(--radius-xs);padding-inline:var(--space-xs);background:var(--surface-2)}.IFCV0m mark{background:var(--warning-fill);color:var(--warning-on-fill)}.-rhzJm{inline-size:100%;max-inline-size:var(--ui-width-xl)}
|