@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.
- package/dist/cjs/AutoComplete/AutoComplete.d.ts +1 -1
- package/dist/cjs/AutoComplete/AutoComplete.js +49 -26
- package/dist/cjs/AutoComplete/AutoComplete.tailwind.js +9 -1
- package/dist/cjs/AutoComplete/types.d.ts +1 -0
- package/dist/cjs/Checkbox/Checkbox.d.ts +1 -1
- package/dist/cjs/Checkbox/Checkbox.js +21 -13
- package/dist/cjs/Checkbox/Checkbox.tailwind.js +8 -2
- package/dist/cjs/DatePicker/DatePicker/DatePicker.d.ts +4 -2
- package/dist/cjs/DatePicker/DatePicker/DatePicker.js +18 -7
- package/dist/cjs/DatePicker/components/Display.d.ts +3 -3
- package/dist/cjs/DatePicker/components/Display.js +16 -5
- package/dist/cjs/Dropzone/Dropzone.d.ts +4 -2
- package/dist/cjs/Dropzone/Dropzone.js +23 -12
- package/dist/cjs/Field/Field.d.ts +1 -0
- package/dist/cjs/Field/Field.js +63 -11
- package/dist/cjs/Field/FieldContext.d.ts +3 -0
- package/dist/cjs/Field/useField.d.ts +4 -1
- package/dist/cjs/Field/useField.js +17 -1
- package/dist/cjs/Form/Form.d.ts +16 -0
- package/dist/cjs/Form/Form.js +140 -0
- package/dist/cjs/Form/FormContext.d.ts +13 -0
- package/dist/cjs/Form/FormContext.js +8 -0
- package/dist/cjs/Form/index.d.ts +3 -0
- package/dist/cjs/Form/index.js +27 -0
- package/dist/cjs/Form/stories/AsynchronousValidation.js +396 -0
- package/dist/cjs/Form/stories/Complex.js +928 -0
- package/dist/cjs/Form/stories/DependentFieldsValidation.js +249 -0
- package/dist/cjs/Form/stories/DirtyFields.js +339 -0
- package/dist/cjs/Form/stories/DynamicFieldsValidation.js +425 -0
- package/dist/cjs/Form/stories/FieldArrays.js +549 -0
- package/dist/cjs/Form/stories/ValidationStrategies.js +455 -0
- package/dist/cjs/Form/stories/utils/useFormikAutoFocusOnError.js +22 -0
- package/dist/cjs/Form/useForm.d.ts +1 -0
- package/dist/cjs/Form/useForm.js +11 -0
- package/dist/cjs/Input/Input.js +22 -9
- package/dist/cjs/Input/Input.tailwind.js +7 -2
- package/dist/cjs/Pagination/DotPagination/DotPagination.d.ts +1 -1
- package/dist/cjs/RadioGroup/RadioButton.d.ts +1 -1
- package/dist/cjs/RadioGroup/RadioButton.js +16 -3
- package/dist/cjs/RadioGroup/RadioButton.tailwind.js +23 -0
- package/dist/cjs/RadioGroup/RadioGroup.d.ts +7 -5
- package/dist/cjs/RadioGroup/RadioGroup.js +78 -16
- package/dist/cjs/RadioGroup/{RadiogroupContext.d.ts → RadioGroupContext.d.ts} +8 -1
- package/dist/cjs/RangeSlider/RangeSlider.d.ts +2 -3
- package/dist/cjs/RangeSlider/RangeSlider.js +27 -10
- package/dist/cjs/Satellite/locale.d.ts +2 -0
- package/dist/cjs/Select/Select.js +39 -6
- package/dist/cjs/Select/Select.tailwind.js +19 -0
- package/dist/cjs/Stepper/Step.js +2 -2
- package/dist/cjs/Switch/Switch.js +2 -2
- package/dist/cjs/Switch/SwitchOption.js +3 -3
- package/dist/cjs/Tables/DataTable/DataTable.d.ts +1 -1
- package/dist/cjs/Tag/Tag.d.ts +1 -1
- package/dist/cjs/TextArea/TextArea.d.ts +1 -0
- package/dist/cjs/TextArea/TextArea.js +47 -8
- package/dist/cjs/TextArea/TextArea.tailwind.js +41 -4
- package/dist/cjs/Toggle/Toggle.d.ts +1 -1
- package/dist/cjs/Toggle/Toggle.js +23 -6
- package/dist/cjs/Toggle/Toggle.tailwind.js +9 -0
- package/dist/cjs/Tooltip/Tooltip.d.ts +1 -1
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +12 -0
- package/dist/cjs/utils/isCssPropertySupported.d.ts +1 -1
- package/dist/cjs/utils/mergeRefs.d.ts +2 -0
- package/dist/cjs/utils/mergeRefs.js +17 -0
- package/dist/esm/AutoComplete/AutoComplete.d.ts +1 -1
- package/dist/esm/AutoComplete/AutoComplete.js +52 -27
- package/dist/esm/AutoComplete/AutoComplete.tailwind.js +9 -1
- package/dist/esm/AutoComplete/types.d.ts +1 -0
- package/dist/esm/Checkbox/Checkbox.d.ts +1 -1
- package/dist/esm/Checkbox/Checkbox.js +21 -13
- package/dist/esm/Checkbox/Checkbox.tailwind.js +8 -2
- package/dist/esm/DatePicker/DatePicker/DatePicker.d.ts +4 -2
- package/dist/esm/DatePicker/DatePicker/DatePicker.js +19 -8
- package/dist/esm/DatePicker/components/Display.d.ts +3 -3
- package/dist/esm/DatePicker/components/Display.js +15 -5
- package/dist/esm/Dropzone/Dropzone.d.ts +4 -2
- package/dist/esm/Dropzone/Dropzone.js +24 -13
- package/dist/esm/Field/Field.d.ts +1 -0
- package/dist/esm/Field/Field.js +64 -12
- package/dist/esm/Field/FieldContext.d.ts +3 -0
- package/dist/esm/Field/useField.d.ts +4 -1
- package/dist/esm/Field/useField.js +17 -2
- package/dist/esm/Form/Form.d.ts +16 -0
- package/dist/esm/Form/Form.js +135 -0
- package/dist/esm/Form/FormContext.d.ts +13 -0
- package/dist/esm/Form/FormContext.js +2 -0
- package/dist/esm/Form/index.d.ts +3 -0
- package/dist/esm/Form/index.js +3 -0
- package/dist/esm/Form/stories/AsynchronousValidation.js +387 -0
- package/dist/esm/Form/stories/Complex.js +919 -0
- package/dist/esm/Form/stories/DependentFieldsValidation.js +240 -0
- package/dist/esm/Form/stories/DirtyFields.js +330 -0
- package/dist/esm/Form/stories/DynamicFieldsValidation.js +416 -0
- package/dist/esm/Form/stories/FieldArrays.js +544 -0
- package/dist/esm/Form/stories/ValidationStrategies.js +446 -0
- package/dist/esm/Form/stories/utils/useFormikAutoFocusOnError.js +16 -0
- package/dist/esm/Form/useForm.d.ts +1 -0
- package/dist/esm/Form/useForm.js +5 -0
- package/dist/esm/Input/Input.js +22 -9
- package/dist/esm/Input/Input.tailwind.js +7 -2
- package/dist/esm/Pagination/DotPagination/DotPagination.d.ts +1 -1
- package/dist/esm/RadioGroup/RadioButton.d.ts +1 -1
- package/dist/esm/RadioGroup/RadioButton.js +16 -3
- package/dist/esm/RadioGroup/RadioButton.tailwind.js +23 -0
- package/dist/esm/RadioGroup/RadioGroup.d.ts +7 -5
- package/dist/esm/RadioGroup/RadioGroup.js +77 -15
- package/dist/esm/RadioGroup/{RadiogroupContext.d.ts → RadioGroupContext.d.ts} +8 -1
- package/dist/esm/RangeSlider/RangeSlider.d.ts +2 -3
- package/dist/esm/RangeSlider/RangeSlider.js +27 -10
- package/dist/esm/Satellite/locale.d.ts +2 -0
- package/dist/esm/Select/Select.js +41 -7
- package/dist/esm/Select/Select.tailwind.js +19 -0
- package/dist/esm/Stepper/Step.js +2 -2
- package/dist/esm/Switch/Switch.js +1 -1
- package/dist/esm/Switch/SwitchOption.js +2 -2
- package/dist/esm/Tables/DataTable/DataTable.d.ts +1 -1
- package/dist/esm/Tag/Tag.d.ts +1 -1
- package/dist/esm/TextArea/TextArea.d.ts +1 -0
- package/dist/esm/TextArea/TextArea.js +49 -9
- package/dist/esm/TextArea/TextArea.tailwind.js +41 -4
- package/dist/esm/Toggle/Toggle.d.ts +1 -1
- package/dist/esm/Toggle/Toggle.js +23 -6
- package/dist/esm/Toggle/Toggle.tailwind.js +9 -0
- package/dist/esm/Tooltip/Tooltip.d.ts +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/utils/isCssPropertySupported.d.ts +1 -1
- package/dist/esm/utils/mergeRefs.d.ts +2 -0
- package/dist/esm/utils/mergeRefs.js +11 -0
- package/dist/satellite.min.css +1 -1
- package/package.json +13 -7
- /package/dist/cjs/RadioGroup/{RadiogroupContext.js → RadioGroupContext.js} +0 -0
- /package/dist/esm/RadioGroup/{RadiogroupContext.js → RadioGroupContext.js} +0 -0
@@ -0,0 +1,446 @@
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
3
|
+
import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
|
4
|
+
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
5
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20;
|
6
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
7
|
+
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; }
|
8
|
+
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; }
|
9
|
+
import { zodResolver } from "@hookform/resolvers/zod";
|
10
|
+
import { useFormik } from "formik";
|
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 { CalendarIcon, CreditCardIcon, LockIcon } from "../../Icons";
|
17
|
+
import { Input } from "../../Input";
|
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 initialFormData = {
|
24
|
+
cardOwner: "",
|
25
|
+
cardNumber: "",
|
26
|
+
cardExpirationDate: "",
|
27
|
+
cardCVC: ""
|
28
|
+
};
|
29
|
+
|
30
|
+
// From: https://stackoverflow.com/a/30727110/19351131
|
31
|
+
var validateCardNumber = function validateCardNumber(cardNumber) {
|
32
|
+
var sum = 0;
|
33
|
+
var isEven = false;
|
34
|
+
for (var i = cardNumber.length - 1; i >= 0; i--) {
|
35
|
+
var digit = parseInt(cardNumber.charAt(i), 10);
|
36
|
+
if (isEven) {
|
37
|
+
digit *= 2;
|
38
|
+
if (digit > 9) {
|
39
|
+
digit -= 9;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
sum += digit;
|
43
|
+
isEven = !isEven;
|
44
|
+
}
|
45
|
+
return sum % 10 === 0;
|
46
|
+
};
|
47
|
+
var validateExpirationDate = function validateExpirationDate(expirationMonth, expirationYear) {
|
48
|
+
var currentDate = new Date();
|
49
|
+
var currentYear = parseInt(currentDate.getFullYear().toString().slice(-2));
|
50
|
+
var currentMonth = currentDate.getMonth() + 1;
|
51
|
+
return expirationYear > currentYear || expirationYear === currentYear && expirationMonth >= currentMonth;
|
52
|
+
};
|
53
|
+
var validateCVC = function validateCVC(cvc) {
|
54
|
+
var cvcPattern = /^[0-9]{3,4}$/;
|
55
|
+
return cvcPattern.test(cvc);
|
56
|
+
};
|
57
|
+
function formatInputValue(event, digits, separator) {
|
58
|
+
var input = event.target.value.replace(/\D/g, "");
|
59
|
+
var formatted = [];
|
60
|
+
var index = 0;
|
61
|
+
while (index < input.length) {
|
62
|
+
var group = input.substring(index, index + digits);
|
63
|
+
formatted.push(group);
|
64
|
+
index += digits;
|
65
|
+
}
|
66
|
+
return formatted.join(separator);
|
67
|
+
}
|
68
|
+
var zodSchema = z.object({
|
69
|
+
cardOwner: z.string().min(1, {
|
70
|
+
message: "You must specify a card owner"
|
71
|
+
}),
|
72
|
+
cardNumber: z.string().min(1, {
|
73
|
+
message: "You must specify a card number"
|
74
|
+
}).transform(function (value) {
|
75
|
+
return value.replace(/\s/g, "");
|
76
|
+
}).refine(validateCardNumber, {
|
77
|
+
message: "Invalid card number (try: 5555555555554444)"
|
78
|
+
}),
|
79
|
+
cardExpirationDate: z.string().min(1, {
|
80
|
+
message: "You must specify a card expiration date"
|
81
|
+
}).refine(function (value) {
|
82
|
+
var _value$split = value.split("/"),
|
83
|
+
_value$split2 = _slicedToArray(_value$split, 2),
|
84
|
+
expirationMonth = _value$split2[0],
|
85
|
+
expirationYear = _value$split2[1];
|
86
|
+
return validateExpirationDate(parseInt(expirationMonth), parseInt(expirationYear));
|
87
|
+
}, {
|
88
|
+
message: "Invalid card expiration date"
|
89
|
+
}),
|
90
|
+
cardCVC: z.string().min(1, {
|
91
|
+
message: "You must specify a card security code"
|
92
|
+
}).refine(validateCVC, {
|
93
|
+
message: "Invalid card security code (must be 3 or 4 digits)"
|
94
|
+
})
|
95
|
+
});
|
96
|
+
export var RHFValidationStrategiesComponent = function RHFValidationStrategiesComponent() {
|
97
|
+
var _useState = useState(initialFormData),
|
98
|
+
_useState2 = _slicedToArray(_useState, 2),
|
99
|
+
formData = _useState2[0],
|
100
|
+
setFormData = _useState2[1];
|
101
|
+
var _useForm = useForm({
|
102
|
+
defaultValues: initialFormData,
|
103
|
+
reValidateMode: "onChange",
|
104
|
+
resolver: zodResolver(zodSchema)
|
105
|
+
}),
|
106
|
+
control = _useForm.control,
|
107
|
+
handleSubmit = _useForm.handleSubmit,
|
108
|
+
getFieldStateFromReactHookForm = _useForm.getFieldState,
|
109
|
+
formState = _useForm.formState,
|
110
|
+
reset = _useForm.reset,
|
111
|
+
trigger = _useForm.trigger;
|
112
|
+
var getFieldState = function getFieldState(fieldName) {
|
113
|
+
var _fieldState$error;
|
114
|
+
var fieldState = getFieldStateFromReactHookForm(fieldName, formState);
|
115
|
+
if ((_fieldState$error = fieldState.error) !== null && _fieldState$error !== void 0 && _fieldState$error.message) {
|
116
|
+
return {
|
117
|
+
status: "invalid",
|
118
|
+
errors: [fieldState.error.message]
|
119
|
+
};
|
120
|
+
} else if (!fieldState.invalid && formState.isSubmitted) {
|
121
|
+
return {
|
122
|
+
status: "validated"
|
123
|
+
};
|
124
|
+
} else {
|
125
|
+
return {
|
126
|
+
status: "default"
|
127
|
+
};
|
128
|
+
}
|
129
|
+
};
|
130
|
+
return /*#__PURE__*/_jsxs("div", {
|
131
|
+
className: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["flex flex-col gap-8 w-4/6"]))),
|
132
|
+
children: [/*#__PURE__*/_jsxs(ExperimentalForm, {
|
133
|
+
onSubmit: handleSubmit(function (data) {
|
134
|
+
return setFormData(data);
|
135
|
+
}),
|
136
|
+
onReset: function onReset() {
|
137
|
+
return setFormData(initialFormData);
|
138
|
+
},
|
139
|
+
className: stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["flex flex-col items-start gap-4 min-w-72"]))),
|
140
|
+
children: [/*#__PURE__*/_jsx(ExperimentalFormErrorMessage, {}), /*#__PURE__*/_jsx(Controller, {
|
141
|
+
name: "cardOwner",
|
142
|
+
control: control,
|
143
|
+
render: function render(_ref) {
|
144
|
+
var field = _ref.field;
|
145
|
+
return /*#__PURE__*/_jsx(Field, {
|
146
|
+
label: "Card Owner",
|
147
|
+
labelFor: "cardOwner",
|
148
|
+
description: "Please enter the card owner",
|
149
|
+
state: getFieldState("cardOwner"),
|
150
|
+
className: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["w-full"]))),
|
151
|
+
children: /*#__PURE__*/_jsx(Input, _objectSpread({
|
152
|
+
id: "cardOwner",
|
153
|
+
placeholder: "John Doe",
|
154
|
+
required: true
|
155
|
+
}, field))
|
156
|
+
});
|
157
|
+
}
|
158
|
+
}), /*#__PURE__*/_jsx(Controller, {
|
159
|
+
name: "cardNumber",
|
160
|
+
control: control,
|
161
|
+
render: function render(_ref2) {
|
162
|
+
var field = _ref2.field;
|
163
|
+
return /*#__PURE__*/_jsx(Field, {
|
164
|
+
label: "Card Number",
|
165
|
+
labelFor: "cardNumber",
|
166
|
+
description: "Please enter the card number",
|
167
|
+
state: getFieldState("cardNumber"),
|
168
|
+
className: stl(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["w-full"]))),
|
169
|
+
children: /*#__PURE__*/_jsx(Input, _objectSpread(_objectSpread({
|
170
|
+
id: "cardNumber",
|
171
|
+
placeholder: "Card number",
|
172
|
+
maxLength: 16 + 3 // 3 spaces
|
173
|
+
,
|
174
|
+
startIcon: CreditCardIcon,
|
175
|
+
required: true
|
176
|
+
}, field), {}, {
|
177
|
+
onChange: function onChange(e) {
|
178
|
+
e.target.value = formatInputValue(e, 4, " ");
|
179
|
+
field.onChange(e);
|
180
|
+
if (e.target.value.length === 19) {
|
181
|
+
trigger("cardNumber");
|
182
|
+
}
|
183
|
+
}
|
184
|
+
}))
|
185
|
+
});
|
186
|
+
}
|
187
|
+
}), /*#__PURE__*/_jsxs("div", {
|
188
|
+
className: stl(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["w-full flex gap-4"]))),
|
189
|
+
children: [/*#__PURE__*/_jsx(Controller, {
|
190
|
+
name: "cardExpirationDate",
|
191
|
+
control: control,
|
192
|
+
render: function render(_ref3) {
|
193
|
+
var field = _ref3.field;
|
194
|
+
return /*#__PURE__*/_jsx(Field, {
|
195
|
+
label: "Card Expiration Date",
|
196
|
+
labelFor: "cardExpirationDate",
|
197
|
+
description: "Please enter the card expiration date",
|
198
|
+
state: getFieldState("cardExpirationDate"),
|
199
|
+
className: stl(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["w-full"]))),
|
200
|
+
children: /*#__PURE__*/_jsx(Input, _objectSpread(_objectSpread({
|
201
|
+
id: "cardExpirationDate",
|
202
|
+
placeholder: "MM/YY",
|
203
|
+
maxLength: 4 + 1 // 1 slash
|
204
|
+
,
|
205
|
+
startIcon: CalendarIcon,
|
206
|
+
required: true
|
207
|
+
}, field), {}, {
|
208
|
+
onChange: function onChange(e) {
|
209
|
+
e.target.value = formatInputValue(e, 2, "/");
|
210
|
+
field.onChange(e);
|
211
|
+
},
|
212
|
+
onBlur: function onBlur() {
|
213
|
+
trigger("cardExpirationDate");
|
214
|
+
field.onBlur();
|
215
|
+
}
|
216
|
+
}))
|
217
|
+
});
|
218
|
+
}
|
219
|
+
}), /*#__PURE__*/_jsx(Controller, {
|
220
|
+
name: "cardCVC",
|
221
|
+
control: control,
|
222
|
+
render: function render(_ref4) {
|
223
|
+
var field = _ref4.field;
|
224
|
+
return /*#__PURE__*/_jsx(Field, {
|
225
|
+
label: "Card CVC",
|
226
|
+
labelFor: "cardCVC",
|
227
|
+
description: "Please enter the card security code",
|
228
|
+
state: getFieldState("cardCVC"),
|
229
|
+
className: stl(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["w-full"]))),
|
230
|
+
children: /*#__PURE__*/_jsx(Input, _objectSpread(_objectSpread({
|
231
|
+
id: "cardCVC",
|
232
|
+
placeholder: "CVC",
|
233
|
+
maxLength: 4,
|
234
|
+
startIcon: LockIcon,
|
235
|
+
required: true
|
236
|
+
}, field), {}, {
|
237
|
+
onBlur: function onBlur() {
|
238
|
+
trigger("cardCVC");
|
239
|
+
field.onBlur();
|
240
|
+
}
|
241
|
+
}))
|
242
|
+
});
|
243
|
+
}
|
244
|
+
})]
|
245
|
+
}), /*#__PURE__*/_jsxs("div", {
|
246
|
+
className: stl(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["flex gap-2"]))),
|
247
|
+
children: [/*#__PURE__*/_jsx(ExperimentalFormSubmit, {
|
248
|
+
variant: "primary",
|
249
|
+
"aria-label": "Save the form",
|
250
|
+
children: "Save"
|
251
|
+
}), /*#__PURE__*/_jsx(ExperimentalFormReset, {
|
252
|
+
"aria-label": "Reset the form",
|
253
|
+
onClick: function onClick() {
|
254
|
+
return reset();
|
255
|
+
},
|
256
|
+
children: "Reset"
|
257
|
+
})]
|
258
|
+
})]
|
259
|
+
}), /*#__PURE__*/_jsx("hr", {
|
260
|
+
className: stl(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["text-grey-500"])))
|
261
|
+
}), /*#__PURE__*/_jsx("code", {
|
262
|
+
className: stl(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["whitespace-pre"]))),
|
263
|
+
children: JSON.stringify(formData, null, 2)
|
264
|
+
})]
|
265
|
+
});
|
266
|
+
};
|
267
|
+
var yupSchema = yup.object({
|
268
|
+
cardOwner: yup.string().required("You must specify a card owner"),
|
269
|
+
cardNumber: yup.string().required("You must specify a card number").transform(function (value) {
|
270
|
+
return value.replace(/\s/g, "");
|
271
|
+
}).test("cardNumber", "Invalid card number (try: 5555555555554444)", validateCardNumber),
|
272
|
+
cardExpirationDate: yup.string().required("You must specify a card expiration date").test("cardExpirationDate", "Invalid card expiration date", function (value) {
|
273
|
+
var _value$split3 = value.split("/"),
|
274
|
+
_value$split4 = _slicedToArray(_value$split3, 2),
|
275
|
+
expirationMonth = _value$split4[0],
|
276
|
+
expirationYear = _value$split4[1];
|
277
|
+
return validateExpirationDate(parseInt(expirationMonth), parseInt(expirationYear));
|
278
|
+
}),
|
279
|
+
cardCVC: yup.string().required("You must specify a card security code").test("cardCVC", "Invalid card security code (must be 3 or 4 digits)", validateCVC)
|
280
|
+
});
|
281
|
+
export var FormikValidationStrategiesComponent = function FormikValidationStrategiesComponent() {
|
282
|
+
var _useState3 = useState(initialFormData),
|
283
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
284
|
+
formData = _useState4[0],
|
285
|
+
setFormData = _useState4[1];
|
286
|
+
var _useState5 = useState(false),
|
287
|
+
_useState6 = _slicedToArray(_useState5, 2),
|
288
|
+
revalidationEnabled = _useState6[0],
|
289
|
+
setRevalidationEnabled = _useState6[1];
|
290
|
+
var formik = useFormik({
|
291
|
+
initialValues: initialFormData,
|
292
|
+
validateOnChange: revalidationEnabled,
|
293
|
+
validateOnBlur: revalidationEnabled,
|
294
|
+
validationSchema: yupSchema,
|
295
|
+
onSubmit: function onSubmit(values) {
|
296
|
+
return setFormData(values);
|
297
|
+
},
|
298
|
+
onReset: function onReset() {
|
299
|
+
return setFormData(initialFormData);
|
300
|
+
}
|
301
|
+
});
|
302
|
+
var getFieldState = function getFieldState(fieldName) {
|
303
|
+
var fieldMeta = formik.getFieldMeta(fieldName);
|
304
|
+
if (fieldMeta.error) {
|
305
|
+
return {
|
306
|
+
status: "invalid",
|
307
|
+
errors: [fieldMeta.error]
|
308
|
+
};
|
309
|
+
} else if (formik.isSubmitting && fieldMeta.touched) {
|
310
|
+
return {
|
311
|
+
status: "validated"
|
312
|
+
};
|
313
|
+
} else {
|
314
|
+
return {
|
315
|
+
status: "default"
|
316
|
+
};
|
317
|
+
}
|
318
|
+
};
|
319
|
+
useFormikAutoFocusOnError(formik);
|
320
|
+
return /*#__PURE__*/_jsxs("div", {
|
321
|
+
className: stl(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["flex flex-col gap-8 w-4/6"]))),
|
322
|
+
children: [/*#__PURE__*/_jsxs(ExperimentalForm, {
|
323
|
+
onSubmit: function onSubmit(e) {
|
324
|
+
setRevalidationEnabled(true);
|
325
|
+
formik.handleSubmit(e);
|
326
|
+
},
|
327
|
+
onReset: function onReset(e) {
|
328
|
+
setRevalidationEnabled(false);
|
329
|
+
formik.handleReset(e);
|
330
|
+
},
|
331
|
+
className: stl(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["flex flex-col items-start gap-4 min-w-72"]))),
|
332
|
+
children: [/*#__PURE__*/_jsx(ExperimentalFormErrorMessage, {}), /*#__PURE__*/_jsx(Field, {
|
333
|
+
label: "Card Owner",
|
334
|
+
labelFor: "cardOwner",
|
335
|
+
description: "Please enter the card owner",
|
336
|
+
state: getFieldState("cardOwner"),
|
337
|
+
className: stl(_templateObject13 || (_templateObject13 = _taggedTemplateLiteral(["w-full"]))),
|
338
|
+
children: /*#__PURE__*/_jsx(Input, _objectSpread({
|
339
|
+
id: "cardOwner",
|
340
|
+
placeholder: "John Doe",
|
341
|
+
required: true
|
342
|
+
}, formik.getFieldProps("cardOwner")))
|
343
|
+
}), /*#__PURE__*/_jsx(Field, {
|
344
|
+
label: "Card Number",
|
345
|
+
labelFor: "cardNumber",
|
346
|
+
description: "Please enter the card number",
|
347
|
+
state: getFieldState("cardNumber"),
|
348
|
+
className: stl(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["w-full"]))),
|
349
|
+
children: /*#__PURE__*/_jsx(Input, _objectSpread(_objectSpread({
|
350
|
+
id: "cardNumber",
|
351
|
+
placeholder: "Card number",
|
352
|
+
maxLength: 16 + 3 // 3 spaces
|
353
|
+
,
|
354
|
+
startIcon: CreditCardIcon,
|
355
|
+
required: true
|
356
|
+
}, formik.getFieldProps("cardNumber")), {}, {
|
357
|
+
onChange: /*#__PURE__*/function () {
|
358
|
+
var _ref5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(e) {
|
359
|
+
var value;
|
360
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
361
|
+
while (1) switch (_context.prev = _context.next) {
|
362
|
+
case 0:
|
363
|
+
value = formatInputValue(e, 4, " ");
|
364
|
+
_context.next = 3;
|
365
|
+
return formik.setFieldValue("cardNumber", value);
|
366
|
+
case 3:
|
367
|
+
if (value.length === 19) {
|
368
|
+
formik.validateField("cardNumber");
|
369
|
+
}
|
370
|
+
case 4:
|
371
|
+
case "end":
|
372
|
+
return _context.stop();
|
373
|
+
}
|
374
|
+
}, _callee);
|
375
|
+
}));
|
376
|
+
return function (_x) {
|
377
|
+
return _ref5.apply(this, arguments);
|
378
|
+
};
|
379
|
+
}()
|
380
|
+
}))
|
381
|
+
}), /*#__PURE__*/_jsxs("div", {
|
382
|
+
className: stl(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["w-full flex gap-4"]))),
|
383
|
+
children: [/*#__PURE__*/_jsx(Field, {
|
384
|
+
label: "Card Expiration Date",
|
385
|
+
labelFor: "cardExpirationDate",
|
386
|
+
description: "Please enter the card expiration date",
|
387
|
+
state: getFieldState("cardExpirationDate"),
|
388
|
+
className: stl(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["w-full"]))),
|
389
|
+
children: /*#__PURE__*/_jsx(Input, _objectSpread(_objectSpread({
|
390
|
+
id: "cardExpirationDate",
|
391
|
+
placeholder: "MM/YY",
|
392
|
+
maxLength: 4 + 1 // 1 slash
|
393
|
+
,
|
394
|
+
startIcon: CalendarIcon,
|
395
|
+
required: true
|
396
|
+
}, formik.getFieldProps("cardExpirationDate")), {}, {
|
397
|
+
onChange: function onChange(e) {
|
398
|
+
e.target.value = formatInputValue(e, 2, "/");
|
399
|
+
formik.getFieldProps("cardExpirationDate").onChange(e);
|
400
|
+
},
|
401
|
+
onBlur: function onBlur(e) {
|
402
|
+
formik.validateField("cardExpirationDate");
|
403
|
+
formik.getFieldProps("cardExpirationDate").onBlur(e);
|
404
|
+
}
|
405
|
+
}))
|
406
|
+
}), /*#__PURE__*/_jsx(Field, {
|
407
|
+
label: "Card CVC",
|
408
|
+
labelFor: "cardCVC",
|
409
|
+
description: "Please enter the card security code",
|
410
|
+
state: getFieldState("cardCVC"),
|
411
|
+
className: stl(_templateObject17 || (_templateObject17 = _taggedTemplateLiteral(["w-full"]))),
|
412
|
+
children: /*#__PURE__*/_jsx(Input, _objectSpread(_objectSpread({
|
413
|
+
id: "cardCVC",
|
414
|
+
placeholder: "CVC",
|
415
|
+
maxLength: 4,
|
416
|
+
startIcon: LockIcon,
|
417
|
+
required: true
|
418
|
+
}, formik.getFieldProps("cardCVC")), {}, {
|
419
|
+
onBlur: function onBlur(e) {
|
420
|
+
formik.validateField("cardCVC");
|
421
|
+
formik.getFieldProps("cardCVC").onBlur(e);
|
422
|
+
}
|
423
|
+
}))
|
424
|
+
})]
|
425
|
+
}), /*#__PURE__*/_jsxs("div", {
|
426
|
+
className: stl(_templateObject18 || (_templateObject18 = _taggedTemplateLiteral(["flex gap-2"]))),
|
427
|
+
children: [/*#__PURE__*/_jsx(ExperimentalFormSubmit, {
|
428
|
+
variant: "primary",
|
429
|
+
"aria-label": "Save the form",
|
430
|
+
children: "Save"
|
431
|
+
}), /*#__PURE__*/_jsx(ExperimentalFormReset, {
|
432
|
+
"aria-label": "Reset the form",
|
433
|
+
onClick: function onClick() {
|
434
|
+
return formik.resetForm();
|
435
|
+
},
|
436
|
+
children: "Reset"
|
437
|
+
})]
|
438
|
+
})]
|
439
|
+
}), /*#__PURE__*/_jsx("hr", {
|
440
|
+
className: stl(_templateObject19 || (_templateObject19 = _taggedTemplateLiteral(["text-grey-500"])))
|
441
|
+
}), /*#__PURE__*/_jsx("code", {
|
442
|
+
className: stl(_templateObject20 || (_templateObject20 = _taggedTemplateLiteral(["whitespace-pre"]))),
|
443
|
+
children: JSON.stringify(formData, null, 2)
|
444
|
+
})]
|
445
|
+
});
|
446
|
+
};
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { useEffect, useRef } from "react";
|
2
|
+
export var useFormikAutoFocusOnError = function useFormikAutoFocusOnError(formik) {
|
3
|
+
var lastSubmitCount = useRef(formik.submitCount);
|
4
|
+
useEffect(function () {
|
5
|
+
var errorKeys = Object.keys(formik.errors);
|
6
|
+
|
7
|
+
// This prevents the focus from being moved to the first error field when the field is validated on change.
|
8
|
+
if (lastSubmitCount.current !== formik.submitCount && errorKeys.length > 0) {
|
9
|
+
lastSubmitCount.current = formik.submitCount;
|
10
|
+
var firstElement = document.querySelector("[id^=\"".concat(errorKeys[0], "\"][aria-invalid=\"true\"]"));
|
11
|
+
if (firstElement !== document.activeElement) {
|
12
|
+
firstElement === null || firstElement === void 0 || firstElement.focus();
|
13
|
+
}
|
14
|
+
}
|
15
|
+
}, [formik.errors, formik.submitCount, formik.isSubmitting]);
|
16
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare const useExperimentalForm: () => import("./FormContext").ExperimentalFormContextValue | null;
|
package/dist/esm/Input/Input.js
CHANGED
@@ -2,8 +2,8 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
3
3
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
4
4
|
import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
|
5
|
-
var _excluded = ["className", "style", "startIcon", "endItem", "disabled", "readOnly", "clearable", "type", "variant", "locale"];
|
6
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14;
|
5
|
+
var _excluded = ["className", "style", "startIcon", "endItem", "disabled", "readOnly", "clearable", "type", "variant", "locale", "required"];
|
6
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16;
|
7
7
|
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; }
|
8
8
|
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; }
|
9
9
|
import cx from "clsx";
|
@@ -56,6 +56,7 @@ var ValidatedIcon = function ValidatedIcon() {
|
|
56
56
|
* See the [Input documentation page](https://satellite.algolia.com/components/forms/input) for more information.
|
57
57
|
*/
|
58
58
|
export var Input = /*#__PURE__*/forwardRef(function (_ref, externalRef) {
|
59
|
+
var _inputProps$id;
|
59
60
|
var className = _ref.className,
|
60
61
|
style = _ref.style,
|
61
62
|
startIcon = _ref.startIcon,
|
@@ -68,6 +69,7 @@ export var Input = /*#__PURE__*/forwardRef(function (_ref, externalRef) {
|
|
68
69
|
_ref$variant = _ref.variant,
|
69
70
|
variant = _ref$variant === void 0 ? "medium" : _ref$variant,
|
70
71
|
propsLocale = _ref.locale,
|
72
|
+
required = _ref.required,
|
71
73
|
inputProps = _objectWithoutProperties(_ref, _excluded);
|
72
74
|
var contextLocale = useLocale("input");
|
73
75
|
var locale = _objectSpread(_objectSpread(_objectSpread({}, DEFAULT_INPUT_LOCALE), contextLocale), propsLocale);
|
@@ -80,9 +82,13 @@ export var Input = /*#__PURE__*/forwardRef(function (_ref, externalRef) {
|
|
80
82
|
inputRefCallback = _useForwardedRef2[0],
|
81
83
|
inputRef = _useForwardedRef2[1];
|
82
84
|
var triggerInputChange = useTriggerInputChange(inputRef);
|
83
|
-
var _useField = useField(
|
85
|
+
var _useField = useField({
|
86
|
+
required: required
|
87
|
+
}),
|
84
88
|
status = _useField.state.status,
|
85
|
-
labelId = _useField.labelId
|
89
|
+
labelId = _useField.labelId,
|
90
|
+
descriptionId = _useField.descriptionId,
|
91
|
+
inputId = _useField.inputId;
|
86
92
|
var isControlled = ("value" in inputProps);
|
87
93
|
var _useState3 = useState(function () {
|
88
94
|
return isControlled ? inputProps.value : inputProps.defaultValue;
|
@@ -98,7 +104,8 @@ export var Input = /*#__PURE__*/forwardRef(function (_ref, externalRef) {
|
|
98
104
|
}, [inputProps.value, isControlled]);
|
99
105
|
var Icon = startIcon ? startIcon : type === "search" ? SearchIcon : undefined;
|
100
106
|
var iconSize = variant === "small" ? "1rem" : "1.5rem";
|
101
|
-
var
|
107
|
+
var isInvalid = status === "invalid";
|
108
|
+
var StatusIcon = isInvalid ? InvalidIcon : status === "validated" ? ValidatedIcon : Fragment;
|
102
109
|
var clearable = typeof clearableProp === "boolean" ? clearableProp : type === "search";
|
103
110
|
return /*#__PURE__*/_jsxs("div", {
|
104
111
|
className: cx(stl(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n input group\n ", "\n ", "\n "])), focused && "input-focused", disabled && "input-disabled"), VARIANT_CLASSNAMES[variant], STATUS_CLASSNAMES[status], className),
|
@@ -115,8 +122,12 @@ export var Input = /*#__PURE__*/forwardRef(function (_ref, externalRef) {
|
|
115
122
|
className: stl(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["mx-4 no-search-input-decoration"]))),
|
116
123
|
ref: inputRefCallback,
|
117
124
|
type: type,
|
118
|
-
"aria-labelledby": labelId
|
125
|
+
"aria-labelledby": labelId,
|
126
|
+
"aria-describedby": descriptionId
|
119
127
|
}, inputProps), {}, {
|
128
|
+
id: (_inputProps$id = inputProps.id) !== null && _inputProps$id !== void 0 ? _inputProps$id : inputId,
|
129
|
+
required: required,
|
130
|
+
"aria-invalid": isInvalid,
|
120
131
|
readOnly: readOnly,
|
121
132
|
disabled: disabled,
|
122
133
|
onChange: function onChange(evt) {
|
@@ -174,13 +185,14 @@ export var Input = /*#__PURE__*/forwardRef(function (_ref, externalRef) {
|
|
174
185
|
}
|
175
186
|
},
|
176
187
|
children: /*#__PURE__*/_jsx(ChevronUpIcon, {
|
177
|
-
size: 12
|
188
|
+
size: 12,
|
189
|
+
className: cx(isInvalid && stl(_templateObject14 || (_templateObject14 = _taggedTemplateLiteral(["text-red-700"]))))
|
178
190
|
})
|
179
191
|
}), /*#__PURE__*/_jsx("button", {
|
180
192
|
tabIndex: -1,
|
181
193
|
type: "button",
|
182
194
|
disabled: readOnly,
|
183
|
-
className: stl(
|
195
|
+
className: stl(_templateObject15 || (_templateObject15 = _taggedTemplateLiteral(["input-spinner-button ", ""])), readOnly && "cursor-not-allowed"),
|
184
196
|
"aria-label": locale.decrement,
|
185
197
|
onClick: function onClick() {
|
186
198
|
var _inputRef$current$val2, _inputRef$current3;
|
@@ -197,7 +209,8 @@ export var Input = /*#__PURE__*/forwardRef(function (_ref, externalRef) {
|
|
197
209
|
}
|
198
210
|
},
|
199
211
|
children: /*#__PURE__*/_jsx(ChevronDownIcon, {
|
200
|
-
size: 12
|
212
|
+
size: 12,
|
213
|
+
className: cx(isInvalid && stl(_templateObject16 || (_templateObject16 = _taggedTemplateLiteral(["text-red-700"]))))
|
201
214
|
})
|
202
215
|
})]
|
203
216
|
})]
|
@@ -18,6 +18,7 @@ var inputPlugin = plugin(function (_ref) {
|
|
18
18
|
lineHeight: theme("lineHeight.base"),
|
19
19
|
backgroundColor: theme("colors.white"),
|
20
20
|
border: "1px solid ".concat(theme("colors.grey.500")),
|
21
|
+
outline: "1px solid transparent",
|
21
22
|
borderRadius: theme("borderRadius.DEFAULT"),
|
22
23
|
boxShadow: "inset 0px 1px 4px 0px ".concat(rgba(theme("colors.grey.500"), 0.3)),
|
23
24
|
overflow: "hidden",
|
@@ -83,10 +84,14 @@ var inputPlugin = plugin(function (_ref) {
|
|
83
84
|
borderColor: theme("colors.red.700")
|
84
85
|
},
|
85
86
|
"&:hover": {
|
86
|
-
|
87
|
+
background: theme("colors.red.50"),
|
88
|
+
borderColor: theme("colors.red.700"),
|
87
89
|
".input-spinner-button": {
|
88
|
-
borderColor: theme("colors.red.
|
90
|
+
borderColor: theme("colors.red.700")
|
89
91
|
}
|
92
|
+
},
|
93
|
+
"&.input-focused, &.input:focus-within": {
|
94
|
+
outlineColor: theme("colors.red.700")
|
90
95
|
}
|
91
96
|
}
|
92
97
|
});
|
@@ -16,4 +16,4 @@ export declare type DotPaginationProps<T extends number> = {
|
|
16
16
|
*
|
17
17
|
* See the [Dot Pagination documentation page](https://satellite.algolia.com/components/navigation/dot-pagination) for more information.
|
18
18
|
*/
|
19
|
-
export declare const DotPagination: <T extends number>({ currentPage, onChange, nbPages, size, locale
|
19
|
+
export declare const DotPagination: <T extends number>({ currentPage, onChange, nbPages, size, locale, }: DotPaginationProps<T>) => JSX.Element;
|
@@ -1,3 +1,3 @@
|
|
1
1
|
import type { HTMLAttributes, InputHTMLAttributes } from "react";
|
2
2
|
export declare type RadioButtonProps = HTMLAttributes<HTMLInputElement> & Pick<InputHTMLAttributes<HTMLInputElement>, "value" | "name" | "checked" | "defaultChecked" | "onChange" | "required" | "autoFocus" | "disabled">;
|
3
|
-
export declare const RadioButton: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLInputElement> & Pick<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultChecked" | "onChange" | "name" | "
|
3
|
+
export declare const RadioButton: import("react").ForwardRefExoticComponent<HTMLAttributes<HTMLInputElement> & Pick<InputHTMLAttributes<HTMLInputElement>, "value" | "defaultChecked" | "onChange" | "name" | "required" | "autoFocus" | "disabled" | "checked"> & import("react").RefAttributes<HTMLInputElement>>;
|
@@ -2,18 +2,31 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
2
|
import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
|
3
3
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
4
4
|
var _templateObject;
|
5
|
-
var _excluded = ["className"];
|
5
|
+
var _excluded = ["className", "required"];
|
6
6
|
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; }
|
7
7
|
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; }
|
8
8
|
import cx from "clsx";
|
9
9
|
import { forwardRef } from "react";
|
10
|
+
import { useField } from "../Field";
|
10
11
|
import stl from "../styles/helpers/satellitePrefixer";
|
11
12
|
import { jsx as _jsx } from "react/jsx-runtime";
|
12
13
|
export var RadioButton = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
13
14
|
var className = _ref.className,
|
15
|
+
_ref$required = _ref.required,
|
16
|
+
required = _ref$required === void 0 ? false : _ref$required,
|
14
17
|
props = _objectWithoutProperties(_ref, _excluded);
|
15
|
-
|
16
|
-
|
18
|
+
var _useField = useField({
|
19
|
+
required: required
|
20
|
+
}),
|
21
|
+
state = _useField.state,
|
22
|
+
descriptionId = _useField.descriptionId;
|
23
|
+
var isInvalid = state.status === "invalid";
|
24
|
+
return /*#__PURE__*/_jsx("input", _objectSpread(_objectSpread({
|
25
|
+
"aria-describedby": descriptionId
|
26
|
+
}, props), {}, {
|
27
|
+
required: required,
|
28
|
+
"aria-invalid": isInvalid,
|
29
|
+
className: cx(stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["radio-button ", ""])), isInvalid && "radio-button-invalid"), className),
|
17
30
|
type: "radio",
|
18
31
|
ref: ref
|
19
32
|
}));
|