@1money/component-ui 0.0.70 → 0.0.73
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/es/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +3 -2
- package/es/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +2 -2
- package/es/business/Select/Network/NetworkSelect.js +2 -2
- package/es/components/Accordion/Accordion.js +3 -2
- package/es/components/Calendar/Calendar.js +3 -2
- package/es/components/Carousel/Carousel.js +3 -2
- package/es/components/Checkbox/BaseCheckbox.js +3 -2
- package/es/components/Checkbox/Checkbox.js +2 -2
- package/es/components/Checkbox/CheckboxGroup.js +3 -2
- package/es/components/CoachMark/CoachMark.js +3 -2
- package/es/components/Copy/Copy.js +2 -2
- package/es/components/Dialog/Dialog.js +2 -2
- package/es/components/Drawer/Drawer.js +2 -2
- package/es/components/Input/Amount/Amount.js +2 -2
- package/es/components/Input/Input/Input.js +3 -2
- package/es/components/Input/Mask/Mask.js +3 -2
- package/es/components/Input/OTP/OTP.js +3 -2
- package/es/components/Input/Password/Password.js +3 -2
- package/es/components/Input/Search/Search.js +3 -2
- package/es/components/Input/TextArea/TextArea.js +3 -2
- package/es/components/Input/Trade/Trade.js +2 -2
- package/es/components/Input/useAmountInput.js +4 -2
- package/es/components/Input/useSyncRef.js +2 -2
- package/es/components/Navigation/Nav.js +2 -2
- package/es/components/Navigation/Navigation.js +5 -2
- package/es/components/Pagination/Pagination.js +2 -2
- package/es/components/Pagination/usePagination.js +3 -2
- package/es/components/Popconfirm/Popconfirm.js +2 -2
- package/es/components/Portal/Portal.js +2 -2
- package/es/components/ProForm/ProForm.d.ts +10 -2
- package/es/components/ProForm/ProForm.js +60 -24
- package/es/components/ProForm/ProFormDependency.js +4 -1
- package/es/components/ProForm/ProFormGroup.js +2 -2
- package/es/components/ProForm/ProFormItem.js +73 -36
- package/es/components/ProForm/ProFormList.js +3 -2
- package/es/components/ProForm/SchemaForm.d.ts +7 -0
- package/es/components/ProForm/SchemaForm.js +103 -0
- package/es/components/ProForm/Submitter.js +13 -3
- package/es/components/ProForm/context.d.ts +22 -3
- package/es/components/ProForm/context.js +49 -10
- package/es/components/ProForm/core/constants.d.ts +8 -1
- package/es/components/ProForm/core/constants.js +9 -6
- package/es/components/ProForm/core/hooks/useForm.js +174 -320
- package/es/components/ProForm/core/hooks/useFormCore.js +84 -178
- package/es/components/ProForm/core/interface.d.ts +33 -12
- package/es/components/ProForm/core/pathUtils.d.ts +6 -0
- package/es/components/ProForm/core/pathUtils.js +59 -0
- package/es/components/ProForm/core/runRules.d.ts +23 -0
- package/es/components/ProForm/core/runRules.js +233 -0
- package/es/components/ProForm/core/useFormItem.d.ts +10 -1
- package/es/components/ProForm/core/useFormItem.js +105 -61
- package/es/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/es/components/ProForm/fields/createProFormField.js +64 -59
- package/es/components/ProForm/hooks/useFieldRequest.js +7 -5
- package/es/components/ProForm/index.d.ts +11 -4
- package/es/components/ProForm/index.js +7 -2
- package/es/components/ProForm/interface.d.ts +89 -14
- package/es/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DialogForm.js +2 -1
- package/es/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/es/components/ProForm/layouts/DrawerForm.js +2 -1
- package/es/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/es/components/ProForm/layouts/QueryFilter.js +79 -13
- package/es/components/ProForm/layouts/useOverlayForm.js +23 -21
- package/es/components/ProForm/style/ProForm.css +6 -0
- package/es/components/ProForm/utils.d.ts +14 -3
- package/es/components/ProForm/utils.js +73 -70
- package/es/components/ProTable/ProTable.js +3 -2
- package/es/components/ProTable/core/useAwaitableReload.js +3 -2
- package/es/components/ProTable/useFetchData.js +4 -2
- package/es/components/Radio/Radio.js +3 -2
- package/es/components/Radio/RadioGroup.js +3 -2
- package/es/components/ResizeObserver/useResizeObserver.js +2 -2
- package/es/components/Segment/Segment.js +4 -2
- package/es/components/Select/Select.js +3 -2
- package/es/components/Select/SelectCustom.js +2 -2
- package/es/components/Select/useSelectShell.js +3 -2
- package/es/components/Slider/Slider.js +3 -2
- package/es/components/Switch/Switch.js +3 -2
- package/es/components/Table/Table.js +14 -28
- package/es/components/Table/VirtualTable.js +18 -28
- package/es/components/Table/core/columnUtil.d.ts +9 -0
- package/es/components/Table/core/columnUtil.js +34 -0
- package/es/components/Table/core/useTableColumns.d.ts +4 -13
- package/es/components/Table/core/useTableColumns.js +55 -24
- package/es/components/Table/core/useTableDataPipeline.d.ts +11 -16
- package/es/components/Table/core/useTableDataPipeline.js +66 -73
- package/es/components/Table/core/useTableExpand.js +3 -2
- package/es/components/Table/core/useTableSelection.js +7 -4
- package/es/components/Table/core/useTableSetup.js +4 -2
- package/es/components/Table/features/ExpandTrigger.d.ts +9 -3
- package/es/components/Table/features/ExpandTrigger.js +14 -8
- package/es/components/Table/features/FilterTrigger.js +21 -17
- package/es/components/Table/features/SelectionColumn.d.ts +11 -6
- package/es/components/Table/features/SelectionColumn.js +12 -5
- package/es/components/Table/features/SortTrigger.d.ts +4 -2
- package/es/components/Table/features/SortTrigger.js +8 -3
- package/es/components/Table/internal/kernel/Body/MeasureCell.js +2 -2
- package/es/components/Table/internal/kernel/Cell/index.js +2 -2
- package/es/components/Table/internal/kernel/Table.js +3 -3
- package/es/components/Table/internal/kernel/VirtualTable/index.js +2 -2
- package/es/components/Table/internal/kernel/hooks/useRowInfo.js +2 -2
- package/es/components/Table/internal/kernel/selector-context/context.js +3 -3
- package/es/components/Table/renderers/HeaderCell.js +3 -2
- package/es/components/Table/renderers/TableShell.d.ts +13 -0
- package/es/components/Table/renderers/TableShell.js +25 -0
- package/es/components/Table/style/Table.css +3 -0
- package/es/components/Tabs/Tabs.js +4 -2
- package/es/components/Tooltip/Tooltip.js +3 -2
- package/es/components/Tooltip/style/Tooltip.css +1 -0
- package/es/components/Tour/Tour.js +3 -2
- package/es/components/Trigger/Trigger.js +3 -2
- package/es/components/Typography/Typography.js +2 -2
- package/es/components/Typography/useTypographyEnhancements.js +3 -2
- package/es/components/Upload/Upload.js +2 -2
- package/es/components/Upload/UploadFileBar.js +2 -2
- package/es/components/VirtualList/VirtualList.js +3 -2
- package/es/components/VirtualList/hooks/useMobileTouchMove.js +2 -2
- package/es/components/VirtualList/hooks/useScrollTo.js +2 -2
- package/es/index.css +1 -1
- package/es/index.d.ts +2 -2
- package/es/index.js +2 -2
- package/lib/business/Dialog/VerificationDialog/hooks/useOtpVerification.js +9 -8
- package/lib/business/Dialog/VerificationDialog/hooks/useResendCountdown.js +3 -3
- package/lib/business/Select/Network/NetworkSelect.js +3 -3
- package/lib/components/Accordion/Accordion.js +5 -4
- package/lib/components/Calendar/Calendar.js +6 -5
- package/lib/components/Carousel/Carousel.js +5 -4
- package/lib/components/Checkbox/BaseCheckbox.js +5 -4
- package/lib/components/Checkbox/Checkbox.js +3 -3
- package/lib/components/Checkbox/CheckboxGroup.js +7 -6
- package/lib/components/CoachMark/CoachMark.js +7 -6
- package/lib/components/Copy/Copy.js +3 -3
- package/lib/components/Dialog/Dialog.js +6 -6
- package/lib/components/Drawer/Drawer.js +10 -10
- package/lib/components/Input/Amount/Amount.js +6 -5
- package/lib/components/Input/Input/Input.js +7 -6
- package/lib/components/Input/Mask/Mask.js +9 -8
- package/lib/components/Input/OTP/OTP.js +9 -8
- package/lib/components/Input/Password/Password.js +6 -5
- package/lib/components/Input/Search/Search.js +8 -7
- package/lib/components/Input/TextArea/TextArea.js +5 -4
- package/lib/components/Input/Trade/Trade.js +5 -4
- package/lib/components/Input/useAmountInput.js +13 -11
- package/lib/components/Input/useSyncRef.js +4 -3
- package/lib/components/Navigation/Nav.js +3 -3
- package/lib/components/Navigation/Navigation.js +10 -7
- package/lib/components/Pagination/Pagination.js +4 -3
- package/lib/components/Pagination/usePagination.js +7 -6
- package/lib/components/Popconfirm/Popconfirm.js +3 -3
- package/lib/components/Portal/Portal.js +4 -4
- package/lib/components/ProForm/ProForm.d.ts +10 -2
- package/lib/components/ProForm/ProForm.js +66 -30
- package/lib/components/ProForm/ProFormDependency.js +4 -1
- package/lib/components/ProForm/ProFormGroup.js +3 -3
- package/lib/components/ProForm/ProFormItem.js +72 -34
- package/lib/components/ProForm/ProFormList.js +10 -9
- package/lib/components/ProForm/SchemaForm.d.ts +7 -0
- package/lib/components/ProForm/SchemaForm.js +110 -0
- package/lib/components/ProForm/Submitter.js +15 -5
- package/lib/components/ProForm/context.d.ts +22 -3
- package/lib/components/ProForm/context.js +49 -10
- package/lib/components/ProForm/core/constants.d.ts +8 -1
- package/lib/components/ProForm/core/constants.js +10 -7
- package/lib/components/ProForm/core/hooks/useForm.js +181 -327
- package/lib/components/ProForm/core/hooks/useFormCore.js +96 -190
- package/lib/components/ProForm/core/interface.d.ts +33 -12
- package/lib/components/ProForm/core/pathUtils.d.ts +6 -0
- package/lib/components/ProForm/core/pathUtils.js +68 -0
- package/lib/components/ProForm/core/runRules.d.ts +23 -0
- package/lib/components/ProForm/core/runRules.js +242 -0
- package/lib/components/ProForm/core/useFormItem.d.ts +10 -1
- package/lib/components/ProForm/core/useFormItem.js +106 -62
- package/lib/components/ProForm/fields/ProFormDatePicker.js +4 -1
- package/lib/components/ProForm/fields/createProFormField.js +63 -58
- package/lib/components/ProForm/hooks/useFieldRequest.js +9 -7
- package/lib/components/ProForm/index.d.ts +11 -4
- package/lib/components/ProForm/index.js +16 -1
- package/lib/components/ProForm/interface.d.ts +89 -14
- package/lib/components/ProForm/layouts/DialogForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DialogForm.js +2 -1
- package/lib/components/ProForm/layouts/DrawerForm.d.ts +5 -1
- package/lib/components/ProForm/layouts/DrawerForm.js +2 -1
- package/lib/components/ProForm/layouts/QueryFilter.d.ts +5 -2
- package/lib/components/ProForm/layouts/QueryFilter.js +84 -18
- package/lib/components/ProForm/layouts/useOverlayForm.js +27 -27
- package/lib/components/ProForm/style/ProForm.css +6 -0
- package/lib/components/ProForm/utils.d.ts +14 -3
- package/lib/components/ProForm/utils.js +91 -74
- package/lib/components/ProTable/ProTable.js +10 -9
- package/lib/components/ProTable/core/useAwaitableReload.js +6 -5
- package/lib/components/ProTable/useFetchData.js +15 -13
- package/lib/components/Radio/Radio.js +6 -5
- package/lib/components/Radio/RadioGroup.js +5 -4
- package/lib/components/ResizeObserver/useResizeObserver.js +4 -3
- package/lib/components/Segment/Segment.js +7 -5
- package/lib/components/Select/Select.js +23 -22
- package/lib/components/Select/SelectCustom.js +8 -8
- package/lib/components/Select/useSelectShell.js +5 -4
- package/lib/components/Slider/Slider.js +6 -5
- package/lib/components/Switch/Switch.js +5 -4
- package/lib/components/Table/Table.js +13 -27
- package/lib/components/Table/VirtualTable.js +17 -27
- package/lib/components/Table/core/columnUtil.d.ts +9 -0
- package/lib/components/Table/core/columnUtil.js +42 -0
- package/lib/components/Table/core/useTableColumns.d.ts +4 -13
- package/lib/components/Table/core/useTableColumns.js +57 -26
- package/lib/components/Table/core/useTableDataPipeline.d.ts +11 -16
- package/lib/components/Table/core/useTableDataPipeline.js +73 -80
- package/lib/components/Table/core/useTableExpand.js +6 -5
- package/lib/components/Table/core/useTableSelection.js +13 -10
- package/lib/components/Table/core/useTableSetup.js +8 -5
- package/lib/components/Table/features/ExpandTrigger.d.ts +9 -3
- package/lib/components/Table/features/ExpandTrigger.js +14 -8
- package/lib/components/Table/features/FilterTrigger.js +21 -17
- package/lib/components/Table/features/SelectionColumn.d.ts +11 -6
- package/lib/components/Table/features/SelectionColumn.js +12 -5
- package/lib/components/Table/features/SortTrigger.d.ts +4 -2
- package/lib/components/Table/features/SortTrigger.js +8 -3
- package/lib/components/Table/internal/kernel/Body/MeasureCell.js +3 -3
- package/lib/components/Table/internal/kernel/Cell/index.js +4 -4
- package/lib/components/Table/internal/kernel/Table.js +7 -6
- package/lib/components/Table/internal/kernel/VirtualTable/index.js +4 -4
- package/lib/components/Table/internal/kernel/hooks/useRowInfo.js +3 -3
- package/lib/components/Table/internal/kernel/selector-context/context.js +6 -5
- package/lib/components/Table/renderers/HeaderCell.js +3 -2
- package/lib/components/Table/renderers/TableShell.d.ts +13 -0
- package/lib/components/Table/renderers/TableShell.js +31 -0
- package/lib/components/Table/style/Table.css +3 -0
- package/lib/components/Tabs/Tabs.js +7 -5
- package/lib/components/Tooltip/Tooltip.js +5 -4
- package/lib/components/Tooltip/style/Tooltip.css +1 -0
- package/lib/components/Tour/Tour.js +7 -6
- package/lib/components/Trigger/Trigger.js +5 -4
- package/lib/components/Typography/Typography.js +5 -4
- package/lib/components/Typography/useTypographyEnhancements.js +8 -7
- package/lib/components/Upload/Upload.js +5 -4
- package/lib/components/Upload/UploadFileBar.js +4 -3
- package/lib/components/VirtualList/VirtualList.js +8 -7
- package/lib/components/VirtualList/hooks/useMobileTouchMove.js +4 -3
- package/lib/components/VirtualList/hooks/useScrollTo.js +3 -3
- package/lib/index.css +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.js +13 -1
- package/package.json +2 -2
- package/scripts/mcp-server/examples.generated.json +54 -0
- package/scripts/mcp-server/index.generated.json +1212 -80
|
@@ -3,13 +3,23 @@ import type { FC, ReactNode } from 'react';
|
|
|
3
3
|
import type { FormSize, FormLayout, LabelAlign, ValidateStatus, ValidateTrigger } from './constants';
|
|
4
4
|
export type { FormSize, FormLayout, LabelAlign, ValidateStatus, ValidateTrigger, };
|
|
5
5
|
export interface Rule {
|
|
6
|
+
/** Fails on undefined / null / '' / empty array */
|
|
6
7
|
required?: boolean;
|
|
7
8
|
message?: string;
|
|
9
|
+
/** For strings: min length; arrays: min item count; numbers: min value */
|
|
8
10
|
min?: number;
|
|
11
|
+
/** For strings: max length; arrays: max item count; numbers: max value */
|
|
9
12
|
max?: number;
|
|
10
13
|
pattern?: RegExp;
|
|
11
14
|
type?: 'number' | 'email' | 'url';
|
|
12
15
|
enum?: unknown[];
|
|
16
|
+
/** A failing rule produces a non-blocking warning instead of an error */
|
|
17
|
+
warningOnly?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Run this rule only on the given interactive trigger(s); rules without it
|
|
20
|
+
* follow the form-level validateTrigger. Submit always runs every rule.
|
|
21
|
+
*/
|
|
22
|
+
validateTrigger?: ValidateTrigger | ValidateTrigger[];
|
|
13
23
|
validator?: (value: unknown, values: Record<string, unknown>) => boolean | string | Promise<boolean | string>;
|
|
14
24
|
}
|
|
15
25
|
export interface FieldProps {
|
|
@@ -43,19 +53,24 @@ export interface FormCoreInstance {
|
|
|
43
53
|
setFieldValue: (name: string, value: unknown) => void;
|
|
44
54
|
validateFields: (fieldsRules?: Record<string, Rule[]>) => boolean;
|
|
45
55
|
}
|
|
46
|
-
/**
|
|
47
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Full form instance returned by useForm — extends FormCoreInstance with async
|
|
58
|
+
* validation, field helpers, etc. `Values` types the whole-form value shape
|
|
59
|
+
* (defaults to an open record for backward compatibility).
|
|
60
|
+
*/
|
|
61
|
+
export interface FormInstance<Values = Record<string, unknown>> {
|
|
48
62
|
getFieldValue: (name: string) => unknown;
|
|
49
|
-
getFieldsValue: (nameList?: string[]) =>
|
|
63
|
+
getFieldsValue: (nameList?: string[]) => Values;
|
|
50
64
|
setFieldValue: (name: string, value: unknown) => void;
|
|
51
|
-
setFieldsValue: (values:
|
|
65
|
+
setFieldsValue: (values: Partial<Values>) => void;
|
|
52
66
|
setFieldError: (name: string, error: string | null) => void;
|
|
53
67
|
setFieldsError: (errors: Record<string, string>) => void;
|
|
54
68
|
resetFields: (fields?: string[]) => void;
|
|
55
|
-
validateFields: (nameList?: string[]) => Promise<
|
|
56
|
-
submit: (callback?: (values:
|
|
69
|
+
validateFields: (nameList?: string[]) => Promise<Values>;
|
|
70
|
+
submit: (callback?: (values: Values) => void | Promise<void>) => Promise<Values | undefined>;
|
|
57
71
|
getFieldError: (name: string) => string | undefined;
|
|
58
72
|
getFieldsError: (nameList?: string[]) => Record<string, string>;
|
|
73
|
+
getFieldWarning: (name: string) => string | undefined;
|
|
59
74
|
isFieldTouched: (name: string) => boolean;
|
|
60
75
|
isFieldsTouched: (nameList?: string[], allTouched?: boolean) => boolean;
|
|
61
76
|
isFieldValidating: (name: string) => boolean;
|
|
@@ -70,14 +85,14 @@ export interface UseFormOptions {
|
|
|
70
85
|
validateTrigger?: ValidateTrigger;
|
|
71
86
|
rules?: Record<string, Rule[]>;
|
|
72
87
|
}
|
|
73
|
-
export interface UseFormCoreConfig {
|
|
74
|
-
initialValues?:
|
|
75
|
-
onFinish?: (values:
|
|
88
|
+
export interface UseFormCoreConfig<Values = Record<string, unknown>> {
|
|
89
|
+
initialValues?: Partial<Values>;
|
|
90
|
+
onFinish?: (values: Values) => void;
|
|
76
91
|
onFinishFailed?: (errorInfo: {
|
|
77
|
-
values:
|
|
92
|
+
values: Values;
|
|
78
93
|
errors: Record<string, string>;
|
|
79
94
|
}) => void;
|
|
80
|
-
onValuesChange?: (changedValues:
|
|
95
|
+
onValuesChange?: (changedValues: Partial<Values>, allValues: Values) => void;
|
|
81
96
|
onReset?: () => void;
|
|
82
97
|
size?: FormSize;
|
|
83
98
|
labelAlign?: LabelAlign;
|
|
@@ -90,10 +105,12 @@ export interface UseFormCoreConfig {
|
|
|
90
105
|
export interface FormCoreContextShape {
|
|
91
106
|
values: Record<string, unknown>;
|
|
92
107
|
errors: Record<string, string>;
|
|
108
|
+
warnings: Record<string, string>;
|
|
93
109
|
touched: Record<string, boolean>;
|
|
94
110
|
formInstance: FormCoreInstance;
|
|
95
111
|
setFieldValue: (name: string, value: unknown) => void;
|
|
96
112
|
setFieldError: (name: string, error: string | null) => void;
|
|
113
|
+
setFieldWarning: (name: string, warning: string | null) => void;
|
|
97
114
|
validateField: (name: string, rules: Rule[], providedValue?: unknown) => boolean;
|
|
98
115
|
registerField: (name: string, rules: Rule[]) => void;
|
|
99
116
|
unregisterField: (name: string) => void;
|
|
@@ -105,16 +122,18 @@ export interface FormCoreContextShape {
|
|
|
105
122
|
validateTrigger: ValidateTrigger;
|
|
106
123
|
}
|
|
107
124
|
/** Config for useForm — accepts all UseFormCoreConfig fields */
|
|
108
|
-
export type UseFormConfig = UseFormCoreConfig
|
|
125
|
+
export type UseFormConfig<Values = Record<string, unknown>> = UseFormCoreConfig<Values>;
|
|
109
126
|
/** Internal state exposed by useForm for ProForm integration */
|
|
110
127
|
export interface UseFormInternals {
|
|
111
128
|
values: Record<string, unknown>;
|
|
112
129
|
errors: Record<string, string>;
|
|
130
|
+
warnings: Record<string, string>;
|
|
113
131
|
touched: Record<string, boolean>;
|
|
114
132
|
validating: Record<string, boolean>;
|
|
115
133
|
fieldRules: Record<string, Rule[]>;
|
|
116
134
|
setFieldValue: (name: string, value: unknown) => void;
|
|
117
135
|
setFieldError: (name: string, error: string | null) => void;
|
|
136
|
+
setFieldWarning: (name: string, warning: string | null) => void;
|
|
118
137
|
validateField: (name: string, rules: Rule[], providedValue?: unknown) => boolean;
|
|
119
138
|
validateFieldAsync: (name: string, value: unknown, rules: Rule[]) => Promise<{
|
|
120
139
|
isValid: boolean;
|
|
@@ -133,11 +152,13 @@ export interface UseFormReturn {
|
|
|
133
152
|
export interface UseFormCoreReturn {
|
|
134
153
|
values: Record<string, unknown>;
|
|
135
154
|
errors: Record<string, string>;
|
|
155
|
+
warnings: Record<string, string>;
|
|
136
156
|
touched: Record<string, boolean>;
|
|
137
157
|
fieldRules: Record<string, Rule[]>;
|
|
138
158
|
getFieldRules: (name: string) => Rule[] | undefined;
|
|
139
159
|
setFieldValue: (name: string, value: unknown) => void;
|
|
140
160
|
setFieldError: (name: string, error: string | null) => void;
|
|
161
|
+
setFieldWarning: (name: string, warning: string | null) => void;
|
|
141
162
|
setFieldsValue: (values: Record<string, unknown>) => void;
|
|
142
163
|
getFieldValue: (name: string) => unknown;
|
|
143
164
|
getFieldsValue: () => Record<string, unknown>;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Read a dot-path value out of a nested object. Returns undefined if any segment is missing. */
|
|
2
|
+
export declare function getNestedValue(obj: Record<string, unknown>, path: string): unknown;
|
|
3
|
+
/** Immutably set a dot-path value, cloning each object/array along the path. */
|
|
4
|
+
export declare function setNestedValue(obj: Record<string, unknown>, path: string, value: unknown): Record<string, unknown>;
|
|
5
|
+
/** Read a field value, taking the fast path for flat (non-dotted) names. */
|
|
6
|
+
export declare function resolveValue(values: Record<string, unknown>, name: string): unknown;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.getNestedValue = getNestedValue;
|
|
8
|
+
exports.resolveValue = resolveValue;
|
|
9
|
+
exports.setNestedValue = setNestedValue;
|
|
10
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
13
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
14
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
15
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
16
|
+
// ---------------------------------------------------------------------------
|
|
17
|
+
// Nested path helpers (dot-notation support, e.g. "items.0.title").
|
|
18
|
+
//
|
|
19
|
+
// Single source of truth — these were previously copy-pasted across
|
|
20
|
+
// useFormCore, useFormItem, useForm and utils.
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
/** Read a dot-path value out of a nested object. Returns undefined if any segment is missing. */
|
|
23
|
+
function getNestedValue(obj, path) {
|
|
24
|
+
var keys = path.split('.');
|
|
25
|
+
var current = obj;
|
|
26
|
+
var _iterator = _createForOfIteratorHelper(keys),
|
|
27
|
+
_step;
|
|
28
|
+
try {
|
|
29
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
30
|
+
var key = _step.value;
|
|
31
|
+
if (current === null || current === undefined || (0, _typeof2["default"])(current) !== 'object') return undefined;
|
|
32
|
+
current = current[key];
|
|
33
|
+
}
|
|
34
|
+
} catch (err) {
|
|
35
|
+
_iterator.e(err);
|
|
36
|
+
} finally {
|
|
37
|
+
_iterator.f();
|
|
38
|
+
}
|
|
39
|
+
return current;
|
|
40
|
+
}
|
|
41
|
+
/** Immutably set a dot-path value, cloning each object/array along the path. */
|
|
42
|
+
function setNestedValue(obj, path, value) {
|
|
43
|
+
var keys = path.split('.');
|
|
44
|
+
if (keys.length === 1) return Object.assign(Object.assign({}, obj), (0, _defineProperty2["default"])({}, path, value));
|
|
45
|
+
var result = Object.assign({}, obj);
|
|
46
|
+
var current = result;
|
|
47
|
+
for (var i = 0; i < keys.length - 1; i++) {
|
|
48
|
+
var key = keys[i];
|
|
49
|
+
var nextKey = keys[i + 1];
|
|
50
|
+
var isNextArray = /^\d+$/.test(nextKey);
|
|
51
|
+
if (current[key] === undefined || current[key] === null) {
|
|
52
|
+
current[key] = isNextArray ? [] : {};
|
|
53
|
+
}
|
|
54
|
+
if (Array.isArray(current[key])) {
|
|
55
|
+
current[key] = (0, _toConsumableArray2["default"])(current[key]);
|
|
56
|
+
} else {
|
|
57
|
+
current[key] = Object.assign({}, current[key]);
|
|
58
|
+
}
|
|
59
|
+
current = current[key];
|
|
60
|
+
}
|
|
61
|
+
current[keys[keys.length - 1]] = value;
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
/** Read a field value, taking the fast path for flat (non-dotted) names. */
|
|
65
|
+
function resolveValue(values, name) {
|
|
66
|
+
return name.includes('.') ? getNestedValue(values, name) : values[name];
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9zcmMvY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvcGF0aFV0aWxzLnRzIl0sIm5hbWVzIjpbImdldE5lc3RlZFZhbHVlIiwib2JqIiwicGF0aCIsImtleXMiLCJzcGxpdCIsImN1cnJlbnQiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwia2V5IiwidmFsdWUiLCJ1bmRlZmluZWQiLCJfdHlwZW9mMiIsImVyciIsImUiLCJmIiwic2V0TmVzdGVkVmFsdWUiLCJsZW5ndGgiLCJPYmplY3QiLCJhc3NpZ24iLCJfZGVmaW5lUHJvcGVydHkyIiwicmVzdWx0IiwiaSIsIm5leHRLZXkiLCJpc05leHRBcnJheSIsInRlc3QiLCJBcnJheSIsImlzQXJyYXkiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwicmVzb2x2ZVZhbHVlIiwidmFsdWVzIiwibmFtZSIsImluY2x1ZGVzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNNLFNBQVVBLGNBQWNBLENBQUNDLEdBQTRCLEVBQUVDLElBQVksRUFBQTtFQUN2RSxJQUFNQyxJQUFJLEdBQUdELElBQUksQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQztFQUM1QixJQUFJQyxPQUFPLEdBQVlKLEdBQUc7RUFBQyxJQUFBSyxTQUFBLEdBQUFDLDBCQUFBLENBQ1RKLElBQUk7SUFBQUssS0FBQTtFQUFBO0lBQXRCLEtBQUFGLFNBQUEsQ0FBQUcsQ0FBQSxNQUFBRCxLQUFBLEdBQUFGLFNBQUEsQ0FBQUksQ0FBQSxJQUFBQyxJQUFBLEdBQXdCO01BQUEsSUFBYkMsR0FBRyxHQUFBSixLQUFBLENBQUFLLEtBQUE7TUFDWixJQUFJUixPQUFPLEtBQUssSUFBSSxJQUFJQSxPQUFPLEtBQUtTLFNBQVMsSUFBSSxJQUFBQyxRQUFBLGFBQU9WLE9BQU8sTUFBSyxRQUFRLEVBQUUsT0FBT1MsU0FBUztNQUM5RlQsT0FBTyxHQUFJQSxPQUFtQyxDQUFDTyxHQUFHLENBQUM7SUFDckQ7RUFBQyxTQUFBSSxHQUFBO0lBQUFWLFNBQUEsQ0FBQVcsQ0FBQSxDQUFBRCxHQUFBO0VBQUE7SUFBQVYsU0FBQSxDQUFBWSxDQUFBO0VBQUE7RUFDRCxPQUFPYixPQUFPO0FBQ2hCO0FBRUE7QUFDTSxTQUFVYyxjQUFjQSxDQUM1QmxCLEdBQTRCLEVBQzVCQyxJQUFZLEVBQ1pXLEtBQWMsRUFBQTtFQUVkLElBQU1WLElBQUksR0FBR0QsSUFBSSxDQUFDRSxLQUFLLENBQUMsR0FBRyxDQUFDO0VBQzVCLElBQUlELElBQUksQ0FBQ2lCLE1BQU0sS0FBSyxDQUFDLEVBQUUsT0FBQUMsTUFBQSxDQUFBQyxNQUFBLENBQUFELE1BQUEsQ0FBQUMsTUFBQSxDQUFBLENBQUEsQ0FBQSxFQUFZckIsR0FBRyxDQUFBLE1BQUFzQixnQkFBQSxpQkFBR3JCLElBQUksRUFBR1csS0FBSyxDQUFBLENBQUE7RUFFckQsSUFBTVcsTUFBTSxHQUFBSCxNQUFBLENBQUFDLE1BQUEsQ0FBQSxDQUFBLENBQUEsRUFBUXJCLEdBQUcsQ0FBRTtFQUN6QixJQUFJSSxPQUFPLEdBQTRCbUIsTUFBTTtFQUM3QyxLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR3RCLElBQUksQ0FBQ2lCLE1BQU0sR0FBRyxDQUFDLEVBQUVLLENBQUMsRUFBRSxFQUFFO0lBQ3hDLElBQU1iLEdBQUcsR0FBR1QsSUFBSSxDQUFDc0IsQ0FBQyxDQUFDO0lBQ25CLElBQU1DLE9BQU8sR0FBR3ZCLElBQUksQ0FBQ3NCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0IsSUFBTUUsV0FBVyxHQUFHLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDRixPQUFPLENBQUM7SUFDekMsSUFBSXJCLE9BQU8sQ0FBQ08sR0FBRyxDQUFDLEtBQUtFLFNBQVMsSUFBSVQsT0FBTyxDQUFDTyxHQUFHLENBQUMsS0FBSyxJQUFJLEVBQUU7TUFDdkRQLE9BQU8sQ0FBQ08sR0FBRyxDQUFDLEdBQUdlLFdBQVcsR0FBRyxFQUFFLEdBQUcsQ0FBQSxDQUFFO0lBQ3RDO0lBQ0EsSUFBSUUsS0FBSyxDQUFDQyxPQUFPLENBQUN6QixPQUFPLENBQUNPLEdBQUcsQ0FBQyxDQUFDLEVBQUU7TUFDL0JQLE9BQU8sQ0FBQ08sR0FBRyxDQUFDLE9BQUFtQixtQkFBQSxhQUFRMUIsT0FBTyxDQUFDTyxHQUFHLENBQWUsQ0FBQztJQUNqRCxDQUFDLE1BQU07TUFDTFAsT0FBTyxDQUFDTyxHQUFHLENBQUMsR0FBQVMsTUFBQSxDQUFBQyxNQUFBLENBQUEsQ0FBQSxDQUFBLEVBQVNqQixPQUFPLENBQUNPLEdBQUcsQ0FBNkIsQ0FBRTtJQUNqRTtJQUNBUCxPQUFPLEdBQUdBLE9BQU8sQ0FBQ08sR0FBRyxDQUE0QjtFQUNuRDtFQUNBUCxPQUFPLENBQUNGLElBQUksQ0FBQ0EsSUFBSSxDQUFDaUIsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUdQLEtBQUs7RUFDdEMsT0FBT1csTUFBTTtBQUNmO0FBRUE7QUFDTSxTQUFVUSxZQUFZQSxDQUFDQyxNQUErQixFQUFFQyxJQUFZLEVBQUE7RUFDeEUsT0FBT0EsSUFBSSxDQUFDQyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUduQyxjQUFjLENBQUNpQyxNQUFNLEVBQUVDLElBQUksQ0FBQyxHQUFHRCxNQUFNLENBQUNDLElBQUksQ0FBQztBQUN6RSIsImZpbGUiOiJjb21wb25lbnRzL1Byb0Zvcm0vY29yZS9wYXRoVXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Rule, ValidateTrigger } from './interface';
|
|
2
|
+
export interface RuleRunResult {
|
|
3
|
+
error: string | null;
|
|
4
|
+
warning: string | null;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Filter rules applicable to an interactive trigger. A rule WITHOUT an
|
|
8
|
+
* explicit `validateTrigger` follows the form-level trigger; a rule WITH one
|
|
9
|
+
* runs on exactly those trigger(s), regardless of the form-level setting.
|
|
10
|
+
* Submit-time validation bypasses this filter and runs every rule.
|
|
11
|
+
*/
|
|
12
|
+
export declare function filterRulesByTrigger(rules: Rule[], trigger: ValidateTrigger, formTrigger: ValidateTrigger): Rule[];
|
|
13
|
+
/**
|
|
14
|
+
* Synchronous rule run. Custom validators are invoked but NOT awaited — a
|
|
15
|
+
* promise-returning validator is treated as failing (matches the legacy sync
|
|
16
|
+
* `validateField` behaviour).
|
|
17
|
+
*/
|
|
18
|
+
export declare function runRulesSync(name: string, value: unknown, values: Record<string, unknown>, rules: Rule[]): RuleRunResult;
|
|
19
|
+
/**
|
|
20
|
+
* Asynchronous rule run. Custom validators are awaited (sync or async). A
|
|
21
|
+
* validator returning `undefined` is treated as passing.
|
|
22
|
+
*/
|
|
23
|
+
export declare function runRulesAsync(name: string, value: unknown, values: Record<string, unknown>, rules: Rule[]): Promise<RuleRunResult>;
|
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.filterRulesByTrigger = filterRulesByTrigger;
|
|
8
|
+
exports.runRulesAsync = runRulesAsync;
|
|
9
|
+
exports.runRulesSync = runRulesSync;
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
|
|
12
|
+
function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
|
|
13
|
+
function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
14
|
+
var __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
|
|
15
|
+
function adopt(value) {
|
|
16
|
+
return value instanceof P ? value : new P(function (resolve) {
|
|
17
|
+
resolve(value);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
21
|
+
function fulfilled(value) {
|
|
22
|
+
try {
|
|
23
|
+
step(generator.next(value));
|
|
24
|
+
} catch (e) {
|
|
25
|
+
reject(e);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function rejected(value) {
|
|
29
|
+
try {
|
|
30
|
+
step(generator["throw"](value));
|
|
31
|
+
} catch (e) {
|
|
32
|
+
reject(e);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function step(result) {
|
|
36
|
+
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
|
|
37
|
+
}
|
|
38
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
/** Empty for `required`: undefined / null / '' / empty array. */
|
|
42
|
+
function isEmptyValue(value) {
|
|
43
|
+
return value === undefined || value === null || value === '' || Array.isArray(value) && value.length === 0;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Filter rules applicable to an interactive trigger. A rule WITHOUT an
|
|
47
|
+
* explicit `validateTrigger` follows the form-level trigger; a rule WITH one
|
|
48
|
+
* runs on exactly those trigger(s), regardless of the form-level setting.
|
|
49
|
+
* Submit-time validation bypasses this filter and runs every rule.
|
|
50
|
+
*/
|
|
51
|
+
function filterRulesByTrigger(rules, trigger, formTrigger) {
|
|
52
|
+
return rules.filter(function (rule) {
|
|
53
|
+
var ruleTrigger = rule.validateTrigger;
|
|
54
|
+
if (!ruleTrigger) return formTrigger === trigger;
|
|
55
|
+
return Array.isArray(ruleTrigger) ? ruleTrigger.includes(trigger) : ruleTrigger === trigger;
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Evaluate every built-in (non-`validator`) rule kind for a single rule.
|
|
60
|
+
* Returns the error message for the first failing check, or null.
|
|
61
|
+
*/
|
|
62
|
+
function checkBuiltinRules(rule, value, name) {
|
|
63
|
+
if (rule.required && isEmptyValue(value)) {
|
|
64
|
+
return rule.message || "".concat(name, " is required");
|
|
65
|
+
}
|
|
66
|
+
// min/max: string → length, array → item count, number → numeric value
|
|
67
|
+
if (rule.min !== undefined || rule.max !== undefined) {
|
|
68
|
+
var measured = null;
|
|
69
|
+
var unit = '';
|
|
70
|
+
if (typeof value === 'string') {
|
|
71
|
+
measured = value.length;
|
|
72
|
+
unit = ' characters';
|
|
73
|
+
} else if (Array.isArray(value)) {
|
|
74
|
+
measured = value.length;
|
|
75
|
+
unit = ' items';
|
|
76
|
+
} else if (typeof value === 'number' && !Number.isNaN(value)) {
|
|
77
|
+
measured = value;
|
|
78
|
+
}
|
|
79
|
+
if (measured !== null) {
|
|
80
|
+
if (rule.min !== undefined && measured < rule.min) {
|
|
81
|
+
return rule.message || "".concat(name, " must be at least ").concat(rule.min).concat(unit);
|
|
82
|
+
}
|
|
83
|
+
if (rule.max !== undefined && measured > rule.max) {
|
|
84
|
+
return rule.message || "".concat(name, " must be no more than ").concat(rule.max).concat(unit);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
if (rule.pattern && typeof value === 'string' && !rule.pattern.test(value)) {
|
|
89
|
+
return rule.message || "".concat(name, " format is invalid");
|
|
90
|
+
}
|
|
91
|
+
if (rule["enum"] && Array.isArray(rule["enum"]) && value) {
|
|
92
|
+
if (!rule["enum"].includes(value)) {
|
|
93
|
+
return rule.message || "".concat(name, " must be one of ").concat(rule["enum"].join(', '));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
if (rule.type === 'number' && value !== undefined && value !== null && value !== '') {
|
|
97
|
+
if (typeof value !== 'number' || isNaN(value)) {
|
|
98
|
+
return rule.message || "".concat(name, " must be a number");
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
if (rule.type === 'email' && value) {
|
|
102
|
+
var emailPattern = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
103
|
+
if (!emailPattern.test(String(value))) {
|
|
104
|
+
return rule.message || "".concat(name, " must be a valid email");
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (rule.type === 'url' && value) {
|
|
108
|
+
try {
|
|
109
|
+
new URL(String(value));
|
|
110
|
+
} catch (_a) {
|
|
111
|
+
return rule.message || "".concat(name, " must be a valid URL");
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Synchronous rule run. Custom validators are invoked but NOT awaited — a
|
|
118
|
+
* promise-returning validator is treated as failing (matches the legacy sync
|
|
119
|
+
* `validateField` behaviour).
|
|
120
|
+
*/
|
|
121
|
+
function runRulesSync(name, value, values, rules) {
|
|
122
|
+
var warning = null;
|
|
123
|
+
var _iterator = _createForOfIteratorHelper(rules),
|
|
124
|
+
_step;
|
|
125
|
+
try {
|
|
126
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
127
|
+
var rule = _step.value;
|
|
128
|
+
var failure = checkBuiltinRules(rule, value, name);
|
|
129
|
+
if (failure === null && typeof rule.validator === 'function') {
|
|
130
|
+
try {
|
|
131
|
+
var result = rule.validator(value, values);
|
|
132
|
+
if (result !== true) {
|
|
133
|
+
failure = typeof result === 'string' ? result : 'Validation failed';
|
|
134
|
+
}
|
|
135
|
+
} catch (err) {
|
|
136
|
+
failure = err instanceof Error ? err.message : 'Validation error';
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (failure !== null) {
|
|
140
|
+
if (rule.warningOnly) {
|
|
141
|
+
warning = warning !== null && warning !== void 0 ? warning : failure;
|
|
142
|
+
} else {
|
|
143
|
+
return {
|
|
144
|
+
error: failure,
|
|
145
|
+
warning: warning
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
} catch (err) {
|
|
151
|
+
_iterator.e(err);
|
|
152
|
+
} finally {
|
|
153
|
+
_iterator.f();
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
error: null,
|
|
157
|
+
warning: warning
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Asynchronous rule run. Custom validators are awaited (sync or async). A
|
|
162
|
+
* validator returning `undefined` is treated as passing.
|
|
163
|
+
*/
|
|
164
|
+
function runRulesAsync(name, value, values, rules) {
|
|
165
|
+
return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
166
|
+
var warning, _iterator2, _step2, rule, failure, result, _t, _t2;
|
|
167
|
+
return _regenerator["default"].wrap(function (_context) {
|
|
168
|
+
while (1) switch (_context.prev = _context.next) {
|
|
169
|
+
case 0:
|
|
170
|
+
warning = null;
|
|
171
|
+
_iterator2 = _createForOfIteratorHelper(rules);
|
|
172
|
+
_context.prev = 1;
|
|
173
|
+
_iterator2.s();
|
|
174
|
+
case 2:
|
|
175
|
+
if ((_step2 = _iterator2.n()).done) {
|
|
176
|
+
_context.next = 9;
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
rule = _step2.value;
|
|
180
|
+
failure = checkBuiltinRules(rule, value, name);
|
|
181
|
+
if (!(failure === null && typeof rule.validator === 'function')) {
|
|
182
|
+
_context.next = 6;
|
|
183
|
+
break;
|
|
184
|
+
}
|
|
185
|
+
_context.prev = 3;
|
|
186
|
+
_context.next = 4;
|
|
187
|
+
return Promise.resolve(rule.validator(value, values));
|
|
188
|
+
case 4:
|
|
189
|
+
result = _context.sent;
|
|
190
|
+
if (result !== true && result !== undefined) {
|
|
191
|
+
failure = typeof result === 'string' ? result : 'Validation failed';
|
|
192
|
+
}
|
|
193
|
+
_context.next = 6;
|
|
194
|
+
break;
|
|
195
|
+
case 5:
|
|
196
|
+
_context.prev = 5;
|
|
197
|
+
_t = _context["catch"](3);
|
|
198
|
+
failure = _t instanceof Error ? _t.message : 'Validation error';
|
|
199
|
+
case 6:
|
|
200
|
+
if (!(failure !== null)) {
|
|
201
|
+
_context.next = 8;
|
|
202
|
+
break;
|
|
203
|
+
}
|
|
204
|
+
if (!rule.warningOnly) {
|
|
205
|
+
_context.next = 7;
|
|
206
|
+
break;
|
|
207
|
+
}
|
|
208
|
+
warning = warning !== null && warning !== void 0 ? warning : failure;
|
|
209
|
+
_context.next = 8;
|
|
210
|
+
break;
|
|
211
|
+
case 7:
|
|
212
|
+
return _context.abrupt("return", {
|
|
213
|
+
error: failure,
|
|
214
|
+
warning: warning
|
|
215
|
+
});
|
|
216
|
+
case 8:
|
|
217
|
+
_context.next = 2;
|
|
218
|
+
break;
|
|
219
|
+
case 9:
|
|
220
|
+
_context.next = 11;
|
|
221
|
+
break;
|
|
222
|
+
case 10:
|
|
223
|
+
_context.prev = 10;
|
|
224
|
+
_t2 = _context["catch"](1);
|
|
225
|
+
_iterator2.e(_t2);
|
|
226
|
+
case 11:
|
|
227
|
+
_context.prev = 11;
|
|
228
|
+
_iterator2.f();
|
|
229
|
+
return _context.finish(11);
|
|
230
|
+
case 12:
|
|
231
|
+
return _context.abrupt("return", {
|
|
232
|
+
error: null,
|
|
233
|
+
warning: warning
|
|
234
|
+
});
|
|
235
|
+
case 13:
|
|
236
|
+
case "end":
|
|
237
|
+
return _context.stop();
|
|
238
|
+
}
|
|
239
|
+
}, _callee, null, [[1, 10, 11, 12], [3, 5]]);
|
|
240
|
+
}));
|
|
241
|
+
}
|
|
242
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvUHJvRm9ybS9jb3JlL3J1blJ1bGVzLmpzIiwiY29tcG9uZW50cy9Qcm9Gb3JtL3NyYy9jb21wb25lbnRzL1Byb0Zvcm0vY29yZS9ydW5SdWxlcy50cyJdLCJuYW1lcyI6WyJfX2F3YWl0ZXIiLCJ0aGlzQXJnIiwiX2FyZ3VtZW50cyIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsInZhbHVlIiwicmVzb2x2ZSIsIlByb21pc2UiLCJyZWplY3QiLCJmdWxmaWxsZWQiLCJzdGVwIiwibmV4dCIsImUiLCJyZWplY3RlZCIsInJlc3VsdCIsImRvbmUiLCJ0aGVuIiwiYXBwbHkiLCJpc0VtcHR5VmFsdWUiLCJ1bmRlZmluZWQiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJmaWx0ZXJSdWxlc0J5VHJpZ2dlciIsInJ1bGVzIiwidHJpZ2dlciIsImZvcm1UcmlnZ2VyIiwiZmlsdGVyIiwicnVsZSIsInJ1bGVUcmlnZ2VyIiwidmFsaWRhdGVUcmlnZ2VyIiwiaW5jbHVkZXMiLCJjaGVja0J1aWx0aW5SdWxlcyIsIm5hbWUiLCJyZXF1aXJlZCIsIm1lc3NhZ2UiLCJjb25jYXQiLCJtaW4iLCJtYXgiLCJtZWFzdXJlZCIsInVuaXQiLCJOdW1iZXIiLCJpc05hTiIsInBhdHRlcm4iLCJ0ZXN0Iiwiam9pbiIsInR5cGUiLCJlbWFpbFBhdHRlcm4iLCJTdHJpbmciLCJVUkwiLCJfYSIsInJ1blJ1bGVzU3luYyIsInZhbHVlcyIsIndhcm5pbmciLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJmYWlsdXJlIiwidmFsaWRhdG9yIiwiZXJyIiwiRXJyb3IiLCJ3YXJuaW5nT25seSIsImVycm9yIiwiZiIsInJ1blJ1bGVzQXN5bmMiLCJfcmVnZW5lcmF0b3IiLCJtYXJrIiwiX2NhbGxlZSIsIl9pdGVyYXRvcjIiLCJfc3RlcDIiLCJfdCIsIl90MiIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJz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VztZQUFBWSxRQUFBLENBQUFoRSxJQUFBO1lBQUE7VUFBQTtVQUNsQjBDLE9BQU8sR0FBR0EsT0FBTyxLQUFBLElBQUEsSUFBUEEsT0FBTyxLQUFBLEtBQUEsQ0FBQSxHQUFQQSxPQUFPLEdBQUlNLE9BQU87VUFBQ2dCLFFBQUEsQ0FBQWhFLElBQUE7VUFBQTtRQUFBO1VBQUEsT0FBQWdFLFFBQUEsQ0FBQUcsTUFBQSxXQUV0QjtZQUFFZCxLQUFLLEVBQUVMLE9BQU87WUFBRU4sT0FBTyxFQUFQQTtVQUFPLENBQUU7UUFBQTtVQUFBc0IsUUFBQSxDQUFBaEUsSUFBQTtVQUFBO1FBQUE7VUFBQWdFLFFBQUEsQ0FBQWhFLElBQUE7VUFBQTtRQUFBO1VBQUFnRSxRQUFBLENBQUFDLElBQUE7VUFBQUgsR0FBQSxHQUFBRSxRQUFBO1VBQUFMLFVBQUEsQ0FBQTFELENBQUEsQ0FBQTZELEdBQUE7UUFBQTtVQUFBRSxRQUFBLENBQUFDLElBQUE7VUFBQU4sVUFBQSxDQUFBTCxDQUFBO1VBQUEsT0FBQVUsUUFBQSxDQUFBSSxNQUFBO1FBQUE7VUFBQSxPQUFBSixRQUFBLENBQUFHLE1BQUEsV0FJakM7WUFBRWQsS0FBSyxFQUFFLElBQUk7WUFBRVgsT0FBTyxFQUFQQTtVQUFPLENBQUU7UUFBQTtRQUFBO1VBQUEsT0FBQXNCLFFBQUEsQ0FBQUssSUFBQTtNQUFBO0lBQUEsR0FBQVgsT0FBQTtFQUFBLENBQ2hDLEVBQUE7QURoQ0QiLCJmaWxlIjoiY29tcG9uZW50cy9Qcm9Gb3JtL2NvcmUvcnVuUnVsZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbi8qKiBFbXB0eSBmb3IgYHJlcXVpcmVkYDogdW5kZWZpbmVkIC8gbnVsbCAvICcnIC8gZW1wdHkgYXJyYXkuICovXG5mdW5jdGlvbiBpc0VtcHR5VmFsdWUodmFsdWUpIHtcbiAgICByZXR1cm4gKHZhbHVlID09PSB1bmRlZmluZWQgfHxcbiAgICAgICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICAgICAgdmFsdWUgPT09ICcnIHx8XG4gICAgICAgIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPT09IDApKTtcbn1cbi8qKlxuICogRmlsdGVyIHJ1bGVzIGFwcGxpY2FibGUgdG8gYW4gaW50ZXJhY3RpdmUgdHJpZ2dlci4gQSBydWxlIFdJVEhPVVQgYW5cbiAqIGV4cGxpY2l0IGB2YWxpZGF0ZVRyaWdnZXJgIGZvbGxvd3MgdGhlIGZvcm0tbGV2ZWwgdHJpZ2dlcjsgYSBydWxlIFdJVEggb25lXG4gKiBydW5zIG9uIGV4YWN0bHkgdGhvc2UgdHJpZ2dlcihzKSwgcmVnYXJkbGVzcyBvZiB0aGUgZm9ybS1sZXZlbCBzZXR0aW5nLlxuICogU3VibWl0LXRpbWUgdmFsaWRhdGlvbiBieXBhc3NlcyB0aGlzIGZpbHRlciBhbmQgcnVucyBldmVyeSBydWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZmlsdGVyUnVsZXNCeVRyaWdnZXIocnVsZXMsIHRyaWdnZXIsIGZvcm1UcmlnZ2VyKSB7XG4gICAgcmV0dXJuIHJ1bGVzLmZpbHRlcigocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBydWxlVHJpZ2dlciA9IHJ1bGUudmFsaWRhdGVUcmlnZ2VyO1xuICAgICAgICBpZiAoIXJ1bGVUcmlnZ2VyKVxuICAgICAgICAgICAgcmV0dXJuIGZvcm1UcmlnZ2VyID09PSB0cmlnZ2VyO1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShydWxlVHJpZ2dlcilcbiAgICAgICAgICAgID8gcnVsZVRyaWdnZXIuaW5jbHVkZXModHJpZ2dlcilcbiAgICAgICAgICAgIDogcnVsZVRyaWdnZXIgPT09IHRyaWdnZXI7XG4gICAgfSk7XG59XG4vKipcbiAqIEV2YWx1YXRlIGV2ZXJ5IGJ1aWx0LWluIChub24tYHZhbGlkYXRvcmApIHJ1bGUga2luZCBmb3IgYSBzaW5nbGUgcnVsZS5cbiAqIFJldHVybnMgdGhlIGVycm9yIG1lc3NhZ2UgZm9yIHRoZSBmaXJzdCBmYWlsaW5nIGNoZWNrLCBvciBudWxsLlxuICovXG5mdW5jdGlvbiBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSkge1xuICAgIGlmIChydWxlLnJlcXVpcmVkICYmIGlzRW1wdHlWYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBpcyByZXF1aXJlZGA7XG4gICAgfVxuICAgIC8vIG1pbi9tYXg6IHN0cmluZyDihpIgbGVuZ3RoLCBhcnJheSDihpIgaXRlbSBjb3VudCwgbnVtYmVyIOKGkiBudW1lcmljIHZhbHVlXG4gICAgaWYgKHJ1bGUubWluICE9PSB1bmRlZmluZWQgfHwgcnVsZS5tYXggIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBsZXQgbWVhc3VyZWQgPSBudWxsO1xuICAgICAgICBsZXQgdW5pdCA9ICcnO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgbWVhc3VyZWQgPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICB1bml0ID0gJyBjaGFyYWN0ZXJzJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgbWVhc3VyZWQgPSB2YWx1ZS5sZW5ndGg7XG4gICAgICAgICAgICB1bml0ID0gJyBpdGVtcyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiAhTnVtYmVyLmlzTmFOKHZhbHVlKSkge1xuICAgICAgICAgICAgbWVhc3VyZWQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVhc3VyZWQgIT09IG51bGwpIHtcbiAgICAgICAgICAgIGlmIChydWxlLm1pbiAhPT0gdW5kZWZpbmVkICYmIG1lYXN1cmVkIDwgcnVsZS5taW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYXQgbGVhc3QgJHtydWxlLm1pbn0ke3VuaXR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChydWxlLm1heCAhPT0gdW5kZWZpbmVkICYmIG1lYXN1cmVkID4gcnVsZS5tYXgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgbm8gbW9yZSB0aGFuICR7cnVsZS5tYXh9JHt1bml0fWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUucGF0dGVybiAmJiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnICYmICFydWxlLnBhdHRlcm4udGVzdCh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBmb3JtYXQgaXMgaW52YWxpZGA7XG4gICAgfVxuICAgIGlmIChydWxlLmVudW0gJiYgQXJyYXkuaXNBcnJheShydWxlLmVudW0pICYmIHZhbHVlKSB7XG4gICAgICAgIGlmICghcnVsZS5lbnVtLmluY2x1ZGVzKHZhbHVlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bGUubWVzc2FnZSB8fCBgJHtuYW1lfSBtdXN0IGJlIG9uZSBvZiAke3J1bGUuZW51bS5qb2luKCcsICcpfWA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJ1bGUudHlwZSA9PT0gJ251bWJlcicgJiYgdmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZSAhPT0gJycpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ251bWJlcicgfHwgaXNOYU4odmFsdWUpKSB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZS5tZXNzYWdlIHx8IGAke25hbWV9IG11c3QgYmUgYSBudW1iZXJgO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChydWxlLnR5cGUgPT09ICdlbWFpbCcgJiYgdmFsdWUpIHtcbiAgICAgICAgY29uc3QgZW1haWxQYXR0ZXJuID0gL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC87XG4gICAgICAgIGlmICghZW1haWxQYXR0ZXJuLnRlc3QoU3RyaW5nKHZhbHVlKSkpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIGVtYWlsYDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAocnVsZS50eXBlID09PSAndXJsJyAmJiB2YWx1ZSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgbmV3IFVSTChTdHJpbmcodmFsdWUpKTtcbiAgICAgICAgfVxuICAgICAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgICAgIHJldHVybiBydWxlLm1lc3NhZ2UgfHwgYCR7bmFtZX0gbXVzdCBiZSBhIHZhbGlkIFVSTGA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG59XG4vKipcbiAqIFN5bmNocm9ub3VzIHJ1bGUgcnVuLiBDdXN0b20gdmFsaWRhdG9ycyBhcmUgaW52b2tlZCBidXQgTk9UIGF3YWl0ZWQg4oCUIGFcbiAqIHByb21pc2UtcmV0dXJuaW5nIHZhbGlkYXRvciBpcyB0cmVhdGVkIGFzIGZhaWxpbmcgKG1hdGNoZXMgdGhlIGxlZ2FjeSBzeW5jXG4gKiBgdmFsaWRhdGVGaWVsZGAgYmVoYXZpb3VyKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blJ1bGVzU3luYyhuYW1lLCB2YWx1ZSwgdmFsdWVzLCBydWxlcykge1xuICAgIGxldCB3YXJuaW5nID0gbnVsbDtcbiAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgbGV0IGZhaWx1cmUgPSBjaGVja0J1aWx0aW5SdWxlcyhydWxlLCB2YWx1ZSwgbmFtZSk7XG4gICAgICAgIGlmIChmYWlsdXJlID09PSBudWxsICYmIHR5cGVvZiBydWxlLnZhbGlkYXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBydWxlLnZhbGlkYXRvcih2YWx1ZSwgdmFsdWVzKTtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgPSB0eXBlb2YgcmVzdWx0ID09PSAnc3RyaW5nJyA/IHJlc3VsdCA6ICdWYWxpZGF0aW9uIGZhaWxlZCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICAgIGZhaWx1cmUgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZXJyb3InO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmYWlsdXJlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocnVsZS53YXJuaW5nT25seSkge1xuICAgICAgICAgICAgICAgIHdhcm5pbmcgPSB3YXJuaW5nICE9PSBudWxsICYmIHdhcm5pbmcgIT09IHZvaWQgMCA/IHdhcm5pbmcgOiBmYWlsdXJlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgZXJyb3I6IGZhaWx1cmUsIHdhcm5pbmcgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4geyBlcnJvcjogbnVsbCwgd2FybmluZyB9O1xufVxuLyoqXG4gKiBBc3luY2hyb25vdXMgcnVsZSBydW4uIEN1c3RvbSB2YWxpZGF0b3JzIGFyZSBhd2FpdGVkIChzeW5jIG9yIGFzeW5jKS4gQVxuICogdmFsaWRhdG9yIHJldHVybmluZyBgdW5kZWZpbmVkYCBpcyB0cmVhdGVkIGFzIHBhc3NpbmcuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5SdWxlc0FzeW5jKG5hbWUsIHZhbHVlLCB2YWx1ZXMsIHJ1bGVzKSB7XG4gICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgbGV0IHdhcm5pbmcgPSBudWxsO1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcnVsZXMpIHtcbiAgICAgICAgICAgIGxldCBmYWlsdXJlID0gY2hlY2tCdWlsdGluUnVsZXMocnVsZSwgdmFsdWUsIG5hbWUpO1xuICAgICAgICAgICAgaWYgKGZhaWx1cmUgPT09IG51bGwgJiYgdHlwZW9mIHJ1bGUudmFsaWRhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0geWllbGQgUHJvbWlzZS5yZXNvbHZlKHJ1bGUudmFsaWRhdG9yKHZhbHVlLCB2YWx1ZXMpKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gdHJ1ZSAmJiByZXN1bHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZmFpbHVyZSA9IHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnID8gcmVzdWx0IDogJ1ZhbGlkYXRpb24gZmFpbGVkJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICAgICAgICAgIGZhaWx1cmUgPSBlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ1ZhbGlkYXRpb24gZXJyb3InO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChmYWlsdXJlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJ1bGUud2FybmluZ09ubHkpIHtcbiAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IHdhcm5pbmcgIT09IG51bGwgJiYgd2FybmluZyAhPT0gdm9pZCAwID8gd2FybmluZyA6IGZhaWx1cmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4geyBlcnJvcjogZmFpbHVyZSwgd2FybmluZyB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geyBlcnJvcjogbnVsbCwgd2FybmluZyB9O1xuICAgIH0pO1xufSIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
|
|
@@ -5,17 +5,26 @@ export interface UseFormItemOptions {
|
|
|
5
5
|
rules?: Rule[];
|
|
6
6
|
required?: boolean;
|
|
7
7
|
validateStatus?: ValidateStatus;
|
|
8
|
+
/** Prop name the controlled value is injected under (e.g. `checked` for Switch/Checkbox). */
|
|
9
|
+
valuePropName?: string;
|
|
10
|
+
/** Debounce (ms) applied to onChange-triggered validation. */
|
|
11
|
+
validateDebounce?: number;
|
|
8
12
|
}
|
|
9
13
|
export interface UseFormItemReturn {
|
|
10
14
|
fieldValue: unknown;
|
|
11
15
|
fieldError: string | undefined;
|
|
16
|
+
fieldWarning: string | undefined;
|
|
12
17
|
fieldValidating: boolean;
|
|
13
18
|
validateStatus: ValidateStatus | undefined;
|
|
14
19
|
isRequired: boolean;
|
|
15
20
|
size: FormSize;
|
|
16
21
|
labelAlign: LabelAlign;
|
|
17
22
|
requiredMark: boolean;
|
|
18
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Clone a form-component child injecting value/onChange/onBlur/status.
|
|
25
|
+
* Form `size` is intentionally NOT injected — it only controls item spacing;
|
|
26
|
+
* control sizes are set per-field. Non-form children pass through unchanged.
|
|
27
|
+
*/
|
|
19
28
|
injectField: (child: ReactNode) => ReactNode;
|
|
20
29
|
}
|
|
21
30
|
export declare function useFormItem(options: UseFormItemOptions): UseFormItemReturn;
|