@quen-ui/components 0.0.14 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +7 -3
- 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 +33 -4
- 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 +17 -7
- 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 +10 -17
- 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 +571 -0
- package/dist/RichTextEditor/plugins.d.ts +2 -0
- package/dist/RichTextEditor/plugins.es.js +571 -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/_virtual/client.cjs.js +5 -0
- package/dist/_virtual/client.cjs2.js +4 -0
- package/dist/_virtual/client.es.js +5 -0
- package/dist/_virtual/client.es2.js +4 -0
- package/dist/_virtual/index.cjs.js +4 -0
- package/dist/_virtual/index.es.js +4 -0
- package/dist/_virtual/react-dom-client.development.cjs.js +4 -0
- package/dist/_virtual/react-dom-client.development.es.js +4 -0
- package/dist/_virtual/react-dom-client.production.cjs.js +4 -0
- package/dist/_virtual/react-dom-client.production.es.js +4 -0
- package/dist/_virtual/scheduler.development.cjs.js +4 -0
- package/dist/_virtual/scheduler.development.es.js +4 -0
- package/dist/_virtual/scheduler.production.cjs.js +4 -0
- package/dist/_virtual/scheduler.production.es.js +4 -0
- package/dist/assets/box.svg.cjs.js +21 -0
- package/dist/assets/box.svg.es.js +5 -0
- package/dist/index.d.ts +1 -50
- 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/node_modules/@tabler/icons-react/dist/esm/createReactComponent.cjs.js +30 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/createReactComponent.es.js +31 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.cjs.js +23 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/defaultAttributes.es.js +24 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignCenter.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignCenter.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignJustified.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignJustified.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignLeft.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignLeft.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignRight.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconAlignRight.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowBackUp.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowBackUp.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowForwardUp.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconArrowForwardUp.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBlockquote.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBlockquote.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBold.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconBold.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconCheckbox.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconClearFormatting.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconClearFormatting.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH1.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH1.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH2.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconH2.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconHighlight.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconHighlight.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconImageInPicture.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconImageInPicture.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconItalic.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconItalic.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconLink.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconLink.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconList.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconList.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconListNumbers.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconListNumbers.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconStrikethrough.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconStrikethrough.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSubscript.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSubscript.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSuperscript.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconSuperscript.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTable.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTable.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTextColor.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconTextColor.es.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconUnderline.cjs.js +7 -0
- package/dist/node_modules/@tabler/icons-react/dist/esm/icons/IconUnderline.es.js +7 -0
- package/dist/node_modules/react-dom/cjs/react-dom-client.development.cjs.js +19870 -0
- package/dist/node_modules/react-dom/cjs/react-dom-client.development.es.js +19870 -0
- package/dist/node_modules/react-dom/cjs/react-dom-client.production.cjs.js +11524 -0
- package/dist/node_modules/react-dom/cjs/react-dom-client.production.es.js +11524 -0
- package/dist/node_modules/react-dom/client.cjs.js +31 -0
- package/dist/node_modules/react-dom/client.es.js +31 -0
- package/dist/node_modules/scheduler/cjs/scheduler.development.cjs.js +264 -0
- package/dist/node_modules/scheduler/cjs/scheduler.development.es.js +264 -0
- package/dist/node_modules/scheduler/cjs/scheduler.production.cjs.js +259 -0
- package/dist/node_modules/scheduler/cjs/scheduler.production.es.js +259 -0
- package/dist/node_modules/scheduler/index.cjs.js +17 -0
- package/dist/node_modules/scheduler/index.es.js +17 -0
- package/dist/packages/components/index.cjs.js +93 -0
- package/dist/packages/components/index.es.js +93 -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 +16 -13
- package/dist/index.cjs.js +0 -63
- package/dist/index.es.js +0 -63
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
const typeTemplate = "${name} is not a valid ${type}";
|
|
2
|
+
const defaultValidateMessages = {
|
|
3
|
+
default: "Field validation error for ${name}",
|
|
4
|
+
required: "Please enter ${name}",
|
|
5
|
+
enum: "${name} must be one of [${enum}]",
|
|
6
|
+
whitespace: "${name} cannot be a blank character",
|
|
7
|
+
date: {
|
|
8
|
+
format: "${name} date format is invalid",
|
|
9
|
+
parse: "${name} cannot be converted to a date",
|
|
10
|
+
invalid: "${name} is an invalid date"
|
|
11
|
+
},
|
|
12
|
+
types: {
|
|
13
|
+
string: typeTemplate,
|
|
14
|
+
method: typeTemplate,
|
|
15
|
+
array: typeTemplate,
|
|
16
|
+
object: typeTemplate,
|
|
17
|
+
number: typeTemplate,
|
|
18
|
+
date: typeTemplate,
|
|
19
|
+
boolean: typeTemplate,
|
|
20
|
+
integer: typeTemplate,
|
|
21
|
+
float: typeTemplate,
|
|
22
|
+
regexp: typeTemplate,
|
|
23
|
+
email: typeTemplate,
|
|
24
|
+
url: typeTemplate,
|
|
25
|
+
hex: typeTemplate
|
|
26
|
+
},
|
|
27
|
+
string: {
|
|
28
|
+
len: "${name} must be ${len} characters",
|
|
29
|
+
min: "${name} must be at least ${min} characters",
|
|
30
|
+
max: "${name} must be up to ${max} characters",
|
|
31
|
+
range: "${name} must be between ${min}-${max} characters"
|
|
32
|
+
},
|
|
33
|
+
number: {
|
|
34
|
+
len: "${name} must be equal to ${len}",
|
|
35
|
+
min: "${name} must be minimum ${min}",
|
|
36
|
+
max: "${name} must be maximum ${max}",
|
|
37
|
+
range: "${name} must be between ${min}-${max}"
|
|
38
|
+
},
|
|
39
|
+
array: {
|
|
40
|
+
len: "Must be ${len} ${name}",
|
|
41
|
+
min: "At least ${min} ${name}",
|
|
42
|
+
max: "At most ${max} ${name}",
|
|
43
|
+
range: "The amount of ${name} must be between ${min}-${max}"
|
|
44
|
+
},
|
|
45
|
+
pattern: {
|
|
46
|
+
mismatch: "${name} does not match the pattern ${pattern}"
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
export {
|
|
50
|
+
defaultValidateMessages
|
|
51
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const ruleValidators = {
|
|
4
|
+
email: (v) => /\S+@\S+\.\S+/.test(String(v)),
|
|
5
|
+
url: (v) => /^(https?:\/\/)?([\w.-]+)\.([a-z.]{2,6})([/\w .-]*)*\/?$/.test(String(v)),
|
|
6
|
+
number: (v) => !isNaN(Number(v))
|
|
7
|
+
};
|
|
8
|
+
exports.ruleValidators = ruleValidators;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ruleValidators: Record<string, (v: any) => boolean>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const Form$1 = require("./Form.cjs.js");
|
|
4
|
+
const Field = require("./Field.cjs.js");
|
|
5
|
+
const FieldArray = require("./FieldArray.cjs.js");
|
|
6
|
+
const useForm = require("./useForm.cjs.js");
|
|
7
|
+
const useWatch = require("./useWatch.cjs.js");
|
|
8
|
+
const Form = Form$1.Form;
|
|
9
|
+
Form.Field = Field;
|
|
10
|
+
Form.FieldArray = FieldArray;
|
|
11
|
+
Form.useWatch = useWatch.useWatch;
|
|
12
|
+
Form.useForm = useForm.useForm;
|
|
13
|
+
exports.Form = Form;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Form as FormComponent } from './Form';
|
|
2
|
+
import { default as Field } from './Field';
|
|
3
|
+
import { default as FieldArray } from './FieldArray';
|
|
4
|
+
import { useForm } from './useForm';
|
|
5
|
+
import { useWatch } from './useWatch';
|
|
6
|
+
type TForm = typeof FormComponent & {
|
|
7
|
+
useForm: typeof useForm;
|
|
8
|
+
useWatch: typeof useWatch;
|
|
9
|
+
Field: typeof Field;
|
|
10
|
+
FieldArray: typeof FieldArray;
|
|
11
|
+
};
|
|
12
|
+
declare const Form: TForm;
|
|
13
|
+
export type { IFormInstance, IFormFieldProps, IFormFieldArrayProps, TFormOnValueChange, TFormFieldValidate, IFormFieldError, IFormValidationRule, IUseFormOptions, IFormProps } from './types';
|
|
14
|
+
export { Form };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Form as Form$1 } from "./Form.es.js";
|
|
2
|
+
import Field from "./Field.es.js";
|
|
3
|
+
import FieldArray from "./FieldArray.es.js";
|
|
4
|
+
import { useForm } from "./useForm.es.js";
|
|
5
|
+
import { useWatch } from "./useWatch.es.js";
|
|
6
|
+
const Form = Form$1;
|
|
7
|
+
Form.Field = Field;
|
|
8
|
+
Form.FieldArray = FieldArray;
|
|
9
|
+
Form.useWatch = useWatch;
|
|
10
|
+
Form.useForm = useForm;
|
|
11
|
+
export {
|
|
12
|
+
Form
|
|
13
|
+
};
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { ReactElement, ReactNode, DOMAttributes, FormEvent, ElementType } from 'react';
|
|
2
|
+
import { TKeyObjectType, TValueObjectType } from '../../../helpers/src';
|
|
3
|
+
import { defaultValidateMessages } from './/defaultValidateMessages';
|
|
4
|
+
import { IFlexProps } from '../Flex';
|
|
5
|
+
type DeepPartial<T> = T extends any[] ? T : T extends Record<string, any> ? {
|
|
6
|
+
[P in keyof T]?: DeepPartial<T[P]>;
|
|
7
|
+
} : T;
|
|
8
|
+
export interface IFormInstance<T extends Record<string, any>> {
|
|
9
|
+
/** Set value of a specific field */
|
|
10
|
+
setFieldValue: (name: TKeyObjectType<T>, value: T[keyof T]) => void;
|
|
11
|
+
/** Get current value of a specific field */
|
|
12
|
+
getFieldValue: (name: TKeyObjectType<T>) => TValueObjectType<T, TKeyObjectType<T>>;
|
|
13
|
+
/** Get all field values */
|
|
14
|
+
getFieldsValue: (names?: TKeyObjectType<T>[]) => Partial<T> | T;
|
|
15
|
+
/** */
|
|
16
|
+
registerField: (name: TKeyObjectType<T>, config: IFormConfigField<T>) => void;
|
|
17
|
+
/** */
|
|
18
|
+
unregisterField: (name: TKeyObjectType<T>) => void;
|
|
19
|
+
/** Reset all fields to their initial values */
|
|
20
|
+
resetFields: () => void;
|
|
21
|
+
/** */
|
|
22
|
+
fields: Record<TKeyObjectType<T>, IFormConfigField<T>>;
|
|
23
|
+
/** Set validation errors manually */
|
|
24
|
+
setErrors: (errors: IFormFieldError<T>[] | ((prev: IFormFieldError<T>[]) => IFormFieldError<T>[])) => void;
|
|
25
|
+
/** */
|
|
26
|
+
arrayHelpers: (name: TKeyObjectType<T>) => IFormFieldArrayHelpers<T>;
|
|
27
|
+
/** */
|
|
28
|
+
registerSubscribe: (name: TKeyObjectType<T>, callback: TFormFieldSubscribe<T>) => void;
|
|
29
|
+
/** */
|
|
30
|
+
unregisterSubscribe: (name: TKeyObjectType<T>) => void;
|
|
31
|
+
/** Trigger validation manually */
|
|
32
|
+
triggerValidation: (name: TKeyObjectType<T>, value: TValueObjectType<T, TKeyObjectType<T>>, values: T) => void;
|
|
33
|
+
/** */
|
|
34
|
+
setFieldsValue: (values: Record<TKeyObjectType<T>, any>) => void;
|
|
35
|
+
/** Validate all fields and return a Promise */
|
|
36
|
+
onValidateFields: () => Promise<boolean>;
|
|
37
|
+
/** Get all field errors */
|
|
38
|
+
getFieldsError: (names?: TKeyObjectType<T>[]) => IFormFieldError<T>[];
|
|
39
|
+
/** Get errors for a specific field */
|
|
40
|
+
getFieldError: (name: TKeyObjectType<T>) => string[];
|
|
41
|
+
/** Programmatically submit the form */
|
|
42
|
+
submit: () => void;
|
|
43
|
+
/** */
|
|
44
|
+
setSubmitCallback: (callback: () => (e?: FormEvent) => Promise<void>) => void;
|
|
45
|
+
}
|
|
46
|
+
export interface IFormContext<T extends Record<string, any>> extends IFormInstance<T> {
|
|
47
|
+
validateMessages: typeof defaultValidateMessages;
|
|
48
|
+
validateTrigger: TFieldTrigger | TFieldTrigger[];
|
|
49
|
+
trigger: TFieldTrigger | TFieldTrigger[];
|
|
50
|
+
}
|
|
51
|
+
export type TFormFieldValidate<T> = (value: any, values: T) => Promise<string | undefined> | string | undefined;
|
|
52
|
+
export interface IFormFieldArrayHelpers<T extends Record<string, any> = Record<string, any>> {
|
|
53
|
+
/** Add a new item */
|
|
54
|
+
add: (value?: any) => void;
|
|
55
|
+
/** Remove item by index */
|
|
56
|
+
remove: (index: number) => void;
|
|
57
|
+
/** Move item between positions */
|
|
58
|
+
insert: (index: number, value: TValueObjectType<T, TKeyObjectType<T>>[0]) => void;
|
|
59
|
+
}
|
|
60
|
+
export interface IFormProps<T extends Record<string, any> = Record<string, any>> extends IFlexProps {
|
|
61
|
+
/** Form instance returned by useForm */
|
|
62
|
+
form: IFormInstance<T>;
|
|
63
|
+
/** Form fields and UI elements */
|
|
64
|
+
children: ReactNode;
|
|
65
|
+
/** Called when validation passes and form is submitted */
|
|
66
|
+
onFinish?: (values: T) => void | Promise<void>;
|
|
67
|
+
/** Called when validation fails */
|
|
68
|
+
onFinishFailed?: (values: T, errors: IFormFieldError<T>[]) => void | Promise<void>;
|
|
69
|
+
/** Custom validation messages */
|
|
70
|
+
validateMessages?: DeepPartial<typeof defaultValidateMessages>;
|
|
71
|
+
/** When validation should be triggered (onChange, onBlur, etc) */
|
|
72
|
+
validateTrigger?: TFieldTrigger | TFieldTrigger[];
|
|
73
|
+
/** Event to trigger field value updates */
|
|
74
|
+
trigger?: TFieldTrigger | TFieldTrigger[];
|
|
75
|
+
/** Optional name of the form */
|
|
76
|
+
name?: string;
|
|
77
|
+
as?: ElementType;
|
|
78
|
+
[key: string]: any;
|
|
79
|
+
}
|
|
80
|
+
export type TFieldTrigger = "onChange" | "onBlur" | "onFocus" | keyof DOMAttributes<any>;
|
|
81
|
+
export interface IFormFieldProps<T> {
|
|
82
|
+
/** Field name (supports nested paths) */
|
|
83
|
+
name: TKeyObjectType<T>;
|
|
84
|
+
/** Form control (e.g., TextField, Checkbox) */
|
|
85
|
+
children: ReactElement;
|
|
86
|
+
/** Default field value */
|
|
87
|
+
defaultValue?: any;
|
|
88
|
+
/** Custom validation logic */
|
|
89
|
+
validate?: TFormFieldValidate<T>;
|
|
90
|
+
/** Name of the prop that represents the value */
|
|
91
|
+
valuePropName?: string;
|
|
92
|
+
/** Built-in validation rules (min, max, pattern, etc) */
|
|
93
|
+
rules?: IFormValidationRule[];
|
|
94
|
+
/** Triggers for validation. */
|
|
95
|
+
validateTrigger?: TFieldTrigger | TFieldTrigger[];
|
|
96
|
+
/** Triggers for value update */
|
|
97
|
+
trigger?: TFieldTrigger | TFieldTrigger[];
|
|
98
|
+
/** Other fields that affect validation */
|
|
99
|
+
dependencies?: TKeyObjectType<T>[];
|
|
100
|
+
}
|
|
101
|
+
export interface IFormFieldArrayProps<T extends Record<string, any> = Record<string, any>> {
|
|
102
|
+
/** Field array name */
|
|
103
|
+
name: string;
|
|
104
|
+
/** Render function that returns the UI for the array fields */
|
|
105
|
+
children: (helpers: IFormFieldArrayHelpers<T>, fields: IFormConfigFieldArrayItem<T>[]) => ReactNode;
|
|
106
|
+
}
|
|
107
|
+
export interface IFormValidationRule {
|
|
108
|
+
/** Minimum number of characters */
|
|
109
|
+
minLength?: number;
|
|
110
|
+
/** Maximum number of characters*/
|
|
111
|
+
maxLength?: number;
|
|
112
|
+
/** Must match a regular expression */
|
|
113
|
+
pattern?: RegExp;
|
|
114
|
+
/** Checks value type */
|
|
115
|
+
type?: "email" | "url" | "number";
|
|
116
|
+
/** Custom validation message */
|
|
117
|
+
message?: string;
|
|
118
|
+
/** Field is required */
|
|
119
|
+
required?: boolean;
|
|
120
|
+
}
|
|
121
|
+
export interface IFormConfigField<T> {
|
|
122
|
+
validate?: (value: TValueObjectType<T, TKeyObjectType<T>>, values: T) => Promise<string[]> | string[];
|
|
123
|
+
rules?: IFormValidationRule[];
|
|
124
|
+
defaultValue?: TValueObjectType<T, TKeyObjectType<T>>;
|
|
125
|
+
dependencies?: TKeyObjectType<T>[];
|
|
126
|
+
}
|
|
127
|
+
export interface IFormConfigFieldArrayItem<T extends Record<string, any> = Record<string, any>> {
|
|
128
|
+
value: TValueObjectType<T, TKeyObjectType<T>>[0];
|
|
129
|
+
}
|
|
130
|
+
export interface IUseFormOptions<T = Record<string, any>> {
|
|
131
|
+
/** Initial field values */
|
|
132
|
+
initialValues?: Partial<T>;
|
|
133
|
+
/** Callback when any field value changes */
|
|
134
|
+
onValueChange?: TFormOnValueChange<T>;
|
|
135
|
+
}
|
|
136
|
+
export type TFormFieldSubscribe<T = Record<string, any>> = (newValue: TValueObjectType<T, TKeyObjectType<T>>) => void;
|
|
137
|
+
export interface IFormFieldSubscribe<T> {
|
|
138
|
+
name: TKeyObjectType<T>;
|
|
139
|
+
func: TFormFieldSubscribe<T>;
|
|
140
|
+
}
|
|
141
|
+
export type TFormOnValueChange<T> = (changedValues: Partial<T>, values: T) => void;
|
|
142
|
+
export interface IFormFieldError<T> {
|
|
143
|
+
name: TKeyObjectType<T>;
|
|
144
|
+
errors: string[];
|
|
145
|
+
warnings: string[];
|
|
146
|
+
}
|
|
147
|
+
export {};
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const React = require("react");
|
|
4
|
+
const helpers = require("@quen-ui/helpers");
|
|
5
|
+
const useForm = (options) => {
|
|
6
|
+
const [values, setValues] = React.useState(options?.initialValues ?? {});
|
|
7
|
+
const [fields, setFields] = React.useState({});
|
|
8
|
+
const [errors, setErrors] = React.useState([]);
|
|
9
|
+
const [subscribes, setSubscribes] = React.useState([]);
|
|
10
|
+
const [submitCallback, setSubmitCallback] = React.useState();
|
|
11
|
+
const registerField = React.useCallback(
|
|
12
|
+
(name, { defaultValue, rules, validate, dependencies }) => {
|
|
13
|
+
const value = defaultValue ?? helpers.getValueObject(options?.initialValues ?? {}, name);
|
|
14
|
+
setValues((prev) => helpers.setValueObject(prev, name, value));
|
|
15
|
+
setFields((prev) => ({
|
|
16
|
+
...prev,
|
|
17
|
+
[name]: { validate, rules, defaultValue, dependencies }
|
|
18
|
+
}));
|
|
19
|
+
},
|
|
20
|
+
[]
|
|
21
|
+
);
|
|
22
|
+
const unregisterField = React.useCallback((name) => {
|
|
23
|
+
setValues((prevState) => {
|
|
24
|
+
return helpers.deleteValueObject(prevState, name);
|
|
25
|
+
});
|
|
26
|
+
setErrors((prevState) => {
|
|
27
|
+
return prevState.filter((error) => error.name !== name);
|
|
28
|
+
});
|
|
29
|
+
setFields((prevState) => {
|
|
30
|
+
const copy = { ...prevState };
|
|
31
|
+
delete copy[name];
|
|
32
|
+
return copy;
|
|
33
|
+
});
|
|
34
|
+
}, []);
|
|
35
|
+
const registerSubscribe = React.useCallback(
|
|
36
|
+
(name, callback) => {
|
|
37
|
+
setSubscribes((prev) => [...prev, { name, func: callback }]);
|
|
38
|
+
},
|
|
39
|
+
[]
|
|
40
|
+
);
|
|
41
|
+
const unregisterSubscribe = React.useCallback((name) => {
|
|
42
|
+
setSubscribes((prev) => prev.filter((s) => s.name !== name));
|
|
43
|
+
}, []);
|
|
44
|
+
const triggerValidation = React.useCallback(
|
|
45
|
+
(name, value, _values) => {
|
|
46
|
+
const field = fields[name];
|
|
47
|
+
if (field?.validate) {
|
|
48
|
+
field.validate(value, _values);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
[fields]
|
|
52
|
+
);
|
|
53
|
+
const notifyWatchValueField = React.useCallback(
|
|
54
|
+
(updates) => {
|
|
55
|
+
subscribes.forEach((subscribe) => {
|
|
56
|
+
if (Object.keys(updates).includes(subscribe.name)) {
|
|
57
|
+
subscribe.func(updates[subscribe.name]);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
},
|
|
61
|
+
[subscribes, values]
|
|
62
|
+
);
|
|
63
|
+
const updateValues = React.useCallback(
|
|
64
|
+
(updates) => {
|
|
65
|
+
let changedValues = {};
|
|
66
|
+
let nextValues = {};
|
|
67
|
+
setValues((prev) => {
|
|
68
|
+
nextValues = { ...prev };
|
|
69
|
+
for (const [name, value] of Object.entries(updates)) {
|
|
70
|
+
nextValues = helpers.setValueObject(
|
|
71
|
+
nextValues,
|
|
72
|
+
name,
|
|
73
|
+
value
|
|
74
|
+
);
|
|
75
|
+
changedValues = helpers.setValueObject(
|
|
76
|
+
changedValues,
|
|
77
|
+
name,
|
|
78
|
+
value
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
return nextValues;
|
|
82
|
+
});
|
|
83
|
+
setErrors((prev) => {
|
|
84
|
+
return prev.filter(
|
|
85
|
+
(error) => !Object.keys(updates).includes(error.name)
|
|
86
|
+
);
|
|
87
|
+
});
|
|
88
|
+
Object.entries(fields).forEach(([fieldName, field]) => {
|
|
89
|
+
const deps = field.dependencies ?? [];
|
|
90
|
+
if (deps.some((dep) => dep in updates)) {
|
|
91
|
+
const depValue = helpers.getValueObject(
|
|
92
|
+
nextValues,
|
|
93
|
+
fieldName,
|
|
94
|
+
""
|
|
95
|
+
);
|
|
96
|
+
triggerValidation(
|
|
97
|
+
fieldName,
|
|
98
|
+
depValue,
|
|
99
|
+
nextValues
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
notifyWatchValueField(updates);
|
|
104
|
+
options?.onValueChange?.(changedValues, nextValues);
|
|
105
|
+
},
|
|
106
|
+
[fields, triggerValidation, options, notifyWatchValueField]
|
|
107
|
+
);
|
|
108
|
+
const setFieldValue = React.useCallback(
|
|
109
|
+
(name, value) => {
|
|
110
|
+
updateValues({ [name]: value });
|
|
111
|
+
},
|
|
112
|
+
[updateValues]
|
|
113
|
+
);
|
|
114
|
+
const arrayHelpers = (name) => ({
|
|
115
|
+
add: (value) => {
|
|
116
|
+
setValues((prev) => {
|
|
117
|
+
const currentValue = helpers.getValueObject(prev, name, []);
|
|
118
|
+
return helpers.setValueObject(
|
|
119
|
+
prev,
|
|
120
|
+
`${name}[${currentValue.length}]`,
|
|
121
|
+
value
|
|
122
|
+
);
|
|
123
|
+
});
|
|
124
|
+
},
|
|
125
|
+
remove: (index) => {
|
|
126
|
+
setValues((prev) => {
|
|
127
|
+
const current = helpers.getValueObject(prev, name, []);
|
|
128
|
+
const newArr = current.filter((_, i) => i !== index);
|
|
129
|
+
return helpers.setValueObject(prev, name, newArr);
|
|
130
|
+
});
|
|
131
|
+
},
|
|
132
|
+
insert: (index, value) => {
|
|
133
|
+
setValues((prev) => {
|
|
134
|
+
const current = helpers.getValueObject(prev, name, []);
|
|
135
|
+
const newArr = [
|
|
136
|
+
...current.slice(0, index),
|
|
137
|
+
value,
|
|
138
|
+
...current.slice(index)
|
|
139
|
+
];
|
|
140
|
+
return helpers.setValueObject(prev, name, newArr);
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
const onValidateFields = React.useCallback(async () => {
|
|
145
|
+
const results = await Promise.all(
|
|
146
|
+
Object.entries(fields).map(async ([fieldName, config]) => {
|
|
147
|
+
const { validate } = config;
|
|
148
|
+
if (!validate) return null;
|
|
149
|
+
return validate(getFieldValue(fieldName), values);
|
|
150
|
+
})
|
|
151
|
+
);
|
|
152
|
+
return results.flat().filter(Boolean).length === 0;
|
|
153
|
+
}, [fields, values]);
|
|
154
|
+
const resetFields = React.useCallback(() => {
|
|
155
|
+
setValues(options?.initialValues ?? {});
|
|
156
|
+
setErrors([]);
|
|
157
|
+
}, [options?.initialValues]);
|
|
158
|
+
const setFieldsValue = React.useCallback(
|
|
159
|
+
(_values) => {
|
|
160
|
+
updateValues(_values);
|
|
161
|
+
},
|
|
162
|
+
[updateValues]
|
|
163
|
+
);
|
|
164
|
+
const getFieldError = React.useCallback(
|
|
165
|
+
(name) => {
|
|
166
|
+
return errors.filter((error) => error.name === name)?.[0]?.errors ?? [];
|
|
167
|
+
},
|
|
168
|
+
[errors]
|
|
169
|
+
);
|
|
170
|
+
const getFieldsError = React.useCallback(
|
|
171
|
+
(names) => {
|
|
172
|
+
if (!names) {
|
|
173
|
+
return errors;
|
|
174
|
+
}
|
|
175
|
+
return errors.filter((error) => names.includes(error.name));
|
|
176
|
+
},
|
|
177
|
+
[errors]
|
|
178
|
+
);
|
|
179
|
+
const getFieldValue = React.useCallback(
|
|
180
|
+
(name) => {
|
|
181
|
+
return helpers.getValueObject(values, name);
|
|
182
|
+
},
|
|
183
|
+
[values]
|
|
184
|
+
);
|
|
185
|
+
const getFieldsValue = React.useCallback(
|
|
186
|
+
(names) => {
|
|
187
|
+
if (names) {
|
|
188
|
+
let fieldsValue = {};
|
|
189
|
+
names.forEach((name) => {
|
|
190
|
+
const value = helpers.getValueObject(values, name);
|
|
191
|
+
fieldsValue = {
|
|
192
|
+
fieldsValue,
|
|
193
|
+
...helpers.setValueObject(
|
|
194
|
+
fieldsValue,
|
|
195
|
+
name,
|
|
196
|
+
value
|
|
197
|
+
)
|
|
198
|
+
};
|
|
199
|
+
});
|
|
200
|
+
return fieldsValue;
|
|
201
|
+
}
|
|
202
|
+
return values;
|
|
203
|
+
},
|
|
204
|
+
[values]
|
|
205
|
+
);
|
|
206
|
+
const submit = () => {
|
|
207
|
+
submitCallback?.();
|
|
208
|
+
};
|
|
209
|
+
return {
|
|
210
|
+
getFieldValue,
|
|
211
|
+
getFieldsValue,
|
|
212
|
+
registerField,
|
|
213
|
+
resetFields,
|
|
214
|
+
setFieldValue,
|
|
215
|
+
setErrors,
|
|
216
|
+
fields,
|
|
217
|
+
unregisterField,
|
|
218
|
+
arrayHelpers,
|
|
219
|
+
registerSubscribe,
|
|
220
|
+
unregisterSubscribe,
|
|
221
|
+
triggerValidation,
|
|
222
|
+
setFieldsValue,
|
|
223
|
+
onValidateFields,
|
|
224
|
+
getFieldError,
|
|
225
|
+
getFieldsError,
|
|
226
|
+
submit,
|
|
227
|
+
setSubmitCallback
|
|
228
|
+
};
|
|
229
|
+
};
|
|
230
|
+
exports.useForm = useForm;
|