@vritti/quantum-ui 0.2.4 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Button.js +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/Checkbox.js.map +1 -1
- package/dist/DatePicker.js.map +1 -1
- package/dist/Form.js +108 -97
- package/dist/Form.js.map +1 -1
- package/dist/Label.js.map +1 -1
- package/dist/OTPField.js +2 -1
- package/dist/OTPField.js.map +1 -1
- package/dist/PasswordField.js.map +1 -1
- package/dist/PhoneField.js +2 -1
- package/dist/PhoneField.js.map +1 -1
- package/dist/Spinner.js.map +1 -1
- package/dist/ThemeToggle.js.map +1 -1
- package/dist/components/Progress.js.map +1 -1
- package/dist/createLucideIcon.js.map +1 -1
- package/dist/field.js.map +1 -1
- package/dist/index2.js.map +1 -1
- package/dist/index3.js.map +1 -1
- package/dist/index4.js.map +1 -1
- package/dist/index5.js.map +1 -1
- package/dist/index6.js.map +1 -1
- package/dist/{components → lib/components}/Button/Button.d.ts +1 -1
- package/dist/lib/components/Button/Button.d.ts.map +1 -0
- package/dist/lib/components/Button/index.d.ts.map +1 -0
- package/dist/lib/components/Card/Card.d.ts.map +1 -0
- package/dist/lib/components/Card/index.d.ts.map +1 -0
- package/dist/lib/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/lib/components/Checkbox/index.d.ts.map +1 -0
- package/dist/lib/components/DatePicker/DatePicker.d.ts.map +1 -0
- package/dist/lib/components/DatePicker/index.d.ts.map +1 -0
- package/dist/lib/components/Field/index.d.ts.map +1 -0
- package/dist/lib/components/Form/Form.d.ts.map +1 -0
- package/dist/lib/components/Form/index.d.ts.map +1 -0
- package/dist/{components → lib/components}/OTPField/OTPField.d.ts +3 -2
- package/dist/lib/components/OTPField/OTPField.d.ts.map +1 -0
- package/dist/lib/components/OTPField/index.d.ts.map +1 -0
- package/dist/lib/components/PasswordField/PasswordField.d.ts.map +1 -0
- package/dist/lib/components/PasswordField/index.d.ts.map +1 -0
- package/dist/{components → lib/components}/PhoneField/PhoneField.d.ts +2 -1
- package/dist/lib/components/PhoneField/PhoneField.d.ts.map +1 -0
- package/dist/lib/components/PhoneField/index.d.ts.map +1 -0
- package/dist/lib/components/Progress/Progress.d.ts.map +1 -0
- package/dist/lib/components/Progress/index.d.ts.map +1 -0
- package/dist/lib/components/Skeleton/Skeleton.d.ts.map +1 -0
- package/dist/lib/components/Skeleton/index.d.ts.map +1 -0
- package/dist/lib/components/Spinner/Spinner.d.ts.map +1 -0
- package/dist/lib/components/Spinner/index.d.ts.map +1 -0
- package/dist/lib/components/TextArea/TextArea.d.ts.map +1 -0
- package/dist/lib/components/TextArea/index.d.ts.map +1 -0
- package/dist/lib/components/TextField/TextField.d.ts.map +1 -0
- package/dist/lib/components/TextField/index.d.ts.map +1 -0
- package/dist/lib/components/ThemeToggle/ThemeToggle.d.ts.map +1 -0
- package/dist/lib/components/ThemeToggle/index.d.ts.map +1 -0
- package/dist/lib/components/Typography/Typography.d.ts.map +1 -0
- package/dist/lib/components/Typography/index.d.ts.map +1 -0
- package/dist/lib/components/index.d.ts.map +1 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/utils/axios.d.ts.map +1 -0
- package/dist/lib/utils/formHelpers.d.ts.map +1 -0
- package/dist/lib/utils/index.d.ts.map +1 -0
- package/dist/shadcn/index.d.ts +15 -0
- package/dist/shadcn/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnButton/Button.d.ts +11 -0
- package/dist/shadcn/shadcnButton/Button.d.ts.map +1 -0
- package/dist/shadcn/shadcnButton/index.d.ts +2 -0
- package/dist/shadcn/shadcnButton/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnCalendar/calendar.d.ts +13 -0
- package/dist/shadcn/shadcnCalendar/calendar.d.ts.map +1 -0
- package/dist/shadcn/shadcnCalendar/index.d.ts +3 -0
- package/dist/shadcn/shadcnCalendar/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnCard/Card.d.ts +10 -0
- package/dist/shadcn/shadcnCard/Card.d.ts.map +1 -0
- package/dist/shadcn/shadcnCard/index.d.ts +2 -0
- package/dist/shadcn/shadcnCard/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnCheckbox/Checkbox.d.ts +5 -0
- package/dist/shadcn/shadcnCheckbox/Checkbox.d.ts.map +1 -0
- package/dist/shadcn/shadcnCheckbox/index.d.ts +2 -0
- package/dist/shadcn/shadcnCheckbox/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnDropdownMenu/dropdown-menu.d.ts +28 -0
- package/dist/shadcn/shadcnDropdownMenu/dropdown-menu.d.ts.map +1 -0
- package/dist/shadcn/shadcnDropdownMenu/index.d.ts +2 -0
- package/dist/shadcn/shadcnDropdownMenu/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnField/field.d.ts +25 -0
- package/dist/shadcn/shadcnField/field.d.ts.map +1 -0
- package/dist/shadcn/shadcnField/index.d.ts +2 -0
- package/dist/shadcn/shadcnField/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnForm/form.d.ts +26 -0
- package/dist/shadcn/shadcnForm/form.d.ts.map +1 -0
- package/dist/shadcn/shadcnForm/index.d.ts +2 -0
- package/dist/shadcn/shadcnForm/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnInput/Input.d.ts +4 -0
- package/dist/shadcn/shadcnInput/Input.d.ts.map +1 -0
- package/dist/shadcn/shadcnInput/index.d.ts +2 -0
- package/dist/shadcn/shadcnInput/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnInputOTP/InputOTP.d.ts +35 -0
- package/dist/shadcn/shadcnInputOTP/InputOTP.d.ts.map +1 -0
- package/dist/shadcn/shadcnInputOTP/index.d.ts +2 -0
- package/dist/shadcn/shadcnInputOTP/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnLabel/Label.d.ts +5 -0
- package/dist/shadcn/shadcnLabel/Label.d.ts.map +1 -0
- package/dist/shadcn/shadcnLabel/index.d.ts +2 -0
- package/dist/shadcn/shadcnLabel/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnPopover/index.d.ts +2 -0
- package/dist/shadcn/shadcnPopover/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnPopover/popover.d.ts +7 -0
- package/dist/shadcn/shadcnPopover/popover.d.ts.map +1 -0
- package/dist/shadcn/shadcnProgress/Progress.d.ts +5 -0
- package/dist/shadcn/shadcnProgress/Progress.d.ts.map +1 -0
- package/dist/shadcn/shadcnSelect/index.d.ts +2 -0
- package/dist/shadcn/shadcnSelect/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnSelect/select.d.ts +16 -0
- package/dist/shadcn/shadcnSelect/select.d.ts.map +1 -0
- package/dist/shadcn/shadcnSeparator/index.d.ts +2 -0
- package/dist/shadcn/shadcnSeparator/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnSeparator/separator.d.ts +5 -0
- package/dist/shadcn/shadcnSeparator/separator.d.ts.map +1 -0
- package/dist/shadcn/shadcnSheet/index.d.ts +2 -0
- package/dist/shadcn/shadcnSheet/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnSheet/sheet.d.ts +23 -0
- package/dist/shadcn/shadcnSheet/sheet.d.ts.map +1 -0
- package/dist/shadcn/shadcnSkeleton/index.d.ts +2 -0
- package/dist/shadcn/shadcnSkeleton/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnSkeleton/skeleton.d.ts +4 -0
- package/dist/shadcn/shadcnSkeleton/skeleton.d.ts.map +1 -0
- package/dist/shadcn/shadcnSpinner/Spinner.d.ts +3 -0
- package/dist/shadcn/shadcnSpinner/Spinner.d.ts.map +1 -0
- package/dist/shadcn/shadcnSpinner/index.d.ts +2 -0
- package/dist/shadcn/shadcnSpinner/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnTable/index.d.ts +2 -0
- package/dist/shadcn/shadcnTable/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnTable/table.d.ts +11 -0
- package/dist/shadcn/shadcnTable/table.d.ts.map +1 -0
- package/dist/shadcn/shadcnTextarea/index.d.ts +2 -0
- package/dist/shadcn/shadcnTextarea/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnTextarea/textarea.d.ts +4 -0
- package/dist/shadcn/shadcnTextarea/textarea.d.ts.map +1 -0
- package/dist/shadcn/shadcnTooltip/index.d.ts +2 -0
- package/dist/shadcn/shadcnTooltip/index.d.ts.map +1 -0
- package/dist/shadcn/shadcnTooltip/tooltip.d.ts +8 -0
- package/dist/shadcn/shadcnTooltip/tooltip.d.ts.map +1 -0
- package/dist/shadcn/utils.d.ts +3 -0
- package/dist/shadcn/utils.d.ts.map +1 -0
- package/package.json +23 -23
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/index.d.ts.map +0 -1
- package/dist/components/Card/Card.d.ts.map +0 -1
- package/dist/components/Card/index.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/components/Checkbox/index.d.ts.map +0 -1
- package/dist/components/DatePicker/DatePicker.d.ts.map +0 -1
- package/dist/components/DatePicker/index.d.ts.map +0 -1
- package/dist/components/Field/index.d.ts.map +0 -1
- package/dist/components/Form/Form.d.ts.map +0 -1
- package/dist/components/Form/index.d.ts.map +0 -1
- package/dist/components/OTPField/OTPField.d.ts.map +0 -1
- package/dist/components/OTPField/index.d.ts.map +0 -1
- package/dist/components/PasswordField/PasswordField.d.ts.map +0 -1
- package/dist/components/PasswordField/index.d.ts.map +0 -1
- package/dist/components/PhoneField/PhoneField.d.ts.map +0 -1
- package/dist/components/PhoneField/index.d.ts.map +0 -1
- package/dist/components/Progress/Progress.d.ts.map +0 -1
- package/dist/components/Progress/index.d.ts.map +0 -1
- package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
- package/dist/components/Skeleton/index.d.ts.map +0 -1
- package/dist/components/Spinner/Spinner.d.ts.map +0 -1
- package/dist/components/Spinner/index.d.ts.map +0 -1
- package/dist/components/TextArea/TextArea.d.ts.map +0 -1
- package/dist/components/TextArea/index.d.ts.map +0 -1
- package/dist/components/TextField/TextField.d.ts.map +0 -1
- package/dist/components/TextField/index.d.ts.map +0 -1
- package/dist/components/ThemeToggle/ThemeToggle.d.ts.map +0 -1
- package/dist/components/ThemeToggle/index.d.ts.map +0 -1
- package/dist/components/Typography/Typography.d.ts.map +0 -1
- package/dist/components/Typography/index.d.ts.map +0 -1
- package/dist/components/index.d.ts.map +0 -1
- package/dist/config/index.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/utils/axios.d.ts.map +0 -1
- package/dist/utils/formHelpers.d.ts.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- /package/dist/{components → lib/components}/Button/index.d.ts +0 -0
- /package/dist/{components → lib/components}/Card/Card.d.ts +0 -0
- /package/dist/{components → lib/components}/Card/index.d.ts +0 -0
- /package/dist/{components → lib/components}/Checkbox/Checkbox.d.ts +0 -0
- /package/dist/{components → lib/components}/Checkbox/index.d.ts +0 -0
- /package/dist/{components → lib/components}/DatePicker/DatePicker.d.ts +0 -0
- /package/dist/{components → lib/components}/DatePicker/index.d.ts +0 -0
- /package/dist/{components → lib/components}/Field/index.d.ts +0 -0
- /package/dist/{components → lib/components}/Form/Form.d.ts +0 -0
- /package/dist/{components → lib/components}/Form/index.d.ts +0 -0
- /package/dist/{components → lib/components}/OTPField/index.d.ts +0 -0
- /package/dist/{components → lib/components}/PasswordField/PasswordField.d.ts +0 -0
- /package/dist/{components → lib/components}/PasswordField/index.d.ts +0 -0
- /package/dist/{components → lib/components}/PhoneField/index.d.ts +0 -0
- /package/dist/{components → lib/components}/Progress/Progress.d.ts +0 -0
- /package/dist/{components → lib/components}/Progress/index.d.ts +0 -0
- /package/dist/{components → lib/components}/Skeleton/Skeleton.d.ts +0 -0
- /package/dist/{components → lib/components}/Skeleton/index.d.ts +0 -0
- /package/dist/{components → lib/components}/Spinner/Spinner.d.ts +0 -0
- /package/dist/{components → lib/components}/Spinner/index.d.ts +0 -0
- /package/dist/{components → lib/components}/TextArea/TextArea.d.ts +0 -0
- /package/dist/{components → lib/components}/TextArea/index.d.ts +0 -0
- /package/dist/{components → lib/components}/TextField/TextField.d.ts +0 -0
- /package/dist/{components → lib/components}/TextField/index.d.ts +0 -0
- /package/dist/{components → lib/components}/ThemeToggle/ThemeToggle.d.ts +0 -0
- /package/dist/{components → lib/components}/ThemeToggle/index.d.ts +0 -0
- /package/dist/{components → lib/components}/Typography/Typography.d.ts +0 -0
- /package/dist/{components → lib/components}/Typography/index.d.ts +0 -0
- /package/dist/{components → lib/components}/index.d.ts +0 -0
- /package/dist/{config → lib/config}/index.d.ts +0 -0
- /package/dist/{index.d.ts → lib/index.d.ts} +0 -0
- /package/dist/{utils → lib/utils}/axios.d.ts +0 -0
- /package/dist/{utils → lib/utils}/formHelpers.d.ts +0 -0
- /package/dist/{utils → lib/utils}/index.d.ts +0 -0
package/dist/Form.js
CHANGED
|
@@ -38,29 +38,23 @@ var isWeb = typeof window !== 'undefined' &&
|
|
|
38
38
|
typeof document !== 'undefined';
|
|
39
39
|
|
|
40
40
|
function cloneObject(data) {
|
|
41
|
-
let copy;
|
|
42
|
-
const isArray = Array.isArray(data);
|
|
43
|
-
const isFileListInstance = typeof FileList !== 'undefined' ? data instanceof FileList : false;
|
|
44
41
|
if (data instanceof Date) {
|
|
45
|
-
|
|
42
|
+
return new Date(data);
|
|
46
43
|
}
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
if (!isArray && !isPlainObject(data)) {
|
|
51
|
-
copy = data;
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
for (const key in data) {
|
|
55
|
-
if (data.hasOwnProperty(key)) {
|
|
56
|
-
copy[key] = cloneObject(data[key]);
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
}
|
|
44
|
+
const isFileListInstance = typeof FileList !== 'undefined' && data instanceof FileList;
|
|
45
|
+
if (isWeb && (data instanceof Blob || isFileListInstance)) {
|
|
46
|
+
return data;
|
|
60
47
|
}
|
|
61
|
-
|
|
48
|
+
const isArray = Array.isArray(data);
|
|
49
|
+
if (!isArray && !(isObject(data) && isPlainObject(data))) {
|
|
62
50
|
return data;
|
|
63
51
|
}
|
|
52
|
+
const copy = isArray ? [] : Object.create(Object.getPrototypeOf(data));
|
|
53
|
+
for (const key in data) {
|
|
54
|
+
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
55
|
+
copy[key] = cloneObject(data[key]);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
64
58
|
return copy;
|
|
65
59
|
}
|
|
66
60
|
|
|
@@ -86,6 +80,8 @@ var get = (object, path, defaultValue) => {
|
|
|
86
80
|
|
|
87
81
|
var isBoolean = (value) => typeof value === 'boolean';
|
|
88
82
|
|
|
83
|
+
var isFunction = (value) => typeof value === 'function';
|
|
84
|
+
|
|
89
85
|
var set = (object, path, value) => {
|
|
90
86
|
let index = -1;
|
|
91
87
|
const tempPath = isKey(path) ? [path] : stringToPath(path);
|
|
@@ -119,73 +115,16 @@ const VALIDATION_MODE = {
|
|
|
119
115
|
all: 'all',
|
|
120
116
|
};
|
|
121
117
|
|
|
122
|
-
const HookFormContext = React__default.createContext(null);
|
|
123
|
-
HookFormContext.displayName = 'HookFormContext';
|
|
124
118
|
/**
|
|
125
|
-
*
|
|
126
|
-
*
|
|
127
|
-
* @remarks
|
|
128
|
-
* [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)
|
|
129
|
-
*
|
|
130
|
-
* @returns return all useForm methods
|
|
131
|
-
*
|
|
132
|
-
* @example
|
|
133
|
-
* ```tsx
|
|
134
|
-
* function App() {
|
|
135
|
-
* const methods = useForm();
|
|
136
|
-
* const onSubmit = data => console.log(data);
|
|
137
|
-
*
|
|
138
|
-
* return (
|
|
139
|
-
* <FormProvider {...methods} >
|
|
140
|
-
* <form onSubmit={methods.handleSubmit(onSubmit)}>
|
|
141
|
-
* <NestedInput />
|
|
142
|
-
* <input type="submit" />
|
|
143
|
-
* </form>
|
|
144
|
-
* </FormProvider>
|
|
145
|
-
* );
|
|
146
|
-
* }
|
|
147
|
-
*
|
|
148
|
-
* function NestedInput() {
|
|
149
|
-
* const { register } = useFormContext(); // retrieve all hook methods
|
|
150
|
-
* return <input {...register("test")} />;
|
|
151
|
-
* }
|
|
152
|
-
* ```
|
|
119
|
+
* Separate context for `control` to prevent unnecessary rerenders.
|
|
120
|
+
* Internal hooks that only need control use this instead of full form context.
|
|
153
121
|
*/
|
|
154
|
-
const
|
|
122
|
+
const HookFormControlContext = React__default.createContext(null);
|
|
123
|
+
HookFormControlContext.displayName = 'HookFormControlContext';
|
|
155
124
|
/**
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
* @remarks
|
|
159
|
-
* [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)
|
|
160
|
-
*
|
|
161
|
-
* @param props - all useForm methods
|
|
162
|
-
*
|
|
163
|
-
* @example
|
|
164
|
-
* ```tsx
|
|
165
|
-
* function App() {
|
|
166
|
-
* const methods = useForm();
|
|
167
|
-
* const onSubmit = data => console.log(data);
|
|
168
|
-
*
|
|
169
|
-
* return (
|
|
170
|
-
* <FormProvider {...methods} >
|
|
171
|
-
* <form onSubmit={methods.handleSubmit(onSubmit)}>
|
|
172
|
-
* <NestedInput />
|
|
173
|
-
* <input type="submit" />
|
|
174
|
-
* </form>
|
|
175
|
-
* </FormProvider>
|
|
176
|
-
* );
|
|
177
|
-
* }
|
|
178
|
-
*
|
|
179
|
-
* function NestedInput() {
|
|
180
|
-
* const { register } = useFormContext(); // retrieve all hook methods
|
|
181
|
-
* return <input {...register("test")} />;
|
|
182
|
-
* }
|
|
183
|
-
* ```
|
|
125
|
+
* @internal Internal hook to access only control from context.
|
|
184
126
|
*/
|
|
185
|
-
const
|
|
186
|
-
const { children, ...data } = props;
|
|
187
|
-
return (React__default.createElement(HookFormContext.Provider, { value: data }, children));
|
|
188
|
-
};
|
|
127
|
+
const useFormControlContext = () => React__default.useContext(HookFormControlContext);
|
|
189
128
|
|
|
190
129
|
var getProxyFormState = (formState, control, localProxyFormState, isRoot = true) => {
|
|
191
130
|
const result = {
|
|
@@ -239,8 +178,8 @@ const useIsomorphicLayoutEffect = typeof window !== 'undefined' ? React__default
|
|
|
239
178
|
* ```
|
|
240
179
|
*/
|
|
241
180
|
function useFormState(props) {
|
|
242
|
-
const
|
|
243
|
-
const { control =
|
|
181
|
+
const formControl = useFormControlContext();
|
|
182
|
+
const { control = formControl, disabled, name, exact } = props || {};
|
|
244
183
|
const [formState, updateFormState] = React__default.useState(control._formState);
|
|
245
184
|
const _localProxyFormState = React__default.useRef({
|
|
246
185
|
isDirty: false,
|
|
@@ -286,10 +225,10 @@ var isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);
|
|
|
286
225
|
|
|
287
226
|
function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
|
|
288
227
|
if (isPrimitive(object1) || isPrimitive(object2)) {
|
|
289
|
-
return object1
|
|
228
|
+
return Object.is(object1, object2);
|
|
290
229
|
}
|
|
291
230
|
if (isDateObject(object1) && isDateObject(object2)) {
|
|
292
|
-
return object1.getTime()
|
|
231
|
+
return Object.is(object1.getTime(), object2.getTime());
|
|
293
232
|
}
|
|
294
233
|
const keys1 = Object.keys(object1);
|
|
295
234
|
const keys2 = Object.keys(object2);
|
|
@@ -312,7 +251,7 @@ function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
|
|
|
312
251
|
(isObject(val1) && isObject(val2)) ||
|
|
313
252
|
(Array.isArray(val1) && Array.isArray(val2))
|
|
314
253
|
? !deepEqual(val1, val2, _internal_visited)
|
|
315
|
-
: val1
|
|
254
|
+
: !Object.is(val1, val2)) {
|
|
316
255
|
return false;
|
|
317
256
|
}
|
|
318
257
|
}
|
|
@@ -337,8 +276,8 @@ function deepEqual(object1, object2, _internal_visited = new WeakSet()) {
|
|
|
337
276
|
* ```
|
|
338
277
|
*/
|
|
339
278
|
function useWatch(props) {
|
|
340
|
-
const
|
|
341
|
-
const { control =
|
|
279
|
+
const formControl = useFormControlContext();
|
|
280
|
+
const { control = formControl, name, defaultValue, disabled, exact, compute, } = props || {};
|
|
342
281
|
const _defaultValue = React__default.useRef(defaultValue);
|
|
343
282
|
const _compute = React__default.useRef(compute);
|
|
344
283
|
const _computeFormValues = React__default.useRef(undefined);
|
|
@@ -431,20 +370,20 @@ function useWatch(props) {
|
|
|
431
370
|
* ```
|
|
432
371
|
*/
|
|
433
372
|
function useController(props) {
|
|
434
|
-
const
|
|
435
|
-
const { name, disabled, control =
|
|
373
|
+
const formControl = useFormControlContext();
|
|
374
|
+
const { name, disabled, control = formControl, shouldUnregister, defaultValue, exact = true, } = props;
|
|
436
375
|
const isArrayField = isNameInFieldArray(control._names.array, name);
|
|
437
376
|
const defaultValueMemo = React__default.useMemo(() => get(control._formValues, name, get(control._defaultValues, name, defaultValue)), [control, name, defaultValue]);
|
|
438
377
|
const value = useWatch({
|
|
439
378
|
control,
|
|
440
379
|
name,
|
|
441
380
|
defaultValue: defaultValueMemo,
|
|
442
|
-
exact
|
|
381
|
+
exact,
|
|
443
382
|
});
|
|
444
383
|
const formState = useFormState({
|
|
445
384
|
control,
|
|
446
385
|
name,
|
|
447
|
-
exact
|
|
386
|
+
exact,
|
|
448
387
|
});
|
|
449
388
|
const _props = React__default.useRef(props);
|
|
450
389
|
const _previousNameRef = React__default.useRef(undefined);
|
|
@@ -492,12 +431,12 @@ function useController(props) {
|
|
|
492
431
|
}), [name, control._formValues]);
|
|
493
432
|
const ref = React__default.useCallback((elm) => {
|
|
494
433
|
const field = get(control._fields, name);
|
|
495
|
-
if (field && elm) {
|
|
434
|
+
if (field && field._f && elm) {
|
|
496
435
|
field._f.ref = {
|
|
497
|
-
focus: () => elm.focus && elm.focus(),
|
|
498
|
-
select: () => elm.select && elm.select(),
|
|
499
|
-
setCustomValidity: (message) => elm.setCustomValidity(message),
|
|
500
|
-
reportValidity: () => elm.reportValidity(),
|
|
436
|
+
focus: () => isFunction(elm.focus) && elm.focus(),
|
|
437
|
+
select: () => isFunction(elm.select) && elm.select(),
|
|
438
|
+
setCustomValidity: (message) => isFunction(elm.setCustomValidity) && elm.setCustomValidity(message),
|
|
439
|
+
reportValidity: () => isFunction(elm.reportValidity) && elm.reportValidity(),
|
|
501
440
|
};
|
|
502
441
|
}
|
|
503
442
|
}, [control._fields, name]);
|
|
@@ -604,6 +543,78 @@ function useController(props) {
|
|
|
604
543
|
*/
|
|
605
544
|
const Controller = (props) => props.render(useController(props));
|
|
606
545
|
|
|
546
|
+
const HookFormContext = React__default.createContext(null);
|
|
547
|
+
HookFormContext.displayName = 'HookFormContext';
|
|
548
|
+
/**
|
|
549
|
+
* A provider component that propagates the `useForm` methods to all children components via [React Context](https://react.dev/reference/react/useContext) API. To be used with {@link useFormContext}.
|
|
550
|
+
*
|
|
551
|
+
* @remarks
|
|
552
|
+
* [API](https://react-hook-form.com/docs/useformcontext) • [Demo](https://codesandbox.io/s/react-hook-form-v7-form-context-ytudi)
|
|
553
|
+
*
|
|
554
|
+
* @param props - all useForm methods
|
|
555
|
+
*
|
|
556
|
+
* @example
|
|
557
|
+
* ```tsx
|
|
558
|
+
* function App() {
|
|
559
|
+
* const methods = useForm();
|
|
560
|
+
* const onSubmit = data => console.log(data);
|
|
561
|
+
*
|
|
562
|
+
* return (
|
|
563
|
+
* <FormProvider {...methods} >
|
|
564
|
+
* <form onSubmit={methods.handleSubmit(onSubmit)}>
|
|
565
|
+
* <NestedInput />
|
|
566
|
+
* <input type="submit" />
|
|
567
|
+
* </form>
|
|
568
|
+
* </FormProvider>
|
|
569
|
+
* );
|
|
570
|
+
* }
|
|
571
|
+
*
|
|
572
|
+
* function NestedInput() {
|
|
573
|
+
* const { register } = useFormContext(); // retrieve all hook methods
|
|
574
|
+
* return <input {...register("test")} />;
|
|
575
|
+
* }
|
|
576
|
+
* ```
|
|
577
|
+
*/
|
|
578
|
+
const FormProvider = (props) => {
|
|
579
|
+
const { children, watch, getValues, getFieldState, setError, clearErrors, setValue, trigger, formState, resetField, reset, handleSubmit, unregister, control, register, setFocus, subscribe, } = props;
|
|
580
|
+
return (React__default.createElement(HookFormContext.Provider, { value: React__default.useMemo(() => ({
|
|
581
|
+
watch,
|
|
582
|
+
getValues,
|
|
583
|
+
getFieldState,
|
|
584
|
+
setError,
|
|
585
|
+
clearErrors,
|
|
586
|
+
setValue,
|
|
587
|
+
trigger,
|
|
588
|
+
formState,
|
|
589
|
+
resetField,
|
|
590
|
+
reset,
|
|
591
|
+
handleSubmit,
|
|
592
|
+
unregister,
|
|
593
|
+
control,
|
|
594
|
+
register,
|
|
595
|
+
setFocus,
|
|
596
|
+
subscribe,
|
|
597
|
+
}), [
|
|
598
|
+
clearErrors,
|
|
599
|
+
control,
|
|
600
|
+
formState,
|
|
601
|
+
getFieldState,
|
|
602
|
+
getValues,
|
|
603
|
+
handleSubmit,
|
|
604
|
+
register,
|
|
605
|
+
reset,
|
|
606
|
+
resetField,
|
|
607
|
+
setError,
|
|
608
|
+
setFocus,
|
|
609
|
+
setValue,
|
|
610
|
+
subscribe,
|
|
611
|
+
trigger,
|
|
612
|
+
unregister,
|
|
613
|
+
watch,
|
|
614
|
+
]) },
|
|
615
|
+
React__default.createElement(HookFormControlContext.Provider, { value: control }, children)));
|
|
616
|
+
};
|
|
617
|
+
|
|
607
618
|
function mapApiErrorsToForm(error, form, options = {}) {
|
|
608
619
|
const { fieldMapping = {}, setRootError = true } = options;
|
|
609
620
|
if (!error || typeof error !== "object") {
|