@quen-ui/components 0.0.14 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/Accordion/Accordion.cjs.js +88 -0
- package/dist/Accordion/Accordion.d.ts +3 -0
- package/dist/Accordion/Accordion.es.js +89 -0
- package/dist/Accordion/AccordionGroup.cjs.js +82 -0
- package/dist/Accordion/AccordionGroup.d.ts +12 -0
- package/dist/Accordion/AccordionGroup.es.js +82 -0
- package/dist/Accordion/AccordionItem.cjs.js +71 -0
- package/dist/Accordion/AccordionItem.d.ts +3 -0
- package/dist/Accordion/AccordionItem.es.js +72 -0
- package/dist/Accordion/helpers.cjs.js +24 -0
- package/dist/Accordion/helpers.d.ts +25 -0
- package/dist/Accordion/helpers.es.js +24 -0
- package/dist/Accordion/index.cjs.js +7 -0
- package/dist/Accordion/index.d.ts +8 -0
- package/dist/Accordion/index.es.js +7 -0
- package/dist/Accordion/styles.cjs.js +97 -0
- package/dist/Accordion/styles.d.ts +23 -0
- package/dist/Accordion/styles.es.js +97 -0
- package/dist/Accordion/types.d.ts +142 -0
- package/dist/Accordion/useAccordionState.cjs.js +34 -0
- package/dist/Accordion/useAccordionState.d.ts +12 -0
- package/dist/Accordion/useAccordionState.es.js +34 -0
- package/dist/Alert/Alert.cjs.js +1 -1
- package/dist/Alert/Alert.es.js +1 -1
- package/dist/Alert/styles.cjs.js +14 -10
- package/dist/Alert/styles.es.js +14 -10
- package/dist/Avatar/styles.cjs.js +16 -11
- package/dist/Avatar/styles.es.js +16 -11
- package/dist/Badge/styles.cjs.js +7 -7
- package/dist/Badge/styles.es.js +7 -7
- package/dist/Breadcrumbs/BreadcrumbItem.cjs.js +6 -6
- package/dist/Breadcrumbs/BreadcrumbItem.es.js +6 -6
- package/dist/Breadcrumbs/Breadcrumbs.cjs.js +2 -3
- package/dist/Breadcrumbs/Breadcrumbs.es.js +2 -3
- package/dist/Breadcrumbs/styles.cjs.js +15 -15
- package/dist/Breadcrumbs/styles.es.js +15 -15
- package/dist/Button/Button.cjs.js +3 -3
- package/dist/Button/Button.es.js +6 -6
- package/dist/Button/index.d.ts +1 -1
- package/dist/Button/styles.cjs.js +49 -54
- package/dist/Button/styles.es.js +50 -55
- package/dist/Button/types.d.ts +2 -3
- package/dist/Calendar/Calendar.cjs.js +200 -0
- package/dist/Calendar/Calendar.d.ts +4 -0
- package/dist/Calendar/Calendar.es.js +201 -0
- package/dist/Calendar/DaysLevel.cjs.js +93 -0
- package/dist/Calendar/DaysLevel.d.ts +3 -0
- package/dist/Calendar/DaysLevel.es.js +94 -0
- package/dist/Calendar/MonthLevel.cjs.js +23 -0
- package/dist/Calendar/MonthLevel.d.ts +3 -0
- package/dist/Calendar/MonthLevel.es.js +24 -0
- package/dist/Calendar/YearsLevel.cjs.js +24 -0
- package/dist/Calendar/YearsLevel.d.ts +3 -0
- package/dist/Calendar/YearsLevel.es.js +25 -0
- package/dist/Calendar/helpers.cjs.js +60 -0
- package/dist/Calendar/helpers.d.ts +9 -0
- package/dist/Calendar/helpers.es.js +60 -0
- package/dist/Calendar/index.d.ts +2 -0
- package/dist/Calendar/styles.cjs.js +116 -0
- package/dist/Calendar/styles.d.ts +16 -0
- package/dist/Calendar/styles.es.js +116 -0
- package/dist/Calendar/types.d.ts +115 -0
- package/dist/Card/Card.cjs.js +4 -2
- package/dist/Card/Card.d.ts +1 -1
- package/dist/Card/Card.es.js +4 -2
- package/dist/Card/styles.cjs.js +2 -2
- package/dist/Card/styles.es.js +2 -2
- package/dist/Card/types.d.ts +2 -0
- package/dist/Checkbox/Checkbox.cjs.js +1 -1
- package/dist/Checkbox/Checkbox.es.js +1 -1
- package/dist/Checkbox/CheckboxGroup.cjs.js +22 -25
- package/dist/Checkbox/CheckboxGroup.es.js +22 -25
- package/dist/Checkbox/styles.cjs.js +24 -23
- package/dist/Checkbox/styles.es.js +24 -23
- package/dist/ColorPicker/ColorPicker.cjs.js +404 -0
- package/dist/ColorPicker/ColorPicker.d.ts +3 -0
- package/dist/ColorPicker/ColorPicker.es.js +405 -0
- package/dist/ColorPicker/InputColor.cjs.js +94 -0
- package/dist/ColorPicker/InputColor.d.ts +3 -0
- package/dist/ColorPicker/InputColor.es.js +95 -0
- package/dist/ColorPicker/InputsColor.cjs.js +177 -0
- package/dist/ColorPicker/InputsColor.d.ts +3 -0
- package/dist/ColorPicker/InputsColor.es.js +178 -0
- package/dist/ColorPicker/helpers.cjs.js +32 -0
- package/dist/ColorPicker/helpers.d.ts +4 -0
- package/dist/ColorPicker/helpers.es.js +32 -0
- package/dist/ColorPicker/index.cjs.js +7 -0
- package/dist/ColorPicker/index.d.ts +8 -0
- package/dist/ColorPicker/index.es.js +7 -0
- package/dist/ColorPicker/styles.cjs.js +234 -0
- package/dist/ColorPicker/styles.d.ts +43 -0
- package/dist/ColorPicker/styles.es.js +234 -0
- package/dist/ColorPicker/types.d.ts +56 -0
- package/dist/Divider/styles.cjs.js +12 -10
- package/dist/Divider/styles.es.js +12 -10
- package/dist/Drawer/Drawer.cjs.js +5 -1
- package/dist/Drawer/Drawer.es.js +5 -1
- package/dist/Drawer/styles.cjs.js +4 -5
- package/dist/Drawer/styles.es.js +4 -5
- package/dist/Dropdown/Dropdown.cjs.js +31 -2
- package/dist/Dropdown/Dropdown.d.ts +2 -2
- package/dist/Dropdown/Dropdown.es.js +32 -3
- package/dist/Dropdown/DropdownItem.cjs.js +4 -5
- package/dist/Dropdown/DropdownItem.es.js +4 -5
- package/dist/Dropdown/DropdownList.cjs.js +3 -2
- package/dist/Dropdown/DropdownList.es.js +6 -5
- package/dist/Dropdown/DropdownPortal.cjs.js +8 -5
- package/dist/Dropdown/DropdownPortal.d.ts +5 -3
- package/dist/Dropdown/DropdownPortal.es.js +9 -6
- package/dist/Dropdown/helpers.cjs.js +1 -1
- package/dist/Dropdown/helpers.es.js +1 -1
- package/dist/Dropdown/styles.cjs.js +28 -27
- package/dist/Dropdown/styles.d.ts +2 -0
- package/dist/Dropdown/styles.es.js +28 -27
- package/dist/EmptyState/EmptyState.cjs.js +51 -0
- package/dist/EmptyState/EmptyState.d.ts +3 -0
- package/dist/EmptyState/EmptyState.es.js +52 -0
- package/dist/EmptyState/index.d.ts +2 -0
- package/dist/EmptyState/types.d.ts +10 -0
- package/dist/Flex/Flex.d.ts +1 -1
- package/dist/Flex/types.d.ts +1 -0
- package/dist/Form/Field.cjs.js +175 -0
- package/dist/Form/Field.d.ts +3 -0
- package/dist/Form/Field.es.js +176 -0
- package/dist/Form/FieldArray.cjs.js +24 -0
- package/dist/Form/FieldArray.d.ts +3 -0
- package/dist/Form/FieldArray.es.js +25 -0
- package/dist/Form/Form.cjs.js +69 -0
- package/dist/Form/Form.d.ts +3 -0
- package/dist/Form/Form.es.js +69 -0
- package/dist/Form/defaultValidateMessages.cjs.js +51 -0
- package/dist/Form/defaultValidateMessages.d.ts +47 -0
- package/dist/Form/defaultValidateMessages.es.js +51 -0
- package/dist/Form/helpers.cjs.js +8 -0
- package/dist/Form/helpers.d.ts +1 -0
- package/dist/Form/helpers.es.js +8 -0
- package/dist/Form/index.cjs.js +13 -0
- package/dist/Form/index.d.ts +14 -0
- package/dist/Form/index.es.js +13 -0
- package/dist/Form/types.d.ts +147 -0
- package/dist/Form/useForm.cjs.js +230 -0
- package/dist/Form/useForm.d.ts +2 -0
- package/dist/Form/useForm.es.js +230 -0
- package/dist/Form/useWatch.cjs.js +14 -0
- package/dist/Form/useWatch.d.ts +3 -0
- package/dist/Form/useWatch.es.js +14 -0
- package/dist/Highlight/Highlight.cjs.js +113 -0
- package/dist/Highlight/Highlight.d.ts +3 -0
- package/dist/Highlight/Highlight.es.js +114 -0
- package/dist/Highlight/helpers.cjs.js +147 -0
- package/dist/Highlight/helpers.d.ts +27 -0
- package/dist/Highlight/helpers.es.js +147 -0
- package/dist/Highlight/index.d.ts +2 -0
- package/dist/Highlight/styles.cjs.js +11 -0
- package/dist/Highlight/styles.d.ts +4 -0
- package/dist/Highlight/styles.es.js +11 -0
- package/dist/Highlight/types.d.ts +53 -0
- package/dist/Image/styles.cjs.js +4 -5
- package/dist/Image/styles.es.js +4 -5
- package/dist/InputBase/InputBase.cjs.js +32 -0
- package/dist/InputBase/InputBase.d.ts +4 -0
- package/dist/InputBase/InputBase.es.js +33 -0
- package/dist/InputBase/index.d.ts +2 -0
- package/dist/InputBase/styles.cjs.js +61 -0
- package/dist/InputBase/styles.d.ts +7 -0
- package/dist/InputBase/styles.es.js +61 -0
- package/dist/InputBase/types.d.ts +25 -0
- package/dist/InputDate/InputDate.cjs.js +344 -0
- package/dist/InputDate/InputDate.d.ts +4 -0
- package/dist/InputDate/InputDate.es.js +345 -0
- package/dist/InputDate/helpers.cjs.js +78 -0
- package/dist/InputDate/helpers.d.ts +5 -0
- package/dist/InputDate/helpers.es.js +78 -0
- package/dist/InputDate/index.d.ts +2 -0
- package/dist/InputDate/styles.cjs.js +35 -0
- package/dist/InputDate/styles.d.ts +5 -0
- package/dist/InputDate/styles.es.js +35 -0
- package/dist/InputDate/types.d.ts +23 -0
- package/dist/InputNumber/InputNumber.cjs.js +70 -73
- package/dist/InputNumber/InputNumber.d.ts +1 -1
- package/dist/InputNumber/InputNumber.es.js +72 -75
- package/dist/InputNumber/styles.cjs.js +20 -60
- package/dist/InputNumber/styles.d.ts +4 -8
- package/dist/InputNumber/styles.es.js +21 -61
- package/dist/InputNumber/types.d.ts +2 -18
- package/dist/Layout/Header.cjs.js +27 -23
- package/dist/Layout/Header.d.ts +1 -1
- package/dist/Layout/Header.es.js +28 -24
- package/dist/Layout/Sidebar.cjs.js +24 -25
- package/dist/Layout/Sidebar.d.ts +1 -1
- package/dist/Layout/Sidebar.es.js +25 -26
- package/dist/Layout/index.d.ts +2 -2
- package/dist/Layout/styles.cjs.js +16 -52
- package/dist/Layout/styles.d.ts +2 -15
- package/dist/Layout/styles.es.js +16 -52
- package/dist/Layout/types.d.ts +7 -22
- package/dist/Loader/styles.cjs.js +5 -4
- package/dist/Loader/styles.es.js +5 -4
- package/dist/LoadingOverlay/LoadingOverlay.cjs.js +22 -0
- package/dist/LoadingOverlay/LoadingOverlay.d.ts +3 -0
- package/dist/LoadingOverlay/LoadingOverlay.es.js +23 -0
- package/dist/LoadingOverlay/index.d.ts +2 -0
- package/dist/LoadingOverlay/styles.cjs.js +28 -0
- package/dist/LoadingOverlay/styles.d.ts +5 -0
- package/dist/LoadingOverlay/styles.es.js +28 -0
- package/dist/LoadingOverlay/types.d.ts +16 -0
- package/dist/Menu/Menu.cjs.js +42 -0
- package/dist/Menu/Menu.d.ts +3 -0
- package/dist/Menu/Menu.es.js +43 -0
- package/dist/Menu/MenuItem.cjs.js +112 -0
- package/dist/Menu/MenuItem.d.ts +3 -0
- package/dist/Menu/MenuItem.es.js +113 -0
- package/dist/Menu/helpers.cjs.js +20 -0
- package/dist/Menu/helpers.d.ts +17 -0
- package/dist/Menu/helpers.es.js +20 -0
- package/dist/Menu/index.d.ts +2 -0
- package/dist/Menu/styles.cjs.js +98 -0
- package/dist/Menu/styles.d.ts +16 -0
- package/dist/Menu/styles.es.js +98 -0
- package/dist/Menu/types.d.ts +85 -0
- package/dist/Modal/Modal.cjs.js +15 -5
- package/dist/Modal/Modal.d.ts +1 -1
- package/dist/Modal/Modal.es.js +16 -6
- package/dist/Modal/styles.cjs.js +39 -9
- package/dist/Modal/styles.d.ts +4 -0
- package/dist/Modal/styles.es.js +40 -10
- package/dist/Modal/types.d.ts +2 -0
- package/dist/Notification/Notification.cjs.js +3 -3
- package/dist/Notification/Notification.es.js +3 -3
- package/dist/Notification/NotificationInstance.cjs.js +8 -15
- package/dist/Notification/NotificationInstance.es.js +8 -15
- package/dist/Notification/NotificationsStore.cjs.js +2 -7
- package/dist/Notification/NotificationsStore.es.js +2 -7
- package/dist/Notification/styles.cjs.js +6 -6
- package/dist/Notification/styles.es.js +6 -6
- package/dist/Pagination/Pagination.cjs.js +114 -0
- package/dist/Pagination/Pagination.d.ts +3 -0
- package/dist/Pagination/Pagination.es.js +115 -0
- package/dist/Pagination/index.d.ts +2 -0
- package/dist/Pagination/styles.cjs.js +54 -0
- package/dist/Pagination/styles.d.ts +2 -0
- package/dist/Pagination/styles.es.js +54 -0
- package/dist/Pagination/types.d.ts +49 -0
- package/dist/Progress/Progress.cjs.js +1 -1
- package/dist/Progress/Progress.es.js +1 -1
- package/dist/Progress/styles.cjs.js +5 -50
- package/dist/Progress/styles.es.js +5 -50
- package/dist/Progress/types.d.ts +1 -0
- package/dist/RadioButton/RadioButton.cjs.js +1 -1
- package/dist/RadioButton/RadioButton.es.js +1 -1
- package/dist/RadioButton/RadioButtonGroup.cjs.js +19 -22
- package/dist/RadioButton/RadioButtonGroup.es.js +19 -22
- package/dist/RadioButton/styles.cjs.js +11 -13
- package/dist/RadioButton/styles.es.js +11 -13
- package/dist/RichTextEditor/RichTextEditor.cjs.js +289 -0
- package/dist/RichTextEditor/RichTextEditor.d.ts +4 -0
- package/dist/RichTextEditor/RichTextEditor.es.js +290 -0
- package/dist/RichTextEditor/RichTextEditorColorControl.cjs.js +38 -0
- package/dist/RichTextEditor/RichTextEditorColorControl.d.ts +3 -0
- package/dist/RichTextEditor/RichTextEditorColorControl.es.js +39 -0
- package/dist/RichTextEditor/RichTextEditorTableControl.cjs.js +62 -0
- package/dist/RichTextEditor/RichTextEditorTableControl.d.ts +3 -0
- package/dist/RichTextEditor/RichTextEditorTableControl.es.js +63 -0
- package/dist/RichTextEditor/helpers.cjs.js +151 -0
- package/dist/RichTextEditor/helpers.d.ts +10 -0
- package/dist/RichTextEditor/helpers.es.js +151 -0
- package/dist/RichTextEditor/index.d.ts +2 -0
- package/dist/RichTextEditor/plugins.cjs.js +548 -0
- package/dist/RichTextEditor/plugins.d.ts +2 -0
- package/dist/RichTextEditor/plugins.es.js +548 -0
- package/dist/RichTextEditor/styles.cjs.js +60 -0
- package/dist/RichTextEditor/styles.d.ts +7 -0
- package/dist/RichTextEditor/styles.es.js +60 -0
- package/dist/RichTextEditor/types.d.ts +79 -0
- package/dist/Select/Select.cjs.js +30 -18
- package/dist/Select/Select.es.js +30 -18
- package/dist/Select/helpers.cjs.js +1 -1
- package/dist/Select/helpers.d.ts +24 -24
- package/dist/Select/helpers.es.js +1 -1
- package/dist/Select/styles.cjs.js +91 -118
- package/dist/Select/styles.d.ts +4 -5
- package/dist/Select/styles.es.js +91 -118
- package/dist/Select/types.d.ts +3 -23
- package/dist/Select/useSelect.cjs.js +8 -14
- package/dist/Select/useSelect.d.ts +20 -20
- package/dist/Select/useSelect.es.js +8 -14
- package/dist/Skeleton/Skeleton.cjs.js +35 -0
- package/dist/Skeleton/Skeleton.d.ts +3 -0
- package/dist/Skeleton/Skeleton.es.js +36 -0
- package/dist/Skeleton/SkeletonAvatar.cjs.js +17 -0
- package/dist/Skeleton/SkeletonAvatar.d.ts +3 -0
- package/dist/Skeleton/SkeletonAvatar.es.js +18 -0
- package/dist/Skeleton/SkeletonButton.cjs.js +21 -0
- package/dist/Skeleton/SkeletonButton.d.ts +3 -0
- package/dist/Skeleton/SkeletonButton.es.js +22 -0
- package/dist/Skeleton/SkeletonCard.cjs.js +15 -0
- package/dist/Skeleton/SkeletonCard.d.ts +3 -0
- package/dist/Skeleton/SkeletonCard.es.js +16 -0
- package/dist/Skeleton/SkeletonLayout.cjs.js +60 -0
- package/dist/Skeleton/SkeletonLayout.d.ts +3 -0
- package/dist/Skeleton/SkeletonLayout.es.js +61 -0
- package/dist/Skeleton/SkeletonList.cjs.js +39 -0
- package/dist/Skeleton/SkeletonList.d.ts +3 -0
- package/dist/Skeleton/SkeletonList.es.js +40 -0
- package/dist/Skeleton/SkeletonTextBlock.cjs.js +7 -0
- package/dist/Skeleton/SkeletonTextBlock.d.ts +5 -0
- package/dist/Skeleton/SkeletonTextBlock.es.js +8 -0
- package/dist/Skeleton/index.cjs.js +17 -0
- package/dist/Skeleton/index.d.ts +18 -0
- package/dist/Skeleton/index.es.js +17 -0
- package/dist/Skeleton/styles.cjs.js +59 -0
- package/dist/Skeleton/styles.d.ts +3 -0
- package/dist/Skeleton/styles.es.js +59 -0
- package/dist/Skeleton/types.d.ts +74 -0
- package/dist/Slider/Slider.cjs.js +282 -0
- package/dist/Slider/Slider.d.ts +3 -0
- package/dist/Slider/Slider.es.js +283 -0
- package/dist/Slider/index.d.ts +2 -0
- package/dist/Slider/styles.cjs.js +156 -0
- package/dist/Slider/styles.d.ts +35 -0
- package/dist/Slider/styles.es.js +156 -0
- package/dist/Slider/types.d.ts +53 -0
- package/dist/Spoiler/Spoiler.cjs.js +62 -0
- package/dist/Spoiler/Spoiler.d.ts +3 -0
- package/dist/Spoiler/Spoiler.es.js +63 -0
- package/dist/Spoiler/index.d.ts +2 -0
- package/dist/Spoiler/styles.cjs.js +15 -0
- package/dist/Spoiler/styles.d.ts +4 -0
- package/dist/Spoiler/styles.es.js +15 -0
- package/dist/Spoiler/types.d.ts +23 -0
- package/dist/Switch/Switch.cjs.js +32 -6
- package/dist/Switch/Switch.d.ts +2 -2
- package/dist/Switch/Switch.es.js +33 -7
- package/dist/Switch/styles.cjs.js +24 -7
- package/dist/Switch/styles.d.ts +4 -0
- package/dist/Switch/styles.es.js +24 -7
- package/dist/Switch/types.d.ts +3 -0
- package/dist/Tabs/Tab.cjs.js +8 -8
- package/dist/Tabs/Tab.es.js +8 -8
- package/dist/Tabs/TabPanel.cjs.js +3 -3
- package/dist/Tabs/TabPanel.es.js +3 -3
- package/dist/Tabs/Tabs.cjs.js +5 -4
- package/dist/Tabs/Tabs.d.ts +1 -1
- package/dist/Tabs/Tabs.es.js +5 -4
- package/dist/Tabs/TabsList.cjs.js +25 -1
- package/dist/Tabs/TabsList.d.ts +2 -2
- package/dist/Tabs/TabsList.es.js +25 -1
- package/dist/Tabs/styles.cjs.js +104 -34
- package/dist/Tabs/styles.d.ts +2 -0
- package/dist/Tabs/styles.es.js +104 -34
- package/dist/Tabs/types.d.ts +7 -3
- package/dist/Tag/Tag.cjs.js +4 -1
- package/dist/Tag/Tag.d.ts +1 -1
- package/dist/Tag/Tag.es.js +4 -1
- package/dist/Tag/styles.cjs.js +14 -9
- package/dist/Tag/styles.d.ts +2 -0
- package/dist/Tag/styles.es.js +14 -9
- package/dist/Tag/types.d.ts +6 -0
- package/dist/TextField/TextField.cjs.js +57 -56
- package/dist/TextField/TextField.d.ts +1 -1
- package/dist/TextField/TextField.es.js +58 -57
- package/dist/TextField/styles.cjs.js +9 -50
- package/dist/TextField/styles.d.ts +3 -8
- package/dist/TextField/styles.es.js +10 -51
- package/dist/TextField/types.d.ts +2 -20
- package/dist/Textarea/Textarea.cjs.js +57 -56
- package/dist/Textarea/Textarea.d.ts +1 -1
- package/dist/Textarea/Textarea.es.js +58 -57
- package/dist/Textarea/styles.cjs.js +10 -62
- package/dist/Textarea/styles.d.ts +3 -8
- package/dist/Textarea/styles.es.js +12 -64
- package/dist/Textarea/types.d.ts +2 -21
- package/dist/Tooltip/Tooltip.cjs.js +3 -1
- package/dist/Tooltip/Tooltip.d.ts +1 -1
- package/dist/Tooltip/Tooltip.es.js +3 -1
- package/dist/Tooltip/types.d.ts +3 -0
- package/dist/assets/box.svg.cjs.js +21 -0
- package/dist/assets/box.svg.es.js +5 -0
- package/dist/index.cjs.js +30 -0
- package/dist/index.d.ts +17 -2
- package/dist/index.es.js +30 -0
- package/dist/message/Message.cjs.js +42 -0
- package/dist/message/Message.d.ts +3 -0
- package/dist/message/Message.es.js +43 -0
- package/dist/message/MessageContext.cjs.js +101 -0
- package/dist/message/MessageContext.d.ts +4 -0
- package/dist/message/MessageContext.es.js +101 -0
- package/dist/message/index.cjs.js +8 -0
- package/dist/message/index.d.ts +6 -0
- package/dist/message/index.es.js +8 -0
- package/dist/message/styles.cjs.js +79 -0
- package/dist/message/styles.d.ts +11 -0
- package/dist/message/styles.es.js +79 -0
- package/dist/message/types.d.ts +42 -0
- package/dist/typography/Text/Text.es.js +3 -3
- package/dist/typography/Title/Title.cjs.js +2 -0
- package/dist/typography/Title/Title.d.ts +1 -1
- package/dist/typography/Title/Title.es.js +2 -0
- package/dist/typography/Title/styles.cjs.js +3 -0
- package/dist/typography/Title/styles.es.js +3 -0
- package/dist/typography/Title/types.d.ts +1 -0
- package/package.json +17 -13
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const jsxRuntime = require("react/jsx-runtime");
|
|
3
|
+
const React = require("react");
|
|
4
|
+
const helpers = require("@quen-ui/helpers");
|
|
5
|
+
const Text = require("../typography/Text/Text.cjs.js");
|
|
6
|
+
const styles = require("./styles.cjs.js");
|
|
7
|
+
const iconArrowBottom = require("../assets/icon-arrow-bottom.svg.cjs.js");
|
|
8
|
+
const MenuItem = ({
|
|
9
|
+
item,
|
|
10
|
+
getItemLabel,
|
|
11
|
+
getItemClassName,
|
|
12
|
+
getItemDisabled,
|
|
13
|
+
getItemLeftContent,
|
|
14
|
+
getItemKey,
|
|
15
|
+
getItemOnClick,
|
|
16
|
+
getItemRightContent,
|
|
17
|
+
size,
|
|
18
|
+
direction,
|
|
19
|
+
activeKeys,
|
|
20
|
+
arrowIcon,
|
|
21
|
+
className,
|
|
22
|
+
level = 1
|
|
23
|
+
}) => {
|
|
24
|
+
const refMenuItem = React.useRef(null);
|
|
25
|
+
const hasChildren = !!item.children?.length;
|
|
26
|
+
const [visible, setVisible] = React.useState(false);
|
|
27
|
+
const handleMouseEnter = () => {
|
|
28
|
+
setVisible(true);
|
|
29
|
+
};
|
|
30
|
+
const handleMouseLeave = () => {
|
|
31
|
+
setVisible(false);
|
|
32
|
+
};
|
|
33
|
+
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
34
|
+
/* @__PURE__ */ jsxRuntime.jsxs(
|
|
35
|
+
styles.MenuItemStyled,
|
|
36
|
+
{
|
|
37
|
+
ref: refMenuItem,
|
|
38
|
+
onMouseEnter: handleMouseEnter,
|
|
39
|
+
onMouseLeave: handleMouseLeave,
|
|
40
|
+
hover: !getItemDisabled(item) && (hasChildren && direction === "horizontal" || !hasChildren),
|
|
41
|
+
disabled: getItemDisabled(item),
|
|
42
|
+
className: helpers.cnMerge(getItemClassName(item), className),
|
|
43
|
+
active: activeKeys?.includes(getItemKey(item)),
|
|
44
|
+
onClick: getItemOnClick(item),
|
|
45
|
+
children: [
|
|
46
|
+
getItemLeftContent(item),
|
|
47
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
48
|
+
Text,
|
|
49
|
+
{
|
|
50
|
+
size,
|
|
51
|
+
className: helpers.cnMerge({ "quen-ui--menu__item_group": hasChildren && direction === "vertical" }, "quen-ui--menu__item_label"),
|
|
52
|
+
children: getItemLabel(item)
|
|
53
|
+
}
|
|
54
|
+
),
|
|
55
|
+
getItemRightContent(item),
|
|
56
|
+
arrowIcon && /* @__PURE__ */ jsxRuntime.jsx(iconArrowBottom, { className: "quen-ui--menu__item_icon-arrow" })
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
getItemKey(item)
|
|
60
|
+
),
|
|
61
|
+
hasChildren && direction === "horizontal" && /* @__PURE__ */ jsxRuntime.jsx(
|
|
62
|
+
styles.SubMenuHorizontalStyled,
|
|
63
|
+
{
|
|
64
|
+
visible,
|
|
65
|
+
left: level === 1 ? (refMenuItem.current?.getBoundingClientRect().x ?? 0) - (refMenuItem.current?.parentElement?.getBoundingClientRect().x ?? 0) : refMenuItem.current?.getBoundingClientRect().width ?? 0,
|
|
66
|
+
top: level === 1 ? refMenuItem.current?.getBoundingClientRect().height ?? 0 : refMenuItem.current?.offsetTop ?? 0,
|
|
67
|
+
className: "quen-ui--menu__submenu",
|
|
68
|
+
onMouseEnter: () => setVisible(true),
|
|
69
|
+
onMouseLeave: () => setVisible(false),
|
|
70
|
+
children: item.children.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
71
|
+
MenuItem,
|
|
72
|
+
{
|
|
73
|
+
className,
|
|
74
|
+
item: child,
|
|
75
|
+
size,
|
|
76
|
+
getItemKey,
|
|
77
|
+
getItemLabel,
|
|
78
|
+
getItemLeftContent,
|
|
79
|
+
getItemRightContent,
|
|
80
|
+
getItemDisabled,
|
|
81
|
+
activeKeys,
|
|
82
|
+
getItemClassName,
|
|
83
|
+
getItemOnClick,
|
|
84
|
+
direction,
|
|
85
|
+
arrowIcon: !!child.children,
|
|
86
|
+
level: level + 1
|
|
87
|
+
},
|
|
88
|
+
getItemKey(child)
|
|
89
|
+
))
|
|
90
|
+
}
|
|
91
|
+
),
|
|
92
|
+
hasChildren && direction === "vertical" && /* @__PURE__ */ jsxRuntime.jsx(styles.SubMenuVerticalStyled, { level, children: item.children.map((child) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
93
|
+
MenuItem,
|
|
94
|
+
{
|
|
95
|
+
className,
|
|
96
|
+
item: child,
|
|
97
|
+
size,
|
|
98
|
+
getItemKey,
|
|
99
|
+
getItemLabel,
|
|
100
|
+
getItemLeftContent,
|
|
101
|
+
getItemRightContent,
|
|
102
|
+
getItemDisabled,
|
|
103
|
+
activeKeys,
|
|
104
|
+
getItemClassName,
|
|
105
|
+
getItemOnClick,
|
|
106
|
+
direction
|
|
107
|
+
},
|
|
108
|
+
getItemKey(child)
|
|
109
|
+
)) })
|
|
110
|
+
] });
|
|
111
|
+
};
|
|
112
|
+
module.exports = MenuItem;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { IMenuItemProps } from './types';
|
|
2
|
+
declare const MenuItem: <Item extends Record<string, any>>({ item, getItemLabel, getItemClassName, getItemDisabled, getItemLeftContent, getItemKey, getItemOnClick, getItemRightContent, size, direction, activeKeys, arrowIcon, className, level }: IMenuItemProps<Item>) => import("react/jsx-runtime").JSX.Element;
|
|
3
|
+
export default MenuItem;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useRef, useState } from "react";
|
|
3
|
+
import { cnMerge } from "@quen-ui/helpers";
|
|
4
|
+
import Text from "../typography/Text/Text.es.js";
|
|
5
|
+
import { MenuItemStyled, SubMenuHorizontalStyled, SubMenuVerticalStyled } from "./styles.es.js";
|
|
6
|
+
import SvgIconArrowBottom from "../assets/icon-arrow-bottom.svg.es.js";
|
|
7
|
+
const MenuItem = ({
|
|
8
|
+
item,
|
|
9
|
+
getItemLabel,
|
|
10
|
+
getItemClassName,
|
|
11
|
+
getItemDisabled,
|
|
12
|
+
getItemLeftContent,
|
|
13
|
+
getItemKey,
|
|
14
|
+
getItemOnClick,
|
|
15
|
+
getItemRightContent,
|
|
16
|
+
size,
|
|
17
|
+
direction,
|
|
18
|
+
activeKeys,
|
|
19
|
+
arrowIcon,
|
|
20
|
+
className,
|
|
21
|
+
level = 1
|
|
22
|
+
}) => {
|
|
23
|
+
const refMenuItem = useRef(null);
|
|
24
|
+
const hasChildren = !!item.children?.length;
|
|
25
|
+
const [visible, setVisible] = useState(false);
|
|
26
|
+
const handleMouseEnter = () => {
|
|
27
|
+
setVisible(true);
|
|
28
|
+
};
|
|
29
|
+
const handleMouseLeave = () => {
|
|
30
|
+
setVisible(false);
|
|
31
|
+
};
|
|
32
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
33
|
+
/* @__PURE__ */ jsxs(
|
|
34
|
+
MenuItemStyled,
|
|
35
|
+
{
|
|
36
|
+
ref: refMenuItem,
|
|
37
|
+
onMouseEnter: handleMouseEnter,
|
|
38
|
+
onMouseLeave: handleMouseLeave,
|
|
39
|
+
hover: !getItemDisabled(item) && (hasChildren && direction === "horizontal" || !hasChildren),
|
|
40
|
+
disabled: getItemDisabled(item),
|
|
41
|
+
className: cnMerge(getItemClassName(item), className),
|
|
42
|
+
active: activeKeys?.includes(getItemKey(item)),
|
|
43
|
+
onClick: getItemOnClick(item),
|
|
44
|
+
children: [
|
|
45
|
+
getItemLeftContent(item),
|
|
46
|
+
/* @__PURE__ */ jsx(
|
|
47
|
+
Text,
|
|
48
|
+
{
|
|
49
|
+
size,
|
|
50
|
+
className: cnMerge({ "quen-ui--menu__item_group": hasChildren && direction === "vertical" }, "quen-ui--menu__item_label"),
|
|
51
|
+
children: getItemLabel(item)
|
|
52
|
+
}
|
|
53
|
+
),
|
|
54
|
+
getItemRightContent(item),
|
|
55
|
+
arrowIcon && /* @__PURE__ */ jsx(SvgIconArrowBottom, { className: "quen-ui--menu__item_icon-arrow" })
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
getItemKey(item)
|
|
59
|
+
),
|
|
60
|
+
hasChildren && direction === "horizontal" && /* @__PURE__ */ jsx(
|
|
61
|
+
SubMenuHorizontalStyled,
|
|
62
|
+
{
|
|
63
|
+
visible,
|
|
64
|
+
left: level === 1 ? (refMenuItem.current?.getBoundingClientRect().x ?? 0) - (refMenuItem.current?.parentElement?.getBoundingClientRect().x ?? 0) : refMenuItem.current?.getBoundingClientRect().width ?? 0,
|
|
65
|
+
top: level === 1 ? refMenuItem.current?.getBoundingClientRect().height ?? 0 : refMenuItem.current?.offsetTop ?? 0,
|
|
66
|
+
className: "quen-ui--menu__submenu",
|
|
67
|
+
onMouseEnter: () => setVisible(true),
|
|
68
|
+
onMouseLeave: () => setVisible(false),
|
|
69
|
+
children: item.children.map((child) => /* @__PURE__ */ jsx(
|
|
70
|
+
MenuItem,
|
|
71
|
+
{
|
|
72
|
+
className,
|
|
73
|
+
item: child,
|
|
74
|
+
size,
|
|
75
|
+
getItemKey,
|
|
76
|
+
getItemLabel,
|
|
77
|
+
getItemLeftContent,
|
|
78
|
+
getItemRightContent,
|
|
79
|
+
getItemDisabled,
|
|
80
|
+
activeKeys,
|
|
81
|
+
getItemClassName,
|
|
82
|
+
getItemOnClick,
|
|
83
|
+
direction,
|
|
84
|
+
arrowIcon: !!child.children,
|
|
85
|
+
level: level + 1
|
|
86
|
+
},
|
|
87
|
+
getItemKey(child)
|
|
88
|
+
))
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
hasChildren && direction === "vertical" && /* @__PURE__ */ jsx(SubMenuVerticalStyled, { level, children: item.children.map((child) => /* @__PURE__ */ jsx(
|
|
92
|
+
MenuItem,
|
|
93
|
+
{
|
|
94
|
+
className,
|
|
95
|
+
item: child,
|
|
96
|
+
size,
|
|
97
|
+
getItemKey,
|
|
98
|
+
getItemLabel,
|
|
99
|
+
getItemLeftContent,
|
|
100
|
+
getItemRightContent,
|
|
101
|
+
getItemDisabled,
|
|
102
|
+
activeKeys,
|
|
103
|
+
getItemClassName,
|
|
104
|
+
getItemOnClick,
|
|
105
|
+
direction
|
|
106
|
+
},
|
|
107
|
+
getItemKey(child)
|
|
108
|
+
)) })
|
|
109
|
+
] });
|
|
110
|
+
};
|
|
111
|
+
export {
|
|
112
|
+
MenuItem as default
|
|
113
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const defaultGetItemKey = (item) => item.key;
|
|
4
|
+
const defaultGetItemLabel = (item) => item.label;
|
|
5
|
+
const defaultGetItemDisabled = (item) => item.disabled;
|
|
6
|
+
const defaultGetItemLeftContent = (item) => item.leftContent;
|
|
7
|
+
const defaultGetItemRightContent = (item) => item.rightContent;
|
|
8
|
+
const defaultGetItemOnClick = (item) => item.onClick;
|
|
9
|
+
const defaultGetItemClassName = (item) => item.className;
|
|
10
|
+
const withDefaultGetters = (props) => ({
|
|
11
|
+
...props,
|
|
12
|
+
getItemKey: props.getItemKey || defaultGetItemKey,
|
|
13
|
+
getItemLabel: props.getItemLabel || defaultGetItemLabel,
|
|
14
|
+
getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,
|
|
15
|
+
getItemLeftContent: props.getItemLeftContent || defaultGetItemLeftContent,
|
|
16
|
+
getItemRightContent: props.getItemRightContent || defaultGetItemRightContent,
|
|
17
|
+
getItemOnClick: props.getItemOnClick || defaultGetItemOnClick,
|
|
18
|
+
getItemClassName: props.getItemClassName || defaultGetItemClassName
|
|
19
|
+
});
|
|
20
|
+
exports.withDefaultGetters = withDefaultGetters;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IMenuDefaultItem, IMenuProps, TMenuPropGetItemIcon, TMenuPropGetItemClassName, TMenuPropGetItemLabel, TMenuPropGetItemKey, TMenuPropGetItemDisabled, TMenuPropGetItemOnClick, TMenuRecursiveItem } from './types';
|
|
2
|
+
export declare const withDefaultGetters: <Item extends Record<string, any>>(props: IMenuProps<Item>) => {
|
|
3
|
+
getItemKey: TMenuPropGetItemKey<TMenuRecursiveItem<IMenuDefaultItem>> | TMenuPropGetItemKey<TMenuRecursiveItem<Item>>;
|
|
4
|
+
getItemLabel: TMenuPropGetItemLabel<TMenuRecursiveItem<IMenuDefaultItem>> | TMenuPropGetItemLabel<TMenuRecursiveItem<Item>>;
|
|
5
|
+
getItemDisabled: TMenuPropGetItemDisabled<TMenuRecursiveItem<IMenuDefaultItem>> | TMenuPropGetItemDisabled<TMenuRecursiveItem<Item>>;
|
|
6
|
+
getItemLeftContent: TMenuPropGetItemIcon<TMenuRecursiveItem<IMenuDefaultItem>> | TMenuPropGetItemIcon<TMenuRecursiveItem<Item>>;
|
|
7
|
+
getItemRightContent: TMenuPropGetItemIcon<TMenuRecursiveItem<IMenuDefaultItem>> | TMenuPropGetItemIcon<TMenuRecursiveItem<Item>>;
|
|
8
|
+
getItemOnClick: TMenuPropGetItemOnClick<TMenuRecursiveItem<IMenuDefaultItem>> | TMenuPropGetItemOnClick<TMenuRecursiveItem<Item>>;
|
|
9
|
+
getItemClassName: TMenuPropGetItemClassName<TMenuRecursiveItem<IMenuDefaultItem>> | TMenuPropGetItemClassName<TMenuRecursiveItem<Item>>;
|
|
10
|
+
items: TMenuRecursiveItem<Item>[];
|
|
11
|
+
direction?: "vertical" | "horizontal";
|
|
12
|
+
className?: string;
|
|
13
|
+
style?: React.CSSProperties;
|
|
14
|
+
size?: import('..').TQuenSize;
|
|
15
|
+
activeKeys?: string[];
|
|
16
|
+
classNameMenuItem?: string;
|
|
17
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
const defaultGetItemKey = (item) => item.key;
|
|
2
|
+
const defaultGetItemLabel = (item) => item.label;
|
|
3
|
+
const defaultGetItemDisabled = (item) => item.disabled;
|
|
4
|
+
const defaultGetItemLeftContent = (item) => item.leftContent;
|
|
5
|
+
const defaultGetItemRightContent = (item) => item.rightContent;
|
|
6
|
+
const defaultGetItemOnClick = (item) => item.onClick;
|
|
7
|
+
const defaultGetItemClassName = (item) => item.className;
|
|
8
|
+
const withDefaultGetters = (props) => ({
|
|
9
|
+
...props,
|
|
10
|
+
getItemKey: props.getItemKey || defaultGetItemKey,
|
|
11
|
+
getItemLabel: props.getItemLabel || defaultGetItemLabel,
|
|
12
|
+
getItemDisabled: props.getItemDisabled || defaultGetItemDisabled,
|
|
13
|
+
getItemLeftContent: props.getItemLeftContent || defaultGetItemLeftContent,
|
|
14
|
+
getItemRightContent: props.getItemRightContent || defaultGetItemRightContent,
|
|
15
|
+
getItemOnClick: props.getItemOnClick || defaultGetItemOnClick,
|
|
16
|
+
getItemClassName: props.getItemClassName || defaultGetItemClassName
|
|
17
|
+
});
|
|
18
|
+
export {
|
|
19
|
+
withDefaultGetters
|
|
20
|
+
};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const styled = require("styled-components");
|
|
4
|
+
const Flex = require("../Flex/Flex.cjs.js");
|
|
5
|
+
const MenuItemStyled = styled.button.withConfig({
|
|
6
|
+
shouldForwardProp: (prop) => !["disabled", "active", "hover"].includes(prop)
|
|
7
|
+
}).attrs((props) => ({
|
|
8
|
+
className: props.active ? "quen-ui__menu-item--active" : "quen-ui__menu-item"
|
|
9
|
+
}))`
|
|
10
|
+
outline: none;
|
|
11
|
+
border: none;
|
|
12
|
+
display: flex;
|
|
13
|
+
gap: 4px;
|
|
14
|
+
align-items: center;
|
|
15
|
+
padding: 0.5rem 1rem;
|
|
16
|
+
cursor: ${({ disabled }) => disabled ? "not-allowed" : "pointer"};
|
|
17
|
+
border-radius: 4px;
|
|
18
|
+
transition: background 0.2s ease;
|
|
19
|
+
background: transparent;
|
|
20
|
+
justify-content: flex-start;
|
|
21
|
+
|
|
22
|
+
color: ${({ theme, disabled }) => disabled ? theme.components.Menu.disabledColor : theme.components.Menu.color};
|
|
23
|
+
|
|
24
|
+
* {
|
|
25
|
+
color: ${({ theme, disabled }) => disabled ? theme.components.Menu.disabledColor : theme.components.Menu.color};
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
a {
|
|
29
|
+
text-decoration: none;
|
|
30
|
+
color: ${({ theme }) => theme.components.Menu.color};
|
|
31
|
+
display: flex;
|
|
32
|
+
width: 100%;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.quen-ui--menu__item_group {
|
|
36
|
+
font-weight: bold;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.quen-ui--menu__item_icon-arrow {
|
|
40
|
+
transform: rotateZ(270deg);
|
|
41
|
+
margin-left: auto;
|
|
42
|
+
margin-right: 0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.quen-ui--menu__item_label {
|
|
46
|
+
width: 100%;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
&:hover {
|
|
50
|
+
background: ${({ theme, active, hover }) => hover && !active && theme.components.Menu.hoverBackground};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
${({ theme, disabled, active }) => active && !disabled && styled.css`
|
|
54
|
+
background-color: ${theme.components.Menu.activeBackground};
|
|
55
|
+
`}
|
|
56
|
+
|
|
57
|
+
&:hover > .quen-ui--submenu {
|
|
58
|
+
display: flex;
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
const SubMenuHorizontalStyled = styled.div.withConfig({
|
|
62
|
+
shouldForwardProp: (prop) => !["left", "top", "visible"].includes(prop)
|
|
63
|
+
})`
|
|
64
|
+
display: flex;
|
|
65
|
+
flex-direction: column;
|
|
66
|
+
position: absolute;
|
|
67
|
+
top: ${({ top }) => top}px;
|
|
68
|
+
left: ${({ left }) => left}px;
|
|
69
|
+
z-index: 1000;
|
|
70
|
+
width: max-content;
|
|
71
|
+
|
|
72
|
+
opacity: ${({ visible }) => visible ? 1 : 0};
|
|
73
|
+
transform: ${({ visible }) => visible ? "translateY(0)" : "translateY(-5px)"};
|
|
74
|
+
pointer-events: ${({ visible }) => visible ? "auto" : "none"};
|
|
75
|
+
transition: opacity 0.2s ease, transform 0.2s ease;
|
|
76
|
+
`;
|
|
77
|
+
const SubMenuVerticalStyled = styled.div.withConfig({
|
|
78
|
+
shouldForwardProp: (prop) => !["level"].includes(prop)
|
|
79
|
+
})`
|
|
80
|
+
display: flex;
|
|
81
|
+
flex-direction: column;
|
|
82
|
+
z-index: 1000;
|
|
83
|
+
${MenuItemStyled} {
|
|
84
|
+
padding-left: calc(16px + (${({ level }) => level} * 8px));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
& .quen-ui--menu__submenu {
|
|
88
|
+
top: 0;
|
|
89
|
+
left: 100%;
|
|
90
|
+
}
|
|
91
|
+
`;
|
|
92
|
+
const MenuStyled = styled(Flex)`
|
|
93
|
+
position: relative;
|
|
94
|
+
`;
|
|
95
|
+
exports.MenuItemStyled = MenuItemStyled;
|
|
96
|
+
exports.MenuStyled = MenuStyled;
|
|
97
|
+
exports.SubMenuHorizontalStyled = SubMenuHorizontalStyled;
|
|
98
|
+
exports.SubMenuVerticalStyled = SubMenuVerticalStyled;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export declare const MenuItemStyled: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('styled-components/dist/types').Substitute<import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>, import('react').DetailedHTMLProps<import('react').ButtonHTMLAttributes<HTMLButtonElement>, HTMLButtonElement>>, {
|
|
2
|
+
active?: boolean;
|
|
3
|
+
}>, {
|
|
4
|
+
disabled?: boolean;
|
|
5
|
+
active?: boolean;
|
|
6
|
+
hover?: boolean;
|
|
7
|
+
}>> & string;
|
|
8
|
+
export declare const SubMenuHorizontalStyled: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
|
|
9
|
+
left: number;
|
|
10
|
+
top: number;
|
|
11
|
+
visible: boolean;
|
|
12
|
+
}>> & string;
|
|
13
|
+
export declare const SubMenuVerticalStyled: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components/dist/types').Substitute<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
|
|
14
|
+
level: number;
|
|
15
|
+
}>> & string;
|
|
16
|
+
export declare const MenuStyled: import('styled-components/dist/types').IStyledComponentBase<"web", import('styled-components').FastOmit<Omit<import('..').IFlexProps, "ref"> & import('react').RefAttributes<unknown>, never>> & string & Omit<import('react').ForwardRefExoticComponent<Omit<import('..').IFlexProps, "ref"> & import('react').RefAttributes<unknown>>, keyof import('react').Component<any, {}, any>>;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import styled, { css } from "styled-components";
|
|
2
|
+
import Flex from "../Flex/Flex.es.js";
|
|
3
|
+
const MenuItemStyled = styled.button.withConfig({
|
|
4
|
+
shouldForwardProp: (prop) => !["disabled", "active", "hover"].includes(prop)
|
|
5
|
+
}).attrs((props) => ({
|
|
6
|
+
className: props.active ? "quen-ui__menu-item--active" : "quen-ui__menu-item"
|
|
7
|
+
}))`
|
|
8
|
+
outline: none;
|
|
9
|
+
border: none;
|
|
10
|
+
display: flex;
|
|
11
|
+
gap: 4px;
|
|
12
|
+
align-items: center;
|
|
13
|
+
padding: 0.5rem 1rem;
|
|
14
|
+
cursor: ${({ disabled }) => disabled ? "not-allowed" : "pointer"};
|
|
15
|
+
border-radius: 4px;
|
|
16
|
+
transition: background 0.2s ease;
|
|
17
|
+
background: transparent;
|
|
18
|
+
justify-content: flex-start;
|
|
19
|
+
|
|
20
|
+
color: ${({ theme, disabled }) => disabled ? theme.components.Menu.disabledColor : theme.components.Menu.color};
|
|
21
|
+
|
|
22
|
+
* {
|
|
23
|
+
color: ${({ theme, disabled }) => disabled ? theme.components.Menu.disabledColor : theme.components.Menu.color};
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
a {
|
|
27
|
+
text-decoration: none;
|
|
28
|
+
color: ${({ theme }) => theme.components.Menu.color};
|
|
29
|
+
display: flex;
|
|
30
|
+
width: 100%;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.quen-ui--menu__item_group {
|
|
34
|
+
font-weight: bold;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
.quen-ui--menu__item_icon-arrow {
|
|
38
|
+
transform: rotateZ(270deg);
|
|
39
|
+
margin-left: auto;
|
|
40
|
+
margin-right: 0;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.quen-ui--menu__item_label {
|
|
44
|
+
width: 100%;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
&:hover {
|
|
48
|
+
background: ${({ theme, active, hover }) => hover && !active && theme.components.Menu.hoverBackground};
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
${({ theme, disabled, active }) => active && !disabled && css`
|
|
52
|
+
background-color: ${theme.components.Menu.activeBackground};
|
|
53
|
+
`}
|
|
54
|
+
|
|
55
|
+
&:hover > .quen-ui--submenu {
|
|
56
|
+
display: flex;
|
|
57
|
+
}
|
|
58
|
+
`;
|
|
59
|
+
const SubMenuHorizontalStyled = styled.div.withConfig({
|
|
60
|
+
shouldForwardProp: (prop) => !["left", "top", "visible"].includes(prop)
|
|
61
|
+
})`
|
|
62
|
+
display: flex;
|
|
63
|
+
flex-direction: column;
|
|
64
|
+
position: absolute;
|
|
65
|
+
top: ${({ top }) => top}px;
|
|
66
|
+
left: ${({ left }) => left}px;
|
|
67
|
+
z-index: 1000;
|
|
68
|
+
width: max-content;
|
|
69
|
+
|
|
70
|
+
opacity: ${({ visible }) => visible ? 1 : 0};
|
|
71
|
+
transform: ${({ visible }) => visible ? "translateY(0)" : "translateY(-5px)"};
|
|
72
|
+
pointer-events: ${({ visible }) => visible ? "auto" : "none"};
|
|
73
|
+
transition: opacity 0.2s ease, transform 0.2s ease;
|
|
74
|
+
`;
|
|
75
|
+
const SubMenuVerticalStyled = styled.div.withConfig({
|
|
76
|
+
shouldForwardProp: (prop) => !["level"].includes(prop)
|
|
77
|
+
})`
|
|
78
|
+
display: flex;
|
|
79
|
+
flex-direction: column;
|
|
80
|
+
z-index: 1000;
|
|
81
|
+
${MenuItemStyled} {
|
|
82
|
+
padding-left: calc(16px + (${({ level }) => level} * 8px));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
& .quen-ui--menu__submenu {
|
|
86
|
+
top: 0;
|
|
87
|
+
left: 100%;
|
|
88
|
+
}
|
|
89
|
+
`;
|
|
90
|
+
const MenuStyled = styled(Flex)`
|
|
91
|
+
position: relative;
|
|
92
|
+
`;
|
|
93
|
+
export {
|
|
94
|
+
MenuItemStyled,
|
|
95
|
+
MenuStyled,
|
|
96
|
+
SubMenuHorizontalStyled,
|
|
97
|
+
SubMenuVerticalStyled
|
|
98
|
+
};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { TQuenSize } from '../types/size';
|
|
3
|
+
export interface IMenuDefaultItem {
|
|
4
|
+
/** Unique item identifier */
|
|
5
|
+
key: string;
|
|
6
|
+
/** Icon displayed before label */
|
|
7
|
+
leftContent?: React.ReactNode;
|
|
8
|
+
/** Icon displayed after label */
|
|
9
|
+
rightContent?: React.ReactNode;
|
|
10
|
+
/** Menu item content */
|
|
11
|
+
label: React.ReactNode;
|
|
12
|
+
/** Click handler */
|
|
13
|
+
onClick?: () => void;
|
|
14
|
+
/** Disables interaction */
|
|
15
|
+
disabled?: boolean;
|
|
16
|
+
/** Custom CSS classes */
|
|
17
|
+
className?: string;
|
|
18
|
+
}
|
|
19
|
+
export type TMenuPropGetItemKey<Item> = (item: Item) => string;
|
|
20
|
+
export type TMenuPropGetItemIcon<Item> = (item: Item) => React.ReactNode;
|
|
21
|
+
export type TMenuPropGetItemLabel<Item> = (item: Item) => React.ReactNode;
|
|
22
|
+
export type TMenuPropGetItemOnClick<Item> = (item: Item) => (() => void) | undefined;
|
|
23
|
+
export type TMenuPropGetItemDisabled<Item> = (item: Item) => boolean | undefined;
|
|
24
|
+
export type TMenuPropGetItemClassName<Item> = (item: Item) => string | undefined;
|
|
25
|
+
export type TMenuRecursiveItem<T> = T & {
|
|
26
|
+
children?: TMenuRecursiveItem<T>[];
|
|
27
|
+
};
|
|
28
|
+
export interface IMenuProps<Item extends Record<string, any> = IMenuDefaultItem> {
|
|
29
|
+
/** List of menu items to display */
|
|
30
|
+
items: TMenuRecursiveItem<Item>[];
|
|
31
|
+
/** Orientation of the menu layout */
|
|
32
|
+
direction?: "vertical" | "horizontal";
|
|
33
|
+
/** Custom CSS class */
|
|
34
|
+
className?: string;
|
|
35
|
+
/** Unique key extractor */
|
|
36
|
+
getItemKey?: TMenuPropGetItemKey<TMenuRecursiveItem<Item>>;
|
|
37
|
+
/** Label text extractor */
|
|
38
|
+
getItemLabel?: TMenuPropGetItemLabel<TMenuRecursiveItem<Item>>;
|
|
39
|
+
/** Disabled state extractor */
|
|
40
|
+
getItemDisabled?: TMenuPropGetItemDisabled<TMenuRecursiveItem<Item>>;
|
|
41
|
+
/** Extracts content shown before the label */
|
|
42
|
+
getItemLeftContent?: TMenuPropGetItemIcon<TMenuRecursiveItem<Item>>;
|
|
43
|
+
/** Extracts content shown after the label */
|
|
44
|
+
getItemRightContent?: TMenuPropGetItemIcon<TMenuRecursiveItem<Item>>;
|
|
45
|
+
/** Provides the click handler for the item. */
|
|
46
|
+
getItemOnClick?: TMenuPropGetItemOnClick<TMenuRecursiveItem<Item>>;
|
|
47
|
+
/** Custom class name for a specific item. */
|
|
48
|
+
getItemClassName?: TMenuPropGetItemClassName<TMenuRecursiveItem<Item>>;
|
|
49
|
+
/** Inline styles applied to the container */
|
|
50
|
+
style?: React.CSSProperties;
|
|
51
|
+
/** Controls menu item sizes */
|
|
52
|
+
size?: TQuenSize;
|
|
53
|
+
/** Array with the keys of currently active menu items */
|
|
54
|
+
activeKeys?: string[];
|
|
55
|
+
/** Custom CSS classes for menu item */
|
|
56
|
+
classNameMenuItem?: string;
|
|
57
|
+
}
|
|
58
|
+
export interface IMenuItemProps<Item extends Record<string, any> = IMenuDefaultItem> {
|
|
59
|
+
/** Controls menu item sizes */
|
|
60
|
+
size?: TQuenSize;
|
|
61
|
+
/** Menu item to display */
|
|
62
|
+
item: TMenuRecursiveItem<Item>;
|
|
63
|
+
/** Unique key extractor */
|
|
64
|
+
getItemKey: TMenuPropGetItemKey<TMenuRecursiveItem<Item>>;
|
|
65
|
+
/** Label text extractor */
|
|
66
|
+
getItemLabel: TMenuPropGetItemLabel<TMenuRecursiveItem<Item>>;
|
|
67
|
+
/** Disabled state extractor */
|
|
68
|
+
getItemDisabled: TMenuPropGetItemDisabled<TMenuRecursiveItem<Item>>;
|
|
69
|
+
/** Extracts content shown before the label */
|
|
70
|
+
getItemLeftContent: TMenuPropGetItemIcon<TMenuRecursiveItem<Item>>;
|
|
71
|
+
/** Extracts content shown after the label */
|
|
72
|
+
getItemRightContent: TMenuPropGetItemIcon<TMenuRecursiveItem<Item>>;
|
|
73
|
+
/** Provides the click handler for the item. */
|
|
74
|
+
getItemOnClick: TMenuPropGetItemOnClick<TMenuRecursiveItem<Item>>;
|
|
75
|
+
/** Custom class name for a specific item. */
|
|
76
|
+
getItemClassName: TMenuPropGetItemClassName<TMenuRecursiveItem<Item>>;
|
|
77
|
+
/** Orientation of the menu layout */
|
|
78
|
+
direction: "vertical" | "horizontal";
|
|
79
|
+
/** Array with the keys of currently active menu items */
|
|
80
|
+
activeKeys?: string[];
|
|
81
|
+
arrowIcon?: boolean;
|
|
82
|
+
level?: number;
|
|
83
|
+
/** Custom CSS classes for menu item */
|
|
84
|
+
className?: string;
|
|
85
|
+
}
|
package/dist/Modal/Modal.cjs.js
CHANGED
|
@@ -22,8 +22,10 @@ const Modal = ({
|
|
|
22
22
|
fullScreen,
|
|
23
23
|
classNameFooter,
|
|
24
24
|
className,
|
|
25
|
+
width,
|
|
25
26
|
...props
|
|
26
27
|
}) => {
|
|
28
|
+
console.log(open);
|
|
27
29
|
const [state, toggle] = reactTransitionState.useTransitionState({
|
|
28
30
|
timeout: 500,
|
|
29
31
|
unmountOnExit: true,
|
|
@@ -35,7 +37,7 @@ const Modal = ({
|
|
|
35
37
|
const [container, setContainer] = React.useState(null);
|
|
36
38
|
const handleEscapeDown = (event) => {
|
|
37
39
|
if (event.key === "Escape") {
|
|
38
|
-
onEsc
|
|
40
|
+
onEsc?.();
|
|
39
41
|
}
|
|
40
42
|
};
|
|
41
43
|
React.useEffect(() => {
|
|
@@ -45,18 +47,26 @@ const Modal = ({
|
|
|
45
47
|
}
|
|
46
48
|
setContainer(container2);
|
|
47
49
|
return () => {
|
|
48
|
-
container2
|
|
50
|
+
container2?.removeEventListener("keydown", handleEscapeDown);
|
|
49
51
|
};
|
|
50
52
|
}, []);
|
|
53
|
+
React.useEffect(() => {
|
|
54
|
+
if (state.isEnter) {
|
|
55
|
+
document.body.style.overflow = "hidden";
|
|
56
|
+
}
|
|
57
|
+
return () => {
|
|
58
|
+
document.body.style.overflow = "unset";
|
|
59
|
+
};
|
|
60
|
+
}, [state]);
|
|
51
61
|
if (state.isEnter && container) {
|
|
52
62
|
return reactDom.createPortal(
|
|
53
|
-
/* @__PURE__ */ jsxRuntime.jsx(styles.ModalContainer, { status: state.status, zIndex, ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(styles.ModalStyled, { fullScreen, className, size, children: [
|
|
63
|
+
/* @__PURE__ */ jsxRuntime.jsx(styles.ModalContainer, { status: state.status, zIndex, ...props, children: /* @__PURE__ */ jsxRuntime.jsxs(styles.ModalStyled, { fullScreen, className, size, width, children: [
|
|
54
64
|
/* @__PURE__ */ jsxRuntime.jsxs(styles.ModalHeaderStyled, { children: [
|
|
55
65
|
title && /* @__PURE__ */ jsxRuntime.jsx(Title, { size, children: title }),
|
|
56
|
-
closeButton && /* @__PURE__ */ jsxRuntime.jsx(Button, { view: "icon", size, onClick: onClickClose, children: /* @__PURE__ */ jsxRuntime.jsx(iconClose, { width: 16, height: 16 }) })
|
|
66
|
+
closeButton && /* @__PURE__ */ jsxRuntime.jsx(Button, { view: "icon", size, onClick: onClickClose, "aria-label": "Close", children: /* @__PURE__ */ jsxRuntime.jsx(iconClose, { width: 16, height: 16 }) })
|
|
57
67
|
] }),
|
|
58
68
|
description && /* @__PURE__ */ jsxRuntime.jsx(Text, { size, children: description }),
|
|
59
|
-
children,
|
|
69
|
+
/* @__PURE__ */ jsxRuntime.jsx(styles.ModalContentStyled, { scrollable: !fullScreen, children }),
|
|
60
70
|
footer && /* @__PURE__ */ jsxRuntime.jsx(styles.ModalFooterStyled, { className: classNameFooter, children: footer })
|
|
61
71
|
] }) }),
|
|
62
72
|
container
|
package/dist/Modal/Modal.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
import { IModalProps } from './types';
|
|
3
|
-
declare const Modal: ({ open, title, size, closeButton, onClickClose, onEsc, zIndex, description, children, footer, fullScreen, classNameFooter, className, ...props }: IModalProps) => React.ReactNode;
|
|
3
|
+
declare const Modal: ({ open, title, size, closeButton, onClickClose, onEsc, zIndex, description, children, footer, fullScreen, classNameFooter, className, width, ...props }: IModalProps) => React.ReactNode;
|
|
4
4
|
export default Modal;
|