@algolia/satellite 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/dist/cjs/AutoComplete/AutoComplete.d.ts +1 -1
  2. package/dist/cjs/AutoComplete/AutoComplete.js +49 -26
  3. package/dist/cjs/AutoComplete/AutoComplete.tailwind.js +9 -1
  4. package/dist/cjs/AutoComplete/types.d.ts +1 -0
  5. package/dist/cjs/Checkbox/Checkbox.d.ts +1 -1
  6. package/dist/cjs/Checkbox/Checkbox.js +21 -13
  7. package/dist/cjs/Checkbox/Checkbox.tailwind.js +8 -2
  8. package/dist/cjs/DatePicker/DatePicker/DatePicker.d.ts +4 -2
  9. package/dist/cjs/DatePicker/DatePicker/DatePicker.js +18 -7
  10. package/dist/cjs/DatePicker/components/Display.d.ts +3 -3
  11. package/dist/cjs/DatePicker/components/Display.js +16 -5
  12. package/dist/cjs/Dropzone/Dropzone.d.ts +4 -2
  13. package/dist/cjs/Dropzone/Dropzone.js +23 -12
  14. package/dist/cjs/Field/Field.d.ts +1 -0
  15. package/dist/cjs/Field/Field.js +63 -11
  16. package/dist/cjs/Field/FieldContext.d.ts +3 -0
  17. package/dist/cjs/Field/useField.d.ts +4 -1
  18. package/dist/cjs/Field/useField.js +17 -1
  19. package/dist/cjs/Form/Form.d.ts +16 -0
  20. package/dist/cjs/Form/Form.js +140 -0
  21. package/dist/cjs/Form/FormContext.d.ts +13 -0
  22. package/dist/cjs/Form/FormContext.js +8 -0
  23. package/dist/cjs/Form/index.d.ts +3 -0
  24. package/dist/cjs/Form/index.js +27 -0
  25. package/dist/cjs/Form/stories/AsynchronousValidation.js +396 -0
  26. package/dist/cjs/Form/stories/Complex.js +928 -0
  27. package/dist/cjs/Form/stories/DependentFieldsValidation.js +249 -0
  28. package/dist/cjs/Form/stories/DirtyFields.js +339 -0
  29. package/dist/cjs/Form/stories/DynamicFieldsValidation.js +425 -0
  30. package/dist/cjs/Form/stories/FieldArrays.js +549 -0
  31. package/dist/cjs/Form/stories/ValidationStrategies.js +455 -0
  32. package/dist/cjs/Form/stories/utils/useFormikAutoFocusOnError.js +22 -0
  33. package/dist/cjs/Form/useForm.d.ts +1 -0
  34. package/dist/cjs/Form/useForm.js +11 -0
  35. package/dist/cjs/Input/Input.js +22 -9
  36. package/dist/cjs/Input/Input.tailwind.js +7 -2
  37. package/dist/cjs/Pagination/DotPagination/DotPagination.d.ts +1 -1
  38. package/dist/cjs/RadioGroup/RadioButton.d.ts +1 -1
  39. package/dist/cjs/RadioGroup/RadioButton.js +16 -3
  40. package/dist/cjs/RadioGroup/RadioButton.tailwind.js +23 -0
  41. package/dist/cjs/RadioGroup/RadioGroup.d.ts +7 -5
  42. package/dist/cjs/RadioGroup/RadioGroup.js +78 -16
  43. package/dist/cjs/RadioGroup/{RadiogroupContext.d.ts → RadioGroupContext.d.ts} +8 -1
  44. package/dist/cjs/RangeSlider/RangeSlider.d.ts +2 -3
  45. package/dist/cjs/RangeSlider/RangeSlider.js +27 -10
  46. package/dist/cjs/Satellite/locale.d.ts +2 -0
  47. package/dist/cjs/Select/Select.js +39 -6
  48. package/dist/cjs/Select/Select.tailwind.js +19 -0
  49. package/dist/cjs/Stepper/Step.js +2 -2
  50. package/dist/cjs/Switch/Switch.js +2 -2
  51. package/dist/cjs/Switch/SwitchOption.js +3 -3
  52. package/dist/cjs/Tables/DataTable/DataTable.d.ts +1 -1
  53. package/dist/cjs/Tag/Tag.d.ts +1 -1
  54. package/dist/cjs/TextArea/TextArea.d.ts +1 -0
  55. package/dist/cjs/TextArea/TextArea.js +47 -8
  56. package/dist/cjs/TextArea/TextArea.tailwind.js +41 -4
  57. package/dist/cjs/Toggle/Toggle.d.ts +1 -1
  58. package/dist/cjs/Toggle/Toggle.js +23 -6
  59. package/dist/cjs/Toggle/Toggle.tailwind.js +9 -0
  60. package/dist/cjs/Tooltip/Tooltip.d.ts +1 -1
  61. package/dist/cjs/index.d.ts +1 -0
  62. package/dist/cjs/index.js +12 -0
  63. package/dist/cjs/utils/isCssPropertySupported.d.ts +1 -1
  64. package/dist/cjs/utils/mergeRefs.d.ts +2 -0
  65. package/dist/cjs/utils/mergeRefs.js +17 -0
  66. package/dist/esm/AutoComplete/AutoComplete.d.ts +1 -1
  67. package/dist/esm/AutoComplete/AutoComplete.js +52 -27
  68. package/dist/esm/AutoComplete/AutoComplete.tailwind.js +9 -1
  69. package/dist/esm/AutoComplete/types.d.ts +1 -0
  70. package/dist/esm/Checkbox/Checkbox.d.ts +1 -1
  71. package/dist/esm/Checkbox/Checkbox.js +21 -13
  72. package/dist/esm/Checkbox/Checkbox.tailwind.js +8 -2
  73. package/dist/esm/DatePicker/DatePicker/DatePicker.d.ts +4 -2
  74. package/dist/esm/DatePicker/DatePicker/DatePicker.js +19 -8
  75. package/dist/esm/DatePicker/components/Display.d.ts +3 -3
  76. package/dist/esm/DatePicker/components/Display.js +15 -5
  77. package/dist/esm/Dropzone/Dropzone.d.ts +4 -2
  78. package/dist/esm/Dropzone/Dropzone.js +24 -13
  79. package/dist/esm/Field/Field.d.ts +1 -0
  80. package/dist/esm/Field/Field.js +64 -12
  81. package/dist/esm/Field/FieldContext.d.ts +3 -0
  82. package/dist/esm/Field/useField.d.ts +4 -1
  83. package/dist/esm/Field/useField.js +17 -2
  84. package/dist/esm/Form/Form.d.ts +16 -0
  85. package/dist/esm/Form/Form.js +135 -0
  86. package/dist/esm/Form/FormContext.d.ts +13 -0
  87. package/dist/esm/Form/FormContext.js +2 -0
  88. package/dist/esm/Form/index.d.ts +3 -0
  89. package/dist/esm/Form/index.js +3 -0
  90. package/dist/esm/Form/stories/AsynchronousValidation.js +387 -0
  91. package/dist/esm/Form/stories/Complex.js +919 -0
  92. package/dist/esm/Form/stories/DependentFieldsValidation.js +240 -0
  93. package/dist/esm/Form/stories/DirtyFields.js +330 -0
  94. package/dist/esm/Form/stories/DynamicFieldsValidation.js +416 -0
  95. package/dist/esm/Form/stories/FieldArrays.js +544 -0
  96. package/dist/esm/Form/stories/ValidationStrategies.js +446 -0
  97. package/dist/esm/Form/stories/utils/useFormikAutoFocusOnError.js +16 -0
  98. package/dist/esm/Form/useForm.d.ts +1 -0
  99. package/dist/esm/Form/useForm.js +5 -0
  100. package/dist/esm/Input/Input.js +22 -9
  101. package/dist/esm/Input/Input.tailwind.js +7 -2
  102. package/dist/esm/Pagination/DotPagination/DotPagination.d.ts +1 -1
  103. package/dist/esm/RadioGroup/RadioButton.d.ts +1 -1
  104. package/dist/esm/RadioGroup/RadioButton.js +16 -3
  105. package/dist/esm/RadioGroup/RadioButton.tailwind.js +23 -0
  106. package/dist/esm/RadioGroup/RadioGroup.d.ts +7 -5
  107. package/dist/esm/RadioGroup/RadioGroup.js +77 -15
  108. package/dist/esm/RadioGroup/{RadiogroupContext.d.ts → RadioGroupContext.d.ts} +8 -1
  109. package/dist/esm/RangeSlider/RangeSlider.d.ts +2 -3
  110. package/dist/esm/RangeSlider/RangeSlider.js +27 -10
  111. package/dist/esm/Satellite/locale.d.ts +2 -0
  112. package/dist/esm/Select/Select.js +41 -7
  113. package/dist/esm/Select/Select.tailwind.js +19 -0
  114. package/dist/esm/Stepper/Step.js +2 -2
  115. package/dist/esm/Switch/Switch.js +1 -1
  116. package/dist/esm/Switch/SwitchOption.js +2 -2
  117. package/dist/esm/Tables/DataTable/DataTable.d.ts +1 -1
  118. package/dist/esm/Tag/Tag.d.ts +1 -1
  119. package/dist/esm/TextArea/TextArea.d.ts +1 -0
  120. package/dist/esm/TextArea/TextArea.js +49 -9
  121. package/dist/esm/TextArea/TextArea.tailwind.js +41 -4
  122. package/dist/esm/Toggle/Toggle.d.ts +1 -1
  123. package/dist/esm/Toggle/Toggle.js +23 -6
  124. package/dist/esm/Toggle/Toggle.tailwind.js +9 -0
  125. package/dist/esm/Tooltip/Tooltip.d.ts +1 -1
  126. package/dist/esm/index.d.ts +1 -0
  127. package/dist/esm/index.js +1 -0
  128. package/dist/esm/utils/isCssPropertySupported.d.ts +1 -1
  129. package/dist/esm/utils/mergeRefs.d.ts +2 -0
  130. package/dist/esm/utils/mergeRefs.js +11 -0
  131. package/dist/satellite.min.css +1 -1
  132. package/package.json +13 -7
  133. /package/dist/cjs/RadioGroup/{RadiogroupContext.js → RadioGroupContext.js} +0 -0
  134. /package/dist/esm/RadioGroup/{RadiogroupContext.js → RadioGroupContext.js} +0 -0
@@ -0,0 +1,416 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28;
5
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
6
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
7
+ import { zodResolver } from "@hookform/resolvers/zod";
8
+ import cx from "clsx";
9
+ import { useFormik } from "formik";
10
+ import capitalize from "lodash/capitalize";
11
+ import { useState } from "react";
12
+ import { Controller, useForm } from "react-hook-form";
13
+ import * as yup from "yup";
14
+ import { z } from "zod";
15
+ import { Field } from "../../Field";
16
+ import { Input } from "../../Input";
17
+ import { Select } from "../../Select";
18
+ import stl from "../../styles/helpers/satellitePrefixer";
19
+ import { ExperimentalForm, ExperimentalFormErrorMessage, ExperimentalFormReset, ExperimentalFormSubmit } from "../Form";
20
+ import { useFormikAutoFocusOnError } from "./utils/useFormikAutoFocusOnError";
21
+ import { jsx as _jsx } from "react/jsx-runtime";
22
+ import { jsxs as _jsxs } from "react/jsx-runtime";
23
+ var professions = ["please select", "doctor", "teacher", "other"];
24
+ var initialFormData = {
25
+ name: "",
26
+ email: "",
27
+ profession: "please select",
28
+ // Doctor field
29
+ hospitalName: "",
30
+ // Teacher field
31
+ schoolName: "",
32
+ // Other field
33
+ otherProfession: ""
34
+ };
35
+ var zodBaseSchema = z.object({
36
+ name: z.string().min(1, {
37
+ message: "You must specify a name"
38
+ }).min(3, "Name must be at least 3 characters long"),
39
+ email: z.string().min(1, {
40
+ message: "You must specify an email"
41
+ }).email("Invalid email")
42
+ });
43
+ var zodSchema = z.intersection(zodBaseSchema, z.discriminatedUnion("profession", [z.object({
44
+ profession: z.literal("doctor"),
45
+ hospitalName: z.string().min(1, {
46
+ message: "You must specify an hospital name"
47
+ })
48
+ }), z.object({
49
+ profession: z.literal("teacher"),
50
+ schoolName: z.string().min(1, {
51
+ message: "You must specify a school name"
52
+ })
53
+ }), z.object({
54
+ profession: z.literal("other"),
55
+ otherProfession: z.string().min(1, {
56
+ message: "You must specify a profession"
57
+ })
58
+ })], {
59
+ errorMap: function errorMap() {
60
+ return {
61
+ message: "You must specify a profession"
62
+ };
63
+ }
64
+ }));
65
+ export var RHFDynamicFieldsValidationComponent = function RHFDynamicFieldsValidationComponent() {
66
+ var _useState = useState(initialFormData),
67
+ _useState2 = _slicedToArray(_useState, 2),
68
+ formData = _useState2[0],
69
+ setFormData = _useState2[1];
70
+ var _useForm = useForm({
71
+ defaultValues: initialFormData,
72
+ reValidateMode: "onChange",
73
+ resolver: zodResolver(zodSchema)
74
+ }),
75
+ control = _useForm.control,
76
+ handleSubmit = _useForm.handleSubmit,
77
+ getFieldStateFromReactHookForm = _useForm.getFieldState,
78
+ formState = _useForm.formState,
79
+ watch = _useForm.watch,
80
+ reset = _useForm.reset;
81
+ var profession = watch("profession", "please select");
82
+ var getFieldState = function getFieldState(fieldName) {
83
+ var _fieldState$error;
84
+ var fieldState = getFieldStateFromReactHookForm(fieldName, formState);
85
+ if ((_fieldState$error = fieldState.error) !== null && _fieldState$error !== void 0 && _fieldState$error.message) {
86
+ return {
87
+ status: "invalid",
88
+ errors: [fieldState.error.message]
89
+ };
90
+ } else if (!fieldState.invalid && formState.isSubmitted) {
91
+ return {
92
+ status: "validated"
93
+ };
94
+ } else {
95
+ return {
96
+ status: "default"
97
+ };
98
+ }
99
+ };
100
+ return /*#__PURE__*/_jsxs("div", {
101
+ className: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["flex flex-col gap-8 w-3/5"]))),
102
+ children: [/*#__PURE__*/_jsxs(ExperimentalForm, {
103
+ onSubmit: handleSubmit(function (data) {
104
+ return setFormData(data);
105
+ }),
106
+ onReset: function onReset() {
107
+ return setFormData(initialFormData);
108
+ },
109
+ className: stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["flex flex-col items-start gap-4 min-w-72"]))),
110
+ children: [/*#__PURE__*/_jsx(ExperimentalFormErrorMessage, {}), /*#__PURE__*/_jsx(Controller, {
111
+ name: "name",
112
+ control: control,
113
+ render: function render(_ref) {
114
+ var field = _ref.field;
115
+ return /*#__PURE__*/_jsx(Field, {
116
+ label: "Name",
117
+ labelFor: "name",
118
+ description: "Please enter your name",
119
+ state: getFieldState("name"),
120
+ className: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["w-full"]))),
121
+ children: /*#__PURE__*/_jsx(Input, _objectSpread({
122
+ id: "name",
123
+ placeholder: "John Doe",
124
+ required: true
125
+ }, field))
126
+ });
127
+ }
128
+ }), /*#__PURE__*/_jsx(Controller, {
129
+ name: "email",
130
+ control: control,
131
+ render: function render(_ref2) {
132
+ var field = _ref2.field;
133
+ return /*#__PURE__*/_jsx(Field, {
134
+ label: "Email",
135
+ labelFor: "email",
136
+ description: "Please enter your email",
137
+ state: getFieldState("email"),
138
+ className: stl(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["w-full"]))),
139
+ children: /*#__PURE__*/_jsx(Input, _objectSpread({
140
+ id: "email",
141
+ placeholder: "contact@example.com",
142
+ required: true
143
+ }, field))
144
+ });
145
+ }
146
+ }), /*#__PURE__*/_jsx(Controller, {
147
+ name: "profession",
148
+ control: control,
149
+ render: function render(_ref3) {
150
+ var field = _ref3.field;
151
+ return /*#__PURE__*/_jsx(Field, {
152
+ label: "Profession",
153
+ labelFor: "profession",
154
+ description: "Please specify your profession",
155
+ state: getFieldState("profession"),
156
+ className: stl(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["w-full"]))),
157
+ children: /*#__PURE__*/_jsx(Select, _objectSpread(_objectSpread({
158
+ id: "profession",
159
+ required: true
160
+ }, field), {}, {
161
+ children: professions.map(function (profession) {
162
+ return /*#__PURE__*/_jsx("option", {
163
+ value: profession,
164
+ children: capitalize(profession)
165
+ }, profession);
166
+ })
167
+ }))
168
+ });
169
+ }
170
+ }), /*#__PURE__*/_jsx(Controller, {
171
+ name: "hospitalName",
172
+ control: control,
173
+ render: function render(_ref4) {
174
+ var field = _ref4.field;
175
+ return /*#__PURE__*/_jsx(Field, {
176
+ label: "Hospital Name",
177
+ labelFor: "hospitalName",
178
+ description: "Please enter an hospital name",
179
+ state: getFieldState("hospitalName"),
180
+ className: cx(stl(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["w-full"]))), profession !== "doctor" && stl(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["hidden"])))),
181
+ children: /*#__PURE__*/_jsx(Input, _objectSpread({
182
+ id: "hospitalName",
183
+ placeholder: "Name",
184
+ required: true
185
+ }, field))
186
+ });
187
+ }
188
+ }), /*#__PURE__*/_jsx(Controller, {
189
+ name: "schoolName",
190
+ control: control,
191
+ render: function render(_ref5) {
192
+ var field = _ref5.field;
193
+ return /*#__PURE__*/_jsx(Field, {
194
+ label: "School Name",
195
+ labelFor: "schoolName",
196
+ description: "Please enter a school name",
197
+ state: getFieldState("schoolName"),
198
+ className: cx(stl(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["w-full"]))), profession !== "teacher" && stl(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["hidden"])))),
199
+ children: /*#__PURE__*/_jsx(Input, _objectSpread({
200
+ id: "schoolName",
201
+ placeholder: "Name",
202
+ required: true
203
+ }, field))
204
+ });
205
+ }
206
+ }), /*#__PURE__*/_jsx(Controller, {
207
+ name: "otherProfession",
208
+ control: control,
209
+ render: function render(_ref6) {
210
+ var field = _ref6.field;
211
+ return /*#__PURE__*/_jsx(Field, {
212
+ label: "Other Profession",
213
+ labelFor: "otherProfession",
214
+ description: "Please enter an other profession",
215
+ state: getFieldState("otherProfession"),
216
+ className: cx(stl(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["w-full"]))), profession !== "other" && stl(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["hidden"])))),
217
+ children: /*#__PURE__*/_jsx(Input, _objectSpread({
218
+ id: "otherProfession",
219
+ placeholder: "Profession",
220
+ required: true
221
+ }, field))
222
+ });
223
+ }
224
+ }), /*#__PURE__*/_jsxs("div", {
225
+ className: stl(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["flex gap-2"]))),
226
+ children: [/*#__PURE__*/_jsx(ExperimentalFormSubmit, {
227
+ variant: "primary",
228
+ "aria-label": "Save the form",
229
+ children: "Save"
230
+ }), /*#__PURE__*/_jsx(ExperimentalFormReset, {
231
+ "aria-label": "Reset the form",
232
+ onClick: function onClick() {
233
+ return reset();
234
+ },
235
+ children: "Reset"
236
+ })]
237
+ })]
238
+ }), /*#__PURE__*/_jsx("hr", {
239
+ className: stl(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["text-grey-500"])))
240
+ }), /*#__PURE__*/_jsx("code", {
241
+ className: stl(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["whitespace-pre"]))),
242
+ children: JSON.stringify(formData, null, 2)
243
+ })]
244
+ });
245
+ };
246
+ var yupSchema = yup.object({
247
+ name: yup.string().required("You must specify a name").min(3, "Name must be at least 3 characters long"),
248
+ email: yup.string().required("You must specify an email").email("Invalid email"),
249
+ profession: yup.string().oneOf(professions.slice(1), "You must specify a profession").required(),
250
+ hospitalName: yup.string().when("profession", {
251
+ is: "doctor",
252
+ then: function then(schema) {
253
+ return schema.required("You must specify an hospital name");
254
+ },
255
+ otherwise: undefined
256
+ }),
257
+ schoolName: yup.string().when("profession", {
258
+ is: "teacher",
259
+ then: function then(schema) {
260
+ return schema.required("You must specify a school name");
261
+ },
262
+ otherwise: undefined
263
+ }),
264
+ otherProfession: yup.string().when("profession", {
265
+ is: "other",
266
+ then: function then(schema) {
267
+ return schema.required("You must specify a profession");
268
+ },
269
+ otherwise: undefined
270
+ })
271
+ });
272
+ export var FormikDynamicFieldsValidationComponent = function FormikDynamicFieldsValidationComponent() {
273
+ var _useState3 = useState(initialFormData),
274
+ _useState4 = _slicedToArray(_useState3, 2),
275
+ formData = _useState4[0],
276
+ setFormData = _useState4[1];
277
+ var _useState5 = useState(false),
278
+ _useState6 = _slicedToArray(_useState5, 2),
279
+ revalidationEnabled = _useState6[0],
280
+ setRevalidationEnabled = _useState6[1];
281
+ var formik = useFormik({
282
+ initialValues: initialFormData,
283
+ validateOnChange: revalidationEnabled,
284
+ validateOnBlur: revalidationEnabled,
285
+ validationSchema: yupSchema,
286
+ onSubmit: function onSubmit(values) {
287
+ return setFormData(values);
288
+ },
289
+ onReset: function onReset() {
290
+ return setFormData(initialFormData);
291
+ }
292
+ });
293
+ var getFieldState = function getFieldState(fieldName) {
294
+ var fieldMeta = formik.getFieldMeta(fieldName);
295
+ if (fieldMeta.error) {
296
+ return {
297
+ status: "invalid",
298
+ errors: [fieldMeta.error]
299
+ };
300
+ } else if (formik.isSubmitting && fieldMeta.touched) {
301
+ return {
302
+ status: "validated"
303
+ };
304
+ } else {
305
+ return {
306
+ status: "default"
307
+ };
308
+ }
309
+ };
310
+ useFormikAutoFocusOnError(formik);
311
+ return /*#__PURE__*/_jsxs("div", {
312
+ className: stl(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["flex flex-col gap-8 w-3/5"]))),
313
+ children: [/*#__PURE__*/_jsxs(ExperimentalForm, {
314
+ onSubmit: function onSubmit(e) {
315
+ setRevalidationEnabled(true);
316
+ formik.handleSubmit(e);
317
+ },
318
+ onReset: function onReset(e) {
319
+ setRevalidationEnabled(false);
320
+ formik.handleReset(e);
321
+ },
322
+ className: stl(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["flex flex-col items-start gap-4 min-w-72"]))),
323
+ children: [/*#__PURE__*/_jsx(ExperimentalFormErrorMessage, {}), /*#__PURE__*/_jsx(Field, {
324
+ label: "Name",
325
+ labelFor: "name",
326
+ description: "Please enter your name",
327
+ state: getFieldState("name"),
328
+ className: stl(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["w-full"]))),
329
+ children: /*#__PURE__*/_jsx(Input, _objectSpread({
330
+ id: "name",
331
+ placeholder: "John Doe",
332
+ required: true
333
+ }, formik.getFieldProps("name")))
334
+ }), /*#__PURE__*/_jsx(Field, {
335
+ label: "Email",
336
+ labelFor: "email",
337
+ description: "Please enter your email",
338
+ state: getFieldState("email"),
339
+ className: stl(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["w-full"]))),
340
+ children: /*#__PURE__*/_jsx(Input, _objectSpread({
341
+ id: "email",
342
+ placeholder: "contact@example.com",
343
+ required: true
344
+ }, formik.getFieldProps("email")))
345
+ }), /*#__PURE__*/_jsx(Field, {
346
+ label: "Profession",
347
+ labelFor: "profession",
348
+ description: "Please specify your profession",
349
+ state: getFieldState("profession"),
350
+ className: stl(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["w-full"]))),
351
+ children: /*#__PURE__*/_jsx(Select, _objectSpread(_objectSpread({
352
+ id: "profession",
353
+ required: true
354
+ }, formik.getFieldProps("profession")), {}, {
355
+ children: professions.map(function (profession) {
356
+ return /*#__PURE__*/_jsx("option", {
357
+ value: profession,
358
+ children: capitalize(profession)
359
+ }, profession);
360
+ })
361
+ }))
362
+ }), /*#__PURE__*/_jsx(Field, {
363
+ label: "Hospital Name",
364
+ labelFor: "hospitalName",
365
+ description: "Please enter an hospital name",
366
+ state: getFieldState("hospitalName"),
367
+ className: cx(stl(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["w-full"]))), formik.values.profession !== "doctor" && stl(_templateObject21 || (_templateObject21 = _taggedTemplateLiteral(["hidden"])))),
368
+ children: /*#__PURE__*/_jsx(Input, _objectSpread({
369
+ id: "hospitalName",
370
+ placeholder: "Name",
371
+ required: true
372
+ }, formik.getFieldProps("hospitalName")))
373
+ }), /*#__PURE__*/_jsx(Field, {
374
+ label: "School Name",
375
+ labelFor: "schoolName",
376
+ description: "Please enter a school name",
377
+ state: getFieldState("schoolName"),
378
+ className: cx(stl(_templateObject22 || (_templateObject22 = _taggedTemplateLiteral(["w-full"]))), formik.values.profession !== "teacher" && stl(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["hidden"])))),
379
+ children: /*#__PURE__*/_jsx(Input, _objectSpread({
380
+ id: "schoolName",
381
+ placeholder: "Name",
382
+ required: true
383
+ }, formik.getFieldProps("schoolName")))
384
+ }), /*#__PURE__*/_jsx(Field, {
385
+ label: "Other Profession",
386
+ labelFor: "otherProfession",
387
+ description: "Please enter an other profession",
388
+ state: getFieldState("otherProfession"),
389
+ className: cx(stl(_templateObject24 || (_templateObject24 = _taggedTemplateLiteral(["w-full"]))), formik.values.profession !== "other" && stl(_templateObject25 || (_templateObject25 = _taggedTemplateLiteral(["hidden"])))),
390
+ children: /*#__PURE__*/_jsx(Input, _objectSpread({
391
+ id: "otherProfession",
392
+ placeholder: "Profession",
393
+ required: true
394
+ }, formik.getFieldProps("otherProfession")))
395
+ }), /*#__PURE__*/_jsxs("div", {
396
+ className: stl(_templateObject26 || (_templateObject26 = _taggedTemplateLiteral(["flex gap-2"]))),
397
+ children: [/*#__PURE__*/_jsx(ExperimentalFormSubmit, {
398
+ variant: "primary",
399
+ "aria-label": "Save the form",
400
+ children: "Save"
401
+ }), /*#__PURE__*/_jsx(ExperimentalFormReset, {
402
+ "aria-label": "Reset the form",
403
+ onClick: function onClick() {
404
+ return formik.resetForm();
405
+ },
406
+ children: "Reset"
407
+ })]
408
+ })]
409
+ }), /*#__PURE__*/_jsx("hr", {
410
+ className: stl(_templateObject27 || (_templateObject27 = _taggedTemplateLiteral(["text-grey-500"])))
411
+ }), /*#__PURE__*/_jsx("code", {
412
+ className: stl(_templateObject28 || (_templateObject28 = _taggedTemplateLiteral(["whitespace-pre"]))),
413
+ children: JSON.stringify(formData, null, 2)
414
+ })]
415
+ });
416
+ };