form-validator-widget 2.1.5 → 2.1.6

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,4 +1,4 @@
1
- import React from "react";
1
+ import React from 'react';
2
2
  interface CheckboxOption {
3
3
  value: string;
4
4
  label: string;
package/dist/index.esm.js CHANGED
@@ -1,4 +1,4 @@
1
- import { __spreadArray, __assign, __rest } from 'tslib';
1
+ import { __assign, __rest, __spreadArray } from 'tslib';
2
2
  import React, { useRef, useCallback, useState } from 'react';
3
3
 
4
4
  var validateField = function (value, rules, allValues) {
@@ -176,30 +176,13 @@ var css_248z = "@keyframes animations-module_shake__qVr3b{0%,to{transform:transl
176
176
  var styles = {"form-validator-field":"animations-module_form-validator-field__pirKM","gentlePulse":"animations-module_gentlePulse__xvUHG","error":"animations-module_error__Vq-ZO","shake":"animations-module_shake__qVr3b","form-validator-error-message":"animations-module_form-validator-error-message__h1Ge-","slideIn":"animations-module_slideIn__lwqyK","form-validator-theme-dark":"animations-module_form-validator-theme-dark__ySqnh","form-validator-success":"animations-module_form-validator-success__JkYav","form-validator-field-container":"animations-module_form-validator-field-container__9P7zl","form-validator-label":"animations-module_form-validator-label__O7u2s","form-validator-input":"animations-module_form-validator-input__8Lspk animations-module_form-validator-field__pirKM","checkbox-group":"animations-module_checkbox-group__nmUwv","checkbox-label":"animations-module_checkbox-label__XD-M1","checkbox-input":"animations-module_checkbox-input__hRJLO","error-summary":"animations-module_error-summary__x5Eej"};
177
177
  styleInject(css_248z);
178
178
 
179
- var CheckboxGroup = function (_a) {
180
- var name = _a.name, options = _a.options, _b = _a.values, values = _b === void 0 ? [] : _b, onChange = _a.onChange, onBlur = _a.onBlur, _c = _a.className, className = _c === void 0 ? "" : _c, error = _a.error, touched = _a.touched;
181
- var handleChange = function (e) {
182
- var _a = e.target, value = _a.value, checked = _a.checked;
183
- var newValues = __spreadArray([], values, true);
184
- if (checked)
185
- newValues.push(value);
186
- else
187
- newValues = newValues.filter(function (v) { return v !== value; });
188
- onChange === null || onChange === void 0 ? void 0 : onChange(name, newValues);
189
- };
190
- return (React.createElement("div", { className: "".concat(styles["checkbox-group"], " ").concat(className) },
191
- options.map(function (option) { return (React.createElement("label", { key: option.value, className: styles["checkbox-label"] },
192
- React.createElement("input", { type: "checkbox", name: name, value: option.value, checked: values.includes(option.value), onChange: handleChange, onBlur: function () { return onBlur === null || onBlur === void 0 ? void 0 : onBlur(name); }, className: "".concat(styles["checkbox-input"], " ").concat(error && touched ? styles.error : "") }),
193
- option.label)); }),
194
- error && touched && (React.createElement("div", { className: styles["form-validator-error-message"] }, error))));
195
- };
196
-
197
179
  var FormValidator = function (_a) {
198
- var children = _a.children, validationRules = _a.validationRules, onSubmit = _a.onSubmit, _b = _a.theme, theme = _b === void 0 ? "light" : _b, _c = _a.customStyles, customStyles = _c === void 0 ? {} : _c, _d = _a.enableDebounce, enableDebounce = _d === void 0 ? true : _d, _e = _a.debounceDelay, debounceDelay = _e === void 0 ? 300 : _e;
180
+ var children = _a.children, validationRules = _a.validationRules, onSubmit = _a.onSubmit, _b = _a.theme, theme = _b === void 0 ? 'light' : _b, _c = _a.customStyles, customStyles = _c === void 0 ? {} : _c, _d = _a.enableDebounce, enableDebounce = _d === void 0 ? true : _d, _e = _a.debounceDelay, debounceDelay = _e === void 0 ? 300 : _e;
199
181
  var _f = useState({}), formValues = _f[0], setFormValues = _f[1];
200
182
  var _g = useState({}), errors = _g[0], setErrors = _g[1];
201
183
  var _h = useState({}), touched = _h[0], setTouched = _h[1];
202
- var getVisibleErrors = useCallback(function () {
184
+ // Get visible errors (only for touched fields)
185
+ useCallback(function () {
203
186
  var visibleErrors = {};
204
187
  Object.keys(errors).forEach(function (fieldName) {
205
188
  if (touched[fieldName] && errors[fieldName]) {
@@ -212,14 +195,17 @@ var FormValidator = function (_a) {
212
195
  var error = validateField(value, validationRules[name]);
213
196
  setErrors(function (prev) {
214
197
  var _a;
215
- return (__assign(__assign({}, prev), (_a = {}, _a[name] = error || "", _a)));
198
+ return (__assign(__assign({}, prev), (_a = {}, _a[name] = error || '', _a)));
216
199
  });
217
200
  }, debounceDelay);
218
201
  var handleChange = useCallback(function (e) {
219
202
  var _a = e.target, name = _a.name, value = _a.value, type = _a.type, checked = _a.checked;
220
203
  var fieldValue = value;
221
- if (type === "checkbox") {
222
- fieldValue = checked; // single checkbox only
204
+ if (type === 'checkbox') {
205
+ fieldValue = checked ? value : '';
206
+ }
207
+ else if (type === 'radio') {
208
+ fieldValue = value;
223
209
  }
224
210
  setFormValues(function (prev) {
225
211
  var _a;
@@ -232,15 +218,19 @@ var FormValidator = function (_a) {
232
218
  var error_1 = validateField(fieldValue, validationRules[name]);
233
219
  setErrors(function (prev) {
234
220
  var _a;
235
- return (__assign(__assign({}, prev), (_a = {}, _a[name] = error_1 || "", _a)));
221
+ return (__assign(__assign({}, prev), (_a = {}, _a[name] = error_1 || '', _a)));
236
222
  });
237
223
  }
238
224
  }, [enableDebounce, debouncedValidate, validationRules]);
239
225
  var handleBlur = useCallback(function (e) {
240
226
  var _a = e.target, name = _a.name, value = _a.value, type = _a.type, checked = _a.checked;
241
227
  var fieldValue = value;
242
- if (type === "checkbox")
243
- fieldValue = checked;
228
+ if (type === 'checkbox') {
229
+ fieldValue = checked ? value : '';
230
+ }
231
+ else if (type === 'radio') {
232
+ fieldValue = value;
233
+ }
244
234
  setTouched(function (prev) {
245
235
  var _a;
246
236
  return (__assign(__assign({}, prev), (_a = {}, _a[name] = true, _a)));
@@ -248,79 +238,104 @@ var FormValidator = function (_a) {
248
238
  var error = validateField(fieldValue, validationRules[name]);
249
239
  setErrors(function (prev) {
250
240
  var _a;
251
- return (__assign(__assign({}, prev), (_a = {}, _a[name] = error || "", _a)));
241
+ return (__assign(__assign({}, prev), (_a = {}, _a[name] = error || '', _a)));
252
242
  });
253
243
  }, [validationRules]);
244
+ // Special handler for CheckboxGroup
245
+ var handleGroupChange = useCallback(function (name, values) {
246
+ setFormValues(function (prev) {
247
+ var _a;
248
+ return (__assign(__assign({}, prev), (_a = {}, _a[name] = values, _a)));
249
+ });
250
+ var error = validateField(values, validationRules[name]);
251
+ setErrors(function (prev) {
252
+ var _a;
253
+ return (__assign(__assign({}, prev), (_a = {}, _a[name] = error || '', _a)));
254
+ });
255
+ }, [validationRules]);
256
+ var handleGroupBlur = useCallback(function (name) {
257
+ setTouched(function (prev) {
258
+ var _a;
259
+ return (__assign(__assign({}, prev), (_a = {}, _a[name] = true, _a)));
260
+ });
261
+ var error = validateField(formValues[name], validationRules[name]);
262
+ setErrors(function (prev) {
263
+ var _a;
264
+ return (__assign(__assign({}, prev), (_a = {}, _a[name] = error || '', _a)));
265
+ });
266
+ }, [formValues, validationRules]);
254
267
  var handleSubmit = useCallback(function (e) {
255
268
  e.preventDefault();
256
269
  var formErrors = validateForm(formValues, validationRules);
257
270
  setErrors(formErrors);
258
271
  var allTouched = {};
259
- Object.keys(validationRules).forEach(function (fieldName) { return (allTouched[fieldName] = true); });
272
+ Object.keys(validationRules).forEach(function (fieldName) {
273
+ allTouched[fieldName] = true;
274
+ });
260
275
  setTouched(allTouched);
261
276
  if (Object.keys(formErrors).length === 0) {
262
277
  onSubmit(formValues);
263
278
  }
264
279
  }, [formValues, validationRules, onSubmit]);
280
+ // Process children and inject props
265
281
  var childrenWithProps = React.Children.map(children, function (child) {
266
- var _a;
267
- if (!React.isValidElement(child))
268
- return child;
269
- var element = child;
270
- if (!element.props.name)
271
- return child;
272
- var fieldName = element.props.name;
273
- var hasError = !!errors[fieldName];
274
- var isTouched = touched[fieldName];
275
- var isSuccess = isTouched && !hasError;
276
- // SPECIAL CASE → CheckboxGroup
277
- if (element.type === CheckboxGroup) {
278
- return React.cloneElement(element, {
279
- values: formValues[fieldName] || [],
280
- onChange: function (name, vals) {
281
- setFormValues(function (prev) {
282
- var _a;
283
- return (__assign(__assign({}, prev), (_a = {}, _a[name] = vals, _a)));
284
- });
285
- var error = validateField(vals, validationRules[name]);
286
- setErrors(function (prev) {
287
- var _a;
288
- return (__assign(__assign({}, prev), (_a = {}, _a[name] = error || "", _a)));
282
+ if (React.isValidElement(child)) {
283
+ var element = child;
284
+ var childName = element.props.name;
285
+ if (childName) {
286
+ // Check if this is a CheckboxGroup by looking at the component type
287
+ var isCheckboxGroup = element.type === 'CheckboxGroup' ||
288
+ (typeof element.type === 'function' && element.type.name === 'CheckboxGroup');
289
+ if (isCheckboxGroup) {
290
+ // For CheckboxGroup, pass group handlers
291
+ return React.cloneElement(element, {
292
+ values: formValues[childName] || [],
293
+ onChange: handleGroupChange,
294
+ onBlur: handleGroupBlur,
295
+ error: errors[childName],
296
+ touched: touched[childName],
297
+ 'data-touched': touched[childName],
298
+ 'data-error': !!errors[childName]
289
299
  });
290
- },
291
- onBlur: function (name) {
292
- return setTouched(function (prev) {
293
- var _a;
294
- return (__assign(__assign({}, prev), (_a = {}, _a[name] = true, _a)));
300
+ }
301
+ else {
302
+ // For regular inputs
303
+ var hasError = !!errors[childName];
304
+ var isTouched = touched[childName];
305
+ var isSuccess = isTouched && !hasError;
306
+ var className = 'form-validator-field';
307
+ if (hasError)
308
+ className += ' error';
309
+ if (isSuccess)
310
+ className += ' form-validator-success';
311
+ if (element.props.className)
312
+ className += " ".concat(element.props.className);
313
+ return React.cloneElement(element, {
314
+ onChange: handleChange,
315
+ onBlur: handleBlur,
316
+ value: formValues[childName] || '',
317
+ className: className,
318
+ style: customStyles[childName],
319
+ 'data-theme': theme,
320
+ 'data-touched': isTouched,
321
+ 'data-error': hasError
295
322
  });
296
- },
297
- error: errors[fieldName],
298
- touched: touched[fieldName],
299
- });
323
+ }
324
+ }
300
325
  }
301
- var className = styles["form-validator-field"];
302
- if (hasError)
303
- className += " ".concat(styles.error);
304
- if (isSuccess)
305
- className += " ".concat(styles["form-validator-success"]);
306
- if (element.props.className)
307
- className += " ".concat(element.props.className);
308
- return React.cloneElement(child, {
309
- onChange: handleChange,
310
- onBlur: handleBlur,
311
- value: (_a = formValues[fieldName]) !== null && _a !== void 0 ? _a : "",
312
- checked: typeof formValues[fieldName] === "boolean"
313
- ? formValues[fieldName]
314
- : undefined,
315
- className: className,
316
- style: customStyles[fieldName],
317
- "data-theme": theme,
318
- });
326
+ return child;
319
327
  });
320
- var visibleErrors = getVisibleErrors();
328
+ // Only show error messages for touched fields, and place them near the field
329
+ var errorElements = Object.keys(touched).map(function (fieldName) {
330
+ if (touched[fieldName] && errors[fieldName]) {
331
+ return (React.createElement("div", { key: fieldName, className: styles['form-validator-error-message'], "data-field": fieldName }, errors[fieldName]));
332
+ }
333
+ return null;
334
+ }).filter(Boolean);
321
335
  return (React.createElement("form", { onSubmit: handleSubmit, className: "form-validator-theme-".concat(theme), style: customStyles.form, noValidate: true },
322
336
  childrenWithProps,
323
- Object.keys(visibleErrors).length > 0 && (React.createElement("div", { className: styles["error-summary"] }, Object.values(visibleErrors).map(function (err, i) { return (React.createElement("div", { key: i, className: styles["form-validator-error-message"] }, err)); })))));
337
+ errorElements.length > 0 && (React.createElement("div", { className: styles['error-summary'] }, errorElements)),
338
+ React.createElement("button", { type: "submit", style: { display: 'none' } }, "Submit")));
324
339
  };
325
340
 
326
341
  var FormField = function (_a) {
@@ -332,6 +347,30 @@ var FormField = function (_a) {
332
347
  errors && (React.createElement("div", { id: "".concat(fieldId, "-errors"), className: "form-validator-errors-message", role: "alert" }, errors))));
333
348
  };
334
349
 
350
+ var CheckboxGroup = function (_a) {
351
+ var name = _a.name, options = _a.options, _b = _a.values, values = _b === void 0 ? [] : _b, onChange = _a.onChange, onBlur = _a.onBlur, _c = _a.className, className = _c === void 0 ? '' : _c, error = _a.error, touched = _a.touched;
352
+ var handleChange = function (e) {
353
+ var _a = e.target, value = _a.value, checked = _a.checked;
354
+ var newValues;
355
+ if (checked) {
356
+ newValues = __spreadArray(__spreadArray([], values, true), [value], false);
357
+ }
358
+ else {
359
+ newValues = values.filter(function (v) { return v !== value; });
360
+ }
361
+ onChange === null || onChange === void 0 ? void 0 : onChange(name, newValues);
362
+ };
363
+ // Notify form of blur when any checkbox loses focus
364
+ var handleBlur = function () {
365
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(name);
366
+ };
367
+ return (React.createElement("div", { className: "".concat(styles['checkbox-group'], " ").concat(className), "data-touched": touched, "data-error": error },
368
+ options.map(function (option) { return (React.createElement("label", { key: option.value, className: styles['checkbox-label'] },
369
+ React.createElement("input", { type: "checkbox", name: name, value: option.value, checked: values.includes(option.value), onChange: handleChange, onBlur: handleBlur, className: "".concat(styles['checkbox-input'], " ").concat(error && touched ? styles['error'] : '') }),
370
+ option.label)); }),
371
+ error && touched && (React.createElement("div", { className: styles['form-validator-error-message'] }, error))));
372
+ };
373
+
335
374
  if (!Array.prototype.some) {
336
375
  Array.prototype.some = function (callback, thisArg) {
337
376
  for (var i = 0; i < this.length; i++) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/utils/validators.ts","../src/hooks/useDebounce.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/components/CheckboxGroup.tsx","../src/components/FormValidator.tsx","../src/components/FormField.tsx","../src/utils/polyfills.ts"],"sourcesContent":["import { ValidationRule } from '../types';\r\n\r\nexport type ValidatorFn = (value: any) => string | undefined;\r\n\r\nexport const validateField = (\r\n value: any, \r\n rules?: ValidationRule,\r\n allValues?: Record<string, any>\r\n): string | undefined => {\r\n if (!rules) return undefined;\r\n\r\n if (rules.required) {\r\n const message = rules.messages?.required || 'This field is required';\r\n \r\n if (typeof value === 'boolean') {\r\n if (!value) return message; \r\n } else if (Array.isArray(value)) {\r\n if (value.length === 0) return message; \r\n } else if (value === null || value === undefined || value.toString().trim() === '') {\r\n return message;\r\n }\r\n }\r\n\r\n if (!value && !rules.required) return undefined;\r\n\r\n if (typeof value === 'string') {\r\n \r\n if (rules.minLength && value.length < rules.minLength) {\r\n return rules.messages?.minLength || `Must be at least ${rules.minLength} characters`;\r\n }\r\n\r\n if (rules.maxLength && value.length > rules.maxLength) {\r\n return rules.messages?.maxLength || `Must be no more than ${rules.maxLength} characters`;\r\n }\r\n\r\n if (rules.pattern && !rules.pattern.test(value)) {\r\n return rules.messages?.pattern || 'Invalid format';\r\n }\r\n }\r\n\r\n if (rules.email && value) {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(value)) {\r\n return rules.messages?.email || 'Please enter a valid email address';\r\n }\r\n }\r\n\r\n if (rules.complexity && value) {\r\n const message = rules.messages?.complexity || 'Password must contain at least 1 uppercase, 1 lowercase, 1 number, and 1 special character';\r\n \r\n const hasUpperCase = /[A-Z]/.test(value);\r\n const hasLowerCase = /[a-z]/.test(value);\r\n const hasNumbers = /\\d/.test(value);\r\n const hasSpecial = /[!@#$%^&*(),.?\":{}|<>]/.test(value);\r\n \r\n if (!hasUpperCase || !hasLowerCase || !hasNumbers || !hasSpecial) {\r\n return message;\r\n }\r\n }\r\n\r\n if (rules.number !== undefined) {\r\n const num = Number(value);\r\n \r\n if (isNaN(num)) {\r\n return rules.messages?.number || 'Please enter a valid number';\r\n }\r\n \r\n if (rules.min !== undefined && num < rules.min) {\r\n return rules.messages?.min || `Must be at least ${rules.min}`;\r\n }\r\n \r\n if (rules.max !== undefined && num > rules.max) {\r\n return rules.messages?.max || `Must be no more than ${rules.max}`;\r\n }\r\n }\r\n\r\n if (rules.url && value) {\r\n try {\r\n new URL(value);\r\n } catch {\r\n return rules.messages?.url || 'Please enter a valid URL (include http:// or https://)';\r\n }\r\n }\r\n\r\n if (rules.tel && value) {\r\n const phoneRegex = /^[\\+]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[0-9]{1,4}[-\\s\\.]?[0-9]{1,4}$/;\r\n if (!phoneRegex.test(value)) {\r\n return rules.messages?.tel || 'Please enter a valid phone number';\r\n }\r\n }\r\n\r\n if (rules.date && value) {\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) {\r\n return rules.messages?.date || 'Please enter a valid date';\r\n }\r\n \r\n if (rules.minDate) {\r\n const minDate = new Date(rules.minDate);\r\n if (date < minDate) {\r\n return rules.messages?.minDate || `Date must be after ${minDate.toLocaleDateString()}`;\r\n }\r\n }\r\n \r\n if (rules.maxDate) {\r\n const maxDate = new Date(rules.maxDate);\r\n if (date > maxDate) {\r\n return rules.messages?.maxDate || `Date must be before ${maxDate.toLocaleDateString()}`;\r\n }\r\n }\r\n }\r\n\r\n if (rules.checkboxGroup && Array.isArray(value)) {\r\n if (rules.required && value.length === 0) {\r\n return rules.messages?.required || 'Please select at least one option';\r\n }\r\n \r\n if (rules.minSelected !== undefined && value.length < rules.minSelected) {\r\n return rules.messages?.minSelected || `Please select at least ${rules.minSelected} options`;\r\n }\r\n \r\n if (rules.maxSelected !== undefined && value.length > rules.maxSelected) {\r\n return rules.messages?.maxSelected || `Please select no more than ${rules.maxSelected} options`;\r\n }\r\n }\r\n\r\n if (rules.radioGroup && rules.required) {\r\n if (!value || value === '') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.select && rules.required) {\r\n if (!value || value === '' || value === 'default' || value === 'placeholder') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.custom) {\r\n return rules.custom(value, allValues);\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const validateForm = (\r\n values: Record<string, any>,\r\n rules: Record<string, ValidationRule>\r\n): Record<string, string> => {\r\n const errors: Record<string, string> = {};\r\n \r\n Object.keys(rules).forEach(fieldName => {\r\n const error = validateField(values[fieldName], rules[fieldName], values);\r\n if (error) {\r\n errors[fieldName] = error;\r\n }\r\n });\r\n \r\n return errors;\r\n};","import { useCallback, useRef } from \"react\";\r\n\r\nexport function useDebounce<T extends (...args: any[]) => void>(\r\n fn: T,\r\n delay: number\r\n): T {\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\r\n\r\n return useCallback(\r\n ((...args: any[]) => {\r\n if(timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n }) as T,\r\n [fn, delay]\r\n );\r\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from \"react\";\r\nimport styles from \"../styles/animations.module.css\";\r\n\r\ninterface CheckboxOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface CheckboxGroupProps {\r\n name: string;\r\n options: CheckboxOption[];\r\n values?: string[];\r\n onChange?: (name: string, values: string[]) => void;\r\n onBlur?: (name: string) => void;\r\n className?: string;\r\n error?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\r\n name,\r\n options,\r\n values = [],\r\n onChange,\r\n onBlur,\r\n className = \"\",\r\n error,\r\n touched,\r\n}) => {\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { value, checked } = e.target;\r\n\r\n let newValues = [...values];\r\n if (checked) newValues.push(value);\r\n else newValues = newValues.filter((v) => v !== value);\r\n\r\n onChange?.(name, newValues);\r\n };\r\n\r\n return (\r\n <div className={`${styles[\"checkbox-group\"]} ${className}`}>\r\n {options.map((option) => (\r\n <label key={option.value} className={styles[\"checkbox-label\"]}>\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n value={option.value}\r\n checked={values.includes(option.value)}\r\n onChange={handleChange}\r\n onBlur={() => onBlur?.(name)}\r\n className={`${styles[\"checkbox-input\"]} ${\r\n error && touched ? styles.error : \"\"\r\n }`}\r\n />\r\n {option.label}\r\n </label>\r\n ))}\r\n\r\n {error && touched && (\r\n <div className={styles[\"form-validator-error-message\"]}>\r\n {error}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useCallback } from \"react\";\r\nimport { FormValidatorProps, FormState, ErrorState } from \"../types\";\r\nimport { validateField, validateForm } from \"../utils/validators\";\r\nimport { useDebounce } from \"../hooks/useDebounce\";\r\nimport { CheckboxGroup } from \"./CheckboxGroup\";\r\nimport styles from \"../styles/animations.module.css\";\r\n\r\nexport const FormValidator: React.FC<FormValidatorProps> = ({\r\n children,\r\n validationRules,\r\n onSubmit,\r\n theme = \"light\",\r\n customStyles = {},\r\n enableDebounce = true,\r\n debounceDelay = 300,\r\n}) => {\r\n const [formValues, setFormValues] = useState<FormState>({});\r\n const [errors, setErrors] = useState<ErrorState>({});\r\n const [touched, setTouched] = useState<Record<string, boolean>>({});\r\n\r\n const getVisibleErrors = useCallback(() => {\r\n const visibleErrors: ErrorState = {};\r\n Object.keys(errors).forEach((fieldName) => {\r\n if (touched[fieldName] && errors[fieldName]) {\r\n visibleErrors[fieldName] = errors[fieldName];\r\n }\r\n });\r\n return visibleErrors;\r\n }, [errors, touched]);\r\n\r\n const debouncedValidate = useDebounce((name: string, value: any) => {\r\n const error = validateField(value, validationRules[name]);\r\n setErrors((prev) => ({ ...prev, [name]: error || \"\" }));\r\n }, debounceDelay);\r\n\r\n const handleChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>) => {\r\n const { name, value, type, checked } = e.target as HTMLInputElement;\r\n\r\n let fieldValue: any = value;\r\n\r\n if (type === \"checkbox\") {\r\n fieldValue = checked; // single checkbox only\r\n }\r\n\r\n setFormValues((prev) => ({ ...prev, [name]: fieldValue }));\r\n\r\n if (enableDebounce) {\r\n debouncedValidate(name, fieldValue);\r\n } else {\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors((prev) => ({ ...prev, [name]: error || \"\" }));\r\n }\r\n },\r\n [enableDebounce, debouncedValidate, validationRules]\r\n );\r\n\r\n const handleBlur = useCallback(\r\n (e: React.FocusEvent<HTMLInputElement | HTMLSelectElement>) => {\r\n const { name, value, type, checked } = e.target as HTMLInputElement;\r\n\r\n let fieldValue: any = value;\r\n if (type === \"checkbox\") fieldValue = checked;\r\n\r\n setTouched((prev) => ({ ...prev, [name]: true }));\r\n\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors((prev) => ({ ...prev, [name]: error || \"\" }));\r\n },\r\n [validationRules]\r\n );\r\n\r\n const handleSubmit = useCallback(\r\n (e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n const formErrors = validateForm(formValues, validationRules);\r\n setErrors(formErrors);\r\n\r\n const allTouched: Record<string, boolean> = {};\r\n Object.keys(validationRules).forEach(\r\n (fieldName) => (allTouched[fieldName] = true)\r\n );\r\n setTouched(allTouched);\r\n\r\n if (Object.keys(formErrors).length === 0) {\r\n onSubmit(formValues);\r\n }\r\n },\r\n [formValues, validationRules, onSubmit]\r\n );\r\n\r\n const childrenWithProps = React.Children.map(children, (child) => {\r\n if (!React.isValidElement(child)) return child;\r\n\r\n const element: any = child;\r\n if (!element.props.name) return child;\r\n\r\n const fieldName = element.props.name;\r\n const hasError = !!errors[fieldName];\r\n const isTouched = touched[fieldName];\r\n const isSuccess = isTouched && !hasError;\r\n\r\n // ⭐ SPECIAL CASE → CheckboxGroup\r\n if (element.type === CheckboxGroup) {\r\n return React.cloneElement(element, {\r\n values: formValues[fieldName] || [],\r\n onChange: (name: string, vals: string[]) => {\r\n setFormValues((prev) => ({ ...prev, [name]: vals }));\r\n\r\n const error = validateField(vals, validationRules[name]);\r\n setErrors((prev) => ({ ...prev, [name]: error || \"\" }));\r\n },\r\n onBlur: (name: string) =>\r\n setTouched((prev) => ({ ...prev, [name]: true })),\r\n error: errors[fieldName],\r\n touched: touched[fieldName],\r\n });\r\n }\r\n\r\n let className = styles[\"form-validator-field\"];\r\n if (hasError) className += ` ${styles.error}`;\r\n if (isSuccess) className += ` ${styles[\"form-validator-success\"]}`;\r\n if (element.props.className) className += ` ${element.props.className}`;\r\n\r\n return React.cloneElement(child, {\r\n onChange: handleChange,\r\n onBlur: handleBlur,\r\n value: formValues[fieldName] ?? \"\",\r\n checked:\r\n typeof formValues[fieldName] === \"boolean\"\r\n ? formValues[fieldName]\r\n : undefined,\r\n className,\r\n style: customStyles[fieldName],\r\n \"data-theme\": theme,\r\n });\r\n });\r\n\r\n const visibleErrors = getVisibleErrors();\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit}\r\n className={`form-validator-theme-${theme}`}\r\n style={customStyles.form}\r\n noValidate\r\n >\r\n {childrenWithProps}\r\n\r\n {Object.keys(visibleErrors).length > 0 && (\r\n <div className={styles[\"error-summary\"]}>\r\n {Object.values(visibleErrors).map((err, i) => (\r\n <div key={i} className={styles[\"form-validator-error-message\"]}>\r\n {err}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </form>\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface FormFieldProps extends React.InputHTMLAttributes<HTMLInputElement>{\r\n label?: string;\r\n errors?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const FormField: React.FC<FormFieldProps> = ({\r\n label,\r\n errors,\r\n touched,\r\n className ='',\r\n id,\r\n ...props\r\n}) => {\r\n const fieldId = id || props.name;\r\n\r\n return (\r\n <div className=\"form-validator-field-container\">\r\n {label && (\r\n <label htmlFor={fieldId} className=\"form-validator-label\">\r\n {label}\r\n </label>\r\n )}\r\n\r\n <input id={fieldId} className={`form-validator-input ${errors ? 'errors' : ''} ${touched && !errors ? 'success' : ''} ${className}`}\r\n aria-invalid={!!errors}\r\n aria-describedby={errors ? `${fieldId}-errors` : undefined}\r\n {...props}/>\r\n\r\n {errors && (\r\n <div \r\n id={`${fieldId}-errors`}\r\n className=\"form-validator-errors-message\"\r\n role=\"alert\"\r\n >\r\n {errors}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};","\r\nif (!Array.prototype.some){\r\n Array.prototype.some = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(callback.call(thisArg, this[i], i, this)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }; \r\n}\r\n\r\nif (!Array.prototype.every){\r\n Array.prototype.every = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(!callback.call(thisArg, this[i], i, this)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } as typeof Array.prototype.every; \r\n}\r\n\r\nif (!String.prototype.trim){\r\n String.prototype.trim = function(): string {\r\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n };\r\n}\r\n\r\nexport const throttle = <T extends (...args: any[]) => any>(\r\n func: T,\r\n limit: number\r\n): T => {\r\n let inThrottle: boolean;\r\n let lastResult: ReturnType<T>;\r\n\r\n return function(this: any, ...args: any[]) {\r\n if(!inThrottle) {\r\n inThrottle = true;\r\n lastResult = func.apply(this, args);\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n return lastResult;\r\n } as T;\r\n};\r\n"],"names":[],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/utils/validators.ts","../src/hooks/useDebounce.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/components/FormValidator.tsx","../src/components/FormField.tsx","../src/components/CheckboxGroup.tsx","../src/utils/polyfills.ts"],"sourcesContent":["import { ValidationRule } from '../types';\r\n\r\nexport type ValidatorFn = (value: any) => string | undefined;\r\n\r\nexport const validateField = (\r\n value: any, \r\n rules?: ValidationRule,\r\n allValues?: Record<string, any>\r\n): string | undefined => {\r\n if (!rules) return undefined;\r\n\r\n if (rules.required) {\r\n const message = rules.messages?.required || 'This field is required';\r\n \r\n if (typeof value === 'boolean') {\r\n if (!value) return message; \r\n } else if (Array.isArray(value)) {\r\n if (value.length === 0) return message; \r\n } else if (value === null || value === undefined || value.toString().trim() === '') {\r\n return message;\r\n }\r\n }\r\n\r\n if (!value && !rules.required) return undefined;\r\n\r\n if (typeof value === 'string') {\r\n \r\n if (rules.minLength && value.length < rules.minLength) {\r\n return rules.messages?.minLength || `Must be at least ${rules.minLength} characters`;\r\n }\r\n\r\n if (rules.maxLength && value.length > rules.maxLength) {\r\n return rules.messages?.maxLength || `Must be no more than ${rules.maxLength} characters`;\r\n }\r\n\r\n if (rules.pattern && !rules.pattern.test(value)) {\r\n return rules.messages?.pattern || 'Invalid format';\r\n }\r\n }\r\n\r\n if (rules.email && value) {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(value)) {\r\n return rules.messages?.email || 'Please enter a valid email address';\r\n }\r\n }\r\n\r\n if (rules.complexity && value) {\r\n const message = rules.messages?.complexity || 'Password must contain at least 1 uppercase, 1 lowercase, 1 number, and 1 special character';\r\n \r\n const hasUpperCase = /[A-Z]/.test(value);\r\n const hasLowerCase = /[a-z]/.test(value);\r\n const hasNumbers = /\\d/.test(value);\r\n const hasSpecial = /[!@#$%^&*(),.?\":{}|<>]/.test(value);\r\n \r\n if (!hasUpperCase || !hasLowerCase || !hasNumbers || !hasSpecial) {\r\n return message;\r\n }\r\n }\r\n\r\n if (rules.number !== undefined) {\r\n const num = Number(value);\r\n \r\n if (isNaN(num)) {\r\n return rules.messages?.number || 'Please enter a valid number';\r\n }\r\n \r\n if (rules.min !== undefined && num < rules.min) {\r\n return rules.messages?.min || `Must be at least ${rules.min}`;\r\n }\r\n \r\n if (rules.max !== undefined && num > rules.max) {\r\n return rules.messages?.max || `Must be no more than ${rules.max}`;\r\n }\r\n }\r\n\r\n if (rules.url && value) {\r\n try {\r\n new URL(value);\r\n } catch {\r\n return rules.messages?.url || 'Please enter a valid URL (include http:// or https://)';\r\n }\r\n }\r\n\r\n if (rules.tel && value) {\r\n const phoneRegex = /^[\\+]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[0-9]{1,4}[-\\s\\.]?[0-9]{1,4}$/;\r\n if (!phoneRegex.test(value)) {\r\n return rules.messages?.tel || 'Please enter a valid phone number';\r\n }\r\n }\r\n\r\n if (rules.date && value) {\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) {\r\n return rules.messages?.date || 'Please enter a valid date';\r\n }\r\n \r\n if (rules.minDate) {\r\n const minDate = new Date(rules.minDate);\r\n if (date < minDate) {\r\n return rules.messages?.minDate || `Date must be after ${minDate.toLocaleDateString()}`;\r\n }\r\n }\r\n \r\n if (rules.maxDate) {\r\n const maxDate = new Date(rules.maxDate);\r\n if (date > maxDate) {\r\n return rules.messages?.maxDate || `Date must be before ${maxDate.toLocaleDateString()}`;\r\n }\r\n }\r\n }\r\n\r\n if (rules.checkboxGroup && Array.isArray(value)) {\r\n if (rules.required && value.length === 0) {\r\n return rules.messages?.required || 'Please select at least one option';\r\n }\r\n \r\n if (rules.minSelected !== undefined && value.length < rules.minSelected) {\r\n return rules.messages?.minSelected || `Please select at least ${rules.minSelected} options`;\r\n }\r\n \r\n if (rules.maxSelected !== undefined && value.length > rules.maxSelected) {\r\n return rules.messages?.maxSelected || `Please select no more than ${rules.maxSelected} options`;\r\n }\r\n }\r\n\r\n if (rules.radioGroup && rules.required) {\r\n if (!value || value === '') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.select && rules.required) {\r\n if (!value || value === '' || value === 'default' || value === 'placeholder') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.custom) {\r\n return rules.custom(value, allValues);\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const validateForm = (\r\n values: Record<string, any>,\r\n rules: Record<string, ValidationRule>\r\n): Record<string, string> => {\r\n const errors: Record<string, string> = {};\r\n \r\n Object.keys(rules).forEach(fieldName => {\r\n const error = validateField(values[fieldName], rules[fieldName], values);\r\n if (error) {\r\n errors[fieldName] = error;\r\n }\r\n });\r\n \r\n return errors;\r\n};","import { useCallback, useRef } from \"react\";\r\n\r\nexport function useDebounce<T extends (...args: any[]) => void>(\r\n fn: T,\r\n delay: number\r\n): T {\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\r\n\r\n return useCallback(\r\n ((...args: any[]) => {\r\n if(timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n }) as T,\r\n [fn, delay]\r\n );\r\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useState, useCallback, ReactElement } from \"react\";\r\nimport { FormValidatorProps, FormState, ErrorState } from \"../types\";\r\nimport { validateField, validateForm } from \"../utils/validators\";\r\nimport { useDebounce } from \"../hooks/useDebounce\";\r\nimport styles from '../styles/animations.module.css';\r\n\r\nexport const FormValidator: React.FC<FormValidatorProps> = ({\r\n children,\r\n validationRules,\r\n onSubmit,\r\n theme = 'light',\r\n customStyles = {},\r\n enableDebounce = true,\r\n debounceDelay = 300\r\n}) => {\r\n const [formValues, setFormValues] = useState<FormState>({});\r\n const [errors, setErrors] = useState<ErrorState>({});\r\n const [touched, setTouched] = useState<Record<string, boolean>>({});\r\n\r\n // Get visible errors (only for touched fields)\r\n const getVisibleErrors = useCallback(() => {\r\n const visibleErrors: ErrorState = {};\r\n Object.keys(errors).forEach(fieldName => {\r\n if (touched[fieldName] && errors[fieldName]) {\r\n visibleErrors[fieldName] = errors[fieldName];\r\n }\r\n });\r\n return visibleErrors;\r\n }, [errors, touched]);\r\n\r\n const debouncedValidate = useDebounce((name: string, value: any) => {\r\n const error = validateField(value, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, debounceDelay);\r\n\r\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { name, value, type, checked } = e.target;\r\n \r\n let fieldValue = value;\r\n if (type === 'checkbox') {\r\n fieldValue = checked ? value : '';\r\n } else if (type === 'radio') {\r\n fieldValue = value;\r\n }\r\n \r\n setFormValues(prev => ({ ...prev, [name]: fieldValue }));\r\n\r\n if (enableDebounce) {\r\n debouncedValidate(name, fieldValue);\r\n } else {\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }\r\n }, [enableDebounce, debouncedValidate, validationRules]);\r\n\r\n const handleBlur = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\r\n const { name, value, type, checked } = e.target;\r\n \r\n let fieldValue = value;\r\n if (type === 'checkbox') {\r\n fieldValue = checked ? value : '';\r\n } else if (type === 'radio') {\r\n fieldValue = value;\r\n }\r\n \r\n setTouched(prev => ({ ...prev, [name]: true }));\r\n\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, [validationRules]);\r\n\r\n // Special handler for CheckboxGroup\r\n const handleGroupChange = useCallback((name: string, values: string[]) => {\r\n setFormValues(prev => ({ ...prev, [name]: values }));\r\n \r\n const error = validateField(values, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, [validationRules]);\r\n\r\n const handleGroupBlur = useCallback((name: string) => {\r\n setTouched(prev => ({ ...prev, [name]: true }));\r\n \r\n const error = validateField(formValues[name], validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, [formValues, validationRules]);\r\n\r\n const handleSubmit = useCallback((e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n const formErrors = validateForm(formValues, validationRules);\r\n setErrors(formErrors);\r\n \r\n const allTouched: Record<string, boolean> = {};\r\n Object.keys(validationRules).forEach(fieldName => {\r\n allTouched[fieldName] = true;\r\n });\r\n setTouched(allTouched);\r\n\r\n if (Object.keys(formErrors).length === 0) {\r\n onSubmit(formValues);\r\n }\r\n }, [formValues, validationRules, onSubmit]);\r\n\r\n // Process children and inject props\r\n const childrenWithProps = React.Children.map(children, child => {\r\n if (React.isValidElement(child)) {\r\n const element = child as React.ReactElement<any>;\r\n const childName = element.props.name;\r\n\r\n if (childName) {\r\n // Check if this is a CheckboxGroup by looking at the component type\r\n const isCheckboxGroup = element.type === 'CheckboxGroup' || \r\n (typeof element.type === 'function' && element.type.name === 'CheckboxGroup');\r\n\r\n if (isCheckboxGroup) {\r\n // For CheckboxGroup, pass group handlers\r\n return React.cloneElement(element, {\r\n values: formValues[childName] || [],\r\n onChange: handleGroupChange,\r\n onBlur: handleGroupBlur,\r\n error: errors[childName],\r\n touched: touched[childName],\r\n 'data-touched': touched[childName],\r\n 'data-error': !!errors[childName]\r\n });\r\n } else {\r\n // For regular inputs\r\n const hasError = !!errors[childName];\r\n const isTouched = touched[childName];\r\n const isSuccess = isTouched && !hasError;\r\n \r\n let className = 'form-validator-field';\r\n if (hasError) className += ' error';\r\n if (isSuccess) className += ' form-validator-success';\r\n if (element.props.className) className += ` ${element.props.className}`;\r\n\r\n return React.cloneElement(element, {\r\n onChange: handleChange,\r\n onBlur: handleBlur,\r\n value: formValues[childName] || '',\r\n className,\r\n style: customStyles[childName],\r\n 'data-theme': theme,\r\n 'data-touched': isTouched,\r\n 'data-error': hasError\r\n });\r\n }\r\n }\r\n }\r\n return child;\r\n });\r\n\r\n // Only show error messages for touched fields, and place them near the field\r\n const errorElements = Object.keys(touched).map(fieldName => {\r\n if (touched[fieldName] && errors[fieldName]) {\r\n return (\r\n <div \r\n key={fieldName} \r\n className={styles['form-validator-error-message']}\r\n data-field={fieldName}\r\n >\r\n {errors[fieldName]}\r\n </div>\r\n );\r\n }\r\n return null;\r\n }).filter(Boolean);\r\n\r\n return (\r\n <form \r\n onSubmit={handleSubmit}\r\n className={`form-validator-theme-${theme}`}\r\n style={customStyles.form}\r\n noValidate\r\n >\r\n {childrenWithProps}\r\n {/* Render errors at the bottom of the form */}\r\n {errorElements.length > 0 && (\r\n <div className={styles['error-summary']}>\r\n {errorElements}\r\n </div>\r\n )}\r\n <button type=\"submit\" style={{ display: 'none' }}>Submit</button>\r\n </form>\r\n );\r\n};","import React from \"react\";\r\n\r\ninterface FormFieldProps extends React.InputHTMLAttributes<HTMLInputElement>{\r\n label?: string;\r\n errors?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const FormField: React.FC<FormFieldProps> = ({\r\n label,\r\n errors,\r\n touched,\r\n className ='',\r\n id,\r\n ...props\r\n}) => {\r\n const fieldId = id || props.name;\r\n\r\n return (\r\n <div className=\"form-validator-field-container\">\r\n {label && (\r\n <label htmlFor={fieldId} className=\"form-validator-label\">\r\n {label}\r\n </label>\r\n )}\r\n\r\n <input id={fieldId} className={`form-validator-input ${errors ? 'errors' : ''} ${touched && !errors ? 'success' : ''} ${className}`}\r\n aria-invalid={!!errors}\r\n aria-describedby={errors ? `${fieldId}-errors` : undefined}\r\n {...props}/>\r\n\r\n {errors && (\r\n <div \r\n id={`${fieldId}-errors`}\r\n className=\"form-validator-errors-message\"\r\n role=\"alert\"\r\n >\r\n {errors}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};","import React, { useEffect } from 'react';\r\nimport styles from '../styles/animations.module.css';\r\n\r\ninterface CheckboxOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface CheckboxGroupProps {\r\n name: string;\r\n options: CheckboxOption[];\r\n values?: string[];\r\n onChange?: (name: string, values: string[]) => void;\r\n onBlur?: (name: string) => void;\r\n className?: string;\r\n error?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\r\n name,\r\n options,\r\n values = [],\r\n onChange,\r\n onBlur,\r\n className = '',\r\n error,\r\n touched\r\n}) => {\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { value, checked } = e.target;\r\n let newValues: string[];\r\n \r\n if (checked) {\r\n newValues = [...values, value];\r\n } else {\r\n newValues = values.filter(v => v !== value);\r\n }\r\n \r\n onChange?.(name, newValues);\r\n };\r\n\r\n // Notify form of blur when any checkbox loses focus\r\n const handleBlur = () => {\r\n onBlur?.(name);\r\n };\r\n\r\n return (\r\n <div \r\n className={`${styles['checkbox-group']} ${className}`}\r\n data-touched={touched}\r\n data-error={error}\r\n >\r\n {options.map(option => (\r\n <label key={option.value} className={styles['checkbox-label']}>\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n value={option.value}\r\n checked={values.includes(option.value)}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n className={`${styles['checkbox-input']} ${error && touched ? styles['error'] : ''}`}\r\n />\r\n {option.label}\r\n </label>\r\n ))}\r\n {error && touched && (\r\n <div className={styles['form-validator-error-message']}>{error}</div>\r\n )}\r\n </div>\r\n );\r\n};","\r\nif (!Array.prototype.some){\r\n Array.prototype.some = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(callback.call(thisArg, this[i], i, this)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }; \r\n}\r\n\r\nif (!Array.prototype.every){\r\n Array.prototype.every = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(!callback.call(thisArg, this[i], i, this)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } as typeof Array.prototype.every; \r\n}\r\n\r\nif (!String.prototype.trim){\r\n String.prototype.trim = function(): string {\r\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n };\r\n}\r\n\r\nexport const throttle = <T extends (...args: any[]) => any>(\r\n func: T,\r\n limit: number\r\n): T => {\r\n let inThrottle: boolean;\r\n let lastResult: ReturnType<T>;\r\n\r\n return function(this: any, ...args: any[]) {\r\n if(!inThrottle) {\r\n inThrottle = true;\r\n lastResult = func.apply(this, args);\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n return lastResult;\r\n } as T;\r\n};\r\n"],"names":[],"mappings":"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","x_google_ignoreList":[2]}
package/dist/index.js CHANGED
@@ -178,30 +178,13 @@ var css_248z = "@keyframes animations-module_shake__qVr3b{0%,to{transform:transl
178
178
  var styles = {"form-validator-field":"animations-module_form-validator-field__pirKM","gentlePulse":"animations-module_gentlePulse__xvUHG","error":"animations-module_error__Vq-ZO","shake":"animations-module_shake__qVr3b","form-validator-error-message":"animations-module_form-validator-error-message__h1Ge-","slideIn":"animations-module_slideIn__lwqyK","form-validator-theme-dark":"animations-module_form-validator-theme-dark__ySqnh","form-validator-success":"animations-module_form-validator-success__JkYav","form-validator-field-container":"animations-module_form-validator-field-container__9P7zl","form-validator-label":"animations-module_form-validator-label__O7u2s","form-validator-input":"animations-module_form-validator-input__8Lspk animations-module_form-validator-field__pirKM","checkbox-group":"animations-module_checkbox-group__nmUwv","checkbox-label":"animations-module_checkbox-label__XD-M1","checkbox-input":"animations-module_checkbox-input__hRJLO","error-summary":"animations-module_error-summary__x5Eej"};
179
179
  styleInject(css_248z);
180
180
 
181
- var CheckboxGroup = function (_a) {
182
- var name = _a.name, options = _a.options, _b = _a.values, values = _b === void 0 ? [] : _b, onChange = _a.onChange, onBlur = _a.onBlur, _c = _a.className, className = _c === void 0 ? "" : _c, error = _a.error, touched = _a.touched;
183
- var handleChange = function (e) {
184
- var _a = e.target, value = _a.value, checked = _a.checked;
185
- var newValues = tslib.__spreadArray([], values, true);
186
- if (checked)
187
- newValues.push(value);
188
- else
189
- newValues = newValues.filter(function (v) { return v !== value; });
190
- onChange === null || onChange === void 0 ? void 0 : onChange(name, newValues);
191
- };
192
- return (React.createElement("div", { className: "".concat(styles["checkbox-group"], " ").concat(className) },
193
- options.map(function (option) { return (React.createElement("label", { key: option.value, className: styles["checkbox-label"] },
194
- React.createElement("input", { type: "checkbox", name: name, value: option.value, checked: values.includes(option.value), onChange: handleChange, onBlur: function () { return onBlur === null || onBlur === void 0 ? void 0 : onBlur(name); }, className: "".concat(styles["checkbox-input"], " ").concat(error && touched ? styles.error : "") }),
195
- option.label)); }),
196
- error && touched && (React.createElement("div", { className: styles["form-validator-error-message"] }, error))));
197
- };
198
-
199
181
  var FormValidator = function (_a) {
200
- var children = _a.children, validationRules = _a.validationRules, onSubmit = _a.onSubmit, _b = _a.theme, theme = _b === void 0 ? "light" : _b, _c = _a.customStyles, customStyles = _c === void 0 ? {} : _c, _d = _a.enableDebounce, enableDebounce = _d === void 0 ? true : _d, _e = _a.debounceDelay, debounceDelay = _e === void 0 ? 300 : _e;
182
+ var children = _a.children, validationRules = _a.validationRules, onSubmit = _a.onSubmit, _b = _a.theme, theme = _b === void 0 ? 'light' : _b, _c = _a.customStyles, customStyles = _c === void 0 ? {} : _c, _d = _a.enableDebounce, enableDebounce = _d === void 0 ? true : _d, _e = _a.debounceDelay, debounceDelay = _e === void 0 ? 300 : _e;
201
183
  var _f = React.useState({}), formValues = _f[0], setFormValues = _f[1];
202
184
  var _g = React.useState({}), errors = _g[0], setErrors = _g[1];
203
185
  var _h = React.useState({}), touched = _h[0], setTouched = _h[1];
204
- var getVisibleErrors = React.useCallback(function () {
186
+ // Get visible errors (only for touched fields)
187
+ React.useCallback(function () {
205
188
  var visibleErrors = {};
206
189
  Object.keys(errors).forEach(function (fieldName) {
207
190
  if (touched[fieldName] && errors[fieldName]) {
@@ -214,14 +197,17 @@ var FormValidator = function (_a) {
214
197
  var error = validateField(value, validationRules[name]);
215
198
  setErrors(function (prev) {
216
199
  var _a;
217
- return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error || "", _a)));
200
+ return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error || '', _a)));
218
201
  });
219
202
  }, debounceDelay);
220
203
  var handleChange = React.useCallback(function (e) {
221
204
  var _a = e.target, name = _a.name, value = _a.value, type = _a.type, checked = _a.checked;
222
205
  var fieldValue = value;
223
- if (type === "checkbox") {
224
- fieldValue = checked; // single checkbox only
206
+ if (type === 'checkbox') {
207
+ fieldValue = checked ? value : '';
208
+ }
209
+ else if (type === 'radio') {
210
+ fieldValue = value;
225
211
  }
226
212
  setFormValues(function (prev) {
227
213
  var _a;
@@ -234,15 +220,19 @@ var FormValidator = function (_a) {
234
220
  var error_1 = validateField(fieldValue, validationRules[name]);
235
221
  setErrors(function (prev) {
236
222
  var _a;
237
- return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error_1 || "", _a)));
223
+ return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error_1 || '', _a)));
238
224
  });
239
225
  }
240
226
  }, [enableDebounce, debouncedValidate, validationRules]);
241
227
  var handleBlur = React.useCallback(function (e) {
242
228
  var _a = e.target, name = _a.name, value = _a.value, type = _a.type, checked = _a.checked;
243
229
  var fieldValue = value;
244
- if (type === "checkbox")
245
- fieldValue = checked;
230
+ if (type === 'checkbox') {
231
+ fieldValue = checked ? value : '';
232
+ }
233
+ else if (type === 'radio') {
234
+ fieldValue = value;
235
+ }
246
236
  setTouched(function (prev) {
247
237
  var _a;
248
238
  return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = true, _a)));
@@ -250,79 +240,104 @@ var FormValidator = function (_a) {
250
240
  var error = validateField(fieldValue, validationRules[name]);
251
241
  setErrors(function (prev) {
252
242
  var _a;
253
- return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error || "", _a)));
243
+ return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error || '', _a)));
254
244
  });
255
245
  }, [validationRules]);
246
+ // Special handler for CheckboxGroup
247
+ var handleGroupChange = React.useCallback(function (name, values) {
248
+ setFormValues(function (prev) {
249
+ var _a;
250
+ return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = values, _a)));
251
+ });
252
+ var error = validateField(values, validationRules[name]);
253
+ setErrors(function (prev) {
254
+ var _a;
255
+ return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error || '', _a)));
256
+ });
257
+ }, [validationRules]);
258
+ var handleGroupBlur = React.useCallback(function (name) {
259
+ setTouched(function (prev) {
260
+ var _a;
261
+ return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = true, _a)));
262
+ });
263
+ var error = validateField(formValues[name], validationRules[name]);
264
+ setErrors(function (prev) {
265
+ var _a;
266
+ return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error || '', _a)));
267
+ });
268
+ }, [formValues, validationRules]);
256
269
  var handleSubmit = React.useCallback(function (e) {
257
270
  e.preventDefault();
258
271
  var formErrors = validateForm(formValues, validationRules);
259
272
  setErrors(formErrors);
260
273
  var allTouched = {};
261
- Object.keys(validationRules).forEach(function (fieldName) { return (allTouched[fieldName] = true); });
274
+ Object.keys(validationRules).forEach(function (fieldName) {
275
+ allTouched[fieldName] = true;
276
+ });
262
277
  setTouched(allTouched);
263
278
  if (Object.keys(formErrors).length === 0) {
264
279
  onSubmit(formValues);
265
280
  }
266
281
  }, [formValues, validationRules, onSubmit]);
282
+ // Process children and inject props
267
283
  var childrenWithProps = React.Children.map(children, function (child) {
268
- var _a;
269
- if (!React.isValidElement(child))
270
- return child;
271
- var element = child;
272
- if (!element.props.name)
273
- return child;
274
- var fieldName = element.props.name;
275
- var hasError = !!errors[fieldName];
276
- var isTouched = touched[fieldName];
277
- var isSuccess = isTouched && !hasError;
278
- // SPECIAL CASE → CheckboxGroup
279
- if (element.type === CheckboxGroup) {
280
- return React.cloneElement(element, {
281
- values: formValues[fieldName] || [],
282
- onChange: function (name, vals) {
283
- setFormValues(function (prev) {
284
- var _a;
285
- return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = vals, _a)));
286
- });
287
- var error = validateField(vals, validationRules[name]);
288
- setErrors(function (prev) {
289
- var _a;
290
- return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = error || "", _a)));
284
+ if (React.isValidElement(child)) {
285
+ var element = child;
286
+ var childName = element.props.name;
287
+ if (childName) {
288
+ // Check if this is a CheckboxGroup by looking at the component type
289
+ var isCheckboxGroup = element.type === 'CheckboxGroup' ||
290
+ (typeof element.type === 'function' && element.type.name === 'CheckboxGroup');
291
+ if (isCheckboxGroup) {
292
+ // For CheckboxGroup, pass group handlers
293
+ return React.cloneElement(element, {
294
+ values: formValues[childName] || [],
295
+ onChange: handleGroupChange,
296
+ onBlur: handleGroupBlur,
297
+ error: errors[childName],
298
+ touched: touched[childName],
299
+ 'data-touched': touched[childName],
300
+ 'data-error': !!errors[childName]
291
301
  });
292
- },
293
- onBlur: function (name) {
294
- return setTouched(function (prev) {
295
- var _a;
296
- return (tslib.__assign(tslib.__assign({}, prev), (_a = {}, _a[name] = true, _a)));
302
+ }
303
+ else {
304
+ // For regular inputs
305
+ var hasError = !!errors[childName];
306
+ var isTouched = touched[childName];
307
+ var isSuccess = isTouched && !hasError;
308
+ var className = 'form-validator-field';
309
+ if (hasError)
310
+ className += ' error';
311
+ if (isSuccess)
312
+ className += ' form-validator-success';
313
+ if (element.props.className)
314
+ className += " ".concat(element.props.className);
315
+ return React.cloneElement(element, {
316
+ onChange: handleChange,
317
+ onBlur: handleBlur,
318
+ value: formValues[childName] || '',
319
+ className: className,
320
+ style: customStyles[childName],
321
+ 'data-theme': theme,
322
+ 'data-touched': isTouched,
323
+ 'data-error': hasError
297
324
  });
298
- },
299
- error: errors[fieldName],
300
- touched: touched[fieldName],
301
- });
325
+ }
326
+ }
302
327
  }
303
- var className = styles["form-validator-field"];
304
- if (hasError)
305
- className += " ".concat(styles.error);
306
- if (isSuccess)
307
- className += " ".concat(styles["form-validator-success"]);
308
- if (element.props.className)
309
- className += " ".concat(element.props.className);
310
- return React.cloneElement(child, {
311
- onChange: handleChange,
312
- onBlur: handleBlur,
313
- value: (_a = formValues[fieldName]) !== null && _a !== void 0 ? _a : "",
314
- checked: typeof formValues[fieldName] === "boolean"
315
- ? formValues[fieldName]
316
- : undefined,
317
- className: className,
318
- style: customStyles[fieldName],
319
- "data-theme": theme,
320
- });
328
+ return child;
321
329
  });
322
- var visibleErrors = getVisibleErrors();
330
+ // Only show error messages for touched fields, and place them near the field
331
+ var errorElements = Object.keys(touched).map(function (fieldName) {
332
+ if (touched[fieldName] && errors[fieldName]) {
333
+ return (React.createElement("div", { key: fieldName, className: styles['form-validator-error-message'], "data-field": fieldName }, errors[fieldName]));
334
+ }
335
+ return null;
336
+ }).filter(Boolean);
323
337
  return (React.createElement("form", { onSubmit: handleSubmit, className: "form-validator-theme-".concat(theme), style: customStyles.form, noValidate: true },
324
338
  childrenWithProps,
325
- Object.keys(visibleErrors).length > 0 && (React.createElement("div", { className: styles["error-summary"] }, Object.values(visibleErrors).map(function (err, i) { return (React.createElement("div", { key: i, className: styles["form-validator-error-message"] }, err)); })))));
339
+ errorElements.length > 0 && (React.createElement("div", { className: styles['error-summary'] }, errorElements)),
340
+ React.createElement("button", { type: "submit", style: { display: 'none' } }, "Submit")));
326
341
  };
327
342
 
328
343
  var FormField = function (_a) {
@@ -334,6 +349,30 @@ var FormField = function (_a) {
334
349
  errors && (React.createElement("div", { id: "".concat(fieldId, "-errors"), className: "form-validator-errors-message", role: "alert" }, errors))));
335
350
  };
336
351
 
352
+ var CheckboxGroup = function (_a) {
353
+ var name = _a.name, options = _a.options, _b = _a.values, values = _b === void 0 ? [] : _b, onChange = _a.onChange, onBlur = _a.onBlur, _c = _a.className, className = _c === void 0 ? '' : _c, error = _a.error, touched = _a.touched;
354
+ var handleChange = function (e) {
355
+ var _a = e.target, value = _a.value, checked = _a.checked;
356
+ var newValues;
357
+ if (checked) {
358
+ newValues = tslib.__spreadArray(tslib.__spreadArray([], values, true), [value], false);
359
+ }
360
+ else {
361
+ newValues = values.filter(function (v) { return v !== value; });
362
+ }
363
+ onChange === null || onChange === void 0 ? void 0 : onChange(name, newValues);
364
+ };
365
+ // Notify form of blur when any checkbox loses focus
366
+ var handleBlur = function () {
367
+ onBlur === null || onBlur === void 0 ? void 0 : onBlur(name);
368
+ };
369
+ return (React.createElement("div", { className: "".concat(styles['checkbox-group'], " ").concat(className), "data-touched": touched, "data-error": error },
370
+ options.map(function (option) { return (React.createElement("label", { key: option.value, className: styles['checkbox-label'] },
371
+ React.createElement("input", { type: "checkbox", name: name, value: option.value, checked: values.includes(option.value), onChange: handleChange, onBlur: handleBlur, className: "".concat(styles['checkbox-input'], " ").concat(error && touched ? styles['error'] : '') }),
372
+ option.label)); }),
373
+ error && touched && (React.createElement("div", { className: styles['form-validator-error-message'] }, error))));
374
+ };
375
+
337
376
  if (!Array.prototype.some) {
338
377
  Array.prototype.some = function (callback, thisArg) {
339
378
  for (var i = 0; i < this.length; i++) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/utils/validators.ts","../src/hooks/useDebounce.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/components/CheckboxGroup.tsx","../src/components/FormValidator.tsx","../src/components/FormField.tsx","../src/utils/polyfills.ts"],"sourcesContent":["import { ValidationRule } from '../types';\r\n\r\nexport type ValidatorFn = (value: any) => string | undefined;\r\n\r\nexport const validateField = (\r\n value: any, \r\n rules?: ValidationRule,\r\n allValues?: Record<string, any>\r\n): string | undefined => {\r\n if (!rules) return undefined;\r\n\r\n if (rules.required) {\r\n const message = rules.messages?.required || 'This field is required';\r\n \r\n if (typeof value === 'boolean') {\r\n if (!value) return message; \r\n } else if (Array.isArray(value)) {\r\n if (value.length === 0) return message; \r\n } else if (value === null || value === undefined || value.toString().trim() === '') {\r\n return message;\r\n }\r\n }\r\n\r\n if (!value && !rules.required) return undefined;\r\n\r\n if (typeof value === 'string') {\r\n \r\n if (rules.minLength && value.length < rules.minLength) {\r\n return rules.messages?.minLength || `Must be at least ${rules.minLength} characters`;\r\n }\r\n\r\n if (rules.maxLength && value.length > rules.maxLength) {\r\n return rules.messages?.maxLength || `Must be no more than ${rules.maxLength} characters`;\r\n }\r\n\r\n if (rules.pattern && !rules.pattern.test(value)) {\r\n return rules.messages?.pattern || 'Invalid format';\r\n }\r\n }\r\n\r\n if (rules.email && value) {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(value)) {\r\n return rules.messages?.email || 'Please enter a valid email address';\r\n }\r\n }\r\n\r\n if (rules.complexity && value) {\r\n const message = rules.messages?.complexity || 'Password must contain at least 1 uppercase, 1 lowercase, 1 number, and 1 special character';\r\n \r\n const hasUpperCase = /[A-Z]/.test(value);\r\n const hasLowerCase = /[a-z]/.test(value);\r\n const hasNumbers = /\\d/.test(value);\r\n const hasSpecial = /[!@#$%^&*(),.?\":{}|<>]/.test(value);\r\n \r\n if (!hasUpperCase || !hasLowerCase || !hasNumbers || !hasSpecial) {\r\n return message;\r\n }\r\n }\r\n\r\n if (rules.number !== undefined) {\r\n const num = Number(value);\r\n \r\n if (isNaN(num)) {\r\n return rules.messages?.number || 'Please enter a valid number';\r\n }\r\n \r\n if (rules.min !== undefined && num < rules.min) {\r\n return rules.messages?.min || `Must be at least ${rules.min}`;\r\n }\r\n \r\n if (rules.max !== undefined && num > rules.max) {\r\n return rules.messages?.max || `Must be no more than ${rules.max}`;\r\n }\r\n }\r\n\r\n if (rules.url && value) {\r\n try {\r\n new URL(value);\r\n } catch {\r\n return rules.messages?.url || 'Please enter a valid URL (include http:// or https://)';\r\n }\r\n }\r\n\r\n if (rules.tel && value) {\r\n const phoneRegex = /^[\\+]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[0-9]{1,4}[-\\s\\.]?[0-9]{1,4}$/;\r\n if (!phoneRegex.test(value)) {\r\n return rules.messages?.tel || 'Please enter a valid phone number';\r\n }\r\n }\r\n\r\n if (rules.date && value) {\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) {\r\n return rules.messages?.date || 'Please enter a valid date';\r\n }\r\n \r\n if (rules.minDate) {\r\n const minDate = new Date(rules.minDate);\r\n if (date < minDate) {\r\n return rules.messages?.minDate || `Date must be after ${minDate.toLocaleDateString()}`;\r\n }\r\n }\r\n \r\n if (rules.maxDate) {\r\n const maxDate = new Date(rules.maxDate);\r\n if (date > maxDate) {\r\n return rules.messages?.maxDate || `Date must be before ${maxDate.toLocaleDateString()}`;\r\n }\r\n }\r\n }\r\n\r\n if (rules.checkboxGroup && Array.isArray(value)) {\r\n if (rules.required && value.length === 0) {\r\n return rules.messages?.required || 'Please select at least one option';\r\n }\r\n \r\n if (rules.minSelected !== undefined && value.length < rules.minSelected) {\r\n return rules.messages?.minSelected || `Please select at least ${rules.minSelected} options`;\r\n }\r\n \r\n if (rules.maxSelected !== undefined && value.length > rules.maxSelected) {\r\n return rules.messages?.maxSelected || `Please select no more than ${rules.maxSelected} options`;\r\n }\r\n }\r\n\r\n if (rules.radioGroup && rules.required) {\r\n if (!value || value === '') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.select && rules.required) {\r\n if (!value || value === '' || value === 'default' || value === 'placeholder') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.custom) {\r\n return rules.custom(value, allValues);\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const validateForm = (\r\n values: Record<string, any>,\r\n rules: Record<string, ValidationRule>\r\n): Record<string, string> => {\r\n const errors: Record<string, string> = {};\r\n \r\n Object.keys(rules).forEach(fieldName => {\r\n const error = validateField(values[fieldName], rules[fieldName], values);\r\n if (error) {\r\n errors[fieldName] = error;\r\n }\r\n });\r\n \r\n return errors;\r\n};","import { useCallback, useRef } from \"react\";\r\n\r\nexport function useDebounce<T extends (...args: any[]) => void>(\r\n fn: T,\r\n delay: number\r\n): T {\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\r\n\r\n return useCallback(\r\n ((...args: any[]) => {\r\n if(timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n }) as T,\r\n [fn, delay]\r\n );\r\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from \"react\";\r\nimport styles from \"../styles/animations.module.css\";\r\n\r\ninterface CheckboxOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface CheckboxGroupProps {\r\n name: string;\r\n options: CheckboxOption[];\r\n values?: string[];\r\n onChange?: (name: string, values: string[]) => void;\r\n onBlur?: (name: string) => void;\r\n className?: string;\r\n error?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\r\n name,\r\n options,\r\n values = [],\r\n onChange,\r\n onBlur,\r\n className = \"\",\r\n error,\r\n touched,\r\n}) => {\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { value, checked } = e.target;\r\n\r\n let newValues = [...values];\r\n if (checked) newValues.push(value);\r\n else newValues = newValues.filter((v) => v !== value);\r\n\r\n onChange?.(name, newValues);\r\n };\r\n\r\n return (\r\n <div className={`${styles[\"checkbox-group\"]} ${className}`}>\r\n {options.map((option) => (\r\n <label key={option.value} className={styles[\"checkbox-label\"]}>\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n value={option.value}\r\n checked={values.includes(option.value)}\r\n onChange={handleChange}\r\n onBlur={() => onBlur?.(name)}\r\n className={`${styles[\"checkbox-input\"]} ${\r\n error && touched ? styles.error : \"\"\r\n }`}\r\n />\r\n {option.label}\r\n </label>\r\n ))}\r\n\r\n {error && touched && (\r\n <div className={styles[\"form-validator-error-message\"]}>\r\n {error}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useCallback } from \"react\";\r\nimport { FormValidatorProps, FormState, ErrorState } from \"../types\";\r\nimport { validateField, validateForm } from \"../utils/validators\";\r\nimport { useDebounce } from \"../hooks/useDebounce\";\r\nimport { CheckboxGroup } from \"./CheckboxGroup\";\r\nimport styles from \"../styles/animations.module.css\";\r\n\r\nexport const FormValidator: React.FC<FormValidatorProps> = ({\r\n children,\r\n validationRules,\r\n onSubmit,\r\n theme = \"light\",\r\n customStyles = {},\r\n enableDebounce = true,\r\n debounceDelay = 300,\r\n}) => {\r\n const [formValues, setFormValues] = useState<FormState>({});\r\n const [errors, setErrors] = useState<ErrorState>({});\r\n const [touched, setTouched] = useState<Record<string, boolean>>({});\r\n\r\n const getVisibleErrors = useCallback(() => {\r\n const visibleErrors: ErrorState = {};\r\n Object.keys(errors).forEach((fieldName) => {\r\n if (touched[fieldName] && errors[fieldName]) {\r\n visibleErrors[fieldName] = errors[fieldName];\r\n }\r\n });\r\n return visibleErrors;\r\n }, [errors, touched]);\r\n\r\n const debouncedValidate = useDebounce((name: string, value: any) => {\r\n const error = validateField(value, validationRules[name]);\r\n setErrors((prev) => ({ ...prev, [name]: error || \"\" }));\r\n }, debounceDelay);\r\n\r\n const handleChange = useCallback(\r\n (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>) => {\r\n const { name, value, type, checked } = e.target as HTMLInputElement;\r\n\r\n let fieldValue: any = value;\r\n\r\n if (type === \"checkbox\") {\r\n fieldValue = checked; // single checkbox only\r\n }\r\n\r\n setFormValues((prev) => ({ ...prev, [name]: fieldValue }));\r\n\r\n if (enableDebounce) {\r\n debouncedValidate(name, fieldValue);\r\n } else {\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors((prev) => ({ ...prev, [name]: error || \"\" }));\r\n }\r\n },\r\n [enableDebounce, debouncedValidate, validationRules]\r\n );\r\n\r\n const handleBlur = useCallback(\r\n (e: React.FocusEvent<HTMLInputElement | HTMLSelectElement>) => {\r\n const { name, value, type, checked } = e.target as HTMLInputElement;\r\n\r\n let fieldValue: any = value;\r\n if (type === \"checkbox\") fieldValue = checked;\r\n\r\n setTouched((prev) => ({ ...prev, [name]: true }));\r\n\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors((prev) => ({ ...prev, [name]: error || \"\" }));\r\n },\r\n [validationRules]\r\n );\r\n\r\n const handleSubmit = useCallback(\r\n (e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n const formErrors = validateForm(formValues, validationRules);\r\n setErrors(formErrors);\r\n\r\n const allTouched: Record<string, boolean> = {};\r\n Object.keys(validationRules).forEach(\r\n (fieldName) => (allTouched[fieldName] = true)\r\n );\r\n setTouched(allTouched);\r\n\r\n if (Object.keys(formErrors).length === 0) {\r\n onSubmit(formValues);\r\n }\r\n },\r\n [formValues, validationRules, onSubmit]\r\n );\r\n\r\n const childrenWithProps = React.Children.map(children, (child) => {\r\n if (!React.isValidElement(child)) return child;\r\n\r\n const element: any = child;\r\n if (!element.props.name) return child;\r\n\r\n const fieldName = element.props.name;\r\n const hasError = !!errors[fieldName];\r\n const isTouched = touched[fieldName];\r\n const isSuccess = isTouched && !hasError;\r\n\r\n // ⭐ SPECIAL CASE → CheckboxGroup\r\n if (element.type === CheckboxGroup) {\r\n return React.cloneElement(element, {\r\n values: formValues[fieldName] || [],\r\n onChange: (name: string, vals: string[]) => {\r\n setFormValues((prev) => ({ ...prev, [name]: vals }));\r\n\r\n const error = validateField(vals, validationRules[name]);\r\n setErrors((prev) => ({ ...prev, [name]: error || \"\" }));\r\n },\r\n onBlur: (name: string) =>\r\n setTouched((prev) => ({ ...prev, [name]: true })),\r\n error: errors[fieldName],\r\n touched: touched[fieldName],\r\n });\r\n }\r\n\r\n let className = styles[\"form-validator-field\"];\r\n if (hasError) className += ` ${styles.error}`;\r\n if (isSuccess) className += ` ${styles[\"form-validator-success\"]}`;\r\n if (element.props.className) className += ` ${element.props.className}`;\r\n\r\n return React.cloneElement(child, {\r\n onChange: handleChange,\r\n onBlur: handleBlur,\r\n value: formValues[fieldName] ?? \"\",\r\n checked:\r\n typeof formValues[fieldName] === \"boolean\"\r\n ? formValues[fieldName]\r\n : undefined,\r\n className,\r\n style: customStyles[fieldName],\r\n \"data-theme\": theme,\r\n });\r\n });\r\n\r\n const visibleErrors = getVisibleErrors();\r\n\r\n return (\r\n <form\r\n onSubmit={handleSubmit}\r\n className={`form-validator-theme-${theme}`}\r\n style={customStyles.form}\r\n noValidate\r\n >\r\n {childrenWithProps}\r\n\r\n {Object.keys(visibleErrors).length > 0 && (\r\n <div className={styles[\"error-summary\"]}>\r\n {Object.values(visibleErrors).map((err, i) => (\r\n <div key={i} className={styles[\"form-validator-error-message\"]}>\r\n {err}\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </form>\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\ninterface FormFieldProps extends React.InputHTMLAttributes<HTMLInputElement>{\r\n label?: string;\r\n errors?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const FormField: React.FC<FormFieldProps> = ({\r\n label,\r\n errors,\r\n touched,\r\n className ='',\r\n id,\r\n ...props\r\n}) => {\r\n const fieldId = id || props.name;\r\n\r\n return (\r\n <div className=\"form-validator-field-container\">\r\n {label && (\r\n <label htmlFor={fieldId} className=\"form-validator-label\">\r\n {label}\r\n </label>\r\n )}\r\n\r\n <input id={fieldId} className={`form-validator-input ${errors ? 'errors' : ''} ${touched && !errors ? 'success' : ''} ${className}`}\r\n aria-invalid={!!errors}\r\n aria-describedby={errors ? `${fieldId}-errors` : undefined}\r\n {...props}/>\r\n\r\n {errors && (\r\n <div \r\n id={`${fieldId}-errors`}\r\n className=\"form-validator-errors-message\"\r\n role=\"alert\"\r\n >\r\n {errors}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};","\r\nif (!Array.prototype.some){\r\n Array.prototype.some = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(callback.call(thisArg, this[i], i, this)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }; \r\n}\r\n\r\nif (!Array.prototype.every){\r\n Array.prototype.every = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(!callback.call(thisArg, this[i], i, this)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } as typeof Array.prototype.every; \r\n}\r\n\r\nif (!String.prototype.trim){\r\n String.prototype.trim = function(): string {\r\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n };\r\n}\r\n\r\nexport const throttle = <T extends (...args: any[]) => any>(\r\n func: T,\r\n limit: number\r\n): T => {\r\n let inThrottle: boolean;\r\n let lastResult: ReturnType<T>;\r\n\r\n return function(this: any, ...args: any[]) {\r\n if(!inThrottle) {\r\n inThrottle = true;\r\n lastResult = func.apply(this, args);\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n return lastResult;\r\n } as T;\r\n};\r\n"],"names":["useRef","useCallback","__spreadArray","useState","__assign","__rest"],"mappings":"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","x_google_ignoreList":[2]}
1
+ {"version":3,"file":"index.js","sources":["../src/utils/validators.ts","../src/hooks/useDebounce.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/components/FormValidator.tsx","../src/components/FormField.tsx","../src/components/CheckboxGroup.tsx","../src/utils/polyfills.ts"],"sourcesContent":["import { ValidationRule } from '../types';\r\n\r\nexport type ValidatorFn = (value: any) => string | undefined;\r\n\r\nexport const validateField = (\r\n value: any, \r\n rules?: ValidationRule,\r\n allValues?: Record<string, any>\r\n): string | undefined => {\r\n if (!rules) return undefined;\r\n\r\n if (rules.required) {\r\n const message = rules.messages?.required || 'This field is required';\r\n \r\n if (typeof value === 'boolean') {\r\n if (!value) return message; \r\n } else if (Array.isArray(value)) {\r\n if (value.length === 0) return message; \r\n } else if (value === null || value === undefined || value.toString().trim() === '') {\r\n return message;\r\n }\r\n }\r\n\r\n if (!value && !rules.required) return undefined;\r\n\r\n if (typeof value === 'string') {\r\n \r\n if (rules.minLength && value.length < rules.minLength) {\r\n return rules.messages?.minLength || `Must be at least ${rules.minLength} characters`;\r\n }\r\n\r\n if (rules.maxLength && value.length > rules.maxLength) {\r\n return rules.messages?.maxLength || `Must be no more than ${rules.maxLength} characters`;\r\n }\r\n\r\n if (rules.pattern && !rules.pattern.test(value)) {\r\n return rules.messages?.pattern || 'Invalid format';\r\n }\r\n }\r\n\r\n if (rules.email && value) {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(value)) {\r\n return rules.messages?.email || 'Please enter a valid email address';\r\n }\r\n }\r\n\r\n if (rules.complexity && value) {\r\n const message = rules.messages?.complexity || 'Password must contain at least 1 uppercase, 1 lowercase, 1 number, and 1 special character';\r\n \r\n const hasUpperCase = /[A-Z]/.test(value);\r\n const hasLowerCase = /[a-z]/.test(value);\r\n const hasNumbers = /\\d/.test(value);\r\n const hasSpecial = /[!@#$%^&*(),.?\":{}|<>]/.test(value);\r\n \r\n if (!hasUpperCase || !hasLowerCase || !hasNumbers || !hasSpecial) {\r\n return message;\r\n }\r\n }\r\n\r\n if (rules.number !== undefined) {\r\n const num = Number(value);\r\n \r\n if (isNaN(num)) {\r\n return rules.messages?.number || 'Please enter a valid number';\r\n }\r\n \r\n if (rules.min !== undefined && num < rules.min) {\r\n return rules.messages?.min || `Must be at least ${rules.min}`;\r\n }\r\n \r\n if (rules.max !== undefined && num > rules.max) {\r\n return rules.messages?.max || `Must be no more than ${rules.max}`;\r\n }\r\n }\r\n\r\n if (rules.url && value) {\r\n try {\r\n new URL(value);\r\n } catch {\r\n return rules.messages?.url || 'Please enter a valid URL (include http:// or https://)';\r\n }\r\n }\r\n\r\n if (rules.tel && value) {\r\n const phoneRegex = /^[\\+]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[(]?[0-9]{1,4}[)]?[-\\s\\.]?[0-9]{1,4}[-\\s\\.]?[0-9]{1,4}$/;\r\n if (!phoneRegex.test(value)) {\r\n return rules.messages?.tel || 'Please enter a valid phone number';\r\n }\r\n }\r\n\r\n if (rules.date && value) {\r\n const date = new Date(value);\r\n if (isNaN(date.getTime())) {\r\n return rules.messages?.date || 'Please enter a valid date';\r\n }\r\n \r\n if (rules.minDate) {\r\n const minDate = new Date(rules.minDate);\r\n if (date < minDate) {\r\n return rules.messages?.minDate || `Date must be after ${minDate.toLocaleDateString()}`;\r\n }\r\n }\r\n \r\n if (rules.maxDate) {\r\n const maxDate = new Date(rules.maxDate);\r\n if (date > maxDate) {\r\n return rules.messages?.maxDate || `Date must be before ${maxDate.toLocaleDateString()}`;\r\n }\r\n }\r\n }\r\n\r\n if (rules.checkboxGroup && Array.isArray(value)) {\r\n if (rules.required && value.length === 0) {\r\n return rules.messages?.required || 'Please select at least one option';\r\n }\r\n \r\n if (rules.minSelected !== undefined && value.length < rules.minSelected) {\r\n return rules.messages?.minSelected || `Please select at least ${rules.minSelected} options`;\r\n }\r\n \r\n if (rules.maxSelected !== undefined && value.length > rules.maxSelected) {\r\n return rules.messages?.maxSelected || `Please select no more than ${rules.maxSelected} options`;\r\n }\r\n }\r\n\r\n if (rules.radioGroup && rules.required) {\r\n if (!value || value === '') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.select && rules.required) {\r\n if (!value || value === '' || value === 'default' || value === 'placeholder') {\r\n return rules.messages?.required || 'Please select an option';\r\n }\r\n }\r\n\r\n if (rules.custom) {\r\n return rules.custom(value, allValues);\r\n }\r\n\r\n return undefined;\r\n};\r\n\r\nexport const validateForm = (\r\n values: Record<string, any>,\r\n rules: Record<string, ValidationRule>\r\n): Record<string, string> => {\r\n const errors: Record<string, string> = {};\r\n \r\n Object.keys(rules).forEach(fieldName => {\r\n const error = validateField(values[fieldName], rules[fieldName], values);\r\n if (error) {\r\n errors[fieldName] = error;\r\n }\r\n });\r\n \r\n return errors;\r\n};","import { useCallback, useRef } from \"react\";\r\n\r\nexport function useDebounce<T extends (...args: any[]) => void>(\r\n fn: T,\r\n delay: number\r\n): T {\r\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | undefined>(undefined);\r\n\r\n return useCallback(\r\n ((...args: any[]) => {\r\n if(timeoutRef.current) {\r\n clearTimeout(timeoutRef.current);\r\n }\r\n\r\n timeoutRef.current = setTimeout(() => {\r\n fn(...args);\r\n }, delay);\r\n }) as T,\r\n [fn, delay]\r\n );\r\n}","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useState, useCallback, ReactElement } from \"react\";\r\nimport { FormValidatorProps, FormState, ErrorState } from \"../types\";\r\nimport { validateField, validateForm } from \"../utils/validators\";\r\nimport { useDebounce } from \"../hooks/useDebounce\";\r\nimport styles from '../styles/animations.module.css';\r\n\r\nexport const FormValidator: React.FC<FormValidatorProps> = ({\r\n children,\r\n validationRules,\r\n onSubmit,\r\n theme = 'light',\r\n customStyles = {},\r\n enableDebounce = true,\r\n debounceDelay = 300\r\n}) => {\r\n const [formValues, setFormValues] = useState<FormState>({});\r\n const [errors, setErrors] = useState<ErrorState>({});\r\n const [touched, setTouched] = useState<Record<string, boolean>>({});\r\n\r\n // Get visible errors (only for touched fields)\r\n const getVisibleErrors = useCallback(() => {\r\n const visibleErrors: ErrorState = {};\r\n Object.keys(errors).forEach(fieldName => {\r\n if (touched[fieldName] && errors[fieldName]) {\r\n visibleErrors[fieldName] = errors[fieldName];\r\n }\r\n });\r\n return visibleErrors;\r\n }, [errors, touched]);\r\n\r\n const debouncedValidate = useDebounce((name: string, value: any) => {\r\n const error = validateField(value, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, debounceDelay);\r\n\r\n const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { name, value, type, checked } = e.target;\r\n \r\n let fieldValue = value;\r\n if (type === 'checkbox') {\r\n fieldValue = checked ? value : '';\r\n } else if (type === 'radio') {\r\n fieldValue = value;\r\n }\r\n \r\n setFormValues(prev => ({ ...prev, [name]: fieldValue }));\r\n\r\n if (enableDebounce) {\r\n debouncedValidate(name, fieldValue);\r\n } else {\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }\r\n }, [enableDebounce, debouncedValidate, validationRules]);\r\n\r\n const handleBlur = useCallback((e: React.FocusEvent<HTMLInputElement>) => {\r\n const { name, value, type, checked } = e.target;\r\n \r\n let fieldValue = value;\r\n if (type === 'checkbox') {\r\n fieldValue = checked ? value : '';\r\n } else if (type === 'radio') {\r\n fieldValue = value;\r\n }\r\n \r\n setTouched(prev => ({ ...prev, [name]: true }));\r\n\r\n const error = validateField(fieldValue, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, [validationRules]);\r\n\r\n // Special handler for CheckboxGroup\r\n const handleGroupChange = useCallback((name: string, values: string[]) => {\r\n setFormValues(prev => ({ ...prev, [name]: values }));\r\n \r\n const error = validateField(values, validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, [validationRules]);\r\n\r\n const handleGroupBlur = useCallback((name: string) => {\r\n setTouched(prev => ({ ...prev, [name]: true }));\r\n \r\n const error = validateField(formValues[name], validationRules[name]);\r\n setErrors(prev => ({ ...prev, [name]: error || '' }));\r\n }, [formValues, validationRules]);\r\n\r\n const handleSubmit = useCallback((e: React.FormEvent) => {\r\n e.preventDefault();\r\n\r\n const formErrors = validateForm(formValues, validationRules);\r\n setErrors(formErrors);\r\n \r\n const allTouched: Record<string, boolean> = {};\r\n Object.keys(validationRules).forEach(fieldName => {\r\n allTouched[fieldName] = true;\r\n });\r\n setTouched(allTouched);\r\n\r\n if (Object.keys(formErrors).length === 0) {\r\n onSubmit(formValues);\r\n }\r\n }, [formValues, validationRules, onSubmit]);\r\n\r\n // Process children and inject props\r\n const childrenWithProps = React.Children.map(children, child => {\r\n if (React.isValidElement(child)) {\r\n const element = child as React.ReactElement<any>;\r\n const childName = element.props.name;\r\n\r\n if (childName) {\r\n // Check if this is a CheckboxGroup by looking at the component type\r\n const isCheckboxGroup = element.type === 'CheckboxGroup' || \r\n (typeof element.type === 'function' && element.type.name === 'CheckboxGroup');\r\n\r\n if (isCheckboxGroup) {\r\n // For CheckboxGroup, pass group handlers\r\n return React.cloneElement(element, {\r\n values: formValues[childName] || [],\r\n onChange: handleGroupChange,\r\n onBlur: handleGroupBlur,\r\n error: errors[childName],\r\n touched: touched[childName],\r\n 'data-touched': touched[childName],\r\n 'data-error': !!errors[childName]\r\n });\r\n } else {\r\n // For regular inputs\r\n const hasError = !!errors[childName];\r\n const isTouched = touched[childName];\r\n const isSuccess = isTouched && !hasError;\r\n \r\n let className = 'form-validator-field';\r\n if (hasError) className += ' error';\r\n if (isSuccess) className += ' form-validator-success';\r\n if (element.props.className) className += ` ${element.props.className}`;\r\n\r\n return React.cloneElement(element, {\r\n onChange: handleChange,\r\n onBlur: handleBlur,\r\n value: formValues[childName] || '',\r\n className,\r\n style: customStyles[childName],\r\n 'data-theme': theme,\r\n 'data-touched': isTouched,\r\n 'data-error': hasError\r\n });\r\n }\r\n }\r\n }\r\n return child;\r\n });\r\n\r\n // Only show error messages for touched fields, and place them near the field\r\n const errorElements = Object.keys(touched).map(fieldName => {\r\n if (touched[fieldName] && errors[fieldName]) {\r\n return (\r\n <div \r\n key={fieldName} \r\n className={styles['form-validator-error-message']}\r\n data-field={fieldName}\r\n >\r\n {errors[fieldName]}\r\n </div>\r\n );\r\n }\r\n return null;\r\n }).filter(Boolean);\r\n\r\n return (\r\n <form \r\n onSubmit={handleSubmit}\r\n className={`form-validator-theme-${theme}`}\r\n style={customStyles.form}\r\n noValidate\r\n >\r\n {childrenWithProps}\r\n {/* Render errors at the bottom of the form */}\r\n {errorElements.length > 0 && (\r\n <div className={styles['error-summary']}>\r\n {errorElements}\r\n </div>\r\n )}\r\n <button type=\"submit\" style={{ display: 'none' }}>Submit</button>\r\n </form>\r\n );\r\n};","import React from \"react\";\r\n\r\ninterface FormFieldProps extends React.InputHTMLAttributes<HTMLInputElement>{\r\n label?: string;\r\n errors?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const FormField: React.FC<FormFieldProps> = ({\r\n label,\r\n errors,\r\n touched,\r\n className ='',\r\n id,\r\n ...props\r\n}) => {\r\n const fieldId = id || props.name;\r\n\r\n return (\r\n <div className=\"form-validator-field-container\">\r\n {label && (\r\n <label htmlFor={fieldId} className=\"form-validator-label\">\r\n {label}\r\n </label>\r\n )}\r\n\r\n <input id={fieldId} className={`form-validator-input ${errors ? 'errors' : ''} ${touched && !errors ? 'success' : ''} ${className}`}\r\n aria-invalid={!!errors}\r\n aria-describedby={errors ? `${fieldId}-errors` : undefined}\r\n {...props}/>\r\n\r\n {errors && (\r\n <div \r\n id={`${fieldId}-errors`}\r\n className=\"form-validator-errors-message\"\r\n role=\"alert\"\r\n >\r\n {errors}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};","import React, { useEffect } from 'react';\r\nimport styles from '../styles/animations.module.css';\r\n\r\ninterface CheckboxOption {\r\n value: string;\r\n label: string;\r\n}\r\n\r\ninterface CheckboxGroupProps {\r\n name: string;\r\n options: CheckboxOption[];\r\n values?: string[];\r\n onChange?: (name: string, values: string[]) => void;\r\n onBlur?: (name: string) => void;\r\n className?: string;\r\n error?: string;\r\n touched?: boolean;\r\n}\r\n\r\nexport const CheckboxGroup: React.FC<CheckboxGroupProps> = ({\r\n name,\r\n options,\r\n values = [],\r\n onChange,\r\n onBlur,\r\n className = '',\r\n error,\r\n touched\r\n}) => {\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n const { value, checked } = e.target;\r\n let newValues: string[];\r\n \r\n if (checked) {\r\n newValues = [...values, value];\r\n } else {\r\n newValues = values.filter(v => v !== value);\r\n }\r\n \r\n onChange?.(name, newValues);\r\n };\r\n\r\n // Notify form of blur when any checkbox loses focus\r\n const handleBlur = () => {\r\n onBlur?.(name);\r\n };\r\n\r\n return (\r\n <div \r\n className={`${styles['checkbox-group']} ${className}`}\r\n data-touched={touched}\r\n data-error={error}\r\n >\r\n {options.map(option => (\r\n <label key={option.value} className={styles['checkbox-label']}>\r\n <input\r\n type=\"checkbox\"\r\n name={name}\r\n value={option.value}\r\n checked={values.includes(option.value)}\r\n onChange={handleChange}\r\n onBlur={handleBlur}\r\n className={`${styles['checkbox-input']} ${error && touched ? styles['error'] : ''}`}\r\n />\r\n {option.label}\r\n </label>\r\n ))}\r\n {error && touched && (\r\n <div className={styles['form-validator-error-message']}>{error}</div>\r\n )}\r\n </div>\r\n );\r\n};","\r\nif (!Array.prototype.some){\r\n Array.prototype.some = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(callback.call(thisArg, this[i], i, this)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }; \r\n}\r\n\r\nif (!Array.prototype.every){\r\n Array.prototype.every = function<T>(\r\n this: T[],\r\n callback: (value: T, index: number, array: T[]) => boolean, thisArg?: any\r\n ): boolean {\r\n for(let i=0; i< this.length; i++){\r\n if(!callback.call(thisArg, this[i], i, this)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } as typeof Array.prototype.every; \r\n}\r\n\r\nif (!String.prototype.trim){\r\n String.prototype.trim = function(): string {\r\n return this.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\r\n };\r\n}\r\n\r\nexport const throttle = <T extends (...args: any[]) => any>(\r\n func: T,\r\n limit: number\r\n): T => {\r\n let inThrottle: boolean;\r\n let lastResult: ReturnType<T>;\r\n\r\n return function(this: any, ...args: any[]) {\r\n if(!inThrottle) {\r\n inThrottle = true;\r\n lastResult = func.apply(this, args);\r\n setTimeout(() => inThrottle = false, limit);\r\n }\r\n return lastResult;\r\n } as T;\r\n};\r\n"],"names":["useRef","useCallback","useState","__assign","__rest","__spreadArray"],"mappings":"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","x_google_ignoreList":[2]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "form-validator-widget",
3
- "version": "2.1.5",
3
+ "version": "2.1.6",
4
4
  "description": "Reusable React form validation widget with animations, debounce validation, checkbox groups, and TypeScript support.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",