@ryuzaki13/react-foundation-ui 1.5.5 → 1.5.7
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 +8 -8
- package/dist/badge/index.js +1 -1
- package/dist/base-table/index.js +1 -1
- package/dist/button/index.js +1 -1
- package/dist/check-box/index.js +1 -1
- package/dist/chunks/{CalendarView-Cfih7hjD.js → CalendarView-DO899w6E.js} +2 -2
- package/dist/chunks/{CalendarView-Cfih7hjD.js.map → CalendarView-DO899w6E.js.map} +1 -1
- package/dist/chunks/{TextEditorLexicalClient-BSafrkLJ.js → TextEditorLexicalClient-C7XL4lZ5.js} +6 -6
- package/dist/chunks/{TextEditorLexicalClient-BSafrkLJ.js.map → TextEditorLexicalClient-C7XL4lZ5.js.map} +1 -1
- package/dist/chunks/{badge-CbclcpUi.js → badge-BXwM9cFq.js} +2 -2
- package/dist/chunks/{badge-CbclcpUi.js.map → badge-BXwM9cFq.js.map} +1 -1
- package/dist/chunks/{base-table-X7aSSjXa.js → base-table-CFJHhLNb.js} +2 -2
- package/dist/chunks/{base-table-X7aSSjXa.js.map → base-table-CFJHhLNb.js.map} +1 -1
- package/dist/chunks/{button-BOl7hYmT.js → button-BcnvJpqz.js} +3 -3
- package/dist/chunks/{button-BOl7hYmT.js.map → button-BcnvJpqz.js.map} +1 -1
- package/dist/chunks/{check-box-6HGX_KOy.js → check-box-BrPHWs2l.js} +3 -3
- package/dist/chunks/{check-box-6HGX_KOy.js.map → check-box-BrPHWs2l.js.map} +1 -1
- package/dist/chunks/{context-menu-tcD3kVAc.js → context-menu-DcdUfWN3.js} +2 -2
- package/dist/chunks/{context-menu-tcD3kVAc.js.map → context-menu-DcdUfWN3.js.map} +1 -1
- package/dist/chunks/{date-input-Bsl9dxxY.js → date-input-Db7GPkPC.js} +5 -5
- package/dist/chunks/{date-input-Bsl9dxxY.js.map → date-input-Db7GPkPC.js.map} +1 -1
- package/dist/chunks/{input-CAw1Loze.js → input-CMVATAFR.js} +2 -2
- package/dist/chunks/{input-CAw1Loze.js.map → input-CMVATAFR.js.map} +1 -1
- package/dist/chunks/{input-files-CLtQ7p8j.js → input-files-DM6I2iF_.js} +3 -3
- package/dist/chunks/{input-files-CLtQ7p8j.js.map → input-files-DM6I2iF_.js.map} +1 -1
- package/dist/chunks/{input-search-F6MPrUGF.js → input-search-BlTKbtAL.js} +2 -2
- package/dist/chunks/{input-search-F6MPrUGF.js.map → input-search-BlTKbtAL.js.map} +1 -1
- package/dist/chunks/{modal-DPIXoMkB.js → modal-z1Ej4Y-r.js} +2 -2
- package/dist/chunks/{modal-DPIXoMkB.js.map → modal-z1Ej4Y-r.js.map} +1 -1
- package/dist/chunks/{multi-select-CZPB8H6v.js → multi-select-BMBjWg3h.js} +5 -5
- package/dist/chunks/{multi-select-CZPB8H6v.js.map → multi-select-BMBjWg3h.js.map} +1 -1
- package/dist/chunks/{picker-TYLwgl1c.js → picker-C-a-2NkB.js} +3 -3
- package/dist/chunks/{picker-TYLwgl1c.js.map → picker-C-a-2NkB.js.map} +1 -1
- package/dist/chunks/{radio-group-4j2HbemI.js → radio-group-D-eBPuGm.js} +2 -2
- package/dist/chunks/radio-group-D-eBPuGm.js.map +1 -0
- package/dist/chunks/{select-BwbljzU9.js → select-BhVOTvZ_.js} +5 -5
- package/dist/chunks/{select-BwbljzU9.js.map → select-BhVOTvZ_.js.map} +1 -1
- package/dist/chunks/{table-DihiNNJt.js → table-jMjMoYKh.js} +2 -2
- package/dist/chunks/{table-DihiNNJt.js.map → table-jMjMoYKh.js.map} +1 -1
- package/dist/chunks/{ui.module-BfaIVBba.js → ui.module-D_ZhzCRv.js} +2 -1
- package/dist/chunks/ui.module-D_ZhzCRv.js.map +1 -0
- package/dist/chunks/{uiClasses-4atXOh0J.js → uiClasses-CF_aN4Tv.js} +11 -2
- package/dist/chunks/uiClasses-CF_aN4Tv.js.map +1 -0
- package/dist/chunks/{useODataSelectBase-Bfljwe39.js → useODataSelectBase-CQJuzk5Q.js} +2 -2
- package/dist/chunks/{useODataSelectBase-Bfljwe39.js.map → useODataSelectBase-CQJuzk5Q.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 +3 -3
- package/dist/development/storybook/createControlledStoryRender.d.ts +12 -0
- package/dist/development/storybook/createControlledStoryRender.d.ts.map +1 -0
- package/dist/disclosure/index.js +3 -4
- package/dist/disclosure/index.js.map +1 -1
- package/dist/drop-zone/index.js +1 -1
- package/dist/expandable-action-panel/index.js +1 -1
- package/dist/image/index.js +4 -4
- package/dist/input/index.js +1 -1
- package/dist/input-date-time/index.js +2 -2
- package/dist/input-file/index.js +2 -2
- package/dist/input-files/index.js +1 -1
- package/dist/input-image/index.js +2 -2
- package/dist/input-search/index.js +1 -1
- package/dist/layout-picker/index.js +2 -2
- package/dist/listbox/index.js +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/multi-select/index.js +1 -1
- package/dist/notifications/index.js +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/preset-range-date-input/index.js +1 -1
- package/dist/preset-select/index.js +1 -1
- package/dist/radio-button/index.js +2 -2
- package/dist/radio-group/index.js +1 -1
- package/dist/select/index.js +1 -1
- package/dist/simple-table/index.js +1 -1
- package/dist/slider/Slider.d.ts.map +1 -1
- package/dist/slider/index.js +9 -8
- package/dist/slider/index.js.map +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/switch/index.js +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tag-input/index.js +2 -2
- package/dist/text-editor/index.js +1 -1
- package/dist/textarea/index.js +2 -2
- package/dist/toggle/index.js +1 -1
- package/dist/tree-select/index.js +6 -6
- package/dist/tree-table/index.js +1 -1
- package/dist/types.d.ts +6 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/uiClasses.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/styles/_controls.scss +4 -0
- package/src/styles/config/_index.scss +71 -46
- package/src/styles/mixins/_mixin.scss +6 -6
- package/storybook-static/assets/{Badge-Cy0HXIr5.js → Badge-C57OpH6H.js} +1 -1
- package/storybook-static/assets/Badge.stories-CUtS3gdC.js +56 -0
- package/storybook-static/assets/BadgeList-Br7PCtJe.js +4 -0
- package/storybook-static/assets/Button-BUAFSG7a.js +14 -0
- package/storybook-static/assets/{Button-BYDec2zN.js → Button-CXacCJwd.js} +11 -1
- package/storybook-static/assets/Button.stories-CG-Xqadt.js +93 -0
- package/storybook-static/assets/{CalendarView-D4HgymQc.js → CalendarView-DxkdSsAx.js} +1 -1
- package/storybook-static/assets/{CheckBox-DdyYpHip.js → CheckBox-CIv6lt7Z.js} +2 -2
- package/storybook-static/assets/{CheckBox-C99Hl-lm.js → CheckBox-DnxmVFE5.js} +1 -1
- package/storybook-static/assets/CheckBox.stories-foJ6NnTj.js +58 -0
- package/storybook-static/assets/{Color-6AOWCN3U-lPm5uN2n.js → Color-6AOWCN3U-DrqTmtJf.js} +1 -1
- package/storybook-static/assets/{ContextMenu-BMqXGc8f.js → ContextMenu-BOM4Gk64.js} +1 -1
- package/storybook-static/assets/{ContextMenu-DQv1v1zy.js → ContextMenu-C8SQXRxm.js} +1 -1
- package/storybook-static/assets/ContextMenu.stories-CFwISC9P.js +37 -0
- package/storybook-static/assets/{DateInput-Bv6Hhu6A.js → DateInput-BWSZLH9k.js} +1 -1
- package/storybook-static/assets/{DateInput-DakqiSFb.js → DateInput-ClKgqyQO.js} +1 -1
- package/storybook-static/assets/{DateInput.stories-Cba_7cj5.js → DateInput.stories-BIMqPAY-.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-BmEPKVFD.js → DateRangePresetSelect-DWIraW8Q.js} +1 -1
- package/storybook-static/assets/{DateRangePresetSelect-R8gpZJUt.js → DateRangePresetSelect-yzuX25-A.js} +2 -2
- package/storybook-static/assets/DateRangePresetSelect.stories-Bqxh85ie.js +19 -0
- package/storybook-static/assets/{Detail-BBic5raN.js → Detail-BwbUH-2a.js} +1 -1
- package/storybook-static/assets/Detail.stories-BJZxxHBe.js +56 -0
- package/storybook-static/assets/{Dialog-NVtu2Lfd.js → Dialog-B6ZkSwFG.js} +1 -1
- package/storybook-static/assets/{Dialog-aECS25qq.js → Dialog-CjAdwNLK.js} +1 -1
- package/storybook-static/assets/Dialog.stories-Cw9Inezq.js +22 -0
- package/storybook-static/assets/{Disclosure-CMtpfiPs.js → Disclosure-BgaRYF6o.js} +1 -1
- package/storybook-static/assets/Disclosure.stories-B3cOFkzP.js +23 -0
- package/storybook-static/assets/DisclosureGroup-BFWSlYOk.css +1 -0
- package/storybook-static/assets/DisclosureGroup-DjDW1NYH.js +2 -0
- package/storybook-static/assets/{DocsRenderer-JROSPFPF-CpcMEXZo.js → DocsRenderer-JROSPFPF-BWdUj6SG.js} +1 -1
- package/storybook-static/assets/{DropZone-CGk3TQs_.js → DropZone-D7XJczCv.js} +1 -1
- package/storybook-static/assets/{DropZone-DSkgQNJy.js → DropZone-DnJJRVvs.js} +1 -1
- package/storybook-static/assets/DropZone.stories-DCILeRID.js +26 -0
- package/storybook-static/assets/{DropdownMenu-CIwvcBv7.js → DropdownMenu-eA7CqmEq.js} +1 -1
- package/storybook-static/assets/{ExpandableActionPanel-C-xRvGLK.js → ExpandableActionPanel-Bi8GdZk8.js} +1 -1
- package/storybook-static/assets/ExpandableActionPanel.stories-CnpIhE-p.js +9 -0
- package/storybook-static/assets/{Flex-BZPZFjuo.js → Flex-CTId58Yi.js} +1 -1
- package/storybook-static/assets/{Flex.stories-C-GWEtfM.js → Flex.stories-DzO6eshU.js} +12 -12
- package/storybook-static/assets/{FloatingPopover-DPYP9R5G.js → FloatingPopover-Bj3n1Cbm.js} +1 -1
- package/storybook-static/assets/{FormattedTableCell-DAa1fbw9.js → FormattedTableCell-DgbwZ60P.js} +1 -1
- package/storybook-static/assets/{Grid-CouPzQim.js → Grid-Dd82LOHp.js} +1 -1
- package/storybook-static/assets/{Grid.stories-DRy5MjMl.js → Grid.stories-DijrLN9C.js} +15 -15
- package/storybook-static/assets/{ImageCropper.stories-UkAS9yEp.js → ImageCropper.stories-BeJRCTBT.js} +23 -7
- package/storybook-static/assets/{ImageRenderer-DG9JMH12.js → ImageRenderer-DJPFz9-n.js} +1 -1
- package/storybook-static/assets/ImageRenderer.stories--ai66HWP.js +34 -0
- package/storybook-static/assets/ImageView.stories-khEGxQEm.js +14 -0
- package/storybook-static/assets/{ImageViewer.stories-D09Y8qy7.js → ImageViewer.stories-DF6RRs2D.js} +30 -12
- package/storybook-static/assets/{ImageViewerRuntime-Bj8A9MgR.js → ImageViewerRuntime-DBwCIibL.js} +1 -1
- package/storybook-static/assets/{Input-CLXuEb2-.js → Input-BqqylVpn.js} +1 -1
- package/storybook-static/assets/{Input-g2XrzU2e.js → Input-Fk3IRww_.js} +1 -1
- package/storybook-static/assets/Input.stories-BQMPGwcm.js +52 -0
- package/storybook-static/assets/{InputDateTime-9jtVktvp.js → InputDateTime-B3aoGdLh.js} +1 -1
- package/storybook-static/assets/{InputDateTime.stories-QMtC2jN7.js → InputDateTime.stories-BVD7wYFB.js} +23 -20
- package/storybook-static/assets/{InputFile-Dv5BpleO.js → InputFile-BPIyxf85.js} +1 -1
- package/storybook-static/assets/{InputFile-CniSRV0z.js → InputFile-CeDA-DBu.js} +1 -1
- package/storybook-static/assets/InputFile.stories-CTyjqf2i.js +27 -0
- package/storybook-static/assets/{InputFiles-BTOdLOY4.js → InputFiles-Ay6AhGXY.js} +1 -1
- package/storybook-static/assets/{InputFiles-CsbUWxMN.js → InputFiles-Bs_ANsbH.js} +1 -1
- package/storybook-static/assets/InputFiles.stories-DpulRmAF.js +26 -0
- package/storybook-static/assets/{InputFilesList-YZLWgLqU.js → InputFilesList-O66HnsfV.js} +1 -1
- package/storybook-static/assets/{InputImage-CoqzaT5z.js → InputImage-8CkQNIx-.js} +1 -1
- package/storybook-static/assets/{InputImage-Ct2PIHnB.js → InputImage-C61yYNvh.js} +1 -1
- package/storybook-static/assets/InputImage.stories-B9EdEI54.js +56 -0
- package/storybook-static/assets/InteractiveComponents-D3625WeG.js +87 -0
- package/storybook-static/assets/InteractiveComponents.stories-DlUOC0gE.js +472 -0
- package/storybook-static/assets/{LayoutPicker-CBKIOA6m.js → LayoutPicker-BzdqkISv.js} +1 -1
- package/storybook-static/assets/{LayoutPicker-C14HuoJT.js → LayoutPicker-TghytR7l.js} +1 -1
- package/storybook-static/assets/{LayoutPicker.stories-Cbdev2zd.js → LayoutPicker.stories-BcQcVoGX.js} +1 -1
- package/storybook-static/assets/{Listbox-DGdrVenc.js → Listbox-DuNXYpU5.js} +1 -1
- package/storybook-static/assets/{Listbox-Mqn7EoPt.js → Listbox-kuB9DZmS.js} +1 -1
- package/storybook-static/assets/Listbox.stories-RaF4O2dQ.js +68 -0
- package/storybook-static/assets/{Modal-DZgFrzRQ.js → Modal-i-qVmfOZ.js} +1 -1
- package/storybook-static/assets/Modal.stories-jAQ3yHty.js +232 -0
- package/storybook-static/assets/{ModalManagerProvider-CDpI_bMR.js → ModalManagerProvider-_TvqmYe3.js} +1 -1
- package/storybook-static/assets/{MultiSelect-CYLKB_VV.js → MultiSelect-BD6xtx7W.js} +1 -1
- package/storybook-static/assets/{MultiSelect-Cujmvoxp.js → MultiSelect-DiBUW3Jo.js} +1 -1
- package/storybook-static/assets/MultiSelect.stories-Cc4-fIjA.js +55 -0
- package/storybook-static/assets/{NoData-B4H6VMN9.js → NoData-BvxB_r9f.js} +1 -1
- package/storybook-static/assets/{NotificationsHost-DGolEXP8.js → NotificationsHost-DDxqV6_Y.js} +1 -1
- package/storybook-static/assets/NotificationsHost.stories-tMVttzUz.js +29 -0
- package/storybook-static/assets/{ODataMultiSelect-zz9GzQ4E.js → ODataMultiSelect-96O4f-qa.js} +1 -1
- package/storybook-static/assets/ODataMultiSelect.stories-DpRZoXwK.js +137 -0
- package/storybook-static/assets/{ODataSelect-Dh1wVGqr.js → ODataSelect-MS3gU6J3.js} +1 -1
- package/storybook-static/assets/ODataSelect.stories-V6u4XJN4.js +207 -0
- package/storybook-static/assets/{ODataTreeMultiSelect-CcSYG9z8.js → ODataTreeMultiSelect-B_pN_Ec6.js} +1 -1
- package/storybook-static/assets/ODataTreeMultiSelect.stories-DsyoOuR8.js +78 -0
- package/storybook-static/assets/{ODataTreeSelect-DJIwvxiv.js → ODataTreeSelect-iQ8y3cDY.js} +1 -1
- package/storybook-static/assets/ODataTreeSelect.stories-DCzwGTkw.js +55 -0
- package/storybook-static/assets/{OneStepScroller-Dtw3XxR_.js → OneStepScroller-DHETHT90.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-BlHfE2Sb.js → PeriodSelect-C5gt4lj6.js} +1 -1
- package/storybook-static/assets/{PeriodSelect-BFLetGco.js → PeriodSelect-CC7faqoe.js} +1 -1
- package/storybook-static/assets/PeriodSelect.stories-1gMZgYMb.js +50 -0
- package/storybook-static/assets/{PickerSelectionToolbar-DzMAzpep.js → PickerSelectionToolbar-DA9AqLfK.js} +1 -1
- package/storybook-static/assets/{PickerTriggerActions-BKQ28AXr.js → PickerTriggerActions-Bt4rbg1T.js} +1 -1
- package/storybook-static/assets/{Popover-3iAlzyR9.js → Popover-DoiYIRMQ.js} +1 -1
- package/storybook-static/assets/{Popover-BrEAV6tC.js → Popover-gg-G1aUp.js} +1 -1
- package/storybook-static/assets/Popover.stories-Yt2zItKA.js +47 -0
- package/storybook-static/assets/{PresetRangeDateInput-Cmyn-fEA.js → PresetRangeDateInput-CB6Cyj_z.js} +1 -1
- package/storybook-static/assets/PresetRangeDateInput-OuBr9O7l.js +1 -0
- package/storybook-static/assets/PresetRangeDateInput.stories-DEv0NvxR.js +3 -0
- package/storybook-static/assets/{PresetSelect-DzafFdIZ.js → PresetSelect-QCMUn7im.js} +1 -1
- package/storybook-static/assets/{RadioButton-BelOYlsv.js → RadioButton-BWyJs5Z6.js} +2 -2
- package/storybook-static/assets/{RadioButton-CP2MTHNG.js → RadioButton-D1O1e-bK.js} +1 -1
- package/storybook-static/assets/RadioButton.stories-kT4uLnRo.js +32 -0
- package/storybook-static/assets/{RadioGroup-CMerSWPc.js → RadioGroup-Bz9Pc7gG.js} +1 -1
- package/storybook-static/assets/{RadioGroup-zJ6x863B.js → RadioGroup-Cc8bDKSK.js} +1 -1
- package/storybook-static/assets/{RadioGroup-DzkFQ83G.css → RadioGroup-vkD0hI_b.css} +1 -1
- package/storybook-static/assets/RadioGroup.stories-XUcezf_a.js +17 -0
- package/storybook-static/assets/{Scrollable-bLa141TT.js → Scrollable-7AnJblZH.js} +1 -1
- package/storybook-static/assets/{Select-iRRHKOR9.js → Select-2OS5b3gj.js} +1 -1
- package/storybook-static/assets/{Select-BuBKmTxm.js → Select-B0JlKRZh.js} +1 -1
- package/storybook-static/assets/Select.stories-6NgDnQLy.js +69 -0
- package/storybook-static/assets/{SelectOptionContent-C5EAnQ_6.js → SelectOptionContent-DrMuPE4L.js} +1 -1
- package/storybook-static/assets/{SerializableSelect-D8W_hXze.js → SerializableSelect-C29Dtj1j.js} +1 -1
- package/storybook-static/assets/SerializableSelect.stories-Dk_0LHfx.js +73 -0
- package/storybook-static/assets/{SingleDateTimeInput-CuTy_t_1.js → SingleDateTimeInput-Bu-VV-X4.js} +1 -1
- package/storybook-static/assets/{SingleDateTimeInput-qTqbSGck.js → SingleDateTimeInput-pNtbntt7.js} +1 -1
- package/storybook-static/assets/SingleDateTimeInput.stories-BY6gytNo.js +48 -0
- package/storybook-static/assets/{Slider-D2-xtMN2.js → Slider-CKDNtVxH.js} +1 -1
- package/storybook-static/assets/{Slider-Zza_tIz2.js → Slider-CzKsc6lR.js} +1 -1
- package/storybook-static/assets/Slider-bVVL6_Jz.css +1 -0
- package/storybook-static/assets/Slider.stories-C9CiqYKL.js +80 -0
- package/storybook-static/assets/{SliderInput-BT-DMyS-.js → SliderInput-Dw5e7zgd.js} +1 -1
- package/storybook-static/assets/{SliderInput-C8OO6jI-.js → SliderInput-LIlYbZ-q.js} +1 -1
- package/storybook-static/assets/SliderInput.stories-DScPfD4E.js +92 -0
- package/storybook-static/assets/{Sortable-BC2UlTFz.js → Sortable-BrbLX--A.js} +1 -1
- package/storybook-static/assets/Sortable.stories-CNgF8pCO.js +77 -0
- package/storybook-static/assets/{Splitter-BOMgf1Rr.js → Splitter-B5t8ta7u.js} +1 -1
- package/storybook-static/assets/{Splitter.stories-DayYmTEb.js → Splitter.stories-Cz_ZAwsO.js} +26 -9
- package/storybook-static/assets/{StateSelect-DRHlFj9s.js → StateSelect-BpZxLrbE.js} +1 -1
- package/storybook-static/assets/{StateSelect-CjBaZyCH.js → StateSelect-CkC0uV89.js} +1 -1
- package/storybook-static/assets/StateSelect.stories-7YPBHcZj.js +59 -0
- package/storybook-static/assets/StringToggle.stories-dy82Cq3e.js +5 -0
- package/storybook-static/assets/{Switch-D3OypknC.js → Switch-DmUkZLoV.js} +1 -1
- package/storybook-static/assets/{Switch-Bs4yhyjR.js → Switch-L91cfss1.js} +1 -1
- package/storybook-static/assets/Switch.stories-DacAiGQz.js +15 -0
- package/storybook-static/assets/{Table-B4yXrSY8.js → Table-B13zUr91.js} +1 -1
- package/storybook-static/assets/Table.stories-BPgaag4D.js +207 -0
- package/storybook-static/assets/{Tabs-WGjWEgV9.js → Tabs-XHS1tTCR.js} +1 -1
- package/storybook-static/assets/Tabs.stories-DCGe98nI.js +87 -0
- package/storybook-static/assets/{TabsBox-B37Xpp9P.js → TabsBox-NeiMksCt.js} +1 -1
- package/storybook-static/assets/{TagInput-Blo36mAx.js → TagInput-DmTij_wJ.js} +1 -1
- package/storybook-static/assets/TagInput.stories-Crz2d9WK.js +18 -0
- package/storybook-static/assets/{Text-C1at2dMq.js → Text-VK5-gznU.js} +1 -1
- package/storybook-static/assets/{Textarea-B02c6Ggv.js → Textarea-FgIOtg__.js} +1 -1
- package/storybook-static/assets/{Textarea-S7xMlxUP.js → Textarea-dZHo8H-N.js} +1 -1
- package/storybook-static/assets/Textarea.stories-DlVs_0Da.js +17 -0
- package/storybook-static/assets/{TimePanel-CZ2CNXd5.js → TimePanel-CmNDtcUu.js} +1 -1
- package/storybook-static/assets/TimePanel.stories-DzDCIjYh.js +14 -0
- package/storybook-static/assets/{Toggle-BZsOOBwn.js → Toggle-CszEtVgG.js} +1 -1
- package/storybook-static/assets/{Toggle-BjyGbAMN.js → Toggle-iIIRwhJ0.js} +1 -1
- package/storybook-static/assets/Toggle.stories-OHqcyxRB.js +25 -0
- package/storybook-static/assets/{TreeMultiSelect-Bp9Ypu3w.js → TreeMultiSelect-BcpQXmXz.js} +1 -1
- package/storybook-static/assets/{TreeMultiSelect-CFNKXcU5.js → TreeMultiSelect-D08x-Zz7.js} +1 -1
- package/storybook-static/assets/TreeMultiSelect.stories-CmZ3kEc3.js +60 -0
- package/storybook-static/assets/{TreePickerBase-B4nW8V67.js → TreePickerBase-PstNPiQo.js} +1 -1
- package/storybook-static/assets/{TreeSelect-DHjzbXxe.js → TreeSelect-CrpAtboA.js} +1 -1
- package/storybook-static/assets/{TreeSelect-6lILMCzp.js → TreeSelect-xXFRj_Bm.js} +1 -1
- package/storybook-static/assets/TreeSelect.stories-DJaUtn0O.js +40 -0
- package/storybook-static/assets/{TreeTable-Dw2YFyUT.js → TreeTable-C7OZPq-9.js} +1 -1
- package/storybook-static/assets/TreeTable.stories-Dd0YYVZ2.js +168 -0
- package/storybook-static/assets/{async-CbzeGif1.js → async-Bu5V6wLi.js} +1 -1
- package/storybook-static/assets/{blocks-DQl3eTFV.js → blocks-LF4-T76K.js} +3 -3
- package/storybook-static/assets/{browserAndReact-CC7HF1qC.js → browserAndReact-DpeuPHLP.js} +1 -1
- package/storybook-static/assets/{check-D-psTYia.js → check-CxEwVoKp.js} +1 -1
- package/storybook-static/assets/{chevron-down-Das8TW8b.js → chevron-down-DpN_oMWM.js} +1 -1
- package/storybook-static/assets/{chevron-left-Dq0qJ7av.js → chevron-left-C9_RRcAe.js} +1 -1
- package/storybook-static/assets/{chevron-right-Ctnpw34b.js → chevron-right-K8IWV8l8.js} +1 -1
- package/storybook-static/assets/{chunk-W22LQPXL-D-HehNH1.js → chunk-W22LQPXL-iNmw4j69.js} +1 -1
- package/storybook-static/assets/{circle-alert-25c5aKIP.js → circle-alert-B_axag0r.js} +1 -1
- package/storybook-static/assets/{circle-check-DXXEdCIE.js → circle-check-DdUogvti.js} +1 -1
- package/storybook-static/assets/{components-Dg-CCU90.js → components-BRUtb9vg.js} +3 -3
- package/storybook-static/assets/{contextMenu-DTmHIVHM.js → contextMenu-OelXFAKZ.js} +1 -1
- package/storybook-static/assets/createControlledStoryRender-DHsyXc1B.js +1 -0
- package/storybook-static/assets/{defaultRenderers-IYkjKXvR.js → defaultRenderers-CJ0K8d9m.js} +1 -1
- package/storybook-static/assets/{download-D5fSxET6.js → download-D12Nvnyu.js} +1 -1
- package/storybook-static/assets/{filesAndExcel-CHPqG7k9.js → filesAndExcel-BBtR-68u.js} +1 -1
- package/storybook-static/assets/{floating-ui.react-Z3F8qO7F.js → floating-ui.react-CGVF2LPS.js} +1 -1
- package/storybook-static/assets/{formatters-BH5xiyRy.js → formatters-c0BLP2hy.js} +1 -1
- package/storybook-static/assets/{formatters-runtime-D9WhzCIX.js → formatters-runtime-DAwNvKyD.js} +1 -1
- package/storybook-static/assets/{foundationLib-BMiwtR-Z.js → foundationLib-DfmfMVN5.js} +1 -1
- package/storybook-static/assets/{hooks-Ck7lIgxa.js → hooks-B-9_3OzU.js} +1 -1
- package/storybook-static/assets/iframe-CTtK5YHC.js +1 -0
- package/storybook-static/assets/{iframe-CYobheWD.js → iframe-CZ0KI0zu.js} +4 -4
- package/storybook-static/assets/{iframe-wwpu8YXD.css → iframe-_EkhDToa.css} +1 -1
- package/storybook-static/assets/{info-YO6kz7oI.js → info-Cb4lUntE.js} +1 -1
- package/storybook-static/assets/{odata-DY-n4qXl.js → odata-CXz6Bety.js} +1 -1
- package/storybook-static/assets/{odataAndTables-CEDAX_B4.js → odataAndTables-Dog6Bul7.js} +1 -1
- package/storybook-static/assets/{odataFetchFn-OTPWXX4r.js → odataFetchFn-BwGEe7ia.js} +1 -1
- package/storybook-static/assets/odataStoryFixtures-C6PXnQRZ.js +25 -0
- package/storybook-static/assets/{persisted-XkVJ2BSX.js → persisted-5MRV37vp.js} +1 -1
- package/storybook-static/assets/{pureUtilities-CXYqAXzu.js → pureUtilities-Bn1exZyB.js} +1 -1
- package/storybook-static/assets/{react-CNEBWIpL.js → react-BqQSSAdw.js} +1 -1
- package/storybook-static/assets/{refresh-cw-tPAOjIhX.js → refresh-cw-CYH4ov0F.js} +1 -1
- package/storybook-static/assets/{runtimeAndState-4rwCbfx1.js → runtimeAndState-BJDYVcfW.js} +1 -1
- package/storybook-static/assets/{settings-2-Aj50ai8G.js → settings-2-CHcDR5TK.js} +1 -1
- package/storybook-static/assets/{sortable-CzYI9YKz.js → sortable-D2oVv65U.js} +1 -1
- package/storybook-static/assets/{syntaxhighlighter-T5IQBZDB-IJFHSaoq.js → syntaxhighlighter-T5IQBZDB-BZS8iv6c.js} +1 -1
- package/storybook-static/assets/{trash-2-C0LHJG3P.js → trash-2-K0OwBMlQ.js} +1 -1
- package/storybook-static/assets/{triangle-alert-D1MS3de_.js → triangle-alert-ByLBT1gp.js} +1 -1
- package/storybook-static/assets/ui-nZtwyXyS.css +1 -0
- package/storybook-static/assets/ui.module-DjxH5szp.js +1 -0
- package/storybook-static/assets/uiClasses-CjI3jv6I.js +1 -0
- package/storybook-static/assets/{useODataSelectBase-ComGcCMU.js → useODataSelectBase-DPQiQAXO.js} +1 -1
- package/storybook-static/assets/{useODataTreeData-zmGHo0kF.js → useODataTreeData-BmBSwDNz.js} +1 -1
- package/storybook-static/assets/{usePickerQuery-C1tepQnh.js → usePickerQuery-DIOf9uC7.js} +1 -1
- package/storybook-static/assets/{usePickerTriggerController-Cxo7izm1.js → usePickerTriggerController-gFigo0fq.js} +1 -1
- package/storybook-static/assets/{x-Dzd3S4ku.js → x-B3ccJTtF.js} +1 -1
- package/storybook-static/iframe.html +3 -3
- package/storybook-static/index.json +1 -1
- package/storybook-static/project.json +1 -1
- package/dist/chunks/radio-group-4j2HbemI.js.map +0 -1
- package/dist/chunks/ui.module-BfaIVBba.js.map +0 -1
- package/dist/chunks/uiClasses-4atXOh0J.js.map +0 -1
- package/storybook-static/assets/Badge.stories-CmzQahZl.js +0 -54
- package/storybook-static/assets/Button-G_ZnGyXY.js +0 -12
- package/storybook-static/assets/Button.stories-DKtOUA8L.js +0 -75
- package/storybook-static/assets/CheckBox.stories-CEKyfP3d.js +0 -60
- package/storybook-static/assets/ContextMenu.stories-Dv0PbUYq.js +0 -90
- package/storybook-static/assets/DateRangePresetSelect.stories-BugmuzbR.js +0 -11
- package/storybook-static/assets/Detail.stories-Dcvx2XeS.js +0 -44
- package/storybook-static/assets/Dialog.stories-BlE8KyqF.js +0 -31
- package/storybook-static/assets/Disclosure.stories-CQtDJC0Y.js +0 -40
- package/storybook-static/assets/DisclosureGroup-BBYuBGIn.css +0 -1
- package/storybook-static/assets/DisclosureGroup-C7kadoVD.js +0 -2
- package/storybook-static/assets/DropZone.stories-gbnC2zmJ.js +0 -36
- package/storybook-static/assets/ExpandableActionPanel.stories-DLM9Ngrq.js +0 -19
- package/storybook-static/assets/ImageRenderer.stories-BTTGZ1gl.js +0 -22
- package/storybook-static/assets/ImageView.stories-kHf-FdmO.js +0 -9
- package/storybook-static/assets/Input.stories-ia7ttPQv.js +0 -38
- package/storybook-static/assets/InputFile.stories-CM1CpvyA.js +0 -36
- package/storybook-static/assets/InputFiles.stories-CSGb3Fg6.js +0 -33
- package/storybook-static/assets/InputImage.stories-48QPNNvb.js +0 -45
- package/storybook-static/assets/InteractiveComponents.stories-DKpEH8Wn.js +0 -303
- package/storybook-static/assets/Listbox.stories-hZtjBKIX.js +0 -53
- package/storybook-static/assets/Modal.stories-W1kjdQpw.js +0 -180
- package/storybook-static/assets/MultiSelect.stories-BnmOPMcq.js +0 -29
- package/storybook-static/assets/NotificationsHost.stories-DOZprbOB.js +0 -25
- package/storybook-static/assets/ODataMultiSelect.stories-DDakF7DF.js +0 -73
- package/storybook-static/assets/ODataSelect.stories-Bd7IqAJz.js +0 -73
- package/storybook-static/assets/ODataTreeMultiSelect.stories-DzgVS2uv.js +0 -30
- package/storybook-static/assets/ODataTreeSelect.stories-DjUg9PpL.js +0 -24
- package/storybook-static/assets/PeriodSelect.stories-DhVcKcfE.js +0 -60
- package/storybook-static/assets/Popover.stories-EbIGa6Xz.js +0 -69
- package/storybook-static/assets/PresetRangeDateInput-BxBcwRrC.js +0 -1
- package/storybook-static/assets/PresetRangeDateInput.stories-BEiKgo4b.js +0 -15
- package/storybook-static/assets/RadioButton.stories-C2At3zOQ.js +0 -35
- package/storybook-static/assets/RadioGroup.stories-DP0Rb8kU.js +0 -42
- package/storybook-static/assets/Select.stories-DsK2KAnc.js +0 -46
- package/storybook-static/assets/SerializableSelect.stories-DwSCbcn8.js +0 -46
- package/storybook-static/assets/SingleDateTimeInput.stories-C_KdNabz.js +0 -78
- package/storybook-static/assets/Slider-BWuie2gr.css +0 -1
- package/storybook-static/assets/Slider.stories-Bbgt-EWg.js +0 -77
- package/storybook-static/assets/SliderInput.stories-BZxKunf6.js +0 -67
- package/storybook-static/assets/Sortable.stories-i35oL30b.js +0 -141
- package/storybook-static/assets/StateSelect.stories-CapA4Oy1.js +0 -44
- package/storybook-static/assets/StringToggle.stories-B9p8YjZk.js +0 -6
- package/storybook-static/assets/Switch.stories-Eli-Nxhy.js +0 -26
- package/storybook-static/assets/Table.stories-DKbzDmyV.js +0 -122
- package/storybook-static/assets/Tabs.stories-u3YDpejg.js +0 -57
- package/storybook-static/assets/TagInput.stories-BanBYkO8.js +0 -12
- package/storybook-static/assets/Textarea.stories-CFLZGItr.js +0 -27
- package/storybook-static/assets/TimePanel.stories-DbgZ63KX.js +0 -25
- package/storybook-static/assets/Toggle.stories-Cb3o7efj.js +0 -30
- package/storybook-static/assets/TreeMultiSelect.stories-39QVC3ju.js +0 -35
- package/storybook-static/assets/TreeSelect.stories-D7olQgJr.js +0 -18
- package/storybook-static/assets/TreeTable.stories-DdrbXMIl.js +0 -83
- package/storybook-static/assets/iframe-Ba8ub8fM.js +0 -1
- package/storybook-static/assets/odataStoryFixtures-BtTotZS_.js +0 -25
- package/storybook-static/assets/ui-4LkYZ0Er.css +0 -1
- package/storybook-static/assets/ui.module-CHEKb9Cb.js +0 -1
- package/storybook-static/assets/uiClasses-Bme9Qqv6.js +0 -1
- /package/storybook-static/assets/{Badge-CD5894x5.css → BadgeList-CD5894x5.css} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CZ0KI0zu.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-LF4-T76K.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./Listbox.stories-RaF4O2dQ.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:_,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,x.jsx)(u,{children:`Listbox`}),`
|
|
3
3
|
`,(0,x.jsx)(o,{children:`Список выбора для single- и multi-select сценариев, кастомного рендера элементов и блокированного состояния`}),`
|
|
4
4
|
`,(0,x.jsx)(t.p,{children:`Listbox уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./check-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{t}from"./react-C21x__mS.js";import{n,t as r}from"./check-CxEwVoKp.js";import{n as i}from"./iframe-CZ0KI0zu.js";import{a,i as o,n as s,r as c,s as l,t as u}from"./utils-DUM89eIj.js";import{n as d,t as f}from"./ui.module-DjxH5szp.js";function p(e,t,n){if(n){if(Array.isArray(t)&&t.length>0){let n=e.findIndex(e=>t.includes(e.value)&&!e.disabled);if(n>=0)return n}return c(e,_)}if(t!==void 0){let n=e.findIndex(e=>e.value===t&&!e.disabled);if(n>=0)return n}return c(e,_)}function m(e){let{value:t,defaultValue:n,multiple:i,disabled:o,focusOnMount:f,renderItem:m,getKey:v,options:y,onChange:b,id:x,...S}=e,C=t!==void 0,w=(0,h.useId)(),T=x??`${w}-listbox`,[E,D]=(0,h.useState)(n),O=(0,h.useRef)(null),[k,A]=(0,h.useState)(()=>p(y,t??n,i)),j=(0,h.useRef)(!1),M=(0,h.useMemo)(()=>(C?t:E)??(i?[]:null),[E,C,i,t]),N=k,P=t=>{if(o||t.disabled)return;let n;if(e.multiple){let r=Array.isArray(M)?M:[];n=r.includes(t.value)?r.filter(e=>e!==t.value):[...r,t.value],e.onChange?.(n,t)}else n=t.value,e.onChange?.(n,t);C||D(n)};return(0,h.useEffect)(()=>{if(!j.current)return;j.current=!1;let e=O.current?.querySelectorAll(`[role="option"]`)[N];e&&e.scrollIntoView({block:`nearest`})},[N]),(0,h.useLayoutEffect)(()=>{f&&O.current?.focus()},[f]),(0,g.jsx)(`ul`,{ref:O,id:T,role:`listbox`,"aria-multiselectable":i||void 0,"aria-activedescendant":N>=0?`${T}-option-${N}`:void 0,onKeyDown:e=>{if(!o){if(e.key===`ArrowDown`)e.preventDefault(),j.current=!0,A(e=>u(y,e,1,_));else if(e.key===`ArrowUp`)e.preventDefault(),j.current=!0,A(e=>u(y,e,-1,_));else if(e.key===`Home`)e.preventDefault(),j.current=!0,A(c(y,_));else if(e.key===`End`)e.preventDefault(),j.current=!0,A(l(y,_));else if(s(e,()=>{let e=y[N];e&&P(e)}))return}},...S,"aria-disabled":o||void 0,tabIndex:o?-1:0,className:a(d.uiPanel,`scrollable surface1`,o&&d.disabled),children:y.map((e,t)=>{let n=i?Array.isArray(M)&&M.includes(e.value):M===e.value,s=t===N;return(0,g.jsxs)(`li`,{id:`${T}-option-${t}`,role:`option`,"aria-selected":n,"aria-disabled":o||e.disabled||void 0,onMouseDown:n=>{n.preventDefault(),!(o||e.disabled)&&(A(t),P(e))},tabIndex:-1,className:a(d.uiPopupOption,(o||e.disabled)&&d.disabled,s&&d.uiPopupOptionActive,n&&d.selected),children:[n?(0,g.jsx)(r,{className:d.uiPopupOptionIcon}):(0,g.jsx)(`span`,{className:d.uiPopupOptionIcon}),(0,g.jsx)(`div`,{children:m?m(e,n,s):e.label??String(e.value)})]},v?v(e,t):t)})})}var h,g,_;function v(){return(v=e((()=>{h=t(),o(),n(),f(),g=i(),_=e=>e.disabled===!0,m.__docgenInfo={description:``,methods:[],displayName:`Listbox`}})))()}export{v as n,m as t};
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-C0FnF6B9.js";import{n}from"./iframe-CZ0KI0zu.js";import{n as r,t as i}from"./Listbox-kuB9DZmS.js";var a=t({CustomRender:()=>p,Disabled:()=>m,MultiSelect:()=>f,SingleSelect:()=>d,__namedExportsOrder:()=>h,default:()=>u});function o(e){return e.multiple?(0,s.jsx)(i,{...e,multiple:!0}):(0,s.jsx)(i,{...e})}var s,c,l,u,d,f,p,m,h;function g(){return(g=e((()=>{r(),s=n(),{useArgs:c}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:l}=__STORYBOOK_MODULE_TEST__,u={title:`Shared/UI/Listbox`,component:o,args:{options:[{id:`low`,label:`Низкий`},{id:`medium`,label:`Средний`},{id:`high`,label:`Высокий`},{id:`critical`,label:`Критический`,disabled:!0}],multiple:!1,value:`medium`,onChange:l()},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{options:{description:`Массив доступных опций списка.`,control:!1},multiple:{description:`Режим множественного выбора.`,control:`boolean`},value:{description:`Текущее выбранное значение (или массив значений).`,control:!1},defaultValue:{description:`Начальное значение для uncontrolled-режима.`,control:!1},disabled:{description:`Блокирует фокусировку, навигацию и изменение выбора.`,control:`boolean`},onChange:{description:`Вызывается при выборе опции.`,control:!1},focusOnMount:{description:`Автофокус списка при монтировании.`,control:`boolean`},renderItem:{description:`Кастомный рендер строки списка.`,control:!1},getKey:{description:`Функция генерации ключа для опции.`,control:!1}}},d={render:function(e){let[,t]=c(),n=typeof e.value==`string`?e.value:`medium`;return(0,s.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:280},children:[(0,s.jsx)(o,{...e,multiple:!1,value:n,onChange:(n,r)=>{typeof n==`string`&&(e.onChange?.(n,r),t({value:n}))}}),(0,s.jsxs)(`div`,{children:[`Выбрано: `,n]})]})}},f={render:function(e){let[,t]=c(),n=Array.isArray(e.value)?e.value:[`low`,`high`];return(0,s.jsxs)(`div`,{style:{display:`grid`,gap:12,maxWidth:320},children:[(0,s.jsx)(o,{...e,multiple:!0,value:n,onChange:(n,r)=>{Array.isArray(n)&&(e.onChange?.(n,r),t({value:n}))}}),(0,s.jsxs)(`div`,{children:[`Выбрано: `,n.join(`, `)||`пусто`]})]})},args:{multiple:!0}},p={render:function(e){let[,t]=c(),n=typeof e.value==`string`?e.value:`low`;return(0,s.jsx)(o,{...e,value:n,onChange:(n,r)=>{typeof n==`string`&&(e.onChange?.(n,r),t({value:n}))},renderItem:(e,t,n)=>(0,s.jsxs)(`div`,{style:{display:`flex`,justifyContent:`space-between`,width:`100%`,opacity:e.disabled?.5:1},children:[(0,s.jsx)(`span`,{children:e.label}),(0,s.jsx)(`span`,{children:t?`Выбрано`:n?`Фокус`:``})]})})}},m={args:{disabled:!0,value:`medium`},render:e=>(0,s.jsx)(o,{...e})},d.parameters={...d.parameters,docs:{...d.parameters?.docs,source:{originalSource:`{
|
|
2
|
+
render: function Render(args) {
|
|
3
|
+
const [, updateArgs] = useArgs<ComponentProps<typeof StringListbox>>();
|
|
4
|
+
const value = typeof args.value === "string" ? args.value : "medium";
|
|
5
|
+
return <div style={{
|
|
6
|
+
display: "grid",
|
|
7
|
+
gap: 12,
|
|
8
|
+
maxWidth: 280
|
|
9
|
+
}}>
|
|
10
|
+
<StringListbox {...args} multiple={false} value={value} onChange={(next, option) => {
|
|
11
|
+
if (typeof next !== "string") return;
|
|
12
|
+
args.onChange?.(next, option);
|
|
13
|
+
updateArgs({
|
|
14
|
+
value: next
|
|
15
|
+
});
|
|
16
|
+
}} />
|
|
17
|
+
<div>Выбрано: {value}</div>
|
|
18
|
+
</div>;
|
|
19
|
+
}
|
|
20
|
+
}`,...d.parameters?.docs?.source}}},f.parameters={...f.parameters,docs:{...f.parameters?.docs,source:{originalSource:`{
|
|
21
|
+
render: function Render(args) {
|
|
22
|
+
const [, updateArgs] = useArgs<ComponentProps<typeof StringListbox>>();
|
|
23
|
+
const value = Array.isArray(args.value) ? args.value : ["low", "high"];
|
|
24
|
+
return <div style={{
|
|
25
|
+
display: "grid",
|
|
26
|
+
gap: 12,
|
|
27
|
+
maxWidth: 320
|
|
28
|
+
}}>
|
|
29
|
+
<StringListbox {...args} multiple value={value} onChange={(next, option) => {
|
|
30
|
+
if (!Array.isArray(next)) return;
|
|
31
|
+
args.onChange?.(next, option);
|
|
32
|
+
updateArgs({
|
|
33
|
+
value: next
|
|
34
|
+
});
|
|
35
|
+
}} />
|
|
36
|
+
<div>Выбрано: {value.join(", ") || "пусто"}</div>
|
|
37
|
+
</div>;
|
|
38
|
+
},
|
|
39
|
+
args: {
|
|
40
|
+
multiple: true
|
|
41
|
+
}
|
|
42
|
+
}`,...f.parameters?.docs?.source}}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
|
|
43
|
+
render: function Render(args) {
|
|
44
|
+
const [, updateArgs] = useArgs<ComponentProps<typeof StringListbox>>();
|
|
45
|
+
const value = typeof args.value === "string" ? args.value : "low";
|
|
46
|
+
return <StringListbox {...args} value={value} onChange={(next, option) => {
|
|
47
|
+
if (typeof next !== "string") return;
|
|
48
|
+
args.onChange?.(next, option);
|
|
49
|
+
updateArgs({
|
|
50
|
+
value: next
|
|
51
|
+
});
|
|
52
|
+
}} renderItem={(option, selected, active) => <div style={{
|
|
53
|
+
display: "flex",
|
|
54
|
+
justifyContent: "space-between",
|
|
55
|
+
width: "100%",
|
|
56
|
+
opacity: option.disabled ? 0.5 : 1
|
|
57
|
+
}}>
|
|
58
|
+
<span>{option.label}</span>
|
|
59
|
+
<span>{selected ? "Выбрано" : active ? "Фокус" : ""}</span>
|
|
60
|
+
</div>} />;
|
|
61
|
+
}
|
|
62
|
+
}`,...p.parameters?.docs?.source}}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
|
|
63
|
+
args: {
|
|
64
|
+
disabled: true,
|
|
65
|
+
value: "medium"
|
|
66
|
+
},
|
|
67
|
+
render: args => <StringListbox {...args} />
|
|
68
|
+
}`,...m.parameters?.docs?.source}}},h=[`SingleSelect`,`MultiSelect`,`CustomRender`,`Disabled`]})))()}export{d as a,f as i,m as n,g as o,a as r,p as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CZ0KI0zu.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-LF4-T76K.js";import{a as p,i as m,n as h,o as g,r as _,s as v,t as y}from"./Modal.stories-jAQ3yHty.js";function b(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,S.jsxs)(S.Fragment,{children:[(0,S.jsx)(s,{of:h,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,S.jsx)(u,{children:`Modal`}),`
|
|
3
3
|
`,(0,S.jsx)(o,{children:`Составная модалка с контентом, toolbar и footer для пользовательских диалоговых сценариев`}),`
|
|
4
4
|
`,(0,S.jsx)(t.p,{children:`Modal уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
|
@@ -0,0 +1,232 @@
|
|
|
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-CZ0KI0zu.js";import{n as i,t as a}from"./Button-BUAFSG7a.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./ModalManagerProvider-_TvqmYe3.js";import{c as p,t as m}from"./Input-Fk3IRww_.js";var h=t({Controlled:()=>w,ScrollableContent:()=>E,Sizes:()=>D,StackedModals:()=>O,WithToolbarAndFooter:()=>T,__namedExportsOrder:()=>k,default:()=>C});function g({children:e}){return(0,b.jsx)(`div`,{style:{minHeight:`60dvh`,padding:24,display:`flex`,alignItems:`center`,justifyContent:`center`},children:e})}function _(){let[e,t]=(0,y.useState)(`Алексей`),[n,r]=(0,y.useState)(`Департамент автоматизации бизнеса`);return(0,b.jsxs)(`div`,{style:{display:`grid`,gap:16},children:[(0,b.jsx)(m,{label:`Имя`,value:e,onChange:t,placeholder:`Введите имя`}),(0,b.jsx)(m,{label:`Подразделение`,value:n,onChange:r,placeholder:`Введите подразделение`}),(0,b.jsxs)(`div`,{style:{padding:12,borderRadius:8,background:`var(--surface-1)`,border:`1px solid var(--border-1)`},children:[`Текущие значения: `,e||`не указано`,`, `,n||`не указано`]})]})}function v(){let[e,t]=x();return{args:e,updateArgs:t,close:()=>{e.onClose(),t({isOpen:!1})}}}var y,b,x,S,C,w,T,E,D,O,k;function A(){return(A=e((()=>{y=n(),i(),p(),d(),c(),b=r(),{useArgs:x}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:S}=__STORYBOOK_MODULE_TEST__,C={title:`Shared/UI/Modal`,component:u,parameters:{atomicCanvas:!0,layout:`fullscreen`,docs:{description:{component:"Композиционная модалка с `Toolbar`, `Content` и `Footer`, поддержкой focus trap, возврата фокуса, закрытия по `Escape` и менеджером стека через `ModalManagerProvider`."}}},decorators:[e=>(0,b.jsx)(f,{children:(0,b.jsx)(g,{children:e()})})],args:{isOpen:!1,title:`Редактирование профиля`,size:`md`,height:void 0,onClose:S(),children:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(s,{children:(0,b.jsx)(_,{})}),(0,b.jsxs)(o,{children:[(0,b.jsx)(a,{variant:`transparent`,children:`Отмена`}),(0,b.jsx)(a,{children:`Сохранить`})]})]})},argTypes:{isOpen:{description:`Управляет видимостью модального окна.`,control:`boolean`},title:{description:`Заголовок модального окна.`,control:`text`},size:{description:`Предустановленный размер модального окна.`,control:`inline-radio`,options:[`sm`,`md`,`lg`,`xl`,`inside`]},height:{description:`Явная высота body-области модалки.`,control:`text`},onClose:{description:"Вызывается при закрытии по кнопке, `Escape` или пользовательскому действию.",control:!1},children:{description:"Композиция из `ModalToolbar`, `ModalContent`, `ModalFooter`.",control:!1}}},w={name:`Управляемая модалка`,render:function(){let{args:e,close:t,updateArgs:n}=v();return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a,{onClick:()=>n({isOpen:!0}),children:`Открыть модалку`}),(0,b.jsxs)(u,{...e,isOpen:e.isOpen,onClose:t,children:[(0,b.jsx)(s,{children:(0,b.jsx)(_,{})}),(0,b.jsxs)(o,{children:[(0,b.jsx)(a,{variant:`transparent`,onClick:t,children:`Отмена`}),(0,b.jsx)(a,{onClick:t,children:`Сохранить`})]})]})]})}},T={name:`Полная композиция`,args:{title:`Редактирование профиля`,height:`min(34rem, 70dvh)`},render:function(){let{args:e,close:t,updateArgs:n}=v();return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a,{onClick:()=>n({isOpen:!0}),children:`Открыть сценарий редактирования`}),(0,b.jsxs)(u,{...e,isOpen:e.isOpen,onClose:t,children:[(0,b.jsx)(l,{children:(0,b.jsxs)(`div`,{style:{display:`flex`,alignItems:`center`,justifyContent:`space-between`,gap:12,padding:12,borderRadius:8,background:`var(--surface-1)`,border:`1px solid var(--border-1)`},children:[(0,b.jsxs)(`div`,{children:[(0,b.jsx)(`div`,{style:{fontWeight:600},children:`Черновик обновлён автоматически`}),(0,b.jsx)(`div`,{style:{opacity:.72},children:`Последнее сохранение: 2 минуты назад`})]}),(0,b.jsx)(a,{variant:`transparent`,children:`Сбросить`})]})}),(0,b.jsx)(s,{children:(0,b.jsx)(_,{})}),(0,b.jsxs)(o,{children:[(0,b.jsx)(a,{variant:`transparent`,onClick:t,children:`Отмена`}),(0,b.jsx)(a,{variant:`success`,onClick:t,children:`Применить`})]})]})]})}},E={name:`Длинный контент`,args:{size:`lg`,height:`min(38rem, 75dvh)`,title:`Журнал изменений`},render:function(){let{args:e,close:t,updateArgs:n}=v();return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a,{onClick:()=>n({isOpen:!0}),children:`Открыть длинный контент`}),(0,b.jsxs)(u,{...e,isOpen:e.isOpen,onClose:t,children:[(0,b.jsx)(s,{children:(0,b.jsx)(`div`,{style:{display:`grid`,gap:12},children:Array.from({length:18},(e,t)=>(0,b.jsxs)(`div`,{style:{padding:12,borderRadius:8,border:`1px solid var(--border-1)`,background:`var(--surface-1)`},children:[(0,b.jsxs)(`div`,{style:{fontWeight:600},children:[`Событие #`,t+1]}),(0,b.jsx)(`div`,{style:{opacity:.72},children:`Пользователь обновил настройки карточки, изменил состав полей и подтвердил сохранение конфигурации.`})]},t))})}),(0,b.jsx)(o,{children:(0,b.jsx)(a,{onClick:t,children:`Закрыть`})})]})]})}},D={name:`Размеры`,args:{size:`sm`,title:`Размер SM`},render:function(){let{args:e,close:t,updateArgs:n}=v();return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(`div`,{style:{display:`flex`,flexWrap:`wrap`,gap:12,justifyContent:`center`},children:[`sm`,`md`,`lg`,`xl`,`inside`].map(e=>(0,b.jsx)(a,{variant:`transparent`,onClick:()=>n({isOpen:!0,size:e,title:`Размер ${e.toUpperCase()}`}),children:e.toUpperCase()},e))}),(0,b.jsxs)(u,{...e,isOpen:e.isOpen,onClose:t,children:[(0,b.jsx)(s,{children:(0,b.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,b.jsx)(`div`,{children:`Этот сценарий помогает быстро сравнить ширину и поведение модалки для разных размеров.`}),(0,b.jsx)(`div`,{style:{opacity:.72},children:"Проверьте отступы, читабельность и поведение при `Escape`."})]})}),(0,b.jsx)(o,{children:(0,b.jsx)(a,{onClick:t,children:`Понятно`})})]})]})}},O={name:`Стек модалок`,args:{size:`lg`,title:`Первая модалка`},render:function(){let{args:e,updateArgs:t}=v(),[n,r]=(0,y.useState)(!1),i=()=>{r(!1),e.onClose(),t({isOpen:!1})};return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(a,{onClick:()=>t({isOpen:!0}),children:`Открыть первую модалку`}),(0,b.jsxs)(u,{...e,isOpen:e.isOpen,onClose:i,children:[(0,b.jsx)(s,{children:(0,b.jsxs)(`div`,{style:{display:`grid`,gap:16},children:[(0,b.jsx)(`div`,{children:"Откройте вторую модалку и проверьте, что `Escape` закрывает только верхний слой."}),(0,b.jsx)(a,{variant:`transparent`,onClick:()=>r(!0),children:`Открыть вторую модалку`})]})}),(0,b.jsx)(o,{children:(0,b.jsx)(a,{variant:`transparent`,onClick:i,children:`Закрыть первую`})})]}),(0,b.jsxs)(u,{isOpen:n,onClose:()=>r(!1),size:`sm`,title:`Вторая модалка`,children:[(0,b.jsx)(s,{children:(0,b.jsxs)(`div`,{style:{display:`grid`,gap:12},children:[(0,b.jsx)(`div`,{children:`Эта модалка должна считаться верхней в стеке.`}),(0,b.jsx)(m,{label:`Короткое поле`,value:`Фокус внутри`,onChange:()=>{}})]})}),(0,b.jsx)(o,{children:(0,b.jsx)(a,{onClick:()=>r(!1),children:`Закрыть вторую`})})]})]})}},w.parameters={...w.parameters,docs:{...w.parameters?.docs,source:{originalSource:`{
|
|
2
|
+
name: "Управляемая модалка",
|
|
3
|
+
render: function Render() {
|
|
4
|
+
const {
|
|
5
|
+
args,
|
|
6
|
+
close,
|
|
7
|
+
updateArgs
|
|
8
|
+
} = useModalStoryArgs();
|
|
9
|
+
return <>
|
|
10
|
+
<Button onClick={() => updateArgs({
|
|
11
|
+
isOpen: true
|
|
12
|
+
})}>Открыть модалку</Button>
|
|
13
|
+
<Modal {...args} isOpen={args.isOpen} onClose={close}>
|
|
14
|
+
<ModalContent>
|
|
15
|
+
<DemoFormContent />
|
|
16
|
+
</ModalContent>
|
|
17
|
+
<ModalFooter>
|
|
18
|
+
<Button variant="transparent" onClick={close}>
|
|
19
|
+
Отмена
|
|
20
|
+
</Button>
|
|
21
|
+
<Button onClick={close}>Сохранить</Button>
|
|
22
|
+
</ModalFooter>
|
|
23
|
+
</Modal>
|
|
24
|
+
</>;
|
|
25
|
+
}
|
|
26
|
+
}`,...w.parameters?.docs?.source}}},T.parameters={...T.parameters,docs:{...T.parameters?.docs,source:{originalSource:`{
|
|
27
|
+
name: "Полная композиция",
|
|
28
|
+
args: {
|
|
29
|
+
title: "Редактирование профиля",
|
|
30
|
+
height: "min(34rem, 70dvh)"
|
|
31
|
+
},
|
|
32
|
+
render: function Render() {
|
|
33
|
+
const {
|
|
34
|
+
args,
|
|
35
|
+
close,
|
|
36
|
+
updateArgs
|
|
37
|
+
} = useModalStoryArgs();
|
|
38
|
+
return <>
|
|
39
|
+
<Button onClick={() => updateArgs({
|
|
40
|
+
isOpen: true
|
|
41
|
+
})}>Открыть сценарий редактирования</Button>
|
|
42
|
+
<Modal {...args} isOpen={args.isOpen} onClose={close}>
|
|
43
|
+
<ModalToolbar>
|
|
44
|
+
<div style={{
|
|
45
|
+
display: "flex",
|
|
46
|
+
alignItems: "center",
|
|
47
|
+
justifyContent: "space-between",
|
|
48
|
+
gap: 12,
|
|
49
|
+
padding: 12,
|
|
50
|
+
borderRadius: 8,
|
|
51
|
+
background: "var(--surface-1)",
|
|
52
|
+
border: "1px solid var(--border-1)"
|
|
53
|
+
}}>
|
|
54
|
+
<div>
|
|
55
|
+
<div style={{
|
|
56
|
+
fontWeight: 600
|
|
57
|
+
}}>Черновик обновлён автоматически</div>
|
|
58
|
+
<div style={{
|
|
59
|
+
opacity: 0.72
|
|
60
|
+
}}>Последнее сохранение: 2 минуты назад</div>
|
|
61
|
+
</div>
|
|
62
|
+
<Button variant="transparent">Сбросить</Button>
|
|
63
|
+
</div>
|
|
64
|
+
</ModalToolbar>
|
|
65
|
+
<ModalContent>
|
|
66
|
+
<DemoFormContent />
|
|
67
|
+
</ModalContent>
|
|
68
|
+
<ModalFooter>
|
|
69
|
+
<Button variant="transparent" onClick={close}>
|
|
70
|
+
Отмена
|
|
71
|
+
</Button>
|
|
72
|
+
<Button variant="success" onClick={close}>
|
|
73
|
+
Применить
|
|
74
|
+
</Button>
|
|
75
|
+
</ModalFooter>
|
|
76
|
+
</Modal>
|
|
77
|
+
</>;
|
|
78
|
+
}
|
|
79
|
+
}`,...T.parameters?.docs?.source}}},E.parameters={...E.parameters,docs:{...E.parameters?.docs,source:{originalSource:`{
|
|
80
|
+
name: "Длинный контент",
|
|
81
|
+
args: {
|
|
82
|
+
size: "lg",
|
|
83
|
+
height: "min(38rem, 75dvh)",
|
|
84
|
+
title: "Журнал изменений"
|
|
85
|
+
},
|
|
86
|
+
render: function Render() {
|
|
87
|
+
const {
|
|
88
|
+
args,
|
|
89
|
+
close,
|
|
90
|
+
updateArgs
|
|
91
|
+
} = useModalStoryArgs();
|
|
92
|
+
return <>
|
|
93
|
+
<Button onClick={() => updateArgs({
|
|
94
|
+
isOpen: true
|
|
95
|
+
})}>Открыть длинный контент</Button>
|
|
96
|
+
<Modal {...args} isOpen={args.isOpen} onClose={close}>
|
|
97
|
+
<ModalContent>
|
|
98
|
+
<div style={{
|
|
99
|
+
display: "grid",
|
|
100
|
+
gap: 12
|
|
101
|
+
}}>
|
|
102
|
+
{Array.from({
|
|
103
|
+
length: 18
|
|
104
|
+
}, (_, index) => <div key={index} style={{
|
|
105
|
+
padding: 12,
|
|
106
|
+
borderRadius: 8,
|
|
107
|
+
border: "1px solid var(--border-1)",
|
|
108
|
+
background: "var(--surface-1)"
|
|
109
|
+
}}>
|
|
110
|
+
<div style={{
|
|
111
|
+
fontWeight: 600
|
|
112
|
+
}}>Событие #{index + 1}</div>
|
|
113
|
+
<div style={{
|
|
114
|
+
opacity: 0.72
|
|
115
|
+
}}>
|
|
116
|
+
Пользователь обновил настройки карточки, изменил состав полей и подтвердил сохранение конфигурации.
|
|
117
|
+
</div>
|
|
118
|
+
</div>)}
|
|
119
|
+
</div>
|
|
120
|
+
</ModalContent>
|
|
121
|
+
<ModalFooter>
|
|
122
|
+
<Button onClick={close}>Закрыть</Button>
|
|
123
|
+
</ModalFooter>
|
|
124
|
+
</Modal>
|
|
125
|
+
</>;
|
|
126
|
+
}
|
|
127
|
+
}`,...E.parameters?.docs?.source}}},D.parameters={...D.parameters,docs:{...D.parameters?.docs,source:{originalSource:`{
|
|
128
|
+
name: "Размеры",
|
|
129
|
+
args: {
|
|
130
|
+
size: "sm",
|
|
131
|
+
title: "Размер SM"
|
|
132
|
+
},
|
|
133
|
+
render: function Render() {
|
|
134
|
+
const {
|
|
135
|
+
args,
|
|
136
|
+
close,
|
|
137
|
+
updateArgs
|
|
138
|
+
} = useModalStoryArgs();
|
|
139
|
+
return <>
|
|
140
|
+
<div style={{
|
|
141
|
+
display: "flex",
|
|
142
|
+
flexWrap: "wrap",
|
|
143
|
+
gap: 12,
|
|
144
|
+
justifyContent: "center"
|
|
145
|
+
}}>
|
|
146
|
+
{(["sm", "md", "lg", "xl", "inside"] as const).map(size => <Button key={size} variant="transparent" onClick={() => updateArgs({
|
|
147
|
+
isOpen: true,
|
|
148
|
+
size,
|
|
149
|
+
title: \`Размер \${size.toUpperCase()}\`
|
|
150
|
+
})}>
|
|
151
|
+
{size.toUpperCase()}
|
|
152
|
+
</Button>)}
|
|
153
|
+
</div>
|
|
154
|
+
|
|
155
|
+
<Modal {...args} isOpen={args.isOpen} onClose={close}>
|
|
156
|
+
<ModalContent>
|
|
157
|
+
<div style={{
|
|
158
|
+
display: "grid",
|
|
159
|
+
gap: 12
|
|
160
|
+
}}>
|
|
161
|
+
<div>Этот сценарий помогает быстро сравнить ширину и поведение модалки для разных размеров.</div>
|
|
162
|
+
<div style={{
|
|
163
|
+
opacity: 0.72
|
|
164
|
+
}}>Проверьте отступы, читабельность и поведение при \`Escape\`.</div>
|
|
165
|
+
</div>
|
|
166
|
+
</ModalContent>
|
|
167
|
+
<ModalFooter>
|
|
168
|
+
<Button onClick={close}>Понятно</Button>
|
|
169
|
+
</ModalFooter>
|
|
170
|
+
</Modal>
|
|
171
|
+
</>;
|
|
172
|
+
}
|
|
173
|
+
}`,...D.parameters?.docs?.source}}},O.parameters={...O.parameters,docs:{...O.parameters?.docs,source:{originalSource:`{
|
|
174
|
+
name: "Стек модалок",
|
|
175
|
+
args: {
|
|
176
|
+
size: "lg",
|
|
177
|
+
title: "Первая модалка"
|
|
178
|
+
},
|
|
179
|
+
render: function Render() {
|
|
180
|
+
const {
|
|
181
|
+
args,
|
|
182
|
+
updateArgs
|
|
183
|
+
} = useModalStoryArgs();
|
|
184
|
+
const [innerOpen, setInnerOpen] = useState(false);
|
|
185
|
+
const closeOuter = () => {
|
|
186
|
+
setInnerOpen(false);
|
|
187
|
+
args.onClose();
|
|
188
|
+
updateArgs({
|
|
189
|
+
isOpen: false
|
|
190
|
+
});
|
|
191
|
+
};
|
|
192
|
+
return <>
|
|
193
|
+
<Button onClick={() => updateArgs({
|
|
194
|
+
isOpen: true
|
|
195
|
+
})}>Открыть первую модалку</Button>
|
|
196
|
+
|
|
197
|
+
<Modal {...args} isOpen={args.isOpen} onClose={closeOuter}>
|
|
198
|
+
<ModalContent>
|
|
199
|
+
<div style={{
|
|
200
|
+
display: "grid",
|
|
201
|
+
gap: 16
|
|
202
|
+
}}>
|
|
203
|
+
<div>Откройте вторую модалку и проверьте, что \`Escape\` закрывает только верхний слой.</div>
|
|
204
|
+
<Button variant="transparent" onClick={() => setInnerOpen(true)}>
|
|
205
|
+
Открыть вторую модалку
|
|
206
|
+
</Button>
|
|
207
|
+
</div>
|
|
208
|
+
</ModalContent>
|
|
209
|
+
<ModalFooter>
|
|
210
|
+
<Button variant="transparent" onClick={closeOuter}>
|
|
211
|
+
Закрыть первую
|
|
212
|
+
</Button>
|
|
213
|
+
</ModalFooter>
|
|
214
|
+
</Modal>
|
|
215
|
+
|
|
216
|
+
<Modal isOpen={innerOpen} onClose={() => setInnerOpen(false)} size="sm" title="Вторая модалка">
|
|
217
|
+
<ModalContent>
|
|
218
|
+
<div style={{
|
|
219
|
+
display: "grid",
|
|
220
|
+
gap: 12
|
|
221
|
+
}}>
|
|
222
|
+
<div>Эта модалка должна считаться верхней в стеке.</div>
|
|
223
|
+
<Input label="Короткое поле" value="Фокус внутри" onChange={() => {}} />
|
|
224
|
+
</div>
|
|
225
|
+
</ModalContent>
|
|
226
|
+
<ModalFooter>
|
|
227
|
+
<Button onClick={() => setInnerOpen(false)}>Закрыть вторую</Button>
|
|
228
|
+
</ModalFooter>
|
|
229
|
+
</Modal>
|
|
230
|
+
</>;
|
|
231
|
+
}
|
|
232
|
+
}`,...O.parameters?.docs?.source}}},k=[`Controlled`,`WithToolbarAndFooter`,`ScrollableContent`,`Sizes`,`StackedModals`]})))()}export{O as a,D as i,h as n,T as o,E as r,A as s,w as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./x-
|
|
1
|
+
import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./x-B3ccJTtF.js";import{n as a}from"./iframe-CZ0KI0zu.js";import{t as o}from"./react-dom-2o2phaJG.js";import{a as s,i as c}from"./utils-DUM89eIj.js";import{a as l,n as u,r as d,t as ee}from"./dom-B3G_GtJw.js";import{n as f,t as p}from"./FlexContainer-LmZIdhq2.js";import{n as m,t as te}from"./Button-BUAFSG7a.js";import{a as ne,c as h,l as g,n as re,o as _,r as ie,s as v,t as y}from"./react-BqQSSAdw.js";import{n as b,t as ae}from"./GridContainer-qDguE1HS.js";import{n as x,t as S}from"./Scrollable-7AnJblZH.js";function oe(){!v.current&&ne();let[e]=(0,C.useState)(g.current);return e}var C;function w(){return(w=e((()=>{h(),_(),C=n()})))()}var T,E,D,O,k,A,j,M,N,P,F,I;function L(){return(L=e((()=>{T=`vGPUKV`,E=`O7gb7P`,D=`RVq8v3`,O=`PCSUAL`,k=`XDCHzq`,A=`t1kl8L`,j=`o3PEEB`,M=`WhUkxm`,N=`NDgdMi`,P=`JDlse5`,F=`FaDKSt`,I={modal:T,sm:E,md:D,lg:O,xl:k,xxl:A,inside:j,header:M,body:N,headerText:P,headerButton:F}})))()}var R,z,se;function B(){return(B=e((()=>{R={hidden:{opacity:0,scale:.96,y:12},visible:{opacity:1,scale:1,y:0}},z={duration:.18,ease:[.22,1,.36,1]},se={duration:0}})))()}var V,H,U;function W(){return(W=e((()=>{V=n(),H=(0,V.createContext)({modals:[],openModal:()=>{},closeModal:()=>{},isTopModal:()=>!1}),U=()=>(0,V.useContext)(H)})))()}var G,K,q,J,Y,X,ce;function le(){return(le=e((()=>{G=t(n(),1),d(),c(),r(),y(),K=o(),m(),f(),b(),x(),L(),B(),W(),q=a(),J=({children:e,className:t})=>(0,q.jsx)(`div`,{className:s(`surface2 paddingMd borderBottom`,t),children:e}),J.displayName=`Modal.Toolbar`,Y=({children:e,className:t,scrollable:n})=>(0,q.jsx)(`div`,{className:s(`paddingMd h100 overflowHidden`,t),children:n?(0,q.jsx)(S,{className:`h100`,children:e}):e}),Y.displayName=`Modal.Content`,X=({children:e,className:t})=>(0,q.jsx)(`div`,{className:s(`surface2 borderTop paddingMd`,t),children:(0,q.jsx)(p,{gap:`sm`,align:`center`,justify:`end`,children:e})}),X.displayName=`Modal.Footer`,ce=({isOpen:e,title:t,size:n=`sm`,height:r,onClose:a,children:o})=>{let c=(0,G.useId)(),d=(0,G.useId)(),{modals:f,openModal:p,closeModal:m,isTopModal:ne}=U(),h=oe(),g=(0,G.useRef)(null),_=(0,G.useRef)(0),v=e&&(f.length===0||ne(c));(0,G.useEffect)(()=>{e&&(g.current=document.activeElement instanceof HTMLElement?document.activeElement:null)},[e]);let y=l({active:e||!1,trapFocus:!0,restoreFocus:!1});u({active:v||!1,onDismiss:a,containerRef:y}),(0,G.useEffect)(()=>{e&&p(c)},[e,c,p]),(0,G.useEffect)(()=>()=>{window.cancelAnimationFrame(_.current),m(c)},[m,c]);function b(){m(c);let e=g.current;_.current=window.requestAnimationFrame(()=>{e?.isConnected&&e.focus(),g.current=null})}let x=ee(`modal-root`);if(!x)return null;let S=null,C=null,w=null,T=G.Children.toArray(o);for(let e of T)switch(e.type.displayName){case J.displayName:if(S)throw Error(`Modal: duplicate <Toolbar> found`);S=e;break;case X.displayName:if(w)throw Error(`Modal: duplicate <Footer> found`);w=e;break;case Y.displayName:if(C)throw Error(`Modal: duplicate <Content> found`);C=e}return(0,K.createPortal)((0,q.jsx)(ie,{onExitComplete:b,children:e?(0,q.jsxs)(re.div,{ref:y,className:s(I.modal,I[n]),style:{height:r},role:`dialog`,"aria-modal":`true`,"aria-labelledby":d,"aria-describedby":`${d}-content`,initial:`hidden`,animate:`visible`,exit:`hidden`,variants:R,transition:h?se:z,children:[(0,q.jsxs)(`div`,{className:s(I.header,S?``:`borderBottom`),children:[(0,q.jsx)(`h3`,{className:I.headerText,id:d,children:t}),(0,q.jsx)(te,{icon:(0,q.jsx)(i,{}),className:I.headerButton,variant:`ghost`,"aria-label":`Закрыть модальное окно`,onClick:a})]}),(0,q.jsxs)(ae,{id:`${d}-content`,templateRows:`${S?`auto`:``} 1fr ${w?`auto`:``}`.trim(),className:I.body,children:[S,C,w]})]}):null}),x)},J.__docgenInfo={description:``,methods:[],displayName:`Modal.Toolbar`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}},Y.__docgenInfo={description:``,methods:[],displayName:`Modal.Content`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``},scrollable:{required:!1,tsType:{name:`boolean`},description:``}}},X.__docgenInfo={description:``,methods:[],displayName:`Modal.Footer`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},className:{required:!1,tsType:{name:`string`},description:``}}}})))()}function ue({children:e,compensateScrollbar:t=!1}){let[n,r]=(0,Z.useState)([]),i=(0,Z.useRef)(0),a=(0,Z.useRef)(0),o=(0,Z.useRef)(``),s=(0,Z.useRef)(!1),c=(0,Z.useCallback)(e=>{r(t=>[...t,e])},[]),l=(0,Z.useCallback)(e=>{r(t=>t.filter(t=>t!==e))},[]),u=(0,Z.useCallback)(e=>n[n.length-1]===e,[n]);return(0,Z.useEffect)(()=>{let e=i.current===0;if(e&&n.length>0){let e=window.scrollY,r=document.querySelector(`#app-root`);a.current=Math.max(0,window.innerWidth-document.documentElement.clientWidth),o.current=document.body.style.paddingRight,document.body.style.position=`fixed`,document.body.style.top=`-${e}px`,document.body.style.width=`100%`,t&&(document.body.style.paddingRight=`${a.current}px`,s.current=!0),r?.setAttribute(`inert`,`true`),i.current=n.length;return}if(!e&&n.length>0&&t!==s.current&&(document.body.style.paddingRight=t?`${a.current}px`:o.current,s.current=t),!e&&n.length===0){let e=document.querySelector(`#app-root`),t=parseInt(document.body.style.top||`0`)*-1;document.body.style.position=``,document.body.style.top=``,document.body.style.width=``,s.current&&=(document.body.style.paddingRight=o.current,!1),e?.removeAttribute(`inert`),window.scrollTo({top:t,left:0,behavior:`instant`})}i.current=n.length},[t,n.length]),(0,Q.jsx)(H.Provider,{value:{modals:n,openModal:c,closeModal:l,isTopModal:u},children:e})}var Z,Q;function $(){return($=e((()=>{Z=t(n(),1),W(),Q=a(),ue.__docgenInfo={description:`Провайдер для централизованного управления стеком модальных окон. Дает вложенным компонентам доступ к открытию и закрытию модалок через контекст.`,methods:[],displayName:`ModalManagerProvider`,props:{children:{required:!0,tsType:{name:`ReactReactNode`,raw:`React.ReactNode`},description:``},compensateScrollbar:{required:!1,tsType:{name:`boolean`},description:`Компенсирует исчезновение скроллбара правым padding у body.`,defaultValue:{value:`false`,computed:!1}}}}})))()}export{X as a,w as c,Y as i,$ as n,J as o,ce as r,le as s,ue as t};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CZ0KI0zu.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-LF4-T76K.js";import{a as p,i as m,n as h,o as g,r as _,t as v}from"./MultiSelect.stories-Cc4-fIjA.js";function y(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...n(),...e.components};return(0,x.jsxs)(x.Fragment,{children:[(0,x.jsx)(s,{of:p,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,x.jsx)(u,{children:`MultiSelect`}),`
|
|
3
3
|
`,(0,x.jsx)(o,{children:`Мультиселект для локальных коллекций с токенами, поиском и состояниями загрузки`}),`
|
|
4
4
|
`,(0,x.jsx)(t.p,{children:`MultiSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./CheckBox-
|
|
1
|
+
import{n as e,o as t}from"./rolldown-runtime-C0FnF6B9.js";import{t as n}from"./react-C21x__mS.js";import{n as r,t as i}from"./CheckBox-CIv6lt7Z.js";import{n as a,t as ee}from"./x-B3ccJTtF.js";import{n as o}from"./iframe-CZ0KI0zu.js";import{a as te,i as s}from"./utils-DUM89eIj.js";import{n as c,t as l}from"./Text-VK5-gznU.js";import{n as u,t as d}from"./ui.module-DjxH5szp.js";import{c as f,g as p,h as m,i as h,l as g,m as _,n as ne,p as re,r as v,s as ie,t as ae,u as y}from"./usePickerTriggerController-gFigo0fq.js";import{i as b,n as oe,r as x,t as S}from"./usePickerQuery-DIOf9uC7.js";import{n as C,t as se}from"./PickerTriggerActions-Bt4rbg1T.js";import{n as w,t as T}from"./usePickerDefaultFilter-Be420WNF.js";import{a as ce,d as le,f as ue,i as E,l as de,n as fe,o as pe,t as me,u as D}from"./defaultRenderers-CJ0K8d9m.js";function O({text:e,isError:t}){return(0,k.jsxs)(`div`,{className:u.uiPopupOption,children:[(0,k.jsx)(`span`,{className:u.uiPopupOptionIcon}),(0,k.jsx)(l,{color:t?`error`:`primary`,children:e})]})}var k;function A(){return(A=e((()=>{c(),d(),k=o(),O.__docgenInfo={description:"Скелетон строки опции для `MultiSelect`. Используется во время загрузки или при отображении ошибок получения списка.",methods:[],displayName:`MultiSelectOptionSkeleton`,props:{text:{required:!0,tsType:{name:`string`},description:``},isError:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}function he({isNoData:e,isLoading:t,error:n,children:r}){return e?(0,P.jsx)(x,{emptyState:(0,P.jsx)(O,{text:`Нет данных`})}):t?(0,P.jsx)(x,{loadingState:(0,P.jsx)(O,{text:`Загрузка...`})}):n?(0,P.jsx)(x,{errorState:(0,P.jsx)(O,{isError:!0,text:`Ошибка загрузки`})}):(0,P.jsx)(P.Fragment,{children:r})}function j(e,t){return e[t]}function ge(e,t,n){return Array.from(new Set([e[n],e[t],...Object.values(e)]))}function _e(e,t,n){if(e.length!==t.length)return!1;let r=new Set(t.map(e=>j(e,n)));return e.every(e=>r.has(j(e,n)))}function M({entries:e,listId:t,activeIndex:n,selectedKeys:r,codeKey:a,query:ee,highlightQuery:o,getOptionDisabled:s,getOptionId:c,setOptionRef:l,toggleOption:d,selectOnlyOption:f,renderItem:p}){return e.map(({item:e,index:m})=>{let h=m===n,g=r.has(j(e,a)),_=s?.(e)??!1;return(0,P.jsxs)(`div`,{id:c(t,m),ref:e=>l(m,e),role:`option`,"aria-selected":g,"aria-disabled":_||void 0,className:te(u.uiSelectOption,_&&u.disabled,g&&u.selected,h&&u.uiPopupOptionActive),onMouseDown:e=>{e.preventDefault()},children:[(0,P.jsx)(`div`,{onClick:e=>{e.stopPropagation()},children:(0,P.jsx)(i,{value:g,disabled:_,onChange:()=>{_||d(e)},onClick:e=>{e.stopPropagation()},onMouseDown:e=>{e.stopPropagation()}})}),(0,P.jsx)(`div`,{className:`overflowHidden`,onClick:()=>{_||f(e)},children:p(e,{selected:g,active:h,disabled:_,query:ee,highlightQuery:o})})]},`${j(e,a)}-${m}`)})}var N,P,F,I;function L(){return(L=e((()=>{N=t(n(),1),s(),a(),r(),p(),y(),b(),C(),f(),T(),v(),S(),le(),ae(),_(),d(),E(),D(),A(),P=o(),F=[],I=(0,N.forwardRef)(({codeKey:e,textKey:t,hideCode:n,items:r,value:i,onChange:a,label:o,description:te,placeholder:s,size:c,query:l,defaultQuery:d,highlightQuery:f,onQuery:p,defaultFilter:_=!0,onOpen:v,onClose:ae,getOptionDisabled:y,disabled:b,error:x,isLoading:S,renderToken:C,renderToolbar:T,renderItem:le},E)=>{let D=(0,N.useRef)(null),[O,k]=(0,N.useState)(!1),A=`search-multi`,I=i??F,L=(0,N.useMemo)(()=>new Set(I.map(t=>j(t,e))),[e,I]),R=(0,N.useMemo)(()=>r.filter(t=>!L.has(j(t,e))),[e,L,r]),z=(0,N.useMemo)(()=>pe([...I,...r],e,t),[e,I,r,t]),{query:B,setQuery:ve,resetQueryOnClose:ye}=oe({query:l,defaultQuery:d,onQuery:p,triggerMode:A}),be=e=>{O&&!e&&ye&&ve(``),k(e)},V=w({options:I,query:B,enabled:_,getSearchText:t=>ge(t,e,z)}),H=w({options:R,query:B,enabled:_,getSearchText:t=>ge(t,e,z)}),U=(0,N.useMemo)(()=>[...V,...H],[H,V]),xe=V.length>0?0:-1,{draftValue:W,setDraftValue:G,prepareOpen:Se}=ue({value:I,open:O,onCommit:a,onOpen:v,onClose:ae,isEqual:(t,n)=>_e(t,n,e)}),K=(0,N.useMemo)(()=>new Set(W.map(t=>j(t,e))),[e,W]),Ce=(0,N.useMemo)(()=>({selectedItems:W,committedSelectedItems:I,selectedKeys:K,open:O}),[I,W,O,K]),q=(0,N.useCallback)(e=>y?.(e,Ce)??!1,[y,Ce]),{activeIndex:J,context:we,floatingStyles:Te,getFloatingProps:Ee,setReference:De,setFloating:Oe,setOptionRef:ke,close:Ae,openList:je,toggleOpen:Me,selectActiveOption:Ne,handleReferenceKeyDown:Pe,handleFloatingKeyDown:Fe,getOptionId:Ie,getActiveOptionId:Le}=h({options:U,selectedIndex:xe,open:O,onOpenChange:be,onSelect:void 0,disabled:b,getOptionDisabled:q,closeOnSelect:!1,allowOpenWithoutOptions:!0,triggerMode:A}),Re=f??B,Y=t=>{let n=j(t,e);G(r=>r.some(t=>j(t,e)===n)?r.filter(t=>j(t,e)!==n):q(t)?r:[...r,t])},ze=e=>{if(D.current=e,typeof E==`function`){E(e);return}E&&(E.current=e)},Be=()=>{G([]),O||a([])},Ve=()=>{G(t=>{let n=[...t],r=new Set(t.map(t=>j(t,e)));for(let t of U){let i=j(t,e);!r.has(i)&&!q(t)&&(r.add(i),n.push(t))}return n})},He=()=>{G([])},Ue=e=>{q(e)||(G([e]),Ae())},We=O?W:I,X=We.length>0,Ge={selectedItems:We,committedSelectedItems:I,availableItems:H,query:B,open:O,clearSelection:Be,selectAll:Ve,deselectAll:He},Ke=C===void 0?fe({codeKey:e,textKey:z}):C,qe=T===void 0?ce:T,Z=le??me({codeKey:e,textKey:z,hideCode:n}),Je=typeof Ke==`function`?Ke(Ge):null,Ye=typeof qe==`function`?qe(Ge):null,Q=V.map((e,t)=>({item:e,index:t})),Xe=H.map((e,t)=>({item:e,index:t+Q.length})),Ze=!S&&!x&&U.length===0,$=ne({mode:A,open:O,currentQuery:B,hasDisplayValue:!1,inputRef:D,setQuery:ve,openList:je,close:Ae,toggleOpen:Me,onBeforeOpen:()=>{O||Se()}});return(0,P.jsx)(m,{label:o,description:te,disabled:b,size:c,className:de.multiSelect,children:({controlId:t,labelId:n,describedBy:i})=>{let a=`${t}-listbox`;return(0,P.jsxs)(P.Fragment,{children:[(0,P.jsx)(ie,{ref:ze,rootRef:De,id:t,type:`text`,role:`combobox`,autoComplete:`off`,disabled:b,value:B,placeholder:X?void 0:`${s??o??`Выберите значения`} <${r.length}>`,"aria-labelledby":n,"aria-describedby":i,"aria-haspopup":`listbox`,"aria-expanded":O,"aria-controls":O?a:void 0,"aria-autocomplete":`list`,"aria-activedescendant":O?Le(a):void 0,rootClassName:`flex alignItemsCenter`,endAdornment:(0,P.jsx)(se,{open:O,disabled:b,onToggleMouseDown:$.handleToggleMouseDown,onToggleClick:$.handleToggleClick,children:(0,P.jsx)(`button`,{type:`button`,disabled:!X,className:u.uiClearButton,"data-ui":`multi-select-clear-button`,"data-action":`clear-multi-select`,onClick:Be,"aria-label":`Очистить все`,children:(0,P.jsx)(ee,{})})}),overlay:Je,onChange:e=>{$.handleTriggerInputChange(e.target.value)},onClick:$.handleTriggerClick,onFocus:e=>{$.handleTriggerFocus(e.currentTarget)},onKeyDown:e=>{Pe(e),!e.defaultPrevented&&$.handleTriggerKeyDown({event:e,onActivateWhenOpen:()=>{if(J>=0){let e=U[J];if(e){Y(e);return}}Ne()},enableClosedArrowDownOpen:!0,suppressClosedArrowUp:!0})}}),(0,P.jsx)(g,{open:O,context:we,floatingStyles:Te,listId:a,labelId:n,descriptionId:i,activeOptionId:O?Le(a):void 0,setFloating:Oe,getFloatingProps:Ee,onKeyDown:Fe,initialFocus:-1,returnFocus:!1,tabIndex:-1,className:u.uiPopupOptions,header:Ye,children:(0,P.jsx)(he,{isNoData:Ze,isLoading:S,error:x,children:(0,P.jsxs)(`div`,{className:`scrollable h100`,children:[(0,P.jsx)(M,{entries:Q,listId:a,activeIndex:J,selectedKeys:K,codeKey:e,query:B,highlightQuery:Re,getOptionDisabled:q,getOptionId:Ie,setOptionRef:ke,toggleOption:Y,selectOnlyOption:Ue,renderItem:Z}),Q.length>0&&R.length>0&&(0,P.jsx)(re,{className:`marginBlockSm`}),(0,P.jsx)(M,{entries:Xe,listId:a,activeIndex:J,selectedKeys:K,codeKey:e,query:B,highlightQuery:Re,getOptionDisabled:q,getOptionId:Ie,setOptionRef:ke,toggleOption:Y,selectOnlyOption:Ue,renderItem:Z})]})})})]})}})}),I.displayName=`MultiSelect`,I.__docgenInfo={description:`Поле множественного выбора с внутренним черновиком значений и подтверждением выбора при закрытии списка.
|
|
2
2
|
Подходит как для самостоятельного использования, так и как базовый слой для OData-оберток.`,methods:[],displayName:`MultiSelect`,props:{renderToken:{required:!1,tsType:{name:`union`,raw:`((context: TContext) => React.ReactNode) | null | false`,elements:[{name:`unknown`},{name:`null`},{name:`literal`,value:`false`}]},description:``},renderToolbar:{required:!1,tsType:{name:`union`,raw:`((context: TContext) => React.ReactNode) | null | false`,elements:[{name:`unknown`},{name:`null`},{name:`literal`,value:`false`}]},description:``},renderItem:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: CollectionItem, state: MultiSelectItemState) => React.ReactNode`,signature:{arguments:[{type:{name:`CollectionItem`},name:`item`},{type:{name:`MultiSelectItemState`},name:`state`}],return:{name:`ReactReactNode`,raw:`React.ReactNode`}}},description:``},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:``},codeKey:{required:!0,tsType:{name:`string`},description:``},textKey:{required:!1,tsType:{name:`string`},description:``},hideCode:{required:!1,tsType:{name:`boolean`},description:``},query:{required:!1,tsType:{name:`string`},description:``},defaultQuery:{required:!1,tsType:{name:`string`},description:``},highlightQuery:{required:!1,tsType:{name:`string`},description:``},onQuery:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: string) => void`,signature:{arguments:[{type:{name:`string`},name:`value`}],return:{name:`void`}}},description:``},defaultFilter:{required:!1,tsType:{name:`boolean`},description:``,defaultValue:{value:`true`,computed:!1}},items:{required:!0,tsType:{name:`Array`,elements:[{name:`TOption`}],raw:`TOption[]`},description:``},getOptionDisabled:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(item: TOption, context: MultiSelectOptionDisableContext) => boolean`,signature:{arguments:[{type:{name:`TOption`},name:`item`},{type:{name:`MultiSelectOptionDisableContext`},name:`context`}],return:{name:`boolean`}}},description:``},onOpen:{required:!1,tsType:{name:`signature`,type:`function`,raw:`() => void`,signature:{arguments:[],return:{name:`void`}}},description:``},onClose:{required:!1,tsType:{name:`signature`,type:`function`,raw:`(value: TOption[]) => void`,signature:{arguments:[{type:{name:`Array`,elements:[{name:`TOption`}],raw:`TOption[]`},name:`value`}],return:{name:`void`}}},description:``},error:{required:!1,tsType:{name:`string`},description:``},isLoading:{required:!1,tsType:{name:`boolean`},description:``}}}})))()}export{L as n,I as t};
|
|
@@ -0,0 +1,55 @@
|
|
|
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-CZ0KI0zu.js";import{n as i,t as a}from"./MultiSelect-DiBUW3Jo.js";var o=t({Basic:()=>p,Empty:()=>g,ErrorState:()=>h,Loading:()=>m,__namedExportsOrder:()=>_,default:()=>f}),s,c,l,u,d,f,p,m,h,g,_;function v(){return(v=e((()=>{s=n(),i(),c=r(),{useArgs:l}=__STORYBOOK_MODULE_PREVIEW_API__,{fn:u}=__STORYBOOK_MODULE_TEST__,d=[{code:`MOW`,label:`Москва`},{code:`SPB`,label:`Санкт-Петербург`},{code:`EKB`,label:`Екатеринбург`},{code:`KZN`,label:`Казань`},{code:`NSK`,label:`Новосибирск`}],f={title:`Shared/UI/MultiSelect`,component:a,args:{label:`Города`,description:`Выберите несколько значений.`,placeholder:`Начните вводить`,value:[],onChange:u(),codeKey:`code`,textKey:`label`,items:d,query:``,onQuery:u(),onOpen:()=>{},onClose:u(),size:`md`,disabled:!1},parameters:{atomicCanvas:!0,layout:`padded`},argTypes:{label:{description:`Заголовок поля.`,control:`text`},description:{description:`Описание под полем.`,control:`text`},placeholder:{description:`Текст пустого поля.`,control:`text`},value:{description:`Контролируемый набор выбранных option.`,control:!1},onChange:{description:`Вызывается после подтверждения набора option.`,control:!1},codeKey:{description:`Имя поля option с уникальным ключом.`,control:`text`},textKey:{description:`Имя поля option с отображаемым текстом.`,control:`text`},hideCode:{description:`Скрывает код option в токенах и списке.`,control:`boolean`},items:{description:`Набор доступных option.`,control:!1},query:{description:`Контролируемый текст поиска.`,control:`text`},defaultQuery:{description:`Начальный текст поиска в uncontrolled-режиме.`,control:`text`},highlightQuery:{description:`Текст, который подсвечивается в option.`,control:`text`},onQuery:{description:`Вызывается при вводе поисковой строки.`,control:!1},defaultFilter:{description:`Включает встроенную фильтрацию option.`,control:`boolean`},getOptionDisabled:{description:`Блокирует отдельные option с учетом текущего выбора.`,control:!1},onOpen:{description:`Вызывается при открытии списка.`,control:!1},onClose:{description:`Вызывается при закрытии списка после commit.`,control:!1},error:{description:`Текст ошибки загрузки option.`,control:`text`},isLoading:{description:`Показывает состояние загрузки option.`,control:`boolean`},renderToken:{description:`Кастомный рендер выбранных токенов.`,control:!1},renderToolbar:{description:`Кастомный рендер toolbar popup.`,control:!1},renderItem:{description:`Кастомный рендер строки option.`,control:!1},disabled:{description:`Блокирует взаимодействие с полем.`,control:`boolean`},size:{description:`Размер поля и подписей.`,control:`select`,options:[`xs`,`sm`,`md`,`lg`,`xl`]}}},p={render:function(e){let[,t]=l(),n=e.value??[d[1]],r=e.query??``,i=(0,s.useMemo)(()=>{let e=r.trim().toLowerCase();return e?d.filter(t=>t.label.toLowerCase().includes(e)||t.code.toLowerCase().includes(e)):d},[r]);return(0,c.jsx)(a,{...e,value:n,items:i,query:r,onQuery:n=>{e.onQuery?.(n),t({query:n})},onChange:n=>{e.onChange(n),t({value:n})}})}},m={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],isLoading:!0,onChange:n=>{e.onChange(n),t({value:n})}})}},h={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],error:`Ошибка загрузки`,onChange:n=>{e.onChange(n),t({value:n})}})}},g={render:function(e){let[,t]=l();return(0,c.jsx)(a,{...e,value:e.value??[],items:[],onChange:n=>{e.onChange(n),t({value:n})}})}},p.parameters={...p.parameters,docs:{...p.parameters?.docs,source:{originalSource:`{
|
|
2
|
+
render: function Render(args) {
|
|
3
|
+
const [, updateArgs] = useArgs<React.ComponentProps<typeof MultiSelect>>();
|
|
4
|
+
const value = args.value ?? [catalog[1]!];
|
|
5
|
+
const query = args.query ?? "";
|
|
6
|
+
const filteredItems = useMemo(() => {
|
|
7
|
+
const needle = query.trim().toLowerCase();
|
|
8
|
+
if (!needle) {
|
|
9
|
+
return catalog;
|
|
10
|
+
}
|
|
11
|
+
return catalog.filter(item => item.label.toLowerCase().includes(needle) || item.code.toLowerCase().includes(needle));
|
|
12
|
+
}, [query]);
|
|
13
|
+
return <MultiSelect {...args} value={value} items={filteredItems} query={query} onQuery={query => {
|
|
14
|
+
args.onQuery?.(query);
|
|
15
|
+
updateArgs({
|
|
16
|
+
query
|
|
17
|
+
});
|
|
18
|
+
}} onChange={value => {
|
|
19
|
+
args.onChange(value);
|
|
20
|
+
updateArgs({
|
|
21
|
+
value
|
|
22
|
+
});
|
|
23
|
+
}} />;
|
|
24
|
+
}
|
|
25
|
+
}`,...p.parameters?.docs?.source}}},m.parameters={...m.parameters,docs:{...m.parameters?.docs,source:{originalSource:`{
|
|
26
|
+
render: function Render(args) {
|
|
27
|
+
const [, updateArgs] = useArgs<React.ComponentProps<typeof MultiSelect>>();
|
|
28
|
+
return <MultiSelect {...args} value={args.value ?? []} items={[]} isLoading onChange={value => {
|
|
29
|
+
args.onChange(value);
|
|
30
|
+
updateArgs({
|
|
31
|
+
value
|
|
32
|
+
});
|
|
33
|
+
}} />;
|
|
34
|
+
}
|
|
35
|
+
}`,...m.parameters?.docs?.source}}},h.parameters={...h.parameters,docs:{...h.parameters?.docs,source:{originalSource:`{
|
|
36
|
+
render: function Render(args) {
|
|
37
|
+
const [, updateArgs] = useArgs<React.ComponentProps<typeof MultiSelect>>();
|
|
38
|
+
return <MultiSelect {...args} value={args.value ?? []} items={[]} error="Ошибка загрузки" onChange={value => {
|
|
39
|
+
args.onChange(value);
|
|
40
|
+
updateArgs({
|
|
41
|
+
value
|
|
42
|
+
});
|
|
43
|
+
}} />;
|
|
44
|
+
}
|
|
45
|
+
}`,...h.parameters?.docs?.source}}},g.parameters={...g.parameters,docs:{...g.parameters?.docs,source:{originalSource:`{
|
|
46
|
+
render: function Render(args) {
|
|
47
|
+
const [, updateArgs] = useArgs<React.ComponentProps<typeof MultiSelect>>();
|
|
48
|
+
return <MultiSelect {...args} value={args.value ?? []} items={[]} onChange={value => {
|
|
49
|
+
args.onChange(value);
|
|
50
|
+
updateArgs({
|
|
51
|
+
value
|
|
52
|
+
});
|
|
53
|
+
}} />;
|
|
54
|
+
}
|
|
55
|
+
}`,...g.parameters?.docs?.source}}},_=[`Basic`,`Loading`,`ErrorState`,`Empty`]})))()}export{o as a,m as i,g as n,v as o,h as r,p as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CZ0KI0zu.js";import{a as n,i as r}from"./utils-DUM89eIj.js";import{n as i,t as a}from"./Text-VK5-gznU.js";var o,s;function c(){return(c=e((()=>{r(),o=t(),s=({className:e,minHeight:t,children:r,style:i,...a})=>{let s=t===void 0?i:{...i,minHeight:t};return(0,o.jsx)(`div`,{...a,className:n(`flexCenter h100`,e),style:s,children:r})},s.__docgenInfo={description:``,methods:[],displayName:`FlexCenter`,props:{children:{required:!1,tsType:{name:`ReactNode`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``}},composes:[`Omit`]}})))()}var l,u;function d(){return(d=e((()=>{l=`qgIKVo`,u={componentLoader:l}})))()}var f,p;function m(){return(m=e((()=>{r(),c(),i(),f=t(),p=({className:e,children:t,color:r=`muted`,minHeight:i,uppercase:o=!0})=>(0,f.jsx)(s,{className:n(`paddingMd textCenter`,e),minHeight:i,children:(0,f.jsx)(a,{as:`div`,weight:`bold`,color:r,uppercase:o,children:t})}),p.__docgenInfo={description:``,methods:[],displayName:`Message`,props:{color:{defaultValue:{value:`"muted"`,computed:!1},required:!1},uppercase:{defaultValue:{value:`true`,computed:!1},required:!1}}}})))()}function h({className:e,logo:t,text:r}){return(0,g.jsxs)(p,{className:n(u.componentLoader,t?void 0:`skeletonLine`,e),children:[t,r||`Загрузка...`]})}var g;function _(){return(_=e((()=>{r(),d(),m(),g=t(),h.__docgenInfo={description:``,methods:[],displayName:`LoadingMessage`,props:{className:{required:!1,tsType:{name:`string`},description:``},logo:{required:!1,tsType:{name:`ReactNode`},description:`Готовый брендовый знак, которым host-проект при необходимости дополняет сообщение о загрузке.`},text:{required:!1,tsType:{name:`string`},description:``}}}})))()}var v,y;function b(){return(b=e((()=>{m(),v=t(),y=({className:e,text:t,minHeight:n=`5em`})=>(0,v.jsx)(p,{className:e,color:`muted`,minHeight:n,children:t||`Нет данных`}),y.__docgenInfo={description:``,methods:[],displayName:`NoData`,props:{className:{required:!1,tsType:{name:`string`},description:``},text:{required:!1,tsType:{name:`string`},description:``},minHeight:{required:!1,tsType:{name:`union`,raw:`string | number`,elements:[{name:`string`},{name:`number`}]},description:``,defaultValue:{value:`"5em"`,computed:!1}}}}})))()}export{_ as i,b as n,h as r,y as t};
|
package/storybook-static/assets/{NotificationsHost-DGolEXP8.js → NotificationsHost-DDxqV6_Y.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{i as t,n,r,t as i}from"./NotificationsHost.stories-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{i as t,n,r,t as i}from"./NotificationsHost.stories-tMVttzUz.js";import{n as a}from"./iframe-CZ0KI0zu.js";import{i as o,r as s}from"./react-qN2cStNd.js";import{a as c,d as l,f as u,l as d,m as f,n as p,p as m,r as h,u as g}from"./blocks-LF4-T76K.js";function _(e){let t={code:`code`,h2:`h2`,h3:`h3`,li:`li`,p:`p`,pre:`pre`,ul:`ul`,...o(),...e.components};return(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(d,{of:n,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,y.jsx)(m,{children:`NotificationsHost`}),`
|
|
3
3
|
`,(0,y.jsx)(u,{children:`Хост глобальных уведомлений для очереди toast-сообщений и длинных пользовательских операций`}),`
|
|
4
4
|
`,(0,y.jsx)(t.p,{children:`NotificationsHost уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|
|
@@ -0,0 +1,29 @@
|
|
|
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,t as i}from"./check-CxEwVoKp.js";import{n as a,t as o}from"./circle-alert-B_axag0r.js";import{n as s,t as c}from"./circle-check-DdUogvti.js";import{i as l,n as ee,r as te,t as ne}from"./info-Cb4lUntE.js";import{n as re,t as ie}from"./refresh-cw-CYH4ov0F.js";import{n as ae,t as oe}from"./trash-2-K0OwBMlQ.js";import{n as se,t as u}from"./triangle-alert-ByLBT1gp.js";import{n as ce,t as le}from"./x-B3ccJTtF.js";import{i as d,n as f,r as p}from"./iframe-CZ0KI0zu.js";import{a as ue,i as de}from"./utils-DUM89eIj.js";import{n as fe}from"./error-BZrNlEUO.js";import{n as pe,t as me}from"./FlexContainer-LmZIdhq2.js";import{n as he,t as m}from"./Button-BUAFSG7a.js";import{a as ge,i as _e,n as ve,r as h}from"./react-CvkUhHUq.js";var g,_;function v(){return(v=e((()=>{d(),g=[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]],_=p(`bell-ring`,g)})))()}var y,b;function x(){return(x=e((()=>{d(),y=[[`path`,{d:`M10 2h4`,key:`n1abiw`}],[`path`,{d:`M12 14v-4`,key:`1evpnu`}],[`path`,{d:`M4 13a8 8 0 0 1 8-7 8 8 0 1 1-5.3 14L4 17.6`,key:`1ts96g`}],[`path`,{d:`M9 17H4v5`,key:`8t5av`}]],b=p(`timer-reset`,y)})))()}var S,C,w,T,E,D,O;function k(){return(k=e((()=>{ge(),S=null,C=e=>(S=e,()=>{S===e&&(S=null)}),w=()=>{if(!S)throw Error(`Notifications store is not bound. Wrap app with NotificationsProvider.`);return S},T=Object.freeze({push:e=>w().getState().actions.push(e),upsert:e=>w().getState().actions.upsert(e),update:(e,t)=>w().getState().actions.update(e,t),dismiss:e=>w().getState().actions.dismiss(e),clear:()=>w().getState().actions.clear(),success:(e,t)=>w().getState().actions.push({type:`success`,message:e,...t}),info:(e,t)=>w().getState().actions.push({type:`info`,message:e,...t}),warning:(e,t)=>w().getState().actions.push({type:`warning`,message:e,...t}),error:(e,t)=>w().getState().actions.push({type:`error`,message:e,...t}),progress:(e,t)=>{let n=w(),r=t?.id;r&&n.getState().actions.upsert({id:r,type:`info`,title:t?.title,message:e,dismissible:!1});let i=r??n.getState().actions.push({type:`info`,title:t?.title,message:e,dismissible:!1});return{id:i,update:e=>T.update(i,{message:e}),success:(e,t=2500)=>T.update(i,{type:`success`,message:e,dismissible:!0,ttlMs:t}),error:(e,t=5e3)=>T.update(i,{type:`error`,message:e,dismissible:!0,ttlMs:t}),dismiss:()=>T.dismiss(i)}}}),E=()=>`${Date.now().toString(36)}-${Math.random().toString(36).slice(2,9)}`,D=6,O=()=>{let e=new Map,t=t=>{let n=e.get(t);n&&(window.clearTimeout(n),e.delete(t))},n=(n,r,i=1e4)=>{if(t(r),i<=0)return;let a=window.setTimeout(()=>{n.getState().actions.dismiss(r)},i);e.set(r,a)},r=_e()((i,a)=>({items:[],actions:{push:e=>{let t=e.id??E(),a=Date.now(),o={id:t,type:e.type,title:e.title,message:e.message,createdAt:a,ttlMs:e.ttlMs,dismissible:e.dismissible??!0,actions:e.actions};return i(e=>({items:[o,...e.items.filter(e=>e.id!==t)].slice(0,D)})),n(r,t,o.ttlMs),t},update:(e,t)=>{let{items:o}=a(),s=o.findIndex(t=>t.id===e);if(s===-1)return!1;let c=o[s],l={...c,...t,id:c.id,createdAt:c.createdAt};return i(t=>({items:t.items.map(t=>t.id===e?l:t)})),`ttlMs`in t&&n(r,e,l.ttlMs),!0},upsert:e=>a().actions.update(e.id,{type:e.type,title:e.title,message:e.message,ttlMs:e.ttlMs,dismissible:e.dismissible})?e.id:a().actions.push(e),dismiss:e=>{t(e),i(t=>({items:t.items.filter(t=>t.id!==e)}))},clear:()=>{e.forEach(e=>window.clearTimeout(e)),e.clear(),i({items:[]})}}}));return r}})))()}function A({children:e}){let t=(0,N.useMemo)(()=>O(),[]);return(0,N.useEffect)(()=>C(t),[t]),(0,P.jsx)(F.Provider,{value:t,children:e})}function j(){let e=(0,N.useContext)(F);if(!e)throw fe({hookName:`useNotificationApi`,providerName:`NotificationsProvider`});return e}function ye(){let e=j();return h(e,e=>e.items)}function M(){let e=j(),t=h(e,e=>e.actions),n=e=>(n,r)=>t.push({type:e,message:n,...r});return{...t,success:n(`success`),info:n(`info`),warning:n(`warning`),error:n(`error`)}}var N,P,F;function I(){return(I=e((()=>{N=n(),k(),ve(),P=f(),F=(0,N.createContext)(null),A.__docgenInfo={description:`Провайдер уведомлений приложения. Хранит состояние списка уведомлений и предоставляет хуки доступа к нему.`,methods:[],displayName:`NotificationsProvider`}})))()}var L,R,z,B,V,H,U,be,xe,Se,Ce,we,Te,Ee,W;function De(){return(De=e((()=>{L=`STGQ3g`,R=`RaiISE`,z=`cM81wO`,B=`nH2cuZ`,V=`A2glD7`,H=`yWjijS`,U=`_1HO2ne`,be=`OyRJpj`,xe=`vrCrow`,Se=`A0X-ma`,Ce=`AkHvPV`,we=`_4YDLB5`,Te=`CK3Bqv`,Ee=`nLmQut`,W={container:L,card:R,info:z,success:B,warning:V,error:H,header:U,content:be,copy:xe,icon:Se,kicker:Ce,title:we,message:Te,actions:Ee}})))()}function G(){let e=ye(),{dismiss:t}=M();return(0,K.jsx)(`div`,{className:W.container,"aria-label":`Область уведомлений`,"aria-live":`polite`,"aria-relevant":`additions text`,children:e.map(e=>{let n=Oe[e.type],r=e.title??n.title,i=n.Icon;return(0,K.jsx)(`article`,{role:e.type===`error`?`alert`:`status`,"aria-atomic":`true`,className:ue(W.card,W[e.type]),children:(0,K.jsxs)(me,{align:`start`,justify:`between`,gap:`sm`,className:W.header,children:[(0,K.jsxs)(me,{align:`start`,gap:`sm`,className:W.content,children:[(0,K.jsx)(`span`,{className:W.icon,"aria-hidden":`true`,children:(0,K.jsx)(i,{})}),(0,K.jsxs)(`div`,{className:W.copy,children:[(0,K.jsx)(`div`,{className:W.kicker,children:n.title}),e.title?(0,K.jsx)(`div`,{className:W.title,children:r}):null,(0,K.jsx)(`div`,{className:W.message,children:e.message}),e.actions?.length?(0,K.jsx)(`div`,{className:W.actions,children:e.actions.map(t=>(0,K.jsx)(m,{tone:t.tone??e.type,appearance:`outline`,"data-ui":`notification-action-button`,"data-action":`notification-action`,onClick:()=>void t.onClick(),children:t.label},t.label))}):null]})]}),e.dismissible===!1?null:(0,K.jsx)(m,{icon:(0,K.jsx)(le,{}),appearance:`ghost`,tone:e.type,onClick:()=>t(e.id),"aria-label":`Закрыть уведомление`,"data-ui":`notification-dismiss-button`,"data-action":`dismiss-notification`})]})},e.id)})})}var K,Oe;function ke(){return(ke=e((()=>{de(),a(),s(),ee(),se(),ce(),he(),pe(),I(),De(),K=f(),Oe={info:{title:`Информация`,Icon:ne},success:{title:`Успешно`,Icon:c},warning:{title:`Предупреждение`,Icon:u},error:{title:`Ошибка`,Icon:o}},G.__docgenInfo={description:`Хост для визуального отображения очереди уведомлений.
|
|
2
|
+
Обычно монтируется один раз на уровне приложения рядом с провайдером уведомлений.`,methods:[],displayName:`NotificationsHost`}})))()}var Ae=t({InteractivePlayground:()=>Q,Showcase:()=>Z,__namedExportsOrder:()=>He,default:()=>Le});function je(){let{clear:e}=M();return(0,q.useEffect)(()=>(e(),()=>{e()}),[e]),null}function Me({children:e,hostProps:t}){return(0,J.jsxs)(A,{children:[(0,J.jsx)(je,{}),(0,J.jsx)(`div`,{style:Re,children:(0,J.jsxs)(`div`,{style:ze,children:[(0,J.jsxs)(`div`,{style:Be,children:[(0,J.jsx)(`h2`,{style:{margin:0,fontSize:`var(--font-size-xl)`},children:`Демонстрация очереди уведомлений`}),(0,J.jsx)(`p`,{style:{margin:`12px 0 0`,color:`var(--content-1)`},children:"Хост закреплён в левом нижнем углу и использует общие токены проекта: `surface`, `content`, `status` и семантические `tone-*`. Внутри историй можно проверить лимит очереди, sticky-уведомления и сценарий длительной операции с обновлением одного уведомления."})]}),e]})}),(0,J.jsx)(G,{...t})]})}function Ne({children:e}){let[t]=Ie();return(0,J.jsx)(Me,{hostProps:t,children:e})}function Pe(){let{clear:e,push:t}=M();return(0,q.useEffect)(()=>(e(),t({type:`info`,title:`Сетевой статус`,message:`Подключение к серверу восстановлено.`,ttlMs:6e3}),t({type:`success`,title:`Профиль обновлён`,message:`Изменения сохранены и отправлены в очередь на синхронизацию.`,ttlMs:4500}),t({type:`warning`,title:`Требуется внимание`,message:`Срок действия сессии истекает через 5 минут.`}),t({type:`error`,title:`Ошибка импорта`,message:`Не удалось загрузить журнал операций.
|
|
3
|
+
Повторите запрос или обратитесь к администратору.`}),()=>{e()}),[e,t]),(0,J.jsxs)(`div`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Снимок состояний`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:`История сразу заполняет очередь всеми типами уведомлений, чтобы оценить цвет, иконки, контраст и читаемость текста.`})]})}function Fe(){let e=M(),t=(0,q.useRef)(null),[n,r]=(0,q.useState)(!1),a=()=>{t.current=null,r(!1)},o=(n,r)=>{let i=t.current;i&&(!e.update(i,{message:n,...r})||r?.type)&&a()};return(0,J.jsxs)(`div`,{style:Ve,children:[(0,J.jsxs)(`section`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Базовые сценарии`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:"Вызовы через `useNotify` подходят для UI-логики внутри React-компонентов."}),(0,J.jsxs)(`div`,{style:X,children:[(0,J.jsx)(m,{tone:`info`,appearance:`outline`,icon:(0,J.jsx)(ne,{}),onClick:()=>e.info(`Справочник обновлён по расписанию.`,{title:`Информация`,ttlMs:3500}),children:`Info`}),(0,J.jsx)(m,{tone:`success`,appearance:`solid`,icon:(0,J.jsx)(i,{}),onClick:()=>e.success(`Изменения сохранены.`,{title:`Операция завершена`,ttlMs:2500}),children:`Success`}),(0,J.jsx)(m,{tone:`warning`,appearance:`outline`,icon:(0,J.jsx)(u,{}),onClick:()=>e.warning(`Подтвердите действие в течение 2 минут.`,{title:`Требуется подтверждение`,dismissible:!1}),children:`Sticky warning`}),(0,J.jsx)(m,{tone:`error`,appearance:`solid`,icon:(0,J.jsx)(te,{}),onClick:()=>e.error(`Сервис проверки подписей недоступен.`,{title:`Критическая ошибка`}),children:`Error`})]})]}),(0,J.jsxs)(`section`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Долгая операция`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:"Сценарий имитирует `notify.progress`: создаёт одно sticky-уведомление и затем обновляет его по тому же `id`."}),(0,J.jsxs)(`div`,{style:X,children:[(0,J.jsx)(m,{variant:`neutralOutline`,icon:(0,J.jsx)(_,{}),onClick:()=>{let n=e.push({type:`info`,title:`Экспорт архива`,message:`Подготавливаю пакет документов...`,dismissible:!1});t.current=n,r(!0)},children:`Запустить`}),(0,J.jsx)(m,{variant:`neutralOutline`,icon:(0,J.jsx)(ie,{}),onClick:()=>{o(`Обработано 68% записей. Формирую итоговый архив...`)},disabled:!n,children:`Обновить прогресс`}),(0,J.jsx)(m,{tone:`success`,appearance:`outline`,icon:(0,J.jsx)(i,{}),onClick:()=>{o(`Архив подготовлен и доступен для скачивания.`,{type:`success`,ttlMs:2500,dismissible:!0})},disabled:!n,children:`Завершить успешно`}),(0,J.jsx)(m,{tone:`error`,appearance:`outline`,icon:(0,J.jsx)(te,{}),onClick:()=>{o(`Не удалось собрать архив из-за ошибки чтения вложений.`,{type:`error`,ttlMs:5e3,dismissible:!0})},disabled:!n,children:`Завершить ошибкой`})]})]}),(0,J.jsxs)(`section`,{style:Y,children:[(0,J.jsx)(`h3`,{style:{margin:0},children:`Очередь и очистка`}),(0,J.jsx)(`p`,{style:{margin:0,color:`var(--content-1)`},children:`Стор сохраняет не более 6 уведомлений. Кнопка ниже специально создаёт 8 элементов, чтобы проверить отсечение старых записей.`}),(0,J.jsxs)(`div`,{style:X,children:[(0,J.jsx)(m,{variant:`neutralOutline`,icon:(0,J.jsx)(ie,{}),onClick:()=>{for(let t=1;t<=8;t+=1)e.info(`Пакет ${t} поставлен в очередь на обработку.`,{title:`Задача ${t}`,ttlMs:8e3})},children:`Заполнить очередь`}),(0,J.jsx)(m,{tone:`info`,appearance:`outline`,icon:(0,J.jsx)(b,{}),onClick:()=>e.info(`Это уведомление исчезнет автоматически через 2 секунды.`,{title:`TTL = 2000 мс`,ttlMs:2e3}),children:`Проверить TTL`}),(0,J.jsx)(m,{variant:`transparent`,icon:(0,J.jsx)(oe,{}),onClick:()=>{a(),e.clear()},children:`Очистить всё`})]})]})]})}var q,J,Ie,Le,Re,ze,Be,Ve,Y,X,Z,Q,He;function $(){return($=e((()=>{q=n(),v(),r(),ee(),re(),x(),ae(),se(),l(),he(),I(),ke(),J=f(),{useArgs:Ie}=__STORYBOOK_MODULE_PREVIEW_API__,Le={title:`Shared/UI/Notifications`,component:G,args:{},argTypes:{},parameters:{atomicCanvas:!0,layout:`fullscreen`,docs:{description:{component:`Компонент отображает очередь глобальных уведомлений поверх интерфейса. Истории ниже показывают внешний вид для разных статусов, работу автозакрытия, ограничение очереди и сценарий длительной операции с обновлением одного уведомления.`}}}},Re={minHeight:`100vh`,padding:`32px 24px 160px`,background:`linear-gradient(180deg, color-mix(in srgb, var(--surface-1) 82%, transparent) 0%, var(--surface-0) 100%)`,color:`var(--content-0)`},ze={maxWidth:1120,margin:`0 auto`,display:`grid`,gap:16},Be={padding:20,border:`var(--border)`,borderRadius:`var(--radius-md)`,background:`var(--surface-0)`,boxShadow:`var(--shadow-sm)`},Ve={display:`grid`,gap:16,gridTemplateColumns:`repeat(auto-fit, minmax(280px, 1fr))`},Y={padding:20,border:`var(--border)`,borderRadius:`var(--radius-md)`,background:`var(--surface-0)`,boxShadow:`var(--shadow-sm)`,display:`grid`,gap:12,alignContent:`start`},X={display:`flex`,flexWrap:`wrap`,gap:10},Z={render:function(){return(0,J.jsx)(Ne,{children:(0,J.jsx)(Pe,{})})},parameters:{docs:{description:{story:`Быстрый визуальный обзор: все статусы сразу добавляются в очередь после открытия истории.`}}}},Q={render:function(){return(0,J.jsx)(Ne,{children:(0,J.jsx)(Fe,{})})},parameters:{docs:{description:{story:`Интерактивный сценарий для проверки базовых уведомлений, длительной операции, лимита очереди и автозакрытия.`}}}},Z.parameters={...Z.parameters,docs:{...Z.parameters?.docs,source:{originalSource:`{
|
|
4
|
+
render: function Render() {
|
|
5
|
+
return <NotificationsStoryCanvas>
|
|
6
|
+
<ShowcaseSeed />
|
|
7
|
+
</NotificationsStoryCanvas>;
|
|
8
|
+
},
|
|
9
|
+
parameters: {
|
|
10
|
+
docs: {
|
|
11
|
+
description: {
|
|
12
|
+
story: "Быстрый визуальный обзор: все статусы сразу добавляются в очередь после открытия истории."
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
}`,...Z.parameters?.docs?.source}}},Q.parameters={...Q.parameters,docs:{...Q.parameters?.docs,source:{originalSource:`{
|
|
17
|
+
render: function Render() {
|
|
18
|
+
return <NotificationsStoryCanvas>
|
|
19
|
+
<PlaygroundPanel />
|
|
20
|
+
</NotificationsStoryCanvas>;
|
|
21
|
+
},
|
|
22
|
+
parameters: {
|
|
23
|
+
docs: {
|
|
24
|
+
description: {
|
|
25
|
+
story: "Интерактивный сценарий для проверки базовых уведомлений, длительной операции, лимита очереди и автозакрытия."
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}`,...Q.parameters?.docs?.source}}},He=[`Showcase`,`InteractivePlayground`]})))()}export{$ as i,Ae as n,Z as r,Q as t};
|
package/storybook-static/assets/{ODataMultiSelect-zz9GzQ4E.js → ODataMultiSelect-96O4f-qa.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-
|
|
1
|
+
import{n as e}from"./rolldown-runtime-C0FnF6B9.js";import{n as t}from"./iframe-CZ0KI0zu.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-LF4-T76K.js";import{a as p,c 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"./ODataMultiSelect.stories-DpRZoXwK.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:b,parameters:{docs:{toc:!0}}}),`
|
|
2
2
|
`,(0,T.jsx)(u,{children:`ODataMultiSelect`}),`
|
|
3
3
|
`,(0,T.jsx)(o,{children:`Мультиселект с загрузкой коллекций по OData и зависимостями от внешних фильтров`}),`
|
|
4
4
|
`,(0,T.jsx)(t.p,{children:`ODataMultiSelect уже имеет живые stories, а эта страница собирает их в структурированную документацию с краткими рекомендациями, примерами подключения и API.
|