@ryuzaki13/react-foundation-ui 1.0.0 → 1.0.2
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.d.ts +3 -0
- package/dist/advanced-search/index.d.ts.map +1 -0
- package/dist/advanced-search/index.js +361 -0
- package/dist/advanced-search/index.js.map +1 -0
- package/dist/advanced-search/lib/index.d.ts +2 -0
- package/dist/advanced-search/lib/index.d.ts.map +1 -0
- package/dist/advanced-search/lib/searchParts.d.ts +3 -0
- package/dist/advanced-search/lib/searchParts.d.ts.map +1 -0
- package/dist/advanced-search/model/index.d.ts +5 -0
- package/dist/advanced-search/model/index.d.ts.map +1 -0
- package/dist/advanced-search/model/types.d.ts +55 -0
- package/dist/advanced-search/model/types.d.ts.map +1 -0
- package/dist/advanced-search/model/useAdvancedSearch.d.ts +11 -0
- package/dist/advanced-search/model/useAdvancedSearch.d.ts.map +1 -0
- package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts +6 -0
- package/dist/advanced-search/model/useAdvancedSearchInitialSelected.d.ts.map +1 -0
- package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts +13 -0
- package/dist/advanced-search/model/useAdvancedSearchSelection.d.ts.map +1 -0
- package/dist/advanced-search/ui/AdvancedSearchModal.d.ts +13 -0
- package/dist/advanced-search/ui/AdvancedSearchModal.d.ts.map +1 -0
- package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts +8 -0
- package/dist/advanced-search/ui/AdvancedSearchSelect.d.ts.map +1 -0
- package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts +9 -0
- package/dist/advanced-search/ui/AdvancedSearchSelectUI.d.ts.map +1 -0
- package/dist/advanced-search/ui/index.d.ts +2 -0
- package/dist/advanced-search/ui/index.d.ts.map +1 -0
- package/dist/badge/Badge.d.ts.map +1 -1
- package/dist/badge/index.js +1 -1
- package/dist/badge/stories/Badge.stories.js +22 -22
- package/dist/base-table/index.js +2 -2
- package/dist/base-table/lib/columnPinning.d.ts.map +1 -1
- package/dist/base-table/model/useTableColumnOrder.d.ts +1 -1
- package/dist/base-table/model/useTableColumnOrder.d.ts.map +1 -1
- package/dist/base-table/model/useTableColumnSizing.d.ts +1 -1
- package/dist/base-table/model/useTableColumnSizing.d.ts.map +1 -1
- package/dist/base-table/ui/BaseTable.d.ts +2 -2
- package/dist/base-table/ui/BaseTable.d.ts.map +1 -1
- package/dist/base-table/ui/BaseTableHeaderCell.d.ts.map +1 -1
- package/dist/base-table/ui/FormattedTableCell.d.ts.map +1 -1
- package/dist/button/index.js +7 -7
- package/dist/button/stories/Button.stories.js +1 -1
- package/dist/check-box/CheckBox.d.ts.map +1 -1
- package/dist/check-box/index.js +1 -1
- package/dist/check-box/stories/CheckBox.stories.js +25 -25
- package/dist/chunks/{BadgeList-DHW_Ktr3.js → BadgeList-DYgun2rf.js} +16 -16
- package/dist/chunks/BadgeList-DYgun2rf.js.map +1 -0
- package/dist/chunks/{Button-BZ_b-Kin.js → Button-CCWuggdA.js} +16 -16
- package/dist/chunks/{Button-BZ_b-Kin.js.map → Button-CCWuggdA.js.map} +1 -1
- package/dist/chunks/{CalendarView-B75faWIU.js → CalendarView-DjeTJkTT.js} +149 -149
- package/dist/chunks/{CalendarView-B75faWIU.js.map → CalendarView-DjeTJkTT.js.map} +1 -1
- package/dist/chunks/{CheckBox-Cck5w1Ud.js → CheckBox-BowNqqd3.js} +13 -13
- package/dist/chunks/CheckBox-BowNqqd3.js.map +1 -0
- package/dist/chunks/{DateInput-CINDYueM.js → DateInput--tfofQ2x.js} +68 -68
- package/dist/chunks/DateInput--tfofQ2x.js.map +1 -0
- package/dist/chunks/{DateRangePresetSelect-CyzGMvVp.js → DateRangePresetSelect-UgsfaOeM.js} +22 -22
- package/dist/chunks/{DateRangePresetSelect-CyzGMvVp.js.map → DateRangePresetSelect-UgsfaOeM.js.map} +1 -1
- package/dist/chunks/Detail-DHDMsg8q.js +80 -0
- package/dist/chunks/{Detail-DKolHye4.js.map → Detail-DHDMsg8q.js.map} +1 -1
- package/dist/chunks/{Dialog-BPS4BeWZ.js → Dialog-CFIvGxER.js} +8 -8
- package/dist/chunks/Dialog-CFIvGxER.js.map +1 -0
- package/dist/chunks/{DisclosureGroup-0BtaXO54.js → DisclosureGroup-CfRTkl6Z.js} +11 -11
- package/dist/chunks/DisclosureGroup-CfRTkl6Z.js.map +1 -0
- package/dist/chunks/{DropZone-hf7Em__0.js → DropZone-kJfbZU5g.js} +22 -22
- package/dist/chunks/DropZone-kJfbZU5g.js.map +1 -0
- package/dist/chunks/{DropdownMenu-Ds-trH4M.js → DropdownMenu-DQeR3y7M.js} +138 -138
- package/dist/chunks/DropdownMenu-DQeR3y7M.js.map +1 -0
- package/dist/chunks/{Flex-DbBdq336.js → Flex-DUYSL5TE.js} +16 -16
- package/dist/chunks/{Flex-DbBdq336.js.map → Flex-DUYSL5TE.js.map} +1 -1
- package/dist/chunks/Grid-ByIIytjh.js.map +1 -1
- package/dist/chunks/{Input-Ce2HXBUc.js → Input-BmjlpA09.js} +76 -76
- package/dist/chunks/Input-BmjlpA09.js.map +1 -0
- package/dist/chunks/{InputDateTime-DPtY_4Od.js → InputDateTime-CxfAFe2L.js} +56 -56
- package/dist/chunks/{InputDateTime-DPtY_4Od.js.map → InputDateTime-CxfAFe2L.js.map} +1 -1
- package/dist/chunks/{InputFile-ga5yJmdZ.js → InputFile-CyZu__B_.js} +17 -17
- package/dist/chunks/InputFile-CyZu__B_.js.map +1 -0
- package/dist/chunks/{InputFiles-Or2Nvfgk.js → InputFiles-CrTJV27R.js} +36 -36
- package/dist/chunks/InputFiles-CrTJV27R.js.map +1 -0
- package/dist/chunks/{InputImage-BeA5WJz1.js → InputImage-Cw8rPYQu.js} +18 -18
- package/dist/chunks/{InputImage-BeA5WJz1.js.map → InputImage-Cw8rPYQu.js.map} +1 -1
- package/dist/chunks/{LabeledExpandableActionPanel-Bx-DWmYz.js → LabeledExpandableActionPanel-D3kUvmFH.js} +25 -25
- package/dist/chunks/LabeledExpandableActionPanel-D3kUvmFH.js.map +1 -0
- package/dist/chunks/Listbox-BZlp5qHz.js +81 -0
- package/dist/chunks/Listbox-BZlp5qHz.js.map +1 -0
- package/dist/chunks/{MultiSelect-CBqTylqO.js → MultiSelect-D1XYuwH1.js} +113 -113
- package/dist/chunks/{MultiSelect-CBqTylqO.js.map → MultiSelect-D1XYuwH1.js.map} +1 -1
- package/dist/chunks/{NotificationsHost-BQc-zOr2.js → NotificationsHost-_icJx4xR.js} +34 -34
- package/dist/chunks/NotificationsHost-_icJx4xR.js.map +1 -0
- package/dist/chunks/{PresetRangeDateInput-YBQm_4Fb.js → PresetRangeDateInput-CapirptQ.js} +11 -11
- package/dist/chunks/{PresetRangeDateInput-YBQm_4Fb.js.map → PresetRangeDateInput-CapirptQ.js.map} +1 -1
- package/dist/chunks/{RadioButton-DJp31HFR.js → RadioButton-D0uA0rX_.js} +13 -13
- package/dist/chunks/RadioButton-D0uA0rX_.js.map +1 -0
- package/dist/chunks/RadioGroup-B9XjkcOy.js +121 -0
- package/dist/chunks/{RadioGroup-BAhN1d1X.js.map → RadioGroup-B9XjkcOy.js.map} +1 -1
- package/dist/chunks/{Select-B7k_8_Lf.js → Select-CXeVjVKA.js} +11 -11
- package/dist/chunks/Select-CXeVjVKA.js.map +1 -0
- package/dist/chunks/{SerializableSelect-53uNCqdE.js → SerializableSelect-DkYeJtAO.js} +2 -2
- package/dist/chunks/{SerializableSelect-53uNCqdE.js.map → SerializableSelect-DkYeJtAO.js.map} +1 -1
- package/dist/chunks/{SingleDateTimeInput-CwvIbwje.js → SingleDateTimeInput-BmeuVGQT.js} +86 -86
- package/dist/chunks/SingleDateTimeInput-BmeuVGQT.js.map +1 -0
- package/dist/chunks/{Splitter-NjNFuEq4.js → Splitter-BFkVGVRb.js} +32 -32
- package/dist/chunks/{Splitter-NjNFuEq4.js.map → Splitter-BFkVGVRb.js.map} +1 -1
- package/dist/chunks/StateSelect-1jH3uLz9.js +78 -0
- package/dist/chunks/{StateSelect-D0wuUdT9.js.map → StateSelect-1jH3uLz9.js.map} +1 -1
- package/dist/chunks/{Switch-B476FBUD.js → Switch-B57Qmy1z.js} +19 -19
- package/dist/chunks/Switch-B57Qmy1z.js.map +1 -0
- package/dist/chunks/{TextEditorLexicalClient-DcixYuo4.js → TextEditorLexicalClient-DRhAswpP.js} +204 -204
- package/dist/chunks/{TextEditorLexicalClient-DcixYuo4.js.map → TextEditorLexicalClient-DRhAswpP.js.map} +1 -1
- package/dist/chunks/{Textarea-DeJJjjkI.js → Textarea-C9UdUueF.js} +2 -2
- package/dist/chunks/{Textarea-DeJJjjkI.js.map → Textarea-C9UdUueF.js.map} +1 -1
- package/dist/chunks/{TimePanel-_kF2RtHk.js → TimePanel-b4saqoUY.js} +27 -27
- package/dist/chunks/TimePanel-b4saqoUY.js.map +1 -0
- package/dist/chunks/{Toggle-C_fE-bkM.js → Toggle-DVqOQXmt.js} +18 -18
- package/dist/chunks/{Toggle-C_fE-bkM.js.map → Toggle-DVqOQXmt.js.map} +1 -1
- package/dist/chunks/{TreeMultiSelect-DRYNx7u5.js → TreeMultiSelect-CfQhlfnC.js} +6 -6
- package/dist/chunks/{TreeMultiSelect-DRYNx7u5.js.map → TreeMultiSelect-CfQhlfnC.js.map} +1 -1
- package/dist/chunks/{TreePickerBase-DYzTsSBQ.js → TreePickerBase-BBUOWsSu.js} +154 -154
- package/dist/chunks/TreePickerBase-BBUOWsSu.js.map +1 -0
- package/dist/chunks/{TreeSelect-DGLDu6qc.js → TreeSelect-2wUXs90E.js} +6 -6
- package/dist/chunks/{TreeSelect-DGLDu6qc.js.map → TreeSelect-2wUXs90E.js.map} +1 -1
- package/dist/chunks/base-table-CoQlKABk.js +514 -0
- package/dist/chunks/base-table-CoQlKABk.js.map +1 -0
- package/dist/chunks/{floating-arrow-CdRV69sg.js → floating-arrow-BE-z4QkE.js} +7 -7
- package/dist/chunks/{floating-arrow-CdRV69sg.js.map → floating-arrow-BE-z4QkE.js.map} +1 -1
- package/dist/chunks/input-search-Dw4rnJBq.js +30 -0
- package/dist/chunks/input-search-Dw4rnJBq.js.map +1 -0
- package/dist/chunks/{layout-picker-BA9vA8JI.js → layout-picker-MWaImn3L.js} +34 -34
- package/dist/chunks/layout-picker-MWaImn3L.js.map +1 -0
- package/dist/chunks/{misc-DrmMj8GO.js → misc-DoqZBMof.js} +100 -100
- package/dist/chunks/misc-DoqZBMof.js.map +1 -0
- package/dist/chunks/{modal-DqVcZws_.js → modal-B3HY3laL.js} +40 -40
- package/dist/chunks/modal-B3HY3laL.js.map +1 -0
- package/dist/chunks/multi-select-BzYIviCU.js +1305 -0
- package/dist/chunks/multi-select-BzYIviCU.js.map +1 -0
- package/dist/chunks/{picker-Cj4RnJh6.js → picker-Dg55Ss-B.js} +73 -73
- package/dist/chunks/picker-Dg55Ss-B.js.map +1 -0
- package/dist/chunks/{popover-C79P5bm2.js → popover-xJJqy1v6.js} +52 -52
- package/dist/chunks/popover-xJJqy1v6.js.map +1 -0
- package/dist/chunks/{separator-CIqnk2z9.js → separator-B72Aq-6a.js} +2 -2
- package/dist/chunks/{separator-CIqnk2z9.js.map → separator-B72Aq-6a.js.map} +1 -1
- package/dist/chunks/{slider-34wxzKkG.js → slider-CFKsfxFp.js} +83 -83
- package/dist/chunks/slider-CFKsfxFp.js.map +1 -0
- package/dist/chunks/sortable-DcTIAbjD.js +185 -0
- package/dist/chunks/sortable-DcTIAbjD.js.map +1 -0
- package/dist/chunks/{table-BYA0hCj7.js → table-Dc3AqMzP.js} +21 -21
- package/dist/chunks/table-Dc3AqMzP.js.map +1 -0
- package/dist/chunks/{table-column-interactions-DPyJDD7P.js → table-column-interactions-6RGjmiI5.js} +24 -24
- package/dist/chunks/{table-column-interactions-DPyJDD7P.js.map → table-column-interactions-6RGjmiI5.js.map} +1 -1
- package/dist/chunks/{tabs-CjU2KCgs.js → tabs-DlnVVMJl.js} +96 -96
- package/dist/chunks/{tabs-CjU2KCgs.js.map → tabs-DlnVVMJl.js.map} +1 -1
- package/dist/chunks/{toolbar-C-Ziw_Uh.js → toolbar-BCZNdRXM.js} +2 -2
- package/dist/chunks/{toolbar-C-Ziw_Uh.js.map → toolbar-BCZNdRXM.js.map} +1 -1
- package/dist/chunks/{wheel-picker-DUHGy7wE.js → wheel-picker-FS58cRsQ.js} +23 -23
- package/dist/chunks/{wheel-picker-DUHGy7wE.js.map → wheel-picker-FS58cRsQ.js.map} +1 -1
- package/dist/context-menu/components/MenuContent.d.ts.map +1 -1
- package/dist/context-menu/components/MenuContext.d.ts.map +1 -1
- package/dist/context-menu/components/MenuRoot.d.ts.map +1 -1
- package/dist/context-menu/components/RadialMenuContent.d.ts.map +1 -1
- package/dist/context-menu/index.js +1 -1
- package/dist/context-menu/stories/ContextMenu.stories.js +45 -45
- package/dist/date-input/index.js +2 -2
- package/dist/date-input/lib/types.d.ts.map +1 -1
- package/dist/date-input/stories/DateInput.stories.js +2 -2
- package/dist/date-input/ui/CalendarView.d.ts.map +1 -1
- package/dist/date-input/ui/DateInput.d.ts.map +1 -1
- package/dist/date-range-preset-select/index.js +1 -1
- package/dist/date-range-preset-select/stories/DateRangePresetSelect.stories.js +8 -8
- package/dist/date-time-input/index.js +1 -1
- package/dist/date-time-input/lib/dateTimeValue.d.ts.map +1 -1
- package/dist/date-time-input/stories/SingleDateTimeInput.stories.js +38 -38
- package/dist/date-time-input/stories/TimePanel.stories.js +9 -9
- package/dist/date-time-input/ui/SingleDateTimeInput.d.ts.map +1 -1
- package/dist/detail/index.js +1 -1
- package/dist/detail/stories/Detail.stories.js +1 -1
- package/dist/dialog/Dialog.d.ts.map +1 -1
- package/dist/dialog/index.js +1 -1
- package/dist/dialog/stories/Dialog.stories.js +16 -16
- package/dist/disclosure/Disclosure.d.ts.map +1 -1
- package/dist/disclosure/index.js +1 -1
- package/dist/disclosure/stories/Disclosure.stories.js +1 -1
- package/dist/drop-zone/DropZone.d.ts.map +1 -1
- package/dist/drop-zone/index.js +1 -1
- package/dist/drop-zone/stories/DropZone.stories.d.ts.map +1 -1
- package/dist/drop-zone/stories/DropZone.stories.js +14 -14
- package/dist/drop-zone/stories/DropZone.stories.js.map +1 -1
- package/dist/errors/ErrorDisplay.d.ts.map +1 -1
- package/dist/errors/index.js +47 -47
- package/dist/errors/index.js.map +1 -1
- package/dist/expandable-action-panel/ExpandableActionPanel.d.ts.map +1 -1
- package/dist/expandable-action-panel/index.js +1 -1
- package/dist/expandable-action-panel/stories/ExpandableActionPanel.stories.js +28 -28
- package/dist/flex/index.js +2 -2
- package/dist/flex/stories/Flex.stories.js +2 -2
- package/dist/floating-arrow/index.js +1 -1
- package/dist/fullscreen-portal/index.js +6 -6
- package/dist/grid/stories/Grid.stories.js +1 -1
- package/dist/image/index.js +123 -123
- package/dist/image/index.js.map +1 -1
- package/dist/image/ui/ImageSelection.d.ts.map +1 -1
- package/dist/input/Input.d.ts.map +1 -1
- package/dist/input/index.js +1 -1
- package/dist/input/stories/Input.stories.js +11 -11
- package/dist/input-date-time/index.js +1 -1
- package/dist/input-date-time/stories/InputDateTime.stories.js +11 -11
- package/dist/input-file/InputFile.d.ts.map +1 -1
- package/dist/input-file/index.js +1 -1
- package/dist/input-file/stories/InputFile.stories.d.ts.map +1 -1
- package/dist/input-file/stories/InputFile.stories.js +9 -9
- package/dist/input-file/stories/InputFile.stories.js.map +1 -1
- package/dist/input-files/InputFilesList.d.ts.map +1 -1
- package/dist/input-files/index.js +1 -1
- package/dist/input-files/stories/InputFiles.stories.d.ts +1 -1
- package/dist/input-files/stories/InputFiles.stories.d.ts.map +1 -1
- package/dist/input-files/stories/InputFiles.stories.js +9 -9
- package/dist/input-files/stories/InputFiles.stories.js.map +1 -1
- package/dist/input-image/index.js +1 -1
- package/dist/input-image/stories/InputImage.stories.d.ts.map +1 -1
- package/dist/input-image/stories/InputImage.stories.js +15 -15
- package/dist/input-image/stories/InputImage.stories.js.map +1 -1
- package/dist/input-search/index.js +2 -30
- package/dist/layout-picker/index.js +1 -1
- package/dist/layout-picker/stories/LayoutPicker.stories.js +52 -52
- package/dist/layout-picker/ui/LayoutPicker.d.ts.map +1 -1
- package/dist/list/List.d.ts.map +1 -1
- package/dist/list/index.js +30 -30
- package/dist/list/index.js.map +1 -1
- package/dist/listbox/Listbox.d.ts.map +1 -1
- package/dist/listbox/index.js +1 -1
- package/dist/listbox/stories/Listbox.stories.js +19 -19
- package/dist/misc/CopyTextWrapper.d.ts.map +1 -1
- package/dist/misc/OneStepScroller.d.ts.map +1 -1
- package/dist/misc/StateIcon.d.ts.map +1 -1
- package/dist/misc/index.js +1 -1
- package/dist/modal/Modal.d.ts +5 -1
- package/dist/modal/Modal.d.ts.map +1 -1
- package/dist/modal/index.js +1 -1
- package/dist/modal/stories/Modal.stories.js +55 -55
- package/dist/multi-select/index.js +3 -35
- package/dist/multi-select/model/useODataMultiSelect.d.ts +23 -0
- package/dist/multi-select/model/useODataMultiSelect.d.ts.map +1 -0
- package/dist/multi-select/ui/MultiSelect.d.ts +1 -1
- package/dist/multi-select/ui/MultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/ODataDependentMultiSelect.d.ts +20 -0
- package/dist/multi-select/ui/ODataDependentMultiSelect.d.ts.map +1 -0
- package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts +21 -0
- package/dist/multi-select/ui/ODataDependentSegmentMultiSelect.d.ts.map +1 -0
- package/dist/multi-select/ui/ODataMultiSelect.d.ts +7 -0
- package/dist/multi-select/ui/ODataMultiSelect.d.ts.map +1 -0
- package/dist/multi-select/ui/SerializableMultiSelect.d.ts.map +1 -1
- package/dist/multi-select/ui/index.d.ts +3 -0
- package/dist/multi-select/ui/index.d.ts.map +1 -1
- package/dist/multi-select/ui/stories/MultiSelect.stories.js +17 -17
- package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts +44 -0
- package/dist/multi-select/ui/stories/ODataMultiSelect.stories.d.ts.map +1 -0
- package/dist/notifications/index.js +1 -1
- package/dist/notifications/model/NotificationsProvider.d.ts.map +1 -1
- package/dist/notifications/ui/NotificationsHost.d.ts.map +1 -1
- package/dist/notifications/ui/stories/NotificationsHost.stories.js +59 -59
- package/dist/period-select/PeriodSelect.d.ts +1 -1
- package/dist/period-select/PeriodSelect.d.ts.map +1 -1
- package/dist/period-select/index.js +20 -20
- package/dist/period-select/index.js.map +1 -1
- package/dist/period-select/lib/periodSelect.d.ts.map +1 -1
- package/dist/period-select/stories/PeriodSelect.stories.d.ts.map +1 -1
- package/dist/period-select/stories/PeriodSelect.stories.js +17 -17
- package/dist/period-select/stories/PeriodSelect.stories.js.map +1 -1
- package/dist/picker/PickerPopup.d.ts.map +1 -1
- package/dist/picker/PickerTriggerActions.d.ts.map +1 -1
- package/dist/picker/index.js +1 -1
- package/dist/picker/model/usePickerFloatingListbox.d.ts.map +1 -1
- package/dist/popover/FloatingPopover.d.ts.map +1 -1
- package/dist/popover/components/PopoverContent.d.ts.map +1 -1
- package/dist/popover/components/PopoverContext.d.ts.map +1 -1
- package/dist/popover/index.js +1 -1
- package/dist/popover/stories/Popover.stories.js +16 -16
- package/dist/preset-range-date-input/index.js +1 -1
- package/dist/preset-range-date-input/ui/stories/PresetRangeDateInput.stories.js +9 -9
- package/dist/preset-select/index.js +1 -1
- package/dist/radio-button/RadioButton.d.ts.map +1 -1
- package/dist/radio-button/index.js +1 -1
- package/dist/radio-button/stories/RadioButton.stories.js +11 -11
- package/dist/radio-group/index.js +1 -1
- package/dist/radio-group/stories/RadioGroup.stories.js +21 -21
- package/dist/select/ODataSelect.d.ts +9 -0
- package/dist/select/ODataSelect.d.ts.map +1 -0
- package/dist/select/Select.d.ts.map +1 -1
- package/dist/select/index.js +2 -2
- package/dist/select/model/useODataSelect.d.ts +25 -0
- package/dist/select/model/useODataSelect.d.ts.map +1 -0
- package/dist/select/model/useODataSelectBase.d.ts +24 -0
- package/dist/select/model/useODataSelectBase.d.ts.map +1 -0
- package/dist/select/stories/ODataSelect.stories.d.ts +46 -0
- package/dist/select/stories/ODataSelect.stories.d.ts.map +1 -0
- package/dist/select/stories/Select.stories.js +23 -23
- package/dist/select/stories/SerializableSelect.stories.js +22 -22
- package/dist/select/stories/odataStoryFixtures.d.ts +35 -0
- package/dist/select/stories/odataStoryFixtures.d.ts.map +1 -0
- package/dist/separator/index.js +1 -1
- package/dist/simple-table/index.js +5 -5
- package/dist/simple-table/index.js.map +1 -1
- package/dist/slider/Slider.d.ts.map +1 -1
- package/dist/slider/index.js +1 -1
- package/dist/slider/stories/Slider.stories.js +32 -32
- package/dist/slider/stories/SliderInput.stories.js +39 -39
- package/dist/sortable/Sortable.d.ts.map +1 -1
- package/dist/sortable/SortableDragHandle.d.ts.map +1 -1
- package/dist/sortable/index.js +1 -1
- package/dist/sortable/stories/Sortable.stories.js +23 -23
- package/dist/splitter/index.js +1 -1
- package/dist/splitter/stories/Splitter.stories.js +1 -1
- package/dist/state-select/index.js +1 -1
- package/dist/state-select/stories/StateSelect.stories.d.ts.map +1 -1
- package/dist/state-select/stories/StateSelect.stories.js +23 -23
- package/dist/state-select/stories/StateSelect.stories.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/switch/Switch.d.ts.map +1 -1
- package/dist/switch/index.js +1 -1
- package/dist/switch/stories/Switch.stories.js +11 -11
- package/dist/table/Table.d.ts +1 -1
- package/dist/table/Table.d.ts.map +1 -1
- package/dist/table/index.js +1 -1
- package/dist/table/stories/Table.stories.d.ts +155 -0
- package/dist/table/stories/Table.stories.d.ts.map +1 -0
- package/dist/table-column-interactions/TableHeaderInteractionCell.d.ts.map +1 -1
- package/dist/table-column-interactions/index.js +1 -1
- package/dist/table-sorting/index.js +1 -1
- package/dist/tabs/index.js +1 -1
- package/dist/tabs/stories/Tabs.stories.d.ts.map +1 -1
- package/dist/tabs/stories/Tabs.stories.js +39 -39
- package/dist/tabs/stories/Tabs.stories.js.map +1 -1
- package/dist/text/TextOverflow.d.ts.map +1 -1
- package/dist/text/index.js +20 -20
- package/dist/text/index.js.map +1 -1
- package/dist/text-editor/TextEditorLexicalClient.d.ts.map +1 -1
- package/dist/text-editor/index.js +3 -3
- package/dist/text-editor/toolbar/index.js +1 -1
- package/dist/textarea/index.js +1 -1
- package/dist/textarea/stories/Textarea.stories.js +8 -8
- package/dist/three-scene/index.js +7 -7
- package/dist/toggle/index.js +1 -1
- package/dist/toggle/stories/Toggle.stories.js +7 -7
- package/dist/toolbar/index.js +16 -16
- package/dist/tree/index.js +24 -24
- package/dist/tree-select/ODataTreeMultiSelect.d.ts +12 -0
- package/dist/tree-select/ODataTreeMultiSelect.d.ts.map +1 -0
- package/dist/tree-select/ODataTreeSelect.d.ts +13 -0
- package/dist/tree-select/ODataTreeSelect.d.ts.map +1 -0
- package/dist/tree-select/TreeNodeContent.d.ts.map +1 -1
- package/dist/tree-select/TreePickerBase.d.ts.map +1 -1
- package/dist/tree-select/index.js +2 -2
- package/dist/tree-select/model/buildODataTreeNodes.d.ts +12 -0
- package/dist/tree-select/model/buildODataTreeNodes.d.ts.map +1 -0
- package/dist/tree-select/model/resolveOrderedTreeSegmentItems.d.ts +4 -0
- package/dist/tree-select/model/resolveOrderedTreeSegmentItems.d.ts.map +1 -0
- package/dist/tree-select/model/useODataTreeData.d.ts +11 -0
- package/dist/tree-select/model/useODataTreeData.d.ts.map +1 -0
- package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts +55 -0
- package/dist/tree-select/stories/ODataTreeMultiSelect.stories.d.ts.map +1 -0
- package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts +54 -0
- package/dist/tree-select/stories/ODataTreeSelect.stories.d.ts.map +1 -0
- package/dist/tree-select/stories/TreeMultiSelect.stories.js +9 -9
- package/dist/tree-select/stories/TreeSelect.stories.js +9 -9
- package/dist/tree-table/TreeTable.d.ts +1 -1
- package/dist/tree-table/TreeTable.d.ts.map +1 -1
- package/dist/tree-table/index.js +32 -32
- package/dist/tree-table/index.js.map +1 -1
- package/dist/tree-table/stories/TreeTable.stories.d.ts +158 -0
- package/dist/tree-table/stories/TreeTable.stories.d.ts.map +1 -0
- package/dist/wheel-picker/index.js +1 -1
- package/package.json +15 -4
- package/dist/chunks/BadgeList-DHW_Ktr3.js.map +0 -1
- package/dist/chunks/CheckBox-Cck5w1Ud.js.map +0 -1
- package/dist/chunks/DateInput-CINDYueM.js.map +0 -1
- package/dist/chunks/Detail-DKolHye4.js +0 -80
- package/dist/chunks/Dialog-BPS4BeWZ.js.map +0 -1
- package/dist/chunks/DisclosureGroup-0BtaXO54.js.map +0 -1
- package/dist/chunks/DropZone-hf7Em__0.js.map +0 -1
- package/dist/chunks/DropdownMenu-Ds-trH4M.js.map +0 -1
- package/dist/chunks/Input-Ce2HXBUc.js.map +0 -1
- package/dist/chunks/InputFile-ga5yJmdZ.js.map +0 -1
- package/dist/chunks/InputFiles-Or2Nvfgk.js.map +0 -1
- package/dist/chunks/LabeledExpandableActionPanel-Bx-DWmYz.js.map +0 -1
- package/dist/chunks/Listbox-CY1wQOCP.js +0 -81
- package/dist/chunks/Listbox-CY1wQOCP.js.map +0 -1
- package/dist/chunks/NotificationsHost-BQc-zOr2.js.map +0 -1
- package/dist/chunks/RadioButton-DJp31HFR.js.map +0 -1
- package/dist/chunks/RadioGroup-BAhN1d1X.js +0 -121
- package/dist/chunks/Select-B7k_8_Lf.js.map +0 -1
- package/dist/chunks/SingleDateTimeInput-CwvIbwje.js.map +0 -1
- package/dist/chunks/StateSelect-D0wuUdT9.js +0 -78
- package/dist/chunks/Switch-B476FBUD.js.map +0 -1
- package/dist/chunks/TimePanel-_kF2RtHk.js.map +0 -1
- package/dist/chunks/TreePickerBase-DYzTsSBQ.js.map +0 -1
- package/dist/chunks/base-table-DVje02Zi.js +0 -514
- package/dist/chunks/base-table-DVje02Zi.js.map +0 -1
- package/dist/chunks/layout-picker-BA9vA8JI.js.map +0 -1
- package/dist/chunks/misc-DrmMj8GO.js.map +0 -1
- package/dist/chunks/modal-DqVcZws_.js.map +0 -1
- package/dist/chunks/picker-Cj4RnJh6.js.map +0 -1
- package/dist/chunks/popover-C79P5bm2.js.map +0 -1
- package/dist/chunks/slider-34wxzKkG.js.map +0 -1
- package/dist/chunks/sortable-CwDHC3CA.js +0 -185
- package/dist/chunks/sortable-CwDHC3CA.js.map +0 -1
- package/dist/chunks/table-BYA0hCj7.js.map +0 -1
- package/dist/input-search/index.js.map +0 -1
- package/dist/multi-select/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolbar-C-Ziw_Uh.js","names":[],"sources":["../../src/text-editor/toolbar/Toolbar.module.scss","../../src/text-editor/toolbar/ToolbarControl.tsx","../../src/text-editor/toolbar/ActionControls.tsx","../../src/text-editor/toolbar/AlignmentControls.tsx","../../src/text-editor/toolbar/HistoryControls.tsx","../../src/text-editor/toolbar/types.tsx","../../src/text-editor/toolbar/LinkButtons.tsx","../../src/text-editor/toolbar/TagButtons.tsx","../../src/text-editor/toolbar/TextEditorToolbarLexical.tsx"],"sourcesContent":[".toolbar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: start;\n\tgap: var(--space-sm);\n\tmargin-bottom: var(--space-md);\n\n\thr {\n\t\tmargin: 0.5rem 0;\n\t}\n}\n\n.groupControls {\n\tdisplay: flex;\n\tgap: var(--space-sm);\n}\n","import { type MouseEvent, type ReactNode } from \"react\";\n\nimport { Button } from \"../../button\";\n\ntype ToolbarControlProps = {\n\tisActive?: boolean;\n\tonClick?: (style: string) => void;\n\ttitle?: string;\n\tstyle?: string;\n\tdisabled?: boolean;\n\ticon?: ReactNode;\n};\n\n/**\n * Унифицированная кнопка действия в тулбаре текстового редактора. Отвечает за активное состояние, disabled-режим и визуальное представление иконки.\n */\nexport function ToolbarControl({ isActive, disabled, style, title, icon, onClick }: ToolbarControlProps) {\n\tconst handleMouseDown = (e: MouseEvent<HTMLButtonElement>) => {\n\t\te.preventDefault();\n\t\tonClick?.(style || \"\");\n\t};\n\n\treturn (\n\t\t<Button\n\t\t\ttitle={title}\n\t\t\tdisabled={disabled}\n\t\t\tappearance=\"outline\"\n\t\t\ttone={isActive ? \"info\" : undefined}\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\ticon={icon}\n\t\t/>\n\t);\n}\n","import { Save } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\n\ninterface ActionControlsProps {\n\tonChange?: () => void;\n}\n\n/**\n * Группа базовых действий тулбара текстового редактора. Содержит переключатели форматирования для повседневного редактирования.\n */\nexport function ActionControls({ onChange }: ActionControlsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title={\"Сохранить текущее состояние\"} icon={<Save />} onClick={onChange} />\n\t\t</div>\n\t);\n}\n","import { AlignCenter, AlignJustify, AlignLeft, AlignRight } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\n\nimport type { TextAlignment } from \"../model/textEditorTypes\";\n\ninterface AlignmentControlsProps {\n\tonAlignmentChange: (alignment: TextAlignment) => void;\n\tactiveAlignment?: TextAlignment | null;\n}\n\n/**\n * Кнопки управления выравниванием содержимого в текстовом редакторе. Используются в тулбаре для смены текстового alignment.\n */\nexport function AlignmentControls({ onAlignmentChange, activeAlignment }: AlignmentControlsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По левому краю\"\n\t\t\t\ticon={<AlignLeft />}\n\t\t\t\tisActive={activeAlignment === \"left\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"left\")}\n\t\t\t/>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По центру\"\n\t\t\t\ticon={<AlignCenter />}\n\t\t\t\tisActive={activeAlignment === \"center\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"center\")}\n\t\t\t/>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По правому краю\"\n\t\t\t\ticon={<AlignRight />}\n\t\t\t\tisActive={activeAlignment === \"right\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"right\")}\n\t\t\t/>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По ширине\"\n\t\t\t\ticon={<AlignJustify />}\n\t\t\t\tisActive={activeAlignment === \"justify\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"justify\")}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { Redo, Undo } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\n\ninterface HistoryControlsProps {\n\tonUndo: () => void;\n\tonRedo: () => void;\n}\n\n/**\n * Кнопки отмены и повтора действий для текстового редактора. Отвечают за работу с историей изменений документа.\n */\nexport function HistoryControls({ onUndo, onRedo }: HistoryControlsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title=\"Отменить последнее действие\" icon={<Undo />} onClick={onUndo} />\n\t\t\t<ToolbarControl title=\"Повторить предыдущее действие\" icon={<Redo />} onClick={onRedo} />\n\t\t</div>\n\t);\n}\n","import { JSX } from \"react\";\n\nimport {\n\tBold,\n\tCode,\n\tHeading1,\n\tHeading2,\n\tHeading3,\n\tHeading4,\n\tHeading5,\n\tHeading6,\n\tHighlighter,\n\tItalic,\n\tList,\n\tListOrdered,\n\tPilcrow,\n\tStrikethrough,\n\tTextQuote,\n\tType,\n\tUnderline\n} from \"lucide-react\";\n\nimport type { TextEditorElementTypes } from \"../types\";\n\ninterface TextEditorElement {\n\tlabel: string;\n\tstyle: TextEditorElementTypes;\n\tnode: string;\n\ticon: JSX.Element;\n}\n\nconst TextEditorElements: Record<TextEditorElementTypes, TextEditorElement> = {\n\tunstyled: { label: \"Параграф\", node: \"p\", style: \"unstyled\", icon: <Type /> },\n\tparagraph: { label: \"Параграф\", node: \"p\", style: \"paragraph\", icon: <Pilcrow /> },\n\t\"header-one\": { label: \"Заголовок первого уровня\", node: \"h1\", style: \"header-one\", icon: <Heading1 /> },\n\t\"header-two\": { label: \"Заголовок второго уровня\", node: \"h2\", style: \"header-two\", icon: <Heading2 /> },\n\t\"header-three\": { label: \"Заголовок третьего уровня\", node: \"h3\", style: \"header-three\", icon: <Heading3 /> },\n\t\"header-four\": { label: \"Заголовок четвертого уровня\", node: \"h4\", style: \"header-four\", icon: <Heading4 /> },\n\t\"header-five\": { label: \"Заголовок пятого уровня\", node: \"h5\", style: \"header-five\", icon: <Heading5 /> },\n\t\"header-six\": { label: \"Заголовок шестого уровня\", node: \"h6\", style: \"header-six\", icon: <Heading6 /> },\n\t\"code-block\": { label: \"Блок кода\", node: \"pre\", style: \"code-block\", icon: <Code /> },\n\tblockquote: { label: \"Цитата\", node: \"blockquote\", style: \"blockquote\", icon: <TextQuote /> },\n\t\"unordered-list-item\": { label: \"Маркированный список\", node: \"ul\", style: \"unordered-list-item\", icon: <List /> },\n\t\"ordered-list-item\": { label: \"Нумерованный список\", node: \"ol\", style: \"ordered-list-item\", icon: <ListOrdered /> },\n\tCODE: { label: \"Моноширинный код\", node: \"code\", style: \"CODE\", icon: <Code /> },\n\tBOLD: { label: \"Выделение жирным\", node: \"strong\", style: \"BOLD\", icon: <Bold /> },\n\tUNDERLINE: { label: \"Выделение подчеркнутым\", node: \"u\", style: \"UNDERLINE\", icon: <Underline /> },\n\tSTRIKETHROUGH: { label: \"Выделение зачеркнутым\", node: \"s\", style: \"STRIKETHROUGH\", icon: <Strikethrough /> },\n\tHIGHLIGHT: { label: \"Подсветка цветом\", node: \"span\", style: \"HIGHLIGHT\", icon: <Highlighter /> },\n\tITALIC: { label: \"Выделение курсивным\", node: \"i\", style: \"ITALIC\", icon: <Italic /> }\n};\n\nexport const getElementFromElementStyle = (style: TextEditorElementTypes) => {\n\tconst element = TextEditorElements[style];\n\tif (!element) {\n\t\treturn \"div\";\n\t}\n\treturn element.node;\n};\n\nexport const getTagFromElementStyle = (style: TextEditorElementTypes) => {\n\tconst element = TextEditorElements[style];\n\tif (!element) {\n\t\treturn null;\n\t}\n\treturn element.node;\n};\n\nexport const TextEditorBlockControls = [\n\tTextEditorElements.unstyled,\n\tTextEditorElements[\"header-three\"],\n\tTextEditorElements[\"header-four\"],\n\tTextEditorElements[\"header-five\"],\n\tTextEditorElements[\"header-six\"],\n\tTextEditorElements[\"ordered-list-item\"],\n\tTextEditorElements[\"unordered-list-item\"],\n\tTextEditorElements.blockquote\n];\n\nexport const TextEditorInlineControls = [\n\tTextEditorElements.BOLD,\n\tTextEditorElements.ITALIC,\n\tTextEditorElements.UNDERLINE,\n\tTextEditorElements.STRIKETHROUGH,\n\tTextEditorElements.HIGHLIGHT,\n\tTextEditorElements.CODE\n];\n\nexport const TextEditorStyleClasses = {\n\tCODE: {\n\t\tcolor: \"rgb(8, 89, 114)\",\n\t\tpadding: \"0.15em 0.4em\",\n\t\tmargin: \"0\",\n\t\tfontFamily: \"monospace\",\n\t\tfontSize: \"85%\",\n\t\tbackgroundColor: \"rgba(40, 68, 77, 0.05)\",\n\t\tborderRadius: \"var(--radius-md)\",\n\t\tlineHeight: \"1\"\n\t},\n\tHIGHLIGHT: {\n\t\tpaddingInline: \"0.15em\",\n\t\tbackgroundColor: \"rgb(234,255,142)\",\n\t\tborderRadius: \"var(--radius-md)\"\n\t},\n\tunstyled: {\n\t\tmarginBottom: \"1.5em\"\n\t},\n\tBOLD: { fontWeight: \"bold\" },\n\tITALIC: { fontStyle: \"italic\" },\n\tUNDERLINE: { textDecoration: \"underline\" },\n\tSTRIKETHROUGH: { textDecoration: \"line-through\" }\n};\n\nexport enum LinkTypes {\n\tLINK = \"link\",\n\tLOCAL_LINK = \"localLink\",\n\tPHONE = \"phone\",\n\tEMAIL = \"email\"\n}\n\nexport enum TagTypes {\n\tabbr = \"abbr\",\n\tlang = \"lang\",\n\ttime = \"time\",\n\tcite = \"cite\",\n\tins = \"ins\",\n\tdel = \"del\"\n}\n","import { AtSign, ExternalLink, Link, Phone } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\nimport { LinkTypes } from \"./types\";\n\ninterface LinkButtonsProps {\n\tdisabled: boolean;\n\tonClick: (type: LinkTypes) => void;\n}\n\n/**\n * Набор кнопок для вставки ссылок и связанных сущностей в текстовом редакторе. Используется в составе тулбара редактора.\n */\nexport function LinkButtons({ disabled, onClick }: LinkButtonsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title=\"Добавить ссылку на статью\" icon={<Link />} onClick={() => onClick(LinkTypes.LOCAL_LINK)} />\n\t\t\t<ToolbarControl title=\"Добавить ссылку\" disabled={disabled} icon={<ExternalLink />} onClick={() => onClick(LinkTypes.LINK)} />\n\t\t\t<ToolbarControl title=\"Добавить телефон\" disabled={disabled} icon={<Phone />} onClick={() => onClick(LinkTypes.PHONE)} />\n\t\t\t<ToolbarControl title=\"Добавить email\" disabled={disabled} icon={<AtSign />} onClick={() => onClick(LinkTypes.EMAIL)} />\n\t\t</div>\n\t);\n}\n","import { BookType, Clock, Languages, MessageSquareQuote, PictureInPicture, Shredder } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\nimport { TagTypes } from \"./types\";\n\ninterface TagButtonsProps {\n\tonClick: (type: TagTypes) => void;\n}\n\n/**\n * Переиспользуемый компонент `TagButtons` из раздела `toolbar`. Инкапсулирует общую логику отображения и взаимодействия, чтобы интерфейс оставался консистентным.\n */\nexport function TagButtons({ onClick }: TagButtonsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title=\"Вставить Аббревиатуру\" icon={<BookType />} onClick={() => onClick(TagTypes.abbr)} />\n\t\t\t<ToolbarControl title=\"Вставить Код языка\" icon={<Languages />} onClick={() => onClick(TagTypes.lang)} />\n\t\t\t<ToolbarControl title=\"Вставить Дату/время\" icon={<Clock />} onClick={() => onClick(TagTypes.time)} />\n\t\t\t<ToolbarControl title=\"Вставить Ссылку на источник\" icon={<MessageSquareQuote />} onClick={() => onClick(TagTypes.cite)} />\n\t\t\t<ToolbarControl title=\"Вставить Удалённый фрагмент\" icon={<Shredder />} onClick={() => onClick(TagTypes.del)} />\n\t\t\t<ToolbarControl title=\"Вставить Добавленный фрагмент\" icon={<PictureInPicture />} onClick={() => onClick(TagTypes.ins)} />\n\t\t</div>\n\t);\n}\n","import { BrushCleaning } from \"lucide-react\";\n\nimport { AlignmentControls } from \"./AlignmentControls\";\nimport { HistoryControls } from \"./HistoryControls\";\nimport { LinkButtons } from \"./LinkButtons\";\nimport { TagButtons } from \"./TagButtons\";\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\nimport { LinkTypes, TagTypes, TextEditorBlockControls, TextEditorInlineControls } from \"./types\";\n\nimport type { TextEditorToolbarComponents } from \"../editorModel\";\nimport type { LexicalToolbarState, TextAlignment } from \"../model/textEditorTypes\";\n\ninterface TextEditorToolbarLexicalProps {\n\ttoolbarComponents?: TextEditorToolbarComponents;\n\tstate: LexicalToolbarState;\n\tonBlockStyleToggle: (style: string) => void;\n\tonInlineStyleToggle: (style: string) => void;\n\tonAlignmentChange: (alignment: TextAlignment) => void;\n\tonLinkClick: (type: LinkTypes) => void;\n\tonTagClick: (type: TagTypes) => void;\n\tonUndo: () => void;\n\tonRedo: () => void;\n\tonCleanTag?: () => void;\n}\n\n/**\n * Основная панель инструментов редактора Lexical. Собирает управляющие блоки и синхронизирует их с текущим состоянием выделения.\n */\nexport function TextEditorToolbarLexical({\n\ttoolbarComponents,\n\tstate,\n\tonBlockStyleToggle,\n\tonInlineStyleToggle,\n\tonAlignmentChange,\n\tonLinkClick,\n\tonTagClick,\n\tonUndo,\n\tonRedo,\n\tonCleanTag\n}: TextEditorToolbarLexicalProps) {\n\tconst components = { history: true, ...(toolbarComponents || {}) };\n\n\treturn (\n\t\t<div className={ToolbarStyle.toolbar}>\n\t\t\t{components.blocks && (\n\t\t\t\t<>\n\t\t\t\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t\t\t\t{TextEditorBlockControls.map((control) => (\n\t\t\t\t\t\t\t<ToolbarControl\n\t\t\t\t\t\t\t\tkey={control.style}\n\t\t\t\t\t\t\t\tisActive={control.style === state.blockType}\n\t\t\t\t\t\t\t\tstyle={control.style}\n\t\t\t\t\t\t\t\ttitle={control.label}\n\t\t\t\t\t\t\t\ticon={control.icon}\n\t\t\t\t\t\t\t\tonClick={onBlockStyleToggle}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.inline && (\n\t\t\t\t<>\n\t\t\t\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t\t\t\t{TextEditorInlineControls.map((control) => (\n\t\t\t\t\t\t\t<ToolbarControl\n\t\t\t\t\t\t\t\tkey={control.style}\n\t\t\t\t\t\t\t\tisActive={!!state.activeInlineStyles[control.style as keyof typeof state.activeInlineStyles]}\n\t\t\t\t\t\t\t\ttitle={control.label}\n\t\t\t\t\t\t\t\tstyle={control.style}\n\t\t\t\t\t\t\t\ticon={control.icon}\n\t\t\t\t\t\t\t\tdisabled={state.isTextUnselected}\n\t\t\t\t\t\t\t\tonClick={onInlineStyleToggle}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.alignment && (\n\t\t\t\t<>\n\t\t\t\t\t<AlignmentControls activeAlignment={state.activeAlignment} onAlignmentChange={onAlignmentChange} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.links && (\n\t\t\t\t<>\n\t\t\t\t\t<LinkButtons disabled={state.isTextUnselected} onClick={onLinkClick} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.tags && (\n\t\t\t\t<>\n\t\t\t\t\t<TagButtons onClick={onTagClick} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.history && (\n\t\t\t\t<>\n\t\t\t\t\t<HistoryControls onUndo={onUndo} onRedo={onRedo} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t<ToolbarControl\n\t\t\t\tdisabled={state.isTextUnselected}\n\t\t\t\ttitle=\"Очистить выбранный тег\"\n\t\t\t\ticon={<BrushCleaning />}\n\t\t\t\tonClick={onCleanTag}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"toolbar-BCZNdRXM.js","names":[],"sources":["../../src/text-editor/toolbar/Toolbar.module.scss","../../src/text-editor/toolbar/ToolbarControl.tsx","../../src/text-editor/toolbar/ActionControls.tsx","../../src/text-editor/toolbar/AlignmentControls.tsx","../../src/text-editor/toolbar/HistoryControls.tsx","../../src/text-editor/toolbar/types.tsx","../../src/text-editor/toolbar/LinkButtons.tsx","../../src/text-editor/toolbar/TagButtons.tsx","../../src/text-editor/toolbar/TextEditorToolbarLexical.tsx"],"sourcesContent":[".toolbar {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: start;\n\tgap: var(--space-sm);\n\tmargin-bottom: var(--space-md);\n\n\thr {\n\t\tmargin: 0.5rem 0;\n\t}\n}\n\n.groupControls {\n\tdisplay: flex;\n\tgap: var(--space-sm);\n}\n","import { type MouseEvent, type ReactNode } from \"react\";\n\nimport { Button } from \"../../button\";\n\ntype ToolbarControlProps = {\n\tisActive?: boolean;\n\tonClick?: (style: string) => void;\n\ttitle?: string;\n\tstyle?: string;\n\tdisabled?: boolean;\n\ticon?: ReactNode;\n};\n\n/**\n * Унифицированная кнопка действия в тулбаре текстового редактора. Отвечает за активное состояние, disabled-режим и визуальное представление иконки.\n */\nexport function ToolbarControl({ isActive, disabled, style, title, icon, onClick }: ToolbarControlProps) {\n\tconst handleMouseDown = (e: MouseEvent<HTMLButtonElement>) => {\n\t\te.preventDefault();\n\t\tonClick?.(style || \"\");\n\t};\n\n\treturn (\n\t\t<Button\n\t\t\ttitle={title}\n\t\t\tdisabled={disabled}\n\t\t\tappearance=\"outline\"\n\t\t\ttone={isActive ? \"info\" : undefined}\n\t\t\tonMouseDown={handleMouseDown}\n\t\t\ticon={icon}\n\t\t/>\n\t);\n}\n","import { Save } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\n\ninterface ActionControlsProps {\n\tonChange?: () => void;\n}\n\n/**\n * Группа базовых действий тулбара текстового редактора. Содержит переключатели форматирования для повседневного редактирования.\n */\nexport function ActionControls({ onChange }: ActionControlsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title={\"Сохранить текущее состояние\"} icon={<Save />} onClick={onChange} />\n\t\t</div>\n\t);\n}\n","import { AlignCenter, AlignJustify, AlignLeft, AlignRight } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\n\nimport type { TextAlignment } from \"../model/textEditorTypes\";\n\ninterface AlignmentControlsProps {\n\tonAlignmentChange: (alignment: TextAlignment) => void;\n\tactiveAlignment?: TextAlignment | null;\n}\n\n/**\n * Кнопки управления выравниванием содержимого в текстовом редакторе. Используются в тулбаре для смены текстового alignment.\n */\nexport function AlignmentControls({ onAlignmentChange, activeAlignment }: AlignmentControlsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По левому краю\"\n\t\t\t\ticon={<AlignLeft />}\n\t\t\t\tisActive={activeAlignment === \"left\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"left\")}\n\t\t\t/>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По центру\"\n\t\t\t\ticon={<AlignCenter />}\n\t\t\t\tisActive={activeAlignment === \"center\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"center\")}\n\t\t\t/>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По правому краю\"\n\t\t\t\ticon={<AlignRight />}\n\t\t\t\tisActive={activeAlignment === \"right\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"right\")}\n\t\t\t/>\n\t\t\t<ToolbarControl\n\t\t\t\ttitle=\"По ширине\"\n\t\t\t\ticon={<AlignJustify />}\n\t\t\t\tisActive={activeAlignment === \"justify\"}\n\t\t\t\tonClick={() => onAlignmentChange(\"justify\")}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n","import { Redo, Undo } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\n\ninterface HistoryControlsProps {\n\tonUndo: () => void;\n\tonRedo: () => void;\n}\n\n/**\n * Кнопки отмены и повтора действий для текстового редактора. Отвечают за работу с историей изменений документа.\n */\nexport function HistoryControls({ onUndo, onRedo }: HistoryControlsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title=\"Отменить последнее действие\" icon={<Undo />} onClick={onUndo} />\n\t\t\t<ToolbarControl title=\"Повторить предыдущее действие\" icon={<Redo />} onClick={onRedo} />\n\t\t</div>\n\t);\n}\n","import { JSX } from \"react\";\n\nimport {\n\tBold,\n\tCode,\n\tHeading1,\n\tHeading2,\n\tHeading3,\n\tHeading4,\n\tHeading5,\n\tHeading6,\n\tHighlighter,\n\tItalic,\n\tList,\n\tListOrdered,\n\tPilcrow,\n\tStrikethrough,\n\tTextQuote,\n\tType,\n\tUnderline\n} from \"lucide-react\";\n\nimport type { TextEditorElementTypes } from \"../types\";\n\ninterface TextEditorElement {\n\tlabel: string;\n\tstyle: TextEditorElementTypes;\n\tnode: string;\n\ticon: JSX.Element;\n}\n\nconst TextEditorElements: Record<TextEditorElementTypes, TextEditorElement> = {\n\tunstyled: { label: \"Параграф\", node: \"p\", style: \"unstyled\", icon: <Type /> },\n\tparagraph: { label: \"Параграф\", node: \"p\", style: \"paragraph\", icon: <Pilcrow /> },\n\t\"header-one\": { label: \"Заголовок первого уровня\", node: \"h1\", style: \"header-one\", icon: <Heading1 /> },\n\t\"header-two\": { label: \"Заголовок второго уровня\", node: \"h2\", style: \"header-two\", icon: <Heading2 /> },\n\t\"header-three\": { label: \"Заголовок третьего уровня\", node: \"h3\", style: \"header-three\", icon: <Heading3 /> },\n\t\"header-four\": { label: \"Заголовок четвертого уровня\", node: \"h4\", style: \"header-four\", icon: <Heading4 /> },\n\t\"header-five\": { label: \"Заголовок пятого уровня\", node: \"h5\", style: \"header-five\", icon: <Heading5 /> },\n\t\"header-six\": { label: \"Заголовок шестого уровня\", node: \"h6\", style: \"header-six\", icon: <Heading6 /> },\n\t\"code-block\": { label: \"Блок кода\", node: \"pre\", style: \"code-block\", icon: <Code /> },\n\tblockquote: { label: \"Цитата\", node: \"blockquote\", style: \"blockquote\", icon: <TextQuote /> },\n\t\"unordered-list-item\": { label: \"Маркированный список\", node: \"ul\", style: \"unordered-list-item\", icon: <List /> },\n\t\"ordered-list-item\": { label: \"Нумерованный список\", node: \"ol\", style: \"ordered-list-item\", icon: <ListOrdered /> },\n\tCODE: { label: \"Моноширинный код\", node: \"code\", style: \"CODE\", icon: <Code /> },\n\tBOLD: { label: \"Выделение жирным\", node: \"strong\", style: \"BOLD\", icon: <Bold /> },\n\tUNDERLINE: { label: \"Выделение подчеркнутым\", node: \"u\", style: \"UNDERLINE\", icon: <Underline /> },\n\tSTRIKETHROUGH: { label: \"Выделение зачеркнутым\", node: \"s\", style: \"STRIKETHROUGH\", icon: <Strikethrough /> },\n\tHIGHLIGHT: { label: \"Подсветка цветом\", node: \"span\", style: \"HIGHLIGHT\", icon: <Highlighter /> },\n\tITALIC: { label: \"Выделение курсивным\", node: \"i\", style: \"ITALIC\", icon: <Italic /> }\n};\n\nexport const getElementFromElementStyle = (style: TextEditorElementTypes) => {\n\tconst element = TextEditorElements[style];\n\tif (!element) {\n\t\treturn \"div\";\n\t}\n\treturn element.node;\n};\n\nexport const getTagFromElementStyle = (style: TextEditorElementTypes) => {\n\tconst element = TextEditorElements[style];\n\tif (!element) {\n\t\treturn null;\n\t}\n\treturn element.node;\n};\n\nexport const TextEditorBlockControls = [\n\tTextEditorElements.unstyled,\n\tTextEditorElements[\"header-three\"],\n\tTextEditorElements[\"header-four\"],\n\tTextEditorElements[\"header-five\"],\n\tTextEditorElements[\"header-six\"],\n\tTextEditorElements[\"ordered-list-item\"],\n\tTextEditorElements[\"unordered-list-item\"],\n\tTextEditorElements.blockquote\n];\n\nexport const TextEditorInlineControls = [\n\tTextEditorElements.BOLD,\n\tTextEditorElements.ITALIC,\n\tTextEditorElements.UNDERLINE,\n\tTextEditorElements.STRIKETHROUGH,\n\tTextEditorElements.HIGHLIGHT,\n\tTextEditorElements.CODE\n];\n\nexport const TextEditorStyleClasses = {\n\tCODE: {\n\t\tcolor: \"rgb(8, 89, 114)\",\n\t\tpadding: \"0.15em 0.4em\",\n\t\tmargin: \"0\",\n\t\tfontFamily: \"monospace\",\n\t\tfontSize: \"85%\",\n\t\tbackgroundColor: \"rgba(40, 68, 77, 0.05)\",\n\t\tborderRadius: \"var(--radius-md)\",\n\t\tlineHeight: \"1\"\n\t},\n\tHIGHLIGHT: {\n\t\tpaddingInline: \"0.15em\",\n\t\tbackgroundColor: \"rgb(234,255,142)\",\n\t\tborderRadius: \"var(--radius-md)\"\n\t},\n\tunstyled: {\n\t\tmarginBottom: \"1.5em\"\n\t},\n\tBOLD: { fontWeight: \"bold\" },\n\tITALIC: { fontStyle: \"italic\" },\n\tUNDERLINE: { textDecoration: \"underline\" },\n\tSTRIKETHROUGH: { textDecoration: \"line-through\" }\n};\n\nexport enum LinkTypes {\n\tLINK = \"link\",\n\tLOCAL_LINK = \"localLink\",\n\tPHONE = \"phone\",\n\tEMAIL = \"email\"\n}\n\nexport enum TagTypes {\n\tabbr = \"abbr\",\n\tlang = \"lang\",\n\ttime = \"time\",\n\tcite = \"cite\",\n\tins = \"ins\",\n\tdel = \"del\"\n}\n","import { AtSign, ExternalLink, Link, Phone } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\nimport { LinkTypes } from \"./types\";\n\ninterface LinkButtonsProps {\n\tdisabled: boolean;\n\tonClick: (type: LinkTypes) => void;\n}\n\n/**\n * Набор кнопок для вставки ссылок и связанных сущностей в текстовом редакторе. Используется в составе тулбара редактора.\n */\nexport function LinkButtons({ disabled, onClick }: LinkButtonsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title=\"Добавить ссылку на статью\" icon={<Link />} onClick={() => onClick(LinkTypes.LOCAL_LINK)} />\n\t\t\t<ToolbarControl title=\"Добавить ссылку\" disabled={disabled} icon={<ExternalLink />} onClick={() => onClick(LinkTypes.LINK)} />\n\t\t\t<ToolbarControl title=\"Добавить телефон\" disabled={disabled} icon={<Phone />} onClick={() => onClick(LinkTypes.PHONE)} />\n\t\t\t<ToolbarControl title=\"Добавить email\" disabled={disabled} icon={<AtSign />} onClick={() => onClick(LinkTypes.EMAIL)} />\n\t\t</div>\n\t);\n}\n","import { BookType, Clock, Languages, MessageSquareQuote, PictureInPicture, Shredder } from \"lucide-react\";\n\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\nimport { TagTypes } from \"./types\";\n\ninterface TagButtonsProps {\n\tonClick: (type: TagTypes) => void;\n}\n\n/**\n * Переиспользуемый компонент `TagButtons` из раздела `toolbar`. Инкапсулирует общую логику отображения и взаимодействия, чтобы интерфейс оставался консистентным.\n */\nexport function TagButtons({ onClick }: TagButtonsProps) {\n\treturn (\n\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t<ToolbarControl title=\"Вставить Аббревиатуру\" icon={<BookType />} onClick={() => onClick(TagTypes.abbr)} />\n\t\t\t<ToolbarControl title=\"Вставить Код языка\" icon={<Languages />} onClick={() => onClick(TagTypes.lang)} />\n\t\t\t<ToolbarControl title=\"Вставить Дату/время\" icon={<Clock />} onClick={() => onClick(TagTypes.time)} />\n\t\t\t<ToolbarControl title=\"Вставить Ссылку на источник\" icon={<MessageSquareQuote />} onClick={() => onClick(TagTypes.cite)} />\n\t\t\t<ToolbarControl title=\"Вставить Удалённый фрагмент\" icon={<Shredder />} onClick={() => onClick(TagTypes.del)} />\n\t\t\t<ToolbarControl title=\"Вставить Добавленный фрагмент\" icon={<PictureInPicture />} onClick={() => onClick(TagTypes.ins)} />\n\t\t</div>\n\t);\n}\n","import { BrushCleaning } from \"lucide-react\";\n\nimport { AlignmentControls } from \"./AlignmentControls\";\nimport { HistoryControls } from \"./HistoryControls\";\nimport { LinkButtons } from \"./LinkButtons\";\nimport { TagButtons } from \"./TagButtons\";\nimport ToolbarStyle from \"./Toolbar.module.scss\";\nimport { ToolbarControl } from \"./ToolbarControl\";\nimport { LinkTypes, TagTypes, TextEditorBlockControls, TextEditorInlineControls } from \"./types\";\n\nimport type { TextEditorToolbarComponents } from \"../editorModel\";\nimport type { LexicalToolbarState, TextAlignment } from \"../model/textEditorTypes\";\n\ninterface TextEditorToolbarLexicalProps {\n\ttoolbarComponents?: TextEditorToolbarComponents;\n\tstate: LexicalToolbarState;\n\tonBlockStyleToggle: (style: string) => void;\n\tonInlineStyleToggle: (style: string) => void;\n\tonAlignmentChange: (alignment: TextAlignment) => void;\n\tonLinkClick: (type: LinkTypes) => void;\n\tonTagClick: (type: TagTypes) => void;\n\tonUndo: () => void;\n\tonRedo: () => void;\n\tonCleanTag?: () => void;\n}\n\n/**\n * Основная панель инструментов редактора Lexical. Собирает управляющие блоки и синхронизирует их с текущим состоянием выделения.\n */\nexport function TextEditorToolbarLexical({\n\ttoolbarComponents,\n\tstate,\n\tonBlockStyleToggle,\n\tonInlineStyleToggle,\n\tonAlignmentChange,\n\tonLinkClick,\n\tonTagClick,\n\tonUndo,\n\tonRedo,\n\tonCleanTag\n}: TextEditorToolbarLexicalProps) {\n\tconst components = { history: true, ...(toolbarComponents || {}) };\n\n\treturn (\n\t\t<div className={ToolbarStyle.toolbar}>\n\t\t\t{components.blocks && (\n\t\t\t\t<>\n\t\t\t\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t\t\t\t{TextEditorBlockControls.map((control) => (\n\t\t\t\t\t\t\t<ToolbarControl\n\t\t\t\t\t\t\t\tkey={control.style}\n\t\t\t\t\t\t\t\tisActive={control.style === state.blockType}\n\t\t\t\t\t\t\t\tstyle={control.style}\n\t\t\t\t\t\t\t\ttitle={control.label}\n\t\t\t\t\t\t\t\ticon={control.icon}\n\t\t\t\t\t\t\t\tonClick={onBlockStyleToggle}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.inline && (\n\t\t\t\t<>\n\t\t\t\t\t<div className={ToolbarStyle.groupControls}>\n\t\t\t\t\t\t{TextEditorInlineControls.map((control) => (\n\t\t\t\t\t\t\t<ToolbarControl\n\t\t\t\t\t\t\t\tkey={control.style}\n\t\t\t\t\t\t\t\tisActive={!!state.activeInlineStyles[control.style as keyof typeof state.activeInlineStyles]}\n\t\t\t\t\t\t\t\ttitle={control.label}\n\t\t\t\t\t\t\t\tstyle={control.style}\n\t\t\t\t\t\t\t\ticon={control.icon}\n\t\t\t\t\t\t\t\tdisabled={state.isTextUnselected}\n\t\t\t\t\t\t\t\tonClick={onInlineStyleToggle}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.alignment && (\n\t\t\t\t<>\n\t\t\t\t\t<AlignmentControls activeAlignment={state.activeAlignment} onAlignmentChange={onAlignmentChange} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.links && (\n\t\t\t\t<>\n\t\t\t\t\t<LinkButtons disabled={state.isTextUnselected} onClick={onLinkClick} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.tags && (\n\t\t\t\t<>\n\t\t\t\t\t<TagButtons onClick={onTagClick} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t{components.history && (\n\t\t\t\t<>\n\t\t\t\t\t<HistoryControls onUndo={onUndo} onRedo={onRedo} />\n\t\t\t\t\t<hr />\n\t\t\t\t</>\n\t\t\t)}\n\n\t\t\t<ToolbarControl\n\t\t\t\tdisabled={state.isTextUnselected}\n\t\t\t\ttitle=\"Очистить выбранный тег\"\n\t\t\t\ticon={<BrushCleaning />}\n\t\t\t\tonClick={onCleanTag}\n\t\t\t/>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { useCallback as e, useEffect as t, useMemo as n, useRef as r, useState as i } from "react";
|
|
2
|
+
import { cn as a } from "@ryuzaki13/react-foundation-lib/utils";
|
|
3
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
4
4
|
//#region src/wheel-picker/lib/wheelPickerMath.ts
|
|
5
5
|
function c(e, t) {
|
|
6
6
|
return t <= 0 || e < 0 ? 0 : e > t - 1 ? t - 1 : e;
|
|
@@ -29,7 +29,7 @@ var m = {
|
|
|
29
29
|
selectionFrame: "_--Hsbk"
|
|
30
30
|
}, h = 192, g = 7, _ = 96;
|
|
31
31
|
function v({ items: v, value: y, onChange: b, ariaLabel: x, disabled: S, className: C, minHeight: w = h, visibleRows: T = g, formatItem: E, getItemKey: D }) {
|
|
32
|
-
let O =
|
|
32
|
+
let O = r(null), k = r(null), A = r(null), j = n(() => Math.max(0, v.findIndex((e) => Object.is(e, y))), [v, y]), [M, N] = i(0), P = l(M, w), F = u(P, T), I = d(P, F), L = r(j), R = e((e) => Math.round(e.clientHeight), []), z = e(() => {
|
|
33
33
|
let e = k.current;
|
|
34
34
|
if (!e || v.length === 0) return;
|
|
35
35
|
let t = p(e.scrollTop, F, v.length);
|
|
@@ -41,12 +41,12 @@ function v({ items: v, value: y, onChange: b, ariaLabel: x, disabled: S, classNa
|
|
|
41
41
|
F,
|
|
42
42
|
v,
|
|
43
43
|
b
|
|
44
|
-
]), B =
|
|
44
|
+
]), B = e(() => {
|
|
45
45
|
A.current !== null && window.clearTimeout(A.current), A.current = window.setTimeout(() => {
|
|
46
46
|
A.current = null, z();
|
|
47
47
|
}, _);
|
|
48
48
|
}, [z]);
|
|
49
|
-
|
|
49
|
+
t(() => {
|
|
50
50
|
let e = O.current;
|
|
51
51
|
if (!e || typeof ResizeObserver > "u") return;
|
|
52
52
|
let t = (e) => {
|
|
@@ -56,7 +56,7 @@ function v({ items: v, value: y, onChange: b, ariaLabel: x, disabled: S, classNa
|
|
|
56
56
|
t(i);
|
|
57
57
|
});
|
|
58
58
|
return n.observe(e), t(R(e)), () => n.disconnect();
|
|
59
|
-
}, [R]),
|
|
59
|
+
}, [R]), t(() => {
|
|
60
60
|
let e = k.current;
|
|
61
61
|
if (!e || v.length === 0) return;
|
|
62
62
|
let t = c(j, v.length);
|
|
@@ -68,7 +68,7 @@ function v({ items: v, value: y, onChange: b, ariaLabel: x, disabled: S, classNa
|
|
|
68
68
|
F,
|
|
69
69
|
v.length,
|
|
70
70
|
j
|
|
71
|
-
]),
|
|
71
|
+
]), t(() => {
|
|
72
72
|
let e = k.current;
|
|
73
73
|
if (!e) return;
|
|
74
74
|
let t = () => {
|
|
@@ -84,7 +84,7 @@ function v({ items: v, value: y, onChange: b, ariaLabel: x, disabled: S, classNa
|
|
|
84
84
|
v,
|
|
85
85
|
b,
|
|
86
86
|
B
|
|
87
|
-
]),
|
|
87
|
+
]), t(() => () => {
|
|
88
88
|
A.current !== null && window.clearTimeout(A.current);
|
|
89
89
|
}, []);
|
|
90
90
|
let V = (e) => {
|
|
@@ -98,13 +98,13 @@ function v({ items: v, value: y, onChange: b, ariaLabel: x, disabled: S, classNa
|
|
|
98
98
|
"--wheel-picker-item-height": `${F}px`,
|
|
99
99
|
"--wheel-picker-edge-padding": `${I}px`
|
|
100
100
|
};
|
|
101
|
-
return /* @__PURE__ */
|
|
101
|
+
return /* @__PURE__ */ o("div", {
|
|
102
102
|
ref: O,
|
|
103
|
-
className:
|
|
103
|
+
className: a(m.wheelPicker, C),
|
|
104
104
|
style: H,
|
|
105
|
-
children: /* @__PURE__ */
|
|
105
|
+
children: /* @__PURE__ */ s("div", {
|
|
106
106
|
className: m.viewport,
|
|
107
|
-
children: [/* @__PURE__ */
|
|
107
|
+
children: [/* @__PURE__ */ o("div", {
|
|
108
108
|
ref: k,
|
|
109
109
|
className: m.scroller,
|
|
110
110
|
role: "listbox",
|
|
@@ -112,25 +112,25 @@ function v({ items: v, value: y, onChange: b, ariaLabel: x, disabled: S, classNa
|
|
|
112
112
|
"aria-label": x,
|
|
113
113
|
"aria-disabled": S || void 0,
|
|
114
114
|
onKeyDown: V,
|
|
115
|
-
children: /* @__PURE__ */
|
|
115
|
+
children: /* @__PURE__ */ o("div", {
|
|
116
116
|
className: m.items,
|
|
117
|
-
children: v.map((e,
|
|
118
|
-
let
|
|
119
|
-
return /* @__PURE__ */
|
|
117
|
+
children: v.map((e, t) => {
|
|
118
|
+
let n = t === j;
|
|
119
|
+
return /* @__PURE__ */ o("button", {
|
|
120
120
|
type: "button",
|
|
121
121
|
role: "option",
|
|
122
|
-
"aria-selected":
|
|
122
|
+
"aria-selected": n,
|
|
123
123
|
className: m.item,
|
|
124
|
-
"data-selected":
|
|
124
|
+
"data-selected": n ? "" : void 0,
|
|
125
125
|
disabled: S,
|
|
126
126
|
onClick: () => {
|
|
127
|
-
L.current =
|
|
127
|
+
L.current = t, b(e);
|
|
128
128
|
},
|
|
129
129
|
children: E?.(e) ?? String(e)
|
|
130
|
-
}, D?.(e,
|
|
130
|
+
}, D?.(e, t) ?? t);
|
|
131
131
|
})
|
|
132
132
|
})
|
|
133
|
-
}), /* @__PURE__ */
|
|
133
|
+
}), /* @__PURE__ */ o("div", {
|
|
134
134
|
className: m.selectionFrame,
|
|
135
135
|
"aria-hidden": "true"
|
|
136
136
|
})]
|
|
@@ -140,4 +140,4 @@ function v({ items: v, value: y, onChange: b, ariaLabel: x, disabled: S, classNa
|
|
|
140
140
|
//#endregion
|
|
141
141
|
export { v as t };
|
|
142
142
|
|
|
143
|
-
//# sourceMappingURL=wheel-picker-
|
|
143
|
+
//# sourceMappingURL=wheel-picker-FS58cRsQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wheel-picker-DUHGy7wE.js","names":[],"sources":["../../src/wheel-picker/lib/wheelPickerMath.ts","../../src/wheel-picker/WheelPicker.module.scss","../../src/wheel-picker/WheelPicker.tsx"],"sourcesContent":["/**\n * Возвращает безопасный индекс внутри диапазона элементов wheel-picker.\n */\nexport function clampWheelIndex(index: number, itemsCount: number): number {\n\tif (itemsCount <= 0) return 0;\n\tif (index < 0) return 0;\n\tif (index > itemsCount - 1) return itemsCount - 1;\n\n\treturn index;\n}\n\n/**\n * Возвращает высоту viewport wheel-picker с учётом минимального значения.\n */\nexport function resolveWheelViewportHeight(measuredHeight: number, minHeight: number): number {\n\tif (!Number.isFinite(measuredHeight) || measuredHeight <= 0) return minHeight;\n\treturn Math.max(measuredHeight, minHeight);\n}\n\n/**\n * Возвращает высоту одной строки picker-а.\n */\nexport function resolveWheelItemHeight(viewportHeight: number, visibleRows: number): number {\n\tconst safeVisibleRows = Math.max(1, visibleRows);\n\treturn Math.max(1, Math.round(viewportHeight / safeVisibleRows));\n}\n\n/**\n * Возвращает отступы сверху и снизу, чтобы выбранное значение всегда было по центру.\n */\nexport function resolveWheelEdgePadding(viewportHeight: number, itemHeight: number): number {\n\treturn Math.max(0, Math.round(viewportHeight / 2 - itemHeight / 2));\n}\n\n/**\n * Возвращает scrollTop, при котором значение с данным индексом окажется в центре viewport.\n */\nexport function resolveWheelScrollTop(index: number, itemHeight: number): number {\n\treturn Math.max(0, Math.round(index * itemHeight));\n}\n\n/**\n * Возвращает ближайший индекс по текущему положению scrollTop.\n */\nexport function resolveClosestWheelIndex(scrollTop: number, itemHeight: number, itemsCount: number): number {\n\tif (itemsCount <= 0 || itemHeight <= 0) return 0;\n\treturn clampWheelIndex(Math.round(scrollTop / itemHeight), itemsCount);\n}\n","@use \"@/styles/mixins\" as *;\n\n.wheelPicker {\n\t--wheel-picker-min-height: 10em;\n\t--wheel-picker-viewport-height: var(--wheel-picker-min-height);\n\t--wheel-picker-item-height: calc(var(--wheel-picker-viewport-height) / 7);\n\t--wheel-picker-edge-padding: calc((var(--wheel-picker-viewport-height) / 2) - (var(--wheel-picker-item-height) / 2));\n\n\tposition: relative;\n\tmin-height: var(--wheel-picker-min-height);\n\theight: 100%;\n\tborder: var(--border);\n\tborder-radius: var(--radius-sm);\n\tbackground: linear-gradient(to bottom, var(--surface-0), transparent 18%, transparent 82%, var(--surface-0)), var(--surface-1);\n\toverflow: hidden;\n}\n\n.viewport {\n\tposition: relative;\n\theight: var(--wheel-picker-viewport-height);\n}\n\n.scroller {\n\theight: 100%;\n\toverflow-y: auto;\n\toverscroll-behavior: contain;\n\tscroll-snap-type: y mandatory;\n\tscrollbar-width: none;\n\tpadding-block: var(--wheel-picker-edge-padding);\n\toutline: none;\n\n\t&::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t&:focus-visible {\n\t\t@include focusVisible;\n\t}\n}\n\n.items {\n\tdisplay: grid;\n}\n\n.item {\n\theight: var(--wheel-picker-item-height);\n\tpadding: 0 var(--space-sm);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tscroll-snap-align: center;\n\tbackground: transparent;\n\tcolor: var(--content-2);\n\tfont-family: var(--font-family-mono);\n\tfont-variant-numeric: tabular-nums;\n\ttransition:\n\t\tcolor var(--transition-fast) ease,\n\t\tbackground-color var(--transition-fast) ease,\n\t\tfont-variation-settings var(--transition-fast) ease;\n\n\t&[data-selected] {\n\t\tcolor: var(--content-0);\n\t\tfont-weight: 600;\n\t\tfont-variation-settings: \"wght\" 600;\n\t}\n\n\t&:hover:not(:disabled) {\n\t\tbackground: color-mix(in srgb, var(--surface-accent) 40%, transparent);\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t}\n}\n\n.selectionFrame {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 0;\n\tright: 0;\n\theight: var(--wheel-picker-item-height);\n\ttransform: translateY(-50%);\n\tborder-top: var(--border);\n\tborder-bottom: var(--border);\n\t// border-radius: var(--radius-xs);\n\tbackground: color-mix(in srgb, var(--surface-accent) 28%, transparent);\n\tpointer-events: none;\n}\n","import type { CSSProperties, Key, KeyboardEvent, ReactNode } from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport {\n\tclampWheelIndex,\n\tresolveClosestWheelIndex,\n\tresolveWheelEdgePadding,\n\tresolveWheelItemHeight,\n\tresolveWheelScrollTop,\n\tresolveWheelViewportHeight\n} from \"./lib/wheelPickerMath\";\nimport styles from \"./WheelPicker.module.scss\";\n\n/**\n * Пропсы внутреннего wheel-picker.\n */\nexport interface WheelPickerProps<T> {\n\titems: readonly T[];\n\tvalue: T;\n\tonChange: (value: T) => void;\n\tariaLabel: string;\n\tdisabled?: boolean;\n\tclassName?: string;\n\tminHeight?: number;\n\tvisibleRows?: number;\n\tformatItem?: (item: T) => ReactNode;\n\tgetItemKey?: (item: T, index: number) => Key;\n}\n\nconst DEFAULT_MIN_HEIGHT = 192;\nconst DEFAULT_VISIBLE_ROWS = 7;\nconst SNAP_TIMEOUT_MS = 96;\n\n/**\n * Внутренний wheel-picker со snap-кареткой по центру и блокировкой page scroll.\n */\nexport function WheelPicker<T>({\n\titems,\n\tvalue,\n\tonChange,\n\tariaLabel,\n\tdisabled,\n\tclassName,\n\tminHeight = DEFAULT_MIN_HEIGHT,\n\tvisibleRows = DEFAULT_VISIBLE_ROWS,\n\tformatItem,\n\tgetItemKey\n}: WheelPickerProps<T>) {\n\tconst rootRef = useRef<HTMLDivElement | null>(null);\n\tconst scrollerRef = useRef<HTMLDivElement | null>(null);\n\tconst snapTimeoutRef = useRef<number | null>(null);\n\tconst valueIndex = useMemo(\n\t\t() =>\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\titems.findIndex((item) => Object.is(item, value))\n\t\t\t),\n\t\t[items, value]\n\t);\n\tconst [measuredHeight, setMeasuredHeight] = useState(0);\n\tconst viewportHeight = resolveWheelViewportHeight(measuredHeight, minHeight);\n\tconst itemHeight = resolveWheelItemHeight(viewportHeight, visibleRows);\n\tconst edgePadding = resolveWheelEdgePadding(viewportHeight, itemHeight);\n\tconst lastAppliedIndexRef = useRef(valueIndex);\n\n\t/**\n\t * Возвращает высоту контентной области wheel без рамок, чтобы избежать накопления высоты.\n\t */\n\tconst readContentHeight = useCallback((element: HTMLDivElement) => Math.round(element.clientHeight), []);\n\n\t/**\n\t * Доводит scroll до ближайшего центра и синхронизирует выбранное значение.\n\t */\n\tconst snapToClosestValue = useCallback(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller || items.length === 0) return;\n\n\t\tconst nextIndex = resolveClosestWheelIndex(scroller.scrollTop, itemHeight, items.length);\n\t\tscroller.scrollTo({\n\t\t\ttop: resolveWheelScrollTop(nextIndex, itemHeight),\n\t\t\tbehavior: \"smooth\"\n\t\t});\n\n\t\tif (nextIndex !== lastAppliedIndexRef.current) {\n\t\t\tlastAppliedIndexRef.current = nextIndex;\n\t\t\tonChange(items[nextIndex]);\n\t\t}\n\t}, [itemHeight, items, onChange]);\n\n\t/**\n\t * Планирует мягкую доводку wheel после завершения scroll/wheel.\n\t */\n\tconst scheduleSnap = useCallback(() => {\n\t\tif (snapTimeoutRef.current !== null) {\n\t\t\twindow.clearTimeout(snapTimeoutRef.current);\n\t\t}\n\n\t\tsnapTimeoutRef.current = window.setTimeout(() => {\n\t\t\tsnapTimeoutRef.current = null;\n\t\t\tsnapToClosestValue();\n\t\t}, SNAP_TIMEOUT_MS);\n\t}, [snapToClosestValue]);\n\n\tuseEffect(() => {\n\t\tconst root = rootRef.current;\n\t\tif (!root || typeof ResizeObserver === \"undefined\") return;\n\n\t\tconst syncMeasuredHeight = (nextHeight: number) => {\n\t\t\tsetMeasuredHeight((prevHeight) => (prevHeight === nextHeight ? prevHeight : nextHeight));\n\t\t};\n\n\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\tconst entry = entries[0];\n\t\t\tconst nextHeight = Math.round(entry?.contentRect.height ?? readContentHeight(root));\n\n\t\t\tsyncMeasuredHeight(nextHeight);\n\t\t});\n\n\t\tobserver.observe(root);\n\t\tsyncMeasuredHeight(readContentHeight(root));\n\n\t\treturn () => observer.disconnect();\n\t}, [readContentHeight]);\n\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller || items.length === 0) return;\n\n\t\tconst targetIndex = clampWheelIndex(valueIndex, items.length);\n\t\tlastAppliedIndexRef.current = targetIndex;\n\t\tscroller.scrollTo({\n\t\t\ttop: resolveWheelScrollTop(targetIndex, itemHeight),\n\t\t\tbehavior: \"auto\"\n\t\t});\n\t}, [itemHeight, items.length, valueIndex]);\n\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return;\n\n\t\tconst handleScroll = () => {\n\t\t\tif (disabled) return;\n\t\t\tscheduleSnap();\n\t\t};\n\n\t\tconst handleWheel = (event: WheelEvent) => {\n\t\t\tif (disabled) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tscroller.scrollTop += event.deltaY;\n\t\t\tscheduleSnap();\n\t\t};\n\n\t\tscroller.addEventListener(\"scroll\", handleScroll, { passive: true });\n\t\tscroller.addEventListener(\"wheel\", handleWheel, { passive: false });\n\n\t\treturn () => {\n\t\t\tscroller.removeEventListener(\"scroll\", handleScroll);\n\t\t\tscroller.removeEventListener(\"wheel\", handleWheel);\n\t\t};\n\t}, [disabled, items, onChange, scheduleSnap]);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (snapTimeoutRef.current !== null) {\n\t\t\t\twindow.clearTimeout(snapTimeoutRef.current);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\t/**\n\t * Меняет значение по стрелкам вверх и вниз.\n\t */\n\tconst handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (disabled || items.length === 0) return;\n\n\t\tif (event.key !== \"ArrowUp\" && event.key !== \"ArrowDown\") return;\n\t\tevent.preventDefault();\n\n\t\tconst delta = event.key === \"ArrowUp\" ? -1 : 1;\n\t\tconst nextIndex = clampWheelIndex(valueIndex + delta, items.length);\n\t\tif (nextIndex === valueIndex) return;\n\n\t\tlastAppliedIndexRef.current = nextIndex;\n\t\tonChange(items[nextIndex]);\n\t};\n\n\tconst cssVars = {\n\t\t\"--wheel-picker-min-height\": `${minHeight}px`,\n\t\t\"--wheel-picker-viewport-height\": `${viewportHeight}px`,\n\t\t\"--wheel-picker-item-height\": `${itemHeight}px`,\n\t\t\"--wheel-picker-edge-padding\": `${edgePadding}px`\n\t} as CSSProperties;\n\n\treturn (\n\t\t<div ref={rootRef} className={cn(styles.wheelPicker, className)} style={cssVars}>\n\t\t\t<div className={styles.viewport}>\n\t\t\t\t<div\n\t\t\t\t\tref={scrollerRef}\n\t\t\t\t\tclassName={styles.scroller}\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\taria-disabled={disabled || undefined}\n\t\t\t\t\tonKeyDown={handleKeyDown}>\n\t\t\t\t\t<div className={styles.items}>\n\t\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\t\tconst selected = index === valueIndex;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={getItemKey?.(item, index) ?? index}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\t\t\t\tclassName={styles.item}\n\t\t\t\t\t\t\t\t\tdata-selected={selected ? \"\" : undefined}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tlastAppliedIndexRef.current = index;\n\t\t\t\t\t\t\t\t\t\tonChange(item);\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t{formatItem?.(item) ?? String(item)}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className={styles.selectionFrame} aria-hidden=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"wheel-picker-FS58cRsQ.js","names":[],"sources":["../../src/wheel-picker/lib/wheelPickerMath.ts","../../src/wheel-picker/WheelPicker.module.scss","../../src/wheel-picker/WheelPicker.tsx"],"sourcesContent":["/**\n * Возвращает безопасный индекс внутри диапазона элементов wheel-picker.\n */\nexport function clampWheelIndex(index: number, itemsCount: number): number {\n\tif (itemsCount <= 0) return 0;\n\tif (index < 0) return 0;\n\tif (index > itemsCount - 1) return itemsCount - 1;\n\n\treturn index;\n}\n\n/**\n * Возвращает высоту viewport wheel-picker с учётом минимального значения.\n */\nexport function resolveWheelViewportHeight(measuredHeight: number, minHeight: number): number {\n\tif (!Number.isFinite(measuredHeight) || measuredHeight <= 0) return minHeight;\n\treturn Math.max(measuredHeight, minHeight);\n}\n\n/**\n * Возвращает высоту одной строки picker-а.\n */\nexport function resolveWheelItemHeight(viewportHeight: number, visibleRows: number): number {\n\tconst safeVisibleRows = Math.max(1, visibleRows);\n\treturn Math.max(1, Math.round(viewportHeight / safeVisibleRows));\n}\n\n/**\n * Возвращает отступы сверху и снизу, чтобы выбранное значение всегда было по центру.\n */\nexport function resolveWheelEdgePadding(viewportHeight: number, itemHeight: number): number {\n\treturn Math.max(0, Math.round(viewportHeight / 2 - itemHeight / 2));\n}\n\n/**\n * Возвращает scrollTop, при котором значение с данным индексом окажется в центре viewport.\n */\nexport function resolveWheelScrollTop(index: number, itemHeight: number): number {\n\treturn Math.max(0, Math.round(index * itemHeight));\n}\n\n/**\n * Возвращает ближайший индекс по текущему положению scrollTop.\n */\nexport function resolveClosestWheelIndex(scrollTop: number, itemHeight: number, itemsCount: number): number {\n\tif (itemsCount <= 0 || itemHeight <= 0) return 0;\n\treturn clampWheelIndex(Math.round(scrollTop / itemHeight), itemsCount);\n}\n","@use \"@/styles/mixins\" as *;\n\n.wheelPicker {\n\t--wheel-picker-min-height: 10em;\n\t--wheel-picker-viewport-height: var(--wheel-picker-min-height);\n\t--wheel-picker-item-height: calc(var(--wheel-picker-viewport-height) / 7);\n\t--wheel-picker-edge-padding: calc((var(--wheel-picker-viewport-height) / 2) - (var(--wheel-picker-item-height) / 2));\n\n\tposition: relative;\n\tmin-height: var(--wheel-picker-min-height);\n\theight: 100%;\n\tborder: var(--border);\n\tborder-radius: var(--radius-sm);\n\tbackground: linear-gradient(to bottom, var(--surface-0), transparent 18%, transparent 82%, var(--surface-0)), var(--surface-1);\n\toverflow: hidden;\n}\n\n.viewport {\n\tposition: relative;\n\theight: var(--wheel-picker-viewport-height);\n}\n\n.scroller {\n\theight: 100%;\n\toverflow-y: auto;\n\toverscroll-behavior: contain;\n\tscroll-snap-type: y mandatory;\n\tscrollbar-width: none;\n\tpadding-block: var(--wheel-picker-edge-padding);\n\toutline: none;\n\n\t&::-webkit-scrollbar {\n\t\tdisplay: none;\n\t}\n\n\t&:focus-visible {\n\t\t@include focusVisible;\n\t}\n}\n\n.items {\n\tdisplay: grid;\n}\n\n.item {\n\theight: var(--wheel-picker-item-height);\n\tpadding: 0 var(--space-sm);\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tscroll-snap-align: center;\n\tbackground: transparent;\n\tcolor: var(--content-2);\n\tfont-family: var(--font-family-mono);\n\tfont-variant-numeric: tabular-nums;\n\ttransition:\n\t\tcolor var(--transition-fast) ease,\n\t\tbackground-color var(--transition-fast) ease,\n\t\tfont-variation-settings var(--transition-fast) ease;\n\n\t&[data-selected] {\n\t\tcolor: var(--content-0);\n\t\tfont-weight: 600;\n\t\tfont-variation-settings: \"wght\" 600;\n\t}\n\n\t&:hover:not(:disabled) {\n\t\tbackground: color-mix(in srgb, var(--surface-accent) 40%, transparent);\n\t}\n\n\t&:disabled {\n\t\tcursor: default;\n\t}\n}\n\n.selectionFrame {\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 0;\n\tright: 0;\n\theight: var(--wheel-picker-item-height);\n\ttransform: translateY(-50%);\n\tborder-top: var(--border);\n\tborder-bottom: var(--border);\n\t// border-radius: var(--radius-xs);\n\tbackground: color-mix(in srgb, var(--surface-accent) 28%, transparent);\n\tpointer-events: none;\n}\n","import type { CSSProperties, Key, KeyboardEvent, ReactNode } from \"react\";\nimport { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { cn } from \"@ryuzaki13/react-foundation-lib/utils\";\n\nimport {\n\tclampWheelIndex,\n\tresolveClosestWheelIndex,\n\tresolveWheelEdgePadding,\n\tresolveWheelItemHeight,\n\tresolveWheelScrollTop,\n\tresolveWheelViewportHeight\n} from \"./lib/wheelPickerMath\";\nimport styles from \"./WheelPicker.module.scss\";\n\n/**\n * Пропсы внутреннего wheel-picker.\n */\nexport interface WheelPickerProps<T> {\n\titems: readonly T[];\n\tvalue: T;\n\tonChange: (value: T) => void;\n\tariaLabel: string;\n\tdisabled?: boolean;\n\tclassName?: string;\n\tminHeight?: number;\n\tvisibleRows?: number;\n\tformatItem?: (item: T) => ReactNode;\n\tgetItemKey?: (item: T, index: number) => Key;\n}\n\nconst DEFAULT_MIN_HEIGHT = 192;\nconst DEFAULT_VISIBLE_ROWS = 7;\nconst SNAP_TIMEOUT_MS = 96;\n\n/**\n * Внутренний wheel-picker со snap-кареткой по центру и блокировкой page scroll.\n */\nexport function WheelPicker<T>({\n\titems,\n\tvalue,\n\tonChange,\n\tariaLabel,\n\tdisabled,\n\tclassName,\n\tminHeight = DEFAULT_MIN_HEIGHT,\n\tvisibleRows = DEFAULT_VISIBLE_ROWS,\n\tformatItem,\n\tgetItemKey\n}: WheelPickerProps<T>) {\n\tconst rootRef = useRef<HTMLDivElement | null>(null);\n\tconst scrollerRef = useRef<HTMLDivElement | null>(null);\n\tconst snapTimeoutRef = useRef<number | null>(null);\n\tconst valueIndex = useMemo(\n\t\t() =>\n\t\t\tMath.max(\n\t\t\t\t0,\n\t\t\t\titems.findIndex((item) => Object.is(item, value))\n\t\t\t),\n\t\t[items, value]\n\t);\n\tconst [measuredHeight, setMeasuredHeight] = useState(0);\n\tconst viewportHeight = resolveWheelViewportHeight(measuredHeight, minHeight);\n\tconst itemHeight = resolveWheelItemHeight(viewportHeight, visibleRows);\n\tconst edgePadding = resolveWheelEdgePadding(viewportHeight, itemHeight);\n\tconst lastAppliedIndexRef = useRef(valueIndex);\n\n\t/**\n\t * Возвращает высоту контентной области wheel без рамок, чтобы избежать накопления высоты.\n\t */\n\tconst readContentHeight = useCallback((element: HTMLDivElement) => Math.round(element.clientHeight), []);\n\n\t/**\n\t * Доводит scroll до ближайшего центра и синхронизирует выбранное значение.\n\t */\n\tconst snapToClosestValue = useCallback(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller || items.length === 0) return;\n\n\t\tconst nextIndex = resolveClosestWheelIndex(scroller.scrollTop, itemHeight, items.length);\n\t\tscroller.scrollTo({\n\t\t\ttop: resolveWheelScrollTop(nextIndex, itemHeight),\n\t\t\tbehavior: \"smooth\"\n\t\t});\n\n\t\tif (nextIndex !== lastAppliedIndexRef.current) {\n\t\t\tlastAppliedIndexRef.current = nextIndex;\n\t\t\tonChange(items[nextIndex]);\n\t\t}\n\t}, [itemHeight, items, onChange]);\n\n\t/**\n\t * Планирует мягкую доводку wheel после завершения scroll/wheel.\n\t */\n\tconst scheduleSnap = useCallback(() => {\n\t\tif (snapTimeoutRef.current !== null) {\n\t\t\twindow.clearTimeout(snapTimeoutRef.current);\n\t\t}\n\n\t\tsnapTimeoutRef.current = window.setTimeout(() => {\n\t\t\tsnapTimeoutRef.current = null;\n\t\t\tsnapToClosestValue();\n\t\t}, SNAP_TIMEOUT_MS);\n\t}, [snapToClosestValue]);\n\n\tuseEffect(() => {\n\t\tconst root = rootRef.current;\n\t\tif (!root || typeof ResizeObserver === \"undefined\") return;\n\n\t\tconst syncMeasuredHeight = (nextHeight: number) => {\n\t\t\tsetMeasuredHeight((prevHeight) => (prevHeight === nextHeight ? prevHeight : nextHeight));\n\t\t};\n\n\t\tconst observer = new ResizeObserver((entries) => {\n\t\t\tconst entry = entries[0];\n\t\t\tconst nextHeight = Math.round(entry?.contentRect.height ?? readContentHeight(root));\n\n\t\t\tsyncMeasuredHeight(nextHeight);\n\t\t});\n\n\t\tobserver.observe(root);\n\t\tsyncMeasuredHeight(readContentHeight(root));\n\n\t\treturn () => observer.disconnect();\n\t}, [readContentHeight]);\n\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller || items.length === 0) return;\n\n\t\tconst targetIndex = clampWheelIndex(valueIndex, items.length);\n\t\tlastAppliedIndexRef.current = targetIndex;\n\t\tscroller.scrollTo({\n\t\t\ttop: resolveWheelScrollTop(targetIndex, itemHeight),\n\t\t\tbehavior: \"auto\"\n\t\t});\n\t}, [itemHeight, items.length, valueIndex]);\n\n\tuseEffect(() => {\n\t\tconst scroller = scrollerRef.current;\n\t\tif (!scroller) return;\n\n\t\tconst handleScroll = () => {\n\t\t\tif (disabled) return;\n\t\t\tscheduleSnap();\n\t\t};\n\n\t\tconst handleWheel = (event: WheelEvent) => {\n\t\t\tif (disabled) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tscroller.scrollTop += event.deltaY;\n\t\t\tscheduleSnap();\n\t\t};\n\n\t\tscroller.addEventListener(\"scroll\", handleScroll, { passive: true });\n\t\tscroller.addEventListener(\"wheel\", handleWheel, { passive: false });\n\n\t\treturn () => {\n\t\t\tscroller.removeEventListener(\"scroll\", handleScroll);\n\t\t\tscroller.removeEventListener(\"wheel\", handleWheel);\n\t\t};\n\t}, [disabled, items, onChange, scheduleSnap]);\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tif (snapTimeoutRef.current !== null) {\n\t\t\t\twindow.clearTimeout(snapTimeoutRef.current);\n\t\t\t}\n\t\t};\n\t}, []);\n\n\t/**\n\t * Меняет значение по стрелкам вверх и вниз.\n\t */\n\tconst handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n\t\tif (disabled || items.length === 0) return;\n\n\t\tif (event.key !== \"ArrowUp\" && event.key !== \"ArrowDown\") return;\n\t\tevent.preventDefault();\n\n\t\tconst delta = event.key === \"ArrowUp\" ? -1 : 1;\n\t\tconst nextIndex = clampWheelIndex(valueIndex + delta, items.length);\n\t\tif (nextIndex === valueIndex) return;\n\n\t\tlastAppliedIndexRef.current = nextIndex;\n\t\tonChange(items[nextIndex]);\n\t};\n\n\tconst cssVars = {\n\t\t\"--wheel-picker-min-height\": `${minHeight}px`,\n\t\t\"--wheel-picker-viewport-height\": `${viewportHeight}px`,\n\t\t\"--wheel-picker-item-height\": `${itemHeight}px`,\n\t\t\"--wheel-picker-edge-padding\": `${edgePadding}px`\n\t} as CSSProperties;\n\n\treturn (\n\t\t<div ref={rootRef} className={cn(styles.wheelPicker, className)} style={cssVars}>\n\t\t\t<div className={styles.viewport}>\n\t\t\t\t<div\n\t\t\t\t\tref={scrollerRef}\n\t\t\t\t\tclassName={styles.scroller}\n\t\t\t\t\trole=\"listbox\"\n\t\t\t\t\ttabIndex={disabled ? -1 : 0}\n\t\t\t\t\taria-label={ariaLabel}\n\t\t\t\t\taria-disabled={disabled || undefined}\n\t\t\t\t\tonKeyDown={handleKeyDown}>\n\t\t\t\t\t<div className={styles.items}>\n\t\t\t\t\t\t{items.map((item, index) => {\n\t\t\t\t\t\t\tconst selected = index === valueIndex;\n\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\t\tkey={getItemKey?.(item, index) ?? index}\n\t\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\t\t\t\taria-selected={selected}\n\t\t\t\t\t\t\t\t\tclassName={styles.item}\n\t\t\t\t\t\t\t\t\tdata-selected={selected ? \"\" : undefined}\n\t\t\t\t\t\t\t\t\tdisabled={disabled}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tlastAppliedIndexRef.current = index;\n\t\t\t\t\t\t\t\t\t\tonChange(item);\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t{formatItem?.(item) ?? String(item)}\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className={styles.selectionFrame} aria-hidden=\"true\" />\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuContent.d.ts","sourceRoot":"","sources":["../../../src/context-menu/components/MenuContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuContent.d.ts","sourceRoot":"","sources":["../../../src/context-menu/components/MenuContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsB,MAAM,OAAO,CAAC;AAW3C,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAuGlD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuContext.d.ts","sourceRoot":"","sources":["../../../src/context-menu/components/MenuContext.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MenuContext.d.ts","sourceRoot":"","sources":["../../../src/context-menu/components/MenuContext.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,8CAA8C,CAAC;AAE9F,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,aAAa,CAAC;AAEtD,UAAU,gBAAgB;IACzB,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,cAAc,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC;IAC9B,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IACpC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACjD,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAChD,WAAW,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,sBAAsB,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC3D,cAAc,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAC/D,oBAAoB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACrE,gBAAgB,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IACpE,SAAS,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,WAAW,kDAA+C,CAAC;AAExE,wBAAgB,cAAc,qBAS7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuRoot.d.ts","sourceRoot":"","sources":["../../../src/context-menu/components/MenuRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,EAA4B,SAAS,EAAsB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuRoot.d.ts","sourceRoot":"","sources":["../../../src/context-menu/components/MenuRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAC;AAEjF,OAAO,EAA4B,SAAS,EAAsB,MAAM,oBAAoB,CAAC;AAU7F,OAAO,EAAe,eAAe,EAAE,MAAM,eAAe,CAAC;AAE7D,UAAU,aAAa;IACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC;AAED,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAsL5C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadialMenuContent.d.ts","sourceRoot":"","sources":["../../../src/context-menu/components/RadialMenuContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"RadialMenuContent.d.ts","sourceRoot":"","sources":["../../../src/context-menu/components/RadialMenuContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAC;AAWzE,MAAM,WAAW,sBAAsB;IACtC,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,EAAE;QAAE,SAAS,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,KAAK,CAAC,SAAS,CAAC,CAAC;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAOD,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,sBAAsB,CAyK9D,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as e, t } from "../chunks/DropdownMenu-
|
|
1
|
+
import { n as e, t } from "../chunks/DropdownMenu-DQeR3y7M.js";
|
|
2
2
|
export { e as ContextMenu, t as DropdownMenu };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { n as e, t } from "../../chunks/DropdownMenu-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
1
|
+
import { n as e, t } from "../../chunks/DropdownMenu-DQeR3y7M.js";
|
|
2
|
+
import { useState as n } from "react";
|
|
3
|
+
import { Copy as r, Eye as i, PencilLine as a, Pin as o, Settings2 as s, Trash2 as c } from "lucide-react";
|
|
4
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
5
5
|
//#region src/context-menu/stories/ContextMenu.stories.tsx
|
|
6
6
|
var d = {
|
|
7
7
|
title: "Shared/UI/ContextMenu",
|
|
@@ -12,31 +12,31 @@ var d = {
|
|
|
12
12
|
tags: ["autodocs"]
|
|
13
13
|
}, f = {
|
|
14
14
|
name: "DropdownMenu / Базовый",
|
|
15
|
-
render: () => /* @__PURE__ */
|
|
15
|
+
render: () => /* @__PURE__ */ u(t, { children: [/* @__PURE__ */ l(t.Trigger, { children: /* @__PURE__ */ l("button", {
|
|
16
16
|
type: "button",
|
|
17
17
|
children: "Действия"
|
|
18
|
-
}) }), /* @__PURE__ */
|
|
19
|
-
/* @__PURE__ */
|
|
20
|
-
/* @__PURE__ */
|
|
21
|
-
icon: /* @__PURE__ */
|
|
18
|
+
}) }), /* @__PURE__ */ u(t.Content, { children: [
|
|
19
|
+
/* @__PURE__ */ l(t.GroupLabel, { children: "Файл" }),
|
|
20
|
+
/* @__PURE__ */ l(t.Item, {
|
|
21
|
+
icon: /* @__PURE__ */ l(a, { size: 14 }),
|
|
22
22
|
hotKey: "Ctrl+E",
|
|
23
23
|
children: "Редактировать"
|
|
24
24
|
}),
|
|
25
|
-
/* @__PURE__ */
|
|
26
|
-
icon: /* @__PURE__ */
|
|
25
|
+
/* @__PURE__ */ l(t.Item, {
|
|
26
|
+
icon: /* @__PURE__ */ l(r, { size: 14 }),
|
|
27
27
|
hotKey: "Ctrl+C",
|
|
28
28
|
children: "Копировать"
|
|
29
29
|
}),
|
|
30
|
-
/* @__PURE__ */
|
|
31
|
-
/* @__PURE__ */
|
|
32
|
-
icon: /* @__PURE__ */ c
|
|
30
|
+
/* @__PURE__ */ l(t.Separator, {}),
|
|
31
|
+
/* @__PURE__ */ l(t.Item, {
|
|
32
|
+
icon: /* @__PURE__ */ l(c, { size: 14 }),
|
|
33
33
|
hotKey: "Del",
|
|
34
34
|
children: "Удалить"
|
|
35
35
|
})
|
|
36
36
|
] })] })
|
|
37
37
|
}, p = {
|
|
38
38
|
name: "ContextMenu / По правому клику",
|
|
39
|
-
render: () => /* @__PURE__ */
|
|
39
|
+
render: () => /* @__PURE__ */ u(e, { children: [/* @__PURE__ */ l(e.Trigger, { children: /* @__PURE__ */ u("div", {
|
|
40
40
|
style: {
|
|
41
41
|
width: 300,
|
|
42
42
|
height: 180,
|
|
@@ -50,27 +50,27 @@ var d = {
|
|
|
50
50
|
},
|
|
51
51
|
children: [
|
|
52
52
|
"Нажмите правой кнопкой мыши",
|
|
53
|
-
/* @__PURE__ */
|
|
53
|
+
/* @__PURE__ */ l("br", {}),
|
|
54
54
|
"или Shift+F10"
|
|
55
55
|
]
|
|
56
|
-
}) }), /* @__PURE__ */
|
|
57
|
-
/* @__PURE__ */
|
|
58
|
-
icon: /* @__PURE__ */
|
|
56
|
+
}) }), /* @__PURE__ */ u(e.Content, { children: [
|
|
57
|
+
/* @__PURE__ */ l(e.Item, {
|
|
58
|
+
icon: /* @__PURE__ */ l(a, { size: 14 }),
|
|
59
59
|
children: "Переименовать"
|
|
60
60
|
}),
|
|
61
|
-
/* @__PURE__ */
|
|
62
|
-
icon: /* @__PURE__ */
|
|
61
|
+
/* @__PURE__ */ l(e.Item, {
|
|
62
|
+
icon: /* @__PURE__ */ l(r, { size: 14 }),
|
|
63
63
|
children: "Дублировать"
|
|
64
64
|
}),
|
|
65
|
-
/* @__PURE__ */
|
|
66
|
-
/* @__PURE__ */
|
|
67
|
-
icon: /* @__PURE__ */ c
|
|
65
|
+
/* @__PURE__ */ l(e.Separator, {}),
|
|
66
|
+
/* @__PURE__ */ l(e.Item, {
|
|
67
|
+
icon: /* @__PURE__ */ l(c, { size: 14 }),
|
|
68
68
|
children: "Переместить в корзину"
|
|
69
69
|
})
|
|
70
70
|
] })] })
|
|
71
71
|
}, m = {
|
|
72
72
|
name: "ContextMenu / Радиальное меню",
|
|
73
|
-
render: () => /* @__PURE__ */
|
|
73
|
+
render: () => /* @__PURE__ */ u(e, { children: [/* @__PURE__ */ l(e.Trigger, { children: /* @__PURE__ */ u("div", {
|
|
74
74
|
style: {
|
|
75
75
|
width: 360,
|
|
76
76
|
height: 220,
|
|
@@ -84,47 +84,47 @@ var d = {
|
|
|
84
84
|
},
|
|
85
85
|
children: [
|
|
86
86
|
"Нажмите правой кнопкой мыши",
|
|
87
|
-
/* @__PURE__ */
|
|
87
|
+
/* @__PURE__ */ l("br", {}),
|
|
88
88
|
"или Shift+F10"
|
|
89
89
|
]
|
|
90
|
-
}) }), /* @__PURE__ */
|
|
91
|
-
/* @__PURE__ */
|
|
92
|
-
icon: /* @__PURE__ */
|
|
90
|
+
}) }), /* @__PURE__ */ u(e.RadialContent, { children: [
|
|
91
|
+
/* @__PURE__ */ l(e.RadialItem, {
|
|
92
|
+
icon: /* @__PURE__ */ l(a, {}),
|
|
93
93
|
children: "Править"
|
|
94
94
|
}),
|
|
95
|
-
/* @__PURE__ */
|
|
96
|
-
icon: /* @__PURE__ */
|
|
95
|
+
/* @__PURE__ */ l(e.RadialItem, {
|
|
96
|
+
icon: /* @__PURE__ */ l(r, {}),
|
|
97
97
|
children: "Копия"
|
|
98
98
|
}),
|
|
99
|
-
/* @__PURE__ */
|
|
100
|
-
icon: /* @__PURE__ */
|
|
99
|
+
/* @__PURE__ */ l(e.RadialItem, {
|
|
100
|
+
icon: /* @__PURE__ */ l(o, {}),
|
|
101
101
|
children: "Закрепить"
|
|
102
102
|
}),
|
|
103
|
-
/* @__PURE__ */
|
|
104
|
-
icon: /* @__PURE__ */
|
|
103
|
+
/* @__PURE__ */ l(e.RadialItem, {
|
|
104
|
+
icon: /* @__PURE__ */ l(i, {}),
|
|
105
105
|
children: "Просмотр"
|
|
106
106
|
}),
|
|
107
|
-
/* @__PURE__ */
|
|
108
|
-
icon: /* @__PURE__ */
|
|
107
|
+
/* @__PURE__ */ l(e.RadialItem, {
|
|
108
|
+
icon: /* @__PURE__ */ l(s, {}),
|
|
109
109
|
children: "Опции"
|
|
110
110
|
}),
|
|
111
|
-
/* @__PURE__ */
|
|
112
|
-
icon: /* @__PURE__ */ c
|
|
111
|
+
/* @__PURE__ */ l(e.RadialItem, {
|
|
112
|
+
icon: /* @__PURE__ */ l(c, {}),
|
|
113
113
|
children: "Удалить"
|
|
114
114
|
})
|
|
115
115
|
] })] })
|
|
116
116
|
}, h = {
|
|
117
117
|
name: "DropdownMenu / Контролируемый",
|
|
118
118
|
render: () => {
|
|
119
|
-
let [e,
|
|
120
|
-
return /* @__PURE__ */
|
|
119
|
+
let [e, r] = n(!1);
|
|
120
|
+
return /* @__PURE__ */ u(t, {
|
|
121
121
|
open: e,
|
|
122
|
-
onOpenChange:
|
|
123
|
-
children: [/* @__PURE__ */
|
|
122
|
+
onOpenChange: r,
|
|
123
|
+
children: [/* @__PURE__ */ l(t.Trigger, { children: /* @__PURE__ */ l("button", {
|
|
124
124
|
type: "button",
|
|
125
125
|
children: e ? "Скрыть меню" : "Показать меню"
|
|
126
|
-
}) }), /* @__PURE__ */
|
|
127
|
-
onSelect: () =>
|
|
126
|
+
}) }), /* @__PURE__ */ l(t.Content, { children: /* @__PURE__ */ l(t.Item, {
|
|
127
|
+
onSelect: () => r(!1),
|
|
128
128
|
children: "Закрыть"
|
|
129
129
|
}) })]
|
|
130
130
|
});
|
package/dist/date-input/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "../chunks/CalendarView-
|
|
2
|
-
import { a as c, c as l, d as u, f as d, h as f, i as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as x, u as S } from "../chunks/DateInput
|
|
1
|
+
import { a as e, c as t, i as n, n as r, o as i, r as a, s as o, t as s } from "../chunks/CalendarView-DjeTJkTT.js";
|
|
2
|
+
import { a as c, c as l, d as u, f as d, h as f, i as p, l as m, m as h, n as g, o as _, p as v, r as y, s as b, t as x, u as S } from "../chunks/DateInput--tfofQ2x.js";
|
|
3
3
|
export { s as CalendarView, r as DATE_INPUT_SELECTION_MODES, a as DATE_INPUT_WEEK_END_DAYS, n as DATE_PICKER_LEVELS, y as DEFAULT_DATE_INPUT_FORMAT, p as DEFAULT_DATE_INPUT_PRESET, x as RangeDateInput, g as SingleDateInput, c as areRangeDateValuesEqual, _ as areSingleDateValuesEqual, b as formatDateInputValue, l as formatRangeDateValue, m as formatSingleDateValue, e as getDatePickerLevelForSelectionMode, i as isDatePickerLevelAvailable, S as normalizeRangeDateValue, u as normalizeRangeEndDateValue, d as normalizeSingleDateValue, v as parseRangeDateValue, h as parseRangeEndDateValue, f as parseSingleDateValue, o as resolveAvailableDatePickerLevel, t as resolveDateInputPeriodRangeState };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/date-input/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/date-input/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,2BAA2B,EAChC,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,MAAM,4CAA4C,CAAC;AAEpD,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AACvD,MAAM,MAAM,YAAY,GAAG,eAAe,CAAC;AAC3C,MAAM,MAAM,sBAAsB,GAAG,2BAA2B,CAAC;AACjE,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,CAAC;AAGrD,UAAU,WAAW,CAAC,CAAC,GAAG,OAAO;IAChC,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC7B;AAGD,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,UAAU,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,sBAAuB,SAAQ,oBAAoB,CAAC,IAAI,GAAG,IAAI,CAAC;IAChF,YAAY,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,MAAM,WAAW,qBAAsB,SAAQ,oBAAoB,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAC5F,YAAY,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,MAAM,gBAAgB,GAAG,sBAAsB,GAAG,qBAAqB,CAAC;AAG9E,UAAU,iBAAiB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;IAC9D,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;CACf;AAED,UAAU,mBAAoB,SAAQ,iBAAiB,CAAC,IAAI,GAAG,IAAI,CAAC;IACnE,YAAY,CAAC,EAAE,KAAK,CAAC;CACrB;AAED,UAAU,kBAAmB,SAAQ,iBAAiB,CAAC,iBAAiB,CAAC;IACxE,YAAY,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as e, r as t } from "../../chunks/CalendarView-
|
|
2
|
-
import { n, t as r } from "../../chunks/DateInput
|
|
1
|
+
import { n as e, r as t } from "../../chunks/CalendarView-DjeTJkTT.js";
|
|
2
|
+
import { n, t as r } from "../../chunks/DateInput--tfofQ2x.js";
|
|
3
3
|
import { jsx as i } from "react/jsx-runtime";
|
|
4
4
|
import { useArgs as a } from "storybook/preview-api";
|
|
5
5
|
//#region src/date-input/stories/DateInput.stories.tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarView.d.ts","sourceRoot":"","sources":["../../../src/date-input/ui/CalendarView.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CalendarView.d.ts","sourceRoot":"","sources":["../../../src/date-input/ui/CalendarView.tsx"],"names":[],"mappings":"AAEA,OAAO,EAQN,KAAK,iBAAiB,EACtB,MAAM,4CAA4C,CAAC;AAIpD,OAAO,EAA8B,KAAK,YAAY,EAAE,KAAK,sBAAsB,EAAE,KAAK,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAO9H,UAAU,qBAAqB;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,eAAe,EAAE,YAAY,CAAC;IAC9B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC,YAAY,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;CAC3C;AAED,UAAU,iBAAkB,SAAQ,qBAAqB;IACxD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,IAAI,GAAG,iBAAiB,GAAG,IAAI,CAAC;IACvC,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,iBAAiB,KAAK,IAAI,CAAC;IACnD,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;CAC3C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,EAC5B,IAAI,EACJ,eAAe,EACf,aAAqB,EACrB,UAAqB,EACrB,YAAY,EACZ,GAAG,KAAK,EACR,EAAE,iBAAiB,+BAyPnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../../src/date-input/ui/DateInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA4C,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../../src/date-input/ui/DateInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAA4C,MAAM,OAAO,CAAC;AAEtE,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAOtG,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAMN,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,MAAM,QAAQ,CAAC;AAMhB,UAAU,kBAAkB;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAE1B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,OAAO,CAAC,EAAE,IAAI,CAAC;IAEf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC;;OAEG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;IACjC;;OAEG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;OAEG;IACH,oBAAoB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACzD;;OAEG;IACH,qBAAqB,CAAC,EAAE,CAAC,aAAa,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACxE;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB,EAAE,WAAW,CAAC,IAAI,GAAG,IAAI,CAAC;IACzF,YAAY,CAAC,EAAE,KAAK,CAAC;CACrB;AACD,MAAM,WAAW,mBAAoB,SAAQ,kBAAkB,EAAE,WAAW,CAAC,iBAAiB,GAAG,IAAI,CAAC;IACrG,YAAY,EAAE,IAAI,CAAC;CACnB;AAuPD,wBAAgB,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,EAAE,cAAc,CAAC,eAEhF;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,cAAc,CAAC,eAE9E"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../chunks/DateRangePresetSelect-
|
|
1
|
+
import { a as e, c as t, i as n, l as r, n as i, o as a, r as o, s, t as c, u as l } from "../chunks/DateRangePresetSelect-UgsfaOeM.js";
|
|
2
2
|
export { i as DATE_RANGE_PRESET_OPTIONS, o as DEFAULT_DATE_RANGE_PRESET_IDS, n as DEFAULT_DATE_RANGE_PRESET_OPTIONS, c as DateRangePresetSelect, e as getDateRangePresetOption, a as isDateRangePresetId, s as normalizeDateRangePresetIds, t as resolveDateRangePresetIdByRange, r as resolveDateRangePresetOptionsByIds, l as resolveDateRangePresetPayload };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { r as e } from "../../chunks/Grid-ByIIytjh.js";
|
|
2
|
-
import { t } from "../../chunks/DateInput
|
|
3
|
-
import { t as n } from "../../chunks/DateRangePresetSelect-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { t } from "../../chunks/DateInput--tfofQ2x.js";
|
|
3
|
+
import { t as n } from "../../chunks/DateRangePresetSelect-UgsfaOeM.js";
|
|
4
|
+
import { useState as r } from "react";
|
|
5
|
+
import { jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
6
6
|
//#region src/date-range-preset-select/stories/DateRangePresetSelect.stories.tsx
|
|
7
7
|
var o = {
|
|
8
8
|
title: "Shared/UI/DateRangePresetSelect",
|
|
@@ -17,17 +17,17 @@ var o = {
|
|
|
17
17
|
},
|
|
18
18
|
tags: ["autodocs"]
|
|
19
19
|
}, s = { render: () => {
|
|
20
|
-
let [o, s] =
|
|
21
|
-
return /* @__PURE__ */
|
|
20
|
+
let [o, s] = r("monthStartToToday"), [c, l] = r([new Date(2026, 2, 1, 0, 0, 0), new Date(2026, 2, 10, 23, 59, 59)]);
|
|
21
|
+
return /* @__PURE__ */ a(e, {
|
|
22
22
|
gap: "md",
|
|
23
|
-
children: [/* @__PURE__ */
|
|
23
|
+
children: [/* @__PURE__ */ i(n, {
|
|
24
24
|
label: "Пресет диапазона",
|
|
25
25
|
placeholder: "Выберите пресет",
|
|
26
26
|
value: o,
|
|
27
27
|
onChange: s,
|
|
28
28
|
onRangeChange: (e) => l(e?.range ?? null),
|
|
29
29
|
referenceDate: new Date(2026, 2, 10, 12, 0, 0)
|
|
30
|
-
}), /* @__PURE__ */
|
|
30
|
+
}), /* @__PURE__ */ i(t, {
|
|
31
31
|
label: "Диапазон дат",
|
|
32
32
|
placeholder: "дд.мм.гггг - дд.мм.гггг",
|
|
33
33
|
value: c,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as e } from "../chunks/SingleDateTimeInput-
|
|
1
|
+
import { t as e } from "../chunks/SingleDateTimeInput-BmeuVGQT.js";
|
|
2
2
|
export { e as SingleDateTimeInput };
|