@ryuzaki13/react-foundation-ui 1.6.15 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/advanced-search/index.js +1 -1
- package/dist/base-table/index.js +2 -2
- package/dist/base-table/lib/columnPinning.d.ts +15 -17
- package/dist/base-table/lib/columnPinning.d.ts.map +1 -1
- package/dist/base-table/lib/mergeDuplicates.d.ts +4 -4
- package/dist/base-table/lib/mergeDuplicates.d.ts.map +1 -1
- package/dist/base-table/model/useTableColumnPinning.d.ts +2 -2
- package/dist/base-table/model/useTableColumnVisibility.d.ts +7 -6
- package/dist/base-table/model/useTableColumnVisibility.d.ts.map +1 -1
- package/dist/base-table/ui/BaseTable.d.ts +8 -9
- package/dist/base-table/ui/BaseTable.d.ts.map +1 -1
- package/dist/base-table/ui/BaseTableHeaderCell.d.ts +6 -6
- package/dist/base-table/ui/BaseTableHeaderCell.d.ts.map +1 -1
- package/dist/chunks/{base-table-CTafaxo2.js → base-table-DNSYOO9t.js} +29 -29
- package/dist/chunks/base-table-DNSYOO9t.js.map +1 -0
- package/dist/chunks/{table-DOwANXnt.js → table-RO4dfMAj.js} +9 -9
- package/dist/chunks/table-RO4dfMAj.js.map +1 -0
- package/dist/simple-table/SimpleTable.d.ts +2 -2
- package/dist/simple-table/SimpleTable.d.ts.map +1 -1
- package/dist/simple-table/index.js +7 -10
- package/dist/simple-table/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/table/Table.d.ts +7 -8
- package/dist/table/Table.d.ts.map +1 -1
- package/dist/table/index.js +1 -1
- package/dist/tree-table/TreeTable.d.ts +7 -8
- package/dist/tree-table/TreeTable.d.ts.map +1 -1
- package/dist/tree-table/index.js +104 -105
- package/dist/tree-table/index.js.map +1 -1
- package/package.json +9 -9
- package/storybook-static/assets/{Badge-y59HS6Mh.js → Badge-Dvx1zhPb.js} +1 -1
- package/storybook-static/assets/{Badge.stories-CmAFVzHL.js → Badge.stories-0OqfwxFw.js} +1 -1
- package/storybook-static/assets/{BadgeList-B-LJdCLU.js → BadgeList-y-uBOP3g.js} +1 -1
- package/storybook-static/assets/{Button-CbGK6ujA.js → Button-C80gfqoH.js} +1 -1
- package/storybook-static/assets/{Button-CVhc13mG.js → Button-Do2mwgAg.js} +1 -1
- package/storybook-static/assets/{Button.stories-BxBE5epv.js → Button.stories-D8Fw6nud.js} +1 -1
- package/storybook-static/assets/{CalendarView-DC1MoZHd.js → CalendarView--kZXxq2R.js} +1 -1
- package/storybook-static/assets/{CheckBox-CJuQmvgS.js → CheckBox-B75CNLqu.js} +1 -1
- package/storybook-static/assets/{CheckBox-CTF0MTwi.js → CheckBox-BLhKCbdy.js} +1 -1
- package/storybook-static/assets/{CheckBox.stories-Cgcw4ZWi.js → CheckBox.stories-B6oVA8el.js} +1 -1
- package/storybook-static/assets/{Color-6AOWCN3U-BQ0wHxzY.js → Color-6AOWCN3U-cvznI3uO.js} +1 -1
- package/storybook-static/assets/{ContextMenu-DKFfj-4J.js → ContextMenu-CO0idIWo.js} +1 -1
- package/storybook-static/assets/{ContextMenu-CHa5JD2q.js → ContextMenu-fNZVzUvQ.js} +1 -1
- package/storybook-static/assets/{ContextMenu.stories-BrFpb6Zf.js → ContextMenu.stories-0nmobIh6.js} +1 -1
- package/storybook-static/assets/{DateInput-C4NbLkP1.js → DateInput-C2In05Rg.js} +1 -1
- package/storybook-static/assets/{DateInput-DMar_jSh.js → DateInput-D2rfcbf3.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-9NUN5Y-h.js → DateInput.stories-JUkITh6A.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-BNM2Z8v-.js → DateRangePresetSelect-Qc1kiswO.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-C2YQ1Ta2.js → DateRangePresetSelect-nJgrTbCb.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect.stories-CU57n31Y.js → DateRangePresetSelect.stories-ZCKuMVv1.js} +1 -1
- package/storybook-static/assets/{Detail-ClrynTH8.js → Detail-pOYJZCE7.js} +1 -1
- package/storybook-static/assets/{Detail.stories-D8uN6AEx.js → Detail.stories-zt0s1IF8.js} +1 -1
- package/storybook-static/assets/{Dialog-B3yVDNey.js → Dialog-0qof8LAi.js} +1 -1
- package/storybook-static/assets/{Dialog-F6geiNP6.js → Dialog-yNCOXo0U.js} +1 -1
- package/storybook-static/assets/{Dialog.stories-BUISgmFq.js → Dialog.stories-B8N3aCaV.js} +1 -1
- package/storybook-static/assets/{Disclosure-D8eee9jT.js → Disclosure-1aczsOfE.js} +1 -1
- package/storybook-static/assets/{Disclosure.stories-C81bKGvm.js → Disclosure.stories-BHF7zV4r.js} +1 -1
- package/storybook-static/assets/{DisclosureGroup-Dql74J3c.js → DisclosureGroup-1UIF1dzA.js} +1 -1
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-B_i8iiBi.js → DocsRenderer-JROSPFPF-C3ElfDK6.js} +1 -1
- package/storybook-static/assets/{DropZone-CjYwzdtm.js → DropZone-BXwkEyR-.js} +1 -1
- package/storybook-static/assets/{DropZone-CWU49UGV.js → DropZone-DcnHdyOy.js} +1 -1
- package/storybook-static/assets/{DropZone.stories-Bu9astzV.js → DropZone.stories-C__hp7nZ.js} +1 -1
- package/storybook-static/assets/{DropdownMenu-CIQZ1s_d.js → DropdownMenu-Cn3NEWML.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-a-wSXVqz.js → ExpandableActionPanel-DRmbAqvH.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel.stories-B5kDNMOA.js → ExpandableActionPanel.stories-CILdKlLi.js} +1 -1
- package/storybook-static/assets/{Flex-C-LVVZu8.js → Flex-sxipWyth.js} +1 -1
- package/storybook-static/assets/{Flex.stories-C3UyARP_.js → Flex.stories-DY8V2sbR.js} +1 -1
- package/storybook-static/assets/{FloatingPopover-C3jr4qCd.js → FloatingPopover-CNZzGjfO.js} +1 -1
- package/storybook-static/assets/{FormattedTableCell-CY3E21k8.css → FormattedTableCell-AZc2IHfK.css} +1 -1
- package/storybook-static/assets/FormattedTableCell-DG4dVFTa.js +15 -0
- package/storybook-static/assets/{Grid-T44eQhRH.js → Grid-D2wN6WmI.js} +1 -1
- package/storybook-static/assets/{Grid.stories-CCyTn5oG.js → Grid.stories-Dtya61zz.js} +1 -1
- package/storybook-static/assets/{ImageCropper.stories-Ctj0tTWD.js → ImageCropper.stories-CQOvZs9k.js} +1 -1
- package/storybook-static/assets/{ImageRenderer-BmzXaLnX.js → ImageRenderer-C8mxg5a9.js} +1 -1
- package/storybook-static/assets/{ImageRenderer.stories-BchLDd9U.js → ImageRenderer.stories-ulHRIV84.js} +1 -1
- package/storybook-static/assets/{ImageView.stories-wZChQ7t6.js → ImageView.stories-DfO8LRNv.js} +1 -1
- package/storybook-static/assets/{ImageViewer.stories-CjwPt6ux.js → ImageViewer.stories-BC2AIOFa.js} +2 -2
- package/storybook-static/assets/{ImageViewerRuntime-CwHTx5CR.js → ImageViewerRuntime-D3u-RNDY.js} +1 -1
- package/storybook-static/assets/{Input-B9nkOQ6L.js → Input-BrWASIXE.js} +1 -1
- package/storybook-static/assets/{Input-ByxjsYlG.js → Input-Duo7u72d.js} +1 -1
- package/storybook-static/assets/{Input.stories-Bcyy4kLt.js → Input.stories--i9k07KI.js} +1 -1
- package/storybook-static/assets/{InputDateTime-DfpHtYTi.js → InputDateTime-DcZRgiPg.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-WDuCOx_6.js → InputDateTime.stories-Dt6Y1CZ2.js} +1 -1
- package/storybook-static/assets/{InputFile-DQUxyiai.js → InputFile-BiLD06iA.js} +1 -1
- package/storybook-static/assets/{InputFile-DAko5xMV.js → InputFile-Cj-m_fo4.js} +1 -1
- package/storybook-static/assets/{InputFile.stories-X6set_bl.js → InputFile.stories-akX4tW3o.js} +1 -1
- package/storybook-static/assets/{InputFiles-CYo3-wOK.js → InputFiles-6FDWUpPw.js} +1 -1
- package/storybook-static/assets/{InputFiles-B0Gs4B9M.js → InputFiles-B8Erga76.js} +1 -1
- package/storybook-static/assets/{InputFiles.stories-D04gwM6v.js → InputFiles.stories-CHQIzkT-.js} +1 -1
- package/storybook-static/assets/{InputFilesList-V2ras_Is.js → InputFilesList-B2ED3xeD.js} +1 -1
- package/storybook-static/assets/{InputImage-CsAsZufs.js → InputImage-Csz6DuXw.js} +1 -1
- package/storybook-static/assets/{InputImage-CuuPUX-y.js → InputImage-DgEux6nu.js} +1 -1
- package/storybook-static/assets/{InputImage.stories-ClhlRcMN.js → InputImage.stories-BQMt1D7p.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents-BjG6Uxcq.js → InteractiveComponents-Dsk4_Vr2.js} +1 -1
- package/storybook-static/assets/{InteractiveComponents.stories-ljjqMc9s.js → InteractiveComponents.stories-DkOUo1Hs.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-C3i1T7zB.js → LayoutPicker-BYQGwA2A.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-C1APKtbC.js → LayoutPicker-CtU_BRSU.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-Cn66HQfj.js → LayoutPicker.stories-u-llXrmg.js} +1 -1
- package/storybook-static/assets/{Listbox-BQZFMdE4.js → Listbox-CRpGe74L.js} +1 -1
- package/storybook-static/assets/{Listbox-BhzabNF9.js → Listbox-D-w3s2rV.js} +1 -1
- package/storybook-static/assets/{Listbox.stories-BmKd1TN6.js → Listbox.stories-DNgm_jEg.js} +1 -1
- package/storybook-static/assets/{Modal-CrDusmmr.js → Modal-BCEfdMRV.js} +1 -1
- package/storybook-static/assets/{Modal.stories-CK7BwByp.js → Modal.stories-DgluP-Zg.js} +1 -1
- package/storybook-static/assets/{ModalManagerProvider-CP_LR9Sf.js → ModalManagerProvider-DB1CpShR.js} +1 -1
- package/storybook-static/assets/{MultiSelect-DY9PZi68.js → MultiSelect-CtPVgzw3.js} +1 -1
- package/storybook-static/assets/{MultiSelect-DnqTZr96.js → MultiSelect-DXazv8Gk.js} +1 -1
- package/storybook-static/assets/{MultiSelect.stories-CVX122Ie.js → MultiSelect.stories-m3lK4whp.js} +1 -1
- package/storybook-static/assets/{NoData-DtfUdNbp.js → NoData-tXPTJtqs.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-7zqHt4bx.js → NotificationsHost-Cns_wFoV.js} +1 -1
- package/storybook-static/assets/{NotificationsHost.stories-Idv-3hmN.js → NotificationsHost.stories-Bl6cz2bV.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect-CvzIsU5t.js → ODataMultiSelect-6Df5Fkah.js} +1 -1
- package/storybook-static/assets/{ODataMultiSelect.stories-DATnsk6a.js → ODataMultiSelect.stories-B6yPCpTe.js} +1 -1
- package/storybook-static/assets/{ODataSelect-Cg4PjB9T.js → ODataSelect-BO5s66q2.js} +1 -1
- package/storybook-static/assets/{ODataSelect.stories-DgJvyuln.js → ODataSelect.stories-C0zyeXlC.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect-DovHjUl1.js → ODataTreeMultiSelect-OSArfN7U.js} +1 -1
- package/storybook-static/assets/{ODataTreeMultiSelect.stories-DgzqY4r0.js → ODataTreeMultiSelect.stories-DIO3n7N6.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect-JJ2vuX2u.js → ODataTreeSelect-C2YNVppX.js} +1 -1
- package/storybook-static/assets/{ODataTreeSelect.stories-C1htwHhJ.js → ODataTreeSelect.stories-BCjXst_-.js} +1 -1
- package/storybook-static/assets/{OneStepScroller-Cj_Sots6.js → OneStepScroller-CBqY-Bqn.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-umbZa6Vz.js → PeriodSelect-8I2DZE_l.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-BCmsFuv0.js → PeriodSelect-D9DwWI_-.js} +1 -1
- package/storybook-static/assets/{PeriodSelect.stories-iZew0d5P.js → PeriodSelect.stories-Dvdfl6jl.js} +1 -1
- package/storybook-static/assets/{PickerSelectionToolbar-BpRSRbT3.js → PickerSelectionToolbar-DTFaKHYJ.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-BBpUiawn.js → PickerTriggerActions-DB5hWOPs.js} +1 -1
- package/storybook-static/assets/{Popover-DlwBQ91i.js → Popover-DDuVgt46.js} +1 -1
- package/storybook-static/assets/{Popover-COZU5MVS.js → Popover-x1KDnoku.js} +1 -1
- package/storybook-static/assets/{Popover.stories-BsjqePTd.js → Popover.stories-JeW5d8gm.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-QfbYKw0Z.js → PresetRangeDateInput-C4gbhz_V.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput-Dk5jJC5w.js → PresetRangeDateInput-Csq8RBK7.js} +1 -1
- package/storybook-static/assets/{PresetRangeDateInput.stories-BuykZTZe.js → PresetRangeDateInput.stories-mPfnN7w9.js} +1 -1
- package/storybook-static/assets/{PresetSelect-CZ7mJxKl.js → PresetSelect-D5XN8_y3.js} +1 -1
- package/storybook-static/assets/{RadioButton-ism7L8zl.js → RadioButton-3vNTYzok.js} +1 -1
- package/storybook-static/assets/{RadioButton-_kpqtWIo.js → RadioButton-DqKb7dga.js} +1 -1
- package/storybook-static/assets/{RadioButton.stories-DfjhjPnV.js → RadioButton.stories-DEtB6-Gq.js} +1 -1
- package/storybook-static/assets/{RadioGroup-B7so-JDF.js → RadioGroup-BVH61YyU.js} +1 -1
- package/storybook-static/assets/{RadioGroup-DxYjpIR1.js → RadioGroup-CxSDxT4Z.js} +1 -1
- package/storybook-static/assets/{RadioGroup.stories-DpVtRTBk.js → RadioGroup.stories-D8YHF52N.js} +1 -1
- package/storybook-static/assets/{Scrollable-D6rD81Kz.js → Scrollable-CzjaBhDx.js} +1 -1
- package/storybook-static/assets/{Select-Ci-axJ2e.js → Select-DCitHJuw.js} +1 -1
- package/storybook-static/assets/{Select-DffwCANA.js → Select-DRU8ibvA.js} +1 -1
- package/storybook-static/assets/{Select.stories-C9LrrykH.js → Select.stories-CK_D5RAO.js} +1 -1
- package/storybook-static/assets/{SelectOptionContent-DFbLFeJp.js → SelectOptionContent-BAJEXMJG.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-CE_lhNql.js → SerializableSelect-DyRYm6Fb.js} +1 -1
- package/storybook-static/assets/{SerializableSelect.stories-DV6F91Gh.js → SerializableSelect.stories-6msteGLD.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-CGEUodYr.js → SingleDateTimeInput-CNIODG1r.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-DaL7cpjM.js → SingleDateTimeInput-Dt2pvrEI.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput.stories-C7qfFiPV.js → SingleDateTimeInput.stories-BjZkApxR.js} +1 -1
- package/storybook-static/assets/{Slider-BrukeE6j.js → Slider-C2STT2eb.js} +1 -1
- package/storybook-static/assets/{Slider-m5BO0wFz.js → Slider-CyrGnw3r.js} +1 -1
- package/storybook-static/assets/{Slider.stories-CNqzSJqp.js → Slider.stories-cV_-2z3X.js} +1 -1
- package/storybook-static/assets/{SliderInput-CS9d2VpF.js → SliderInput-C7XLyS8n.js} +1 -1
- package/storybook-static/assets/{SliderInput-D0UlZx-t.js → SliderInput-DxWLjpcW.js} +1 -1
- package/storybook-static/assets/{SliderInput.stories-B5-aln-T.js → SliderInput.stories-DBIe7Yhj.js} +1 -1
- package/storybook-static/assets/{Sortable-CSt-VcmM.js → Sortable-06Qmji0A.js} +1 -1
- package/storybook-static/assets/{Sortable.stories-CVUdrXGv.js → Sortable.stories-VPSDld7o.js} +1 -1
- package/storybook-static/assets/{Splitter-DcsxH_9j.js → Splitter-Bjc9_DpU.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-BBfUYDeq.js → Splitter.stories-CaecpwzX.js} +1 -1
- package/storybook-static/assets/{StateSelect-CCQIdUHC.js → StateSelect-CBqVFgZr.js} +1 -1
- package/storybook-static/assets/{StateSelect-BDJRQxjc.js → StateSelect-DEbS-UHz.js} +1 -1
- package/storybook-static/assets/{StateSelect.stories-7wPKSG6b.js → StateSelect.stories-DHCZQjpD.js} +1 -1
- package/storybook-static/assets/{StringToggle.stories-DRiRwW1z.js → StringToggle.stories-DZ5cJKre.js} +1 -1
- package/storybook-static/assets/{Switch-Cw3jDgSx.js → Switch-BQVOziJc.js} +1 -1
- package/storybook-static/assets/{Switch-BtZXCfQa.js → Switch-DbMsXJZQ.js} +1 -1
- package/storybook-static/assets/{Switch.stories-DprDLnyc.js → Switch.stories-xsRPNma9.js} +1 -1
- package/storybook-static/assets/{Table-C0C6gEXh.js → Table-90xunt07.js} +1 -1
- package/storybook-static/assets/Table.stories-BHO05Nt2.js +207 -0
- package/storybook-static/assets/{Tabs-Cmm9Be8c.js → Tabs-I00nOCLh.js} +1 -1
- package/storybook-static/assets/{Tabs.stories-TZO3cqOu.js → Tabs.stories-B2XJ7Ho5.js} +1 -1
- package/storybook-static/assets/{TabsBox-CMleIsIx.js → TabsBox-elxR9IVU.js} +1 -1
- package/storybook-static/assets/{TagInput-C1w6bPXM.js → TagInput-DJRFuFDX.js} +1 -1
- package/storybook-static/assets/{TagInput.stories-DjZGRNf8.js → TagInput.stories-Cf6c-1Xx.js} +1 -1
- package/storybook-static/assets/{Text-B7BlP612.js → Text-CKeWyv1R.js} +1 -1
- package/storybook-static/assets/{Textarea-CR1BsDCZ.js → Textarea-DZ27cTTb.js} +1 -1
- package/storybook-static/assets/{Textarea-QCTMJrzh.js → Textarea-DamLyP7r.js} +1 -1
- package/storybook-static/assets/{Textarea.stories-BXVDnedp.js → Textarea.stories-1wsB9B_l.js} +1 -1
- package/storybook-static/assets/{TimePanel-sVNwfNVp.js → TimePanel-BCiqgc3_.js} +1 -1
- package/storybook-static/assets/{TimePanel.stories-CgWwUSUo.js → TimePanel.stories-CChD-RUz.js} +1 -1
- package/storybook-static/assets/{Toggle-CsN8aXvZ.js → Toggle-BAJj1RSd.js} +1 -1
- package/storybook-static/assets/{Toggle-yuE_iKax.js → Toggle-CUhT4loI.js} +1 -1
- package/storybook-static/assets/{Toggle.stories-cYH_nCrO.js → Toggle.stories-Dipcr_LJ.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-BUZ-QzJc.js → TreeMultiSelect-BXhuUX3J.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-Bb8lGllH.js → TreeMultiSelect-D4Owgkp8.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect.stories-x-F-Y4_h.js → TreeMultiSelect.stories-CB2jm_bz.js} +1 -1
- package/storybook-static/assets/{TreePickerBase-DOT734vD.js → TreePickerBase-eXU7yGrA.js} +1 -1
- package/storybook-static/assets/{TreeSelect-dx0121sD.js → TreeSelect-0dZm6ufk.js} +1 -1
- package/storybook-static/assets/{TreeSelect-DDgqDh2L.js → TreeSelect-5qlmmCCI.js} +1 -1
- package/storybook-static/assets/{TreeSelect.stories-Ef4wBpPe.js → TreeSelect.stories-CllcJYnI.js} +1 -1
- package/storybook-static/assets/{TreeTable-DSBZR5Ak.js → TreeTable-BqZk_QkK.js} +1 -1
- package/storybook-static/assets/{TreeTable.stories-ypxZKEv5.js → TreeTable.stories-BDoNVZCh.js} +4 -4
- package/storybook-static/assets/{async-B9dg7eWG.js → async-CoT7Kgjz.js} +1 -1
- package/storybook-static/assets/{blocks-Cta1XrWW.js → blocks-W-usNnZb.js} +3 -3
- package/storybook-static/assets/{browserAndReact-BQ_KR_3d.js → browserAndReact-CdN7k1Ys.js} +1 -1
- package/storybook-static/assets/{check-R_o7C6xx.js → check-DjVied9B.js} +1 -1
- package/storybook-static/assets/{chevron-down-cKT7IMMQ.js → chevron-down-CjmFWC1H.js} +1 -1
- package/storybook-static/assets/{chevron-left-CiDPsfyq.js → chevron-left-CgCtsWUK.js} +1 -1
- package/storybook-static/assets/{chevron-right-C19a7OR-.js → chevron-right-DfAt2YE7.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-DxKkuEyo.js → chunk-W22LQPXL-CPNotdVj.js} +1 -1
- package/storybook-static/assets/{circle-alert-DBOiovw1.js → circle-alert-DNyHEnP7.js} +1 -1
- package/storybook-static/assets/{circle-check-7XeWOdm4.js → circle-check-BUp-oyqo.js} +1 -1
- package/storybook-static/assets/components-CWI6MUvj.js +241 -0
- package/storybook-static/assets/{contextMenu-CJYmqLQb.js → contextMenu-B2RJaey1.js} +1 -1
- package/storybook-static/assets/{defaultRenderers-CbaqmJz1.js → defaultRenderers-jxMgDhVa.js} +1 -1
- package/storybook-static/assets/{download-7lMMZoAs.js → download-C5zRdMry.js} +1 -1
- package/storybook-static/assets/{filesAndExcel-ecqcdsWK.js → filesAndExcel-CYKyG14W.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-BZQpsoBF.js → floating-ui.react-BGMb0aIS.js} +1 -1
- package/storybook-static/assets/{formatters-CVj-3Vn0-BFaHJqZL.js → formatters-CBgrBeSA-DY6OIAc8.js} +1 -1
- package/storybook-static/assets/{formatters-Do_IyKhx.js → formatters-DeU7wI7T.js} +1 -1
- package/storybook-static/assets/{formatters-runtime-BzeLCcNv.js → formatters-runtime-DnSgDhbz.js} +1 -1
- package/storybook-static/assets/{foundationLib-llmpMqxO.js → foundationLib-DrimcZD1.js} +1 -1
- package/storybook-static/assets/{hooks-C3kva5fu.js → hooks-BJmY6rG1.js} +1 -1
- package/storybook-static/assets/{iframe-dENsI_HJ.js → iframe-BnW9ONAs.js} +4 -4
- package/storybook-static/assets/iframe-DGAjOA6_.js +1 -0
- package/storybook-static/assets/{info-DNxF2xdK.js → info-2igYCwst.js} +1 -1
- package/storybook-static/assets/odata-DfSyh3Sn.js +1 -0
- package/storybook-static/assets/{odataAndTables-D36xYvsu.js → odataAndTables-BhJXkoYZ.js} +3 -3
- package/storybook-static/assets/{odataFetchFn-38rx5VG-.js → odataFetchFn-D2X1lPng.js} +1 -1
- package/storybook-static/assets/{odataStoryFixtures-CorPZlzg.js → odataStoryFixtures-DYRSp8rq.js} +2 -2
- package/storybook-static/assets/{persisted-8ua2a009.js → persisted-DHhF6isC.js} +1 -1
- package/storybook-static/assets/{pureUtilities-ikdtRVqv.js → pureUtilities-ChXuZIo7.js} +1 -1
- package/storybook-static/assets/{react-B3i_po7W.js → react-CLWTMVeL.js} +1 -1
- package/storybook-static/assets/{refresh-cw-BauD2hhl.js → refresh-cw-B-NTAP58.js} +1 -1
- package/storybook-static/assets/{runtimeAndState-BpTnjVHY.js → runtimeAndState-H412awCm.js} +1 -1
- package/storybook-static/assets/{settings-2-BniDrt2R.js → settings-2-1qvlM5d_.js} +1 -1
- package/storybook-static/assets/shim-BUMlC1GG.js +1 -0
- package/storybook-static/assets/{sortable-BVQGL4Rj.js → sortable-BHG_CM3B.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-DX_O-alN.js → syntaxhighlighter-T5IQBZDB-R3_3CMVb.js} +1 -1
- package/storybook-static/assets/{trash-2-BN_08GUs.js → trash-2-CE6CewYq.js} +1 -1
- package/storybook-static/assets/{triangle-alert-CA9F5VpH.js → triangle-alert-D3UYXaLs.js} +1 -1
- package/storybook-static/assets/{useODataSelectBase-goRS7Fgm.js → useODataSelectBase-FSv5umRf.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-BIIUO50-.js → useODataTreeData-kmN53sfw.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-Di5pbi3P.js → usePickerQuery-0QXDg2qR.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-Bk7ww9go.js → usePickerTriggerController-FtkRoBgz.js} +1 -1
- package/storybook-static/assets/{x-BF_8tdj4.js → x-BGnlLolo.js} +1 -1
- package/storybook-static/iframe.html +2 -2
- package/storybook-static/project.json +1 -1
- package/dist/chunks/base-table-CTafaxo2.js.map +0 -1
- package/dist/chunks/table-DOwANXnt.js.map +0 -1
- package/storybook-static/assets/FormattedTableCell-D4NXq8Pu.js +0 -18
- package/storybook-static/assets/Table.stories-BgxeP7Dj.js +0 -207
- package/storybook-static/assets/components-CR7XtYhK.js +0 -241
- package/storybook-static/assets/iframe-BsjDYyde.js +0 -1
- package/storybook-static/assets/odata-KQkU-pBI.js +0 -1
- /package/storybook-static/assets/{odata-service-B5w4YBao-BW9QLSrS.js → odata-service-B6TxBSLm-BW9QLSrS.js} +0 -0
package/storybook-static/assets/{Splitter.stories-BBfUYDeq.js → Splitter.stories-CaecpwzX.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-BnW9ONAs.js";import{a as i,i as a}from"./utils-DUM89eIj.js";var o,s,c,l,u,d,f;function p(){return(p=e((()=>{o=`wAovST`,s=`QVVMwe`,c=`H43AJ8`,l=`pgo8sW`,u=`_8fCvqA`,d=`t6RFcI`,f={splitter:o,vertical:s,separator:c,horizontal:l,topLeft:u,bottomRight:d}})))()}function m(e,t,n){return Math.min(n,Math.max(t,e))}function h(e,t){return Number.isFinite(e)?m(e,0,1):t}function g(e,t){let n=h(e,E),r=h(t,D);return n<=r?[n,r]:[r,n]}function _(e,t){return e===`vertical`?t.clientX:t.clientY}function v(e,t){return e===`vertical`?t.width:t.height}function y(e,t){if(e===`vertical`){if(t===`ArrowLeft`)return-.02;if(t===`ArrowRight`)return k}if(e===`horizontal`){if(t===`ArrowUp`)return-.02;if(t===`ArrowDown`)return k}return null}function b(e,t){return t===`start`?0:t===`end`?1:e}function x({direction:e,initial:t,min:n,max:r,collapsedPane:i}){let[a,o]=g(n,r),s=(0,w.useRef)(null),c=(0,w.useRef)(null),l=(0,w.useRef)(null),u=(0,w.useRef)(null),d=(0,w.useRef)(null),f=(0,w.useRef)(null),p=(0,w.useRef)(0),x=(0,w.useRef)(m(h(t,O),a,o)),S=(0,w.useRef)(t),[C,T]=(0,w.useState)(()=>m(h(t,O),a,o)),E=(0,w.useRef)(C),D=(0,w.useCallback)(e=>{E.current=e,c.current?.style.setProperty(`flex-basis`,`${b(e,i)*100}%`),l.current?.setAttribute(`aria-valuenow`,`${Math.round(e*100)}`)},[i]),k=()=>{if(f.current!==null&&(cancelAnimationFrame(f.current),f.current=null),d.current===null)return E.current;let e=d.current;return d.current=null,D(e),e},A=e=>{d.current=e,f.current===null&&(f.current=requestAnimationFrame(()=>{f.current=null,d.current!==null&&D(d.current)}))},j=()=>{u.current?.(),u.current=null},M=e=>{k(),T(m(e,a,o))};return(0,w.useLayoutEffect)(()=>{D(C)},[D,C]),(0,w.useEffect)(()=>{T(e=>{let n=S.current!==t;return S.current=t,m(n?h(t,O):e,a,o)})},[t,a,o]),(0,w.useEffect)(()=>()=>{j(),f.current!==null&&cancelAnimationFrame(f.current)},[]),{containerRef:s,topLeftRef:c,separatorRef:l,ratio:C,minRatio:a,maxRatio:o,handleSeparatorPointerDown:t=>{if(t.button!==0)return;t.preventDefault();let n=s.current;if(!n)return;j();try{t.currentTarget.setPointerCapture?.(t.pointerId)}catch{}p.current=_(e,t),x.current=E.current;let r=t=>{let r=v(e,n.getBoundingClientRect());if(r<=0)return;let i=_(e,t)-p.current,s=m(x.current+i/r,a,o);A(s)},i=()=>{j(),T(k())};u.current=()=>{document.removeEventListener(`pointermove`,r),document.removeEventListener(`pointerup`,i),document.removeEventListener(`pointercancel`,i)},document.addEventListener(`pointermove`,r),document.addEventListener(`pointerup`,i),document.addEventListener(`pointercancel`,i)},handleSeparatorKeyDown:t=>{let n=y(e,t.key);if(n!==null){t.preventDefault(),M(E.current+n);return}if(t.key===`Home`){t.preventDefault(),M(a);return}t.key===`End`&&(t.preventDefault(),M(o))}}}function S({className:e,direction:t,left:n,right:r,collapsedPane:a,logic:o}){let{containerRef:s,topLeftRef:c,separatorRef:l,ratio:u,minRatio:d,maxRatio:p,handleSeparatorPointerDown:m,handleSeparatorKeyDown:h}=o,g=b(u,a),_=a===`start`,v=a===`end`,y=a===null;return(0,T.jsxs)(`div`,{ref:s,className:i(f.splitter,f[t],e),children:[(0,T.jsx)(`div`,{ref:c,className:f.topLeft,style:{flexBasis:`${g*100}%`},hidden:_,children:n}),(0,T.jsx)(`div`,{ref:l,hidden:!y,role:`separator`,"aria-orientation":t===`vertical`?`vertical`:`horizontal`,"aria-valuemin":Math.round(d*100),"aria-valuemax":Math.round(p*100),"aria-valuenow":Math.round(u*100),tabIndex:y?0:-1,onPointerDown:m,onKeyDown:h,className:f.separator}),(0,T.jsx)(`div`,{className:f.bottomRight,hidden:v,children:r})]})}function C({direction:e=`vertical`,initial:t=O,min:n=E,max:r=D,className:i,collapsedPane:a=null,children:o}){let[s,c]=w.Children.toArray(o),l=x({direction:e,initial:t,min:n,max:r,collapsedPane:a});return c?(0,T.jsx)(S,{className:i,direction:e,left:s,right:c,collapsedPane:a,logic:l}):s}var w,T,E,D,O,k;function A(){return(A=e((()=>{w=n(),a(),p(),T=r(),E=.1,D=.9,O=.7,k=.02,C.__docgenInfo={description:``,methods:[],displayName:`Splitter`,props:{direction:{defaultValue:{value:`"vertical"`,computed:!1},required:!1},initial:{defaultValue:{value:`0.7`,computed:!1},required:!1},min:{defaultValue:{value:`0.1`,computed:!1},required:!1},max:{defaultValue:{value:`0.9`,computed:!1},required:!1},collapsedPane:{defaultValue:{value:`null`,computed:!1},required:!1}}}})))()}var j=t({Basic:()=>B,Constrained:()=>U,Horizontal:()=>V,NestedFourPanels:()=>H,__namedExportsOrder:()=>W,default:()=>z});function M({children:e}){return(0,L.jsx)(`div`,{style:{height:490},children:e})}function N({title:e,description:t,items:n=[]}){return(0,L.jsxs)(`div`,{style:{height:`100%`,padding:`var(--space-md)`,borderRadius:`var(--radius-md)`,border:`var(--border)`,display:`grid`,alignContent:`start`,gap:`var(--space-md)`},className:`scrollable`,children:[(0,L.jsxs)(`div`,{children:[(0,L.jsx)(`h2`,{children:e}),(0,L.jsx)(`p`,{children:t})]}),n.length>0&&(0,L.jsx)(`div`,{style:{display:`grid`,gap:`var(--space-sm)`},children:n.map(e=>(0,L.jsx)(`div`,{style:{padding:`var(--space-sm) var(--space-md)`,borderRadius:`var(--radius-sm)`,background:`var(--surface-1)`},children:e},e))})]})}function P(e){return(0,L.jsx)(M,{children:(0,L.jsxs)(C,{...e,children:[(0,L.jsx)(N,{title:`Навигация`,description:`Левая панель подходит для фильтров, дерева разделов, списка сущностей или структуры документа.`,items:[`Раздел 1`,`Раздел 2`,`Раздел 3`,`Раздел 4`]}),(0,L.jsx)(N,{title:`Рабочая область`,description:`Правая панель обычно содержит детальный контент: таблицу, карточку объекта, форму или вкладки.`,items:[`Текущий документ`,`История изменений`,`Комментарии`,`Связанные объекты`,`Параметры отображения`]})]})})}function F(e){return(0,L.jsx)(M,{children:(0,L.jsxs)(C,{...e,children:[(0,L.jsxs)(C,{direction:`horizontal`,initial:.58,min:.25,max:.75,children:[(0,L.jsx)(N,{title:`Список`,description:`Верхняя левая панель может держать навигацию или результат поиска.`,items:[`Поиск`,`Фильтр по статусу`,`Группы`,`Быстрые действия`]}),(0,L.jsx)(N,{title:`Подробности`,description:`Нижняя левая панель подходит для связанного контента по выбранному элементу.`,items:[`Свойства`,`Ответственный`,`Теги`,`Контекст`]})]}),(0,L.jsxs)(C,{direction:`horizontal`,initial:.36,min:.2,max:.8,children:[(0,L.jsx)(N,{title:`Превью`,description:`Верхняя правая панель может содержать документ, схему, карту или live-просмотр.`,items:[`Предпросмотр файла`,`Масштаб 100%`,`Слой подсветки`]}),(0,L.jsx)(N,{title:`Журнал`,description:`Нижняя правая панель часто используется для событий, логов или вспомогательных данных.`,items:[`10:31 Импорт завершён`,`10:34 Индексация`,`10:36 Синхронизация`,`10:38 Проверка целостности`]})]})]})})}function I(e){return(0,L.jsx)(M,{children:(0,L.jsxs)(C,{...e,children:[(0,L.jsx)(N,{title:`Фиксированные ограничения`,description:"У этой панели ужаты границы `min` и `max`, поэтому splitter нельзя увести слишком далеко.",items:[`Нажмите на разделитель`,`Используйте стрелки`,`Home = минимум`,`End = максимум`]}),(0,L.jsx)(N,{title:`Проверка доступности`,description:`Сценарий помогает проверить клавиатурное управление, устойчивость границ и отсутствие рывков при drag.`,items:[`ArrowLeft / ArrowRight`,`ArrowUp / ArrowDown`,`Перетаскивание мышью`,`Перетаскивание на тач-устройстве`]})]})})}var L,R,z,B,V,H,U,W;function G(){return(G=e((()=>{A(),L=r(),{useArgs:R}=__STORYBOOK_MODULE_PREVIEW_API__,z={title:`Shared/UI/Splitter`,component:C,parameters:{atomicCanvas:!0,layout:`padded`},args:{direction:`vertical`,initial:.45,min:.15,max:.85},argTypes:{direction:{description:`Направление разделения: вертикальное по ширине или горизонтальное по высоте.`,control:`inline-radio`,options:[`vertical`,`horizontal`]},initial:{description:`Начальная доля первой панели в диапазоне от 0 до 1.`,control:{type:`range`,min:0,max:1,step:.01}},min:{description:`Минимальная доля первой панели. Значение автоматически нормализуется в диапазон 0..1.`,control:{type:`range`,min:0,max:1,step:.01}},max:{description:"Максимальная доля первой панели. Если `min` и `max` перепутаны местами, компонент сам исправит диапазон.",control:{type:`range`,min:0,max:1,step:.01}},collapsedPane:{description:`Сворачивает начальную или конечную панель.`,control:`inline-radio`,options:[null,`start`,`end`]},children:{description:`Splitter ожидает ровно два прямых дочерних элемента. Для большего количества областей используйте вложенные Splitter.`,control:!1}}},B={name:`Две панели`,render:function(){let[e]=R();return(0,L.jsx)(P,{...e})}},V={name:`Горизонтальное разделение`,render:function(){let[e]=R();return(0,L.jsx)(P,{...e})},args:{direction:`horizontal`,initial:.55}},H={name:`Четыре панели через вложенность`,render:function(){let[e]=R();return(0,L.jsx)(F,{...e})},args:{initial:.48,min:.25,max:.75}},U={name:`Ограничения и клавиатура`,render:function(){let[e]=R();return(0,L.jsx)(I,{...e})},args:{initial:.35,min:.25,max:.55}},B.parameters={...B.parameters,docs:{...B.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
name: "Две панели",
|
|
3
3
|
render: function Render() {
|
|
4
4
|
const [args] = useArgs<ComponentProps<typeof Splitter>>();
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-BnW9ONAs.js";import{a as r,i}from"./utils-DUM89eIj.js";import{d as a,l as o,y as s}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{n as c,t as l}from"./Select-DCitHJuw.js";var u,d,f,p,m,h,g,_,v,y,b,x;function S(){return(S=e((()=>{u=`p4nQdZ`,d=`_94tg5v`,f=`HyK7Zs`,p=`Mm4hrB`,m=`clxxBQ`,h=`_5pJ7o-`,g=`VV6hKN`,_=`cuQNP0`,v=`w7nIOT`,y=`ed-Afj`,b=`Lbxloe`,x={button:u,valueContainer:d,swatch:f,optionsPalette:p,optionsDetailed:m,option:h,optionPalette:g,optionDetailed:_,optionMeta:v,optionMetaIcon:y,optionMetaLabel:b}})))()}function C({state:e,className:t}){return(0,A.jsx)(`span`,{className:r(x.swatch,t),"data-empty":e===`none`?``:void 0,style:{"--state-color":a[e]}})}function w(e){return!!(e?.icon||e?.label)}function T(e,t){return typeof t?.label==`string`&&t.label.trim()?t.label:e||`empty`}function E(e){return w(e)?(0,A.jsxs)(`span`,{className:x.optionMeta,children:[e?.icon?(0,A.jsx)(`span`,{className:x.optionMetaIcon,children:e.icon}):null,e?.label?(0,A.jsx)(`span`,{className:x.optionMetaLabel,children:e.label}):null]}):null}function D(e,t){return(0,A.jsxs)(`div`,{className:x.valueContainer,children:[(0,A.jsx)(C,{state:e}),E(t)]})}function O({label:e,description:t,disabled:n,placeholder:i,size:a,value:s,onChange:c,options:u=o,stateMeta:d,className:f,clearable:p}){let m=(0,k.useMemo)(()=>Array.from(new Set(u)),[u]),h=m.some(e=>w(d?.[e])),g={getOptionKey:e=>e||`__empty_state__`,getOptionLabel:e=>d?.[e]?.label??e,getOptionAriaLabel:e=>T(e,d?.[e]),renderValue:e=>D(e,d?.[e]),renderOption:e=>(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(C,{state:e}),h?E(d?.[e]):null]}),buttonClassName:x.button,optionsContentClassName:r(h?x.optionsDetailed:x.optionsPalette),getOptionClassName:()=>r(x.option,h?x.optionDetailed:x.optionPalette)};return(0,A.jsx)(l,{label:e,description:t,disabled:n,placeholder:i,size:a,value:s,onChange:c,options:m,className:f,clearable:p,...g})}var k,A;function j(){return(j=e((()=>{k=t(),s(),i(),c(),S(),A=n(),O.__docgenInfo={description:`Специализированный селект для выбора цветового или статусного состояния. Используется там, где значению соответствует визуальный swatch.`,methods:[],displayName:`StateSelect`,props:{placeholder:{required:!1,tsType:{name:`string`},description:``},options:{required:!1,tsType:{name:`unknown`},description:``,defaultValue:{value:`DEFAULT_VALUE_STATES`,computed:!0}},stateMeta:{required:!1,tsType:{name:`Partial`,elements:[{name:`Record`,elements:[{name:`State`},{name:`signature`,type:`object`,raw:`{
|
|
2
2
|
label?: ReactNode;
|
|
3
3
|
icon?: ReactNode;
|
|
4
4
|
}`,signature:{properties:[{key:`label`,value:{name:`ReactNode`,required:!1}},{key:`icon`,value:{name:`ReactNode`,required:!1}}]}}],raw:`Record<State, StateMeta>`}],raw:`Partial<Record<State, StateMeta>>`},description:``},className:{required:!1,tsType:{name:`string`},description:``},clearable:{required:!1,tsType:{name:`boolean`},description:``}},composes:[`Omit`]}})))()}export{j as n,O as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-BnW9ONAs.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-W-usNnZb.js";import{a as p,i as m,n as h,r as g,t as _}from"./StateSelect.stories-DHCZQjpD.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,b.jsx)(u,{children:`StateSelect`}),`
|
|
3
3
|
`,(0,b.jsx)(o,{children:`Специализированный select для выбора визуального статуса или семантического состояния`}),`
|
|
4
4
|
`,(0,b.jsx)(t.p,{children:`StateSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
package/storybook-static/assets/{StateSelect.stories-7wPKSG6b.js → StateSelect.stories-DHCZQjpD.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n,t as r}from"./circle-check-
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n,t as r}from"./circle-check-BUp-oyqo.js";import{i,n as a,r as o,t as s}from"./info-2igYCwst.js";import{n as c,t as l}from"./triangle-alert-D3UYXaLs.js";import{i as u,n as d,r as f}from"./iframe-BnW9ONAs.js";import{n as p,t as m}from"./StateSelect-CBqVFgZr.js";var h,g;function _(){return(_=e((()=>{u(),h=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}]],g=f(`circle-minus`,h)})))()}var v=t({Controlled:()=>C,PaletteOnly:()=>T,WithMeta:()=>w,__namedExportsOrder:()=>E,default:()=>S}),y,b,x,S,C,w,T,E;function D(){return(D=e((()=>{c(),n(),a(),_(),i(),p(),y=d(),{useArgs:b}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:x}=__STORYBOOK_MODULE_TEST__,S={title:`Shared/UI/StateSelect`,component:m,args:{label:`Состояние`,description:`Выберите визуальный статус.`,placeholder:`Выберите значение`,value:`information`,onChange:x(),disabled:!1,size:`md`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля выбора состояния.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Текст, когда значение не выбрано.`,control:`text`},value:{description:`Текущее состояние.`,control:`select`,options:[``,`none`,`information`,`success`,`warning`,`error`]},onChange:{description:`Вызывается при выборе состояния.`,control:!1},options:{description:`Кастомный набор доступных состояний.`,control:!1},stateMeta:{description:`Кастомные иконки и подписи для значений.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},clearable:{description:`Показывает действие очистки выбранного состояния.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},C={render:function(e){let[,t]=b();return(0,y.jsx)(m,{...e,value:e.value??`information`,onChange:n=>{e.onChange(n),t({value:n})}})}},w={render:function(e){let[,t]=b();return(0,y.jsx)(m,{...e,value:e.value??`warning`,onChange:n=>{e.onChange(n),t({value:n})},stateMeta:{none:{label:`Без статуса`,icon:(0,y.jsx)(g,{})},information:{label:`Инфо`,icon:(0,y.jsx)(s,{})},success:{label:`Успех`,icon:(0,y.jsx)(r,{})},warning:{label:`Предупреждение`,icon:(0,y.jsx)(l,{})},error:{label:`Ошибка`,icon:(0,y.jsx)(o,{})}}})},args:{value:`warning`}},T={render:function(e){let[,t]=b();return(0,y.jsx)(m,{...e,value:e.value??`none`,onChange:n=>{e.onChange(n),t({value:n})},options:[`none`,`success`,`error`]})},args:{options:[`none`,`success`,`error`],value:`none`}},C.parameters={...C.parameters,docs:{...C.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
render: function Render(args) {
|
|
3
3
|
const [, updateArgs] = useArgs<StateSelectProps>();
|
|
4
4
|
return <StateSelect {...args} value={args.value ?? "information"} onChange={value => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-BnW9ONAs.js";import{n,t as r}from"./Toggle-CUhT4loI.js";function i(e,t){return typeof e==`string`?e:t}var a,o;function s(){return(s=e((()=>{a=`true`,o=`false`})))()}function c({value:e,onChange:t,checkedValue:n,uncheckedValue:s,defaultChecked:c,...u}){let d=i(n,a),f=i(s,o),p=e===d;return(0,l.jsx)(r,{...u,value:p,onChange:e=>t(e?d:f)})}var l;function u(){return(u=e((()=>{s(),n(),l=t(),c.__docgenInfo={description:`Адаптирует boolean-состояние Toggle к паре настраиваемых строковых значений.`,methods:[],displayName:`StringToggle`,props:{checkedValue:{required:!1,tsType:{name:`string`},description:``},uncheckedValue:{required:!1,tsType:{name:`string`},description:``},value:{required:!0,tsType:{name:`string`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``}}}})))()}function d({args:e}){let[,t]=p();return(0,f.jsx)(c,{...e,onChange:n=>{e.onChange(n),t({value:n})}})}var f,p,m,h,g;function _(){return(_=e((()=>{u(),f=t(),{useArgs:p}=__STORYBOOK_MODULE_PREVIEW_API__,m={title:`Shared/UI/Toggle/StringToggle`,component:c,args:{value:`ZBP_MANAGER`,onChange:()=>void 0,checkedText:`за клиента`,uncheckedText:`за сделку`,checkedValue:`ZM_MANAGER`,uncheckedValue:`ZBP_MANAGER`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Текст подписи переключателя.`,control:`text`},description:{description:`Описание под переключателем.`,control:`text`},placeholder:{description:"Резервная подпись, если `label` не задан.",control:`text`},value:{description:`Текущее строковое значение.`,control:`text`},onChange:{description:`Возвращает строку выбранного состояния.`,control:!1},checkedValue:{description:`Значение включённого состояния.`,control:`text`},uncheckedValue:{description:`Значение выключенного состояния.`,control:`text`},checkedText:{description:`Текст включённого состояния.`,control:`text`},uncheckedText:{description:`Текст выключенного состояния.`,control:`text`},labelPosition:{description:`Положение подписи относительно переключателя.`,control:`inline-radio`,options:[`before`,`after`]},disabled:{description:`Блокирует взаимодействие.`,control:`boolean`},size:{description:`Размер контрола и подписи.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},h={render:function(e){return(0,f.jsx)(d,{args:e})}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
render: function Render(args) {
|
|
3
3
|
return <StringToggleStoryCanvas args={args} />;
|
|
4
4
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-BnW9ONAs.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-W-usNnZb.js";import{a as p,i as m,n as h,r as g,t as _}from"./Switch.stories-xsRPNma9.js";function v(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{of:g,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,b.jsx)(u,{children:`Switch`}),`
|
|
3
3
|
`,(0,b.jsx)(o,{children:`Переключатель в виде слайдера для быстрых включений, отключений и tri-state сценариев`}),`
|
|
4
4
|
`,(0,b.jsx)(t.p,{children:`Switch уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./circle-check-
|
|
1
|
+
import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./circle-check-BUp-oyqo.js";import{i as a,n as o,r as s}from"./iframe-BnW9ONAs.js";import{a as c,i as l}from"./utils-DUM89eIj.js";import{n as u,t as d}from"./ui.module-CiLQZm_L.js";var f,p;function m(){return(m=e((()=>{a(),f=[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]],p=s(`ban`,f)})))()}var h,g,_,v,y;function b(){return(b=e((()=>{h=`Or5LYA`,g=`w0AMfA`,_=`P1x4lq`,v=`-ZVOZo`,y={switchWrapper:h,switch:`qge3io`,iconWrapper:g,auto:_,checked:v}})))()}function x(e){let{label:t,description:n,disabled:r,checkedIcon:a=(0,C.jsx)(i,{}),uncheckedIcon:o=(0,C.jsx)(p,{}),className:s,type:l,id:d,size:f,placeholder:m,onChange:h,value:g,triState:_,...v}=e,b=(0,S.useId)(),x=d??b,w=n?`${x}-description`:void 0,T=t?`${x}-label`:void 0,E=()=>{if(!e.triState){e.onChange(!e.value);return}if(e.value===void 0){e.onChange(!0);return}if(e.value===!0){e.onChange(!1);return}e.value===!1&&e.onChange(void 0)},D=typeof e.value==`boolean`&&e.value,O=e.triState&&typeof e.value!=`boolean`,k=v[`aria-label`]??(t?void 0:`Переключатель`);return(0,C.jsxs)(`div`,{className:c(u.uiElement,r&&u.disabled),"aria-disabled":r||void 0,children:[t&&(0,C.jsxs)(`div`,{id:T,className:u.uiLabel,children:[t,`:`]}),n&&(0,C.jsx)(`p`,{id:w,className:u.uiDescription,children:n}),(0,C.jsx)(`button`,{...v,id:x,type:l??`button`,role:`switch`,disabled:r,"aria-checked":D,"aria-describedby":w,"aria-labelledby":T,"aria-label":k,"aria-disabled":r,"data-ui":`switch`,"data-action":`toggle-switch`,onClick:E,className:c(u.uiInputControl,y.switchWrapper,s),children:(0,C.jsx)(`div`,{className:y.switch,"data-disabled":r||void 0,children:O?(0,C.jsx)(`div`,{className:c(y.iconWrapper,y.auto,y.checked),children:`Auto`}):(0,C.jsxs)(C.Fragment,{children:[(0,C.jsx)(`div`,{className:c(y.iconWrapper,!e.value&&y.checked),children:o}),(0,C.jsx)(`div`,{className:c(y.iconWrapper,e.value&&y.checked),children:a})]})})})]})}var S,C;function w(){return(w=e((()=>{S=t(n(),1),l(),m(),r(),d(),b(),C=o(),x.__docgenInfo={description:`Переключатель boolean-состояния в виде слайдера. Подходит для быстрых настроек и включения/отключения опций.`,methods:[],displayName:`Switch`}})))()}export{w as n,x as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n,t as r}from"./Switch-
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n,t as r}from"./Switch-DbMsXJZQ.js";import{n as i}from"./iframe-BnW9ONAs.js";import{n as a,t as o}from"./createControlledStoryRender-DHsyXc1B.js";var s=t({BiState:()=>f,Disabled:()=>m,TriState:()=>p,__namedExportsOrder:()=>h,default:()=>d}),c,l,u,d,f,p,m,h;function g(){return(g=e((()=>{a(),n(),c=i(),l=o((e,t)=>(0,c.jsx)(r,{...e,triState:!1,value:e.value??!1,onChange:n=>{e.onChange(n),t({value:n})}})),u=o((e,t)=>(0,c.jsxs)(`div`,{style:{display:`grid`,gap:8},children:[(0,c.jsx)(r,{...e,triState:!0,value:e.value,onChange:n=>{e.onChange(n),t({value:n})}}),(0,c.jsxs)(`div`,{children:[`Текущее значение: `,String(e.value)]})]})),d={title:`Shared/UI/Switch`,component:r,args:{label:`Режим обработки`,description:`Переключение состояния`,value:!1,onChange:()=>{},triState:!1,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок переключателя.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},value:{description:"Текущее значение (`boolean` или `undefined` в tri-state).",control:`boolean`},onChange:{description:`Вызывается при изменении состояния.`,control:!1},triState:{description:"Включает трехсостоянный режим (`undefined → true → false`).",control:`boolean`},checkedIcon:{description:"Кастомная иконка для состояния `true`.",control:!1},uncheckedIcon:{description:"Кастомная иконка для состояния `false`.",control:!1},disabled:{description:`Блокирует переключение.`,control:`boolean`}}},f={render:l},p={render:u,args:{triState:!0,value:void 0}},m={render:l,args:{disabled:!0,value:!0}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
|
|
2
2
|
render: renderBiStateSwitchStory
|
|
3
3
|
}`,...f.parameters?.docs?.source}}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
|
|
4
4
|
render: renderTriStateSwitchStory,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-BnW9ONAs.js";import{i as n,r}from"./react-qN2cStNd.js";import{a as i,d as a,f as o,l as s,m as c,n as l,p as u,r as d,u as f}from"./blocks-W-usNnZb.js";import{_ as p,a as m,c as h,d as g,f as _,g as v,h as y,i as b,l as x,m as S,n as C,o as w,p as T,r as E,s as D,t as O,u as k}from"./Table.stories-BHO05Nt2.js";function A(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,M.jsxs)(M.Fragment,{children:[(0,M.jsx)(s,{of:D,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,M.jsx)(u,{children:`Table`}),`
|
|
3
3
|
`,(0,M.jsxs)(o,{children:[`Плоская таблица как React-альтернатива `,(0,M.jsx)(t.code,{children:`sap.m.Table`})]}),`
|
|
4
4
|
`,(0,M.jsxs)(t.p,{children:[(0,M.jsx)(t.code,{children:`Table`}),` предназначен для плоских данных и по поведению осознанно сближен с `,(0,M.jsx)(t.code,{children:`TreeTable`}),`.
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r}from"./iframe-BnW9ONAs.js";import{J as i,X as a,Y as ee,_ as te,b as o,d as ne,g as re,n as ie,q as ae,s as oe}from"./odata-DfSyh3Sn.js";import{i as se,y as ce}from"./formatters-CBgrBeSA-DY6OIAc8.js";import{_ as le,a as ue,b as de,c as fe,d as pe,f as me,g as he,h as ge,i as _e,l as ve,m as ye,n as be,o as xe,p as Se,r as Ce,s,t as we,u as Te,v as Ee,x as De,y as Oe}from"./FormattedTableCell-DG4dVFTa.js";var c,l,u;function d(){return(d=e((()=>{c=`hKghZt`,l=`QsLRvS`,u={selectedIndicatorCell:c,sentinel:l}})))()}function ke(e,t){return String(t)}function f({title:e,isLoading:t,isFetching:n,data:r,columns:i,selectionMode:a=`none`,selectedRowIds:ee,getRowId:o,className:ne,minHeight:ie,tableClassName:ae,columnVisibility:oe,defaultColumnVisibility:ce,columnOrder:ue,defaultColumnOrder:de,columnSizing:pe,defaultColumnSizing:he,columnPinning:_e,defaultColumnPinning:ve,enableColumnResizing:ye=!1,enableColumnReordering:be=!1,columnResizeMinWidth:s,onColumnVisibilityChange:Oe,onColumnOrderChange:c,onColumnSizingChange:l,onColumnPinningChange:d,onRowClick:f,onRowSelectionChange:h,onReachEnd:g,getRowCanSelect:_,getRowClassName:Ae,renderHeaderContextMenu:je,renderCellContent:v}){let y=(0,p.useMemo)(()=>r??[],[r]),b=(0,p.useMemo)(()=>ge(i),[i]),x=o??ke,S=(0,p.useMemo)(()=>new Map(y.map((e,t)=>[x(e,t),e])),[x,y]),C=(0,p.useMemo)(()=>Array.from(S.keys()),[S]),w=(0,p.useRef)(null),T=(0,p.useRef)(null),{rowSelection:E,activateRowSelection:Me}=re({availableRowIds:C,rowById:S,selectionMode:a,selectedRowIds:ee,onRowSelectionChange:h}),{columnVisibility:D,onColumnVisibilityChange:O}=xe({columnVisibility:oe,defaultColumnVisibility:ce,onColumnVisibilityChange:Oe}),{columnOrder:k,onColumnOrderChange:Ne}=me({columnOrder:ue,defaultColumnOrder:de,onColumnOrderChange:c}),{columnSizing:A,onColumnSizingChange:Pe}=fe({columnSizing:pe,defaultColumnSizing:he,columnResizeMinWidth:s,onColumnSizingChange:l}),{columnPinning:j,onColumnPinningChange:M}=Te({columnPinning:_e,defaultColumnPinning:ve,onColumnPinningChange:d}),N=(0,p.useMemo)(()=>({columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:D}),[k,j,A,D]),Fe=(0,p.useEffectEvent)(()=>{g?.()});(0,p.useEffect)(()=>{if(!g||!w.current||!T.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&Fe()},{root:w.current,threshold:.1});return e.observe(T.current),()=>e.disconnect()},[t,g,y.length]);let P=De({features:te,data:y,columns:i,state:{columnOrder:k,columnPinning:j,columnSizing:A,columnVisibility:D,rowSelection:E},onColumnOrderChange:Ne,onColumnPinningChange:M,onColumnSizingChange:Pe,onColumnVisibilityChange:O,getRowId:(e,t)=>x(e,t),enableMultiRowSelection:a===`multi`,enableRowSelection:e=>a===`none`?!1:!_||_(e.original)}),F=Ee(P,N),I=P.getRowModel().rows,L=(0,p.useMemo)(()=>Se({rows:I,columns:F}),[I,F]),R=F[0]?.id;return(0,m.jsx)(Ce,{table:P,columnState:N,title:e,isLoading:t,isFetching:n,className:ne,minHeight:ie,tableClassName:ae,selectionMode:a,scrollableRef:w,onActivateRow:a!==`none`||f?e=>{Me(e.id,e.getCanSelect()),f?.(e.original)}:void 0,isRowInteractive:e=>!!(f||a!==`none`&&e.getCanSelect()),getRowClassName:e=>Ae?.(e.original),getCellClassName:({row:e,cell:t})=>t.column.id===R&&e.getIsSelected()?u.selectedIndicatorCell:void 0,getCellLayout:({cell:e})=>L.get(e.id),renderHeaderContextMenu:je,enableColumnResizing:ye,enableColumnReordering:be,columnResizeMinWidth:s,renderCellContent:e=>{let t=se({field:b.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:e.row.original,rowKind:`plain`}),n=le({columnId:e.cell.column.id,runtimeByColumnId:b.runtimeByColumnId,customCellColumnIds:b.customCellColumnIds})?(0,m.jsx)(we,{displayValue:t,align:e.columnMeta?.align}):e.defaultContent;return v?v({...e,defaultContent:n,displayValue:t}):n},afterTableContent:g?(0,m.jsx)(`div`,{ref:T,className:u.sentinel,"aria-hidden":`true`}):null})}var p,m;function h(){return(h=e((()=>{p=n(),ce(),o(),de(),_e(),ye(),he(),be(),Oe(),pe(),ve(),s(),ue(),d(),m=r(),f.__docgenInfo={description:"Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.",methods:[],displayName:`Table`,props:{title:{required:!1,tsType:{name:`string`},description:`Необязательный заголовок над таблицей.`},isLoading:{required:!1,tsType:{name:`boolean`},description:`Признак первичной загрузки.`},isFetching:{required:!1,tsType:{name:`boolean`},description:`Признак фоновой догрузки или обновления данных.`},data:{required:!0,tsType:{name:`union`,raw:`readonly TData[] | undefined | null`,elements:[{name:`unknown`},{name:`undefined`},{name:`null`}]},description:`Плоский источник строк.`},columns:{required:!0,tsType:{name:`unknown`},description:`Описание колонок таблицы.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},selectedRowIds:{required:!1,tsType:{name:`unknown`},description:`Внешний список выбранных строк.
|
|
2
|
+
|
|
3
|
+
Если передан, таблица синхронизирует визуальное выделение с этим набором id.`},getRowId:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData, index: number) => string`,signature:{arguments:[{type:{name:`TData`},name:`row`},{type:{name:`number`},name:`index`}],return:{name:`string`}}},description:`Стабильный идентификатор строки.
|
|
4
|
+
|
|
5
|
+
Если не задан, используется индекс строки.`},className:{required:!1,tsType:{name:`string`},description:`Дополнительный CSS-класс корневого контейнера.`},minHeight:{required:!1,tsType:{name:`union`,raw:"`${number}em` | `${number}%`",elements:[{name:`literal`,value:"`${number}em`"},{name:`literal`,value:"`${number}%`"}]},description:``},tableClassName:{required:!1,tsType:{name:`string`},description:"Дополнительный CSS-класс тега `table`."},columnVisibility:{required:!1,tsType:{name:`TableColumnVisibilityState`},description:`Внешнее controlled-состояние видимости колонок.`},defaultColumnVisibility:{required:!1,tsType:{name:`TableColumnVisibilityState`},description:`Стартовое uncontrolled-состояние видимости колонок.`},columnOrder:{required:!1,tsType:{name:`unknown`},description:`Внешнее controlled-состояние порядка колонок.`},defaultColumnOrder:{required:!1,tsType:{name:`unknown`},description:`Стартовое uncontrolled-состояние порядка колонок.`},columnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Внешнее controlled-состояние ширин колонок в px.`},defaultColumnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Стартовое uncontrolled-состояние ширин колонок в px.`},columnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Внешнее controlled-состояние start-pinning для колонок.`},defaultColumnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Стартовое uncontrolled-состояние start-pinning для колонок.`},enableColumnResizing:{required:!1,tsType:{name:`boolean`},description:`Включает изменение ширины колонок через header-handle.`,defaultValue:{value:`false`,computed:!1}},enableColumnReordering:{required:!1,tsType:{name:`boolean`},description:`Включает изменение порядка колонок через drag&drop заголовков.`,defaultValue:{value:`false`,computed:!1}},columnResizeMinWidth:{required:!1,tsType:{name:`number`},description:`Минимальная ширина колонки при resize в px.`},onColumnVisibilityChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnVisibilityState) => void`,signature:{arguments:[{type:{name:`TableColumnVisibilityState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения видимости колонок.`},onColumnOrderChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnOrderState) => void`,signature:{arguments:[{type:{name:`TableColumnOrderState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения порядка колонок.`},onColumnSizingChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnSizingState) => void`,signature:{arguments:[{type:{name:`TableColumnSizingState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения ширины колонок.`},onColumnPinningChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnPinningState) => void`,signature:{arguments:[{type:{name:`TableColumnPinningState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения start-pinning state.`},onRowClick:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => void`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`void`}}},description:`Вызывается при активации строки кликом или клавиатурой.`},onRowSelectionChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(rows: TData[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TData`}],raw:`TData[]`},name:`rows`}],return:{name:`void`}}},description:`Вызывается после изменения выбранных строк.`},onReachEnd:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Вызывается при достижении конца таблицы внутри scroll-контейнера.`},getRowCanSelect:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => boolean`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`boolean`}}},description:`Позволяет запретить выбор отдельных строк.`},getRowClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => string | undefined`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:`Позволяет добавить CSS-класс для конкретной строки.`},renderHeaderContextMenu:{required:!1,tsType:{name:`BaseTableProps["renderHeaderContextMenu"]`,raw:`BaseTableProps<TData>["renderHeaderContextMenu"]`},description:`Контекстное меню заголовка колонки. Используется для общих runtime-действий
|
|
6
|
+
вроде server sorting без встраивания доменной логики в shared-таблицу.`},renderCellContent:{required:!1,tsType:{name:`BaseTableProps["renderCellContent"]`,raw:`BaseTableProps<TData>["renderCellContent"]`},description:"Тонкая точка расширения содержимого ячейки поверх стандартного форматирования.\n\nВ отличие от `column.cell`, этот слот не отключает общий formatting-runtime:\n`defaultContent` уже содержит отформатированное значение, если оно применимо."}}}})))()}var g=t({Basic:()=>z,Empty:()=>W,Fetching:()=>U,Loading:()=>K,MultiSelect:()=>V,ReachEnd:()=>G,WithColumnPinning:()=>B,WithDisabledRows:()=>H,WithFormattingPipeline:()=>J,WithFormulaColumn:()=>q,WithHiddenZero:()=>Y,WithMergedDuplicates:()=>X,WithODataMetadataAdapter:()=>Z,WithUseODataTableColumnsBuildHook:()=>Q,WithUseODataTableColumnsEnrichHook:()=>$,__namedExportsOrder:()=>Ie,default:()=>R});function _(){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 Ae(e){return[`odata`,`metadata`,{service:e}]}function je(e,t){let n=e.data??[];return t.map(t=>{let r=n.indexOf(t);return e.getRowId?.(t,r)??String(r)})}function v({args:e}){let[,t]=w();return(0,C.jsx)(f,{...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:je(e,n)})}})}function y({args:e}){let{columns:t,metadata:n,isLoading:r}=ie({service:P,target:F,mode:`build`});return(0,C.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,C.jsxs)(`div`,{children:[`Режим build: hook собрал `,t.length,` колонки из metadata`,n?` для сущности «${n.title}».`:`.`]}),(0,C.jsx)(v,{args:{...e,columns:t,isLoading:e.isLoading??r}})]})}function b({args:e}){let{columns:t,metadata:n,isLoading:r}=ie({service:P,target:F,mode:`enrich`,columns:N});return(0,C.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,C.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные заголовки и дополнил formatting-контекст`,n?` из metadata «${n.title}».`:`.`]}),(0,C.jsx)(v,{args:{...e,columns:t,isLoading:e.isLoading??r}})]})}function x({args:e}){let[t,n]=(0,S.useState)(0);return(0,C.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,C.jsxs)(`div`,{children:[`Событие достижения конца: `,t]}),(0,C.jsx)(v,{args:{...e,onReachEnd:()=>{e.onReachEnd?.(),n(e=>e+1)}}})]})}var S,C,w,T,E,Me,D,O,k,Ne,A,Pe,j,M,N,Fe,P,F,I,L,R,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,Ie;function Le(){return(Le=e((()=>{S=n(),oe(),i(),o(),a(),h(),C=r(),{useArgs:w}=__STORYBOOK_MODULE_PREVIEW_API__,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}],Me=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}}],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}],k=[{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:`Николай Орлов`}],Ne=[{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}}],A=[{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}}}],Pe=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`healthScore`,accessorKey:`healthScore`,header:`Индекс риска`,meta:{width:10,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:_()}}}],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`}}],Fe=ne(N,M),P=`ZDEMO_DEALS_SRV`,F=`DealSet`,I={title:`Портфель сделок`,columns:M},L=(e,t)=>{let n=(0,S.useMemo)(()=>{let e=ae({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(Ae(n),{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]);return(0,C.jsx)(ee,{client:n,children:e()})},R={title:`Shared/UI/Table`,component:f,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`},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}}},z={render:function(e){return(0,C.jsx)(v,{args:e})}},B={args:{columnPinning:{start:[`number`]}},render:function(e){let[,t]=w(),n=e.columnPinning??{start:[]};return(0,C.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,C.jsxs)(`div`,{style:{display:`flex`,gap:`0.5em`,flexWrap:`wrap`},children:[(0,C.jsx)(`button`,{type:`button`,onClick:()=>t({columnPinning:{start:[`number`]}}),children:`Закрепить «Номер»`}),(0,C.jsx)(`button`,{type:`button`,onClick:()=>t({columnPinning:{start:[`number`,`client`]}}),children:`Закрепить «Номер» и «Клиент»`}),(0,C.jsx)(`button`,{type:`button`,onClick:()=>t({columnPinning:{start:[]}}),children:`Снять закрепление`})]}),(0,C.jsxs)(`div`,{children:[`Закреплено в начале: `,n.start?.length?n.start.join(`, `):`ничего`]}),(0,C.jsx)(v,{args:{...e,columnPinning:n}})]})}},V={args:{selectionMode:`multi`,selectedRowIds:[]},render:function(e){return(0,C.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,C.jsxs)(`div`,{children:[`Выбрано: `,e.selectedRowIds?.length?e.selectedRowIds.join(`, `):`ничего`]}),(0,C.jsx)(v,{args:e})]})}},H={args:{data:E,selectionMode:`multi`,selectedRowIds:[],getRowCanSelect:e=>!e.isLocked},render:function(e){return(0,C.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,C.jsx)(`div`,{children:`Строка со статусом «Архив» остаётся видимой, но не участвует в выборе.`}),(0,C.jsxs)(`div`,{children:[`Выбрано: `,e.selectedRowIds?.length?e.selectedRowIds.join(`, `):`ничего`]}),(0,C.jsx)(v,{args:e})]})}},U={args:{isFetching:!0},render:function(e){return(0,C.jsx)(v,{args:e})}},W={args:{data:[]},render:function(e){return(0,C.jsx)(v,{args:e})}},G={args:{data:Me},render:function(e){return(0,C.jsx)(x,{args:e})}},K={args:{isLoading:!0},render:function(e){return(0,C.jsx)(v,{args:e})}},q={args:{title:`Формула наценки`,data:O,columns:A,selectionMode:`none`,getRowId:e=>e.id},render:function(e){return(0,C.jsx)(v,{args:e})}},J={args:{title:`Pipeline форматирования`,data:O,columns:Pe,selectionMode:`none`,getRowId:e=>e.id},render:function(e){return(0,C.jsx)(v,{args:e})}},Y={args:{title:`Скрытие нулей`,data:O,columns:j,selectionMode:`none`,getRowId:e=>e.id},render:function(e){return(0,C.jsx)(v,{args:e})}},X={args:{title:`Слияние дубликатов`,data:k,columns:Ne,selectionMode:`none`,getRowId:e=>e.id},render:function(e){return(0,C.jsx)(v,{args:e})}},Z={args:{title:`OData metadata adapter`,data:O,columns:Fe,selectionMode:`none`,getRowId:e=>e.id},render:function(e){return(0,C.jsx)(v,{args:e})}},Q={args:{title:`useODataTableColumns: build`,data:O,columns:[],selectionMode:`none`,getRowId:e=>e.id},decorators:[L],parameters:{odataService:P,odataEntity:F,odataMetadata:I},render:function(e){return(0,C.jsx)(y,{args:e})}},$={args:{title:`useODataTableColumns: enrich`,data:O,columns:[],selectionMode:`none`,getRowId:e=>e.id},decorators:[L],parameters:{odataService:P,odataEntity:F,odataMetadata:I},render:function(e){return(0,C.jsx)(b,{args:e})}},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{
|
|
7
|
+
render: function Render(args) {
|
|
8
|
+
return <TableStoryCanvas args={args} />;
|
|
9
|
+
}
|
|
10
|
+
}`,...z.parameters?.docs?.source},description:{story:`Базовый сценарий плоской таблицы с одиночным выбором.`,...z.parameters?.docs?.description}}},B.parameters={...B.parameters,docs:{...B.parameters?.docs,source:{originalSource:`{
|
|
11
|
+
args: {
|
|
12
|
+
columnPinning: {
|
|
13
|
+
start: ["number"]
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
render: function Render(args) {
|
|
17
|
+
const [, updateArgs] = useArgs<TableProps<DealRow>>();
|
|
18
|
+
const columnPinning = args.columnPinning ?? {
|
|
19
|
+
start: []
|
|
20
|
+
};
|
|
21
|
+
return <div style={{
|
|
22
|
+
display: "grid",
|
|
23
|
+
gap: "0.75em"
|
|
24
|
+
}}>
|
|
25
|
+
<div style={{
|
|
26
|
+
display: "flex",
|
|
27
|
+
gap: "0.5em",
|
|
28
|
+
flexWrap: "wrap"
|
|
29
|
+
}}>
|
|
30
|
+
<button type="button" onClick={() => updateArgs({
|
|
31
|
+
columnPinning: {
|
|
32
|
+
start: ["number"]
|
|
33
|
+
}
|
|
34
|
+
})}>
|
|
35
|
+
Закрепить «Номер»
|
|
36
|
+
</button>
|
|
37
|
+
<button type="button" onClick={() => updateArgs({
|
|
38
|
+
columnPinning: {
|
|
39
|
+
start: ["number", "client"]
|
|
40
|
+
}
|
|
41
|
+
})}>
|
|
42
|
+
Закрепить «Номер» и «Клиент»
|
|
43
|
+
</button>
|
|
44
|
+
<button type="button" onClick={() => updateArgs({
|
|
45
|
+
columnPinning: {
|
|
46
|
+
start: []
|
|
47
|
+
}
|
|
48
|
+
})}>
|
|
49
|
+
Снять закрепление
|
|
50
|
+
</button>
|
|
51
|
+
</div>
|
|
52
|
+
<div>Закреплено в начале: {columnPinning.start?.length ? columnPinning.start.join(", ") : "ничего"}</div>
|
|
53
|
+
<TableStoryCanvas args={{
|
|
54
|
+
...args,
|
|
55
|
+
columnPinning
|
|
56
|
+
}} />
|
|
57
|
+
</div>;
|
|
58
|
+
}
|
|
59
|
+
}`,...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:`{
|
|
60
|
+
args: {
|
|
61
|
+
selectionMode: "multi",
|
|
62
|
+
selectedRowIds: []
|
|
63
|
+
},
|
|
64
|
+
render: function Render(args) {
|
|
65
|
+
return <div style={{
|
|
66
|
+
display: "grid",
|
|
67
|
+
gap: "0.75em"
|
|
68
|
+
}}>
|
|
69
|
+
<div>Выбрано: {args.selectedRowIds?.length ? args.selectedRowIds.join(", ") : "ничего"}</div>
|
|
70
|
+
<TableStoryCanvas args={args} />
|
|
71
|
+
</div>;
|
|
72
|
+
}
|
|
73
|
+
}`,...V.parameters?.docs?.source},description:{story:`Множественный выбор с отображением текущего результата.`,...V.parameters?.docs?.description}}},H.parameters={...H.parameters,docs:{...H.parameters?.docs,source:{originalSource:`{
|
|
74
|
+
args: {
|
|
75
|
+
data: nonSelectableRows,
|
|
76
|
+
selectionMode: "multi",
|
|
77
|
+
selectedRowIds: [],
|
|
78
|
+
getRowCanSelect: row => !row.isLocked
|
|
79
|
+
},
|
|
80
|
+
render: function Render(args) {
|
|
81
|
+
return <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} />
|
|
88
|
+
</div>;
|
|
89
|
+
}
|
|
90
|
+
}`,...H.parameters?.docs?.source},description:{story:`Часть строк можно показать, но запретить выбирать.`,...H.parameters?.docs?.description}}},U.parameters={...U.parameters,docs:{...U.parameters?.docs,source:{originalSource:`{
|
|
91
|
+
args: {
|
|
92
|
+
isFetching: true
|
|
93
|
+
},
|
|
94
|
+
render: function Render(args) {
|
|
95
|
+
return <TableStoryCanvas args={args} />;
|
|
96
|
+
}
|
|
97
|
+
}`,...U.parameters?.docs?.source},description:{story:`Сценарий фонового обновления данных без очистки таблицы.`,...U.parameters?.docs?.description}}},W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`{
|
|
98
|
+
args: {
|
|
99
|
+
data: []
|
|
100
|
+
},
|
|
101
|
+
render: function Render(args) {
|
|
102
|
+
return <TableStoryCanvas args={args} />;
|
|
103
|
+
}
|
|
104
|
+
}`,...W.parameters?.docs?.source},description:{story:`Пустой источник данных.`,...W.parameters?.docs?.description}}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
|
|
105
|
+
args: {
|
|
106
|
+
data: reachEndRows
|
|
107
|
+
},
|
|
108
|
+
render: function Render(args) {
|
|
109
|
+
return <ReachEndTableCanvas args={args} />;
|
|
110
|
+
}
|
|
111
|
+
}`,...G.parameters?.docs?.source},description:{story:`Демонстрация callback при достижении конца списка.`,...G.parameters?.docs?.description}}},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`{
|
|
112
|
+
args: {
|
|
113
|
+
isLoading: true
|
|
114
|
+
},
|
|
115
|
+
render: function Render(args) {
|
|
116
|
+
return <TableStoryCanvas args={args} />;
|
|
117
|
+
}
|
|
118
|
+
}`,...K.parameters?.docs?.source},description:{story:`Состояние первичной загрузки.`,...K.parameters?.docs?.description}}},q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`{
|
|
119
|
+
args: {
|
|
120
|
+
title: "Формула наценки",
|
|
121
|
+
data: formattingRows,
|
|
122
|
+
columns: formulaColumns,
|
|
123
|
+
selectionMode: "none",
|
|
124
|
+
getRowId: row => row.id
|
|
125
|
+
},
|
|
126
|
+
render: function Render(args) {
|
|
127
|
+
return <TableStoryCanvas args={args} />;
|
|
128
|
+
}
|
|
129
|
+
}`,...q.parameters?.docs?.source},description:{story:"Сценарий с formula-based колонкой без кастомного `cell`.",...q.parameters?.docs?.description}}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`{
|
|
130
|
+
args: {
|
|
131
|
+
title: "Pipeline форматирования",
|
|
132
|
+
data: formattingRows,
|
|
133
|
+
columns: pipelineColumns,
|
|
134
|
+
selectionMode: "none",
|
|
135
|
+
getRowId: row => row.id
|
|
136
|
+
},
|
|
137
|
+
render: function Render(args) {
|
|
138
|
+
return <TableStoryCanvas args={args} />;
|
|
139
|
+
}
|
|
140
|
+
}`,...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:`{
|
|
141
|
+
args: {
|
|
142
|
+
title: "Скрытие нулей",
|
|
143
|
+
data: formattingRows,
|
|
144
|
+
columns: hiddenZeroColumns,
|
|
145
|
+
selectionMode: "none",
|
|
146
|
+
getRowId: row => row.id
|
|
147
|
+
},
|
|
148
|
+
render: function Render(args) {
|
|
149
|
+
return <TableStoryCanvas args={args} />;
|
|
150
|
+
}
|
|
151
|
+
}`,...Y.parameters?.docs?.source},description:{story:"Сценарий со скрытием нулевых значений через `emptyWhenZero`.",...Y.parameters?.docs?.description}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`{
|
|
152
|
+
args: {
|
|
153
|
+
title: "Слияние дубликатов",
|
|
154
|
+
data: divisionMergeRows,
|
|
155
|
+
columns: divisionMergeColumns,
|
|
156
|
+
selectionMode: "none",
|
|
157
|
+
getRowId: row => row.id
|
|
158
|
+
},
|
|
159
|
+
render: function Render(args) {
|
|
160
|
+
return <TableStoryCanvas args={args} />;
|
|
161
|
+
}
|
|
162
|
+
}`,...X.parameters?.docs?.source},description:{story:`Сценарий со display-only слиянием подряд идущих дубликатов через пустые ячейки и CSS-склейку.`,...X.parameters?.docs?.description}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
|
|
163
|
+
args: {
|
|
164
|
+
title: "OData metadata adapter",
|
|
165
|
+
data: formattingRows,
|
|
166
|
+
columns: adapterColumns,
|
|
167
|
+
selectionMode: "none",
|
|
168
|
+
getRowId: row => row.id
|
|
169
|
+
},
|
|
170
|
+
render: function Render(args) {
|
|
171
|
+
return <TableStoryCanvas args={args} />;
|
|
172
|
+
}
|
|
173
|
+
}`,...Z.parameters?.docs?.source},description:{story:`Сценарий со статическим OData metadata adapter в режиме enrich.`,...Z.parameters?.docs?.description}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`{
|
|
174
|
+
args: {
|
|
175
|
+
title: "useODataTableColumns: build",
|
|
176
|
+
data: formattingRows,
|
|
177
|
+
columns: [],
|
|
178
|
+
selectionMode: "none",
|
|
179
|
+
getRowId: row => row.id
|
|
180
|
+
},
|
|
181
|
+
decorators: [withMockedHookODataMetadata],
|
|
182
|
+
parameters: {
|
|
183
|
+
odataService: HOOK_ODATA_SERVICE,
|
|
184
|
+
odataEntity: HOOK_ODATA_ENTITY,
|
|
185
|
+
odataMetadata: hookMetadata
|
|
186
|
+
},
|
|
187
|
+
render: function Render(args) {
|
|
188
|
+
return <HookBuildTableStory args={args} />;
|
|
189
|
+
}
|
|
190
|
+
}`,...Q.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме build.",...Q.parameters?.docs?.description}}},$.parameters={...$.parameters,docs:{...$.parameters?.docs,source:{originalSource:`{
|
|
191
|
+
args: {
|
|
192
|
+
title: "useODataTableColumns: enrich",
|
|
193
|
+
data: formattingRows,
|
|
194
|
+
columns: [],
|
|
195
|
+
selectionMode: "none",
|
|
196
|
+
getRowId: row => row.id
|
|
197
|
+
},
|
|
198
|
+
decorators: [withMockedHookODataMetadata],
|
|
199
|
+
parameters: {
|
|
200
|
+
odataService: HOOK_ODATA_SERVICE,
|
|
201
|
+
odataEntity: HOOK_ODATA_ENTITY,
|
|
202
|
+
odataMetadata: hookMetadata
|
|
203
|
+
},
|
|
204
|
+
render: function Render(args) {
|
|
205
|
+
return <HookEnrichTableStory args={args} />;
|
|
206
|
+
}
|
|
207
|
+
}`,...$.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме enrich.",...$.parameters?.docs?.description}}},Ie=[`Basic`,`WithColumnPinning`,`MultiSelect`,`WithDisabledRows`,`Fetching`,`Empty`,`ReachEnd`,`Loading`,`WithFormulaColumn`,`WithFormattingPipeline`,`WithHiddenZero`,`WithMergedDuplicates`,`WithODataMetadataAdapter`,`WithUseODataTableColumnsBuildHook`,`WithUseODataTableColumnsEnrichHook`]})))()}export{Le as _,V as a,B as c,q as d,Y as f,$ as g,Q as h,K as i,H as l,Z as m,W as n,G as o,X as p,U as r,g as s,z as t,J as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-BnW9ONAs.js";import{i as n,r}from"./react-qN2cStNd.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-W-usNnZb.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-B2XJ7Ho5.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{n as e,o as t,r as n}from"./rolldown-runtime-C0FnF6B9.js";import{t as r}from"./react-C21x__mS.js";import{n as i}from"./iframe-
|
|
1
|
+
import{n as e,o as t,r as n}from"./rolldown-runtime-C0FnF6B9.js";import{t as r}from"./react-C21x__mS.js";import{n as i}from"./iframe-BnW9ONAs.js";import{a,i as o}from"./utils-DUM89eIj.js";import{n as ee,t as s}from"./ui.module-CiLQZm_L.js";import{i as c,n as te}from"./uiClasses-DiXn3Hc-.js";import{n as l,t as u}from"./createControlledStoryRender-DHsyXc1B.js";import{n as d,t as f}from"./Scrollable-CzjaBhDx.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-elxR9IVU.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,T.isValidElement)(e)&&oe(e)===t}function x({children:e}){return(0,E.jsx)(E.Fragment,{children:e})}function S({children:e}){return(0,E.jsx)(E.Fragment,{children:e})}function C({children:e}){return(0,E.jsx)(E.Fragment,{children:e})}function w({children:e}){return(0,E.jsx)(E.Fragment,{children:e})}function se(e,t){let n=null,r=null,i=null;for(let a of T.Children.toArray(e)){if(!(0,T.isValidElement)(a))throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);if(b(a,O)){if(n)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Toolbar.`);n=a.props;continue}if(b(a,k)){if(r)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Content.`);r=a.props;continue}if(b(a,A)){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 T.Children.toArray(e).map(e=>{if(!b(e,D))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)}})}var T,E,D,O,k,A,j,M;function N(){return(N=e((()=>{T=t(r(),1),o(),s(),c(),h(),p(),_(),m(),E=i(),D=`TabsLayout.Tab`,O=`TabsLayout.Toolbar`,k=`TabsLayout.Content`,A=`TabsLayout.Footer`,x.displayName=D,S.displayName=O,C.displayName=k,w.displayName=A,j=({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,T.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,E.jsxs)(`div`,{className:g,children:[(0,E.jsx)(ie,{items:m,state:h,className:v.tabs,ariaLabel:f,ariaLabelledBy:p}),(0,E.jsx)(`div`,{className:_,children:m.map(e=>{let t=e.id===h.selectedTabId;if(!re({mountStrategy:c,isSelected:t,isVisited:h.isVisited(e.id)}))return null;let n=`${e.toolbar?`auto `:``}minmax(0, 1fr)${e.footer?` auto`:``}`;return(0,E.jsx)(ne,{tabId:e.id,isSelected:t,className:v.panel,getTabElementId:h.getTabElementId,getPanelElementId:h.getPanelElementId,children:(0,E.jsxs)(`div`,{className:v.layoutPanel,style:{gridTemplateRows:n},children:[e.toolbar?(0,E.jsx)(`div`,{className:a(v.layoutSection,e.toolbar.className),children:e.toolbar.children}):null,(0,E.jsx)(`div`,{className:a(v.layoutSection,v.layoutContent,e.content.className),children:e.content.children}),e.footer?(0,E.jsx)(`div`,{className:a(v.layoutSection,e.footer.className),children:e.footer.children}):null]})},e.id)})})]})},j.displayName=`TabsLayout`,M=Object.assign(j,{Tab:x,Toolbar:S,Content:C,Footer:w}),j.__docgenInfo={description:`Compound-оболочка tabs для составных panel-layout сценариев.
|
|
2
2
|
Сам компонент управляет только переключением и каркасом панели.`,methods:[],displayName:`TabsLayout`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"manual"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"lazy"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},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:()=>K,BoxControlled:()=>q,BoxMountStrategies:()=>Y,BoxVertical:()=>J,DisabledTabs:()=>X,Empty:()=>$,LayoutPanels:()=>Z,Loading:()=>Q,__namedExportsOrder:()=>ue,default:()=>W});function P({label:e}){let[t,n]=(0,I.useState)(0);return(0,L.jsxs)(`div`,{style:z,children:[(0,L.jsxs)(`div`,{children:[`Панель: `,e]}),(0,L.jsxs)(`div`,{children:[`Локальный счётчик: `,t]}),(0,L.jsx)(`button`,{type:`button`,onClick:()=>n(e=>e+1),children:`Увеличить`})]})}function F(e){return u((t,n)=>{let r=t.value??t.defaultValue,i=(0,L.jsx)(y,{...t,value:r,onValueChange:e=>{t.onValueChange?.(e),n({value:e})}});return e===void 0?i:(0,L.jsx)(`div`,{style:{height:e},children:i})})}var I,L,R,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,ue;function de(){return(de=e((()=>{I=r(),g(),N(),l(),d(),L=i(),{fn:R}=__STORYBOOK_MODULE_TEST__,z={padding:16,display:`grid`,gap:12},B=[{id:`profile`,title:`Профиль`,content:(0,L.jsx)(`div`,{style:z,children:`Карточка пользователя и основные поля профиля.`})},{id:`settings`,title:`Настройки`,content:(0,L.jsx)(`div`,{style:z,children:`Параметры интерфейса, уведомлений и доступа.`})},{id:`history`,title:`История`,content:(0,L.jsx)(`div`,{style:z,children:`Последние действия, комментарии и изменения.`})}],V=[{id:`first`,title:`Первая`,content:(0,L.jsx)(P,{label:`Первая`})},{id:`second`,title:`Вторая`,content:(0,L.jsx)(P,{label:`Вторая`})},{id:`third`,title:`Третья`,content:(0,L.jsx)(P,{label:`Третья`})}],H=[{id:`overview`,title:`Обзор`,content:(0,L.jsx)(`div`,{style:z,children:`Раздел доступен сразу.`})},{id:`analytics`,title:`Аналитика`,disabled:!0,content:(0,L.jsx)(`div`,{style:z,children:`Пока недоступно.`})},{id:`history`,title:`История`,content:(0,L.jsx)(`div`,{style:z,children:`История изменений и действий.`})}],U=Array.from({length:12},(e,t)=>`Элемент ${t+1}`),W={title:`Shared/UI/Tabs`,component:y,args:{items:B,value:`profile`,onValueChange:R(),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`}}},G=u((e,t)=>{let n=e.value??e.defaultValue??`details`;return(0,L.jsx)(`div`,{style:{height:360},children:(0,L.jsxs)(M,{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,L.jsxs)(M.Tab,{id:`details`,title:`Детали`,children:[(0,L.jsx)(M.Toolbar,{children:(0,L.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Панель инструментов вне scroll-области.`})}),(0,L.jsx)(M.Content,{children:(0,L.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:12,height:`100%`},children:[(0,L.jsx)(f,{className:`surface0 border radiusSm paddingSm h100`,children:U.map(e=>(0,L.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Левая колонка: `,e]},`left-${e}`))}),(0,L.jsx)(f,{className:`surface0 border radiusSm paddingSm h100`,children:U.map(e=>(0,L.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Правая колонка: `,e]},`right-${e}`))})]})}),(0,L.jsx)(M.Footer,{children:(0,L.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Футер тоже исключён из scroll-контента.`})})]}),(0,L.jsx)(M.Tab,{id:`history`,title:`История`,children:(0,L.jsx)(M.Content,{children:(0,L.jsx)(f,{className:`surface0 border radiusSm paddingSm h100`,children:U.map(e=>(0,L.jsxs)(`div`,{className:`paddingBlockXs`,children:[`История изменения: `,e]},`history-${e}`))})})})]})})}),K={args:{"aria-label":`Основные разделы профиля`},render:F()},q={args:{value:`settings`,"aria-label":`Управляемые вкладки`},render:F()},J={args:{orientation:`vertical`,"aria-label":`Вертикальные вкладки`},render:F(320)},Y={args:{items:V,mountStrategy:`lazy`,"aria-label":`Демонстрация стратегий монтирования`},render:F()},X={args:{items:H,value:`overview`,"aria-label":`Вкладки с недоступным разделом`},render:F()},Z={args:{value:`details`,onValueChange:R(),orientation:`horizontal`,activationMode:`manual`,mountStrategy:`lazy`,clean:!1,loop:!0,"aria-label":`Составные панели документа`},render:G},Q={args:{isLoading:!0,items:B},render:F()},$={args:{items:[],value:void 0},render:F()},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`{
|
|
3
3
|
args: {
|
|
4
4
|
"aria-label": "Основные разделы профиля"
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-BnW9ONAs.js";import{a as r,i,o as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-CiLQZm_L.js";import{i as c,n as l}from"./uiClasses-DiXn3Hc-.js";import{i as u,n as d,r as f,t as p}from"./NoData-tXPTJtqs.js";import{n as m,t as h}from"./OneStepScroller-CBqY-Bqn.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;function B(){return(B=e((()=>{w=`pcMjuj`,T=`NLOw2z`,E=`ZSAoAa`,D=`psYhsZ`,O=`mNDq9-`,k=`_28F3fs`,A=`g156KO`,j=`C2mO1e`,M=`UKZXTZ`,N=`jiTafe`,P=`nhD0k7`,F=`G8FICe`,I=`W50XHh`,L=`vnjXkU`,R=`Nzvfhw`,z={tabsContainer:w,clean:T,tabs:E,panels:D,horizontal:O,tab:k,vertical:A,panelScrollable:j,selected:M,panel:N,panelBody:P,layoutPanels:F,layoutPanel:I,layoutSection:L,layoutContent:R}})))()}function V({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:i,panelBodyClassName:a,loadingText:o}){return(0,H.jsxs)(`div`,{className:e,children:[(0,H.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,H.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:r(z.tab,`skeletonLine`),children:`Загрузка...`})}),(0,H.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,H.jsx)(`div`,{className:i,children:(0,H.jsx)(`div`,{className:a,children:(0,H.jsx)(f,{text:o,className:`radiusSm`})})})})]})}var H;function U(){return(U=e((()=>{i(),u(),B(),H=n(),V.__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 W({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,G.jsx)(`div`,{className:e,children:(0,G.jsx)(`div`,{className:t,children:(0,G.jsx)(`div`,{className:n,children:(0,G.jsx)(`div`,{className:r,children:(0,G.jsx)(p,{className:`radiusSm`})})})})})}var G;function K(){return(K=e((()=>{d(),G=n(),W.__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 q({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,J.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,className:n,children:a})}var J;function Y(){return(Y=e((()=>{t(),J=n(),q.__docgenInfo={description:``,methods:[],displayName:`TabsPanel`,props:{tabId:{required:!0,tsType:{name:`string`},description:``},isSelected:{required:!0,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},getTabElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},getPanelElementId:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(tabId: string) => string`,signature:{arguments:[{type:{name:`string`},name:`tabId`}],return:{name:`string`}}},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}}})))()}function X({items:e,state:t,className:n,ariaLabel:i,ariaLabelledBy:a}){return(0,Z.jsx)(`div`,{className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":i,"aria-labelledby":a,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:(e=>t.orientation===`horizontal`?(0,Z.jsx)(h,{children:e}):(0,Z.jsx)(Z.Fragment,{children:e}))(e.map(e=>(0,Z.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:r(z.tab,`textWrap`,e.id===t.selectedTabId&&z.selected),children:e.title},e.id)))})}var Z;function Q(){return(Q=e((()=>{i(),m(),B(),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 ee({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(z.tabsContainer,h?z.clean:o.uiFilledPanel,z[u],l(m),a),S=z.tabs,C=r(z.panels,z.panelScrollable,`scrollable overscroll`),w=z.panel,T=z.panelBody;return s?(0,$.jsx)(V,{containerClassName:b,tabListClassName:S,panelsClassName:C,panelClassName:w,panelBodyClassName:T,loadingText:c}):e.length?(0,$.jsxs)(`div`,{className:b,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;return y({mountStrategy:f,isSelected:t,isVisited:v.isVisited(e.id)})?(0,$.jsx)(q,{tabId:e.id,isSelected:t,className:w,getTabElementId:v.getTabElementId,getPanelElementId:v.getPanelElementId,children:(0,$.jsx)(`div`,{className:T,children:e.content})},e.id):null})})]}):(0,$.jsx)(W,{containerClassName:b,panelsClassName:C,panelClassName:w,panelBodyClassName:T})}var $;function te(){return(te=e((()=>{i(),s(),c(),C(),B(),U(),K(),Y(),Q(),$=n(),ee.__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{q as a,B as c,b as d,y as f,Q as i,C as l,te as n,Y as o,X as r,z as s,ee as t,x as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./x-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./x-BGnlLolo.js";import{n as i}from"./iframe-BnW9ONAs.js";import{a,i as o}from"./utils-DUM89eIj.js";import{n as s,t as c}from"./ui.module-CiLQZm_L.js";import{d as l,l as u,s as ee,u as d}from"./Input-Duo7u72d.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:`Возвращает ключ сравнения тегов. Позволяет, например, запретить дубликаты без учёта регистра.
|