@tamagui/form 2.7.7 → 3.0.0-beta.643.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","View","createStyledContext","styled","composeEventHandlers","withStaticProperties","FORM_NAME","FormFrame","name","render","FormContext","onSubmit","useStyledContext","useFormContext","Provider","FormProvider","FormTriggerFrame","FormTrigger","styleable","props","forwardedRef","scope","children","onPress","triggerProps","context","role","ref","FormComponent","Form","param","e","preventDefault","Form2","Trigger"],"sources":["../../src/Form.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,GAAA,IAAMC,IAAA,2BAAqB;AACpC,SAASC,IAAA,EAAAC,mBAAsB,EAAAC,MAAA,uBAA4B;AA+CrD,SAAAC,oBAAA,EAAAC,oBAAA;AA7CN,IAAAC,SAAM,SAAY;AAEX,IAAAC,SAAM,GAAAJ,MAAY,CAAAF,IAAO;EAC9BO,IAAA,EAAMF,SAAA;EACNG,MAAA,EAAQ;AACV,CAAC;AAUM,IAAAC,WAAM,GAAAR,mBAAc;EACzBS,QAAA,EAAU;AACZ,CAAqB;AAEd;EAAMC,gBAAE,EAAAC,cAAkB;EAAAC,QAAgB,EAAAC;AAAU,IAAaL,WAAI;AAY5E,IAAAM,gBAAM,GAAAb,MAAmB,CAAAF,IAAO;EAC9BO,IAAA,EAAM;AACR,CAAC;AAMM,IAAAS,WAAM,GAAAD,gBAAc,CAAAE,SAAiB,WAAAC,KAAA,EAAAC,YAAA;EAC1C,IAAC;IAAAC,KAAO;IAAAC,QAAA;IAAAC,OAAiB;IAAA,GAAAC;EAAA,IAAAL,KAAA;EACvB,IAAAM,OAAQ,GAAAZ,cAAiB,CAAAQ,KAAA;EACzB,sBAAgBrB,IAAA,CAAAgB,gBAAoB;IAEpCU,IAAA,UACE;IAAA,GAACF,YAAA;IAAAG,GAAA,EAAAP,YAAA;IAAAG,OACC,EAAAnB,oBAAK,CAAAmB,OAAA,EAAAE,OAAA,CAAAd,QAAA;IAAAW;EACD;AACC;AACkD,IAAAM,aAEtD,GAAArB,SAAA,CAAAW,SAAA,UAAAW,KAAAC,KAAA,EAAAH,GAAA;EAAA;IAAAN,KAAA;IAAAV,QAAA;IAAA,GAAAQ;EAAA,IAAAW,KAAA;EAAA,OACH,eAAA9B,IAAA,CAAAe,YAAA;IAEJM,KAAA;IACFV,QAAA;IAMAW,QAAM,iBAAgBtB,IAAU,CAAAO,SAA0B;MAIxDoB,GACE;MACG,GAAAR,KAAA;MAAAR,QAAA,WAAAA,CAAAoB,CAAA;QACCA,CAAA,CAAAC,cAAA;QACCrB,QAAI,aAAAA,QAAA,uBAAAA,QAAA;MACL;IACE;EACA;AAAW;AACb,IAAAsB,KAAA,GAAA5B,oBAAA,CAAAuB,aAAA;EACFM,OACF,EAAAjB;AAEJ,CAAC;AAEM,SACLgB,KAAA,IAASJ,IAAA,EACVnB,WAAA,E","ignoreList":[]}
1
+ {"version":3,"file":"Form.native.js","names":[],"sources":["esm/Form.native.js"],"sourcesContent":["import { jsx as _jsx } from \"react/jsx-runtime\";\nimport { createStyledContext, createStyledHOC, isWeb, styled, View } from \"@tamagui/core\";\nimport { focusFocusable } from \"@tamagui/focusable\";\nimport { composeEventHandlers, withStaticProperties } from \"@tamagui/helpers\";\nimport * as React from \"react\";\nvar FORM_NAME = \"Form\";\nvar EMPTY_ERRORS = {};\nvar defaultSubmitAttemptedRef = {\n current: false\n};\nvar defaultFormElementRef = {\n current: null\n};\nvar FormRegistryContext = /* @__PURE__ */ React.createContext({\n validationMode: \"onSubmit\",\n errors: EMPTY_ERRORS,\n formElementRef: defaultFormElementRef,\n submitAttemptedRef: defaultSubmitAttemptedRef,\n clearErrors: function() {\n },\n getValues: function() {\n return {};\n },\n registerField: function() {\n return function() {\n };\n }\n});\nvar useFormRegistryContext = function() {\n return React.useContext(FormRegistryContext);\n};\nvar FormContext = createStyledContext({\n onSubmit: void 0\n});\nvar { useStyledContext: useFormContext, Provider: FormProvider } = FormContext;\nvar FormFrame = styled(View, {\n displayName: FORM_NAME,\n render: \"form\"\n});\nvar FormTriggerFrame = styled(View, {\n displayName: \"FormTrigger\"\n});\nvar FormTrigger = createStyledHOC(FormTriggerFrame, function(props, forwardedRef) {\n var { scope, children, onPress, ...triggerProps } = props;\n var context = useFormContext(scope);\n return /* @__PURE__ */ _jsx(FormTriggerFrame, {\n role: \"button\",\n ...triggerProps,\n ref: forwardedRef,\n onPress: composeEventHandlers(onPress, context.onSubmit),\n children\n });\n});\nfunction hasError(errors, name) {\n if (!name || !Object.hasOwn(errors, name)) {\n return false;\n }\n var error = errors[name];\n return Array.isArray(error) ? error.length > 0 : Boolean(error);\n}\nvar FormComponent = createStyledHOC(FormFrame, function Form(param, forwardedRef) {\n var { scope, validationMode = \"onSubmit\", errors: externalErrors, actionsRef, onSubmit, ...props } = param;\n var registryRef = React.useRef(/* @__PURE__ */ new Map());\n var formElementRef = React.useRef(null);\n var submittedRef = React.useRef(false);\n var submitAttemptedRef = React.useRef(false);\n var pendingSubmitDetailsRef = React.useRef(null);\n var onSubmitRef = React.useRef(onSubmit);\n onSubmitRef.current = onSubmit;\n var [errors, setErrors] = React.useState(externalErrors !== null && externalErrors !== void 0 ? externalErrors : EMPTY_ERRORS);\n var errorsRef = React.useRef(errors);\n errorsRef.current = errors;\n React.useEffect(function() {\n var next = externalErrors !== null && externalErrors !== void 0 ? externalErrors : EMPTY_ERRORS;\n errorsRef.current = next;\n setErrors(next);\n }, [\n externalErrors\n ]);\n var registerField = React.useCallback(function(id, registration) {\n registryRef.current.set(id, registration);\n return function() {\n if (registryRef.current.get(id) === registration) {\n registryRef.current.delete(id);\n }\n };\n }, []);\n var getValues = React.useCallback(function() {\n var values = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = registryRef.current.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var field = _step.value;\n if (field.name) {\n values[field.name] = field.getValue();\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return values;\n }, []);\n var clearErrors = React.useCallback(function(name) {\n if (!name || !hasError(errorsRef.current, name)) {\n return;\n }\n var next = {\n ...errorsRef.current\n };\n delete next[name];\n errorsRef.current = next;\n setErrors(next);\n }, []);\n var focusFirstInvalid = React.useCallback(function() {\n var hasInvalid = false;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = registryRef.current.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var field = _step.value;\n if (!hasError(errorsRef.current, field.name) && field.validityData.state.valid !== false) {\n continue;\n }\n hasInvalid = true;\n var control = field.controlRef.current;\n if (isWeb && (control === null || control === void 0 ? void 0 : control.focus)) {\n control.focus();\n if (control.tagName === \"INPUT\" || control.tagName === \"TEXTAREA\") {\n var _control_select;\n (_control_select = control.select) === null || _control_select === void 0 ? void 0 : _control_select.call(control);\n }\n return true;\n }\n if (!isWeb && field.controlId) {\n focusFocusable(field.controlId);\n return true;\n }\n if (control === null || control === void 0 ? void 0 : control.focus) {\n control.focus();\n return true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return hasInvalid;\n }, []);\n var performSubmit = React.useCallback(function(details) {\n var _onSubmitRef_current;\n submitAttemptedRef.current = true;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = registryRef.current.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var field = _step.value;\n field.validate();\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n if (focusFirstInvalid()) {\n return;\n }\n submittedRef.current = true;\n void ((_onSubmitRef_current = onSubmitRef.current) === null || _onSubmitRef_current === void 0 ? void 0 : _onSubmitRef_current.call(onSubmitRef, getValues(), details));\n }, [\n focusFirstInvalid,\n getValues\n ]);\n var requestSubmit = React.useCallback(function(event) {\n var _event_preventDefault, _formElementRef_current;\n event === null || event === void 0 ? void 0 : (_event_preventDefault = event.preventDefault) === null || _event_preventDefault === void 0 ? void 0 : _event_preventDefault.call(event);\n var _event_nativeEvent;\n var details = {\n reason: \"trigger-press\",\n event: (_event_nativeEvent = event === null || event === void 0 ? void 0 : event.nativeEvent) !== null && _event_nativeEvent !== void 0 ? _event_nativeEvent : event,\n trigger: event === null || event === void 0 ? void 0 : event.currentTarget\n };\n if (isWeb && ((_formElementRef_current = formElementRef.current) === null || _formElementRef_current === void 0 ? void 0 : _formElementRef_current.requestSubmit)) {\n pendingSubmitDetailsRef.current = details;\n formElementRef.current.requestSubmit();\n return;\n }\n performSubmit(details);\n }, [\n performSubmit\n ]);\n React.useEffect(function() {\n if (!submittedRef.current) {\n return;\n }\n submittedRef.current = false;\n focusFirstInvalid();\n }, [\n errors,\n focusFirstInvalid\n ]);\n React.useImperativeHandle(actionsRef, function() {\n return {\n validate(fieldName) {\n if (fieldName) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = void 0;\n try {\n for (var _iterator = registryRef.current.values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var field = _step.value;\n if (field.name === fieldName) {\n field.validate();\n return;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n return;\n }\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = void 0;\n try {\n for (var _iterator1 = registryRef.current.values()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true) {\n var field1 = _step1.value;\n field1.validate();\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally {\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\n }\n }\n };\n }, []);\n var registryContext = React.useMemo(function() {\n return {\n validationMode,\n errors,\n formElementRef,\n submitAttemptedRef,\n clearErrors,\n getValues,\n registerField\n };\n }, [\n clearErrors,\n errors,\n getValues,\n registerField,\n validationMode\n ]);\n return /* @__PURE__ */ _jsx(FormRegistryContext.Provider, {\n value: registryContext,\n children: /* @__PURE__ */ _jsx(FormProvider, {\n scope,\n onSubmit: requestSubmit,\n children: /* @__PURE__ */ _jsx(FormFrame, {\n ...props,\n ref: function(element) {\n formElementRef.current = element;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(element);\n } else if (forwardedRef) {\n forwardedRef.current = element;\n }\n },\n noValidate: true,\n onSubmit: function(event) {\n var _event_nativeEvent;\n event.preventDefault();\n var pendingDetails = pendingSubmitDetailsRef.current;\n pendingSubmitDetailsRef.current = null;\n var _event_nativeEvent1;\n performSubmit(pendingDetails !== null && pendingDetails !== void 0 ? pendingDetails : {\n reason: \"submit\",\n event: (_event_nativeEvent1 = event.nativeEvent) !== null && _event_nativeEvent1 !== void 0 ? _event_nativeEvent1 : event,\n trigger: (_event_nativeEvent = event.nativeEvent) === null || _event_nativeEvent === void 0 ? void 0 : _event_nativeEvent.submitter\n });\n }\n })\n })\n });\n});\nvar Form2 = withStaticProperties(FormComponent, {\n Trigger: FormTrigger\n});\nexport {\n Form2 as Form,\n FormContext,\n FormFrame,\n FormProvider,\n FormRegistryContext,\n FormTrigger,\n useFormContext,\n useFormRegistryContext\n};\n//# sourceMappingURL=Form.js.map\n"],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -1,2 +1 @@
1
- export * from "./Form.mjs";
2
- //# sourceMappingURL=index.js.map
1
+ export * from "./Form.mjs"
@@ -1,2 +1 @@
1
- export * from "./Form.mjs";
2
- //# sourceMappingURL=index.mjs.map
1
+ export * from "./Form.mjs"
@@ -1,2 +1 @@
1
- export * from "./Form.native.js";
2
- //# sourceMappingURL=index.native.js.map
1
+ export * from "./Form.native.js"
package/dist/jsx/Form.mjs CHANGED
@@ -1,57 +1,208 @@
1
- import { View, createStyledContext, styled } from "@tamagui/core";
1
+ import { View, createStyledContext, createStyledHOC, isWeb, styled } from "@tamagui/core";
2
+ import { focusFocusable } from "@tamagui/focusable";
2
3
  import { composeEventHandlers, withStaticProperties } from "@tamagui/helpers";
4
+ import * as React from "react";
3
5
  import { jsx } from "react/jsx-runtime";
6
+
4
7
  const FORM_NAME = "Form";
5
- const FormFrame = styled(View, {
6
- name: FORM_NAME,
7
- render: "form"
8
- });
9
- const FormContext = createStyledContext({
10
- onSubmit: void 0
8
+ const EMPTY_ERRORS = {};
9
+ const defaultSubmitAttemptedRef = { current: false };
10
+ const defaultFormElementRef = { current: null };
11
+ const FormRegistryContext = React.createContext({
12
+ validationMode: "onSubmit",
13
+ errors: EMPTY_ERRORS,
14
+ formElementRef: defaultFormElementRef,
15
+ submitAttemptedRef: defaultSubmitAttemptedRef,
16
+ clearErrors: () => {},
17
+ getValues: () => ({}),
18
+ registerField: () => () => {}
11
19
  });
12
- const {
13
- useStyledContext: useFormContext,
14
- Provider: FormProvider
15
- } = FormContext;
16
- const FormTriggerFrame = styled(View, {
17
- name: "FormTrigger"
18
- });
19
- const FormTrigger = FormTriggerFrame.styleable((props, forwardedRef) => {
20
- const {
21
- scope,
22
- children,
23
- onPress,
24
- ...triggerProps
25
- } = props;
26
- const context = useFormContext(scope);
27
- return /* @__PURE__ */jsx(FormTriggerFrame, {
28
- role: "button",
29
- ...triggerProps,
30
- ref: forwardedRef,
31
- onPress: composeEventHandlers(onPress, context.onSubmit),
32
- children
33
- });
20
+ const useFormRegistryContext = () => React.useContext(FormRegistryContext);
21
+ const FormContext = createStyledContext({ onSubmit: void 0 });
22
+ const { useStyledContext: useFormContext, Provider: FormProvider } = FormContext;
23
+ const FormFrame = styled(View, {
24
+ displayName: FORM_NAME,
25
+ render: "form"
34
26
  });
35
- const FormComponent = FormFrame.styleable(function Form({
36
- scope,
37
- onSubmit,
38
- ...props
39
- }, ref) {
40
- return /* @__PURE__ */jsx(FormProvider, {
41
- scope,
42
- onSubmit,
43
- children: /* @__PURE__ */jsx(FormFrame, {
44
- ref,
45
- ...props,
46
- onSubmit: e => {
47
- e.preventDefault();
48
- onSubmit?.();
49
- }
50
- })
51
- });
27
+ const FormTriggerFrame = styled(View, { displayName: "FormTrigger" });
28
+ const FormTrigger = createStyledHOC(FormTriggerFrame, (props, forwardedRef) => {
29
+ const { scope, children, onPress, ...triggerProps } = props;
30
+ const context = useFormContext(scope);
31
+ return /* @__PURE__ */ jsx(FormTriggerFrame, {
32
+ role: "button",
33
+ ...triggerProps,
34
+ ref: forwardedRef,
35
+ onPress: composeEventHandlers(onPress, context.onSubmit),
36
+ children
37
+ });
52
38
  });
53
- const Form2 = withStaticProperties(FormComponent, {
54
- Trigger: FormTrigger
39
+ function hasError(errors, name) {
40
+ if (!name || !Object.hasOwn(errors, name)) {
41
+ return false;
42
+ }
43
+ const error = errors[name];
44
+ return Array.isArray(error) ? error.length > 0 : Boolean(error);
45
+ }
46
+ const FormComponent = createStyledHOC(FormFrame, function Form({ scope, validationMode = "onSubmit", errors: externalErrors, actionsRef, onSubmit, ...props }, forwardedRef) {
47
+ const registryRef = React.useRef(/* @__PURE__ */ new Map());
48
+ const formElementRef = React.useRef(null);
49
+ const submittedRef = React.useRef(false);
50
+ const submitAttemptedRef = React.useRef(false);
51
+ const pendingSubmitDetailsRef = React.useRef(null);
52
+ const onSubmitRef = React.useRef(onSubmit);
53
+ onSubmitRef.current = onSubmit;
54
+ const [errors, setErrors] = React.useState(externalErrors ?? EMPTY_ERRORS);
55
+ const errorsRef = React.useRef(errors);
56
+ errorsRef.current = errors;
57
+ React.useEffect(() => {
58
+ const next = externalErrors ?? EMPTY_ERRORS;
59
+ errorsRef.current = next;
60
+ setErrors(next);
61
+ }, [externalErrors]);
62
+ const registerField = React.useCallback((id, registration) => {
63
+ registryRef.current.set(id, registration);
64
+ return () => {
65
+ if (registryRef.current.get(id) === registration) {
66
+ registryRef.current.delete(id);
67
+ }
68
+ };
69
+ }, []);
70
+ const getValues = React.useCallback(() => {
71
+ const values = {};
72
+ for (const field of registryRef.current.values()) {
73
+ if (field.name) {
74
+ values[field.name] = field.getValue();
75
+ }
76
+ }
77
+ return values;
78
+ }, []);
79
+ const clearErrors = React.useCallback((name) => {
80
+ if (!name || !hasError(errorsRef.current, name)) {
81
+ return;
82
+ }
83
+ const next = { ...errorsRef.current };
84
+ delete next[name];
85
+ errorsRef.current = next;
86
+ setErrors(next);
87
+ }, []);
88
+ const focusFirstInvalid = React.useCallback(() => {
89
+ let hasInvalid = false;
90
+ for (const field of registryRef.current.values()) {
91
+ if (!hasError(errorsRef.current, field.name) && field.validityData.state.valid !== false) {
92
+ continue;
93
+ }
94
+ hasInvalid = true;
95
+ const control = field.controlRef.current;
96
+ if (isWeb && control?.focus) {
97
+ control.focus();
98
+ if (control.tagName === "INPUT" || control.tagName === "TEXTAREA") {
99
+ control.select?.();
100
+ }
101
+ return true;
102
+ }
103
+ if (!isWeb && field.controlId) {
104
+ focusFocusable(field.controlId);
105
+ return true;
106
+ }
107
+ if (control?.focus) {
108
+ control.focus();
109
+ return true;
110
+ }
111
+ }
112
+ return hasInvalid;
113
+ }, []);
114
+ const performSubmit = React.useCallback((details) => {
115
+ submitAttemptedRef.current = true;
116
+ for (const field of registryRef.current.values()) {
117
+ field.validate();
118
+ }
119
+ if (focusFirstInvalid()) {
120
+ return;
121
+ }
122
+ submittedRef.current = true;
123
+ void onSubmitRef.current?.(getValues(), details);
124
+ }, [focusFirstInvalid, getValues]);
125
+ const requestSubmit = React.useCallback((event) => {
126
+ event?.preventDefault?.();
127
+ const details = {
128
+ reason: "trigger-press",
129
+ event: event?.nativeEvent ?? event,
130
+ trigger: event?.currentTarget
131
+ };
132
+ if (isWeb && formElementRef.current?.requestSubmit) {
133
+ pendingSubmitDetailsRef.current = details;
134
+ formElementRef.current.requestSubmit();
135
+ return;
136
+ }
137
+ performSubmit(details);
138
+ }, [performSubmit]);
139
+ React.useEffect(() => {
140
+ if (!submittedRef.current) {
141
+ return;
142
+ }
143
+ submittedRef.current = false;
144
+ focusFirstInvalid();
145
+ }, [errors, focusFirstInvalid]);
146
+ React.useImperativeHandle(actionsRef, () => ({ validate(fieldName) {
147
+ if (fieldName) {
148
+ for (const field of registryRef.current.values()) {
149
+ if (field.name === fieldName) {
150
+ field.validate();
151
+ return;
152
+ }
153
+ }
154
+ return;
155
+ }
156
+ for (const field of registryRef.current.values()) {
157
+ field.validate();
158
+ }
159
+ } }), []);
160
+ const registryContext = React.useMemo(() => ({
161
+ validationMode,
162
+ errors,
163
+ formElementRef,
164
+ submitAttemptedRef,
165
+ clearErrors,
166
+ getValues,
167
+ registerField
168
+ }), [
169
+ clearErrors,
170
+ errors,
171
+ getValues,
172
+ registerField,
173
+ validationMode
174
+ ]);
175
+ return /* @__PURE__ */ jsx(FormRegistryContext.Provider, {
176
+ value: registryContext,
177
+ children: /* @__PURE__ */ jsx(FormProvider, {
178
+ scope,
179
+ onSubmit: requestSubmit,
180
+ children: /* @__PURE__ */ jsx(FormFrame, {
181
+ ...props,
182
+ ref: (element) => {
183
+ formElementRef.current = element;
184
+ if (typeof forwardedRef === "function") {
185
+ forwardedRef(element);
186
+ } else if (forwardedRef) {
187
+ forwardedRef.current = element;
188
+ }
189
+ },
190
+ noValidate: true,
191
+ onSubmit: (event) => {
192
+ event.preventDefault();
193
+ const pendingDetails = pendingSubmitDetailsRef.current;
194
+ pendingSubmitDetailsRef.current = null;
195
+ performSubmit(pendingDetails ?? {
196
+ reason: "submit",
197
+ event: event.nativeEvent ?? event,
198
+ trigger: event.nativeEvent?.submitter
199
+ });
200
+ }
201
+ })
202
+ })
203
+ });
55
204
  });
56
- export { Form2 as Form, FormContext, FormFrame, FormProvider, FormTrigger, useFormContext };
205
+ const Form2 = withStaticProperties(FormComponent, { Trigger: FormTrigger });
206
+
207
+ export { Form2 as Form, FormContext, FormFrame, FormProvider, FormRegistryContext, FormTrigger, useFormContext, useFormRegistryContext };
57
208
  //# sourceMappingURL=Form.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":["View","createStyledContext","styled","composeEventHandlers","withStaticProperties","jsx","FORM_NAME","FormFrame","name","render","FormContext","onSubmit","useStyledContext","useFormContext","Provider","FormProvider","FormTriggerFrame","FormTrigger","styleable","props","forwardedRef","scope","children","onPress","triggerProps","context","role","ref","FormComponent","Form","e","preventDefault","Form2","Trigger"],"sources":["../../src/Form.tsx"],"sourcesContent":[null],"mappings":"AACA,SAASA,IAAA,EAAMC,mBAAA,EAAqBC,MAAA,QAAc;AAClD,SAASC,oBAAA,EAAsBC,oBAAA,QAA4B;AA+CrD,SAAAC,GAAA;AA7CN,MAAMC,SAAA,GAAY;AAEX,MAAMC,SAAA,GAAYL,MAAA,CAAOF,IAAA,EAAM;EACpCQ,IAAA,EAAMF,SAAA;EACNG,MAAA,EAAQ;AACV,CAAC;AAUM,MAAMC,WAAA,GAAcT,mBAAA,CAAsC;EAC/DU,QAAA,EAAU;AACZ,CAAqB;AAEd,MAAM;EAAEC,gBAAA,EAAkBC,cAAA;EAAgBC,QAAA,EAAUC;AAAa,IAAIL,WAAA;AAY5E,MAAMM,gBAAA,GAAmBd,MAAA,CAAOF,IAAA,EAAM;EACpCQ,IAAA,EAAM;AACR,CAAC;AAMM,MAAMS,WAAA,GAAcD,gBAAA,CAAiBE,SAAA,CAC1C,CAACC,KAAA,EAAOC,YAAA,KAAiB;EACvB,MAAM;IAAEC,KAAA;IAAOC,QAAA;IAAUC,OAAA;IAAS,GAAGC;EAAa,IAAIL,KAAA;EACtD,MAAMM,OAAA,GAAUZ,cAAA,CAAeQ,KAAK;EAEpC,OACE,eAAAhB,GAAA,CAACW,gBAAA;IACCU,IAAA,EAAK;IACJ,GAAGF,YAAA;IACJG,GAAA,EAAKP,YAAA;IACLG,OAAA,EAASpB,oBAAA,CAAqBoB,OAAA,EAASE,OAAA,CAAQd,QAAQ;IAEtDW;EAAA,CACH;AAEJ,CACF;AAMA,MAAMM,aAAA,GAAgBrB,SAAA,CAAUW,SAAA,CAA0B,SAASW,KACjE;EAAER,KAAA;EAAOV,QAAA;EAAU,GAAGQ;AAAM,GAC5BQ,GAAA,EACA;EACA,OACE,eAAAtB,GAAA,CAACU,YAAA;IAAaM,KAAA;IAAcV,QAAA;IAC1BW,QAAA,iBAAAjB,GAAA,CAACE,SAAA;MACCoB,GAAA;MACC,GAAIR,KAAA;MACLR,QAAA,EAAWmB,CAAA,IAAW;QACpBA,CAAA,CAAEC,cAAA,CAAe;QACjBpB,QAAA,GAAW;MACb;IAAA,CACF;EAAA,CACF;AAEJ,CAAC;AAEM,MAAMqB,KAAA,GAAO5B,oBAAA,CAAqBwB,aAAA,EAAe;EACtDK,OAAA,EAAShB;AACX,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"Form.js","names":[],"sources":["jsx/Form.js"],"sourcesContent":["import { createStyledContext, createStyledHOC, isWeb, styled, View } from \"@tamagui/core\";\nimport { focusFocusable } from \"@tamagui/focusable\";\nimport { composeEventHandlers, withStaticProperties } from \"@tamagui/helpers\";\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nconst FORM_NAME = \"Form\";\nconst EMPTY_ERRORS = {};\nconst defaultSubmitAttemptedRef = { current: false };\nconst defaultFormElementRef = { current: null };\nconst FormRegistryContext = React.createContext({\n validationMode: \"onSubmit\",\n errors: EMPTY_ERRORS,\n formElementRef: defaultFormElementRef,\n submitAttemptedRef: defaultSubmitAttemptedRef,\n clearErrors: () => {\n },\n getValues: () => ({}),\n registerField: () => () => {\n }\n});\nconst useFormRegistryContext = () => React.useContext(FormRegistryContext);\nconst FormContext = createStyledContext({\n onSubmit: void 0\n});\nconst { useStyledContext: useFormContext, Provider: FormProvider } = FormContext;\nconst FormFrame = styled(View, {\n displayName: FORM_NAME,\n render: \"form\"\n});\nconst FormTriggerFrame = styled(View, {\n displayName: \"FormTrigger\"\n});\nconst FormTrigger = createStyledHOC(\n FormTriggerFrame,\n (props, forwardedRef) => {\n const { scope, children, onPress, ...triggerProps } = props;\n const context = useFormContext(scope);\n return /* @__PURE__ */ jsx(\n FormTriggerFrame,\n {\n role: \"button\",\n ...triggerProps,\n ref: forwardedRef,\n onPress: composeEventHandlers(onPress, context.onSubmit),\n children\n }\n );\n }\n);\nfunction hasError(errors, name) {\n if (!name || !Object.hasOwn(errors, name)) {\n return false;\n }\n const error = errors[name];\n return Array.isArray(error) ? error.length > 0 : Boolean(error);\n}\nconst FormComponent = createStyledHOC(\n FormFrame,\n function Form({\n scope,\n validationMode = \"onSubmit\",\n errors: externalErrors,\n actionsRef,\n onSubmit,\n ...props\n }, forwardedRef) {\n const registryRef = React.useRef(/* @__PURE__ */ new Map());\n const formElementRef = React.useRef(null);\n const submittedRef = React.useRef(false);\n const submitAttemptedRef = React.useRef(false);\n const pendingSubmitDetailsRef = React.useRef(null);\n const onSubmitRef = React.useRef(onSubmit);\n onSubmitRef.current = onSubmit;\n const [errors, setErrors] = React.useState(externalErrors ?? EMPTY_ERRORS);\n const errorsRef = React.useRef(errors);\n errorsRef.current = errors;\n React.useEffect(() => {\n const next = externalErrors ?? EMPTY_ERRORS;\n errorsRef.current = next;\n setErrors(next);\n }, [externalErrors]);\n const registerField = React.useCallback(\n (id, registration) => {\n registryRef.current.set(id, registration);\n return () => {\n if (registryRef.current.get(id) === registration) {\n registryRef.current.delete(id);\n }\n };\n },\n []\n );\n const getValues = React.useCallback(() => {\n const values = {};\n for (const field of registryRef.current.values()) {\n if (field.name) {\n values[field.name] = field.getValue();\n }\n }\n return values;\n }, []);\n const clearErrors = React.useCallback((name) => {\n if (!name || !hasError(errorsRef.current, name)) {\n return;\n }\n const next = { ...errorsRef.current };\n delete next[name];\n errorsRef.current = next;\n setErrors(next);\n }, []);\n const focusFirstInvalid = React.useCallback(() => {\n let hasInvalid = false;\n for (const field of registryRef.current.values()) {\n if (!hasError(errorsRef.current, field.name) && field.validityData.state.valid !== false) {\n continue;\n }\n hasInvalid = true;\n const control = field.controlRef.current;\n if (isWeb && control?.focus) {\n control.focus();\n if (control.tagName === \"INPUT\" || control.tagName === \"TEXTAREA\") {\n control.select?.();\n }\n return true;\n }\n if (!isWeb && field.controlId) {\n focusFocusable(field.controlId);\n return true;\n }\n if (control?.focus) {\n control.focus();\n return true;\n }\n }\n return hasInvalid;\n }, []);\n const performSubmit = React.useCallback(\n (details) => {\n submitAttemptedRef.current = true;\n for (const field of registryRef.current.values()) {\n field.validate();\n }\n if (focusFirstInvalid()) {\n return;\n }\n submittedRef.current = true;\n void onSubmitRef.current?.(getValues(), details);\n },\n [focusFirstInvalid, getValues]\n );\n const requestSubmit = React.useCallback(\n (event) => {\n event?.preventDefault?.();\n const details = {\n reason: \"trigger-press\",\n event: event?.nativeEvent ?? event,\n trigger: event?.currentTarget\n };\n if (isWeb && formElementRef.current?.requestSubmit) {\n pendingSubmitDetailsRef.current = details;\n formElementRef.current.requestSubmit();\n return;\n }\n performSubmit(details);\n },\n [performSubmit]\n );\n React.useEffect(() => {\n if (!submittedRef.current) {\n return;\n }\n submittedRef.current = false;\n focusFirstInvalid();\n }, [errors, focusFirstInvalid]);\n React.useImperativeHandle(\n actionsRef,\n () => ({\n validate(fieldName) {\n if (fieldName) {\n for (const field of registryRef.current.values()) {\n if (field.name === fieldName) {\n field.validate();\n return;\n }\n }\n return;\n }\n for (const field of registryRef.current.values()) {\n field.validate();\n }\n }\n }),\n []\n );\n const registryContext = React.useMemo(\n () => ({\n validationMode,\n errors,\n formElementRef,\n submitAttemptedRef,\n clearErrors,\n getValues,\n registerField\n }),\n [clearErrors, errors, getValues, registerField, validationMode]\n );\n return /* @__PURE__ */ jsx(FormRegistryContext.Provider, { value: registryContext, children: /* @__PURE__ */ jsx(FormProvider, { scope, onSubmit: requestSubmit, children: /* @__PURE__ */ jsx(\n FormFrame,\n {\n ...props,\n ref: (element) => {\n formElementRef.current = element;\n if (typeof forwardedRef === \"function\") {\n forwardedRef(element);\n } else if (forwardedRef) {\n forwardedRef.current = element;\n }\n },\n noValidate: true,\n onSubmit: (event) => {\n event.preventDefault();\n const pendingDetails = pendingSubmitDetailsRef.current;\n pendingSubmitDetailsRef.current = null;\n performSubmit(\n pendingDetails ?? {\n reason: \"submit\",\n event: event.nativeEvent ?? event,\n trigger: event.nativeEvent?.submitter\n }\n );\n }\n }\n ) }) });\n }\n);\nconst Form2 = withStaticProperties(FormComponent, {\n Trigger: FormTrigger\n});\nexport {\n Form2 as Form,\n FormContext,\n FormFrame,\n FormProvider,\n FormRegistryContext,\n FormTrigger,\n useFormContext,\n useFormRegistryContext\n};\n//# sourceMappingURL=Form.js.map\n"],"mappings":";;;;;;;AAKA,MAAM,YAAY;AAClB,MAAM,eAAe,CAAC;AACtB,MAAM,4BAA4B,EAAE,SAAS,MAAM;AACnD,MAAM,wBAAwB,EAAE,SAAS,KAAK;AAC9C,MAAM,sBAAsB,MAAM,cAAc;CAC9C,gBAAgB;CAChB,QAAQ;CACR,gBAAgB;CAChB,oBAAoB;CACpB,mBAAmB,CACnB;CACA,kBAAkB,CAAC;CACnB,2BAA2B,CAC3B;AACF,CAAC;AACD,MAAM,+BAA+B,MAAM,WAAW,mBAAmB;AACzE,MAAM,cAAc,oBAAoB,EACtC,UAAU,KAAK,EACjB,CAAC;AACD,MAAM,EAAE,kBAAkB,gBAAgB,UAAU,iBAAiB;AACrE,MAAM,YAAY,OAAO,MAAM;CAC7B,aAAa;CACb,QAAQ;AACV,CAAC;AACD,MAAM,mBAAmB,OAAO,MAAM,EACpC,aAAa,cACf,CAAC;AACD,MAAM,cAAc,gBAClB,mBACC,OAAO,iBAAiB;CACvB,MAAM,EAAE,OAAO,UAAU,SAAS,GAAG,iBAAiB;CACtD,MAAM,UAAU,eAAe,KAAK;CACpC,OAAuB,oBACrB,kBACA;EACE,MAAM;EACN,GAAG;EACH,KAAK;EACL,SAAS,qBAAqB,SAAS,QAAQ,QAAQ;EACvD;CACF,CACF;AACF,CACF;AACA,SAAS,SAAS,QAAQ,MAAM;CAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,OAAO,QAAQ,IAAI,GAAG;EACzC,OAAO;CACT;CACA,MAAM,QAAQ,OAAO;CACrB,OAAO,MAAM,QAAQ,KAAK,IAAI,MAAM,SAAS,IAAI,QAAQ,KAAK;AAChE;AACA,MAAM,gBAAgB,gBACpB,WACA,SAAS,KAAK,EACZ,OACA,iBAAiB,YACjB,QAAQ,gBACR,YACA,UACA,GAAG,SACF,cAAc;CACf,MAAM,cAAc,MAAM,uBAAuB,IAAI,IAAI,CAAC;CAC1D,MAAM,iBAAiB,MAAM,OAAO,IAAI;CACxC,MAAM,eAAe,MAAM,OAAO,KAAK;CACvC,MAAM,qBAAqB,MAAM,OAAO,KAAK;CAC7C,MAAM,0BAA0B,MAAM,OAAO,IAAI;CACjD,MAAM,cAAc,MAAM,OAAO,QAAQ;CACzC,YAAY,UAAU;CACtB,MAAM,CAAC,QAAQ,aAAa,MAAM,SAAS,kBAAkB,YAAY;CACzE,MAAM,YAAY,MAAM,OAAO,MAAM;CACrC,UAAU,UAAU;CACpB,MAAM,gBAAgB;EACpB,MAAM,OAAO,kBAAkB;EAC/B,UAAU,UAAU;EACpB,UAAU,IAAI;CAChB,GAAG,CAAC,cAAc,CAAC;CACnB,MAAM,gBAAgB,MAAM,aACzB,IAAI,iBAAiB;EACpB,YAAY,QAAQ,IAAI,IAAI,YAAY;EACxC,aAAa;GACX,IAAI,YAAY,QAAQ,IAAI,EAAE,MAAM,cAAc;IAChD,YAAY,QAAQ,OAAO,EAAE;GAC/B;EACF;CACF,GACA,CAAC,CACH;CACA,MAAM,YAAY,MAAM,kBAAkB;EACxC,MAAM,SAAS,CAAC;EAChB,KAAK,MAAM,SAAS,YAAY,QAAQ,OAAO,GAAG;GAChD,IAAI,MAAM,MAAM;IACd,OAAO,MAAM,QAAQ,MAAM,SAAS;GACtC;EACF;EACA,OAAO;CACT,GAAG,CAAC,CAAC;CACL,MAAM,cAAc,MAAM,aAAa,SAAS;EAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,UAAU,SAAS,IAAI,GAAG;GAC/C;EACF;EACA,MAAM,OAAO,EAAE,GAAG,UAAU,QAAQ;EACpC,OAAO,KAAK;EACZ,UAAU,UAAU;EACpB,UAAU,IAAI;CAChB,GAAG,CAAC,CAAC;CACL,MAAM,oBAAoB,MAAM,kBAAkB;EAChD,IAAI,aAAa;EACjB,KAAK,MAAM,SAAS,YAAY,QAAQ,OAAO,GAAG;GAChD,IAAI,CAAC,SAAS,UAAU,SAAS,MAAM,IAAI,KAAK,MAAM,aAAa,MAAM,UAAU,OAAO;IACxF;GACF;GACA,aAAa;GACb,MAAM,UAAU,MAAM,WAAW;GACjC,IAAI,SAAS,SAAS,OAAO;IAC3B,QAAQ,MAAM;IACd,IAAI,QAAQ,YAAY,WAAW,QAAQ,YAAY,YAAY;KACjE,QAAQ,SAAS;IACnB;IACA,OAAO;GACT;GACA,IAAI,CAAC,SAAS,MAAM,WAAW;IAC7B,eAAe,MAAM,SAAS;IAC9B,OAAO;GACT;GACA,IAAI,SAAS,OAAO;IAClB,QAAQ,MAAM;IACd,OAAO;GACT;EACF;EACA,OAAO;CACT,GAAG,CAAC,CAAC;CACL,MAAM,gBAAgB,MAAM,aACzB,YAAY;EACX,mBAAmB,UAAU;EAC7B,KAAK,MAAM,SAAS,YAAY,QAAQ,OAAO,GAAG;GAChD,MAAM,SAAS;EACjB;EACA,IAAI,kBAAkB,GAAG;GACvB;EACF;EACA,aAAa,UAAU;EACvB,KAAK,YAAY,UAAU,UAAU,GAAG,OAAO;CACjD,GACA,CAAC,mBAAmB,SAAS,CAC/B;CACA,MAAM,gBAAgB,MAAM,aACzB,UAAU;EACT,OAAO,iBAAiB;EACxB,MAAM,UAAU;GACd,QAAQ;GACR,OAAO,OAAO,eAAe;GAC7B,SAAS,OAAO;EAClB;EACA,IAAI,SAAS,eAAe,SAAS,eAAe;GAClD,wBAAwB,UAAU;GAClC,eAAe,QAAQ,cAAc;GACrC;EACF;EACA,cAAc,OAAO;CACvB,GACA,CAAC,aAAa,CAChB;CACA,MAAM,gBAAgB;EACpB,IAAI,CAAC,aAAa,SAAS;GACzB;EACF;EACA,aAAa,UAAU;EACvB,kBAAkB;CACpB,GAAG,CAAC,QAAQ,iBAAiB,CAAC;CAC9B,MAAM,oBACJ,mBACO,EACL,SAAS,WAAW;EAClB,IAAI,WAAW;GACb,KAAK,MAAM,SAAS,YAAY,QAAQ,OAAO,GAAG;IAChD,IAAI,MAAM,SAAS,WAAW;KAC5B,MAAM,SAAS;KACf;IACF;GACF;GACA;EACF;EACA,KAAK,MAAM,SAAS,YAAY,QAAQ,OAAO,GAAG;GAChD,MAAM,SAAS;EACjB;CACF,EACF,IACA,CAAC,CACH;CACA,MAAM,kBAAkB,MAAM,eACrB;EACL;EACA;EACA;EACA;EACA;EACA;EACA;CACF,IACA;EAAC;EAAa;EAAQ;EAAW;EAAe;CAAc,CAChE;CACA,OAAuB,oBAAI,oBAAoB,UAAU;EAAE,OAAO;EAAiB,UAA0B,oBAAI,cAAc;GAAE;GAAO,UAAU;GAAe,UAA0B,oBACzL,WACA;IACE,GAAG;IACH,MAAM,YAAY;KAChB,eAAe,UAAU;KACzB,IAAI,OAAO,iBAAiB,YAAY;MACtC,aAAa,OAAO;KACtB,OAAO,IAAI,cAAc;MACvB,aAAa,UAAU;KACzB;IACF;IACA,YAAY;IACZ,WAAW,UAAU;KACnB,MAAM,eAAe;KACrB,MAAM,iBAAiB,wBAAwB;KAC/C,wBAAwB,UAAU;KAClC,cACE,kBAAkB;MAChB,QAAQ;MACR,OAAO,MAAM,eAAe;MAC5B,SAAS,MAAM,aAAa;KAC9B,CACF;IACF;GACF,CACF;EAAE,CAAC;CAAE,CAAC;AACR,CACF;AACA,MAAM,QAAQ,qBAAqB,eAAe,EAChD,SAAS,YACX,CAAC"}