@1money/react-ui 1.15.3 → 1.17.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/AGENTS.md +393 -0
- package/es/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
- package/es/components/CheckboxGroup/CheckboxGroup.js +94 -91
- package/es/components/CheckboxGroup/interface.d.ts +21 -15
- package/es/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
- package/es/components/Flex/Flex.d.ts +5 -0
- package/es/components/Flex/Flex.js +50 -0
- package/es/components/Flex/constants.d.ts +41 -0
- package/es/components/Flex/constants.js +45 -0
- package/es/components/Flex/index.d.ts +5 -0
- package/es/components/Flex/index.js +6 -0
- package/es/components/Flex/interface.d.ts +13 -0
- package/es/components/Flex/interface.js +2 -0
- package/es/components/Flex/style/Flex.css +1 -0
- package/es/components/Flex/style/Flex.scss +70 -0
- package/es/components/Flex/style/css.js +2 -0
- package/es/components/Flex/style/index.d.ts +1 -0
- package/es/components/Flex/style/index.js +2 -0
- package/es/components/Form/Form.d.ts +29 -0
- package/es/components/Form/Form.js +188 -0
- package/es/components/Form/FormItem.d.ts +4 -0
- package/es/components/Form/FormItem.js +165 -0
- package/es/components/Form/FormItemContent.d.ts +18 -0
- package/es/components/Form/FormItemContent.js +146 -0
- package/es/components/Form/constants.d.ts +46 -0
- package/es/components/Form/constants.js +65 -0
- package/es/components/Form/helper.d.ts +120 -0
- package/es/components/Form/helper.js +284 -0
- package/es/components/Form/index.d.ts +20 -0
- package/es/components/Form/index.js +21 -0
- package/es/components/Form/interface.d.ts +238 -0
- package/es/components/Form/interface.js +2 -0
- package/es/components/Form/style/Form.css +1 -0
- package/es/components/Form/style/Form.scss +167 -0
- package/es/components/Form/style/css.js +2 -0
- package/es/components/Form/style/index.d.ts +1 -0
- package/es/components/Form/style/index.js +2 -0
- package/es/components/Form/useFormItemContext.d.ts +32 -0
- package/es/components/Form/useFormItemContext.js +55 -0
- package/es/components/Form/useFormItemWatch.d.ts +51 -0
- package/es/components/Form/useFormItemWatch.js +69 -0
- package/es/components/Form/useValidationTrigger.d.ts +40 -0
- package/es/components/Form/useValidationTrigger.js +74 -0
- package/es/components/Grid/Col.d.ts +5 -0
- package/es/components/Grid/Col.js +97 -0
- package/es/components/Grid/Grid.d.ts +12 -0
- package/es/components/Grid/Grid.js +12 -0
- package/es/components/Grid/Row.d.ts +5 -0
- package/es/components/Grid/Row.js +48 -0
- package/es/components/Grid/constants.d.ts +55 -0
- package/es/components/Grid/constants.js +66 -0
- package/es/components/Grid/helper.d.ts +10 -0
- package/es/components/Grid/helper.js +44 -0
- package/es/components/Grid/index.d.ts +7 -0
- package/es/components/Grid/index.js +8 -0
- package/es/components/Grid/interface.d.ts +38 -0
- package/es/components/Grid/interface.js +2 -0
- package/es/components/Grid/style/Grid.css +1 -0
- package/es/components/Grid/style/Grid.scss +196 -0
- package/es/components/Grid/style/css.js +2 -0
- package/es/components/Grid/style/index.d.ts +1 -0
- package/es/components/Grid/style/index.js +2 -0
- package/es/components/Input/Input.js +72 -74
- package/es/components/Input/interface.d.ts +9 -9
- package/es/components/InputAmount/InputAmount.js +228 -276
- package/es/components/InputAmount/helper.d.ts +46 -0
- package/es/components/InputAmount/helper.js +115 -0
- package/es/components/InputAmount/style/normal.css +1 -1
- package/es/components/InputAmount/style/normal.scss +2 -2
- package/es/components/InputAmount/style/primary.css +1 -1
- package/es/components/InputAmount/style/primary.scss +2 -2
- package/es/components/Message/style/Message.css +1 -1
- package/es/components/Message/style/Message.scss +3 -3
- package/es/components/ProForm/ProForm.d.ts +33 -0
- package/es/components/ProForm/ProForm.js +208 -0
- package/es/components/ProForm/ProFormDependency.d.ts +12 -0
- package/es/components/ProForm/ProFormDependency.js +61 -0
- package/es/components/ProForm/ProFormList.d.ts +19 -0
- package/es/components/ProForm/ProFormList.js +348 -0
- package/es/components/ProForm/Submitter.d.ts +21 -0
- package/es/components/ProForm/Submitter.js +76 -0
- package/es/components/ProForm/constants.d.ts +34 -0
- package/es/components/ProForm/constants.js +40 -0
- package/es/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormCheckbox.js +11 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormCheckboxGroup.js +46 -0
- package/es/components/ProForm/fields/ProFormDigit.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormDigit.js +15 -0
- package/es/components/ProForm/fields/ProFormMoney.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormMoney.js +10 -0
- package/es/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormMultiSelect.js +27 -0
- package/es/components/ProForm/fields/ProFormPassword.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormPassword.js +16 -0
- package/es/components/ProForm/fields/ProFormRadio.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormRadio.js +13 -0
- package/es/components/ProForm/fields/ProFormSelect.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormSelect.js +13 -0
- package/es/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormSwitch.js +11 -0
- package/es/components/ProForm/fields/ProFormText.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormText.js +15 -0
- package/es/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
- package/es/components/ProForm/fields/ProFormTextArea.js +16 -0
- package/es/components/ProForm/fields/createProFormField.d.ts +43 -0
- package/es/components/ProForm/fields/createProFormField.js +200 -0
- package/es/components/ProForm/fields/index.d.ts +12 -0
- package/es/components/ProForm/fields/index.js +13 -0
- package/es/components/ProForm/index.d.ts +7 -0
- package/es/components/ProForm/index.js +7 -0
- package/es/components/ProForm/interface.d.ts +306 -0
- package/es/components/ProForm/interface.js +2 -0
- package/es/components/ProForm/layouts/DrawerForm.d.ts +16 -0
- package/es/components/ProForm/layouts/DrawerForm.js +79 -0
- package/es/components/ProForm/layouts/ModalForm.d.ts +16 -0
- package/es/components/ProForm/layouts/ModalForm.js +89 -0
- package/es/components/ProForm/layouts/QueryFilter.d.ts +21 -0
- package/es/components/ProForm/layouts/QueryFilter.js +132 -0
- package/es/components/ProForm/layouts/StepsForm.d.ts +13 -0
- package/es/components/ProForm/layouts/StepsForm.js +295 -0
- package/es/components/ProForm/layouts/index.d.ts +4 -0
- package/es/components/ProForm/layouts/index.js +5 -0
- package/es/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
- package/es/components/ProForm/layouts/useOverlayForm.js +143 -0
- package/es/components/ProForm/style/ProForm.module.css +1 -0
- package/es/components/ProForm/style/ProForm.module.scss +59 -0
- package/es/components/ProForm/style/css.js +3 -0
- package/es/components/ProForm/style/index.d.ts +1 -0
- package/es/components/ProForm/style/index.js +3 -0
- package/es/components/ProForm/utils.d.ts +72 -0
- package/es/components/ProForm/utils.js +206 -0
- package/es/components/RadioGroup/RadioGroup.js +46 -23
- package/es/components/RadioGroup/interface.d.ts +3 -1
- package/es/components/Select/Select.d.ts +1 -1
- package/es/components/Select/Select.js +113 -106
- package/es/components/Select/constants.d.ts +18 -0
- package/es/components/Select/constants.js +19 -0
- package/es/components/Sidebar/Sidebar.js +21 -23
- package/es/components/Sidebar/SidebarLogo.d.ts +7 -0
- package/es/components/Sidebar/SidebarLogo.js +33 -0
- package/es/components/Sidebar/SimplySidebar.d.ts +2 -2
- package/es/components/Sidebar/SimplySidebar.js +18 -22
- package/es/components/Sidebar/Stepper.js +14 -14
- package/es/components/Sidebar/constants.d.ts +16 -0
- package/es/components/Sidebar/constants.js +17 -0
- package/es/components/Sidebar/style/Sidebar.css +1 -1
- package/es/components/Sidebar/style/Sidebar.scss +1 -1
- package/es/components/Sidebar/style/SimplySidebar.css +1 -1
- package/es/components/Sidebar/style/SimplySidebar.scss +1 -1
- package/es/components/Sidebar/style/Stepper.css +1 -1
- package/es/components/Sidebar/style/Stepper.scss +11 -1
- package/es/components/Space/Space.d.ts +5 -0
- package/es/components/Space/Space.js +71 -0
- package/es/components/Space/constants.d.ts +33 -0
- package/es/components/Space/constants.js +37 -0
- package/es/components/Space/index.d.ts +5 -0
- package/es/components/Space/index.js +6 -0
- package/es/components/Space/interface.d.ts +12 -0
- package/es/components/Space/interface.js +2 -0
- package/es/components/Space/style/Space.css +1 -0
- package/es/components/Space/style/Space.scss +40 -0
- package/es/components/Space/style/css.js +2 -0
- package/es/components/Space/style/index.d.ts +1 -0
- package/es/components/Space/style/index.js +2 -0
- package/es/components/Switch/Switch.js +28 -25
- package/es/components/Switch/interface.d.ts +9 -4
- package/es/components/useControlledState/index.d.ts +14 -0
- package/es/components/useControlledState/index.js +32 -0
- package/es/components/useEventCallback/index.d.ts +11 -0
- package/es/components/useEventCallback/index.js +17 -0
- package/es/components/useLayoutEffect/index.d.ts +11 -0
- package/es/components/useLayoutEffect/index.js +17 -0
- package/es/components/useLayoutState/index.d.ts +13 -0
- package/es/components/useLayoutState/index.js +71 -0
- package/es/components/useMemoizedFn/index.d.ts +12 -0
- package/es/components/useMemoizedFn/index.js +27 -0
- package/es/components/usePrevious/index.d.ts +11 -0
- package/es/components/usePrevious/index.js +19 -0
- package/es/components/useSafeState/index.d.ts +12 -0
- package/es/components/useSafeState/index.js +24 -0
- package/es/components/useSyncState/index.d.ts +14 -0
- package/es/components/useSyncState/index.js +37 -0
- package/es/components/useUpdateEffect/index.d.ts +9 -0
- package/es/components/useUpdateEffect/index.js +19 -0
- package/es/index.css +1 -1
- package/es/index.d.ts +32 -2
- package/es/index.js +30 -1
- package/jest.setup.d.ts +1 -0
- package/jest.setup.ts +1 -0
- package/lib/components/CheckboxGroup/CheckboxGroup.d.ts +3 -3
- package/lib/components/CheckboxGroup/CheckboxGroup.js +92 -89
- package/lib/components/CheckboxGroup/interface.d.ts +21 -15
- package/lib/components/CheckboxGroup/style/CheckboxGroup.scss +0 -7
- package/lib/components/Flex/Flex.d.ts +5 -0
- package/lib/components/Flex/Flex.js +60 -0
- package/lib/components/Flex/constants.d.ts +41 -0
- package/lib/components/Flex/constants.js +51 -0
- package/lib/components/Flex/index.d.ts +5 -0
- package/lib/components/Flex/index.js +60 -0
- package/lib/components/Flex/interface.d.ts +13 -0
- package/lib/components/Flex/interface.js +6 -0
- package/lib/components/Flex/style/Flex.css +1 -0
- package/lib/components/Flex/style/Flex.scss +70 -0
- package/lib/components/Flex/style/css.js +4 -0
- package/lib/components/Flex/style/index.d.ts +1 -0
- package/lib/components/Flex/style/index.js +4 -0
- package/lib/components/Form/Form.d.ts +29 -0
- package/lib/components/Form/Form.js +199 -0
- package/lib/components/Form/FormItem.d.ts +4 -0
- package/lib/components/Form/FormItem.js +176 -0
- package/lib/components/Form/FormItemContent.d.ts +18 -0
- package/lib/components/Form/FormItemContent.js +156 -0
- package/lib/components/Form/constants.d.ts +46 -0
- package/lib/components/Form/constants.js +71 -0
- package/lib/components/Form/helper.d.ts +120 -0
- package/lib/components/Form/helper.js +290 -0
- package/lib/components/Form/index.d.ts +20 -0
- package/lib/components/Form/index.js +45 -0
- package/lib/components/Form/interface.d.ts +238 -0
- package/lib/components/Form/interface.js +6 -0
- package/lib/components/Form/style/Form.css +1 -0
- package/lib/components/Form/style/Form.scss +167 -0
- package/lib/components/Form/style/css.js +4 -0
- package/lib/components/Form/style/index.d.ts +1 -0
- package/lib/components/Form/style/index.js +4 -0
- package/lib/components/Form/useFormItemContext.d.ts +32 -0
- package/lib/components/Form/useFormItemContext.js +62 -0
- package/lib/components/Form/useFormItemWatch.d.ts +51 -0
- package/lib/components/Form/useFormItemWatch.js +76 -0
- package/lib/components/Form/useValidationTrigger.d.ts +40 -0
- package/lib/components/Form/useValidationTrigger.js +81 -0
- package/lib/components/Grid/Col.d.ts +5 -0
- package/lib/components/Grid/Col.js +107 -0
- package/lib/components/Grid/Grid.d.ts +12 -0
- package/lib/components/Grid/Grid.js +18 -0
- package/lib/components/Grid/Row.d.ts +5 -0
- package/lib/components/Grid/Row.js +58 -0
- package/lib/components/Grid/constants.d.ts +55 -0
- package/lib/components/Grid/constants.js +72 -0
- package/lib/components/Grid/helper.d.ts +10 -0
- package/lib/components/Grid/helper.js +51 -0
- package/lib/components/Grid/index.d.ts +7 -0
- package/lib/components/Grid/index.js +62 -0
- package/lib/components/Grid/interface.d.ts +38 -0
- package/lib/components/Grid/interface.js +6 -0
- package/lib/components/Grid/style/Grid.css +1 -0
- package/lib/components/Grid/style/Grid.scss +196 -0
- package/lib/components/Grid/style/css.js +4 -0
- package/lib/components/Grid/style/index.d.ts +1 -0
- package/lib/components/Grid/style/index.js +4 -0
- package/lib/components/Input/Input.js +71 -73
- package/lib/components/Input/interface.d.ts +9 -9
- package/lib/components/InputAmount/InputAmount.js +230 -278
- package/lib/components/InputAmount/helper.d.ts +46 -0
- package/lib/components/InputAmount/helper.js +122 -0
- package/lib/components/InputAmount/style/normal.css +1 -1
- package/lib/components/InputAmount/style/normal.scss +2 -2
- package/lib/components/InputAmount/style/primary.css +1 -1
- package/lib/components/InputAmount/style/primary.scss +2 -2
- package/lib/components/Message/style/Message.css +1 -1
- package/lib/components/Message/style/Message.scss +3 -3
- package/lib/components/ProForm/ProForm.d.ts +33 -0
- package/lib/components/ProForm/ProForm.js +216 -0
- package/lib/components/ProForm/ProFormDependency.d.ts +12 -0
- package/lib/components/ProForm/ProFormDependency.js +67 -0
- package/lib/components/ProForm/ProFormList.d.ts +19 -0
- package/lib/components/ProForm/ProFormList.js +355 -0
- package/lib/components/ProForm/Submitter.d.ts +21 -0
- package/lib/components/ProForm/Submitter.js +83 -0
- package/lib/components/ProForm/constants.d.ts +34 -0
- package/lib/components/ProForm/constants.js +46 -0
- package/lib/components/ProForm/fields/ProFormCheckbox.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormCheckbox.js +18 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormCheckboxGroup.js +53 -0
- package/lib/components/ProForm/fields/ProFormDigit.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormDigit.js +22 -0
- package/lib/components/ProForm/fields/ProFormMoney.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormMoney.js +17 -0
- package/lib/components/ProForm/fields/ProFormMultiSelect.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormMultiSelect.js +34 -0
- package/lib/components/ProForm/fields/ProFormPassword.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormPassword.js +23 -0
- package/lib/components/ProForm/fields/ProFormRadio.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormRadio.js +20 -0
- package/lib/components/ProForm/fields/ProFormSelect.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormSelect.js +20 -0
- package/lib/components/ProForm/fields/ProFormSwitch.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormSwitch.js +18 -0
- package/lib/components/ProForm/fields/ProFormText.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormText.js +22 -0
- package/lib/components/ProForm/fields/ProFormTextArea.d.ts +6 -0
- package/lib/components/ProForm/fields/ProFormTextArea.js +23 -0
- package/lib/components/ProForm/fields/createProFormField.d.ts +43 -0
- package/lib/components/ProForm/fields/createProFormField.js +208 -0
- package/lib/components/ProForm/fields/index.d.ts +12 -0
- package/lib/components/ProForm/fields/index.js +90 -0
- package/lib/components/ProForm/index.d.ts +7 -0
- package/lib/components/ProForm/index.js +73 -0
- package/lib/components/ProForm/interface.d.ts +306 -0
- package/lib/components/ProForm/interface.js +6 -0
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +16 -0
- package/lib/components/ProForm/layouts/DrawerForm.js +86 -0
- package/lib/components/ProForm/layouts/ModalForm.d.ts +16 -0
- package/lib/components/ProForm/layouts/ModalForm.js +96 -0
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +21 -0
- package/lib/components/ProForm/layouts/QueryFilter.js +139 -0
- package/lib/components/ProForm/layouts/StepsForm.d.ts +13 -0
- package/lib/components/ProForm/layouts/StepsForm.js +302 -0
- package/lib/components/ProForm/layouts/index.d.ts +4 -0
- package/lib/components/ProForm/layouts/index.js +40 -0
- package/lib/components/ProForm/layouts/useOverlayForm.d.ts +53 -0
- package/lib/components/ProForm/layouts/useOverlayForm.js +150 -0
- package/lib/components/ProForm/style/ProForm.module.css +1 -0
- package/lib/components/ProForm/style/ProForm.module.scss +59 -0
- package/lib/components/ProForm/style/css.js +4 -0
- package/lib/components/ProForm/style/index.d.ts +1 -0
- package/lib/components/ProForm/style/index.js +4 -0
- package/lib/components/ProForm/utils.d.ts +72 -0
- package/lib/components/ProForm/utils.js +213 -0
- package/lib/components/RadioGroup/RadioGroup.js +45 -22
- package/lib/components/RadioGroup/interface.d.ts +3 -1
- package/lib/components/Select/Select.d.ts +1 -1
- package/lib/components/Select/Select.js +114 -107
- package/lib/components/Select/constants.d.ts +18 -0
- package/lib/components/Select/constants.js +25 -0
- package/lib/components/Sidebar/Sidebar.js +21 -23
- package/lib/components/Sidebar/SidebarLogo.d.ts +7 -0
- package/lib/components/Sidebar/SidebarLogo.js +39 -0
- package/lib/components/Sidebar/SimplySidebar.d.ts +2 -2
- package/lib/components/Sidebar/SimplySidebar.js +17 -21
- package/lib/components/Sidebar/Stepper.js +14 -14
- package/lib/components/Sidebar/constants.d.ts +16 -0
- package/lib/components/Sidebar/constants.js +23 -0
- package/lib/components/Sidebar/style/Sidebar.css +1 -1
- package/lib/components/Sidebar/style/Sidebar.scss +1 -1
- package/lib/components/Sidebar/style/SimplySidebar.css +1 -1
- package/lib/components/Sidebar/style/SimplySidebar.scss +1 -1
- package/lib/components/Sidebar/style/Stepper.css +1 -1
- package/lib/components/Sidebar/style/Stepper.scss +11 -1
- package/lib/components/Space/Space.d.ts +5 -0
- package/lib/components/Space/Space.js +81 -0
- package/lib/components/Space/constants.d.ts +33 -0
- package/lib/components/Space/constants.js +43 -0
- package/lib/components/Space/index.d.ts +5 -0
- package/lib/components/Space/index.js +53 -0
- package/lib/components/Space/interface.d.ts +12 -0
- package/lib/components/Space/interface.js +6 -0
- package/lib/components/Space/style/Space.css +1 -0
- package/lib/components/Space/style/Space.scss +40 -0
- package/lib/components/Space/style/css.js +4 -0
- package/lib/components/Space/style/index.d.ts +1 -0
- package/lib/components/Space/style/index.js +4 -0
- package/lib/components/Switch/Switch.js +27 -24
- package/lib/components/Switch/interface.d.ts +9 -4
- package/lib/components/useControlledState/index.d.ts +14 -0
- package/lib/components/useControlledState/index.js +39 -0
- package/lib/components/useEventCallback/index.d.ts +11 -0
- package/lib/components/useEventCallback/index.js +24 -0
- package/lib/components/useLayoutEffect/index.d.ts +11 -0
- package/lib/components/useLayoutEffect/index.js +23 -0
- package/lib/components/useLayoutState/index.d.ts +13 -0
- package/lib/components/useLayoutState/index.js +79 -0
- package/lib/components/useMemoizedFn/index.d.ts +12 -0
- package/lib/components/useMemoizedFn/index.js +33 -0
- package/lib/components/usePrevious/index.d.ts +11 -0
- package/lib/components/usePrevious/index.js +25 -0
- package/lib/components/useSafeState/index.d.ts +12 -0
- package/lib/components/useSafeState/index.js +31 -0
- package/lib/components/useSyncState/index.d.ts +14 -0
- package/lib/components/useSyncState/index.js +44 -0
- package/lib/components/useUpdateEffect/index.d.ts +9 -0
- package/lib/components/useUpdateEffect/index.js +25 -0
- package/lib/index.css +1 -1
- package/lib/index.d.ts +32 -2
- package/lib/index.js +251 -1
- package/package.json +31 -1
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
@use '../../../variable.scss' as *;
|
|
2
|
+
|
|
3
|
+
// Intentionally token-level SCSS (no global tag selectors): spacing/typography/
|
|
4
|
+
// opacity values are centralized as component CSS variables for predictable BEM output.
|
|
5
|
+
$component: 'form';
|
|
6
|
+
$cls: #{$prefix}-#{$component};
|
|
7
|
+
|
|
8
|
+
@mixin om-form-token-vars {
|
|
9
|
+
--om-form-spacing-xs: 4px;
|
|
10
|
+
--om-form-spacing-sm: 8px;
|
|
11
|
+
--om-form-spacing-md: 12px;
|
|
12
|
+
--om-form-spacing-lg: 16px;
|
|
13
|
+
--om-form-control-height: 44px;
|
|
14
|
+
--om-form-font-size-base: 14px;
|
|
15
|
+
--om-form-line-height-base: 20px;
|
|
16
|
+
--om-form-font-size-help: 12px;
|
|
17
|
+
--om-form-line-height-help: 18px;
|
|
18
|
+
--om-form-opacity-disabled: 0.6;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.#{$cls} {
|
|
22
|
+
@include om-form-token-vars;
|
|
23
|
+
|
|
24
|
+
&-root {
|
|
25
|
+
width: 100%;
|
|
26
|
+
|
|
27
|
+
@include om-form-token-vars;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
&-layout-horizontal .#{$prefix}-form-item-root {
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: flex-start;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
&-layout-vertical .#{$prefix}-form-item-root {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: column;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
&-layout-inline {
|
|
41
|
+
display: flex;
|
|
42
|
+
flex-wrap: wrap;
|
|
43
|
+
gap: var(--om-form-spacing-lg);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&-label-left .#{$prefix}-form-item-label {
|
|
47
|
+
text-align: left;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
$item: 'form-item';
|
|
52
|
+
$item-cls: #{$prefix}-#{$item};
|
|
53
|
+
|
|
54
|
+
.#{$item-cls} {
|
|
55
|
+
@include om-form-token-vars;
|
|
56
|
+
|
|
57
|
+
&-root {
|
|
58
|
+
width: 100%;
|
|
59
|
+
margin-bottom: var(--om-form-spacing-lg);
|
|
60
|
+
|
|
61
|
+
@include om-form-token-vars;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
&-label {
|
|
65
|
+
display: flex;
|
|
66
|
+
flex: 0 0 var(--om-form-label-width, 25%);
|
|
67
|
+
align-items: center;
|
|
68
|
+
justify-content: flex-end;
|
|
69
|
+
min-width: fit-content;
|
|
70
|
+
min-height: var(--om-form-control-height);
|
|
71
|
+
padding-right: var(--om-form-spacing-md);
|
|
72
|
+
color: $color-primary-black;
|
|
73
|
+
font-size: var(--om-form-font-size-base);
|
|
74
|
+
line-height: var(--om-form-line-height-base);
|
|
75
|
+
white-space: nowrap;
|
|
76
|
+
text-align: right;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
&-label-required::before {
|
|
80
|
+
margin-right: var(--om-form-spacing-xs);
|
|
81
|
+
color: $color-negative;
|
|
82
|
+
content: '*';
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
&-colon {
|
|
86
|
+
margin-left: var(--om-form-spacing-xs);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
&-control {
|
|
90
|
+
flex: 1 1 auto;
|
|
91
|
+
max-width: var(--om-form-wrapper-width, 75%);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
&-content {
|
|
95
|
+
display: flex;
|
|
96
|
+
flex-direction: column;
|
|
97
|
+
gap: var(--om-form-spacing-sm);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
&-content-disabled {
|
|
101
|
+
opacity: var(--om-form-opacity-disabled);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
&-help {
|
|
105
|
+
color: $color-grey-midnight;
|
|
106
|
+
font-size: var(--om-form-font-size-help);
|
|
107
|
+
line-height: var(--om-form-line-height-help);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
&-help-error {
|
|
111
|
+
color: $color-negative;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
&-help-warning {
|
|
115
|
+
color: $color-warning-dark;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
&-help-success {
|
|
119
|
+
color: $color-success;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
&-content-error {
|
|
123
|
+
--om-form-item-status-color: #{$color-negative};
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
&-content-warning {
|
|
127
|
+
--om-form-item-status-color: #{$color-warning-dark};
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
&-content-success {
|
|
131
|
+
--om-form-item-status-color: #{$color-success};
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
&-content-validating {
|
|
135
|
+
--om-form-item-status-color: #{$color-info};
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
&-extra {
|
|
139
|
+
color: $color-grey-dark;
|
|
140
|
+
font-size: var(--om-form-font-size-help);
|
|
141
|
+
line-height: var(--om-form-line-height-help);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
.#{$prefix}-form-layout-vertical {
|
|
146
|
+
.#{$item-cls}-label {
|
|
147
|
+
flex: 0 0 auto;
|
|
148
|
+
justify-content: flex-start;
|
|
149
|
+
min-width: 0;
|
|
150
|
+
min-height: auto;
|
|
151
|
+
margin-bottom: var(--om-form-spacing-sm);
|
|
152
|
+
padding-right: 0;
|
|
153
|
+
white-space: normal;
|
|
154
|
+
text-align: left;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
.#{$item-cls}-control {
|
|
158
|
+
max-width: 100%;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
.#{$prefix}-form-layout-inline {
|
|
163
|
+
.#{$item-cls}-root {
|
|
164
|
+
width: auto;
|
|
165
|
+
margin-bottom: 0;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import './Form.css';
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvRm9ybS9zcmMvY29tcG9uZW50cy9Gb3JtL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sYUFBYSIsImZpbGUiOiJjb21wb25lbnRzL0Zvcm0vc3R5bGUvY3NzLmpzIiwic291cmNlc0NvbnRlbnQiOltudWxsXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYyJ9
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import './Form.scss';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import './Form.scss';
|
|
2
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvRm9ybS9zcmMvY29tcG9uZW50cy9Gb3JtL3N0eWxlL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sYUFBYSIsImZpbGUiOiJjb21wb25lbnRzL0Zvcm0vc3R5bGUvaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import type { FieldValues, UseFormReturn } from 'react-hook-form';
|
|
3
|
+
interface FallbackFormProviderProps {
|
|
4
|
+
children: ReactNode;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Lazily creates form methods only when mounted.
|
|
8
|
+
*
|
|
9
|
+
* Use this provider when rendering form-aware components outside `<Form>`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function FallbackFormProvider({ children }: FallbackFormProviderProps): import("react").FunctionComponentElement<import("react").ProviderProps<UseFormReturn<FieldValues> | null>>;
|
|
12
|
+
/**
|
|
13
|
+
* Resolves form context for a `<FormItem>`.
|
|
14
|
+
*
|
|
15
|
+
* When rendered inside a `<Form>`, this hook uses the context-provided
|
|
16
|
+
* `react-hook-form` methods. Otherwise it reads methods from
|
|
17
|
+
* {@link FallbackFormProvider}, which creates a local `useForm()` instance.
|
|
18
|
+
*
|
|
19
|
+
* A development-only console warning is emitted (once per field name) when
|
|
20
|
+
* a `name` prop is set but no parent `<Form>` context is found.
|
|
21
|
+
*
|
|
22
|
+
* @template TFieldValues - The shape of the form values.
|
|
23
|
+
* @param name - The field name, used for the missing-context warning check.
|
|
24
|
+
* @returns An object with `ctx` (form context or `null`), `methods`, `control`, and `trigger`.
|
|
25
|
+
*/
|
|
26
|
+
export declare function useFormItemContext<TFieldValues extends FieldValues = FieldValues>(name?: string): {
|
|
27
|
+
ctx: import("./interface").FormContextValue | null;
|
|
28
|
+
methods: UseFormReturn<TFieldValues>;
|
|
29
|
+
control: import("react-hook-form").Control<TFieldValues, any, TFieldValues>;
|
|
30
|
+
trigger: import("react-hook-form").UseFormTrigger<TFieldValues>;
|
|
31
|
+
};
|
|
32
|
+
export {};
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { createContext, createElement, useContext, useEffect, useRef } from 'react';
|
|
2
|
+
import { useForm } from 'react-hook-form';
|
|
3
|
+
import { FormContext } from './Form';
|
|
4
|
+
var FallbackFormContext = /*#__PURE__*/createContext(null);
|
|
5
|
+
/**
|
|
6
|
+
* Lazily creates form methods only when mounted.
|
|
7
|
+
*
|
|
8
|
+
* Use this provider when rendering form-aware components outside `<Form>`.
|
|
9
|
+
*/
|
|
10
|
+
export function FallbackFormProvider(_ref) {
|
|
11
|
+
var children = _ref.children;
|
|
12
|
+
var methods = useForm();
|
|
13
|
+
return /*#__PURE__*/createElement(FallbackFormContext.Provider, {
|
|
14
|
+
value: methods
|
|
15
|
+
}, children);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolves form context for a `<FormItem>`.
|
|
19
|
+
*
|
|
20
|
+
* When rendered inside a `<Form>`, this hook uses the context-provided
|
|
21
|
+
* `react-hook-form` methods. Otherwise it reads methods from
|
|
22
|
+
* {@link FallbackFormProvider}, which creates a local `useForm()` instance.
|
|
23
|
+
*
|
|
24
|
+
* A development-only console warning is emitted (once per field name) when
|
|
25
|
+
* a `name` prop is set but no parent `<Form>` context is found.
|
|
26
|
+
*
|
|
27
|
+
* @template TFieldValues - The shape of the form values.
|
|
28
|
+
* @param name - The field name, used for the missing-context warning check.
|
|
29
|
+
* @returns An object with `ctx` (form context or `null`), `methods`, `control`, and `trigger`.
|
|
30
|
+
*/
|
|
31
|
+
export function useFormItemContext(name) {
|
|
32
|
+
var _a;
|
|
33
|
+
var ctx = useContext(FormContext);
|
|
34
|
+
var fallbackMethods = useContext(FallbackFormContext);
|
|
35
|
+
var warnedRef = useRef(new Set());
|
|
36
|
+
var methods = (_a = ctx === null || ctx === void 0 ? void 0 : ctx.methods) !== null && _a !== void 0 ? _a : fallbackMethods;
|
|
37
|
+
if (!methods) {
|
|
38
|
+
throw new Error('[FormItem] No form control found. Wrap with <Form> or mount inside <FallbackFormProvider>.');
|
|
39
|
+
}
|
|
40
|
+
var control = methods.control;
|
|
41
|
+
var trigger = methods.trigger;
|
|
42
|
+
useEffect(function () {
|
|
43
|
+
if (name && !(ctx === null || ctx === void 0 ? void 0 : ctx.methods) && !warnedRef.current.has(name)) {
|
|
44
|
+
warnedRef.current.add(name);
|
|
45
|
+
console.warn('[FormItem] `name` prop is set but no form control found. Wrap FormItem inside a <Form> component.');
|
|
46
|
+
}
|
|
47
|
+
}, [name, ctx === null || ctx === void 0 ? void 0 : ctx.methods]);
|
|
48
|
+
return {
|
|
49
|
+
ctx: ctx,
|
|
50
|
+
methods: methods,
|
|
51
|
+
control: control,
|
|
52
|
+
trigger: trigger
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvRm9ybS91c2VGb3JtSXRlbUNvbnRleHQudHMiLCJjb21wb25lbnRzL0Zvcm0vdXNlRm9ybUl0ZW1Db250ZXh0LmpzIl0sIm5hbWVzIjpbImNyZWF0ZUNvbnRleHQiLCJjcmVhdGVFbGVtZW50IiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZUZvcm0iLCJGb3JtQ29udGV4dCIsIkZhbGxiYWNrRm9ybUNvbnRleHQiLCJGYWxsYmFja0Zvcm1Qcm92aWRlciIsIl9yZWYiLCJjaGlsZHJlbiIsIm1ldGhvZHMiLCJQcm92aWRlciIsInZhbHVlIiwidXNlRm9ybUl0ZW1Db250ZXh0IiwibmFtZSIsIl9hIiwiY3R4IiwiZmFsbGJhY2tNZXRob2RzIiwid2FybmVkUmVmIiwiU2V0IiwiRXJyb3IiLCJjb250cm9sIiwidHJpZ2dlciIsImN1cnJlbnQiLCJoYXMiLCJhZGQiLCJjb25zb2xlIiwid2FybiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxFQUFFQyxhQUFhLEVBQUVDLFVBQVUsRUFBRUMsU0FBUyxFQUFFQyxNQUFNLFFBQVEsT0FBTztBQUNuRixTQUFTQyxPQUFPLFFBQVEsaUJBQWlCO0FBR3pDLFNBQVNDLFdBQVcsUUFBUSxRQUFRO0FBRXBDLElBQU1DLG1CQUFtQixnQkFBR1AsYUFBYSxDQUFvQyxJQUFJLENBQUM7QUFNbEY7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBRFNBLE9BQU0sU0FBVVEsb0JBQW9CQSxDQUFBQyxJQUFBLEVBQXdDO0VBQUEsSUFBckNDLFFBQVEsR0FBQUQsSUFBQSxDQUFSQyxRQUFRO0VBQzdDLElBQU1DLE9BQU8sR0FBR04sT0FBTyxDQUFBLENBQWU7RUFDdEMsb0JBQU9KLGFBQWEsQ0FBQ00sbUJBQW1CLENBQUNLLFFBQVEsRUFBRTtJQUFFQyxLQUFLLEVBQUVGO0VBQU8sQ0FBRSxFQUFFRCxRQUFRLENBQUM7QUFDbEY7QUFFQTtBQ1JBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FEVUEsT0FBTSxTQUFVSSxrQkFBa0JBLENBQWlEQyxJQUFhLEVBQUE7RUNSNUYsSUFBSUMsRUFBRTtFRFNSLElBQU1DLEdBQUcsR0FBR2YsVUFBVSxDQUFDSSxXQUFXLENBQUM7RUFDbkMsSUFBTVksZUFBZSxHQUFHaEIsVUFBVSxDQUFDSyxtQkFBbUIsQ0FBQztFQUN2RCxJQUFNWSxTQUFTLEdBQUdmLE1BQU0sQ0FBYyxJQUFJZ0IsR0FBRyxDQUFBLENBQUUsQ0FBQztFQUNoRCxJQUFNVCxPQUFPLEdBQUcsQ0FBQUssRUFBQSxHQUFDQyxHQUFHLEtBQUEsSUFBQSxJQUFIQSxHQUFHLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQUhBLEdBQUcsQ0FBRU4sT0FBbUQsTUFBQSxJQUFBLElBQUFLLEVBQUEsS0FBQSxLQUFBLENBQUEsR0FBQUEsRUFBQSxHQUNuRUUsZUFBc0Q7RUFFNUQsSUFBSSxDQUFDUCxPQUFPLEVBQUU7SUFDWixNQUFNLElBQUlVLEtBQUssQ0FDYiw0RkFBNEYsQ0FDN0Y7RUFDSDtFQUVBLElBQU1DLE9BQU8sR0FBR1gsT0FBTyxDQUFDVyxPQUFPO0VBQy9CLElBQU1DLE9BQU8sR0FBR1osT0FBTyxDQUFDWSxPQUFPO0VBRS9CcEIsU0FBUyxDQUFDLFlBQUs7SUFDYixJQUFJWSxJQUFJLElBQUksRUFBQ0UsR0FBRyxLQUFBLElBQUEsSUFBSEEsR0FBRyxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFIQSxHQUFHLENBQUVOLE9BQU8sQ0FBQSxJQUFJLENBQUNRLFNBQVMsQ0FBQ0ssT0FBTyxDQUFDQyxHQUFHLENBQUNWLElBQUksQ0FBQyxFQUFFO01BQ3pESSxTQUFTLENBQUNLLE9BQU8sQ0FBQ0UsR0FBRyxDQUFDWCxJQUFJLENBQUM7TUFDM0JZLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLG1HQUFtRyxDQUFDO0lBQ25IO0VBQ0YsQ0FBQyxFQUFFLENBQUNiLElBQUksRUFBRUUsR0FBRyxLQUFBLElBQUEsSUFBSEEsR0FBRyxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFIQSxHQUFHLENBQUVOLE9BQU8sQ0FBQyxDQUFDO0VBRXhCLE9BQU87SUFBRU0sR0FBRyxFQUFIQSxHQUFHO0lBQUVOLE9BQU8sRUFBUEEsT0FBTztJQUFFVyxPQUFPLEVBQVBBLE9BQU87SUFBRUMsT0FBTyxFQUFQQTtFQUFPLENBQUU7QUFDM0MiLCJmaWxlIjoiY29tcG9uZW50cy9Gb3JtL3VzZUZvcm1JdGVtQ29udGV4dC5qcyIsInNvdXJjZXNDb250ZW50IjpbbnVsbCwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VGb3JtIH0gZnJvbSAncmVhY3QtaG9vay1mb3JtJztcbmltcG9ydCB7IEZvcm1Db250ZXh0IH0gZnJvbSAnLi9Gb3JtJztcbmNvbnN0IEZhbGxiYWNrRm9ybUNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpO1xuLyoqXG4gKiBMYXppbHkgY3JlYXRlcyBmb3JtIG1ldGhvZHMgb25seSB3aGVuIG1vdW50ZWQuXG4gKlxuICogVXNlIHRoaXMgcHJvdmlkZXIgd2hlbiByZW5kZXJpbmcgZm9ybS1hd2FyZSBjb21wb25lbnRzIG91dHNpZGUgYDxGb3JtPmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBGYWxsYmFja0Zvcm1Qcm92aWRlcih7IGNoaWxkcmVuIH0pIHtcbiAgICBjb25zdCBtZXRob2RzID0gdXNlRm9ybSgpO1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KEZhbGxiYWNrRm9ybUNvbnRleHQuUHJvdmlkZXIsIHsgdmFsdWU6IG1ldGhvZHMgfSwgY2hpbGRyZW4pO1xufVxuLyoqXG4gKiBSZXNvbHZlcyBmb3JtIGNvbnRleHQgZm9yIGEgYDxGb3JtSXRlbT5gLlxuICpcbiAqIFdoZW4gcmVuZGVyZWQgaW5zaWRlIGEgYDxGb3JtPmAsIHRoaXMgaG9vayB1c2VzIHRoZSBjb250ZXh0LXByb3ZpZGVkXG4gKiBgcmVhY3QtaG9vay1mb3JtYCBtZXRob2RzLiBPdGhlcndpc2UgaXQgcmVhZHMgbWV0aG9kcyBmcm9tXG4gKiB7QGxpbmsgRmFsbGJhY2tGb3JtUHJvdmlkZXJ9LCB3aGljaCBjcmVhdGVzIGEgbG9jYWwgYHVzZUZvcm0oKWAgaW5zdGFuY2UuXG4gKlxuICogQSBkZXZlbG9wbWVudC1vbmx5IGNvbnNvbGUgd2FybmluZyBpcyBlbWl0dGVkIChvbmNlIHBlciBmaWVsZCBuYW1lKSB3aGVuXG4gKiBhIGBuYW1lYCBwcm9wIGlzIHNldCBidXQgbm8gcGFyZW50IGA8Rm9ybT5gIGNvbnRleHQgaXMgZm91bmQuXG4gKlxuICogQHRlbXBsYXRlIFRGaWVsZFZhbHVlcyAtIFRoZSBzaGFwZSBvZiB0aGUgZm9ybSB2YWx1ZXMuXG4gKiBAcGFyYW0gbmFtZSAtIFRoZSBmaWVsZCBuYW1lLCB1c2VkIGZvciB0aGUgbWlzc2luZy1jb250ZXh0IHdhcm5pbmcgY2hlY2suXG4gKiBAcmV0dXJucyBBbiBvYmplY3Qgd2l0aCBgY3R4YCAoZm9ybSBjb250ZXh0IG9yIGBudWxsYCksIGBtZXRob2RzYCwgYGNvbnRyb2xgLCBhbmQgYHRyaWdnZXJgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlRm9ybUl0ZW1Db250ZXh0KG5hbWUpIHtcbiAgICB2YXIgX2E7XG4gICAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChGb3JtQ29udGV4dCk7XG4gICAgY29uc3QgZmFsbGJhY2tNZXRob2RzID0gdXNlQ29udGV4dChGYWxsYmFja0Zvcm1Db250ZXh0KTtcbiAgICBjb25zdCB3YXJuZWRSZWYgPSB1c2VSZWYobmV3IFNldCgpKTtcbiAgICBjb25zdCBtZXRob2RzID0gKF9hID0gY3R4ID09PSBudWxsIHx8IGN0eCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3R4Lm1ldGhvZHMpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGZhbGxiYWNrTWV0aG9kcztcbiAgICBpZiAoIW1ldGhvZHMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdbRm9ybUl0ZW1dIE5vIGZvcm0gY29udHJvbCBmb3VuZC4gV3JhcCB3aXRoIDxGb3JtPiBvciBtb3VudCBpbnNpZGUgPEZhbGxiYWNrRm9ybVByb3ZpZGVyPi4nKTtcbiAgICB9XG4gICAgY29uc3QgY29udHJvbCA9IG1ldGhvZHMuY29udHJvbDtcbiAgICBjb25zdCB0cmlnZ2VyID0gbWV0aG9kcy50cmlnZ2VyO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChuYW1lICYmICEoY3R4ID09PSBudWxsIHx8IGN0eCA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3R4Lm1ldGhvZHMpICYmICF3YXJuZWRSZWYuY3VycmVudC5oYXMobmFtZSkpIHtcbiAgICAgICAgICAgIHdhcm5lZFJlZi5jdXJyZW50LmFkZChuYW1lKTtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybignW0Zvcm1JdGVtXSBgbmFtZWAgcHJvcCBpcyBzZXQgYnV0IG5vIGZvcm0gY29udHJvbCBmb3VuZC4gV3JhcCBGb3JtSXRlbSBpbnNpZGUgYSA8Rm9ybT4gY29tcG9uZW50LicpO1xuICAgICAgICB9XG4gICAgfSwgW25hbWUsIGN0eCA9PT0gbnVsbCB8fCBjdHggPT09IHZvaWQgMCA/IHZvaWQgMCA6IGN0eC5tZXRob2RzXSk7XG4gICAgcmV0dXJuIHsgY3R4LCBtZXRob2RzLCBjb250cm9sLCB0cmlnZ2VyIH07XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { Control, FieldPath, FieldValues, UseFormReturn } from 'react-hook-form';
|
|
2
|
+
import type { FormItemProps } from './interface';
|
|
3
|
+
/**
|
|
4
|
+
* Return type of {@link useFormItemWatch}.
|
|
5
|
+
*
|
|
6
|
+
* @template TFieldValues - The shape of the form values.
|
|
7
|
+
*/
|
|
8
|
+
interface UseFormItemWatchResult<TFieldValues extends FieldValues> {
|
|
9
|
+
/** Current snapshot of all form values. */
|
|
10
|
+
allValues: TFieldValues;
|
|
11
|
+
/** Watched dependency values (array when multiple, single value otherwise). */
|
|
12
|
+
depValues: unknown;
|
|
13
|
+
/** Whether the FormItem should render based on `shouldUpdate` evaluation. */
|
|
14
|
+
shouldRender: boolean;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Arguments for {@link useFormItemWatch}.
|
|
18
|
+
*
|
|
19
|
+
* @template TFieldValues - The shape of the form values.
|
|
20
|
+
*/
|
|
21
|
+
interface UseFormItemWatchArgs<TFieldValues extends FieldValues> {
|
|
22
|
+
/** The `react-hook-form` `Control` instance. */
|
|
23
|
+
control: Control<TFieldValues>;
|
|
24
|
+
/** The `react-hook-form` methods instance. */
|
|
25
|
+
methods: UseFormReturn<TFieldValues>;
|
|
26
|
+
/** Field paths that trigger re-validation when their values change. */
|
|
27
|
+
dependencies?: FormItemProps<TFieldValues>['dependencies'];
|
|
28
|
+
/** Additional field paths to watch for re-render. */
|
|
29
|
+
watchNames?: FormItemProps<TFieldValues>['watchNames'];
|
|
30
|
+
/** Controls when the FormItem re-renders. */
|
|
31
|
+
shouldUpdate?: FormItemProps<TFieldValues>['shouldUpdate'];
|
|
32
|
+
/** The field path for this FormItem. */
|
|
33
|
+
name?: FieldPath<TFieldValues>;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Consolidates the three `useWatch` subscriptions (dependencies, all values,
|
|
37
|
+
* and named watches) along with `allValues` derivation and `shouldRender`
|
|
38
|
+
* gating into a single hook.
|
|
39
|
+
*
|
|
40
|
+
* This hook manages:
|
|
41
|
+
* 1. Watching dependency fields for cross-field re-validation.
|
|
42
|
+
* 2. Watching all values when `shouldUpdate` requires a full-form comparison.
|
|
43
|
+
* 3. Watching named fields specified via `watchNames`.
|
|
44
|
+
* 4. Computing `shouldRender` based on the `shouldUpdate` prop.
|
|
45
|
+
*
|
|
46
|
+
* @template TFieldValues - The shape of the form values.
|
|
47
|
+
* @param args - {@link UseFormItemWatchArgs}
|
|
48
|
+
* @returns {@link UseFormItemWatchResult} containing current values and render gate.
|
|
49
|
+
*/
|
|
50
|
+
export declare function useFormItemWatch<TFieldValues extends FieldValues = FieldValues>({ control, methods, dependencies, watchNames, shouldUpdate, name, }: UseFormItemWatchArgs<TFieldValues>): UseFormItemWatchResult<TFieldValues>;
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { useMemo } from 'react';
|
|
2
|
+
import { useWatch } from 'react-hook-form';
|
|
3
|
+
import usePrevious from '../usePrevious';
|
|
4
|
+
// Module-level constant to avoid recreating empty array on each render.
|
|
5
|
+
var EMPTY_NAMES = [];
|
|
6
|
+
/**
|
|
7
|
+
* Consolidates the three `useWatch` subscriptions (dependencies, all values,
|
|
8
|
+
* and named watches) along with `allValues` derivation and `shouldRender`
|
|
9
|
+
* gating into a single hook.
|
|
10
|
+
*
|
|
11
|
+
* This hook manages:
|
|
12
|
+
* 1. Watching dependency fields for cross-field re-validation.
|
|
13
|
+
* 2. Watching all values when `shouldUpdate` requires a full-form comparison.
|
|
14
|
+
* 3. Watching named fields specified via `watchNames`.
|
|
15
|
+
* 4. Computing `shouldRender` based on the `shouldUpdate` prop.
|
|
16
|
+
*
|
|
17
|
+
* @template TFieldValues - The shape of the form values.
|
|
18
|
+
* @param args - {@link UseFormItemWatchArgs}
|
|
19
|
+
* @returns {@link UseFormItemWatchResult} containing current values and render gate.
|
|
20
|
+
*/
|
|
21
|
+
export function useFormItemWatch(_ref) {
|
|
22
|
+
var control = _ref.control,
|
|
23
|
+
methods = _ref.methods,
|
|
24
|
+
dependencies = _ref.dependencies,
|
|
25
|
+
watchNames = _ref.watchNames,
|
|
26
|
+
shouldUpdate = _ref.shouldUpdate,
|
|
27
|
+
name = _ref.name;
|
|
28
|
+
var shouldWatchAllValues = shouldUpdate === true || typeof shouldUpdate === 'function';
|
|
29
|
+
var depNames = (dependencies === null || dependencies === void 0 ? void 0 : dependencies.length) ? dependencies : EMPTY_NAMES;
|
|
30
|
+
var shouldWatchDeps = !!(name && depNames.length);
|
|
31
|
+
var watchNamesList = (watchNames === null || watchNames === void 0 ? void 0 : watchNames.length) ? watchNames : EMPTY_NAMES;
|
|
32
|
+
var shouldWatchNames = !!(watchNames === null || watchNames === void 0 ? void 0 : watchNames.length);
|
|
33
|
+
var depValues = useWatch({
|
|
34
|
+
control: control,
|
|
35
|
+
name: depNames,
|
|
36
|
+
disabled: !shouldWatchDeps
|
|
37
|
+
});
|
|
38
|
+
var watchedAllValues = useWatch({
|
|
39
|
+
control: control,
|
|
40
|
+
disabled: !shouldWatchAllValues
|
|
41
|
+
});
|
|
42
|
+
var watchedNamesValues = useWatch({
|
|
43
|
+
control: control,
|
|
44
|
+
name: watchNamesList,
|
|
45
|
+
disabled: !shouldWatchNames
|
|
46
|
+
});
|
|
47
|
+
var allValues = useMemo(function () {
|
|
48
|
+
var getValues = methods.getValues;
|
|
49
|
+
if (!getValues) return {};
|
|
50
|
+
if (shouldWatchAllValues) return watchedAllValues !== null && watchedAllValues !== void 0 ? watchedAllValues : getValues();
|
|
51
|
+
return getValues();
|
|
52
|
+
}, [methods, shouldWatchAllValues, watchedAllValues,
|
|
53
|
+
// Intentionally unused in useMemo body: this dependency forces `allValues`
|
|
54
|
+
// to recompute via methods.getValues() when watched names change while
|
|
55
|
+
// `shouldWatchAllValues` is false.
|
|
56
|
+
watchedNamesValues]);
|
|
57
|
+
var prevValues = usePrevious(allValues);
|
|
58
|
+
var shouldRender = useMemo(function () {
|
|
59
|
+
if (!shouldUpdate || shouldUpdate === true) return true;
|
|
60
|
+
if (prevValues === undefined) return true;
|
|
61
|
+
return shouldUpdate(prevValues, allValues);
|
|
62
|
+
}, [allValues, prevValues, shouldUpdate]);
|
|
63
|
+
return {
|
|
64
|
+
allValues: allValues,
|
|
65
|
+
depValues: depValues,
|
|
66
|
+
shouldRender: shouldRender
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvRm9ybS91c2VGb3JtSXRlbVdhdGNoLnRzIiwiY29tcG9uZW50cy9Gb3JtL3VzZUZvcm1JdGVtV2F0Y2guanMiXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZVdhdGNoIiwidXNlUHJldmlvdXMiLCJFTVBUWV9OQU1FUyIsInVzZUZvcm1JdGVtV2F0Y2giLCJfcmVmIiwiY29udHJvbCIsIm1ldGhvZHMiLCJkZXBlbmRlbmNpZXMiLCJ3YXRjaE5hbWVzIiwic2hvdWxkVXBkYXRlIiwibmFtZSIsInNob3VsZFdhdGNoQWxsVmFsdWVzIiwiZGVwTmFtZXMiLCJsZW5ndGgiLCJzaG91bGRXYXRjaERlcHMiLCJ3YXRjaE5hbWVzTGlzdCIsInNob3VsZFdhdGNoTmFtZXMiLCJkZXBWYWx1ZXMiLCJkaXNhYmxlZCIsIndhdGNoZWRBbGxWYWx1ZXMiLCJ3YXRjaGVkTmFtZXNWYWx1ZXMiLCJhbGxWYWx1ZXMiLCJnZXRWYWx1ZXMiLCJwcmV2VmFsdWVzIiwic2hvdWxkUmVuZGVyIiwidW5kZWZpbmVkIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxPQUFPLFFBQVEsT0FBTztBQUMvQixTQUFTQyxRQUFRLFFBQVEsaUJBQWlCO0FBQzFDLE9BQU9DLFdBQVcsTUFBTSxnQkFBZ0I7QUFzQ3hDO0FBQ0EsSUFBTUMsV0FBVyxHQUFZLEVBQUU7QUFFL0I7QUNyQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBRHVDQSxPQUFNLFNBQVVDLGdCQUFnQkEsQ0FBQUMsSUFBQSxFQU9LO0VBQUEsSUFObkNDLE9BQU8sR0FBQUQsSUFBQSxDQUFQQyxPQUFPO0lBQ1BDLE9BQU8sR0FBQUYsSUFBQSxDQUFQRSxPQUFPO0lBQ1BDLFlBQVksR0FBQUgsSUFBQSxDQUFaRyxZQUFZO0lBQ1pDLFVBQVUsR0FBQUosSUFBQSxDQUFWSSxVQUFVO0lBQ1ZDLFlBQVksR0FBQUwsSUFBQSxDQUFaSyxZQUFZO0lBQ1pDLElBQUksR0FBQU4sSUFBQSxDQUFKTSxJQUFJO0VBRUosSUFBTUMsb0JBQW9CLEdBQUdGLFlBQVksS0FBSyxJQUFJLElBQUksT0FBT0EsWUFBWSxLQUFLLFVBQVU7RUFDeEYsSUFBTUcsUUFBUSxHQUFJLENBQUFMLFlBQVksS0FBQSxJQUFBLElBQVpBLFlBQVksS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBWkEsWUFBWSxDQUFFTSxNQUFNLElBQUdOLFlBQVksR0FBR0wsV0FBeUM7RUFDakcsSUFBTVksZUFBZSxHQUFHLENBQUMsRUFBRUosSUFBSSxJQUFJRSxRQUFRLENBQUNDLE1BQU0sQ0FBQztFQUNuRCxJQUFNRSxjQUFjLEdBQUksQ0FBQVAsVUFBVSxLQUFBLElBQUEsSUFBVkEsVUFBVSxLQUFBLEtBQUEsQ0FBQSxHQUFBLEtBQUEsQ0FBQSxHQUFWQSxVQUFVLENBQUVLLE1BQU0sSUFBR0wsVUFBVSxHQUFHTixXQUF5QztFQUNuRyxJQUFNYyxnQkFBZ0IsR0FBRyxDQUFDLEVBQUNSLFVBQVUsS0FBQSxJQUFBLElBQVZBLFVBQVUsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBVkEsVUFBVSxDQUFFSyxNQUFNLENBQUE7RUFFN0MsSUFBTUksU0FBUyxHQUFHakIsUUFBUSxDQUFDO0lBQUVLLE9BQU8sRUFBUEEsT0FBTztJQUFFSyxJQUFJLEVBQUVFLFFBQVE7SUFBRU0sUUFBUSxFQUFFLENBQUNKO0VBQWUsQ0FBRSxDQUFDO0VBQ25GLElBQU1LLGdCQUFnQixHQUFHbkIsUUFBUSxDQUFDO0lBQUVLLE9BQU8sRUFBUEEsT0FBTztJQUFFYSxRQUFRLEVBQUUsQ0FBQ1A7RUFBb0IsQ0FBRSxDQUFDO0VBQy9FLElBQU1TLGtCQUFrQixHQUFHcEIsUUFBUSxDQUFDO0lBQ2xDSyxPQUFPLEVBQVBBLE9BQU87SUFDUEssSUFBSSxFQUFFSyxjQUFjO0lBQ3BCRyxRQUFRLEVBQUUsQ0FBQ0Y7RUM3Q1gsQ0Q4Q0QsQ0FBQztFQUVGLElBQU1LLFNBQVMsR0FBR3RCLE9BQU8sQ0FBQyxZQUFLO0lBQzdCLElBQU11QixTQUFTLEdBQUdoQixPQUFPLENBQUNnQixTQUFTO0lBQ25DLElBQUksQ0FBQ0EsU0FBUyxFQUFFLE9BQU8sQ0FBQSxDQUFrQjtJQUN6QyxJQUFJWCxvQkFBb0IsRUFBRSxPQUFRUSxnQkFBZ0IsS0FBQSxJQUFBLElBQWhCQSxnQkFBZ0IsS0FBQSxLQUFBLENBQUEsR0FBaEJBLGdCQUFnQixHQUFJRyxTQUFTLENBQUEsQ0FBRTtJQUNqRSxPQUFPQSxTQUFTLENBQUEsQ0FBRTtFQUNwQixDQUFDLEVBQUUsQ0FDRGhCLE9BQU8sRUFDUEssb0JBQW9CLEVBQ3BCUSxnQkFBZ0I7RUFDaEI7RUFDQTtFQUNBO0VBQ0FDLGtCQUFrQixDQUNuQixDQUFDO0VBRUYsSUFBTUcsVUFBVSxHQUFHdEIsV0FBVyxDQUFDb0IsU0FBUyxDQUFDO0VBRXpDLElBQU1HLFlBQVksR0FBR3pCLE9BQU8sQ0FBQyxZQUFLO0lBQ2hDLElBQUksQ0FBQ1UsWUFBWSxJQUFJQSxZQUFZLEtBQUssSUFBSSxFQUFFLE9BQU8sSUFBSTtJQUN2RCxJQUFJYyxVQUFVLEtBQUtFLFNBQVMsRUFBRSxPQUFPLElBQUk7SUFDekMsT0FBT2hCLFlBQVksQ0FBQ2MsVUFBVSxFQUFFRixTQUFTLENBQUM7RUFDNUMsQ0FBQyxFQUFFLENBQUNBLFNBQVMsRUFBRUUsVUFBVSxFQUFFZCxZQUFZLENBQUMsQ0FBQztFQUV6QyxPQUFPO0lBQUVZLFNBQVMsRUFBVEEsU0FBUztJQUFFSixTQUFTLEVBQVRBLFNBQVM7SUFBRU8sWUFBWSxFQUFaQTtFQUFZLENBQUU7QUFDL0MiLCJmaWxlIjoiY29tcG9uZW50cy9Gb3JtL3VzZUZvcm1JdGVtV2F0Y2guanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VXYXRjaCB9IGZyb20gJ3JlYWN0LWhvb2stZm9ybSc7XG5pbXBvcnQgdXNlUHJldmlvdXMgZnJvbSAnLi4vdXNlUHJldmlvdXMnO1xuLy8gTW9kdWxlLWxldmVsIGNvbnN0YW50IHRvIGF2b2lkIHJlY3JlYXRpbmcgZW1wdHkgYXJyYXkgb24gZWFjaCByZW5kZXIuXG5jb25zdCBFTVBUWV9OQU1FUyA9IFtdO1xuLyoqXG4gKiBDb25zb2xpZGF0ZXMgdGhlIHRocmVlIGB1c2VXYXRjaGAgc3Vic2NyaXB0aW9ucyAoZGVwZW5kZW5jaWVzLCBhbGwgdmFsdWVzLFxuICogYW5kIG5hbWVkIHdhdGNoZXMpIGFsb25nIHdpdGggYGFsbFZhbHVlc2AgZGVyaXZhdGlvbiBhbmQgYHNob3VsZFJlbmRlcmBcbiAqIGdhdGluZyBpbnRvIGEgc2luZ2xlIGhvb2suXG4gKlxuICogVGhpcyBob29rIG1hbmFnZXM6XG4gKiAxLiBXYXRjaGluZyBkZXBlbmRlbmN5IGZpZWxkcyBmb3IgY3Jvc3MtZmllbGQgcmUtdmFsaWRhdGlvbi5cbiAqIDIuIFdhdGNoaW5nIGFsbCB2YWx1ZXMgd2hlbiBgc2hvdWxkVXBkYXRlYCByZXF1aXJlcyBhIGZ1bGwtZm9ybSBjb21wYXJpc29uLlxuICogMy4gV2F0Y2hpbmcgbmFtZWQgZmllbGRzIHNwZWNpZmllZCB2aWEgYHdhdGNoTmFtZXNgLlxuICogNC4gQ29tcHV0aW5nIGBzaG91bGRSZW5kZXJgIGJhc2VkIG9uIHRoZSBgc2hvdWxkVXBkYXRlYCBwcm9wLlxuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgc2hhcGUgb2YgdGhlIGZvcm0gdmFsdWVzLlxuICogQHBhcmFtIGFyZ3MgLSB7QGxpbmsgVXNlRm9ybUl0ZW1XYXRjaEFyZ3N9XG4gKiBAcmV0dXJucyB7QGxpbmsgVXNlRm9ybUl0ZW1XYXRjaFJlc3VsdH0gY29udGFpbmluZyBjdXJyZW50IHZhbHVlcyBhbmQgcmVuZGVyIGdhdGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VGb3JtSXRlbVdhdGNoKHsgY29udHJvbCwgbWV0aG9kcywgZGVwZW5kZW5jaWVzLCB3YXRjaE5hbWVzLCBzaG91bGRVcGRhdGUsIG5hbWUsIH0pIHtcbiAgICBjb25zdCBzaG91bGRXYXRjaEFsbFZhbHVlcyA9IHNob3VsZFVwZGF0ZSA9PT0gdHJ1ZSB8fCB0eXBlb2Ygc2hvdWxkVXBkYXRlID09PSAnZnVuY3Rpb24nO1xuICAgIGNvbnN0IGRlcE5hbWVzID0gKChkZXBlbmRlbmNpZXMgPT09IG51bGwgfHwgZGVwZW5kZW5jaWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBkZXBlbmRlbmNpZXMubGVuZ3RoKSA/IGRlcGVuZGVuY2llcyA6IEVNUFRZX05BTUVTKTtcbiAgICBjb25zdCBzaG91bGRXYXRjaERlcHMgPSAhIShuYW1lICYmIGRlcE5hbWVzLmxlbmd0aCk7XG4gICAgY29uc3Qgd2F0Y2hOYW1lc0xpc3QgPSAoKHdhdGNoTmFtZXMgPT09IG51bGwgfHwgd2F0Y2hOYW1lcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogd2F0Y2hOYW1lcy5sZW5ndGgpID8gd2F0Y2hOYW1lcyA6IEVNUFRZX05BTUVTKTtcbiAgICBjb25zdCBzaG91bGRXYXRjaE5hbWVzID0gISEod2F0Y2hOYW1lcyA9PT0gbnVsbCB8fCB3YXRjaE5hbWVzID09PSB2b2lkIDAgPyB2b2lkIDAgOiB3YXRjaE5hbWVzLmxlbmd0aCk7XG4gICAgY29uc3QgZGVwVmFsdWVzID0gdXNlV2F0Y2goeyBjb250cm9sLCBuYW1lOiBkZXBOYW1lcywgZGlzYWJsZWQ6ICFzaG91bGRXYXRjaERlcHMgfSk7XG4gICAgY29uc3Qgd2F0Y2hlZEFsbFZhbHVlcyA9IHVzZVdhdGNoKHsgY29udHJvbCwgZGlzYWJsZWQ6ICFzaG91bGRXYXRjaEFsbFZhbHVlcyB9KTtcbiAgICBjb25zdCB3YXRjaGVkTmFtZXNWYWx1ZXMgPSB1c2VXYXRjaCh7XG4gICAgICAgIGNvbnRyb2wsXG4gICAgICAgIG5hbWU6IHdhdGNoTmFtZXNMaXN0LFxuICAgICAgICBkaXNhYmxlZDogIXNob3VsZFdhdGNoTmFtZXMsXG4gICAgfSk7XG4gICAgY29uc3QgYWxsVmFsdWVzID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIGNvbnN0IGdldFZhbHVlcyA9IG1ldGhvZHMuZ2V0VmFsdWVzO1xuICAgICAgICBpZiAoIWdldFZhbHVlcylcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgaWYgKHNob3VsZFdhdGNoQWxsVmFsdWVzKVxuICAgICAgICAgICAgcmV0dXJuICh3YXRjaGVkQWxsVmFsdWVzICE9PSBudWxsICYmIHdhdGNoZWRBbGxWYWx1ZXMgIT09IHZvaWQgMCA/IHdhdGNoZWRBbGxWYWx1ZXMgOiBnZXRWYWx1ZXMoKSk7XG4gICAgICAgIHJldHVybiBnZXRWYWx1ZXMoKTtcbiAgICB9LCBbXG4gICAgICAgIG1ldGhvZHMsXG4gICAgICAgIHNob3VsZFdhdGNoQWxsVmFsdWVzLFxuICAgICAgICB3YXRjaGVkQWxsVmFsdWVzLFxuICAgICAgICAvLyBJbnRlbnRpb25hbGx5IHVudXNlZCBpbiB1c2VNZW1vIGJvZHk6IHRoaXMgZGVwZW5kZW5jeSBmb3JjZXMgYGFsbFZhbHVlc2BcbiAgICAgICAgLy8gdG8gcmVjb21wdXRlIHZpYSBtZXRob2RzLmdldFZhbHVlcygpIHdoZW4gd2F0Y2hlZCBuYW1lcyBjaGFuZ2Ugd2hpbGVcbiAgICAgICAgLy8gYHNob3VsZFdhdGNoQWxsVmFsdWVzYCBpcyBmYWxzZS5cbiAgICAgICAgd2F0Y2hlZE5hbWVzVmFsdWVzLFxuICAgIF0pO1xuICAgIGNvbnN0IHByZXZWYWx1ZXMgPSB1c2VQcmV2aW91cyhhbGxWYWx1ZXMpO1xuICAgIGNvbnN0IHNob3VsZFJlbmRlciA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICBpZiAoIXNob3VsZFVwZGF0ZSB8fCBzaG91bGRVcGRhdGUgPT09IHRydWUpXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgaWYgKHByZXZWYWx1ZXMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICByZXR1cm4gc2hvdWxkVXBkYXRlKHByZXZWYWx1ZXMsIGFsbFZhbHVlcyk7XG4gICAgfSwgW2FsbFZhbHVlcywgcHJldlZhbHVlcywgc2hvdWxkVXBkYXRlXSk7XG4gICAgcmV0dXJuIHsgYWxsVmFsdWVzLCBkZXBWYWx1ZXMsIHNob3VsZFJlbmRlciB9O1xufSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { FieldPath, FieldValues } from 'react-hook-form';
|
|
2
|
+
import type { FormItemProps } from './interface';
|
|
3
|
+
/**
|
|
4
|
+
* Arguments for {@link useValidationTrigger}.
|
|
5
|
+
*
|
|
6
|
+
* @template TFieldValues - The shape of the form values.
|
|
7
|
+
*/
|
|
8
|
+
interface UseValidationTriggerArgs<TFieldValues extends FieldValues> {
|
|
9
|
+
/** The field path to validate. When `undefined`, validation is skipped. */
|
|
10
|
+
name?: FieldPath<TFieldValues>;
|
|
11
|
+
/** The `trigger` function from `react-hook-form` for imperative validation. */
|
|
12
|
+
trigger: (name: FieldPath<TFieldValues>) => Promise<boolean>;
|
|
13
|
+
/** Event(s) that should trigger validation (`'onChange'`, `'onBlur'`, or both). */
|
|
14
|
+
validateTrigger?: FormItemProps<TFieldValues>['validateTrigger'];
|
|
15
|
+
/** Debounce delay in milliseconds for triggered validation. */
|
|
16
|
+
validateDebounce?: number;
|
|
17
|
+
/** Field paths whose changes should re-trigger this field's validation. */
|
|
18
|
+
dependencies?: FormItemProps<TFieldValues>['dependencies'];
|
|
19
|
+
/** Current watched dependency values used to detect changes. */
|
|
20
|
+
depValues: unknown;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Encapsulates validation trigger logic for a single form field.
|
|
24
|
+
*
|
|
25
|
+
* Responsibilities:
|
|
26
|
+
* - Normalizes the `validateTrigger` prop into an array of trigger modes.
|
|
27
|
+
* - Provides a `withTrigger` wrapper that composes event handlers (onChange/onBlur)
|
|
28
|
+
* with conditional validation calls.
|
|
29
|
+
* - Applies optional debounce to validation triggers.
|
|
30
|
+
* - Re-validates the field when dependency values change (cross-field validation).
|
|
31
|
+
* - Cleans up debounce timers on unmount.
|
|
32
|
+
*
|
|
33
|
+
* @template TFieldValues - The shape of the form values.
|
|
34
|
+
* @param args - {@link UseValidationTriggerArgs}
|
|
35
|
+
* @returns An object containing the `withTrigger` function.
|
|
36
|
+
*/
|
|
37
|
+
export declare function useValidationTrigger<TFieldValues extends FieldValues = FieldValues>({ name, trigger, validateTrigger, validateDebounce, dependencies, depValues, }: UseValidationTriggerArgs<TFieldValues>): {
|
|
38
|
+
withTrigger: (mode: "onBlur" | "onChange", fn?: ((...args: unknown[]) => void) | undefined) => (...args: unknown[]) => void;
|
|
39
|
+
};
|
|
40
|
+
export {};
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
2
|
+
import useMemoizedFn from '../useMemoizedFn';
|
|
3
|
+
import { DEBOUNCE_MIN } from './constants';
|
|
4
|
+
import { normalizeValidateTrigger, shallowEqualArray } from './helper';
|
|
5
|
+
/**
|
|
6
|
+
* Encapsulates validation trigger logic for a single form field.
|
|
7
|
+
*
|
|
8
|
+
* Responsibilities:
|
|
9
|
+
* - Normalizes the `validateTrigger` prop into an array of trigger modes.
|
|
10
|
+
* - Provides a `withTrigger` wrapper that composes event handlers (onChange/onBlur)
|
|
11
|
+
* with conditional validation calls.
|
|
12
|
+
* - Applies optional debounce to validation triggers.
|
|
13
|
+
* - Re-validates the field when dependency values change (cross-field validation).
|
|
14
|
+
* - Cleans up debounce timers on unmount.
|
|
15
|
+
*
|
|
16
|
+
* @template TFieldValues - The shape of the form values.
|
|
17
|
+
* @param args - {@link UseValidationTriggerArgs}
|
|
18
|
+
* @returns An object containing the `withTrigger` function.
|
|
19
|
+
*/
|
|
20
|
+
export function useValidationTrigger(_ref) {
|
|
21
|
+
var name = _ref.name,
|
|
22
|
+
trigger = _ref.trigger,
|
|
23
|
+
validateTrigger = _ref.validateTrigger,
|
|
24
|
+
validateDebounce = _ref.validateDebounce,
|
|
25
|
+
dependencies = _ref.dependencies,
|
|
26
|
+
depValues = _ref.depValues;
|
|
27
|
+
var triggerTimerRef = useRef(null);
|
|
28
|
+
var prevDepValuesRef = useRef(null);
|
|
29
|
+
var triggerModes = useMemo(function () {
|
|
30
|
+
return normalizeValidateTrigger(validateTrigger);
|
|
31
|
+
}, [validateTrigger]);
|
|
32
|
+
var triggerValidation = useMemoizedFn(function () {
|
|
33
|
+
if (!name) return;
|
|
34
|
+
var run = function run() {
|
|
35
|
+
void trigger(name);
|
|
36
|
+
};
|
|
37
|
+
if (validateDebounce && validateDebounce > DEBOUNCE_MIN) {
|
|
38
|
+
if (triggerTimerRef.current) clearTimeout(triggerTimerRef.current);
|
|
39
|
+
triggerTimerRef.current = setTimeout(run, validateDebounce);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
run();
|
|
43
|
+
});
|
|
44
|
+
useEffect(function () {
|
|
45
|
+
if (!name || !(dependencies === null || dependencies === void 0 ? void 0 : dependencies.length)) return;
|
|
46
|
+
var nextDeps = Array.isArray(depValues) ? depValues : [depValues];
|
|
47
|
+
var prevDeps = prevDepValuesRef.current;
|
|
48
|
+
if (!prevDeps) {
|
|
49
|
+
prevDepValuesRef.current = nextDeps;
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
if (shallowEqualArray(prevDeps, nextDeps)) return;
|
|
53
|
+
prevDepValuesRef.current = nextDeps;
|
|
54
|
+
triggerValidation();
|
|
55
|
+
}, [depValues, dependencies === null || dependencies === void 0 ? void 0 : dependencies.length, name, triggerValidation]);
|
|
56
|
+
useEffect(function () {
|
|
57
|
+
return function () {
|
|
58
|
+
if (triggerTimerRef.current) clearTimeout(triggerTimerRef.current);
|
|
59
|
+
};
|
|
60
|
+
}, []);
|
|
61
|
+
var shouldTrigger = useMemoizedFn(function (mode) {
|
|
62
|
+
return triggerModes.includes(mode);
|
|
63
|
+
});
|
|
64
|
+
var withTrigger = useMemoizedFn(function (mode, fn) {
|
|
65
|
+
return function () {
|
|
66
|
+
fn === null || fn === void 0 ? void 0 : fn.apply(void 0, arguments);
|
|
67
|
+
if (name && shouldTrigger(mode)) triggerValidation();
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
return {
|
|
71
|
+
withTrigger: withTrigger
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvRm9ybS91c2VWYWxpZGF0aW9uVHJpZ2dlci50cyIsImNvbXBvbmVudHMvRm9ybS91c2VWYWxpZGF0aW9uVHJpZ2dlci5qcyJdLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlTWVtb2l6ZWRGbiIsIkRFQk9VTkNFX01JTiIsIm5vcm1hbGl6ZVZhbGlkYXRlVHJpZ2dlciIsInNoYWxsb3dFcXVhbEFycmF5IiwidXNlVmFsaWRhdGlvblRyaWdnZXIiLCJfcmVmIiwibmFtZSIsInRyaWdnZXIiLCJ2YWxpZGF0ZVRyaWdnZXIiLCJ2YWxpZGF0ZURlYm91bmNlIiwiZGVwZW5kZW5jaWVzIiwiZGVwVmFsdWVzIiwidHJpZ2dlclRpbWVyUmVmIiwicHJldkRlcFZhbHVlc1JlZiIsInRyaWdnZXJNb2RlcyIsInRyaWdnZXJWYWxpZGF0aW9uIiwicnVuIiwiY3VycmVudCIsImNsZWFyVGltZW91dCIsInNldFRpbWVvdXQiLCJsZW5ndGgiLCJuZXh0RGVwcyIsIkFycmF5IiwiaXNBcnJheSIsInByZXZEZXBzIiwic2hvdWxkVHJpZ2dlciIsIm1vZGUiLCJpbmNsdWRlcyIsIndpdGhUcmlnZ2VyIiwiZm4iLCJhcHBseSIsImFyZ3VtZW50cyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ2xELE9BQU9DLGFBQWEsTUFBTSxrQkFBa0I7QUFFNUMsU0FBU0MsWUFBWSxRQUFzQyxhQUFhO0FBQ3hFLFNBQVNDLHdCQUF3QixFQUFFQyxpQkFBaUIsUUFBUSxVQUFVO0FBdUJ0RTtBQ3RCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FEd0JBLE9BQU0sU0FBVUMsb0JBQW9CQSxDQUFBQyxJQUFBLEVBT0s7RUFBQSxJQU52Q0MsSUFBSSxHQUFBRCxJQUFBLENBQUpDLElBQUk7SUFDSkMsT0FBTyxHQUFBRixJQUFBLENBQVBFLE9BQU87SUFDUEMsZUFBZSxHQUFBSCxJQUFBLENBQWZHLGVBQWU7SUFDZkMsZ0JBQWdCLEdBQUFKLElBQUEsQ0FBaEJJLGdCQUFnQjtJQUNoQkMsWUFBWSxHQUFBTCxJQUFBLENBQVpLLFlBQVk7SUFDWkMsU0FBUyxHQUFBTixJQUFBLENBQVRNLFNBQVM7RUFFVCxJQUFNQyxlQUFlLEdBQUdiLE1BQU0sQ0FBdUMsSUFBSSxDQUFDO0VBQzFFLElBQU1jLGdCQUFnQixHQUFHZCxNQUFNLENBQW1CLElBQUksQ0FBQztFQUV2RCxJQUFNZSxZQUFZLEdBQUdoQixPQUFPLENBQzFCO0lBQUEsT0FBTUksd0JBQXdCLENBQUNNLGVBQWUsQ0FBQztFQUFBLEdBQy9DLENBQUNBLGVBQWUsQ0FBQyxDQUNsQjtFQUVELElBQU1PLGlCQUFpQixHQUFHZixhQUFhLENBQUMsWUFBSztJQUMzQyxJQUFJLENBQUNNLElBQUksRUFBRTtJQUNYLElBQU1VLEdBQUcsR0FBRyxTQUFOQSxHQUFHQSxDQUFBLEVBQVE7TUFDZixLQUFLVCxPQUFPLENBQUNELElBQUksQ0FBQztJQUNwQixDQUFDO0lBQ0QsSUFBSUcsZ0JBQWdCLElBQUlBLGdCQUFnQixHQUFHUixZQUFZLEVBQUU7TUFDdkQsSUFBSVcsZUFBZSxDQUFDSyxPQUFPLEVBQUVDLFlBQVksQ0FBQ04sZUFBZSxDQUFDSyxPQUFPLENBQUM7TUFDbEVMLGVBQWUsQ0FBQ0ssT0FBTyxHQUFHRSxVQUFVLENBQUNILEdBQUcsRUFBRVAsZ0JBQWdCLENBQUM7TUFDM0Q7SUFDRjtJQUNBTyxHQUFHLENBQUEsQ0FBRTtFQUNQLENBQUMsQ0FBQztFQUVGbkIsU0FBUyxDQUFDLFlBQUs7SUFDYixJQUFJLENBQUNTLElBQUksSUFBSSxFQUFDSSxZQUFZLEtBQUEsSUFBQSxJQUFaQSxZQUFZLEtBQUEsS0FBQSxDQUFBLEdBQUEsS0FBQSxDQUFBLEdBQVpBLFlBQVksQ0FBRVUsTUFBTSxDQUFBLEVBQUU7SUFDcEMsSUFBTUMsUUFBUSxHQUFHQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ1osU0FBUyxDQUFDLEdBQUdBLFNBQVMsR0FBRyxDQUFDQSxTQUFTLENBQUM7SUFDbkUsSUFBTWEsUUFBUSxHQUFHWCxnQkFBZ0IsQ0FBQ0ksT0FBTztJQUN6QyxJQUFJLENBQUNPLFFBQVEsRUFBRTtNQUNiWCxnQkFBZ0IsQ0FBQ0ksT0FBTyxHQUFHSSxRQUFRO01BQ25DO0lBQ0Y7SUFDQSxJQUFJbEIsaUJBQWlCLENBQUNxQixRQUFRLEVBQUVILFFBQVEsQ0FBQyxFQUFFO0lBQzNDUixnQkFBZ0IsQ0FBQ0ksT0FBTyxHQUFHSSxRQUFRO0lBQ25DTixpQkFBaUIsQ0FBQSxDQUFFO0VBQ3JCLENBQUMsRUFBRSxDQUFDSixTQUFTLEVBQUVELFlBQVksS0FBQSxJQUFBLElBQVpBLFlBQVksS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBWkEsWUFBWSxDQUFFVSxNQUFNLEVBQUVkLElBQUksRUFBRVMsaUJBQWlCLENBQUMsQ0FBQztFQUU5RGxCLFNBQVMsQ0FBQztJQUFBLE9BQU0sWUFBSztNQUNuQixJQUFJZSxlQUFlLENBQUNLLE9BQU8sRUFBRUMsWUFBWSxDQUFDTixlQUFlLENBQUNLLE9BQU8sQ0FBQztJQUNwRSxDQUFDO0VBQUEsR0FBRSxFQUFFLENBQUM7RUFFTixJQUFNUSxhQUFhLEdBQUd6QixhQUFhLENBQ2pDLFVBQUMwQixJQUFpRDtJQUFBLE9BQUtaLFlBQVksQ0FBQ2EsUUFBUSxDQUFDRCxJQUFJLENBQUM7RUFBQSxFQUNuRjtFQUVELElBQU1FLFdBQVcsR0FBRzVCLGFBQWEsQ0FDL0IsVUFBQzBCLElBQWlELEVBQUVHLEVBQWlDO0lBQUEsT0FDbkYsWUFBdUI7TUFDckJBLEVBQUUsS0FBQSxJQUFBLElBQUZBLEVBQUUsS0FBQSxLQUFBLENBQUEsR0FBQSxLQUFBLENBQUEsR0FBRkEsRUFBRSxDQUFBQyxLQUFBLFNBQUFDLFNBQVUsQ0FBQztNQUNiLElBQUl6QixJQUFJLElBQUltQixhQUFhLENBQUNDLElBQUksQ0FBQyxFQUFFWCxpQkFBaUIsQ0FBQSxDQUFFO0lBQ3RELENBQUM7RUFBQSxFQUNKO0VBRUQsT0FBTztJQUFFYSxXQUFXLEVBQVhBO0VBQVcsQ0FBRTtBQUN4QiIsImZpbGUiOiJjb21wb25lbnRzL0Zvcm0vdXNlVmFsaWRhdGlvblRyaWdnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsImltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZU1lbW9pemVkRm4gZnJvbSAnLi4vdXNlTWVtb2l6ZWRGbic7XG5pbXBvcnQgeyBERUJPVU5DRV9NSU4gfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBub3JtYWxpemVWYWxpZGF0ZVRyaWdnZXIsIHNoYWxsb3dFcXVhbEFycmF5IH0gZnJvbSAnLi9oZWxwZXInO1xuLyoqXG4gKiBFbmNhcHN1bGF0ZXMgdmFsaWRhdGlvbiB0cmlnZ2VyIGxvZ2ljIGZvciBhIHNpbmdsZSBmb3JtIGZpZWxkLlxuICpcbiAqIFJlc3BvbnNpYmlsaXRpZXM6XG4gKiAtIE5vcm1hbGl6ZXMgdGhlIGB2YWxpZGF0ZVRyaWdnZXJgIHByb3AgaW50byBhbiBhcnJheSBvZiB0cmlnZ2VyIG1vZGVzLlxuICogLSBQcm92aWRlcyBhIGB3aXRoVHJpZ2dlcmAgd3JhcHBlciB0aGF0IGNvbXBvc2VzIGV2ZW50IGhhbmRsZXJzIChvbkNoYW5nZS9vbkJsdXIpXG4gKiAgIHdpdGggY29uZGl0aW9uYWwgdmFsaWRhdGlvbiBjYWxscy5cbiAqIC0gQXBwbGllcyBvcHRpb25hbCBkZWJvdW5jZSB0byB2YWxpZGF0aW9uIHRyaWdnZXJzLlxuICogLSBSZS12YWxpZGF0ZXMgdGhlIGZpZWxkIHdoZW4gZGVwZW5kZW5jeSB2YWx1ZXMgY2hhbmdlIChjcm9zcy1maWVsZCB2YWxpZGF0aW9uKS5cbiAqIC0gQ2xlYW5zIHVwIGRlYm91bmNlIHRpbWVycyBvbiB1bm1vdW50LlxuICpcbiAqIEB0ZW1wbGF0ZSBURmllbGRWYWx1ZXMgLSBUaGUgc2hhcGUgb2YgdGhlIGZvcm0gdmFsdWVzLlxuICogQHBhcmFtIGFyZ3MgLSB7QGxpbmsgVXNlVmFsaWRhdGlvblRyaWdnZXJBcmdzfVxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGB3aXRoVHJpZ2dlcmAgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VWYWxpZGF0aW9uVHJpZ2dlcih7IG5hbWUsIHRyaWdnZXIsIHZhbGlkYXRlVHJpZ2dlciwgdmFsaWRhdGVEZWJvdW5jZSwgZGVwZW5kZW5jaWVzLCBkZXBWYWx1ZXMsIH0pIHtcbiAgICBjb25zdCB0cmlnZ2VyVGltZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJldkRlcFZhbHVlc1JlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCB0cmlnZ2VyTW9kZXMgPSB1c2VNZW1vKCgpID0+IG5vcm1hbGl6ZVZhbGlkYXRlVHJpZ2dlcih2YWxpZGF0ZVRyaWdnZXIpLCBbdmFsaWRhdGVUcmlnZ2VyXSk7XG4gICAgY29uc3QgdHJpZ2dlclZhbGlkYXRpb24gPSB1c2VNZW1vaXplZEZuKCgpID0+IHtcbiAgICAgICAgaWYgKCFuYW1lKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBydW4gPSAoKSA9PiB7XG4gICAgICAgICAgICB2b2lkIHRyaWdnZXIobmFtZSk7XG4gICAgICAgIH07XG4gICAgICAgIGlmICh2YWxpZGF0ZURlYm91bmNlICYmIHZhbGlkYXRlRGVib3VuY2UgPiBERUJPVU5DRV9NSU4pIHtcbiAgICAgICAgICAgIGlmICh0cmlnZ2VyVGltZXJSZWYuY3VycmVudClcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodHJpZ2dlclRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgdHJpZ2dlclRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KHJ1biwgdmFsaWRhdGVEZWJvdW5jZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgcnVuKCk7XG4gICAgfSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKCFuYW1lIHx8ICEoZGVwZW5kZW5jaWVzID09PSBudWxsIHx8IGRlcGVuZGVuY2llcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVwZW5kZW5jaWVzLmxlbmd0aCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IG5leHREZXBzID0gQXJyYXkuaXNBcnJheShkZXBWYWx1ZXMpID8gZGVwVmFsdWVzIDogW2RlcFZhbHVlc107XG4gICAgICAgIGNvbnN0IHByZXZEZXBzID0gcHJldkRlcFZhbHVlc1JlZi5jdXJyZW50O1xuICAgICAgICBpZiAoIXByZXZEZXBzKSB7XG4gICAgICAgICAgICBwcmV2RGVwVmFsdWVzUmVmLmN1cnJlbnQgPSBuZXh0RGVwcztcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc2hhbGxvd0VxdWFsQXJyYXkocHJldkRlcHMsIG5leHREZXBzKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcHJldkRlcFZhbHVlc1JlZi5jdXJyZW50ID0gbmV4dERlcHM7XG4gICAgICAgIHRyaWdnZXJWYWxpZGF0aW9uKCk7XG4gICAgfSwgW2RlcFZhbHVlcywgZGVwZW5kZW5jaWVzID09PSBudWxsIHx8IGRlcGVuZGVuY2llcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZGVwZW5kZW5jaWVzLmxlbmd0aCwgbmFtZSwgdHJpZ2dlclZhbGlkYXRpb25dKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4gKCkgPT4ge1xuICAgICAgICBpZiAodHJpZ2dlclRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodHJpZ2dlclRpbWVyUmVmLmN1cnJlbnQpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBzaG91bGRUcmlnZ2VyID0gdXNlTWVtb2l6ZWRGbigobW9kZSkgPT4gdHJpZ2dlck1vZGVzLmluY2x1ZGVzKG1vZGUpKTtcbiAgICBjb25zdCB3aXRoVHJpZ2dlciA9IHVzZU1lbW9pemVkRm4oKG1vZGUsIGZuKSA9PiAoLi4uYXJncykgPT4ge1xuICAgICAgICBmbiA9PT0gbnVsbCB8fCBmbiA9PT0gdm9pZCAwID8gdm9pZCAwIDogZm4oLi4uYXJncyk7XG4gICAgICAgIGlmIChuYW1lICYmIHNob3VsZFRyaWdnZXIobW9kZSkpXG4gICAgICAgICAgICB0cmlnZ2VyVmFsaWRhdGlvbigpO1xuICAgIH0pO1xuICAgIHJldHVybiB7IHdpdGhUcmlnZ2VyIH07XG59Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FC, PropsWithChildren } from 'react';
|
|
2
|
+
import type { GridColProps } from './interface';
|
|
3
|
+
export declare const Col: FC<PropsWithChildren<GridColProps>>;
|
|
4
|
+
declare const _default: import("react").NamedExoticComponent<PropsWithChildren<GridColProps>>;
|
|
5
|
+
export default _default;
|