@ryuzaki13/react-foundation-ui 1.4.2 → 1.4.3
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 +12 -11
- package/dist/advanced-search/index.js.map +1 -1
- package/dist/badge/index.js +1 -1
- package/dist/base-table/index.js +2 -2
- package/dist/button/index.js +1 -1
- package/dist/chunks/{CalendarView-KCkhCtK-.js → CalendarView-Z_XWk7aI.js} +8 -8
- package/dist/chunks/{CalendarView-KCkhCtK-.js.map → CalendarView-Z_XWk7aI.js.map} +1 -1
- package/dist/chunks/{ImageViewerRuntime-RN49by8Y.js → ImageViewerRuntime-BMs3BBkV.js} +4 -4
- package/dist/chunks/{ImageViewerRuntime-RN49by8Y.js.map → ImageViewerRuntime-BMs3BBkV.js.map} +1 -1
- package/dist/chunks/{TextEditorLexicalClient-CVTrglWP.js → TextEditorLexicalClient-CK8j3RA4.js} +16 -18
- package/dist/chunks/{TextEditorLexicalClient-CVTrglWP.js.map → TextEditorLexicalClient-CK8j3RA4.js.map} +1 -1
- package/dist/chunks/{badge-Cri0-kVK.js → badge-DwIUjH0a.js} +2 -2
- package/dist/chunks/{badge-Cri0-kVK.js.map → badge-DwIUjH0a.js.map} +1 -1
- package/dist/chunks/{base-table-D5IqsjQD.js → base-table-BFsVwXg3.js} +13 -12
- package/dist/chunks/{base-table-D5IqsjQD.js.map → base-table-BFsVwXg3.js.map} +1 -1
- package/dist/chunks/{button-CC0Jdx1j.js → button-BU2kRzwu.js} +2 -2
- package/dist/chunks/{button-CC0Jdx1j.js.map → button-BU2kRzwu.js.map} +1 -1
- package/dist/chunks/check-box-Dd3YFuxd.js.map +1 -1
- package/dist/chunks/{context-menu-DQeR3y7M.js → context-menu-C6RO7soI.js} +7 -2
- package/dist/chunks/{context-menu-DQeR3y7M.js.map → context-menu-C6RO7soI.js.map} +1 -1
- package/dist/chunks/{date-input-DBJisPRz.js → date-input-BzExUQnc.js} +5 -5
- package/dist/chunks/{date-input-DBJisPRz.js.map → date-input-BzExUQnc.js.map} +1 -1
- package/dist/chunks/{flex-DYZ0IbU6.js → flex-C7njxZ74.js} +10 -7
- package/dist/chunks/{flex-DYZ0IbU6.js.map → flex-C7njxZ74.js.map} +1 -1
- package/dist/chunks/floating-arrow-BE-z4QkE.js.map +1 -1
- package/dist/chunks/{input-BCJfUdK_.js → input-Bp6_Ucgr.js} +15 -15
- package/dist/chunks/{input-BCJfUdK_.js.map → input-Bp6_Ucgr.js.map} +1 -1
- package/dist/chunks/{input-files-Dcc5K-_1.js → input-files-D1JzSw_Y.js} +2 -2
- package/dist/chunks/{input-files-Dcc5K-_1.js.map → input-files-D1JzSw_Y.js.map} +1 -1
- package/dist/chunks/{input-search-B7HmrAM7.js → input-search-Bkhcinru.js} +2 -2
- package/dist/chunks/{input-search-B7HmrAM7.js.map → input-search-Bkhcinru.js.map} +1 -1
- package/dist/chunks/{misc-DIF5h9ba.js → misc-BYxxlJz6.js} +3 -3
- package/dist/chunks/{misc-DIF5h9ba.js.map → misc-BYxxlJz6.js.map} +1 -1
- package/dist/chunks/{modal-DXHX_sA-.js → modal-paexEF0j.js} +4 -5
- package/dist/chunks/{modal-DXHX_sA-.js.map → modal-paexEF0j.js.map} +1 -1
- package/dist/chunks/{multi-select-CWx12rgb.js → multi-select-COa6-owj.js} +3 -3
- package/dist/chunks/{multi-select-CWx12rgb.js.map → multi-select-COa6-owj.js.map} +1 -1
- package/dist/chunks/{picker-BAQ9NeHe.js → picker-e6IsrMUG.js} +3 -3
- package/dist/chunks/{picker-BAQ9NeHe.js.map → picker-e6IsrMUG.js.map} +1 -1
- package/dist/chunks/{popover-xJJqy1v6.js → popover-CGU3MlsH.js} +14 -14
- package/dist/chunks/{popover-xJJqy1v6.js.map → popover-CGU3MlsH.js.map} +1 -1
- package/dist/chunks/radio-group-CM9Lg_nc.js.map +1 -1
- package/dist/chunks/{select-BPb-eL3O.js → select-C95db02j.js} +32 -31
- package/dist/chunks/{select-BPb-eL3O.js.map → select-C95db02j.js.map} +1 -1
- package/dist/chunks/sortable-DcTIAbjD.js.map +1 -1
- package/dist/chunks/{table-xMAjqtcY.js → table-Dd5BcC0k.js} +3 -3
- package/dist/chunks/{table-xMAjqtcY.js.map → table-Dd5BcC0k.js.map} +1 -1
- package/dist/chunks/{table-column-interactions-BGd5Lwy9.js → table-column-interactions-DzEvVuXe.js} +8 -5
- package/dist/chunks/{table-column-interactions-BGd5Lwy9.js.map → table-column-interactions-DzEvVuXe.js.map} +1 -1
- package/dist/chunks/useODataSelectBase-CKe1AVMI.js.map +1 -1
- package/dist/chunks/wheel-picker-FS58cRsQ.js.map +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/date-input/index.js +2 -2
- package/dist/date-time-input/index.js +4 -4
- package/dist/date-time-input/index.js.map +1 -1
- package/dist/detail/index.js.map +1 -1
- package/dist/dialog/index.js.map +1 -1
- package/dist/disclosure/index.js +1 -1
- package/dist/disclosure/index.js.map +1 -1
- package/dist/drop-zone/index.js +1 -1
- package/dist/drop-zone/index.js.map +1 -1
- package/dist/errors/index.js +1 -1
- package/dist/errors/index.js.map +1 -1
- package/dist/expandable-action-panel/index.js +2 -2
- package/dist/expandable-action-panel/index.js.map +1 -1
- package/dist/flex/index.js +1 -1
- package/dist/fullscreen-portal/index.js +3 -3
- package/dist/fullscreen-portal/index.js.map +1 -1
- package/dist/image/index.js +5 -5
- package/dist/image/index.js.map +1 -1
- package/dist/input/index.js +1 -1
- package/dist/input-date-time/index.js +1 -1
- package/dist/input-date-time/index.js.map +1 -1
- package/dist/input-file/index.js +1 -1
- package/dist/input-file/index.js.map +1 -1
- package/dist/input-files/index.js +1 -1
- package/dist/input-image/index.js +1 -1
- package/dist/input-image/index.js.map +1 -1
- package/dist/input-search/index.js +1 -1
- package/dist/layout-picker/index.js +3 -3
- package/dist/layout-picker/index.js.map +1 -1
- package/dist/list/index.js +7 -7
- package/dist/list/index.js.map +1 -1
- package/dist/listbox/index.js.map +1 -1
- package/dist/misc/index.js +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/multi-select/index.js +1 -1
- package/dist/notifications/index.js +13 -11
- package/dist/notifications/index.js.map +1 -1
- package/dist/pages/index.js.map +1 -1
- package/dist/panel/index.js.map +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/popover/index.js +1 -1
- package/dist/preset-range-date-input/index.js +2 -2
- package/dist/preset-range-date-input/index.js.map +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/radio-button/index.js.map +1 -1
- package/dist/select/index.js +1 -1
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/index.js +27 -24
- package/dist/slider/index.js.map +1 -1
- package/dist/splitter/index.js.map +1 -1
- package/dist/state-select/index.js +12 -10
- package/dist/state-select/index.js.map +1 -1
- package/dist/switch/index.js +1 -1
- package/dist/switch/index.js.map +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table-column-interactions/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/table-sorting/index.js.map +1 -1
- package/dist/tabs/index.js +6 -6
- package/dist/tabs/index.js.map +1 -1
- package/dist/tag-input/index.js +1 -1
- package/dist/tag-input/index.js.map +1 -1
- package/dist/text/index.js +10 -8
- package/dist/text/index.js.map +1 -1
- package/dist/text-editor/index.js +2 -2
- package/dist/textarea/index.js +1 -1
- package/dist/textarea/index.js.map +1 -1
- package/dist/toggle/index.js.map +1 -1
- package/dist/toolbar/index.js +1 -2
- package/dist/toolbar/index.js.map +1 -1
- package/dist/tree/index.js.map +1 -1
- package/dist/tree-select/index.js +83 -80
- package/dist/tree-select/index.js.map +1 -1
- package/dist/tree-table/index.js +2 -2
- package/dist/tree-table/index.js.map +1 -1
- package/package.json +51 -59
- package/storybook-static/assets/{Badge-SZ48u9qp.js → Badge-DHexWW92.js} +11 -11
- package/storybook-static/assets/Badge.stories-CeWDekpP.js +54 -0
- package/storybook-static/assets/Button-VdPdxcvG.js +12 -0
- package/storybook-static/assets/{Button-CFCpYiPy.js → Button-kybsFNS9.js} +10 -10
- package/storybook-static/assets/Button.stories-DhgYDM_q.js +75 -0
- package/storybook-static/assets/{DateInput-BfFTwd_P.css → CalendarView-DKvrkS40.css} +1 -1
- package/storybook-static/assets/CalendarView-DTX0eO8t.js +1 -0
- package/storybook-static/assets/CheckBox-B6rTemHK.js +2 -0
- package/storybook-static/assets/{CheckBox-FoMSruZC.js → CheckBox-CDwboiFD.js} +11 -11
- package/storybook-static/assets/CheckBox.module-BBzuj5He.js +1 -0
- package/storybook-static/assets/CheckBox.stories-BSMihxpY.js +60 -0
- package/storybook-static/assets/Color-6AOWCN3U-D5F38IUU.js +1 -0
- package/storybook-static/assets/{ContextMenu-CU_1kOzV.js → ContextMenu-2ZQAeo_p.js} +9 -9
- package/storybook-static/assets/ContextMenu-CQtvL8kx.js +1 -0
- package/storybook-static/assets/ContextMenu.stories-Dtz2YIGk.js +90 -0
- package/storybook-static/assets/{DateInput-BeZ5esVE.js → DateInput-D41aWZ7_.js} +11 -11
- package/storybook-static/assets/DateInput-DBwgBhFj.js +1 -0
- package/storybook-static/assets/DateInput-pmGiwdvw.css +1 -0
- package/storybook-static/assets/{DateInput.stories-Bkw2r8CD.js → DateInput.stories-CMV96t-8.js} +2 -2
- package/storybook-static/assets/{DateRangePresetSelect-C_mLvEoK.js → DateRangePresetSelect-BLKJkg8X.js} +8 -8
- package/storybook-static/assets/DateRangePresetSelect-DXYYFJJn.js +3 -0
- package/storybook-static/assets/DateRangePresetSelect.stories-BNtFx_iG.js +11 -0
- package/storybook-static/assets/{Detail-WzciiK9S.js → Detail-BHcGLZok.js} +11 -11
- package/storybook-static/assets/Detail.stories-C4smn8Uu.js +44 -0
- package/storybook-static/assets/{Dialog-CwLsVxJY.js → Dialog-kji1ho-G.js} +9 -9
- package/storybook-static/assets/Dialog.stories-DYzrVcIT.js +31 -0
- package/storybook-static/assets/{Disclosure-BlRuGrk2.js → Disclosure-BVLfp53o.js} +10 -10
- package/storybook-static/assets/Disclosure.stories-DcV1pGCt.js +41 -0
- package/storybook-static/assets/DocsRenderer-JROSPFPF-CCwX0YiR.js +2 -0
- package/storybook-static/assets/{DropZone-Cr3nfCWA.js → DropZone-6iWHt6C_.js} +10 -10
- package/storybook-static/assets/DropZone.stories-bASZNbD5.js +44 -0
- package/storybook-static/assets/ExpandableActionPanel.stories-CMMbHs_d.js +20 -0
- package/storybook-static/assets/{Flex-C10912WS.js → Flex-BJViOwhH.js} +18 -18
- package/storybook-static/assets/Flex.stories-CI6DdxU7.js +300 -0
- package/storybook-static/assets/FlexContainer-LmZIdhq2.js +1 -0
- package/storybook-static/assets/FlexItem-vkDYa5tA.js +3 -0
- package/storybook-static/assets/FloatingPopover-CPLOruAY.js +1 -0
- package/storybook-static/assets/FloatingPopover-DC84VrV3.css +1 -0
- package/storybook-static/assets/FormattedTableCell-CV4yLuxl.js +18 -0
- package/storybook-static/assets/FormattedTableCell-CY3E21k8.css +1 -0
- package/storybook-static/assets/Grid-BCzygAqy.js +52 -0
- package/storybook-static/assets/{Grid-G88y3oB_.js → Grid-CNEn2bRE.js} +18 -18
- package/storybook-static/assets/{Grid.stories-BV7zL-6n.js → Grid.stories-qFo5E3qE.js} +2 -2
- package/storybook-static/assets/{Grid-Bb0gH6CX.js → GridContainer-qDguE1HS.js} +2 -53
- package/storybook-static/assets/ImageCropper.stories-BeQI7oKQ.js +115 -0
- package/storybook-static/assets/ImageRenderer-DK2ibQyr.js +2 -0
- package/storybook-static/assets/ImageRenderer.stories-C1T4ne0G.js +22 -0
- package/storybook-static/assets/ImageView.stories-D_Q-ZBtQ.js +9 -0
- package/storybook-static/assets/{ImageViewer.stories-PlFXSB5n.js → ImageViewer.stories-boombTJI.js} +5 -5
- package/storybook-static/assets/ImageViewerRuntime-D8KSESgf.js +51 -0
- package/storybook-static/assets/{Input-pyUNDVtk.js → Input-CGHba0oM.js} +11 -11
- package/storybook-static/assets/Input-DtOsW7ur.js +3 -0
- package/storybook-static/assets/Input.stories-C0qWd6SH.js +38 -0
- package/storybook-static/assets/{InputDateTime-CWk5KBwD.js → InputDateTime-CgYkmVYu.js} +11 -11
- package/storybook-static/assets/InputDateTime.stories-Brxo7Chn.js +35 -0
- package/storybook-static/assets/{InputFile-BLQq7mY9.js → InputFile-Bsxafe88.js} +10 -10
- package/storybook-static/assets/InputFile.stories-BzEV7ybE.js +36 -0
- package/storybook-static/assets/{InputFiles-B6J4XBdP.js → InputFiles-KJFUsmSS.js} +10 -10
- package/storybook-static/assets/InputFiles.stories-ffjxiHSh.js +33 -0
- package/storybook-static/assets/InputFilesList-D6B5g99M.js +1 -0
- package/storybook-static/assets/{InputImage--2PSB_E_.js → InputImage-Cd39V4Vc.js} +10 -10
- package/storybook-static/assets/InputImage.stories-n-tpY8OO.js +51 -0
- package/storybook-static/assets/{LayoutPicker-RZDisgZ_.js → LayoutPicker-CGQFfQk6.js} +13 -13
- package/storybook-static/assets/LayoutPicker.stories-xSL2qafC.js +449 -0
- package/storybook-static/assets/{Listbox-xwfNjBpV.js → Listbox-CxISK8c5.js} +10 -10
- package/storybook-static/assets/Listbox.stories-BdQBmVFI.js +47 -0
- package/storybook-static/assets/{Modal-HJt_Y-a6.js → Modal-BiaAWMdV.js} +12 -12
- package/storybook-static/assets/Modal.stories-GV7fGqyd.js +180 -0
- package/storybook-static/assets/MultiSelect-D5XFosSU.js +2 -0
- package/storybook-static/assets/{MultiSelect-CvNsFdE4.js → MultiSelect-Df2CpyNH.js} +11 -11
- package/storybook-static/assets/MultiSelect.stories-BEVQF6hO.js +29 -0
- package/storybook-static/assets/MultiSelectToken-CrVawISu.js +1 -0
- package/storybook-static/assets/NoData-C7KqaHUh.css +1 -0
- package/storybook-static/assets/NoData-Fm23iF4n.js +1 -0
- package/storybook-static/assets/{NotificationsHost-DXCf3CQX.js → NotificationsHost-C2vSwAjz.js} +9 -9
- package/storybook-static/assets/NotificationsHost.stories-IbgayDlM.js +25 -0
- package/storybook-static/assets/{ODataMultiSelect-CIJNiwGb.js → ODataMultiSelect-oW3kW0nO.js} +15 -15
- package/storybook-static/assets/ODataMultiSelect.stories-CP6_jGSr.js +73 -0
- package/storybook-static/assets/{ODataSelect-BDga9TUb.js → ODataSelect-CrGF8fyC.js} +15 -15
- package/storybook-static/assets/ODataSelect.stories-DTv31Rkv.js +73 -0
- package/storybook-static/assets/ODataTreeMultiSelect-D0h8H3gw.js +19 -0
- package/storybook-static/assets/ODataTreeMultiSelect.stories-CM8QjG8r.js +30 -0
- package/storybook-static/assets/ODataTreeSelect-PWn0-hI4.js +17 -0
- package/storybook-static/assets/ODataTreeSelect.stories-2UkFTnbE.js +24 -0
- package/storybook-static/assets/OneStepScroller-CH6K7wiO.js +5 -0
- package/storybook-static/assets/OneStepScroller-NRYd-egY.css +1 -0
- package/storybook-static/assets/{PeriodSelect-BJbjl62O.js → PeriodSelect-BtwJuAO6.js} +13 -13
- package/storybook-static/assets/PeriodSelect.stories-BH8I5Wmg.js +64 -0
- package/storybook-static/assets/PickerSelectionToolbar-BcL8-O6n.js +2 -0
- package/storybook-static/assets/PickerTriggerActions-C8Asdp5e.js +1 -0
- package/storybook-static/assets/{Popover-Dg2T0DoN.js → Popover-Ch5btFhR.js} +11 -11
- package/storybook-static/assets/Popover-DGX7JNNK.css +1 -0
- package/storybook-static/assets/Popover-Djns7yXR.js +2 -0
- package/storybook-static/assets/Popover.stories-Bask2I1I.js +69 -0
- package/storybook-static/assets/{PresetRangeDateInput-CNmTMNHF.js → PresetRangeDateInput-DvsTjQNP.js} +8 -8
- package/storybook-static/assets/PresetRangeDateInput.stories-BNfOUWgp.js +15 -0
- package/storybook-static/assets/PresetSelect-9zitP0-V.js +5 -0
- package/storybook-static/assets/{RadioButton-2rfUPkwC.js → RadioButton-Yb9bQKYe.js} +10 -10
- package/storybook-static/assets/RadioButton.stories-FIFxXFVP.js +36 -0
- package/storybook-static/assets/RadioGroup-CWsVqwtm.js +1 -0
- package/storybook-static/assets/{RadioGroup-BduGGVKj.js → RadioGroup-Dn0zL838.js} +10 -10
- package/storybook-static/assets/RadioGroup.stories-B_drop9x.js +42 -0
- package/storybook-static/assets/Scrollable-3Z6b5g0Z.js +1 -0
- package/storybook-static/assets/{Select-DnZ83aZs.js → Select-BaR8D89E.js} +13 -13
- package/storybook-static/assets/Select-BiOxxy0y.js +12 -0
- package/storybook-static/assets/Select.stories-CMlWu7vC.js +46 -0
- package/storybook-static/assets/SelectOptionContent-DhtCMwz6.js +1 -0
- package/storybook-static/assets/{SerializableSelect-BiFhAxAJ.js → SerializableSelect-BDiZo_-M.js} +12 -12
- package/storybook-static/assets/SerializableSelect.stories-DgC6oiRx.js +46 -0
- package/storybook-static/assets/{SingleDateTimeInput-Bc-ifbML.js → SingleDateTimeInput-Dx1fvzyr.js} +12 -12
- package/storybook-static/assets/SingleDateTimeInput.stories-NRUE7nnA.js +78 -0
- package/storybook-static/assets/Slider-DJpzPo7f.js +1 -0
- package/storybook-static/assets/{Slider-DfjBSsR3.js → Slider-aiFcrSGY.js} +15 -15
- package/storybook-static/assets/Slider.stories-B0YHmFf5.js +77 -0
- package/storybook-static/assets/{SliderInput-o9uCcVMP.js → SliderInput-sOoxvdku.js} +16 -16
- package/storybook-static/assets/SliderInput.stories-BYk1V19Z.js +68 -0
- package/storybook-static/assets/{Sortable-B6Y9Q9Yn.js → Sortable-CuVT40f8.js} +13 -13
- package/storybook-static/assets/Sortable.stories-KSWGoKrN.js +141 -0
- package/storybook-static/assets/{Splitter-CfUVnAs7.js → Splitter-EoNOj4XF.js} +11 -11
- package/storybook-static/assets/Splitter.stories-CuAZab2y.js +22 -0
- package/storybook-static/assets/{StateSelect-h0i4M4vO.js → StateSelect-B_M50HZl.js} +10 -10
- package/storybook-static/assets/StateSelect.stories-DQ_MzvL4.js +47 -0
- package/storybook-static/assets/StringToggle.stories-BbRysCKA.js +6 -0
- package/storybook-static/assets/{Switch-CPKaENqL.js → Switch-DO_tyZIc.js} +10 -10
- package/storybook-static/assets/Switch.stories-BQakMoPp.js +26 -0
- package/storybook-static/assets/{Table-xV66crR1.js → Table-CVK5rwmT.js} +22 -22
- package/storybook-static/assets/Table.stories-IZaleOjp.js +122 -0
- package/storybook-static/assets/{Tabs-v9YZeJoc.js → Tabs-DAaWUQb4.js} +15 -15
- package/storybook-static/assets/Tabs.stories-BC8LwG22.js +58 -0
- package/storybook-static/assets/TagInput.stories-CrXD57LV.js +18 -0
- package/storybook-static/assets/Text-cVBcGheg.js +1 -0
- package/storybook-static/assets/{Textarea-CRThqX0z.js → Textarea-9VdIC6G0.js} +10 -10
- package/storybook-static/assets/Textarea.stories-CEaMwEau.js +27 -0
- package/storybook-static/assets/TimePanel-vx1aOwT4.js +1 -0
- package/storybook-static/assets/TimePanel.stories-BKyiLEgy.js +25 -0
- package/storybook-static/assets/Toggle-CyajrRVE.js +1 -0
- package/storybook-static/assets/{Toggle-CzopviU2.js → Toggle-DrNoVpGe.js} +10 -10
- package/storybook-static/assets/Toggle.stories-CT0mQbdm.js +30 -0
- package/storybook-static/assets/TreeMultiSelect-CtDZ1cXU.js +1 -0
- package/storybook-static/assets/TreeMultiSelect-ag5i_Hw_.js +19 -0
- package/storybook-static/assets/TreeMultiSelect.stories-BxrbKopS.js +35 -0
- package/storybook-static/assets/TreePickerBase-DQzUtuAm.js +22 -0
- package/storybook-static/assets/TreeSelect-BNuJBo9x.js +1 -0
- package/storybook-static/assets/TreeSelect-CL8REXC5.js +16 -0
- package/storybook-static/assets/TreeSelect.stories-CsWGc9X0.js +18 -0
- package/storybook-static/assets/{TreeTable-DbzoCcR5.js → TreeTable-DrIFC4Oh.js} +22 -22
- package/storybook-static/assets/TreeTable.stories-Dq5c4_qe.js +83 -0
- package/storybook-static/assets/WithTooltip-7X4HQR7L-Cakt_JaX.js +9 -0
- package/storybook-static/assets/array-BBSjoTRy-CIRmlF93.js +1 -0
- package/storybook-static/assets/{async-D27PcxoG.js → async-0-Te_uje.js} +3 -3
- package/storybook-static/assets/axe-Bq-2xuso.js +20 -0
- package/storybook-static/assets/blocks-Dz3dJBcm.js +48 -0
- package/storybook-static/assets/browserAndReact-kZBm3nQe.js +105 -0
- package/storybook-static/assets/check-BMyoSD8F.js +1 -0
- package/storybook-static/assets/chevron-down-QDFtnGcg.js +1 -0
- package/storybook-static/assets/chevron-left-BoVuWD4h.js +1 -0
- package/storybook-static/assets/chevron-right-DS62_o_9.js +1 -0
- package/storybook-static/assets/chunk-242VQQM5-BMWWiybC.js +1 -0
- package/storybook-static/assets/chunk-DRQKCCAG-CqE-Zrl9.js +1 -0
- package/storybook-static/assets/chunk-IMSF75WX-yvVUwIQZ.js +6 -0
- package/storybook-static/assets/chunk-KJHJLCBK-D-yQfkOi.js +1 -0
- package/storybook-static/assets/chunk-QQBDHPVZ-B98qboss.js +1 -0
- package/storybook-static/assets/chunk-W22LQPXL-DDIvKskF.js +18 -0
- package/storybook-static/assets/circle-alert-CXg50Gb0.js +1 -0
- package/storybook-static/assets/circle-check-BPfYNWmz.js +1 -0
- package/storybook-static/assets/components-BejapTpU.js +241 -0
- package/storybook-static/assets/contextMenu-DtXkMNr6.js +2 -0
- package/storybook-static/assets/date-segments-D3HouZ37.js +1 -0
- package/storybook-static/assets/dom-B3G_GtJw.js +1 -0
- package/storybook-static/assets/download-DnZ6jhvY.js +1 -0
- package/storybook-static/assets/error-BZrNlEUO.js +1 -0
- package/storybook-static/assets/file-vPGnhPr-.js +1 -0
- package/storybook-static/assets/filesAndExcel-CXMXtMjq.js +122 -0
- package/storybook-static/assets/floating-ui.react-PN45KvBS.js +1 -0
- package/storybook-static/assets/formatter-L2YTDE3Q-x0raBH34.js +1 -0
- package/storybook-static/assets/formatters--mhLir82-v41eaI4a.js +1 -0
- package/storybook-static/assets/formatters-DGXR8csR.js +291 -0
- package/storybook-static/assets/formatters-runtime-GsS-hTg9.js +384 -0
- package/storybook-static/assets/foundationLib-XrLbqi3r.js +82 -0
- package/storybook-static/assets/hooks-Ddmw7JMF.js +5 -0
- package/storybook-static/assets/iframe-CrnMVMTc.js +1151 -0
- package/storybook-static/assets/iframe-FUHzX0Mr.js +1 -0
- package/storybook-static/assets/info-Dqq5QHG7.js +1 -0
- package/storybook-static/assets/{matchers-JIUQ3HVY-BPS-eazD.js → matchers-JIUQ3HVY-DvR2XErZ.js} +3 -3
- package/storybook-static/assets/media-BycWpjAl.js +1 -0
- package/storybook-static/assets/odata-BaxgzNGj.js +1 -0
- package/storybook-static/assets/odata-service-DnPlNGpU-Bpd4Zh9L.js +3 -0
- package/storybook-static/assets/odataAndTables-OEVW-gFK.js +126 -0
- package/storybook-static/assets/{odataFetchFn-BVgXXKgx.js → odataFetchFn-BLWeF0ZQ.js} +3 -3
- package/storybook-static/assets/odataStoryFixtures-BbswaX_5.js +25 -0
- package/storybook-static/assets/{persisted-D8qUQbts.js → persisted-BpFojVXw.js} +3 -3
- package/storybook-static/assets/preload-helper-BHmFeTtP.js +1 -0
- package/storybook-static/assets/pureUtilities-3afQk5ld.js +69 -0
- package/storybook-static/assets/react-18-CgkwBzTo.js +9 -0
- package/storybook-static/assets/react-C21x__mS.js +1 -0
- package/storybook-static/assets/react-CpOcCp9T.js +9 -0
- package/storybook-static/assets/react-CvkUhHUq.js +1 -0
- package/storybook-static/assets/react-dom-2o2phaJG.js +1 -0
- package/storybook-static/assets/react-qN2cStNd.js +1 -0
- package/storybook-static/assets/refresh-cw-B2VU4UNA.js +1 -0
- package/storybook-static/assets/rolldown-runtime-C0FnF6B9.js +1 -0
- package/storybook-static/assets/runtimeAndState-BEFDbOiZ.js +117 -0
- package/storybook-static/assets/settings-2-CLJhjWJl.js +1 -0
- package/storybook-static/assets/sortable-DW_Veba0.js +1 -0
- package/storybook-static/assets/syntaxhighlighter-T5IQBZDB-D0RhvxXU.js +6 -0
- package/storybook-static/assets/theming-mTWhffkp.js +39 -0
- package/storybook-static/assets/trash-2-yLqdtpz8.js +1 -0
- package/storybook-static/assets/treeStoryFixtures-Ci7STpiz.js +1 -0
- package/storybook-static/assets/triangle-alert-wI8Cd8tI.js +1 -0
- package/storybook-static/assets/ui.module-DoMIk8Oc.js +1 -0
- package/storybook-static/assets/uiClasses-CO3Cdv1E.js +1 -0
- package/storybook-static/assets/useFlexClasses-Gn9spXEB.js +1 -0
- package/storybook-static/assets/useODataSelectBase-WnxdcAM4.js +1 -0
- package/storybook-static/assets/useODataTreeData-C7L5TOjl.js +1 -0
- package/storybook-static/assets/usePickerDefaultFilter-DdxyE_i8.js +1 -0
- package/storybook-static/assets/usePickerQuery-CAWYFpCv.js +1 -0
- package/storybook-static/assets/usePickerTriggerController-BRXUlggw.js +1 -0
- package/storybook-static/assets/utils-DUM89eIj.js +1 -0
- package/storybook-static/assets/x-CyFk00QC.js +1 -0
- package/storybook-static/iframe.html +8 -3
- package/storybook-static/index.html +6 -0
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/storybook-static/sb-addons/a11y-3/manager-bundle.js +3 -3
- package/storybook-static/sb-addons/chromatic-com-storybook-1/manager-bundle.js +17 -17
- package/storybook-static/sb-addons/docs-2/manager-bundle.js +16 -1
- package/storybook-static/sb-addons/storybook-core-server-presets-0/common-manager-bundle.js +85 -83
- package/storybook-static/sb-addons/vitest-4/manager-bundle.js +1 -1
- package/storybook-static/sb-manager/globals-runtime.js +9939 -7695
- package/storybook-static/sb-manager/runtime.js +16128 -15326
- package/storybook-static/vite-inject-mocker-entry.js +2 -2
- package/storybook-static/assets/Badge.stories-CzsgAfG9.js +0 -51
- package/storybook-static/assets/Button-MoWVKehO.js +0 -12
- package/storybook-static/assets/Button.stories-wwep4c2p.js +0 -75
- package/storybook-static/assets/CheckBox-DHvne_6w.js +0 -2
- package/storybook-static/assets/CheckBox.module-ezWPE2pa.js +0 -1
- package/storybook-static/assets/CheckBox.stories-C14Axs5p.js +0 -60
- package/storybook-static/assets/Color-KMSTOMOX-CmMBFN4-.js +0 -1
- package/storybook-static/assets/ContextMenu.stories-Dr-tkpqd.js +0 -90
- package/storybook-static/assets/DateInput-erobPRG_.js +0 -1
- package/storybook-static/assets/DateRangePresetSelect-Cg90Kc_w.js +0 -3
- package/storybook-static/assets/DateRangePresetSelect.stories-BVap0joC.js +0 -11
- package/storybook-static/assets/Detail.stories-CLdtvJ7q.js +0 -44
- package/storybook-static/assets/Dialog.stories-Dx0jZO19.js +0 -31
- package/storybook-static/assets/Disclosure.stories-DhUdeDK6.js +0 -41
- package/storybook-static/assets/DocsRenderer-JROSPFPF-Dd1n83Uq.js +0 -2
- package/storybook-static/assets/DropZone.stories-6yYrwQOe.js +0 -44
- package/storybook-static/assets/DropdownMenu-D_2LfViU.js +0 -1
- package/storybook-static/assets/ExpandableActionPanel.stories-DVOFSOlm.js +0 -20
- package/storybook-static/assets/Flex-V-qg6Ejw.js +0 -3
- package/storybook-static/assets/Flex.stories-BZv94LD8.js +0 -300
- package/storybook-static/assets/ImageCropper.stories-MLFZyJxZ.js +0 -115
- package/storybook-static/assets/ImageRenderer-DHhD7mUz.js +0 -2
- package/storybook-static/assets/ImageRenderer.stories-ChcPymk2.js +0 -22
- package/storybook-static/assets/ImageView.stories-DszVNgC8.js +0 -9
- package/storybook-static/assets/ImageViewerRuntime-D8wFAKx5.js +0 -51
- package/storybook-static/assets/Input-BGdz8TmT.js +0 -3
- package/storybook-static/assets/Input.stories-Ban0Gnck.js +0 -38
- package/storybook-static/assets/InputDateTime.stories-DgKVmf54.js +0 -35
- package/storybook-static/assets/InputFile.stories-VnRv_q2r.js +0 -36
- package/storybook-static/assets/InputFiles-Dn9afnyd.js +0 -1
- package/storybook-static/assets/InputFiles.stories-CLVn5Xfq.js +0 -33
- package/storybook-static/assets/InputImage.stories-D__QcSho.js +0 -51
- package/storybook-static/assets/LayoutPicker.stories-BCnR-zBu.js +0 -449
- package/storybook-static/assets/Listbox.stories-B0HctqVp.js +0 -47
- package/storybook-static/assets/Modal.stories-BE-VpK-a.js +0 -180
- package/storybook-static/assets/MultiSelect-CaCNRNIe.js +0 -2
- package/storybook-static/assets/MultiSelect.stories-CNkbVGsb.js +0 -29
- package/storybook-static/assets/NotificationsHost.stories-BgqvZzT3.js +0 -25
- package/storybook-static/assets/ODataMultiSelect-CMyI4yYs.js +0 -1
- package/storybook-static/assets/ODataMultiSelect.stories-DTGCC6np.js +0 -73
- package/storybook-static/assets/ODataSelect-CGplYBh_.js +0 -1
- package/storybook-static/assets/ODataSelect.stories-CsxqRAvn.js +0 -73
- package/storybook-static/assets/ODataTreeMultiSelect-4ZiAtFZk.js +0 -19
- package/storybook-static/assets/ODataTreeMultiSelect.stories-B29Od8BL.js +0 -30
- package/storybook-static/assets/ODataTreeSelect-yZy7MBsZ.js +0 -17
- package/storybook-static/assets/ODataTreeSelect.stories-H7eaj1Sz.js +0 -24
- package/storybook-static/assets/PeriodSelect.stories-6CEzS2_H.js +0 -64
- package/storybook-static/assets/Popover.stories-BNgWOHlJ.js +0 -69
- package/storybook-static/assets/PresetRangeDateInput.stories-6UPVDF62.js +0 -15
- package/storybook-static/assets/RadioButton.stories-DbdFfJqO.js +0 -36
- package/storybook-static/assets/RadioGroup-BA21indC.js +0 -1
- package/storybook-static/assets/RadioGroup.stories-Ce6x0WUN.js +0 -42
- package/storybook-static/assets/Select-DyO25wSA.js +0 -12
- package/storybook-static/assets/Select.stories-CQ8f9fY9.js +0 -46
- package/storybook-static/assets/SelectOptionContent-fC4HFG5Q.js +0 -1
- package/storybook-static/assets/SerializableSelect-ki4BThj7.js +0 -4
- package/storybook-static/assets/SerializableSelect.stories-BzXBkWPI.js +0 -43
- package/storybook-static/assets/SingleDateTimeInput.stories-CI2yrD-f.js +0 -78
- package/storybook-static/assets/Slider.stories-D3O3_tqE.js +0 -77
- package/storybook-static/assets/SliderInput.stories-D1puleZB.js +0 -67
- package/storybook-static/assets/Sortable.stories-BoaL4W6r.js +0 -141
- package/storybook-static/assets/Splitter.stories-DJpFzZVJ.js +0 -22
- package/storybook-static/assets/StateSelect.stories-Ch2Gzzmd.js +0 -47
- package/storybook-static/assets/StringToggle.stories-B8qIG0M3.js +0 -6
- package/storybook-static/assets/Switch.stories-BysIhUHa.js +0 -26
- package/storybook-static/assets/Table.stories-CBpgmq7b.js +0 -122
- package/storybook-static/assets/Tabs.stories-BPYZuvzR.js +0 -58
- package/storybook-static/assets/TagInput.stories-BwOEnVpz.js +0 -18
- package/storybook-static/assets/Textarea.stories-BSJGz7JF.js +0 -27
- package/storybook-static/assets/TimePanel-ClMfq_py.js +0 -1
- package/storybook-static/assets/TimePanel.stories-_FqWdmta.js +0 -25
- package/storybook-static/assets/Toggle-BFhzeK2e.js +0 -1
- package/storybook-static/assets/Toggle.stories-Dw5UkD_b.js +0 -30
- package/storybook-static/assets/TreeMultiSelect-CerqHY2K.js +0 -19
- package/storybook-static/assets/TreeMultiSelect-Dw7FI3ic.js +0 -1
- package/storybook-static/assets/TreeMultiSelect.stories-BTQKFbeP.js +0 -35
- package/storybook-static/assets/TreePickerBase-rJISGJBT.js +0 -22
- package/storybook-static/assets/TreeSelect-CQ1vj_c9.js +0 -16
- package/storybook-static/assets/TreeSelect-Cp_lX0-B.js +0 -1
- package/storybook-static/assets/TreeSelect.stories-D6Q02Phx.js +0 -18
- package/storybook-static/assets/TreeTable.stories-YfyhkqH9.js +0 -83
- package/storybook-static/assets/WithTooltip-7X4HQR7L-BSQyvCOM.js +0 -9
- package/storybook-static/assets/axe-GLfyhAYL.js +0 -20
- package/storybook-static/assets/base-table-BNO0lnTL.css +0 -1
- package/storybook-static/assets/base-table-Dy3fEhQe.js +0 -18
- package/storybook-static/assets/blocks-ixiC6_NZ.js +0 -285
- package/storybook-static/assets/button-DZpTIXz2.js +0 -1
- package/storybook-static/assets/check-box-DByHwJGx.js +0 -1
- package/storybook-static/assets/chunk-242VQQM5-Dtm7LRbQ.js +0 -1
- package/storybook-static/assets/chunk-3LY4VQVK-BohfESrT.js +0 -6
- package/storybook-static/assets/chunk-LITCR56V-XaMGADKk.js +0 -18
- package/storybook-static/assets/contextMenu-BbMrBF3b.js +0 -2
- package/storybook-static/assets/date-7kR6zFX5.js +0 -461
- package/storybook-static/assets/date-segments-CzU9k5bl.js +0 -1
- package/storybook-static/assets/error-BRUjWXbJ.js +0 -1
- package/storybook-static/assets/file-CI_sonB1.js +0 -291
- package/storybook-static/assets/file-hArYcyES.js +0 -1
- package/storybook-static/assets/flex-C--89Z3g.js +0 -1
- package/storybook-static/assets/floating-ui.react-DLXcGGFR.js +0 -1
- package/storybook-static/assets/formatter-L2YTDE3Q-DgyzUf7M.js +0 -1
- package/storybook-static/assets/formatters-BtIOYENB.js +0 -3
- package/storybook-static/assets/formulas-DRh9I2eS.js +0 -2
- package/storybook-static/assets/grid-DLxeTZJe.js +0 -1
- package/storybook-static/assets/hooks-DWeJq8G1.js +0 -5
- package/storybook-static/assets/iframe-BJGIOdSH.js +0 -1119
- package/storybook-static/assets/input-DXi75xv1.js +0 -1
- package/storybook-static/assets/mdx-react-shim-CmoAsjhK.js +0 -1
- package/storybook-static/assets/media-DWFaNgLM.js +0 -1
- package/storybook-static/assets/misc-BElIqBdV.css +0 -1
- package/storybook-static/assets/misc-DNZTbWc6.js +0 -5
- package/storybook-static/assets/notifications-DjtgzFqT.js +0 -1
- package/storybook-static/assets/number-Xkw1yPJo.js +0 -2
- package/storybook-static/assets/odata-C4Liwkjx.js +0 -1
- package/storybook-static/assets/odata-service-C2oJ-ZmZ.js +0 -1
- package/storybook-static/assets/odataStoryFixtures-eEGvvtmw.js +0 -25
- package/storybook-static/assets/picker-DsP4xCcJ.js +0 -2
- package/storybook-static/assets/popover-BiQHI7Wi.css +0 -1
- package/storybook-static/assets/popover-CuFTypCp.js +0 -2
- package/storybook-static/assets/preload-helper-B45gAKPr.js +0 -1
- package/storybook-static/assets/preset-select-SPNHA-mp.js +0 -5
- package/storybook-static/assets/pwa-B7uYfAPd.js +0 -640
- package/storybook-static/assets/queryClient-CA0puYc0.js +0 -567
- package/storybook-static/assets/react-18-CaNSmcD-.js +0 -9
- package/storybook-static/assets/react-3qMIUlAf.js +0 -9
- package/storybook-static/assets/react-dom-BC7xZNHy.js +0 -1
- package/storybook-static/assets/select-sUla5-3b.js +0 -1
- package/storybook-static/assets/slider--Yp_sa_W.js +0 -2
- package/storybook-static/assets/sortable-jALaQqYE.js +0 -1
- package/storybook-static/assets/syntaxhighlighter-RTCFPKCB-u_WDwfDn.js +0 -6
- package/storybook-static/assets/text-D5xgciF8.js +0 -4
- package/storybook-static/assets/theming-oB64gsjY.js +0 -39
- package/storybook-static/assets/treeStoryFixtures-Y_nnjz0_.js +0 -1
- package/storybook-static/assets/ui-DWDaBPQx.js +0 -1
- package/storybook-static/assets/ui.module-wFHXkJzp.js +0 -1
- package/storybook-static/assets/uiClasses-CaHp0EWd.js +0 -1
- package/storybook-static/assets/useODataSelectBase-DjlPxmxr.js +0 -1
- package/storybook-static/assets/useODataTreeData-1W6cbuec.js +0 -1
- package/storybook-static/assets/utils-DzbSigQl.js +0 -1
- package/storybook-static/assets/valueState-GnkKWBTr.js +0 -277
- /package/storybook-static/assets/{DropdownMenu-BgzIzwzM.css → ContextMenu-BgzIzwzM.css} +0 -0
- /package/storybook-static/assets/{Grid-K9R_IHaw.css → GridContainer-K9R_IHaw.css} +0 -0
- /package/storybook-static/assets/{InputFiles-ByK52qUe.css → InputFilesList-ByK52qUe.css} +0 -0
- /package/storybook-static/assets/{MultiSelect-BoIwmje6.css → MultiSelectToken-BoIwmje6.css} +0 -0
- /package/storybook-static/assets/{slider-DMDFRH6B.css → Slider-DMDFRH6B.css} +0 -0
- /package/storybook-static/assets/{Flex-IXK2se1Y.css → useFlexClasses-IXK2se1Y.css} +0 -0
- /package/storybook-static/assets/{picker-DzBkX15M.css → usePickerTriggerController-DzBkX15M.css} +0 -0
|
@@ -0,0 +1,122 @@
|
|
|
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-CrnMVMTc.js";import{D as i,E as a,T as ee,c as te,l as ne,n as o,s as re,v as s,w as ie}from"./odata-BaxgzNGj.js";import{C as ae,h as oe}from"./formatters--mhLir82-v41eaI4a.js";import{S as se,_ as ce,a as le,b as ue,c as de,d as fe,f as pe,g as me,h as he,i as ge,l as _e,m as ve,n as ye,o as be,p as xe,r as Se,s as c,t as Ce,u as we,v as Te,x as Ee,y as De}from"./FormattedTableCell-CV4yLuxl.js";var l,u,d;function f(){return(f=e((()=>{l=`hKghZt`,u=`QsLRvS`,d={selectedIndicatorCell:l,sentinel:u}})))()}function Oe(e,t){return String(t)}function p({title:e,isLoading:t,isFetching:n,data:r,columns:i,selectionMode:a=`none`,selectedRowIds:ee,getRowId:ne,className:o,minHeight:re,tableClassName:s,columnVisibility:ie,defaultColumnVisibility:oe,columnOrder:le,defaultColumnOrder:ue,columnSizing:fe,defaultColumnSizing:me,columnPinning:ge,defaultColumnPinning:_e,enableColumnResizing:ve=!1,enableColumnReordering:ye=!1,columnResizeMinWidth:c,onColumnVisibilityChange:De,onColumnOrderChange:l,onColumnSizingChange:u,onColumnPinningChange:f,onRowClick:p,onRowSelectionChange:g,onReachEnd:_,getRowCanSelect:v,getRowClassName:ke,renderHeaderContextMenu:Ae,renderCellContent:y}){let b=(0,m.useMemo)(()=>r??[],[r]),x=(0,m.useMemo)(()=>he(i),[i]),S=ne??Oe,C=(0,m.useMemo)(()=>new Map(b.map((e,t)=>[S(e,t),e])),[S,b]),w=(0,m.useMemo)(()=>Array.from(C.keys()),[C]),T=(0,m.useRef)(null),E=(0,m.useRef)(null),{rowSelection:D,activateRowSelection:O}=te({availableRowIds:w,rowById:C,selectionMode:a,selectedRowIds:ee,onRowSelectionChange:g}),{columnVisibility:k,onColumnVisibilityChange:A}=be({columnVisibility:ie,defaultColumnVisibility:oe,onColumnVisibilityChange:De}),{columnOrder:j,onColumnOrderChange:M}=pe({columnOrder:le,defaultColumnOrder:ue,onColumnOrderChange:l}),{columnSizing:N,onColumnSizingChange:je}=de({columnSizing:fe,defaultColumnSizing:me,columnResizeMinWidth:c,onColumnSizingChange:u}),{columnPinning:P,onColumnPinningChange:F}=we({columnPinning:ge,defaultColumnPinning:_e,onColumnPinningChange:f}),I=(0,m.useMemo)(()=>({columnOrder:j,columnPinning:P,columnSizing:N,columnVisibility:k}),[j,P,N,k]),L=(0,m.useEffectEvent)(()=>{_?.()});(0,m.useEffect)(()=>{if(!_||!T.current||!E.current||t)return;let e=new IntersectionObserver(e=>{e[0]?.isIntersecting&&L()},{root:T.current,threshold:.1});return e.observe(E.current),()=>e.disconnect()},[t,_,b.length]);let R=Ee({data:b,columns:i,state:{columnOrder:j,columnPinning:P,columnSizing:N,columnVisibility:k,rowSelection:D},onColumnOrderChange:M,onColumnPinningChange:F,onColumnSizingChange:je,onColumnVisibilityChange:A,getRowId:(e,t)=>S(e,t),getCoreRowModel:se(),enableMultiRowSelection:a===`multi`,enableRowSelection:e=>a===`none`?!1:!v||v(e.original)}),z=Te(R,I),B=R.getRowModel().rows,V=(0,m.useMemo)(()=>xe({rows:B,columns:z}),[B,z]),H=z[0]?.id;return(0,h.jsx)(Se,{table:R,columnState:I,title:e,isLoading:t,isFetching:n,className:o,minHeight:re,tableClassName:s,selectionMode:a,scrollableRef:T,onActivateRow:a!==`none`||p?e=>{O(e.id,e.getCanSelect()),p?.(e.original)}:void 0,isRowInteractive:e=>!!(p||a!==`none`&&e.getCanSelect()),getRowClassName:e=>ke?.(e.original),getCellClassName:({row:e,cell:t})=>t.column.id===H&&e.getIsSelected()?d.selectedIndicatorCell:void 0,getCellLayout:({cell:e})=>V.get(e.id),renderHeaderContextMenu:Ae,enableColumnResizing:ve,enableColumnReordering:ye,columnResizeMinWidth:c,renderCellContent:e=>{let t=ae({field:x.runtimeByColumnId[e.cell.column.id],rawValue:e.cell.getValue(),rowData:e.row.original,rowKind:`plain`}),n=ce({columnId:e.cell.column.id,runtimeByColumnId:x.runtimeByColumnId,customCellColumnIds:x.customCellColumnIds})?(0,h.jsx)(Ce,{displayValue:t,align:e.columnMeta?.align}):e.defaultContent;return y?y({...e,defaultContent:n,displayValue:t}):n},afterTableContent:_?(0,h.jsx)(`div`,{ref:E,className:d.sentinel,"aria-hidden":`true`}):null})}var m,h;function g(){return(g=e((()=>{m=n(),oe(),s(),ue(),ge(),ve(),me(),ye(),De(),fe(),_e(),c(),le(),f(),h=r(),p.__docgenInfo={description:"Плоская таблица на базе TanStack Table как React-альтернатива `sap.m.Table`.",methods:[],displayName:`Table`,props:{title:{required:!1,tsType:{name:`string`},description:`Необязательный заголовок над таблицей.`},isLoading:{required:!1,tsType:{name:`boolean`},description:`Признак первичной загрузки.`},isFetching:{required:!1,tsType:{name:`boolean`},description:`Признак фоновой догрузки или обновления данных.`},data:{required:!0,tsType:{name:`union`,raw:`readonly TData[] | undefined | null`,elements:[{name:`unknown`},{name:`undefined`},{name:`null`}]},description:`Плоский источник строк.`},columns:{required:!0,tsType:{name:`unknown`},description:`Описание колонок таблицы.`},selectionMode:{required:!1,tsType:{name:`TableSelectionMode`},description:`Режим выбора строк.`,defaultValue:{value:`"none"`,computed:!1}},selectedRowIds:{required:!1,tsType:{name:`unknown`},description:`Внешний список выбранных строк.
|
|
2
|
+
|
|
3
|
+
Если передан, таблица синхронизирует визуальное выделение с этим набором id.`},getRowId:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData, index: number) => string`,signature:{arguments:[{type:{name:`TData`},name:`row`},{type:{name:`number`},name:`index`}],return:{name:`string`}}},description:`Стабильный идентификатор строки.
|
|
4
|
+
|
|
5
|
+
Если не задан, используется индекс строки.`},className:{required:!1,tsType:{name:`string`},description:`Дополнительный CSS-класс корневого контейнера.`},minHeight:{required:!1,tsType:{name:`union`,raw:"`${number}em` | `${number}%`",elements:[{name:`literal`,value:"`${number}em`"},{name:`literal`,value:"`${number}%`"}]},description:``},tableClassName:{required:!1,tsType:{name:`string`},description:"Дополнительный CSS-класс тега `table`."},columnVisibility:{required:!1,tsType:{name:`VisibilityState`},description:`Внешнее controlled-состояние видимости колонок.`},defaultColumnVisibility:{required:!1,tsType:{name:`VisibilityState`},description:`Стартовое uncontrolled-состояние видимости колонок.`},columnOrder:{required:!1,tsType:{name:`unknown`},description:`Внешнее controlled-состояние порядка колонок.`},defaultColumnOrder:{required:!1,tsType:{name:`unknown`},description:`Стартовое uncontrolled-состояние порядка колонок.`},columnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Внешнее controlled-состояние ширин колонок в px.`},defaultColumnSizing:{required:!1,tsType:{name:`TableColumnSizingState`},description:`Стартовое uncontrolled-состояние ширин колонок в px.`},columnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Внешнее controlled-состояние left-pinning для колонок.`},defaultColumnPinning:{required:!1,tsType:{name:`TableColumnPinningState`},description:`Стартовое uncontrolled-состояние left-pinning для колонок.`},enableColumnResizing:{required:!1,tsType:{name:`boolean`},description:`Включает изменение ширины колонок через header-handle.`,defaultValue:{value:`false`,computed:!1}},enableColumnReordering:{required:!1,tsType:{name:`boolean`},description:`Включает изменение порядка колонок через drag&drop заголовков.`,defaultValue:{value:`false`,computed:!1}},columnResizeMinWidth:{required:!1,tsType:{name:`number`},description:`Минимальная ширина колонки при resize в px.`},onColumnVisibilityChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: VisibilityState) => void`,signature:{arguments:[{type:{name:`VisibilityState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения видимости колонок.`},onColumnOrderChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnOrderState) => void`,signature:{arguments:[{type:{name:`TableColumnOrderState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения порядка колонок.`},onColumnSizingChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnSizingState) => void`,signature:{arguments:[{type:{name:`TableColumnSizingState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения ширины колонок.`},onColumnPinningChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(state: TableColumnPinningState) => void`,signature:{arguments:[{type:{name:`TableColumnPinningState`},name:`state`}],return:{name:`void`}}},description:`Вызывается после изменения left-pinning state.`},onRowClick:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => void`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`void`}}},description:`Вызывается при активации строки кликом или клавиатурой.`},onRowSelectionChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(rows: TData[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TData`}],raw:`TData[]`},name:`rows`}],return:{name:`void`}}},description:`Вызывается после изменения выбранных строк.`},onReachEnd:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:`Вызывается при достижении конца таблицы внутри scroll-контейнера.`},getRowCanSelect:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => boolean`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`boolean`}}},description:`Позволяет запретить выбор отдельных строк.`},getRowClassName:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(row: TData) => string | undefined`,signature:{arguments:[{type:{name:`TData`},name:`row`}],return:{name:`union`,raw:`string | undefined`,elements:[{name:`string`},{name:`undefined`}]}}},description:`Позволяет добавить CSS-класс для конкретной строки.`},renderHeaderContextMenu:{required:!1,tsType:{name:`BaseTableProps["renderHeaderContextMenu"]`,raw:`BaseTableProps<TData>["renderHeaderContextMenu"]`},description:`Контекстное меню заголовка колонки. Используется для общих runtime-действий
|
|
6
|
+
вроде server sorting без встраивания доменной логики в shared-таблицу.`},renderCellContent:{required:!1,tsType:{name:`BaseTableProps["renderCellContent"]`,raw:`BaseTableProps<TData>["renderCellContent"]`},description:"Тонкая точка расширения содержимого ячейки поверх стандартного форматирования.\n\nВ отличие от `column.cell`, этот слот не отключает общий formatting-runtime:\n`defaultContent` уже содержит отформатированное значение, если оно применимо."}}}})))()}var _=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:()=>Me,default:()=>R});function v(){return{version:1,plan:{steps:[{id:`state`,type:`resolveValueState`,config:{resolver:{kind:`threshold`,thresholds:[100],states:[`success`,`warning`],invalidState:`none`},icon:{enabled:!0,showValue:!0,position:`right`}}},{id:`typed`,type:`typedValueFormat`}]}}}function ke(e){return[`odata`,`metadata`,{service:e}]}function Ae(){let{columns:e,metadata:t,isLoading:n}=o({service:P,target:F,mode:`build`});return(0,x.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,x.jsxs)(`div`,{children:[`Режим build: hook собрал `,e.length,` колонки из metadata`,t?` для сущности «${t.title}».`:`.`]}),(0,x.jsx)(p,{title:`useODataTableColumns: build`,data:E,columns:e,selectionMode:`none`,isLoading:n,getRowId:e=>e.id})]})}function y(){let{columns:e,metadata:t,isLoading:n}=o({service:P,target:F,mode:`enrich`,columns:N});return(0,x.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,x.jsxs)(`div`,{children:[`Режим enrich: hook сохранил ручные заголовки и дополнил formatting-контекст`,t?` из metadata «${t.title}».`:`.`]}),(0,x.jsx)(p,{title:`useODataTableColumns: enrich`,data:E,columns:e,selectionMode:`none`,isLoading:n,getRowId:e=>e.id})]})}var b,x,S,C,w,T,E,D,O,k,A,j,M,N,je,P,F,I,L,R,z,B,V,H,U,W,G,K,q,J,Y,X,Z,Q,$,Me;function Ne(){return(Ne=e((()=>{b=n(),re(),ee(),s(),i(),g(),x=r(),S=[{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:`Закрыта`}],C=[...S,{id:`6`,number:`450006`,client:`ОМК`,manager:`Елена Андреева`,amount:`680 000`,status:`Архив`,isLocked:!0}],w=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?`В работе`:`Согласование`})),T=[{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}}],E=[{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}],D=[{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:`Николай Орлов`}],O=[{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}}],k=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`purchasePrice`,accessorKey:`purchasePrice`,header:`Закупка`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`salePrice`,accessorKey:`salePrice`,header:`Продажа`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`}}},{id:`markup`,accessorFn:()=>void 0,header:`Наценка`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`,formulaId:`markup`,formulaDependencies:[`purchasePrice`,`salePrice`],purelyDerived:!0}}}],A=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`healthScore`,accessorKey:`healthScore`,header:`Индекс риска`,meta:{width:10,align:`right`,formatting:{role:`measure`,type:`decimal`,formattersPipeline:v()}}}],j=[{id:`product`,accessorKey:`product`,header:`Товар`,meta:{width:16}},{id:`pendingAmount`,accessorKey:`pendingAmount`,header:`Резерв`,meta:{width:9,align:`right`,formatting:{role:`measure`,type:`decimal`,emptyWhenZero:!0}}}],M=[{id:`product`,type:`string`,originalType:`Edm.String`,label:`Товар`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`createdAt`,type:`datetime`,originalType:`Edm.DateTime`,label:`Дата создания`,semanticType:`none`,sortable:!0,filterable:!0,role:`dimension`},{id:`totalAmount`,type:`decimal`,originalType:`Edm.Decimal`,label:`Сумма`,semanticType:`none`,sortable:!0,filterable:!0,role:`measure`}],N=[{id:`product`,accessorKey:`product`,header:`Позиция`,meta:{width:16}},{id:`createdAt`,accessorKey:`createdAt`,header:`Создано`,meta:{width:12}},{id:`totalAmount`,accessorKey:`totalAmount`,header:`Итог`,meta:{width:9,align:`right`}}],je=ne(N,M),P=`ZDEMO_DEALS_SRV`,F=`DealSet`,I={title:`Портфель сделок`,columns:M},L=(e,t)=>{let n=(0,b.useMemo)(()=>{let e=ie({}),n=t.parameters.odataService,r=t.parameters.odataEntity,i=t.parameters.odataMetadata;return n&&r&&i&&e.setQueryData(ke(n),{entities:{[r]:i},functionImports:{}}),e},[t.parameters.odataEntity,t.parameters.odataMetadata,t.parameters.odataService]);return(0,x.jsx)(a,{client:n,children:e()})},R={title:`Shared/UI/Table`,component:p,args:{title:`Сделки`,data:S,columns:T,getRowId:e=>e.id,selectionMode:`single`},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{data:{description:`Плоский источник данных.`,control:!1},columns:{description:`Колонки таблицы.`,control:!1},title:{description:`Заголовок таблицы.`,control:`text`},selectionMode:{description:`Режим выбора строк.`,control:`inline-radio`,options:[`none`,`single`,`multi`]},getRowId:{description:`Функция получения стабильного id строки.`,control:!1},columnPinning:{description:`Controlled-состояние закрепления колонок слева.`,control:!1},defaultColumnPinning:{description:`Стартовое uncontrolled-состояние закрепления колонок слева.`,control:!1},onColumnPinningChange:{description:`Вызывается после изменения закрепления колонок слева.`,control:!1},getRowCanSelect:{description:`Позволяет запретить выбор отдельных строк.`,control:!1},getRowClassName:{description:`Позволяет добавить CSS-класс для конкретной строки.`,control:!1},onRowClick:{description:`Вызывается при активации строки.`,control:!1},onRowSelectionChange:{description:`Вызывается после изменения выбранных строк.`,control:!1},onReachEnd:{description:`Вызывается при достижении конца списка внутри scroll-контейнера.`,control:!1},isLoading:{description:`Первичная загрузка таблицы.`,control:`boolean`},isFetching:{description:`Фоновое обновление уже загруженных данных.`,control:`boolean`}}},z={},B={render:e=>{let[t,n]=(0,b.useState)({left:[`number`]});return(0,x.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,x.jsxs)(`div`,{style:{display:`flex`,gap:`0.5em`,flexWrap:`wrap`},children:[(0,x.jsx)(`button`,{type:`button`,onClick:()=>n({left:[`number`]}),children:`Закрепить «Номер»`}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>n({left:[`number`,`client`]}),children:`Закрепить «Номер» и «Клиент»`}),(0,x.jsx)(`button`,{type:`button`,onClick:()=>n({left:[]}),children:`Снять закрепление`})]}),(0,x.jsxs)(`div`,{children:[`Закреплено слева: `,t.left?.length?t.left.join(`, `):`ничего`]}),(0,x.jsx)(p,{...e,columnPinning:t,onColumnPinningChange:n})]})}},V={render:e=>{let[t,n]=(0,b.useState)([]);return(0,x.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,x.jsxs)(`div`,{children:[`Выбрано: `,t.length>0?t.join(`, `):`ничего`]}),(0,x.jsx)(p,{...e,selectionMode:`multi`,onRowSelectionChange:e=>n(e.map(e=>e.number))})]})}},H={args:{data:C,selectionMode:`multi`,getRowCanSelect:e=>!e.isLocked},render:e=>{let[t,n]=(0,b.useState)([]);return(0,x.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,x.jsx)(`div`,{children:`Строка со статусом «Архив» остаётся видимой, но не участвует в выборе.`}),(0,x.jsxs)(`div`,{children:[`Выбрано: `,t.length>0?t.join(`, `):`ничего`]}),(0,x.jsx)(p,{...e,onRowSelectionChange:e=>n(e.map(e=>e.number))})]})}},U={args:{isFetching:!0}},W={args:{data:[]}},G={args:{data:w},render:e=>{let[t,n]=(0,b.useState)(0);return(0,x.jsxs)(`div`,{style:{display:`grid`,gap:`0.75em`},children:[(0,x.jsxs)(`div`,{children:[`Событие достижения конца: `,t]}),(0,x.jsx)(p,{...e,onReachEnd:()=>n(e=>e+1)})]})}},K={args:{isLoading:!0}},q={render:()=>(0,x.jsx)(p,{title:`Формула наценки`,data:E,columns:k,selectionMode:`none`,getRowId:e=>e.id})},J={render:()=>(0,x.jsx)(p,{title:`Pipeline форматирования`,data:E,columns:A,selectionMode:`none`,getRowId:e=>e.id})},Y={render:()=>(0,x.jsx)(p,{title:`Скрытие нулей`,data:E,columns:j,selectionMode:`none`,getRowId:e=>e.id})},X={render:()=>(0,x.jsx)(p,{title:`Слияние дубликатов`,data:D,columns:O,selectionMode:`none`,getRowId:e=>e.id})},Z={render:()=>(0,x.jsx)(p,{title:`OData metadata adapter`,data:E,columns:je,selectionMode:`none`,getRowId:e=>e.id})},Q={decorators:[L],parameters:{odataService:P,odataEntity:F,odataMetadata:I},render:()=>(0,x.jsx)(Ae,{})},$={decorators:[L],parameters:{odataService:P,odataEntity:F,odataMetadata:I},render:()=>(0,x.jsx)(y,{})},z.parameters={...z.parameters,docs:{...z.parameters?.docs,source:{originalSource:`{}`,...z.parameters?.docs?.source},description:{story:`Базовый сценарий плоской таблицы с одиночным выбором.`,...z.parameters?.docs?.description}}},B.parameters={...B.parameters,docs:{...B.parameters?.docs,source:{originalSource:`{
|
|
7
|
+
render: args => {
|
|
8
|
+
const [columnPinning, setColumnPinning] = useState<{
|
|
9
|
+
left?: string[];
|
|
10
|
+
}>({
|
|
11
|
+
left: ["number"]
|
|
12
|
+
});
|
|
13
|
+
return <div style={{
|
|
14
|
+
display: "grid",
|
|
15
|
+
gap: "0.75em"
|
|
16
|
+
}}>
|
|
17
|
+
<div style={{
|
|
18
|
+
display: "flex",
|
|
19
|
+
gap: "0.5em",
|
|
20
|
+
flexWrap: "wrap"
|
|
21
|
+
}}>
|
|
22
|
+
<button type="button" onClick={() => setColumnPinning({
|
|
23
|
+
left: ["number"]
|
|
24
|
+
})}>
|
|
25
|
+
Закрепить «Номер»
|
|
26
|
+
</button>
|
|
27
|
+
<button type="button" onClick={() => setColumnPinning({
|
|
28
|
+
left: ["number", "client"]
|
|
29
|
+
})}>
|
|
30
|
+
Закрепить «Номер» и «Клиент»
|
|
31
|
+
</button>
|
|
32
|
+
<button type="button" onClick={() => setColumnPinning({
|
|
33
|
+
left: []
|
|
34
|
+
})}>
|
|
35
|
+
Снять закрепление
|
|
36
|
+
</button>
|
|
37
|
+
</div>
|
|
38
|
+
<div>Закреплено слева: {columnPinning.left?.length ? columnPinning.left.join(", ") : "ничего"}</div>
|
|
39
|
+
<Table {...args} columnPinning={columnPinning} onColumnPinningChange={setColumnPinning} />
|
|
40
|
+
</div>;
|
|
41
|
+
}
|
|
42
|
+
}`,...B.parameters?.docs?.source},description:{story:`Демонстрирует controlled left-pinning через внешний story-state без встроенного UI таблицы.`,...B.parameters?.docs?.description}}},V.parameters={...V.parameters,docs:{...V.parameters?.docs,source:{originalSource:`{
|
|
43
|
+
render: args => {
|
|
44
|
+
const [selectedNumbers, setSelectedNumbers] = useState<string[]>([]);
|
|
45
|
+
return <div style={{
|
|
46
|
+
display: "grid",
|
|
47
|
+
gap: "0.75em"
|
|
48
|
+
}}>
|
|
49
|
+
<div>Выбрано: {selectedNumbers.length > 0 ? selectedNumbers.join(", ") : "ничего"}</div>
|
|
50
|
+
<Table {...args} selectionMode="multi" onRowSelectionChange={rows => setSelectedNumbers(rows.map(row => row.number))} />
|
|
51
|
+
</div>;
|
|
52
|
+
}
|
|
53
|
+
}`,...V.parameters?.docs?.source},description:{story:`Множественный выбор с отображением текущего результата.`,...V.parameters?.docs?.description}}},H.parameters={...H.parameters,docs:{...H.parameters?.docs,source:{originalSource:`{
|
|
54
|
+
args: {
|
|
55
|
+
data: nonSelectableRows,
|
|
56
|
+
selectionMode: "multi",
|
|
57
|
+
getRowCanSelect: row => !row.isLocked
|
|
58
|
+
},
|
|
59
|
+
render: args => {
|
|
60
|
+
const [selectedNumbers, setSelectedNumbers] = useState<string[]>([]);
|
|
61
|
+
return <div style={{
|
|
62
|
+
display: "grid",
|
|
63
|
+
gap: "0.75em"
|
|
64
|
+
}}>
|
|
65
|
+
<div>Строка со статусом «Архив» остаётся видимой, но не участвует в выборе.</div>
|
|
66
|
+
<div>Выбрано: {selectedNumbers.length > 0 ? selectedNumbers.join(", ") : "ничего"}</div>
|
|
67
|
+
<Table {...args} onRowSelectionChange={rows => setSelectedNumbers(rows.map(row => row.number))} />
|
|
68
|
+
</div>;
|
|
69
|
+
}
|
|
70
|
+
}`,...H.parameters?.docs?.source},description:{story:`Часть строк можно показать, но запретить выбирать.`,...H.parameters?.docs?.description}}},U.parameters={...U.parameters,docs:{...U.parameters?.docs,source:{originalSource:`{
|
|
71
|
+
args: {
|
|
72
|
+
isFetching: true
|
|
73
|
+
}
|
|
74
|
+
}`,...U.parameters?.docs?.source},description:{story:`Сценарий фонового обновления данных без очистки таблицы.`,...U.parameters?.docs?.description}}},W.parameters={...W.parameters,docs:{...W.parameters?.docs,source:{originalSource:`{
|
|
75
|
+
args: {
|
|
76
|
+
data: []
|
|
77
|
+
}
|
|
78
|
+
}`,...W.parameters?.docs?.source},description:{story:`Пустой источник данных.`,...W.parameters?.docs?.description}}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
|
|
79
|
+
args: {
|
|
80
|
+
data: reachEndRows
|
|
81
|
+
},
|
|
82
|
+
render: args => {
|
|
83
|
+
const [reachEndCount, setReachEndCount] = useState(0);
|
|
84
|
+
return <div style={{
|
|
85
|
+
display: "grid",
|
|
86
|
+
gap: "0.75em"
|
|
87
|
+
}}>
|
|
88
|
+
<div>Событие достижения конца: {reachEndCount}</div>
|
|
89
|
+
<Table {...args} onReachEnd={() => setReachEndCount(current => current + 1)} />
|
|
90
|
+
</div>;
|
|
91
|
+
}
|
|
92
|
+
}`,...G.parameters?.docs?.source},description:{story:`Демонстрация callback при достижении конца списка.`,...G.parameters?.docs?.description}}},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`{
|
|
93
|
+
args: {
|
|
94
|
+
isLoading: true
|
|
95
|
+
}
|
|
96
|
+
}`,...K.parameters?.docs?.source},description:{story:`Состояние первичной загрузки.`,...K.parameters?.docs?.description}}},q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`{
|
|
97
|
+
render: () => <Table title="Формула наценки" data={formattingRows} columns={formulaColumns} selectionMode="none" getRowId={row => row.id} />
|
|
98
|
+
}`,...q.parameters?.docs?.source},description:{story:"Сценарий с formula-based колонкой без кастомного `cell`.",...q.parameters?.docs?.description}}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`{
|
|
99
|
+
render: () => <Table title="Pipeline форматирования" data={formattingRows} columns={pipelineColumns} selectionMode="none" getRowId={row => row.id} />
|
|
100
|
+
}`,...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:`{
|
|
101
|
+
render: () => <Table title="Скрытие нулей" data={formattingRows} columns={hiddenZeroColumns} selectionMode="none" getRowId={row => row.id} />
|
|
102
|
+
}`,...Y.parameters?.docs?.source},description:{story:"Сценарий со скрытием нулевых значений через `emptyWhenZero`.",...Y.parameters?.docs?.description}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`{
|
|
103
|
+
render: () => <Table title="Слияние дубликатов" data={divisionMergeRows} columns={divisionMergeColumns} selectionMode="none" getRowId={row => row.id} />
|
|
104
|
+
}`,...X.parameters?.docs?.source},description:{story:`Сценарий со display-only слиянием подряд идущих дубликатов через пустые ячейки и CSS-склейку.`,...X.parameters?.docs?.description}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
|
|
105
|
+
render: () => <Table title="OData metadata adapter" data={formattingRows} columns={adapterColumns} selectionMode="none" getRowId={row => row.id} />
|
|
106
|
+
}`,...Z.parameters?.docs?.source},description:{story:`Сценарий со статическим OData metadata adapter в режиме enrich.`,...Z.parameters?.docs?.description}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`{
|
|
107
|
+
decorators: [withMockedHookODataMetadata],
|
|
108
|
+
parameters: {
|
|
109
|
+
odataService: HOOK_ODATA_SERVICE,
|
|
110
|
+
odataEntity: HOOK_ODATA_ENTITY,
|
|
111
|
+
odataMetadata: hookMetadata
|
|
112
|
+
},
|
|
113
|
+
render: () => <HookBuildTableStory />
|
|
114
|
+
}`,...Q.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме build.",...Q.parameters?.docs?.description}}},$.parameters={...$.parameters,docs:{...$.parameters?.docs,source:{originalSource:`{
|
|
115
|
+
decorators: [withMockedHookODataMetadata],
|
|
116
|
+
parameters: {
|
|
117
|
+
odataService: HOOK_ODATA_SERVICE,
|
|
118
|
+
odataEntity: HOOK_ODATA_ENTITY,
|
|
119
|
+
odataMetadata: hookMetadata
|
|
120
|
+
},
|
|
121
|
+
render: () => <HookEnrichTableStory />
|
|
122
|
+
}`,...$.parameters?.docs?.source},description:{story:"Реальный hook-сценарий `useODataTableColumns(...)` в режиме enrich.",...$.parameters?.docs?.description}}},Me=[`Basic`,`WithColumnPinning`,`MultiSelect`,`WithDisabledRows`,`Fetching`,`Empty`,`ReachEnd`,`Loading`,`WithFormulaColumn`,`WithFormattingPipeline`,`WithHiddenZero`,`WithMergedDuplicates`,`WithODataMetadataAdapter`,`WithUseODataTableColumnsBuildHook`,`WithUseODataTableColumnsEnrichHook`]})))()}export{Ne 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,_ as s,z as t,J as u};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`,(0,T.jsx)(
|
|
3
|
-
`,(0,T.jsx)(
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CrnMVMTc.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-Dz3dJBcm.js";import{a as f,c as p,d as m,i as h,l as g,n as _,o as v,r as y,s as b,t as x,u as S}from"./Tabs.stories-BC8LwG22.js";function C(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(s,{of:S,parameters:{docs:{toc:!0}}}),`
|
|
2
|
+
`,(0,T.jsx)(u,{children:`Tabs`}),`
|
|
3
|
+
`,(0,T.jsx)(o,{children:`Набор tabs-компонентов с разделением простого scroll-сценария и составного panel-layout сценария`}),`
|
|
4
4
|
`,(0,T.jsxs)(t.p,{children:[`После рефакторинга `,(0,T.jsx)(t.code,{children:`tabs`}),` разделены на два независимых сценария:`]}),`
|
|
5
5
|
`,(0,T.jsxs)(t.ul,{children:[`
|
|
6
6
|
`,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`TabsBox`}),` — простой items-based компонент, который сам управляет областью панели и её прокруткой.`]}),`
|
|
@@ -14,8 +14,8 @@ import{i as e}from"./preload-helper-B45gAKPr.js";import{t}from"./iframe-BJGIOdSH
|
|
|
14
14
|
`,(0,T.jsxs)(t.li,{children:[`Используй `,(0,T.jsx)(t.code,{children:`Tabs`}),` только для постепенной миграции существующего кода.`]}),`
|
|
15
15
|
`]}),`
|
|
16
16
|
`,(0,T.jsx)(t.h2,{id:`tabsbox`,children:`TabsBox`}),`
|
|
17
|
-
`,(0,T.jsx)(
|
|
18
|
-
`,(0,T.jsx)(
|
|
17
|
+
`,(0,T.jsx)(d,{of:x}),`
|
|
18
|
+
`,(0,T.jsx)(i,{of:x}),`
|
|
19
19
|
`,(0,T.jsx)(t.pre,{children:(0,T.jsx)(t.code,{className:`language-tsx`,children:`import { TabsBox, type TabsBoxItem } from "@/shared/ui";
|
|
20
20
|
|
|
21
21
|
const items: TabsBoxItem[] = [
|
|
@@ -29,14 +29,14 @@ export function Example() {
|
|
|
29
29
|
`})}),`
|
|
30
30
|
`,(0,T.jsxs)(t.p,{children:[(0,T.jsx)(t.code,{children:`TabsBox`}),` сохраняет встроенный padding панели, поддерживает `,(0,T.jsx)(t.code,{children:`loading`}),`/`,(0,T.jsx)(t.code,{children:`empty`}),` и остаётся подходящим дефолтом для модалок, карточек и классических вкладок с одним scroll-контейнером.`]}),`
|
|
31
31
|
`,(0,T.jsxs)(t.h3,{id:`сценарии-tabsbox`,children:[`Сценарии `,(0,T.jsx)(t.code,{children:`TabsBox`})]}),`
|
|
32
|
-
`,(0,T.jsx)(
|
|
33
|
-
`,(0,T.jsx)(
|
|
34
|
-
`,(0,T.jsx)(
|
|
35
|
-
`,(0,T.jsx)(
|
|
36
|
-
`,(0,T.jsx)(
|
|
37
|
-
`,(0,T.jsx)(
|
|
32
|
+
`,(0,T.jsx)(d,{of:_}),`
|
|
33
|
+
`,(0,T.jsx)(d,{of:h}),`
|
|
34
|
+
`,(0,T.jsx)(d,{of:y}),`
|
|
35
|
+
`,(0,T.jsx)(d,{of:f}),`
|
|
36
|
+
`,(0,T.jsx)(d,{of:g}),`
|
|
37
|
+
`,(0,T.jsx)(d,{of:v}),`
|
|
38
38
|
`,(0,T.jsx)(t.h2,{id:`tabslayout`,children:`TabsLayout`}),`
|
|
39
|
-
`,(0,T.jsx)(
|
|
39
|
+
`,(0,T.jsx)(d,{of:b}),`
|
|
40
40
|
`,(0,T.jsx)(t.pre,{children:(0,T.jsx)(t.code,{className:`language-tsx`,children:`import { Scrollable, TabsLayout } from "@/shared/ui";
|
|
41
41
|
|
|
42
42
|
export function Example() {
|
|
@@ -60,13 +60,13 @@ export function Example() {
|
|
|
60
60
|
`,(0,T.jsxs)(t.li,{children:[(0,T.jsx)(t.code,{children:`loading`}),` и `,(0,T.jsx)(t.code,{children:`empty`}),` состояния рендерятся снаружи вызывающим кодом.`]}),`
|
|
61
61
|
`]}),`
|
|
62
62
|
`,(0,T.jsx)(t.h2,{id:`deprecated-tabs`,children:`Deprecated Tabs`}),`
|
|
63
|
-
`,(0,T.jsx)(
|
|
63
|
+
`,(0,T.jsx)(d,{of:p}),`
|
|
64
64
|
`,(0,T.jsxs)(t.p,{children:[(0,T.jsx)(t.code,{children:`Tabs`}),` сохранён только для обратной совместимости. Семантика до/после:`]}),`
|
|
65
65
|
`,(0,T.jsxs)(t.ul,{children:[`
|
|
66
66
|
`,(0,T.jsx)(t.li,{children:`До: один публичный компонент пытался одновременно управлять и tabs-state, и layout панели, и scroll-сценариями.`}),`
|
|
67
67
|
`,(0,T.jsxs)(t.li,{children:[`После: `,(0,T.jsx)(t.code,{children:`Tabs`}),` остаётся тонким фасадом над `,(0,T.jsx)(t.code,{children:`TabsBox`}),`, а новые сценарии идут через отдельные `,(0,T.jsx)(t.code,{children:`TabsBox`}),` и `,(0,T.jsx)(t.code,{children:`TabsLayout`}),`.`]}),`
|
|
68
68
|
`]}),`
|
|
69
69
|
`,(0,T.jsx)(t.h2,{id:`api`,children:`API`}),`
|
|
70
|
-
`,(0,T.jsx)(
|
|
70
|
+
`,(0,T.jsx)(l,{of:S}),`
|
|
71
71
|
`,(0,T.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
|
|
72
|
-
`,(0,T.jsx)(
|
|
72
|
+
`,(0,T.jsx)(a,{includePrimary:!1})]})}function w(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,T.jsx)(t,{...e,children:(0,T.jsx)(C,{...e})}):C(e)}var T;function E(){return(E=e((()=>{T=t(),r(),c(),m()})))()}E();export{w as default};
|
|
@@ -0,0 +1,58 @@
|
|
|
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-CrnMVMTc.js";import{a,i as o,o as ee}from"./utils-DUM89eIj.js";import{i as s,n as c,r as l,t as u}from"./NoData-Fm23iF4n.js";import{n as d,t as f}from"./OneStepScroller-CH6K7wiO.js";import{n as p,t as m}from"./Scrollable-3Z6b5g0Z.js";function h(e){return e.find(e=>!e.disabled)?.id??null}function g(e,t){return t?e.find(e=>e.id===t&&!e.disabled)?.id??h(e):h(e)}function _(e){return e.filter(e=>!e.disabled)}function te({mountStrategy:e,isSelected:t,isVisited:n}){return e===`keep-mounted`||t||e===`lazy`&&n}function v({items:e,value:t,defaultValue:n,onValueChange:r,orientation:i=`horizontal`,activationMode:a=`automatic`,loop:o=!0}){let s=t!==void 0,c=(0,y.useMemo)(()=>_(e),[e]),l=c[0]?.id??null,[u,d]=(0,y.useState)(()=>g(e,n)),[f,p]=(0,y.useState)(()=>g(e,t??n)),m=g(e,t??n),[h,te]=(0,y.useState)(()=>m?new Set([m]):new Set),v=(0,y.useId)(),b=(0,y.useRef)({}),x=g(e,s?t:u),S=g(e,f)??x??l,C=(0,y.useMemo)(()=>{if(!x||h.has(x))return h;let e=new Set(h);return e.add(x),e},[x,h]),w=t=>{let n=g(e,t);n&&(te(e=>{if(e.has(n))return e;let t=new Set(e);return t.add(n),t}),s||d(n),r?.(n))},T=e=>{b.current[e]?.focus()},ne=e=>{if(c.length<2)return;let t=Math.max(0,c.findIndex(e=>e.id===(S??x??l))),n=ee({currentIndex:t,itemCount:c.length,key:e.key,orientation:i,wrap:o});if(n===null)return;e.preventDefault();let r=c[n]?.id;r&&(p(r),T(r),a===`automatic`&&w(r))},re=e=>{let t=e.relatedTarget;t instanceof Node&&e.currentTarget.contains(t)||p(x??l)},E=e=>`${v}-tab-${e}`,D=e=>`${v}-panel-${e}`;return{activationMode:a,orientation:i,selectedTabId:x,tabbableTabId:S,onTabListKeyDown:ne,onTabListBlur:re,getTabElementId:E,getPanelElementId:D,getTabButtonProps:e=>{let t=e.id===x,n=e.id===S;return{ref:t=>{b.current[e.id]=t},type:`button`,role:`tab`,id:E(e.id),disabled:e.disabled,"aria-selected":t,"aria-controls":D(e.id),"aria-disabled":e.disabled||void 0,tabIndex:e.disabled?-1:n?0:-1,onFocus:()=>p(e.id),onClick:()=>w(e.id)}},isVisited:e=>C.has(e)}}var y;function b(){return(b=e((()=>{y=r(),o()})))()}var x,S,C,w,T,ne,re,E,D,ie,ae,oe,se,ce,le,ue,O;function k(){return(k=e((()=>{x=`pcMjuj`,S=`ITP5v-`,C=`kzs94N`,w=`ZSAoAa`,T=`psYhsZ`,ne=`mNDq9-`,re=`g156KO`,E=`C2mO1e`,D=`_28F3fs`,ie=`UKZXTZ`,ae=`jiTafe`,oe=`nhD0k7`,se=`G8FICe`,ce=`W50XHh`,le=`vnjXkU`,ue=`Nzvfhw`,O={tabsContainer:x,bordered:S,cleanPanel:C,tabs:w,panels:T,horizontal:ne,vertical:re,panelScrollable:E,tab:D,selected:ie,panel:ae,panelBody:oe,layoutPanels:se,layoutPanel:ce,layoutSection:le,layoutContent:ue}})))()}function de({containerClassName:e,tabListClassName:t,panelsClassName:n,panelClassName:r,panelBodyClassName:i,loadingText:o}){return(0,A.jsxs)(`div`,{className:e,children:[(0,A.jsx)(`div`,{className:t,"aria-hidden":`true`,children:(0,A.jsx)(`button`,{type:`button`,disabled:!0,"data-disabled":``,className:a(O.tab,`skeletonLine`),children:`Загрузка...`})}),(0,A.jsx)(`div`,{className:n,"aria-busy":`true`,children:(0,A.jsx)(`div`,{className:r,children:(0,A.jsx)(`div`,{className:i,children:(0,A.jsx)(l,{text:o,className:`radiusSm`})})})})]})}var A;function fe(){return(fe=e((()=>{o(),s(),k(),A=i(),de.__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 pe({containerClassName:e,panelsClassName:t,panelClassName:n,panelBodyClassName:r}){return(0,j.jsx)(`div`,{className:e,children:(0,j.jsx)(`div`,{className:t,children:(0,j.jsx)(`div`,{className:n,children:(0,j.jsx)(`div`,{className:r,children:(0,j.jsx)(u,{className:`radiusSm`})})})})})}var j;function me(){return(me=e((()=>{c(),j=i(),pe.__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 he({tabId:e,isSelected:t,className:n,getTabElementId:r,getPanelElementId:i,children:a}){return(0,ge.jsx)(`div`,{role:`tabpanel`,id:i(e),"aria-labelledby":r(e),hidden:!t,className:n,children:a})}var ge;function _e(){return(_e=e((()=>{r(),ge=i(),he.__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 ve({items:e,state:t,className:n,ariaLabel:r,ariaLabelledBy:i}){return(0,M.jsx)(`div`,{className:n,role:`tablist`,"aria-orientation":t.orientation,"aria-label":r,"aria-labelledby":i,onKeyDown:t.onTabListKeyDown,onBlur:t.onTabListBlur,children:(e=>t.orientation===`horizontal`?(0,M.jsx)(f,{children:e}):(0,M.jsx)(M.Fragment,{children:e}))(e.map(e=>(0,M.jsx)(`button`,{...t.getTabButtonProps(e),"data-ui":`tabs-tab`,"data-action":`select-tab`,className:a(O.tab,`textWrap`,e.id===t.selectedTabId&&O.selected),children:e.title},e.id)))})}var M;function ye(){return(ye=e((()=>{o(),d(),k(),M=i(),ve.__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 N({items:e,value:t,defaultValue:n,onValueChange:r,className:i,isLoading:o,loadingText:ee,cleanPanel:s,bordered:c=!1,orientation:l=`horizontal`,activationMode:u=`automatic`,mountStrategy:d=`unmount`,loop:f=!0,"aria-label":p,"aria-labelledby":m}){let h=v({items:e,value:t,defaultValue:n,onValueChange:r,orientation:l,activationMode:u,loop:f}),g=a(O.tabsContainer,O[l],c&&O.bordered,s&&O.cleanPanel,i),_=O.tabs,y=a(O.panels,O.panelScrollable,`scrollable overscroll`),b=O.panel,x=O.panelBody;return o?(0,P.jsx)(de,{containerClassName:g,tabListClassName:_,panelsClassName:y,panelClassName:b,panelBodyClassName:x,loadingText:ee}):e.length?(0,P.jsxs)(`div`,{className:g,children:[(0,P.jsx)(ve,{items:e,state:h,className:_,ariaLabel:p,ariaLabelledBy:m}),(0,P.jsx)(`div`,{className:y,children:e.map(e=>{let t=e.id===h.selectedTabId;return te({mountStrategy:d,isSelected:t,isVisited:h.isVisited(e.id)})?(0,P.jsx)(he,{tabId:e.id,isSelected:t,className:b,getTabElementId:h.getTabElementId,getPanelElementId:h.getPanelElementId,children:(0,P.jsx)(`div`,{className:x,children:e.content})},e.id):null})})]}):(0,P.jsx)(pe,{containerClassName:g,panelsClassName:y,panelClassName:b,panelBodyClassName:x})}var P;function be(){return(be=e((()=>{o(),b(),k(),fe(),me(),_e(),ye(),P=i(),N.__docgenInfo={description:`Простой items-based tabs-компонент.
|
|
2
|
+
Сам управляет областью панели и её прокруткой.`,methods:[],displayName:`TabsBox`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"automatic"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"unmount"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},cleanPanel:{required:!1,tsType:{name:`boolean`},description:``},bordered:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`false`,computed:!1}},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsBoxItem`}],raw:`TabsBoxItem[]`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``}}}})))()}function xe({onChange:e,onValueChange:t,...n}){return(0,Se.jsx)(N,{...n,onValueChange:n=>{t?.(n),e?.(n)}})}var Se;function Ce(){return(Ce=e((()=>{be(),Se=i(),xe.__docgenInfo={description:"@deprecated Используйте `TabsBox` для простого сценария и `TabsLayout` для составных layout-сценариев.",methods:[],displayName:`Tabs`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``},loop:{required:!1,tsType:{name:`boolean`},description:``},cleanPanel:{required:!1,tsType:{name:`boolean`},description:``},bordered:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TabsBoxItem`}],raw:`TabsBoxItem[]`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``},loadingText:{required:!1,tsType:{name:`string`},description:``},onChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``}}}})))()}function we(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 F(e,t){return(0,I.isValidElement)(e)&&we(e)===t}function Te({children:e}){return(0,L.jsx)(L.Fragment,{children:e})}function Ee({children:e}){return(0,L.jsx)(L.Fragment,{children:e})}function De({children:e}){return(0,L.jsx)(L.Fragment,{children:e})}function Oe({children:e}){return(0,L.jsx)(L.Fragment,{children:e})}function ke(e,t){let n=null,r=null,i=null;for(let a of I.Children.toArray(e)){if(!(0,I.isValidElement)(a))throw Error(`TabsLayout.Tab "${t}" поддерживает только дочерние элементы TabsLayout.Toolbar, TabsLayout.Content и TabsLayout.Footer.`);if(F(a,Me)){if(n)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Toolbar.`);n=a.props;continue}if(F(a,Ne)){if(r)throw Error(`TabsLayout.Tab "${t}" содержит более одного блока TabsLayout.Content.`);r=a.props;continue}if(F(a,Pe)){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 Ae(e){return I.Children.toArray(e).map(e=>{if(!F(e,je))throw Error(`TabsLayout принимает только дочерние элементы TabsLayout.Tab.`);return{id:e.props.id,title:e.props.title,disabled:e.props.disabled,...ke(e.props.children,e.props.id)}})}var I,L,je,Me,Ne,Pe,R,z;function Fe(){return(Fe=e((()=>{I=t(r(),1),o(),b(),k(),_e(),ye(),L=i(),je=`TabsLayout.Tab`,Me=`TabsLayout.Toolbar`,Ne=`TabsLayout.Content`,Pe=`TabsLayout.Footer`,Te.displayName=je,Ee.displayName=Me,De.displayName=Ne,Oe.displayName=Pe,R=({children:e,value:t,defaultValue:n,onValueChange:r,className:i,bordered:o,cleanPanel:ee,orientation:s=`horizontal`,activationMode:c=`manual`,mountStrategy:l=`lazy`,loop:u=!0,"aria-label":d,"aria-labelledby":f})=>{let p=(0,I.useMemo)(()=>Ae(e),[e]),m=v({items:p,value:t,defaultValue:n,onValueChange:r,orientation:s,activationMode:c,loop:u}),h=a(O.tabsContainer,O[s],o&&O.bordered,ee&&O.cleanPanel,i),g=a(O.panels,O.layoutPanels);return(0,L.jsxs)(`div`,{className:h,children:[(0,L.jsx)(ve,{items:p,state:m,className:O.tabs,ariaLabel:d,ariaLabelledBy:f}),(0,L.jsx)(`div`,{className:g,children:p.map(e=>{let t=e.id===m.selectedTabId;if(!te({mountStrategy:l,isSelected:t,isVisited:m.isVisited(e.id)}))return null;let n=`${e.toolbar?`auto `:``}minmax(0, 1fr)${e.footer?` auto`:``}`;return(0,L.jsx)(he,{tabId:e.id,isSelected:t,className:O.panel,getTabElementId:m.getTabElementId,getPanelElementId:m.getPanelElementId,children:(0,L.jsxs)(`div`,{className:O.layoutPanel,style:{gridTemplateRows:n},children:[e.toolbar?(0,L.jsx)(`div`,{className:a(O.layoutSection,e.toolbar.className),children:e.toolbar.children}):null,(0,L.jsx)(`div`,{className:a(O.layoutSection,O.layoutContent,e.content.className),children:e.content.children}),e.footer?(0,L.jsx)(`div`,{className:a(O.layoutSection,e.footer.className),children:e.footer.children}):null]})},e.id)})})]})},R.displayName=`TabsLayout`,z=Object.assign(R,{Tab:Te,Toolbar:Ee,Content:De,Footer:Oe}),R.__docgenInfo={description:`Compound-оболочка tabs для составных panel-layout сценариев.
|
|
3
|
+
Сам компонент управляет только переключением и каркасом панели.`,methods:[],displayName:`TabsLayout`,props:{value:{required:!1,tsType:{name:`string`},description:``},defaultValue:{required:!1,tsType:{name:`string`},description:``},onValueChange:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},orientation:{required:!1,tsType:{name:`union`,raw:`"horizontal" | "vertical"`,elements:[{name:`literal`,value:`"horizontal"`},{name:`literal`,value:`"vertical"`}]},description:``,defaultValue:{value:`"horizontal"`,computed:!1}},activationMode:{required:!1,tsType:{name:`union`,raw:`"automatic" | "manual"`,elements:[{name:`literal`,value:`"automatic"`},{name:`literal`,value:`"manual"`}]},description:``,defaultValue:{value:`"manual"`,computed:!1}},mountStrategy:{required:!1,tsType:{name:`union`,raw:`"unmount" | "lazy" | "keep-mounted"`,elements:[{name:`literal`,value:`"unmount"`},{name:`literal`,value:`"lazy"`},{name:`literal`,value:`"keep-mounted"`}]},description:``,defaultValue:{value:`"lazy"`,computed:!1}},loop:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},cleanPanel:{required:!1,tsType:{name:`boolean`},description:``},bordered:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},"aria-label":{required:!1,tsType:{name:`string`},description:``},"aria-labelledby":{required:!1,tsType:{name:`string`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``}}}})))()}var Ie=n({BoxBasic:()=>G,BoxControlled:()=>K,BoxMountStrategies:()=>J,BoxVertical:()=>q,DisabledTabs:()=>Y,Empty:()=>$,LayoutPanels:()=>X,LegacyTabs:()=>Z,Loading:()=>Q,__namedExportsOrder:()=>He,default:()=>Ve});function Le({label:e}){let[t,n]=(0,B.useState)(0);return(0,V.jsxs)(`div`,{style:H,children:[(0,V.jsxs)(`div`,{children:[`Панель: `,e]}),(0,V.jsxs)(`div`,{children:[`Локальный счётчик: `,t]}),(0,V.jsx)(`button`,{type:`button`,onClick:()=>n(e=>e+1),children:`Увеличить`})]})}function Re(){let[e,t]=(0,B.useState)(`details`);return(0,V.jsx)(`div`,{style:{height:360},children:(0,V.jsxs)(z,{value:e,onValueChange:t,bordered:!0,"aria-label":`Составные панели документа`,children:[(0,V.jsxs)(z.Tab,{id:`details`,title:`Детали`,children:[(0,V.jsx)(z.Toolbar,{children:(0,V.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Панель инструментов вне scroll-области.`})}),(0,V.jsx)(z.Content,{children:(0,V.jsxs)(`div`,{style:{display:`grid`,gridTemplateColumns:`1fr 1fr`,gap:12,height:`100%`},children:[(0,V.jsx)(m,{className:`surface0 border radiusSm paddingSm h100`,children:W.map(e=>(0,V.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Левая колонка: `,e]},`left-${e}`))}),(0,V.jsx)(m,{className:`surface0 border radiusSm paddingSm h100`,children:W.map(e=>(0,V.jsxs)(`div`,{className:`paddingBlockXs`,children:[`Правая колонка: `,e]},`right-${e}`))})]})}),(0,V.jsx)(z.Footer,{children:(0,V.jsx)(`div`,{className:`surface0 border radiusSm paddingSm`,children:`Футер тоже исключён из scroll-контента.`})})]}),(0,V.jsx)(z.Tab,{id:`history`,title:`История`,children:(0,V.jsx)(z.Content,{children:(0,V.jsx)(m,{className:`surface0 border radiusSm paddingSm h100`,children:W.map(e=>(0,V.jsxs)(`div`,{className:`paddingBlockXs`,children:[`История изменения: `,e]},`history-${e}`))})})})]})})}var B,V,H,U,ze,Be,W,Ve,G,K,q,J,Y,X,Z,Q,$,He;function Ue(){return(Ue=e((()=>{B=r(),Ce(),be(),Fe(),p(),V=i(),H={padding:16,display:`grid`,gap:12},U=[{id:`profile`,title:`Профиль`,content:(0,V.jsx)(`div`,{style:H,children:`Карточка пользователя и основные поля профиля.`})},{id:`settings`,title:`Настройки`,content:(0,V.jsx)(`div`,{style:H,children:`Параметры интерфейса, уведомлений и доступа.`})},{id:`history`,title:`История`,content:(0,V.jsx)(`div`,{style:H,children:`Последние действия, комментарии и изменения.`})}],ze=[{id:`first`,title:`Первая`,content:(0,V.jsx)(Le,{label:`Первая`})},{id:`second`,title:`Вторая`,content:(0,V.jsx)(Le,{label:`Вторая`})},{id:`third`,title:`Третья`,content:(0,V.jsx)(Le,{label:`Третья`})}],Be=[{id:`overview`,title:`Обзор`,content:(0,V.jsx)(`div`,{style:H,children:`Раздел доступен сразу.`})},{id:`analytics`,title:`Аналитика`,disabled:!0,content:(0,V.jsx)(`div`,{style:H,children:`Пока недоступно.`})},{id:`history`,title:`История`,content:(0,V.jsx)(`div`,{style:H,children:`История изменений и действий.`})}],W=Array.from({length:12},(e,t)=>`Элемент ${t+1}`),Ve={title:`Shared/UI/Tabs`,component:N,args:{items:U,orientation:`horizontal`,activationMode:`automatic`,mountStrategy:`unmount`,isLoading:!1,loadingText:`Загрузка вкладок...`,bordered:!1,loop:!0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{items:{description:"Набор вкладок для `TabsBox`. Каждая вкладка задаётся через `id`, `title`, `content` и опциональный `disabled`.",control:!1},value:{description:`Активная вкладка в controlled-режиме.`,control:`text`},defaultValue:{description:`Начальная вкладка в uncontrolled-режиме.`,control:`text`},onValueChange:{description:`Вызывается при смене активной вкладки.`,control:!1},orientation:{description:`Направление списка вкладок.`,control:`inline-radio`,options:[`horizontal`,`vertical`]},activationMode:{description:"Режим клавиатурной активации: `automatic` меняет вкладку стрелками, `manual` только переводит фокус.",control:`inline-radio`,options:[`automatic`,`manual`]},mountStrategy:{description:"Политика монтирования панелей: `unmount`, `lazy` или `keep-mounted`.",control:`inline-radio`,options:[`unmount`,`lazy`,`keep-mounted`]},bordered:{description:`Добавляет рамку вокруг области панелей.`,control:`boolean`},loop:{description:`Разрешает циклическую навигацию стрелками и Home/End.`,control:`boolean`},className:{description:`Дополнительный CSS-класс корневого контейнера.`,control:`text`},isLoading:{description:"Показывает loading-состояние `TabsBox`.",control:`boolean`},loadingText:{description:`Текст внутри loading-состояния.`,control:`text`},"aria-label":{description:"Текстовая подпись для `tablist`, если рядом нет видимого заголовка.",control:`text`},"aria-labelledby":{description:"Ссылка на внешний заголовок `tablist`.",control:`text`}}},G={args:{"aria-label":`Основные разделы профиля`}},K={render:e=>{let[t,n]=(0,B.useState)(`settings`);return(0,V.jsx)(N,{...e,value:t,onValueChange:n})},args:{value:`settings`,"aria-label":`Управляемые вкладки`}},q={render:e=>(0,V.jsx)(`div`,{style:{height:320},children:(0,V.jsx)(N,{...e})}),args:{orientation:`vertical`,bordered:!0,"aria-label":`Вертикальные вкладки`}},J={render:e=>(0,V.jsx)(N,{...e,items:ze}),args:{mountStrategy:`lazy`,"aria-label":`Демонстрация стратегий монтирования`}},Y={args:{items:Be,"aria-label":`Вкладки с недоступным разделом`}},X={render:()=>(0,V.jsx)(Re,{})},Z={render:e=>(0,V.jsx)(xe,{...e,items:U,"aria-label":`Устаревший совместимый API`}),parameters:{docs:{description:{story:"Совместимый фасад поверх `TabsBox`. Новый функционал добавляется только в `TabsBox` и `TabsLayout`."}}}},Q={args:{isLoading:!0,items:U}},$={args:{items:[]}},G.parameters={...G.parameters,docs:{...G.parameters?.docs,source:{originalSource:`{
|
|
4
|
+
args: {
|
|
5
|
+
"aria-label": "Основные разделы профиля"
|
|
6
|
+
}
|
|
7
|
+
}`,...G.parameters?.docs?.source}}},K.parameters={...K.parameters,docs:{...K.parameters?.docs,source:{originalSource:`{
|
|
8
|
+
render: args => {
|
|
9
|
+
const [value, setValue] = useState("settings");
|
|
10
|
+
return <TabsBox {...args} value={value} onValueChange={setValue} />;
|
|
11
|
+
},
|
|
12
|
+
args: {
|
|
13
|
+
value: "settings",
|
|
14
|
+
"aria-label": "Управляемые вкладки"
|
|
15
|
+
}
|
|
16
|
+
}`,...K.parameters?.docs?.source}}},q.parameters={...q.parameters,docs:{...q.parameters?.docs,source:{originalSource:`{
|
|
17
|
+
render: args => <div style={{
|
|
18
|
+
height: 320
|
|
19
|
+
}}>
|
|
20
|
+
<TabsBox {...args} />
|
|
21
|
+
</div>,
|
|
22
|
+
args: {
|
|
23
|
+
orientation: "vertical",
|
|
24
|
+
bordered: true,
|
|
25
|
+
"aria-label": "Вертикальные вкладки"
|
|
26
|
+
}
|
|
27
|
+
}`,...q.parameters?.docs?.source}}},J.parameters={...J.parameters,docs:{...J.parameters?.docs,source:{originalSource:`{
|
|
28
|
+
render: args => <TabsBox {...args} items={lifecycleItems} />,
|
|
29
|
+
args: {
|
|
30
|
+
mountStrategy: "lazy",
|
|
31
|
+
"aria-label": "Демонстрация стратегий монтирования"
|
|
32
|
+
}
|
|
33
|
+
}`,...J.parameters?.docs?.source}}},Y.parameters={...Y.parameters,docs:{...Y.parameters?.docs,source:{originalSource:`{
|
|
34
|
+
args: {
|
|
35
|
+
items: disabledItems,
|
|
36
|
+
"aria-label": "Вкладки с недоступным разделом"
|
|
37
|
+
}
|
|
38
|
+
}`,...Y.parameters?.docs?.source}}},X.parameters={...X.parameters,docs:{...X.parameters?.docs,source:{originalSource:`{
|
|
39
|
+
render: () => <LayoutStory />
|
|
40
|
+
}`,...X.parameters?.docs?.source}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
|
|
41
|
+
render: args => <Tabs {...args} items={demoItems} aria-label="Устаревший совместимый API" />,
|
|
42
|
+
parameters: {
|
|
43
|
+
docs: {
|
|
44
|
+
description: {
|
|
45
|
+
story: "Совместимый фасад поверх \`TabsBox\`. Новый функционал добавляется только в \`TabsBox\` и \`TabsLayout\`."
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}`,...Z.parameters?.docs?.source}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`{
|
|
50
|
+
args: {
|
|
51
|
+
isLoading: true,
|
|
52
|
+
items: demoItems
|
|
53
|
+
}
|
|
54
|
+
}`,...Q.parameters?.docs?.source}}},$.parameters={...$.parameters,docs:{...$.parameters?.docs,source:{originalSource:`{
|
|
55
|
+
args: {
|
|
56
|
+
items: []
|
|
57
|
+
}
|
|
58
|
+
}`,...$.parameters?.docs?.source}}},He=[`BoxBasic`,`BoxControlled`,`BoxVertical`,`BoxMountStrategies`,`DisabledTabs`,`LayoutPanels`,`LegacyTabs`,`Loading`,`Empty`]})))()}export{Y as a,Z as c,Ue as d,q as i,Q as l,K as n,$ as o,J as r,X as s,G as t,Ie as u};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./x-CyFk00QC.js";import{n as i}from"./iframe-CrnMVMTc.js";import{a,i as o}from"./utils-DUM89eIj.js";import{n as s,t as c}from"./ui.module-DoMIk8Oc.js";import{c as l,l as u,o as ee,u as te}from"./Input-DtOsW7ur.js";function d(...e){return e.filter(Boolean).join(` `)||void 0}function f(e){return e.trim()}function ne(e){return e}function re(e){return`Удалить тег «${e}»`}var p,m,h,g,_,v,y;function b(){return(b=e((()=>{p=`AoFB3K`,m=`PvaUEA`,h=`FZ-xEM`,g=`-RCqfG`,_=`ggY643`,v=`hiZq-y`,y={control:p,tagList:m,tag:h,tagText:g,removeButton:_,input:v}})))()}function x({ref:e,value:t,onChange:n,label:i,description:o,placeholder:c,size:l,disabled:u,readOnly:p=!1,error:m,onClearError:h,maxTags:g,normalizeTag:_=f,getTagKey:v=ne,addOnBlur:b=!0,getRemoveButtonAriaLabel:x=re,tokensAriaLabel:E=`Добавленные теги`,inputClassName:D,className:O,id:k,name:A,form:j,required:M,maxLength:N,onKeyDown:P,onPaste:F,onBlur:I,onCompositionStart:L,onCompositionEnd:R,"aria-describedby":z,"aria-labelledby":B,...ie}){let V=(0,S.useRef)(null),H=(0,S.useRef)(null),U=(0,S.useRef)(!1),[W,G]=(0,S.useState)(``),[ae,K]=(0,S.useState)(``),{controlId:q,labelId:J,descriptionId:oe,errorId:se,describedBy:ce}=te({id:k,hasLabel:i!=null,hasDescription:!!o,hasError:!!m}),Y=g===void 0?1/0:Math.max(0,Math.floor(g)),X=u||p,le=d(ce,z),ue=d(J,B);(0,S.useImperativeHandle)(e,()=>{let e=V.current;if(!e)throw Error(`TagInput: внутренний input недоступен при создании imperative handle.`);return e},[]);let Z=e=>{if(X)return;h?.();let r=[...t],i=new Set(r.map(e=>v(e))),a=[],o=0,s=!1;for(let t of e){let e=_(t);if(!e)continue;if(N!==void 0&&e.length>N){K(`Тег «${e}» длиннее допустимого значения.`);continue}let n=v(e);if(i.has(n)){o+=1;continue}if(r.length>=Y){s=!0;break}i.add(n),r.push(e),a.push(e)}a.length>0?(n(r),K(a.length===1?`Добавлен тег «${a[0]}».`:`Добавлено тегов: ${a.length}.`)):s?K(`Достигнуто максимальное количество тегов: ${Y}.`):o>0&&K(`Такой тег уже добавлен.`)},Q=()=>W?(Z(W.split(T)),G(``),!0):!1,$=e=>{if(X)return;let r=t[e];r!==void 0&&(n(t.filter((t,n)=>n!==e)),h?.(),K(`Удалён тег «${r}».`),V.current?.focus())},de=e=>{if(P?.(e),!(e.defaultPrevented||e.nativeEvent.isComposing||U.current||X)){if(e.key===`Enter`||e.key===`,`){(Q()||e.key===`,`)&&e.preventDefault();return}e.key===`Backspace`&&W.length===0&&t.length>0&&(e.preventDefault(),$(t.length-1))}},fe=e=>{if(F?.(e),e.defaultPrevented||X)return;let t=e.clipboardData.getData(`text`);if(!w.test(t))return;e.preventDefault();let n=e.currentTarget.selectionStart??W.length,r=e.currentTarget.selectionEnd??n,i=`${W.slice(0,n)}${t}${W.slice(r)}`;Z(i.split(T)),G(``)};return(0,C.jsxs)(ee,{label:i,description:o,disabled:u,className:O,size:l,error:m,controlId:q,labelId:J,descriptionId:oe,errorId:se,children:[(0,C.jsxs)(`div`,{ref:H,className:a(s.uiControl,m&&s.invalid,y.control),"data-disabled":u?``:void 0,"data-readonly":p?``:void 0,"data-invalid":m?``:void 0,onClick:()=>V.current?.focus(),children:[t.length>0&&(0,C.jsx)(`ul`,{className:y.tagList,"aria-label":E,children:t.map((e,t)=>(0,C.jsxs)(`li`,{className:y.tag,children:[(0,C.jsx)(`span`,{className:y.tagText,children:e}),!X&&(0,C.jsx)(`button`,{type:`button`,className:y.removeButton,onClick:e=>{e.stopPropagation(),$(t)},"aria-label":x(e,t),children:(0,C.jsx)(r,{"aria-hidden":`true`})})]},`${v(e)}-${t}`))}),(0,C.jsx)(`input`,{...ie,ref:V,id:q,form:j,disabled:u,readOnly:p,required:M&&t.length===0,maxLength:N,value:W,placeholder:t.length===0?c:void 0,"aria-invalid":!!m||void 0,"aria-labelledby":ue,"aria-describedby":le,className:a(y.input,D),onChange:e=>{let t=e.target.value,n=w.test(t);if(U.current)G(t);else if(n){let e=t.split(T),n=w.test(t.at(-1)??``)?``:e.pop()??``;Z(e),G(n)}else G(t);(U.current||!n)&&h?.()},onKeyDown:de,onPaste:fe,onCompositionStart:e=>{U.current=!0,L?.(e)},onCompositionEnd:e=>{U.current=!1,R?.(e)},onBlur:e=>{I?.(e);let t=e.relatedTarget,n=t instanceof Node&&H.current?.contains(t);!e.defaultPrevented&&!n&&b&&!X&&Q()}}),A&&t.map((e,t)=>(0,C.jsx)(`input`,{type:`hidden`,name:A,value:e,form:j,disabled:u},`${v(e)}-${t}`))]}),(0,C.jsx)(`span`,{className:`visuallyHidden`,"aria-live":`polite`,"aria-atomic":`true`,children:ae})]})}var S,C,w,T;function E(){return(E=e((()=>{S=t(),o(),n(),l(),u(),c(),b(),C=i(),w=/[,\r\n]/,T=/[,\r\n]+/,x.__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
|
+
По умолчанию удаляет пробелы в начале и конце.`,defaultValue:{value:`function defaultNormalizeTag(value: string) {
|
|
3
|
+
return value.trim();
|
|
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:`Возвращает ключ сравнения тегов. Позволяет, например, запретить дубликаты без учёта регистра.
|
|
5
|
+
По умолчанию используется точное строковое сравнение.`,defaultValue:{value:`function defaultGetTagKey(value: string) {
|
|
6
|
+
return value;
|
|
7
|
+
}`,computed:!1}},addOnBlur:{required:!1,tsType:{name:`boolean`},description:`Добавляет непустой черновик при уходе фокуса с input. По умолчанию включено.`,defaultValue:{value:`true`,computed:!1}},getRemoveButtonAriaLabel:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string, index: number) => string`,signature:{arguments:[{type:{name:`string`},name:`value`},{type:{name:`number`},name:`index`}],return:{name:`string`}}},description:`Формирует доступное имя кнопки удаления конкретного тега.`,defaultValue:{value:"function defaultGetRemoveButtonAriaLabel(value: string) {\n return `Удалить тег «${value}»`;\n}",computed:!1}},tokensAriaLabel:{required:!1,tsType:{name:`string`},description:`Доступное имя списка уже добавленных тегов.`,defaultValue:{value:`"Добавленные теги"`,computed:!1}},inputClassName:{required:!1,tsType:{name:`string`},description:"CSS-класс непосредственно для внутреннего `input`; `className` применяется к оболочке поля."}},composes:[`Omit`]}})))()}var D,O,k,A,j,M;function N(){return(N=e((()=>{D=t(),E(),O=i(),k={title:`Shared/UI/TagInput`,component:x,args:{value:[],onChange:()=>void 0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{value:{description:`Controlled-набор добавленных тегов.`,control:!1},onChange:{description:`Возвращает новый набор после добавления или удаления тега.`,control:!1},maxTags:{description:`Максимальное количество тегов.`,control:`number`},readOnly:{description:`Показывает набор без действий изменения.`,control:`boolean`},normalizeTag:{control:!1},getTagKey:{control:!1},getRemoveButtonAriaLabel:{control:!1}}},A={render:e=>{let[t,n]=(0,D.useState)([`Новости`,`Колледж`]);return(0,O.jsx)(x,{...e,label:`Теги материала`,description:`Введите значение и нажмите Enter или запятую. Можно вставить сразу несколько строк.`,placeholder:`Добавить тег`,value:t,onChange:n,maxTags:10,getTagKey:e=>e.toLocaleLowerCase(`ru`)})}},j={args:{label:`Теги материала`,value:[`Новости`,`Колледж`],readOnly:!0}},A.parameters={...A.parameters,docs:{...A.parameters?.docs,source:{originalSource:`{
|
|
8
|
+
render: args => {
|
|
9
|
+
const [value, setValue] = useState<readonly string[]>(["Новости", "Колледж"]);
|
|
10
|
+
return <TagInput {...args} label="Теги материала" description="Введите значение и нажмите Enter или запятую. Можно вставить сразу несколько строк." placeholder="Добавить тег" value={value} onChange={setValue} maxTags={10} getTagKey={tag => tag.toLocaleLowerCase("ru")} />;
|
|
11
|
+
}
|
|
12
|
+
}`,...A.parameters?.docs?.source}}},j.parameters={...j.parameters,docs:{...j.parameters?.docs,source:{originalSource:`{
|
|
13
|
+
args: {
|
|
14
|
+
label: "Теги материала",
|
|
15
|
+
value: ["Новости", "Колледж"],
|
|
16
|
+
readOnly: true
|
|
17
|
+
}
|
|
18
|
+
}`,...j.parameters?.docs?.source}}},M=[`Controlled`,`ReadOnly`]})))()}N();export{A as Controlled,j as ReadOnly,M as __namedExportsOrder,k as default};
|
|
@@ -0,0 +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}from"./iframe-CrnMVMTc.js";import{a as i,i as a}from"./utils-DUM89eIj.js";var o,s,c,l,u,d,f,p;function m(){return(m=e((()=>{o=t(n(),1),a(),s=r(),c={primary:`content0`,secondary:`content1`,muted:`content2`,info:`statusInfo`,success:`statusSuccess`,warning:`statusWarning`,error:`statusError`},l={xs:`fontSizeXs`,sm:`fontSizeSm`,md:`fontSizeMd`,lg:`fontSizeLg`,xl:`fontSizeXl`},u={lighter:`fontLighter`,light:`fontLight`,regular:`fontRegular`,medium:`fontMedium`,bold:`fontBold`,bolder:`fontBolder`},d={wrap:`textWrap`,noWrap:`textNoWrap`},f=({size:e,color:t,weight:n,italic:r,uppercase:a,wrap:s,className:f})=>(0,o.useMemo)(()=>{let o=[];return e&&o.push(l[e]),n&&o.push(u[n]),s&&o.push(d[s]),r&&o.push(`fontItalic`),a&&o.push(`textUppercase`),t&&o.push(c[t]),i(...o,f)},[e,n,t,r,a,s,f]),p=({children:e,as:t,style:n,...r})=>{let i=f(r);return(0,s.jsx)(t||`span`,{className:i,style:n,children:e})},p.__docgenInfo={description:``,methods:[],displayName:`Text`,props:{size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},color:{required:!1,tsType:{name:`union`,raw:`"primary" | "secondary" | "muted" | "error" | "warning" | "success" | "info"`,elements:[{name:`literal`,value:`"primary"`},{name:`literal`,value:`"secondary"`},{name:`literal`,value:`"muted"`},{name:`literal`,value:`"error"`},{name:`literal`,value:`"warning"`},{name:`literal`,value:`"success"`},{name:`literal`,value:`"info"`}]},description:``},weight:{required:!1,tsType:{name:`union`,raw:`"lighter" | "light" | "regular" | "medium" | "bold" | "bolder"`,elements:[{name:`literal`,value:`"lighter"`},{name:`literal`,value:`"light"`},{name:`literal`,value:`"regular"`},{name:`literal`,value:`"medium"`},{name:`literal`,value:`"bold"`},{name:`literal`,value:`"bolder"`}]},description:``},italic:{required:!1,tsType:{name:`boolean`},description:``},uppercase:{required:!1,tsType:{name:`boolean`},description:``},wrap:{required:!1,tsType:{name:`union`,raw:`"wrap" | "noWrap"`,elements:[{name:`literal`,value:`"wrap"`},{name:`literal`,value:`"noWrap"`}]},description:``},className:{required:!1,tsType:{name:`string`},description:``},style:{required:!1,tsType:{name:`CSSProperties`},description:``},children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},as:{required:!1,tsType:{name:`union`,raw:`"code" | "span" | "p" | "div" | "h2" | "h3" | "h4" | "h5" | "h6"`,elements:[{name:`literal`,value:`"code"`},{name:`literal`,value:`"span"`},{name:`literal`,value:`"p"`},{name:`literal`,value:`"div"`},{name:`literal`,value:`"h2"`},{name:`literal`,value:`"h3"`},{name:`literal`,value:`"h4"`},{name:`literal`,value:`"h5"`},{name:`literal`,value:`"h6"`}]},description:``}}}})))()}export{m as n,p as t};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`,(0,b.jsx)(
|
|
3
|
-
`,(0,b.jsx)(
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CrnMVMTc.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-Dz3dJBcm.js";import{a as p,i as m,n as h,r as g,t as _}from"./Textarea.stories-CEaMwEau.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
|
+
`,(0,b.jsx)(u,{children:`Textarea`}),`
|
|
3
|
+
`,(0,b.jsx)(o,{children:`Многострочное текстовое поле для описаний, комментариев и заметок`}),`
|
|
4
4
|
`,(0,b.jsx)(t.p,{children:`Textarea уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
|
5
5
|
Ниже можно быстро проверить базовый сценарий, а затем перейти к отдельным режимам использования и состояниям компонента. Отдельно разобраны контролируемые сценарии, заблокированные состояния.`}),`
|
|
6
6
|
`,(0,b.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
|
|
7
|
-
`,(0,b.jsx)(
|
|
8
|
-
`,(0,b.jsx)(
|
|
7
|
+
`,(0,b.jsx)(f,{}),`
|
|
8
|
+
`,(0,b.jsx)(i,{of:_}),`
|
|
9
9
|
`,(0,b.jsx)(t.pre,{children:(0,b.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
|
|
10
10
|
|
|
11
11
|
import { Textarea } from "@/shared/ui";
|
|
@@ -24,14 +24,14 @@ export function Example() {
|
|
|
24
24
|
`,(0,b.jsx)(t.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
|
|
25
25
|
`,(0,b.jsx)(t.h3,{id:`компонент-работает-в-контролируемом-режиме-когда-состояние-хранится-во-внешнем-компоненте`,children:`Компонент работает в контролируемом режиме, когда состояние хранится во внешнем компоненте`}),`
|
|
26
26
|
`,(0,b.jsx)(t.p,{children:`Компонент работает в контролируемом режиме, когда состояние хранится во внешнем компоненте.`}),`
|
|
27
|
-
`,(0,b.jsx)(
|
|
27
|
+
`,(0,b.jsx)(d,{of:_}),`
|
|
28
28
|
`,(0,b.jsx)(t.h3,{id:`компонент-с-уже-заданным-значением`,children:`Компонент с уже заданным значением`}),`
|
|
29
29
|
`,(0,b.jsx)(t.p,{children:`Компонент с уже заданным значением.`}),`
|
|
30
|
-
`,(0,b.jsx)(
|
|
30
|
+
`,(0,b.jsx)(d,{of:m}),`
|
|
31
31
|
`,(0,b.jsx)(t.h3,{id:`проверка-поведения-в-заблокированном-состоянии`,children:`Проверка поведения в заблокированном состоянии`}),`
|
|
32
32
|
`,(0,b.jsx)(t.p,{children:`Проверка поведения в заблокированном состоянии.`}),`
|
|
33
|
-
`,(0,b.jsx)(
|
|
33
|
+
`,(0,b.jsx)(d,{of:h}),`
|
|
34
34
|
`,(0,b.jsx)(t.h2,{id:`api`,children:`API`}),`
|
|
35
|
-
`,(0,b.jsx)(
|
|
35
|
+
`,(0,b.jsx)(l,{of:g}),`
|
|
36
36
|
`,(0,b.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
|
|
37
|
-
`,(0,b.jsx)(
|
|
37
|
+
`,(0,b.jsx)(a,{includePrimary:!1})]})}function y(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,b.jsx)(t,{...e,children:(0,b.jsx)(v,{...e})}):v(e)}var b;function x(){return(x=e((()=>{b=t(),r(),c(),p()})))()}x();export{y as default};
|
|
@@ -0,0 +1,27 @@
|
|
|
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-CrnMVMTc.js";import{a as i,i as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-DoMIk8Oc.js";import{c,l,o as u,u as d}from"./Input-DtOsW7ur.js";var f,p;function m(){return(m=e((()=>{f=`TjY2iu`,p={textarea:f}})))()}function h({label:e,description:t,className:n,disabled:r,size:a,value:s,onChange:c,error:l,onClearError:f,id:m,...h}){let{controlId:_,labelId:v,descriptionId:y,errorId:b,describedBy:x}=d({id:m,hasLabel:e!=null,hasDescription:!!t,hasError:!!l});return(0,g.jsx)(u,{label:e,description:t,disabled:r,size:a,error:l,controlId:_,labelId:v,descriptionId:y,errorId:b,children:(0,g.jsx)(`textarea`,{...h,id:_,disabled:r,value:s,"aria-invalid":!!l||void 0,"aria-labelledby":v,"aria-describedby":x,"data-invalid":l?``:void 0,className:i(o.uiControl,p.textarea,`scrollable`,n),onChange:e=>{c?.(e.target.value),l&&f&&f()}})})}var g;function _(){return(_=e((()=>{a(),c(),l(),s(),m(),g=r(),h.__docgenInfo={description:`Многострочное текстовое поле для ввода свободного текста. Поддерживает подпись, описание, ошибки и единый визуальный стиль формы.`,methods:[],displayName:`Textarea`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},onClearError:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``}},composes:[`Omit`]}})))()}var v=t({Controlled:()=>S,Disabled:()=>w,WithValue:()=>C,__namedExportsOrder:()=>T,default:()=>x}),y,b,x,S,C,w,T;function E(){return(E=e((()=>{y=n(),_(),b=r(),x={title:`Shared/UI/Textarea`,component:h,args:{label:`Комментарий`,description:`Оставьте примечание к документу.`,placeholder:`Введите текст...`,rows:4,disabled:!1,value:``,onChange:()=>void 0},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок текстовой области.`,control:`text`},description:{description:`Описание под заголовком.`,control:`text`},placeholder:{description:`Плейсхолдер поля ввода.`,control:`text`},value:{description:`Текущее значение текстовой области.`,control:`text`},onChange:{description:`Вызывается при изменении текста.`,control:!1},rows:{description:`Количество видимых строк.`,control:`number`},cols:{description:`Ширина в количестве символов.`,control:`number`},disabled:{description:`Блокирует редактирование.`,control:`boolean`},className:{description:`Дополнительный CSS-класс.`,control:`text`}}},S={args:{value:``,onChange:()=>void 0},render:e=>{let[t,n]=(0,y.useState)(`Первичный комментарий`);return(0,b.jsx)(h,{...e,value:t,onChange:n})}},C={args:{rows:5,value:``,onChange:()=>void 0},render:e=>{let[t,n]=(0,y.useState)(`Шаблонный текст для редактирования.`);return(0,b.jsx)(h,{...e,value:t,onChange:n})}},w={args:{disabled:!0,value:`Редактирование недоступно.`,onChange:()=>void 0},render:e=>(0,b.jsx)(h,{...e})},S.parameters={...S.parameters,docs:{...S.parameters?.docs,source:{originalSource:`{
|
|
2
|
+
args: {
|
|
3
|
+
value: "",
|
|
4
|
+
onChange: () => undefined
|
|
5
|
+
},
|
|
6
|
+
render: args => {
|
|
7
|
+
const [value, setValue] = useState("Первичный комментарий");
|
|
8
|
+
return <Textarea {...args} value={value} onChange={setValue} />;
|
|
9
|
+
}
|
|
10
|
+
}`,...S.parameters?.docs?.source}}},C.parameters={...C.parameters,docs:{...C.parameters?.docs,source:{originalSource:`{
|
|
11
|
+
args: {
|
|
12
|
+
rows: 5,
|
|
13
|
+
value: "",
|
|
14
|
+
onChange: () => undefined
|
|
15
|
+
},
|
|
16
|
+
render: args => {
|
|
17
|
+
const [value, setValue] = useState("Шаблонный текст для редактирования.");
|
|
18
|
+
return <Textarea {...args} value={value} onChange={setValue} />;
|
|
19
|
+
}
|
|
20
|
+
}`,...C.parameters?.docs?.source}}},w.parameters={...w.parameters,docs:{...w.parameters?.docs,source:{originalSource:`{
|
|
21
|
+
args: {
|
|
22
|
+
disabled: true,
|
|
23
|
+
value: "Редактирование недоступно.",
|
|
24
|
+
onChange: () => undefined
|
|
25
|
+
},
|
|
26
|
+
render: args => <Textarea {...args} />
|
|
27
|
+
}`,...w.parameters?.docs?.source}}},T=[`Controlled`,`WithValue`,`Disabled`]})))()}export{E as a,C as i,w as n,v as r,S as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-CrnMVMTc.js";import{a as r,i}from"./utils-DUM89eIj.js";import{b as a,g as o}from"./odata-service-DnPlNGpU-Bpd4Zh9L.js";import{h as s,m as c}from"./formatters--mhLir82-v41eaI4a.js";import{i as l,r as u}from"./date-segments-D3HouZ37.js";function d(e=0,t=0){return c(S,C,w,e,t,0,0)}function f(e=`date-time`){return e===`time`?x:b}function p(e,t=`date-time`){if(e==null)return null;let n=o(e);return n?t===`time`?d(n.getHours(),n.getMinutes()):n:null}function m(e,t,n,r=`date-time`){let i=p(e,r);if(!i)return!1;if(r===`time`){let e=i.getHours()*60+i.getMinutes(),r=t?p(t,`time`):null,a=n?p(n,`time`):null;return!(r&&e<r.getHours()*60+r.getMinutes()||a&&e>a.getHours()*60+a.getMinutes())}return!(t&&i<t||n&&i>n)}function h(e,t){let n=p(t),r=n?.getHours()??0,i=n?.getMinutes()??0;return c(e.getFullYear(),e.getMonth(),e.getDate(),r,i,0,0)}function g(e,t,n,r=`date-time`){return r===`time`?d(t,n):c(e.getFullYear(),e.getMonth(),e.getDate(),t,n,0,0)}function _(e,t,n=`date-time`){return n===`time`?p(e,`time`)??d():p(e,n)??t}function v(e,t,n,r=`date-time`){let i=p(e,r)??e,a=t?p(t,r):null,o=n?p(n,r):null,s=!!a&&i.getFullYear()===a.getFullYear()&&i.getMonth()===a.getMonth()&&i.getDate()===a.getDate(),c=!!o&&i.getFullYear()===o.getFullYear()&&i.getMonth()===o.getMonth()&&i.getDate()===o.getDate(),l=s?a.getHours():0,u=c?o.getHours():23,d=s&&l===u?a.getMinutes():0,f=c&&l===u?o.getMinutes():59,m=l>u||l===u&&d>f;return{disabled:m,minHour:l,maxHour:u,minMinuteByHour:e=>m?0:s&&e===l?a.getMinutes():0,maxMinuteByHour:e=>m?59:c&&e===u?o.getMinutes():59}}function y(e,t,n,r,i,a=`date-time`){let o=v(e,r,i,a);if(o.disabled)return{hours:0,minutes:0};let s=Math.min(Math.max(t,o.minHour),o.maxHour),c=o.minMinuteByHour(s),l=o.maxMinuteByHour(s);return{hours:s,minutes:Math.min(Math.max(n,c),l)}}var b,x,S,C,w;function T(){return(T=e((()=>{u(),s(),a(),b=`dd.MM.yyyy HH:mm`,x=`HH:mm`,S=1970,C=0,w=1,l(x)})))()}function ee(e,t,n,r=`date-time`){let i=v(e,t,n,r),a=e.getHours(),o=e.getMinutes(),s=i.minMinuteByHour(a),c=i.maxMinuteByHour(a);return i.disabled?{disabled:!0,selectedHour:a,selectedMinute:o,hours:[],minutes:[]}:{disabled:!1,selectedHour:a,selectedMinute:o,hours:Array.from({length:i.maxHour-i.minHour+1},(e,t)=>i.minHour+t),minutes:Array.from({length:c-s+1},(e,t)=>s+t)}}function E(){return(E=e((()=>{T()})))()}function D(e,t){return t<=0||e<0?0:e>t-1?t-1:e}function te(e,t){return!Number.isFinite(e)||e<=0?t:Math.max(e,t)}function ne(e,t){return Math.max(1,Math.round(e/Math.max(1,t)))}function re(e,t){return Math.max(0,Math.round(e/2-t/2))}function O(e,t){return Math.max(0,Math.round(e*t))}function ie(e,t,n){return n<=0||t<=0?0:D(Math.round(e/t),n)}var k,A,j,M,N,P,F;function I(){return(I=e((()=>{k=`GLhdJ6`,A=`_2xLNL2`,j=`dgX32S`,M=`WfOtQ9`,N=`XIdSMi`,P=`_--Hsbk`,F={wheelPicker:k,viewport:A,scroller:j,items:M,item:N,selectionFrame:P}})))()}function L({items:e,value:t,onChange:n,ariaLabel:i,disabled:a,className:o,minHeight:s=B,visibleRows:c=V,formatItem:l,getItemKey:u}){let d=(0,R.useRef)(null),f=(0,R.useRef)(null),p=(0,R.useRef)(null),m=(0,R.useMemo)(()=>Math.max(0,e.findIndex(e=>Object.is(e,t))),[e,t]),[h,g]=(0,R.useState)(0),_=te(h,s),v=ne(_,c),y=re(_,v),b=(0,R.useRef)(m),x=(0,R.useCallback)(e=>Math.round(e.clientHeight),[]),S=(0,R.useCallback)(()=>{let t=f.current;if(!t||e.length===0)return;let r=ie(t.scrollTop,v,e.length);t.scrollTo({top:O(r,v),behavior:`smooth`}),r!==b.current&&(b.current=r,n(e[r]))},[v,e,n]),C=(0,R.useCallback)(()=>{p.current!==null&&window.clearTimeout(p.current),p.current=window.setTimeout(()=>{p.current=null,S()},H)},[S]);(0,R.useEffect)(()=>{let e=d.current;if(!e||typeof ResizeObserver>`u`)return;let t=e=>{g(t=>t===e?t:e)},n=new ResizeObserver(n=>{let r=n[0],i=Math.round(r?.contentRect.height??x(e));t(i)});return n.observe(e),t(x(e)),()=>n.disconnect()},[x]),(0,R.useEffect)(()=>{let t=f.current;if(!t||e.length===0)return;let n=D(m,e.length);b.current=n,t.scrollTo({top:O(n,v),behavior:`auto`})},[v,e.length,m]),(0,R.useEffect)(()=>{let e=f.current;if(!e)return;let t=()=>{a||C()},n=t=>{a||(t.preventDefault(),e.scrollTop+=t.deltaY,C())};return e.addEventListener(`scroll`,t,{passive:!0}),e.addEventListener(`wheel`,n,{passive:!1}),()=>{e.removeEventListener(`scroll`,t),e.removeEventListener(`wheel`,n)}},[a,e,n,C]),(0,R.useEffect)(()=>()=>{p.current!==null&&window.clearTimeout(p.current)},[]);let w=t=>{if(a||e.length===0||t.key!==`ArrowUp`&&t.key!==`ArrowDown`)return;t.preventDefault();let r=t.key===`ArrowUp`?-1:1,i=D(m+r,e.length);i!==m&&(b.current=i,n(e[i]))},T={"--wheel-picker-min-height":`${s}px`,"--wheel-picker-viewport-height":`${_}px`,"--wheel-picker-item-height":`${v}px`,"--wheel-picker-edge-padding":`${y}px`};return(0,z.jsx)(`div`,{ref:d,className:r(F.wheelPicker,o),style:T,children:(0,z.jsxs)(`div`,{className:F.viewport,children:[(0,z.jsx)(`div`,{ref:f,className:F.scroller,role:`listbox`,tabIndex:a?-1:0,"aria-label":i,"aria-disabled":a||void 0,onKeyDown:w,children:(0,z.jsx)(`div`,{className:F.items,children:e.map((e,t)=>{let r=t===m;return(0,z.jsx)(`button`,{type:`button`,role:`option`,"aria-selected":r,className:F.item,"data-selected":r?``:void 0,disabled:a,onClick:()=>{b.current=t,n(e)},children:l?.(e)??String(e)},u?.(e,t)??t)})})}),(0,z.jsx)(`div`,{className:F.selectionFrame,"aria-hidden":`true`})]})})}var R,z,B,V,H;function U(){return(U=e((()=>{R=t(),i(),I(),z=n(),B=192,V=7,H=96,L.__docgenInfo={description:`Внутренний wheel-picker со snap-кареткой по центру и блокировкой page scroll.`,methods:[],displayName:`WheelPicker`,props:{items:{required:!0,tsType:{name:`unknown`},description:``},value:{required:!0,tsType:{name:`T`},description:``},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`T`},name:`value`}],return:{name:`void`}}},description:``},ariaLabel:{required:!0,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},className:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`192`,computed:!1}},visibleRows:{required:!1,tsType:{name:`number`},description:``,defaultValue:{value:`7`,computed:!1}},formatItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T) => ReactNode`,signature:{arguments:[{type:{name:`T`},name:`item`}],return:{name:`ReactNode`}}},description:``},getItemKey:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: T, index: number) => Key`,signature:{arguments:[{type:{name:`T`},name:`item`},{type:{name:`number`},name:`index`}],return:{name:`Key`}}},description:``}}}})))()}var W,G,K,q,J,Y,X;function Z(){return(Z=e((()=>{W=`_5-SSnO`,G=`s1NHua`,K=`KQC9-8`,q=`WDu02W`,J=`_9mEhfD`,Y=`N-Fzjk`,X={timePanel:W,hint:G,fields:K,field:q,label:J,wheel:Y}})))()}function Q({value:e,disabled:t,minDate:n,maxDate:r,mode:i=`date-time`,onChange:a}){let o=ee(e,n,r,i),s=e=>String(e).padStart(2,`0`);return o.disabled?(0,$.jsx)(`div`,{className:X.timePanel,children:(0,$.jsx)(`p`,{className:X.hint,children:`Для выбранного дня нет доступного времени в заданном диапазоне.`})}):(0,$.jsx)(`div`,{className:X.timePanel,children:(0,$.jsxs)(`div`,{className:X.fields,children:[(0,$.jsxs)(`label`,{className:X.field,children:[(0,$.jsx)(`span`,{className:X.label,children:`Часы`}),(0,$.jsx)(L,{className:X.wheel,items:o.hours,value:o.selectedHour,onChange:e=>a(e,o.selectedMinute),ariaLabel:`Выбор часов`,disabled:t,formatItem:s})]}),(0,$.jsxs)(`label`,{className:X.field,children:[(0,$.jsx)(`span`,{className:X.label,children:`Минуты`}),(0,$.jsx)(L,{className:X.wheel,items:o.minutes,value:o.selectedMinute,onChange:e=>a(o.selectedHour,e),ariaLabel:`Выбор минут`,disabled:t,formatItem:s})]})]})})}var $;function ae(){return(ae=e((()=>{U(),E(),Z(),$=n(),Q.__docgenInfo={description:`Переиспользуемая панель выбора времени поверх internal wheel-picker.`,methods:[],displayName:`TimePanel`,props:{value:{required:!0,tsType:{name:`Date`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},minDate:{required:!1,tsType:{name:`Date`},description:``},maxDate:{required:!1,tsType:{name:`Date`},description:``},mode:{required:!1,tsType:{name:`union`,raw:`"date-time" | "time"`,elements:[{name:`literal`,value:`"date-time"`},{name:`literal`,value:`"time"`}]},description:``,defaultValue:{value:`"date-time"`,computed:!1}},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(hours: number, minutes: number) => void`,signature:{arguments:[{type:{name:`number`},name:`hours`},{type:{name:`number`},name:`minutes`}],return:{name:`void`}}},description:``}}}})))()}export{f as a,h as c,_ as d,d as i,g as l,ae as n,T as o,y as r,m as s,Q as t,p as u};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n}from"./iframe-CrnMVMTc.js";import{n as r,t as i}from"./TimePanel-vx1aOwT4.js";var a,o,s,c,l,u;function d(){return(d=e((()=>{a=t(),r(),o=n(),s={title:`Shared/UI/Internal/DateTime/TimePanel`,component:i,args:{value:new Date(2026,2,10,12,30,0,0),onChange:()=>{}},parameters:{atomicCanvas:!0,layout:`centered`}},c={render:e=>{let[t,n]=(0,a.useState)(e.value);return(0,o.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,o.jsx)(i,{...e,value:t,onChange:(e,r)=>{n(new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,r,0,0))}})})}},l={render:e=>{let[t,n]=(0,a.useState)(new Date(2026,2,10,9,30,0,0));return(0,o.jsx)(`div`,{style:{width:320,minHeight:280},children:(0,o.jsx)(i,{...e,value:t,minDate:new Date(2026,2,10,9,15,0,0),maxDate:new Date(2026,2,10,18,30,0,0),onChange:(e,r)=>{n(new Date(t.getFullYear(),t.getMonth(),t.getDate(),e,r,0,0))}})})}},c.parameters={...c.parameters,docs:{...c.parameters?.docs,source:{originalSource:`{
|
|
2
|
+
render: args => {
|
|
3
|
+
const [value, setValue] = useState<Date>(args.value);
|
|
4
|
+
return <div style={{
|
|
5
|
+
width: 320,
|
|
6
|
+
minHeight: 280
|
|
7
|
+
}}>
|
|
8
|
+
<TimePanel {...args} value={value} onChange={(hours, minutes) => {
|
|
9
|
+
setValue(new Date(value.getFullYear(), value.getMonth(), value.getDate(), hours, minutes, 0, 0));
|
|
10
|
+
}} />
|
|
11
|
+
</div>;
|
|
12
|
+
}
|
|
13
|
+
}`,...c.parameters?.docs?.source},description:{story:`Демонстрирует базовую wheel-панель времени.`,...c.parameters?.docs?.description}}},l.parameters={...l.parameters,docs:{...l.parameters?.docs,source:{originalSource:`{
|
|
14
|
+
render: args => {
|
|
15
|
+
const [value, setValue] = useState<Date>(new Date(2026, 2, 10, 9, 30, 0, 0));
|
|
16
|
+
return <div style={{
|
|
17
|
+
width: 320,
|
|
18
|
+
minHeight: 280
|
|
19
|
+
}}>
|
|
20
|
+
<TimePanel {...args} value={value} minDate={new Date(2026, 2, 10, 9, 15, 0, 0)} maxDate={new Date(2026, 2, 10, 18, 30, 0, 0)} onChange={(hours, minutes) => {
|
|
21
|
+
setValue(new Date(value.getFullYear(), value.getMonth(), value.getDate(), hours, minutes, 0, 0));
|
|
22
|
+
}} />
|
|
23
|
+
</div>;
|
|
24
|
+
}
|
|
25
|
+
}`,...l.parameters?.docs?.source},description:{story:`Показывает ограничение диапазона на том же календарном дне.`,...l.parameters?.docs?.description}}},u=[`Default`,`WithLimits`]})))()}d();export{c as Default,l as WithLimits,u as __namedExportsOrder,s as default};
|
|
@@ -0,0 +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}from"./iframe-CrnMVMTc.js";import{a as i,i as a}from"./utils-DUM89eIj.js";import{n as o,t as s}from"./ui.module-DoMIk8Oc.js";var c,l,u,d,f,p,m,h,g;function _(){return(_=e((()=>{c=`FFyoOs`,l=`zPYy7T`,u=`j6ek6R`,d=`HFTPXI`,f=`_0RK4xF`,p=`kDPnKt`,m=`DQHqws`,h=`nCQ9v4`,g={row:c,wrapper:l,input:u,track:d,thumb:f,unchecked:p,checked:m,option:h}})))()}function v({label:e,description:t,placeholder:n,disabled:r,size:a,className:s,onChange:c,value:l,id:u,checkedText:d=`ВКЛ`,uncheckedText:f=`ВЫКЛ`,labelPosition:p=`before`,...m}){let h=(0,y.useId)(),_=u??h,v=t?`${_}-description`:void 0,x=e??n,S=!!l,C=!x&&!m[`aria-label`]?`${f} / ${d}`:void 0,w=x?(0,b.jsx)(`label`,{htmlFor:_,className:o.uiLabel,children:x}):null;return(0,b.jsxs)(`div`,{className:i(o.uiElement,r&&o.disabled,a&&o.uiSizable,a&&o[a],s),"aria-disabled":r||void 0,children:[(0,b.jsxs)(`div`,{className:g.row,children:[p===`before`&&w,(0,b.jsxs)(`div`,{className:g.wrapper,children:[(0,b.jsx)(`input`,{...m,id:_,type:`checkbox`,role:`switch`,checked:S,disabled:r,"aria-checked":S,"aria-describedby":v,"aria-label":C,className:i(o.uiInputControl,g.input),onChange:e=>c?.(e.currentTarget.checked)}),(0,b.jsxs)(`div`,{className:g.track,"data-disabled":r||void 0,"aria-hidden":`true`,children:[(0,b.jsx)(`div`,{className:g.thumb}),(0,b.jsx)(`div`,{className:i(g.option,g.unchecked),children:f}),(0,b.jsx)(`div`,{className:i(g.option,g.checked),children:d})]})]}),p===`after`&&w]}),t&&(0,b.jsx)(`p`,{id:v,className:o.uiDescription,children:t})]})}var y,b;function x(){return(x=e((()=>{y=t(n(),1),a(),s(),_(),b=r(),v.__docgenInfo={description:`Переключаемая кнопка с сохранением активного состояния. Используется для локального выбора режима, фильтра или форматирования.`,methods:[],displayName:`Toggle`,props:{label:{required:!1,tsType:{name:`ReactNode`},description:``},description:{required:!1,tsType:{name:`string`},description:``},placeholder:{required:!1,tsType:{name:`string`},description:``},disabled:{required:!1,tsType:{name:`boolean`},description:``},size:{required:!1,tsType:{name:`union`,raw:`"xs" | "sm" | "md" | "lg" | "xl"`,elements:[{name:`literal`,value:`"xs"`},{name:`literal`,value:`"sm"`},{name:`literal`,value:`"md"`},{name:`literal`,value:`"lg"`},{name:`literal`,value:`"xl"`}]},description:``},value:{required:!0,tsType:{name:`V`},description:"Если начальное состояние может быть `null | undefined`\nзначит `onChange` тоже должен ументь сбрасывать.\nПоэтому такой контрол явно должен передавать `UiBaseProps<AnyType | undefined>`"},onChange:{required:!0,tsType:{name:`signature`,type:`function`,raw:`(value: T) => void`,signature:{arguments:[{type:{name:`C`},name:`value`}],return:{name:`void`}}},description:``},checkedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВКЛ"`,computed:!1}},uncheckedText:{required:!1,tsType:{name:`string`},description:``,defaultValue:{value:`"ВЫКЛ"`,computed:!1}},labelPosition:{required:!1,tsType:{name:`union`,raw:`"before" | "after"`,elements:[{name:`literal`,value:`"before"`},{name:`literal`,value:`"after"`}]},description:``,defaultValue:{value:`"before"`,computed:!1}}},composes:[`Omit`]}})))()}export{x as n,v as t};
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import{
|
|
2
|
-
`,(0,b.jsx)(
|
|
3
|
-
`,(0,b.jsx)(
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CrnMVMTc.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-Dz3dJBcm.js";import{a as p,i as m,n as h,r as g,t as _}from"./Toggle.stories-CT0mQbdm.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:m,parameters:{docs:{toc:!0}}}),`
|
|
2
|
+
`,(0,b.jsx)(u,{children:`Toggle`}),`
|
|
3
|
+
`,(0,b.jsx)(o,{children:`Переключаемый булев контрол для локальных режимов и простых опций`}),`
|
|
4
4
|
`,(0,b.jsx)(t.p,{children:`Toggle уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
|
5
5
|
Ниже можно быстро проверить базовый сценарий, а затем перейти к отдельным режимам использования и состояниям компонента. Отдельно разобраны контролируемые сценарии, заблокированные состояния.`}),`
|
|
6
6
|
`,(0,b.jsx)(t.h2,{id:`основной-сценарий`,children:`Основной сценарий`}),`
|
|
7
|
-
`,(0,b.jsx)(
|
|
8
|
-
`,(0,b.jsx)(
|
|
7
|
+
`,(0,b.jsx)(f,{}),`
|
|
8
|
+
`,(0,b.jsx)(i,{of:_}),`
|
|
9
9
|
`,(0,b.jsx)(t.pre,{children:(0,b.jsx)(t.code,{className:`language-tsx`,children:`import { useState } from "react";
|
|
10
10
|
|
|
11
11
|
import { Toggle } from "@/shared/ui";
|
|
@@ -24,14 +24,14 @@ export function Example() {
|
|
|
24
24
|
`,(0,b.jsx)(t.h2,{id:`сценарии-использования`,children:`Сценарии использования`}),`
|
|
25
25
|
`,(0,b.jsx)(t.h3,{id:`компонент-работает-в-контролируемом-режиме-когда-состояние-хранится-во-внешнем-компоненте`,children:`Компонент работает в контролируемом режиме, когда состояние хранится во внешнем компоненте`}),`
|
|
26
26
|
`,(0,b.jsx)(t.p,{children:`Компонент работает в контролируемом режиме, когда состояние хранится во внешнем компоненте.`}),`
|
|
27
|
-
`,(0,b.jsx)(
|
|
27
|
+
`,(0,b.jsx)(d,{of:_}),`
|
|
28
28
|
`,(0,b.jsx)(t.h3,{id:`размещение-подписи-после-контрола`,children:`Размещение подписи после контрола`}),`
|
|
29
29
|
`,(0,b.jsx)(t.p,{children:`Размещение подписи после контрола.`}),`
|
|
30
|
-
`,(0,b.jsx)(
|
|
30
|
+
`,(0,b.jsx)(d,{of:g}),`
|
|
31
31
|
`,(0,b.jsx)(t.h3,{id:`проверка-поведения-в-заблокированном-состоянии`,children:`Проверка поведения в заблокированном состоянии`}),`
|
|
32
32
|
`,(0,b.jsx)(t.p,{children:`Проверка поведения в заблокированном состоянии.`}),`
|
|
33
|
-
`,(0,b.jsx)(
|
|
33
|
+
`,(0,b.jsx)(d,{of:h}),`
|
|
34
34
|
`,(0,b.jsx)(t.h2,{id:`api`,children:`API`}),`
|
|
35
|
-
`,(0,b.jsx)(
|
|
35
|
+
`,(0,b.jsx)(l,{of:m}),`
|
|
36
36
|
`,(0,b.jsx)(t.h2,{id:`все-сторисы`,children:`Все сторисы`}),`
|
|
37
|
-
`,(0,b.jsx)(
|
|
37
|
+
`,(0,b.jsx)(a,{includePrimary:!1})]})}function y(e={}){let{wrapper:t}={...n(),...e.components};return t?(0,b.jsx)(t,{...e,children:(0,b.jsx)(v,{...e})}):v(e)}var b;function x(){return(x=e((()=>{b=t(),r(),c(),p()})))()}x();export{y as default};
|