@helsenorge/designsystem-react 1.0.0-beta80 → 1.0.0-beta81

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/{Button-7200b617.js → Button-e2087687.js} +2 -2
  2. package/Button-e2087687.js.map +1 -0
  3. package/Loader-3767cb6e.js +2 -0
  4. package/Loader-3767cb6e.js.map +1 -0
  5. package/Modal-459c67d7.js +2 -0
  6. package/Modal-459c67d7.js.map +1 -0
  7. package/components/Avatar/index.js +1 -1
  8. package/components/Button/index.js +1 -1
  9. package/components/ButtonWithModal/ButtonWithModal.d.ts +1 -1
  10. package/components/ButtonWithModal/ButtonWithModal.d.ts.map +1 -1
  11. package/components/ButtonWithModal/index.js +1 -1
  12. package/components/Loader/index.js +1 -1
  13. package/components/Modal/index.js +1 -1
  14. package/components/Modal/styles.module.scss +6 -6
  15. package/components/Tabs/componentdata.json +3 -0
  16. package/package.json +1 -2
  17. package/scss/_palette.scss +0 -1
  18. package/Button-7200b617.js.map +0 -1
  19. package/Check-6291ad09.js +0 -2
  20. package/Check-6291ad09.js.map +0 -1
  21. package/Checkbox-ffdd3cb7.js +0 -2
  22. package/Checkbox-ffdd3cb7.js.map +0 -1
  23. package/FormGroup-17d2a3d3.js +0 -2
  24. package/FormGroup-17d2a3d3.js.map +0 -1
  25. package/Loader-9e099b42.js +0 -2
  26. package/Loader-9e099b42.js.map +0 -1
  27. package/Modal-5c2defa7.js +0 -2
  28. package/Modal-5c2defa7.js.map +0 -1
  29. package/Validation-e113da7e.js +0 -2
  30. package/Validation-e113da7e.js.map +0 -1
  31. package/components/Checkbox/Checkbox.d.ts +0 -31
  32. package/components/Checkbox/Checkbox.d.ts.map +0 -1
  33. package/components/Checkbox/componentdata.json +0 -259
  34. package/components/Checkbox/index.d.ts +0 -3
  35. package/components/Checkbox/index.d.ts.map +0 -1
  36. package/components/Checkbox/index.js +0 -2
  37. package/components/Checkbox/index.js.map +0 -1
  38. package/components/Checkbox/styles.module.scss +0 -191
  39. package/components/Checkbox/styles.module.scss.d.ts +0 -25
  40. package/components/FormExample/FormExample.d.ts +0 -13
  41. package/components/FormExample/FormExample.d.ts.map +0 -1
  42. package/components/FormExample/componentdata.json +0 -63
  43. package/components/FormExample/index.d.ts +0 -3
  44. package/components/FormExample/index.d.ts.map +0 -1
  45. package/components/FormExample/index.js +0 -2
  46. package/components/FormExample/index.js.map +0 -1
  47. package/components/FormGroup/FormGroup.d.ts +0 -26
  48. package/components/FormGroup/FormGroup.d.ts.map +0 -1
  49. package/components/FormGroup/componentdata.json +0 -183
  50. package/components/FormGroup/index.d.ts +0 -3
  51. package/components/FormGroup/index.d.ts.map +0 -1
  52. package/components/FormGroup/index.js +0 -2
  53. package/components/FormGroup/index.js.map +0 -1
  54. package/components/FormGroup/styles.module.scss +0 -79
  55. package/components/FormGroup/styles.module.scss.d.ts +0 -22
  56. package/components/Validation/Validation.d.ts +0 -17
  57. package/components/Validation/Validation.d.ts.map +0 -1
  58. package/components/Validation/componentdata.json +0 -111
  59. package/components/Validation/index.d.ts +0 -3
  60. package/components/Validation/index.d.ts.map +0 -1
  61. package/components/Validation/index.js +0 -2
  62. package/components/Validation/index.js.map +0 -1
  63. package/components/Validation/styles.module.scss +0 -15
  64. package/components/Validation/styles.module.scss.d.ts +0 -10
  65. package/uuid-484288be.js +0 -2
  66. package/uuid-484288be.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../node_modules/react-hook-form/dist/index.esm.js"],"sourcesContent":["import { isValidElement, useRef, useState, useCallback, useEffect, useMemo, createContext, useContext, createElement, cloneElement } from 'react';\n\nvar isHTMLElement = (value) => value instanceof HTMLElement;\n\nconst EVENTS = {\r\n BLUR: 'blur',\r\n CHANGE: 'change',\r\n INPUT: 'input',\r\n};\r\nconst VALIDATION_MODE = {\r\n onBlur: 'onBlur',\r\n onChange: 'onChange',\r\n onSubmit: 'onSubmit',\r\n onTouched: 'onTouched',\r\n all: 'all',\r\n};\r\nconst SELECT = 'select';\r\nconst UNDEFINED = 'undefined';\r\nconst INPUT_VALIDATION_RULES = {\r\n max: 'max',\r\n min: 'min',\r\n maxLength: 'maxLength',\r\n minLength: 'minLength',\r\n pattern: 'pattern',\r\n required: 'required',\r\n validate: 'validate',\r\n};\n\nfunction attachEventListeners({ ref }, shouldAttachChangeEvent, handleChange) {\r\n if (isHTMLElement(ref) && handleChange) {\r\n ref.addEventListener(shouldAttachChangeEvent ? EVENTS.CHANGE : EVENTS.INPUT, handleChange);\r\n ref.addEventListener(EVENTS.BLUR, handleChange);\r\n }\r\n}\n\nvar isNullOrUndefined = (value) => value == null;\n\nconst isObjectType = (value) => typeof value === 'object';\r\nvar isObject = (value) => !isNullOrUndefined(value) &&\r\n !Array.isArray(value) &&\r\n isObjectType(value) &&\r\n !(value instanceof Date);\n\nvar isKey = (value) => /^\\w*$/.test(value);\n\nvar compact = (value) => value.filter(Boolean);\n\nvar stringToPath = (input) => compact(input\r\n .replace(/[\"|']/g, '')\r\n .replace(/\\[/g, '.')\r\n .replace(/\\]/g, '')\r\n .split('.'));\n\nfunction set(object, path, value) {\r\n let index = -1;\r\n const tempPath = isKey(path) ? [path] : stringToPath(path);\r\n const length = tempPath.length;\r\n const lastIndex = length - 1;\r\n while (++index < length) {\r\n const key = tempPath[index];\r\n let newValue = value;\r\n if (index !== lastIndex) {\r\n const objValue = object[key];\r\n newValue =\r\n isObject(objValue) || Array.isArray(objValue)\r\n ? objValue\r\n : !isNaN(+tempPath[index + 1])\r\n ? []\r\n : {};\r\n }\r\n object[key] = newValue;\r\n object = object[key];\r\n }\r\n return object;\r\n}\n\nvar transformToNestObject = (data, value = {}) => {\r\n for (const key in data) {\r\n !isKey(key) ? set(value, key, data[key]) : (value[key] = data[key]);\r\n }\r\n return value;\r\n};\n\nvar isUndefined = (val) => val === undefined;\n\nvar get = (obj = {}, path, defaultValue) => {\r\n const result = compact(path.split(/[,[\\].]+?/)).reduce((result, key) => (isNullOrUndefined(result) ? result : result[key]), obj);\r\n return isUndefined(result) || result === obj\r\n ? isUndefined(obj[path])\r\n ? defaultValue\r\n : obj[path]\r\n : result;\r\n};\n\nvar focusOnErrorField = (fields, fieldErrors) => {\r\n for (const key in fields) {\r\n if (get(fieldErrors, key)) {\r\n const field = fields[key];\r\n if (field) {\r\n if (field.ref.focus && isUndefined(field.ref.focus())) {\r\n break;\r\n }\r\n else if (field.options) {\r\n field.options[0].ref.focus();\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n};\n\nvar removeAllEventListeners = (ref, validateWithStateUpdate) => {\r\n if (isHTMLElement(ref) && ref.removeEventListener) {\r\n ref.removeEventListener(EVENTS.INPUT, validateWithStateUpdate);\r\n ref.removeEventListener(EVENTS.CHANGE, validateWithStateUpdate);\r\n ref.removeEventListener(EVENTS.BLUR, validateWithStateUpdate);\r\n }\r\n};\n\nconst defaultReturn = {\r\n isValid: false,\r\n value: null,\r\n};\r\nvar getRadioValue = (options) => Array.isArray(options)\r\n ? options.reduce((previous, option) => option && option.ref.checked\r\n ? {\r\n isValid: true,\r\n value: option.ref.value,\r\n }\r\n : previous, defaultReturn)\r\n : defaultReturn;\n\nvar getMultipleSelectValue = (options) => [...options]\r\n .filter(({ selected }) => selected)\r\n .map(({ value }) => value);\n\nvar isRadioInput = (element) => element.type === 'radio';\n\nvar isFileInput = (element) => element.type === 'file';\n\nvar isCheckBoxInput = (element) => element.type === 'checkbox';\n\nvar isMultipleSelect = (element) => element.type === `${SELECT}-multiple`;\n\nconst defaultResult = {\r\n value: false,\r\n isValid: false,\r\n};\r\nconst validResult = { value: true, isValid: true };\r\nvar getCheckboxValue = (options) => {\r\n if (Array.isArray(options)) {\r\n if (options.length > 1) {\r\n const values = options\r\n .filter((option) => option && option.ref.checked)\r\n .map(({ ref: { value } }) => value);\r\n return { value: values, isValid: !!values.length };\r\n }\r\n const { checked, value, attributes } = options[0].ref;\r\n return checked\r\n ? attributes && !isUndefined(attributes.value)\r\n ? isUndefined(value) || value === ''\r\n ? validResult\r\n : { value: value, isValid: true }\r\n : validResult\r\n : defaultResult;\r\n }\r\n return defaultResult;\r\n};\n\nfunction getFieldValue(fieldsRef, name, shallowFieldsStateRef, excludeDisabled, shouldKeepRawValue) {\r\n const field = fieldsRef.current[name];\r\n if (field) {\r\n const { ref: { value, disabled }, ref, valueAsNumber, valueAsDate, setValueAs, } = field;\r\n if (disabled && excludeDisabled) {\r\n return;\r\n }\r\n if (isFileInput(ref)) {\r\n return ref.files;\r\n }\r\n if (isRadioInput(ref)) {\r\n return getRadioValue(field.options).value;\r\n }\r\n if (isMultipleSelect(ref)) {\r\n return getMultipleSelectValue(ref.options);\r\n }\r\n if (isCheckBoxInput(ref)) {\r\n return getCheckboxValue(field.options).value;\r\n }\r\n return shouldKeepRawValue\r\n ? value\r\n : valueAsNumber\r\n ? value === ''\r\n ? NaN\r\n : +value\r\n : valueAsDate\r\n ? ref.valueAsDate\r\n : setValueAs\r\n ? setValueAs(value)\r\n : value;\r\n }\r\n if (shallowFieldsStateRef) {\r\n return get(shallowFieldsStateRef.current, name);\r\n }\r\n}\n\nfunction isDetached(element) {\r\n if (!element) {\r\n return true;\r\n }\r\n if (!(element instanceof HTMLElement) ||\r\n element.nodeType === Node.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n return isDetached(element.parentNode);\r\n}\n\nvar isEmptyObject = (value) => isObject(value) && !Object.keys(value).length;\n\nvar isBoolean = (value) => typeof value === 'boolean';\n\nfunction baseGet(object, updatePath) {\r\n const length = updatePath.slice(0, -1).length;\r\n let index = 0;\r\n while (index < length) {\r\n object = isUndefined(object) ? index++ : object[updatePath[index++]];\r\n }\r\n return object;\r\n}\r\nfunction unset(object, path) {\r\n const updatePath = isKey(path) ? [path] : stringToPath(path);\r\n const childObject = updatePath.length == 1 ? object : baseGet(object, updatePath);\r\n const key = updatePath[updatePath.length - 1];\r\n let previousObjRef;\r\n if (childObject) {\r\n delete childObject[key];\r\n }\r\n for (let k = 0; k < updatePath.slice(0, -1).length; k++) {\r\n let index = -1;\r\n let objectRef;\r\n const currentPaths = updatePath.slice(0, -(k + 1));\r\n const currentPathsLength = currentPaths.length - 1;\r\n if (k > 0) {\r\n previousObjRef = object;\r\n }\r\n while (++index < currentPaths.length) {\r\n const item = currentPaths[index];\r\n objectRef = objectRef ? objectRef[item] : object[item];\r\n if (currentPathsLength === index &&\r\n ((isObject(objectRef) && isEmptyObject(objectRef)) ||\r\n (Array.isArray(objectRef) &&\r\n !objectRef.filter((data) => (isObject(data) && !isEmptyObject(data)) || isBoolean(data)).length))) {\r\n previousObjRef ? delete previousObjRef[item] : delete object[item];\r\n }\r\n previousObjRef = objectRef;\r\n }\r\n }\r\n return object;\r\n}\n\nconst isSameRef = (fieldValue, ref) => fieldValue && fieldValue.ref === ref;\r\nfunction findRemovedFieldAndRemoveListener(fieldsRef, handleChange, field, shallowFieldsStateRef, shouldUnregister, forceDelete) {\r\n const { ref, ref: { name }, } = field;\r\n const fieldRef = fieldsRef.current[name];\r\n if (!shouldUnregister) {\r\n const value = getFieldValue(fieldsRef, name, shallowFieldsStateRef);\r\n !isUndefined(value) && set(shallowFieldsStateRef.current, name, value);\r\n }\r\n if (!ref.type || !fieldRef) {\r\n delete fieldsRef.current[name];\r\n return;\r\n }\r\n if (isRadioInput(ref) || isCheckBoxInput(ref)) {\r\n if (Array.isArray(fieldRef.options) && fieldRef.options.length) {\r\n compact(fieldRef.options).forEach((option = {}, index) => {\r\n if ((isDetached(option.ref) && isSameRef(option, option.ref)) ||\r\n forceDelete) {\r\n removeAllEventListeners(option.ref, handleChange);\r\n unset(fieldRef.options, `[${index}]`);\r\n }\r\n });\r\n if (fieldRef.options && !compact(fieldRef.options).length) {\r\n delete fieldsRef.current[name];\r\n }\r\n }\r\n else {\r\n delete fieldsRef.current[name];\r\n }\r\n }\r\n else if ((isDetached(ref) && isSameRef(fieldRef, ref)) || forceDelete) {\r\n removeAllEventListeners(ref, handleChange);\r\n delete fieldsRef.current[name];\r\n }\r\n}\n\nvar isPrimitive = (value) => isNullOrUndefined(value) || !isObjectType(value);\n\nfunction deepMerge(target, source) {\r\n if (isPrimitive(target) || isPrimitive(source)) {\r\n return source;\r\n }\r\n for (const key in source) {\r\n const targetValue = target[key];\r\n const sourceValue = source[key];\r\n try {\r\n target[key] =\r\n (isObject(targetValue) && isObject(sourceValue)) ||\r\n (Array.isArray(targetValue) && Array.isArray(sourceValue))\r\n ? deepMerge(targetValue, sourceValue)\r\n : sourceValue;\r\n }\r\n catch (_a) { }\r\n }\r\n return target;\r\n}\n\nfunction deepEqual(object1, object2, isErrorObject) {\r\n if (isPrimitive(object1) ||\r\n isPrimitive(object2) ||\r\n object1 instanceof Date ||\r\n object2 instanceof Date) {\r\n return object1 === object2;\r\n }\r\n if (!isValidElement(object1)) {\r\n const keys1 = Object.keys(object1);\r\n const keys2 = Object.keys(object2);\r\n if (keys1.length !== keys2.length) {\r\n return false;\r\n }\r\n for (const key of keys1) {\r\n const val1 = object1[key];\r\n if (!(isErrorObject && key === 'ref')) {\r\n const val2 = object2[key];\r\n if ((isObject(val1) || Array.isArray(val1)) &&\r\n (isObject(val2) || Array.isArray(val2))\r\n ? !deepEqual(val1, val2, isErrorObject)\r\n : val1 !== val2) {\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n}\n\nfunction setDirtyFields(values, defaultValues, dirtyFields, parentNode, parentName) {\r\n let index = -1;\r\n while (++index < values.length) {\r\n for (const key in values[index]) {\r\n if (Array.isArray(values[index][key])) {\r\n !dirtyFields[index] && (dirtyFields[index] = {});\r\n dirtyFields[index][key] = [];\r\n setDirtyFields(values[index][key], get(defaultValues[index] || {}, key, []), dirtyFields[index][key], dirtyFields[index], key);\r\n }\r\n else {\r\n deepEqual(get(defaultValues[index] || {}, key), values[index][key])\r\n ? set(dirtyFields[index] || {}, key)\r\n : (dirtyFields[index] = Object.assign(Object.assign({}, dirtyFields[index]), { [key]: true }));\r\n }\r\n }\r\n parentNode &&\r\n !dirtyFields.length &&\r\n delete parentNode[parentName];\r\n }\r\n return dirtyFields;\r\n}\r\nvar setFieldArrayDirtyFields = (values, defaultValues, dirtyFields) => deepMerge(setDirtyFields(values, defaultValues, dirtyFields.slice(0, values.length)), setDirtyFields(defaultValues, values, dirtyFields.slice(0, values.length)));\n\nvar isString = (value) => typeof value === 'string';\n\nvar getFieldsValues = (fieldsRef, shallowFieldsState, shouldUnregister, excludeDisabled, search) => {\r\n const output = {};\r\n for (const name in fieldsRef.current) {\r\n if (isUndefined(search) ||\r\n (isString(search)\r\n ? name.startsWith(search)\r\n : Array.isArray(search) && search.find((data) => name.startsWith(data)))) {\r\n output[name] = getFieldValue(fieldsRef, name, undefined, excludeDisabled);\r\n }\r\n }\r\n return shouldUnregister\r\n ? transformToNestObject(output)\r\n : deepMerge(shallowFieldsState, transformToNestObject(output));\r\n};\n\nvar isErrorStateChanged = ({ errors, name, error, validFields, fieldsWithValidation, }) => {\r\n const isValid = isUndefined(error);\r\n const previousError = get(errors, name);\r\n return ((isValid && !!previousError) ||\r\n (!isValid && !deepEqual(previousError, error, true)) ||\r\n (isValid && get(fieldsWithValidation, name) && !get(validFields, name)));\r\n};\n\nvar isRegex = (value) => value instanceof RegExp;\n\nvar getValueAndMessage = (validationData) => isObject(validationData) && !isRegex(validationData)\r\n ? validationData\r\n : {\r\n value: validationData,\r\n message: '',\r\n };\n\nvar isFunction = (value) => typeof value === 'function';\n\nvar isMessage = (value) => isString(value) || isValidElement(value);\n\nfunction getValidateError(result, ref, type = 'validate') {\r\n if (isMessage(result) || (isBoolean(result) && !result)) {\r\n return {\r\n type,\r\n message: isMessage(result) ? result : '',\r\n ref,\r\n };\r\n }\r\n}\n\nvar appendErrors = (name, validateAllFieldCriteria, errors, type, message) => validateAllFieldCriteria\r\n ? Object.assign(Object.assign({}, errors[name]), { types: Object.assign(Object.assign({}, (errors[name] && errors[name].types ? errors[name].types : {})), { [type]: message || true }) }) : {};\n\nvar validateField = async (fieldsRef, validateAllFieldCriteria, { ref, ref: { value }, options, required, maxLength, minLength, min, max, pattern, validate, }, shallowFieldsStateRef) => {\r\n const name = ref.name;\r\n const error = {};\r\n const isRadio = isRadioInput(ref);\r\n const isCheckBox = isCheckBoxInput(ref);\r\n const isRadioOrCheckbox = isRadio || isCheckBox;\r\n const isEmpty = value === '';\r\n const appendErrorsCurry = appendErrors.bind(null, name, validateAllFieldCriteria, error);\r\n const getMinMaxMessage = (exceedMax, maxLengthMessage, minLengthMessage, maxType = INPUT_VALIDATION_RULES.maxLength, minType = INPUT_VALIDATION_RULES.minLength) => {\r\n const message = exceedMax ? maxLengthMessage : minLengthMessage;\r\n error[name] = Object.assign({ type: exceedMax ? maxType : minType, message,\r\n ref }, (exceedMax\r\n ? appendErrorsCurry(maxType, message)\r\n : appendErrorsCurry(minType, message)));\r\n };\r\n if (required &&\r\n ((!isRadio && !isCheckBox && (isEmpty || isNullOrUndefined(value))) ||\r\n (isBoolean(value) && !value) ||\r\n (isCheckBox && !getCheckboxValue(options).isValid) ||\r\n (isRadio && !getRadioValue(options).isValid))) {\r\n const { value, message } = isMessage(required)\r\n ? { value: !!required, message: required }\r\n : getValueAndMessage(required);\r\n if (value) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.required, message, ref: isRadioOrCheckbox\r\n ? ((fieldsRef.current[name].options || [])[0] || {}).ref\r\n : ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.required, message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if ((!isNullOrUndefined(min) || !isNullOrUndefined(max)) && value !== '') {\r\n let exceedMax;\r\n let exceedMin;\r\n const maxOutput = getValueAndMessage(max);\r\n const minOutput = getValueAndMessage(min);\r\n if (!isNaN(value)) {\r\n const valueNumber = ref.valueAsNumber || parseFloat(value);\r\n if (!isNullOrUndefined(maxOutput.value)) {\r\n exceedMax = valueNumber > maxOutput.value;\r\n }\r\n if (!isNullOrUndefined(minOutput.value)) {\r\n exceedMin = valueNumber < minOutput.value;\r\n }\r\n }\r\n else {\r\n const valueDate = ref.valueAsDate || new Date(value);\r\n if (isString(maxOutput.value)) {\r\n exceedMax = valueDate > new Date(maxOutput.value);\r\n }\r\n if (isString(minOutput.value)) {\r\n exceedMin = valueDate < new Date(minOutput.value);\r\n }\r\n }\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(!!exceedMax, maxOutput.message, minOutput.message, INPUT_VALIDATION_RULES.max, INPUT_VALIDATION_RULES.min);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (isString(value) && !isEmpty && (maxLength || minLength)) {\r\n const maxLengthOutput = getValueAndMessage(maxLength);\r\n const minLengthOutput = getValueAndMessage(minLength);\r\n const exceedMax = !isNullOrUndefined(maxLengthOutput.value) &&\r\n value.length > maxLengthOutput.value;\r\n const exceedMin = !isNullOrUndefined(minLengthOutput.value) &&\r\n value.length < minLengthOutput.value;\r\n if (exceedMax || exceedMin) {\r\n getMinMaxMessage(exceedMax, maxLengthOutput.message, minLengthOutput.message);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (isString(value) && pattern && !isEmpty) {\r\n const { value: patternValue, message } = getValueAndMessage(pattern);\r\n if (isRegex(patternValue) && !patternValue.test(value)) {\r\n error[name] = Object.assign({ type: INPUT_VALIDATION_RULES.pattern, message,\r\n ref }, appendErrorsCurry(INPUT_VALIDATION_RULES.pattern, message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n if (validate) {\r\n const fieldValue = getFieldValue(fieldsRef, name, shallowFieldsStateRef, false, true);\r\n const validateRef = isRadioOrCheckbox && options ? options[0].ref : ref;\r\n if (isFunction(validate)) {\r\n const result = await validate(fieldValue);\r\n const validateError = getValidateError(result, validateRef);\r\n if (validateError) {\r\n error[name] = Object.assign(Object.assign({}, validateError), appendErrorsCurry(INPUT_VALIDATION_RULES.validate, validateError.message));\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n else if (isObject(validate)) {\r\n let validationResult = {};\r\n for (const [key, validateFunction] of Object.entries(validate)) {\r\n if (!isEmptyObject(validationResult) && !validateAllFieldCriteria) {\r\n break;\r\n }\r\n const validateResult = await validateFunction(fieldValue);\r\n const validateError = getValidateError(validateResult, validateRef, key);\r\n if (validateError) {\r\n validationResult = Object.assign(Object.assign({}, validateError), appendErrorsCurry(key, validateError.message));\r\n if (validateAllFieldCriteria) {\r\n error[name] = validationResult;\r\n }\r\n }\r\n }\r\n if (!isEmptyObject(validationResult)) {\r\n error[name] = Object.assign({ ref: validateRef }, validationResult);\r\n if (!validateAllFieldCriteria) {\r\n return error;\r\n }\r\n }\r\n }\r\n }\r\n return error;\r\n};\n\nconst getPath = (rootPath, values, paths = []) => {\r\n for (const property in values) {\r\n const rootName = (rootPath +\r\n (isObject(values)\r\n ? `.${property}`\r\n : `[${property}]`));\r\n isPrimitive(values[property])\r\n ? paths.push(rootName)\r\n : getPath(rootName, values[property], paths);\r\n }\r\n return paths;\r\n};\n\nvar assignWatchFields = (fieldValues, fieldName, watchFields, inputValue, isSingleField) => {\r\n let value = undefined;\r\n watchFields.add(fieldName);\r\n if (!isEmptyObject(fieldValues)) {\r\n value = get(fieldValues, fieldName);\r\n if (isObject(value) || Array.isArray(value)) {\r\n getPath(fieldName, value).forEach((name) => watchFields.add(name));\r\n }\r\n }\r\n return isUndefined(value)\r\n ? isSingleField\r\n ? inputValue\r\n : get(inputValue, fieldName)\r\n : value;\r\n};\n\nvar skipValidation = ({ isOnBlur, isOnChange, isOnTouch, isTouched, isReValidateOnBlur, isReValidateOnChange, isBlurEvent, isSubmitted, isOnAll, }) => {\r\n if (isOnAll) {\r\n return false;\r\n }\r\n else if (!isSubmitted && isOnTouch) {\r\n return !(isTouched || isBlurEvent);\r\n }\r\n else if (isSubmitted ? isReValidateOnBlur : isOnBlur) {\r\n return !isBlurEvent;\r\n }\r\n else if (isSubmitted ? isReValidateOnChange : isOnChange) {\r\n return isBlurEvent;\r\n }\r\n return true;\r\n};\n\nvar getFieldArrayParentName = (name) => name.substring(0, name.indexOf('['));\n\nconst isMatchFieldArrayName = (name, searchName) => RegExp(`^${searchName}([|.)\\\\d+`.replace(/\\[/g, '\\\\[').replace(/\\]/g, '\\\\]')).test(name);\r\nvar isNameInFieldArray = (names, name) => [...names].some((current) => isMatchFieldArrayName(name, current));\n\nvar isSelectInput = (element) => element.type === `${SELECT}-one`;\n\nfunction onDomRemove(fieldsRef, removeFieldEventListenerAndRef) {\r\n const observer = new MutationObserver(() => {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field && field.options) {\r\n for (const option of field.options) {\r\n if (option && option.ref && isDetached(option.ref)) {\r\n removeFieldEventListenerAndRef(field);\r\n }\r\n }\r\n }\r\n else if (field && isDetached(field.ref)) {\r\n removeFieldEventListenerAndRef(field);\r\n }\r\n }\r\n });\r\n observer.observe(window.document, {\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\n\nvar isWeb = typeof window !== UNDEFINED && typeof document !== UNDEFINED;\n\nfunction cloneObject(data) {\r\n var _a;\r\n let copy;\r\n if (isPrimitive(data) ||\r\n (isWeb && (data instanceof File || isHTMLElement(data)))) {\r\n return data;\r\n }\r\n if (!['Set', 'Map', 'Object', 'Date', 'Array'].includes((_a = data.constructor) === null || _a === void 0 ? void 0 : _a.name)) {\r\n return data;\r\n }\r\n if (data instanceof Date) {\r\n copy = new Date(data.getTime());\r\n return copy;\r\n }\r\n if (data instanceof Set) {\r\n copy = new Set();\r\n for (const item of data) {\r\n copy.add(item);\r\n }\r\n return copy;\r\n }\r\n if (data instanceof Map) {\r\n copy = new Map();\r\n for (const key of data.keys()) {\r\n copy.set(key, cloneObject(data.get(key)));\r\n }\r\n return copy;\r\n }\r\n copy = Array.isArray(data) ? [] : {};\r\n for (const key in data) {\r\n copy[key] = cloneObject(data[key]);\r\n }\r\n return copy;\r\n}\n\nvar modeChecker = (mode) => ({\r\n isOnSubmit: !mode || mode === VALIDATION_MODE.onSubmit,\r\n isOnBlur: mode === VALIDATION_MODE.onBlur,\r\n isOnChange: mode === VALIDATION_MODE.onChange,\r\n isOnAll: mode === VALIDATION_MODE.all,\r\n isOnTouch: mode === VALIDATION_MODE.onTouched,\r\n});\n\nvar isRadioOrCheckboxFunction = (ref) => isRadioInput(ref) || isCheckBoxInput(ref);\n\nconst isWindowUndefined = typeof window === UNDEFINED;\r\nconst isProxyEnabled = isWeb ? 'Proxy' in window : typeof Proxy !== UNDEFINED;\r\nfunction useForm({ mode = VALIDATION_MODE.onSubmit, reValidateMode = VALIDATION_MODE.onChange, resolver, context, defaultValues = {}, shouldFocusError = true, shouldUnregister = true, criteriaMode, } = {}) {\r\n const fieldsRef = useRef({});\r\n const fieldArrayDefaultValuesRef = useRef({});\r\n const fieldArrayValuesRef = useRef({});\r\n const watchFieldsRef = useRef(new Set());\r\n const useWatchFieldsRef = useRef({});\r\n const useWatchRenderFunctionsRef = useRef({});\r\n const fieldsWithValidationRef = useRef({});\r\n const validFieldsRef = useRef({});\r\n const defaultValuesRef = useRef(defaultValues);\r\n const isUnMount = useRef(false);\r\n const isWatchAllRef = useRef(false);\r\n const handleChangeRef = useRef();\r\n const shallowFieldsStateRef = useRef({});\r\n const resetFieldArrayFunctionRef = useRef({});\r\n const contextRef = useRef(context);\r\n const resolverRef = useRef(resolver);\r\n const fieldArrayNamesRef = useRef(new Set());\r\n const modeRef = useRef(modeChecker(mode));\r\n const { isOnSubmit, isOnTouch } = modeRef.current;\r\n const isValidateAllFieldCriteria = criteriaMode === VALIDATION_MODE.all;\r\n const [formState, setFormState] = useState({\r\n isDirty: false,\r\n isValidating: false,\r\n dirtyFields: {},\r\n isSubmitted: false,\r\n submitCount: 0,\r\n touched: {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n isValid: !isOnSubmit,\r\n errors: {},\r\n });\r\n const readFormStateRef = useRef({\r\n isDirty: !isProxyEnabled,\r\n dirtyFields: !isProxyEnabled,\r\n touched: !isProxyEnabled || isOnTouch,\r\n isValidating: !isProxyEnabled,\r\n isSubmitting: !isProxyEnabled,\r\n isValid: !isProxyEnabled,\r\n });\r\n const formStateRef = useRef(formState);\r\n const observerRef = useRef();\r\n const { isOnBlur: isReValidateOnBlur, isOnChange: isReValidateOnChange, } = useRef(modeChecker(reValidateMode)).current;\r\n contextRef.current = context;\r\n resolverRef.current = resolver;\r\n formStateRef.current = formState;\r\n shallowFieldsStateRef.current = shouldUnregister\r\n ? {}\r\n : isEmptyObject(shallowFieldsStateRef.current)\r\n ? cloneObject(defaultValues)\r\n : shallowFieldsStateRef.current;\r\n const updateFormState = useCallback((state = {}) => {\r\n if (!isUnMount.current) {\r\n formStateRef.current = Object.assign(Object.assign({}, formStateRef.current), state);\r\n setFormState(formStateRef.current);\r\n }\r\n }, []);\r\n const updateIsValidating = () => readFormStateRef.current.isValidating &&\r\n updateFormState({\r\n isValidating: true,\r\n });\r\n const shouldRenderBaseOnError = useCallback((name, error, shouldRender = false, state = {}, isValid) => {\r\n let shouldReRender = shouldRender ||\r\n isErrorStateChanged({\r\n errors: formStateRef.current.errors,\r\n error,\r\n name,\r\n validFields: validFieldsRef.current,\r\n fieldsWithValidation: fieldsWithValidationRef.current,\r\n });\r\n const previousError = get(formStateRef.current.errors, name);\r\n if (error) {\r\n unset(validFieldsRef.current, name);\r\n shouldReRender =\r\n shouldReRender ||\r\n !previousError ||\r\n !deepEqual(previousError, error, true);\r\n set(formStateRef.current.errors, name, error);\r\n }\r\n else {\r\n if (get(fieldsWithValidationRef.current, name) || resolverRef.current) {\r\n set(validFieldsRef.current, name, true);\r\n shouldReRender = shouldReRender || previousError;\r\n }\r\n unset(formStateRef.current.errors, name);\r\n }\r\n if ((shouldReRender && !isNullOrUndefined(shouldRender)) ||\r\n !isEmptyObject(state) ||\r\n readFormStateRef.current.isValidating) {\r\n updateFormState(Object.assign(Object.assign(Object.assign({}, state), (resolverRef.current ? { isValid: !!isValid } : {})), { isValidating: false }));\r\n }\r\n }, []);\r\n const setFieldValue = useCallback((name, rawValue) => {\r\n const { ref, options } = fieldsRef.current[name];\r\n const value = isWeb && isHTMLElement(ref) && isNullOrUndefined(rawValue)\r\n ? ''\r\n : rawValue;\r\n if (isRadioInput(ref)) {\r\n (options || []).forEach(({ ref: radioRef }) => (radioRef.checked = radioRef.value === value));\r\n }\r\n else if (isFileInput(ref) && !isString(value)) {\r\n ref.files = value;\r\n }\r\n else if (isMultipleSelect(ref)) {\r\n [...ref.options].forEach((selectRef) => (selectRef.selected = value.includes(selectRef.value)));\r\n }\r\n else if (isCheckBoxInput(ref) && options) {\r\n options.length > 1\r\n ? options.forEach(({ ref: checkboxRef }) => (checkboxRef.checked = Array.isArray(value)\r\n ? !!value.find((data) => data === checkboxRef.value)\r\n : value === checkboxRef.value))\r\n : (options[0].ref.checked = !!value);\r\n }\r\n else {\r\n ref.value = value;\r\n }\r\n }, []);\r\n const isFormDirty = useCallback((name, data) => {\r\n if (readFormStateRef.current.isDirty) {\r\n const formValues = getValues();\r\n name && data && set(formValues, name, data);\r\n return !deepEqual(formValues, defaultValuesRef.current);\r\n }\r\n return false;\r\n }, []);\r\n const updateAndGetDirtyState = useCallback((name, shouldRender = true) => {\r\n if (readFormStateRef.current.isDirty ||\r\n readFormStateRef.current.dirtyFields) {\r\n const isFieldDirty = !deepEqual(get(defaultValuesRef.current, name), getFieldValue(fieldsRef, name, shallowFieldsStateRef));\r\n const isDirtyFieldExist = get(formStateRef.current.dirtyFields, name);\r\n const previousIsDirty = formStateRef.current.isDirty;\r\n isFieldDirty\r\n ? set(formStateRef.current.dirtyFields, name, true)\r\n : unset(formStateRef.current.dirtyFields, name);\r\n const state = {\r\n isDirty: isFormDirty(),\r\n dirtyFields: formStateRef.current.dirtyFields,\r\n };\r\n const isChanged = (readFormStateRef.current.isDirty &&\r\n previousIsDirty !== state.isDirty) ||\r\n (readFormStateRef.current.dirtyFields &&\r\n isDirtyFieldExist !== get(formStateRef.current.dirtyFields, name));\r\n isChanged && shouldRender && updateFormState(state);\r\n return isChanged ? state : {};\r\n }\r\n return {};\r\n }, []);\r\n const executeValidation = useCallback(async (name, skipReRender) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!fieldsRef.current[name]) {\r\n console.warn('📋 Field is missing with `name` attribute: ', name);\r\n return false;\r\n }\r\n }\r\n const error = (await validateField(fieldsRef, isValidateAllFieldCriteria, fieldsRef.current[name], shallowFieldsStateRef))[name];\r\n shouldRenderBaseOnError(name, error, skipReRender);\r\n return isUndefined(error);\r\n }, [shouldRenderBaseOnError, isValidateAllFieldCriteria]);\r\n const executeSchemaOrResolverValidation = useCallback(async (names) => {\r\n const { errors } = await resolverRef.current(getValues(), contextRef.current, isValidateAllFieldCriteria);\r\n const previousFormIsValid = formStateRef.current.isValid;\r\n if (Array.isArray(names)) {\r\n const isInputsValid = names\r\n .map((name) => {\r\n const error = get(errors, name);\r\n error\r\n ? set(formStateRef.current.errors, name, error)\r\n : unset(formStateRef.current.errors, name);\r\n return !error;\r\n })\r\n .every(Boolean);\r\n updateFormState({\r\n isValid: isEmptyObject(errors),\r\n isValidating: false,\r\n });\r\n return isInputsValid;\r\n }\r\n else {\r\n const error = get(errors, names);\r\n shouldRenderBaseOnError(names, error, previousFormIsValid !== isEmptyObject(errors), {}, isEmptyObject(errors));\r\n return !error;\r\n }\r\n }, [shouldRenderBaseOnError, isValidateAllFieldCriteria]);\r\n const trigger = useCallback(async (name) => {\r\n const fields = name || Object.keys(fieldsRef.current);\r\n updateIsValidating();\r\n if (resolverRef.current) {\r\n return executeSchemaOrResolverValidation(fields);\r\n }\r\n if (Array.isArray(fields)) {\r\n !name && (formStateRef.current.errors = {});\r\n const result = await Promise.all(fields.map(async (data) => await executeValidation(data, null)));\r\n updateFormState({\r\n isValidating: false,\r\n });\r\n return result.every(Boolean);\r\n }\r\n return await executeValidation(fields);\r\n }, [executeSchemaOrResolverValidation, executeValidation]);\r\n const setInternalValues = useCallback((name, value, { shouldDirty, shouldValidate }) => {\r\n const data = {};\r\n set(data, name, value);\r\n for (const fieldName of getPath(name, value)) {\r\n if (fieldsRef.current[fieldName]) {\r\n setFieldValue(fieldName, get(data, fieldName));\r\n shouldDirty && updateAndGetDirtyState(fieldName);\r\n shouldValidate && trigger(fieldName);\r\n }\r\n }\r\n }, [trigger, setFieldValue, updateAndGetDirtyState]);\r\n const setInternalValue = useCallback((name, value, config) => {\r\n !shouldUnregister &&\r\n !isPrimitive(value) &&\r\n set(shallowFieldsStateRef.current, name, Array.isArray(value) ? [...value] : Object.assign({}, value));\r\n if (fieldsRef.current[name]) {\r\n setFieldValue(name, value);\r\n config.shouldDirty && updateAndGetDirtyState(name);\r\n config.shouldValidate && trigger(name);\r\n }\r\n else if (!isPrimitive(value)) {\r\n setInternalValues(name, value, config);\r\n if (fieldArrayNamesRef.current.has(name)) {\r\n const parentName = getFieldArrayParentName(name) || name;\r\n set(fieldArrayDefaultValuesRef.current, name, value);\r\n resetFieldArrayFunctionRef.current[parentName]({\r\n [parentName]: get(fieldArrayDefaultValuesRef.current, parentName),\r\n });\r\n if ((readFormStateRef.current.isDirty ||\r\n readFormStateRef.current.dirtyFields) &&\r\n config.shouldDirty) {\r\n set(formStateRef.current.dirtyFields, name, setFieldArrayDirtyFields(value, get(defaultValuesRef.current, name, []), get(formStateRef.current.dirtyFields, name, [])));\r\n updateFormState({\r\n isDirty: !deepEqual(Object.assign(Object.assign({}, getValues()), { [name]: value }), defaultValuesRef.current),\r\n });\r\n }\r\n }\r\n }\r\n !shouldUnregister && set(shallowFieldsStateRef.current, name, value);\r\n }, [updateAndGetDirtyState, setFieldValue, setInternalValues]);\r\n const isFieldWatched = (name) => isWatchAllRef.current ||\r\n watchFieldsRef.current.has(name) ||\r\n watchFieldsRef.current.has((name.match(/\\w+/) || [])[0]);\r\n const renderWatchedInputs = (name) => {\r\n let found = true;\r\n if (!isEmptyObject(useWatchFieldsRef.current)) {\r\n for (const key in useWatchFieldsRef.current) {\r\n if (!name ||\r\n !useWatchFieldsRef.current[key].size ||\r\n useWatchFieldsRef.current[key].has(name) ||\r\n useWatchFieldsRef.current[key].has(getFieldArrayParentName(name))) {\r\n useWatchRenderFunctionsRef.current[key]();\r\n found = false;\r\n }\r\n }\r\n }\r\n return found;\r\n };\r\n function setValue(name, value, config) {\r\n setInternalValue(name, value, config || {});\r\n isFieldWatched(name) && updateFormState();\r\n renderWatchedInputs(name);\r\n }\r\n handleChangeRef.current = handleChangeRef.current\r\n ? handleChangeRef.current\r\n : async ({ type, target }) => {\r\n let name = target.name;\r\n const field = fieldsRef.current[name];\r\n let error;\r\n let isValid;\r\n if (field) {\r\n const isBlurEvent = type === EVENTS.BLUR;\r\n const shouldSkipValidation = skipValidation(Object.assign({ isBlurEvent,\r\n isReValidateOnChange,\r\n isReValidateOnBlur, isTouched: !!get(formStateRef.current.touched, name), isSubmitted: formStateRef.current.isSubmitted }, modeRef.current));\r\n let state = updateAndGetDirtyState(name, false);\r\n let shouldRender = !isEmptyObject(state) ||\r\n (!isBlurEvent && isFieldWatched(name));\r\n if (isBlurEvent &&\r\n !get(formStateRef.current.touched, name) &&\r\n readFormStateRef.current.touched) {\r\n set(formStateRef.current.touched, name, true);\r\n state = Object.assign(Object.assign({}, state), { touched: formStateRef.current.touched });\r\n }\r\n if (!shouldUnregister && isCheckBoxInput(target)) {\r\n set(shallowFieldsStateRef.current, name, getFieldValue(fieldsRef, name));\r\n }\r\n if (shouldSkipValidation) {\r\n !isBlurEvent && renderWatchedInputs(name);\r\n return ((!isEmptyObject(state) ||\r\n (shouldRender && isEmptyObject(state))) &&\r\n updateFormState(state));\r\n }\r\n updateIsValidating();\r\n if (resolverRef.current) {\r\n const { errors } = await resolverRef.current(getValues(), contextRef.current, isValidateAllFieldCriteria);\r\n const previousFormIsValid = formStateRef.current.isValid;\r\n error = get(errors, name);\r\n if (isCheckBoxInput(target) &&\r\n !error &&\r\n resolverRef.current) {\r\n const parentNodeName = getFieldArrayParentName(name);\r\n const currentError = get(errors, parentNodeName, {});\r\n currentError.type &&\r\n currentError.message &&\r\n (error = currentError);\r\n if (parentNodeName &&\r\n (currentError ||\r\n get(formStateRef.current.errors, parentNodeName))) {\r\n name = parentNodeName;\r\n }\r\n }\r\n isValid = isEmptyObject(errors);\r\n previousFormIsValid !== isValid && (shouldRender = true);\r\n }\r\n else {\r\n error = (await validateField(fieldsRef, isValidateAllFieldCriteria, field, shallowFieldsStateRef))[name];\r\n }\r\n !isBlurEvent && renderWatchedInputs(name);\r\n shouldRenderBaseOnError(name, error, shouldRender, state, isValid);\r\n }\r\n };\r\n function setFieldArrayDefaultValues(data) {\r\n if (!shouldUnregister) {\r\n let copy = cloneObject(data);\r\n for (const value of fieldArrayNamesRef.current) {\r\n if (isKey(value) && !copy[value]) {\r\n copy = Object.assign(Object.assign({}, copy), { [value]: [] });\r\n }\r\n }\r\n return copy;\r\n }\r\n return data;\r\n }\r\n function getValues(payload) {\r\n if (isString(payload)) {\r\n return getFieldValue(fieldsRef, payload, shallowFieldsStateRef);\r\n }\r\n if (Array.isArray(payload)) {\r\n const data = {};\r\n for (const name of payload) {\r\n set(data, name, getFieldValue(fieldsRef, name, shallowFieldsStateRef));\r\n }\r\n return data;\r\n }\r\n return setFieldArrayDefaultValues(getFieldsValues(fieldsRef, cloneObject(shallowFieldsStateRef.current), shouldUnregister));\r\n }\r\n const validateResolver = useCallback(async (values = {}) => {\r\n const newDefaultValues = isEmptyObject(fieldsRef.current)\r\n ? defaultValuesRef.current\r\n : {};\r\n const { errors } = (await resolverRef.current(Object.assign(Object.assign(Object.assign({}, newDefaultValues), getValues()), values), contextRef.current, isValidateAllFieldCriteria)) || {};\r\n const isValid = isEmptyObject(errors);\r\n formStateRef.current.isValid !== isValid &&\r\n updateFormState({\r\n isValid,\r\n });\r\n }, [isValidateAllFieldCriteria]);\r\n const removeFieldEventListener = useCallback((field, forceDelete) => {\r\n findRemovedFieldAndRemoveListener(fieldsRef, handleChangeRef.current, field, shallowFieldsStateRef, shouldUnregister, forceDelete);\r\n if (shouldUnregister) {\r\n unset(validFieldsRef.current, field.ref.name);\r\n unset(fieldsWithValidationRef.current, field.ref.name);\r\n }\r\n }, [shouldUnregister]);\r\n const updateWatchedValue = useCallback((name) => {\r\n if (isWatchAllRef.current) {\r\n updateFormState();\r\n }\r\n else {\r\n for (const watchField of watchFieldsRef.current) {\r\n if (watchField.startsWith(name)) {\r\n updateFormState();\r\n break;\r\n }\r\n }\r\n renderWatchedInputs(name);\r\n }\r\n }, []);\r\n const removeFieldEventListenerAndRef = useCallback((field, forceDelete) => {\r\n if (field) {\r\n removeFieldEventListener(field, forceDelete);\r\n if (shouldUnregister && !compact(field.options || []).length) {\r\n unset(formStateRef.current.errors, field.ref.name);\r\n set(formStateRef.current.dirtyFields, field.ref.name, true);\r\n updateFormState({\r\n isDirty: isFormDirty(),\r\n });\r\n readFormStateRef.current.isValid &&\r\n resolverRef.current &&\r\n validateResolver();\r\n updateWatchedValue(field.ref.name);\r\n }\r\n }\r\n }, [validateResolver, removeFieldEventListener]);\r\n function clearErrors(name) {\r\n name &&\r\n (Array.isArray(name) ? name : [name]).forEach((inputName) => fieldsRef.current[inputName] && isKey(inputName)\r\n ? delete formStateRef.current.errors[inputName]\r\n : unset(formStateRef.current.errors, inputName));\r\n updateFormState({\r\n errors: name ? formStateRef.current.errors : {},\r\n });\r\n }\r\n function setError(name, error) {\r\n const ref = (fieldsRef.current[name] || {}).ref;\r\n set(formStateRef.current.errors, name, Object.assign(Object.assign({}, error), { ref }));\r\n updateFormState({\r\n isValid: false,\r\n });\r\n error.shouldFocus && ref && ref.focus && ref.focus();\r\n }\r\n const watchInternal = useCallback((fieldNames, defaultValue, watchId) => {\r\n const watchFields = watchId\r\n ? useWatchFieldsRef.current[watchId]\r\n : watchFieldsRef.current;\r\n let fieldValues = getFieldsValues(fieldsRef, cloneObject(shallowFieldsStateRef.current), shouldUnregister, false, fieldNames);\r\n if (isString(fieldNames)) {\r\n const parentNodeName = getFieldArrayParentName(fieldNames) || fieldNames;\r\n if (fieldArrayNamesRef.current.has(parentNodeName)) {\r\n fieldValues = Object.assign(Object.assign({}, fieldArrayValuesRef.current), fieldValues);\r\n }\r\n return assignWatchFields(fieldValues, fieldNames, watchFields, isUndefined(get(defaultValuesRef.current, fieldNames))\r\n ? defaultValue\r\n : get(defaultValuesRef.current, fieldNames), true);\r\n }\r\n const combinedDefaultValues = isUndefined(defaultValue)\r\n ? defaultValuesRef.current\r\n : defaultValue;\r\n if (Array.isArray(fieldNames)) {\r\n return fieldNames.reduce((previous, name) => (Object.assign(Object.assign({}, previous), { [name]: assignWatchFields(fieldValues, name, watchFields, combinedDefaultValues) })), {});\r\n }\r\n isWatchAllRef.current = isUndefined(watchId);\r\n return transformToNestObject((!isEmptyObject(fieldValues) && fieldValues) ||\r\n combinedDefaultValues);\r\n }, []);\r\n function watch(fieldNames, defaultValue) {\r\n return watchInternal(fieldNames, defaultValue);\r\n }\r\n function unregister(name) {\r\n for (const fieldName of Array.isArray(name) ? name : [name]) {\r\n removeFieldEventListenerAndRef(fieldsRef.current[fieldName], true);\r\n }\r\n }\r\n function registerFieldRef(ref, options = {}) {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!ref.name) {\r\n return console.warn('📋 Field is missing `name` attribute', ref, `https://react-hook-form.com/api#useForm`);\r\n }\r\n if (fieldArrayNamesRef.current.has(ref.name.split(/\\[\\d+\\]$/)[0]) &&\r\n !RegExp(`^${ref.name.split(/\\[\\d+\\]$/)[0]}[\\\\d+].\\\\w+`\r\n .replace(/\\[/g, '\\\\[')\r\n .replace(/\\]/g, '\\\\]')).test(ref.name)) {\r\n return console.warn('📋 `name` prop should be in object shape: name=\"test[index].name\"', ref, 'https://react-hook-form.com/api#useFieldArray');\r\n }\r\n }\r\n const { name, type, value } = ref;\r\n const fieldRefAndValidationOptions = Object.assign({ ref }, options);\r\n const fields = fieldsRef.current;\r\n const isRadioOrCheckbox = isRadioOrCheckboxFunction(ref);\r\n const isFieldArray = isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n const compareRef = (currentRef) => isWeb && (!isHTMLElement(ref) || currentRef === ref);\r\n let field = fields[name];\r\n let isEmptyDefaultValue = true;\r\n let defaultValue;\r\n if (field &&\r\n (isRadioOrCheckbox\r\n ? Array.isArray(field.options) &&\r\n compact(field.options).find((option) => {\r\n return value === option.ref.value && compareRef(option.ref);\r\n })\r\n : compareRef(field.ref))) {\r\n fields[name] = Object.assign(Object.assign({}, field), options);\r\n return;\r\n }\r\n if (type) {\r\n field = isRadioOrCheckbox\r\n ? Object.assign({ options: [\r\n ...compact((field && field.options) || []),\r\n {\r\n ref,\r\n },\r\n ], ref: { type, name } }, options) : Object.assign({}, fieldRefAndValidationOptions);\r\n }\r\n else {\r\n field = fieldRefAndValidationOptions;\r\n }\r\n fields[name] = field;\r\n const isEmptyUnmountFields = isUndefined(get(shallowFieldsStateRef.current, name));\r\n if (!isEmptyObject(defaultValuesRef.current) || !isEmptyUnmountFields) {\r\n defaultValue = get(isEmptyUnmountFields\r\n ? defaultValuesRef.current\r\n : shallowFieldsStateRef.current, name);\r\n isEmptyDefaultValue = isUndefined(defaultValue);\r\n if (!isEmptyDefaultValue && !isFieldArray) {\r\n setFieldValue(name, defaultValue);\r\n }\r\n }\r\n if (!isEmptyObject(options)) {\r\n set(fieldsWithValidationRef.current, name, true);\r\n if (!isOnSubmit && readFormStateRef.current.isValid) {\r\n validateField(fieldsRef, isValidateAllFieldCriteria, field, shallowFieldsStateRef).then((error) => {\r\n const previousFormIsValid = formStateRef.current.isValid;\r\n isEmptyObject(error)\r\n ? set(validFieldsRef.current, name, true)\r\n : unset(validFieldsRef.current, name);\r\n previousFormIsValid !== isEmptyObject(error) && updateFormState();\r\n });\r\n }\r\n }\r\n if (shouldUnregister && !(isFieldArray && isEmptyDefaultValue)) {\r\n !isFieldArray && unset(formStateRef.current.dirtyFields, name);\r\n }\r\n if (type) {\r\n attachEventListeners(isRadioOrCheckbox && field.options\r\n ? field.options[field.options.length - 1]\r\n : field, isRadioOrCheckbox || isSelectInput(ref), handleChangeRef.current);\r\n }\r\n }\r\n function register(refOrRegisterOptions, options) {\r\n if (!isWindowUndefined) {\r\n if (isString(refOrRegisterOptions)) {\r\n registerFieldRef({ name: refOrRegisterOptions }, options);\r\n }\r\n else if (isObject(refOrRegisterOptions) &&\r\n 'name' in refOrRegisterOptions) {\r\n registerFieldRef(refOrRegisterOptions, options);\r\n }\r\n else {\r\n return (ref) => ref && registerFieldRef(ref, refOrRegisterOptions);\r\n }\r\n }\r\n }\r\n const handleSubmit = useCallback((onValid, onInvalid) => async (e) => {\r\n if (e && e.preventDefault) {\r\n e.preventDefault();\r\n e.persist();\r\n }\r\n let fieldErrors = {};\r\n let fieldValues = setFieldArrayDefaultValues(getFieldsValues(fieldsRef, cloneObject(shallowFieldsStateRef.current), shouldUnregister, true));\r\n readFormStateRef.current.isSubmitting &&\r\n updateFormState({\r\n isSubmitting: true,\r\n });\r\n try {\r\n if (resolverRef.current) {\r\n const { errors, values } = await resolverRef.current(fieldValues, contextRef.current, isValidateAllFieldCriteria);\r\n formStateRef.current.errors = fieldErrors = errors;\r\n fieldValues = values;\r\n }\r\n else {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field) {\r\n const { name } = field.ref;\r\n const fieldError = await validateField(fieldsRef, isValidateAllFieldCriteria, field, shallowFieldsStateRef);\r\n if (fieldError[name]) {\r\n set(fieldErrors, name, fieldError[name]);\r\n unset(validFieldsRef.current, name);\r\n }\r\n else if (get(fieldsWithValidationRef.current, name)) {\r\n unset(formStateRef.current.errors, name);\r\n set(validFieldsRef.current, name, true);\r\n }\r\n }\r\n }\r\n }\r\n if (isEmptyObject(fieldErrors) &&\r\n Object.keys(formStateRef.current.errors).every((name) => name in fieldsRef.current)) {\r\n updateFormState({\r\n errors: {},\r\n isSubmitting: true,\r\n });\r\n await onValid(fieldValues, e);\r\n }\r\n else {\r\n formStateRef.current.errors = Object.assign(Object.assign({}, formStateRef.current.errors), fieldErrors);\r\n onInvalid && (await onInvalid(formStateRef.current.errors, e));\r\n shouldFocusError &&\r\n focusOnErrorField(fieldsRef.current, formStateRef.current.errors);\r\n }\r\n }\r\n finally {\r\n formStateRef.current.isSubmitting = false;\r\n updateFormState({\r\n isSubmitted: true,\r\n isSubmitting: false,\r\n isSubmitSuccessful: isEmptyObject(formStateRef.current.errors),\r\n submitCount: formStateRef.current.submitCount + 1,\r\n });\r\n }\r\n }, [shouldFocusError, isValidateAllFieldCriteria]);\r\n const resetRefs = ({ errors, isDirty, isSubmitted, touched, isValid, submitCount, dirtyFields, }) => {\r\n if (!isValid) {\r\n validFieldsRef.current = {};\r\n fieldsWithValidationRef.current = {};\r\n }\r\n fieldArrayDefaultValuesRef.current = {};\r\n watchFieldsRef.current = new Set();\r\n isWatchAllRef.current = false;\r\n updateFormState({\r\n submitCount: submitCount ? formStateRef.current.submitCount : 0,\r\n isDirty: isDirty ? formStateRef.current.isDirty : false,\r\n isSubmitted: isSubmitted ? formStateRef.current.isSubmitted : false,\r\n isValid: isValid ? formStateRef.current.isValid : false,\r\n dirtyFields: dirtyFields ? formStateRef.current.dirtyFields : {},\r\n touched: touched ? formStateRef.current.touched : {},\r\n errors: errors ? formStateRef.current.errors : {},\r\n isSubmitting: false,\r\n isSubmitSuccessful: false,\r\n });\r\n };\r\n const reset = (values, omitResetState = {}) => {\r\n if (isWeb) {\r\n for (const field of Object.values(fieldsRef.current)) {\r\n if (field) {\r\n const { ref, options } = field;\r\n const inputRef = isRadioOrCheckboxFunction(ref) && Array.isArray(options)\r\n ? options[0].ref\r\n : ref;\r\n if (isHTMLElement(inputRef)) {\r\n try {\r\n inputRef.closest('form').reset();\r\n break;\r\n }\r\n catch (_a) { }\r\n }\r\n }\r\n }\r\n }\r\n fieldsRef.current = {};\r\n defaultValuesRef.current = Object.assign({}, (values || defaultValuesRef.current));\r\n values && renderWatchedInputs('');\r\n Object.values(resetFieldArrayFunctionRef.current).forEach((resetFieldArray) => isFunction(resetFieldArray) && resetFieldArray());\r\n shallowFieldsStateRef.current = shouldUnregister\r\n ? {}\r\n : cloneObject(values || defaultValuesRef.current);\r\n resetRefs(omitResetState);\r\n };\r\n useEffect(() => {\r\n resolver && readFormStateRef.current.isValid && validateResolver();\r\n observerRef.current =\r\n observerRef.current || !isWeb\r\n ? observerRef.current\r\n : onDomRemove(fieldsRef, removeFieldEventListenerAndRef);\r\n }, [removeFieldEventListenerAndRef, defaultValuesRef.current]);\r\n useEffect(() => () => {\r\n observerRef.current && observerRef.current.disconnect();\r\n isUnMount.current = true;\r\n if (process.env.NODE_ENV !== 'production') {\r\n return;\r\n }\r\n Object.values(fieldsRef.current).forEach((field) => removeFieldEventListenerAndRef(field, true));\r\n }, []);\r\n if (!resolver && readFormStateRef.current.isValid) {\r\n formState.isValid =\r\n deepEqual(validFieldsRef.current, fieldsWithValidationRef.current) &&\r\n isEmptyObject(formStateRef.current.errors);\r\n }\r\n const commonProps = {\r\n trigger,\r\n setValue: useCallback(setValue, [setInternalValue, trigger]),\r\n getValues: useCallback(getValues, []),\r\n register: useCallback(register, [defaultValuesRef.current]),\r\n unregister: useCallback(unregister, []),\r\n formState: isProxyEnabled\r\n ? new Proxy(formState, {\r\n get: (obj, prop) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (prop === 'isValid' && isOnSubmit) {\r\n console.warn('📋 `formState.isValid` is applicable with `onTouched`, `onChange` or `onBlur` mode. https://react-hook-form.com/api#formState');\r\n }\r\n }\r\n if (prop in obj) {\r\n readFormStateRef.current[prop] = true;\r\n return obj[prop];\r\n }\r\n return undefined;\r\n },\r\n })\r\n : formState,\r\n };\r\n const control = useMemo(() => (Object.assign({ isFormDirty,\r\n updateWatchedValue,\r\n shouldUnregister,\r\n updateFormState,\r\n removeFieldEventListener,\r\n watchInternal, mode: modeRef.current, reValidateMode: {\r\n isReValidateOnBlur,\r\n isReValidateOnChange,\r\n }, validateResolver: resolver ? validateResolver : undefined, fieldsRef,\r\n resetFieldArrayFunctionRef,\r\n useWatchFieldsRef,\r\n useWatchRenderFunctionsRef,\r\n fieldArrayDefaultValuesRef,\r\n validFieldsRef,\r\n fieldsWithValidationRef,\r\n fieldArrayNamesRef,\r\n readFormStateRef,\r\n formStateRef,\r\n defaultValuesRef,\r\n shallowFieldsStateRef,\r\n fieldArrayValuesRef }, commonProps)), [\r\n defaultValuesRef.current,\r\n updateWatchedValue,\r\n shouldUnregister,\r\n removeFieldEventListener,\r\n watchInternal,\r\n ]);\r\n return Object.assign({ watch,\r\n control,\r\n handleSubmit, reset: useCallback(reset, []), clearErrors: useCallback(clearErrors, []), setError: useCallback(setError, []), errors: formState.errors }, commonProps);\r\n}\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\n\nconst FormContext = createContext(null);\r\nFormContext.displayName = 'RHFContext';\r\nconst useFormContext = () => useContext(FormContext);\r\nconst FormProvider = (_a) => {\r\n var { children } = _a, props = __rest(_a, [\"children\"]);\r\n return (createElement(FormContext.Provider, { value: Object.assign({}, props) }, children));\r\n};\n\nvar generateId = () => {\r\n const d = typeof performance === UNDEFINED ? Date.now() : performance.now() * 1000;\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\r\n const r = (Math.random() * 16 + d) % 16 | 0;\r\n return (c == 'x' ? r : (r & 0x3) | 0x8).toString(16);\r\n });\r\n};\n\nfunction removeAtIndexes(data, indexes) {\r\n let i = 0;\r\n const temp = [...data];\r\n for (const index of indexes) {\r\n temp.splice(index - i, 1);\r\n i++;\r\n }\r\n return compact(temp).length ? temp : [];\r\n}\r\nvar removeArrayAt = (data, index) => isUndefined(index)\r\n ? []\r\n : removeAtIndexes(data, (Array.isArray(index) ? index : [index]).sort((a, b) => a - b));\n\nvar moveArrayAt = (data, from, to) => {\r\n if (Array.isArray(data)) {\r\n if (isUndefined(data[to])) {\r\n data[to] = undefined;\r\n }\r\n data.splice(to, 0, data.splice(from, 1)[0]);\r\n return data;\r\n }\r\n return [];\r\n};\n\nvar swapArrayAt = (data, indexA, indexB) => {\r\n const temp = [data[indexB], data[indexA]];\r\n data[indexA] = temp[0];\r\n data[indexB] = temp[1];\r\n};\n\nfunction prepend(data, value) {\r\n return [...(Array.isArray(value) ? value : [value || undefined]), ...data];\r\n}\n\nfunction insert(data, index, value) {\r\n return [\r\n ...data.slice(0, index),\r\n ...(Array.isArray(value) ? value : [value || undefined]),\r\n ...data.slice(index),\r\n ];\r\n}\n\nvar fillEmptyArray = (value) => Array.isArray(value) ? Array(value.length).fill(undefined) : undefined;\n\nvar fillBooleanArray = (value) => (Array.isArray(value) ? value : [value]).map((data) => {\r\n if (isObject(data)) {\r\n const object = {};\r\n for (const key in data) {\r\n object[key] = true;\r\n }\r\n return object;\r\n }\r\n return true;\r\n});\n\nconst mapIds = (values = [], keyName, skipWarn) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!skipWarn) {\r\n for (const value of values) {\r\n if (typeof value === 'object') {\r\n if (keyName in value) {\r\n console.warn(`📋 useFieldArray fieldValues contain the keyName \\`${keyName}\\` which is reserved for use by useFieldArray. https://react-hook-form.com/api#useFieldArray`);\r\n break;\r\n }\r\n }\r\n else {\r\n console.warn(`📋 useFieldArray input's name should be in object shape instead of flat array. https://react-hook-form.com/api#useFieldArray`);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n return values.map((value) => (Object.assign({ [keyName]: value[keyName] || generateId() }, value)));\r\n};\r\nconst useFieldArray = ({ control, name, keyName = 'id', }) => {\r\n const methods = useFormContext();\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!control && !methods) {\r\n throw new Error('📋 useFieldArray is missing `control` prop. https://react-hook-form.com/api#useFieldArray');\r\n }\r\n }\r\n const focusIndexRef = useRef(-1);\r\n const isUnMount = useRef(false);\r\n const { isFormDirty, updateWatchedValue, resetFieldArrayFunctionRef, fieldArrayNamesRef, fieldsRef, defaultValuesRef, removeFieldEventListener, formStateRef, shallowFieldsStateRef, updateFormState, readFormStateRef, validFieldsRef, fieldsWithValidationRef, fieldArrayDefaultValuesRef, validateResolver, getValues, shouldUnregister, fieldArrayValuesRef, } = control || methods.control;\r\n const getDefaultValues = (values) => get(shouldUnregister ? values : shallowFieldsStateRef.current, name, []);\r\n const fieldArrayParentName = getFieldArrayParentName(name);\r\n const memoizedDefaultValues = useRef([\r\n ...(get(fieldArrayDefaultValuesRef.current, fieldArrayParentName)\r\n ? getDefaultValues(fieldArrayDefaultValuesRef.current)\r\n : getDefaultValues(defaultValuesRef.current)),\r\n ]);\r\n const [fields, setFields] = useState(mapIds(memoizedDefaultValues.current, keyName));\r\n set(fieldArrayValuesRef.current, name, compact(fields));\r\n const omitKey = (fields) => fields.map((_a = {}) => {\r\n var _b = keyName, omitted = _a[_b], rest = __rest(_a, [typeof _b === \"symbol\" ? _b : _b + \"\"]);\r\n return rest;\r\n });\r\n fieldArrayNamesRef.current.add(name);\r\n const getFieldArrayValue = useCallback(() => get(fieldArrayValuesRef.current, name, []), [name]);\r\n const getCurrentFieldsValues = () => mapIds(get(getValues(), name, getFieldArrayValue()).map((item, index) => (Object.assign(Object.assign({}, getFieldArrayValue()[index]), item))), keyName, true);\r\n fieldArrayNamesRef.current.add(name);\r\n if (fieldArrayParentName &&\r\n !get(fieldArrayDefaultValuesRef.current, fieldArrayParentName)) {\r\n set(fieldArrayDefaultValuesRef.current, fieldArrayParentName, cloneObject(get(defaultValuesRef.current, fieldArrayParentName)));\r\n }\r\n const setFieldAndValidState = (fieldsValues) => {\r\n setFields(fieldsValues);\r\n set(fieldArrayValuesRef.current, name, fieldsValues);\r\n if (readFormStateRef.current.isValid && validateResolver) {\r\n const values = getValues();\r\n set(values, name, fieldsValues);\r\n validateResolver(values);\r\n }\r\n };\r\n const resetFields = () => {\r\n for (const key in fieldsRef.current) {\r\n if (isMatchFieldArrayName(key, name)) {\r\n removeFieldEventListener(fieldsRef.current[key], true);\r\n delete fieldsRef.current[key];\r\n }\r\n }\r\n };\r\n const cleanup = (ref) => !compact(get(ref, name, [])).length && unset(ref, name);\r\n const updateDirtyFieldsWithDefaultValues = (updatedFieldArrayValues) => {\r\n if (updatedFieldArrayValues) {\r\n set(formStateRef.current.dirtyFields, name, setFieldArrayDirtyFields(omitKey(updatedFieldArrayValues), get(defaultValuesRef.current, name, []), get(formStateRef.current.dirtyFields, name, [])));\r\n }\r\n };\r\n const batchStateUpdate = (method, args, updatedFieldValues, updatedFormValues = [], shouldSet = true, shouldUpdateValid = false) => {\r\n if (get(shallowFieldsStateRef.current, name)) {\r\n const output = method(get(shallowFieldsStateRef.current, name), args.argA, args.argB);\r\n shouldSet && set(shallowFieldsStateRef.current, name, output);\r\n }\r\n if (get(fieldArrayDefaultValuesRef.current, name)) {\r\n const output = method(get(fieldArrayDefaultValuesRef.current, name), args.argA, args.argB);\r\n shouldSet && set(fieldArrayDefaultValuesRef.current, name, output);\r\n }\r\n if (Array.isArray(get(formStateRef.current.errors, name))) {\r\n const output = method(get(formStateRef.current.errors, name), args.argA, args.argB);\r\n shouldSet && set(formStateRef.current.errors, name, output);\r\n cleanup(formStateRef.current.errors);\r\n }\r\n if (readFormStateRef.current.touched &&\r\n get(formStateRef.current.touched, name)) {\r\n const output = method(get(formStateRef.current.touched, name), args.argA, args.argB);\r\n shouldSet && set(formStateRef.current.touched, name, output);\r\n cleanup(formStateRef.current.touched);\r\n }\r\n if (readFormStateRef.current.dirtyFields ||\r\n readFormStateRef.current.isDirty) {\r\n set(formStateRef.current.dirtyFields, name, setFieldArrayDirtyFields(omitKey(updatedFormValues), get(defaultValuesRef.current, name, []), get(formStateRef.current.dirtyFields, name, [])));\r\n updateDirtyFieldsWithDefaultValues(updatedFieldValues);\r\n cleanup(formStateRef.current.dirtyFields);\r\n }\r\n if (shouldUpdateValid &&\r\n readFormStateRef.current.isValid &&\r\n !validateResolver) {\r\n set(validFieldsRef.current, name, method(get(validFieldsRef.current, name, []), args.argA));\r\n cleanup(validFieldsRef.current);\r\n set(fieldsWithValidationRef.current, name, method(get(fieldsWithValidationRef.current, name, []), args.argA));\r\n cleanup(fieldsWithValidationRef.current);\r\n }\r\n if (!isUnMount.current && readFormStateRef.current.isDirty) {\r\n updateFormState({\r\n isDirty: isFormDirty(name, omitKey(updatedFormValues)),\r\n });\r\n }\r\n };\r\n const append = (value, shouldFocus = true) => {\r\n const appendValue = Array.isArray(value) ? value : [value];\r\n const updateFormValues = [\r\n ...getCurrentFieldsValues(),\r\n ...mapIds(appendValue, keyName),\r\n ];\r\n setFieldAndValidState(updateFormValues);\r\n if (readFormStateRef.current.dirtyFields ||\r\n readFormStateRef.current.isDirty) {\r\n updateDirtyFieldsWithDefaultValues(updateFormValues);\r\n updateFormState({\r\n isDirty: true,\r\n dirtyFields: formStateRef.current.dirtyFields,\r\n });\r\n }\r\n !shouldUnregister &&\r\n set(shallowFieldsStateRef.current, name, [\r\n ...(get(shallowFieldsStateRef.current, name) || []),\r\n ...cloneObject(appendValue),\r\n ]);\r\n focusIndexRef.current = shouldFocus\r\n ? get(fieldArrayValuesRef.current, name).length - 1\r\n : -1;\r\n };\r\n const prepend$1 = (value, shouldFocus = true) => {\r\n const emptyArray = fillEmptyArray(value);\r\n const updatedFieldArrayValues = prepend(getCurrentFieldsValues(), mapIds(Array.isArray(value) ? value : [value], keyName));\r\n setFieldAndValidState(updatedFieldArrayValues);\r\n resetFields();\r\n batchStateUpdate(prepend, {\r\n argA: emptyArray,\r\n argC: fillBooleanArray(value),\r\n }, updatedFieldArrayValues);\r\n focusIndexRef.current = shouldFocus ? 0 : -1;\r\n };\r\n const remove = (index) => {\r\n const fieldValues = getCurrentFieldsValues();\r\n const updatedFieldValues = removeArrayAt(fieldValues, index);\r\n setFieldAndValidState(updatedFieldValues);\r\n resetFields();\r\n batchStateUpdate(removeArrayAt, {\r\n argA: index,\r\n argC: index,\r\n }, updatedFieldValues, removeArrayAt(fieldValues, index), true, true);\r\n };\r\n const insert$1 = (index, value, shouldFocus = true) => {\r\n const emptyArray = fillEmptyArray(value);\r\n const fieldValues = getCurrentFieldsValues();\r\n const updatedFieldArrayValues = insert(fieldValues, index, mapIds(Array.isArray(value) ? value : [value], keyName));\r\n setFieldAndValidState(updatedFieldArrayValues);\r\n resetFields();\r\n batchStateUpdate(insert, {\r\n argA: index,\r\n argB: emptyArray,\r\n argC: index,\r\n argD: fillBooleanArray(value),\r\n }, updatedFieldArrayValues, insert(fieldValues, index));\r\n focusIndexRef.current = shouldFocus ? index : -1;\r\n };\r\n const swap = (indexA, indexB) => {\r\n const fieldValues = getCurrentFieldsValues();\r\n swapArrayAt(fieldValues, indexA, indexB);\r\n resetFields();\r\n setFieldAndValidState([...fieldValues]);\r\n batchStateUpdate(swapArrayAt, {\r\n argA: indexA,\r\n argB: indexB,\r\n argC: indexA,\r\n argD: indexB,\r\n }, undefined, fieldValues, false);\r\n };\r\n const move = (from, to) => {\r\n const fieldValues = getCurrentFieldsValues();\r\n moveArrayAt(fieldValues, from, to);\r\n resetFields();\r\n setFieldAndValidState([...fieldValues]);\r\n batchStateUpdate(moveArrayAt, {\r\n argA: from,\r\n argB: to,\r\n argC: from,\r\n argD: to,\r\n }, undefined, fieldValues, false);\r\n };\r\n useEffect(() => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!name) {\r\n console.warn('📋 useFieldArray is missing `name` attribute. https://react-hook-form.com/api#useFieldArray');\r\n }\r\n }\r\n const defaultValues = get(fieldArrayDefaultValuesRef.current, name);\r\n if (defaultValues && fields.length < defaultValues.length) {\r\n set(fieldArrayDefaultValuesRef.current, name, defaultValues.slice(1));\r\n }\r\n updateWatchedValue(name);\r\n if (focusIndexRef.current > -1) {\r\n for (const key in fieldsRef.current) {\r\n const field = fieldsRef.current[key];\r\n if (key.startsWith(`${name}[${focusIndexRef.current}]`) &&\r\n field.ref.focus) {\r\n field.ref.focus();\r\n break;\r\n }\r\n }\r\n }\r\n focusIndexRef.current = -1;\r\n }, [fields, name]);\r\n useEffect(() => {\r\n const resetFunctions = resetFieldArrayFunctionRef.current;\r\n const fieldArrayNames = fieldArrayNamesRef.current;\r\n if (!getFieldArrayParentName(name)) {\r\n resetFunctions[name] = (data) => {\r\n resetFields();\r\n !data && unset(fieldArrayDefaultValuesRef.current, name);\r\n unset(shallowFieldsStateRef.current, name);\r\n memoizedDefaultValues.current = get(data || defaultValuesRef.current, name);\r\n if (!isUnMount.current) {\r\n setFields(mapIds(memoizedDefaultValues.current, keyName));\r\n }\r\n };\r\n }\r\n return () => {\r\n isUnMount.current = true;\r\n shouldUnregister && remove();\r\n resetFields();\r\n delete resetFunctions[name];\r\n unset(fieldArrayValuesRef.current, name);\r\n fieldArrayNames.delete(name);\r\n };\r\n }, []);\r\n return {\r\n swap: useCallback(swap, [name]),\r\n move: useCallback(move, [name]),\r\n prepend: useCallback(prepend$1, [name]),\r\n append: useCallback(append, [name]),\r\n remove: useCallback(remove, [name]),\r\n insert: useCallback(insert$1, [name]),\r\n fields: compact(fields),\r\n };\r\n};\n\nvar getInputValue = (event) => isPrimitive(event) ||\r\n !isObject(event.target) ||\r\n (isObject(event.target) && !event.type)\r\n ? event\r\n : isUndefined(event.target.value)\r\n ? event.target.checked\r\n : event.target.value;\n\nfunction useController({ name, rules, defaultValue, control, onFocus, }) {\r\n const methods = useFormContext();\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!control && !methods) {\r\n throw new Error('📋 Controller is missing `control` prop. https://react-hook-form.com/api#Controller');\r\n }\r\n }\r\n const { defaultValuesRef, setValue, register, unregister, trigger, mode, reValidateMode: { isReValidateOnBlur, isReValidateOnChange }, formState, formStateRef: { current: { isSubmitted, touched, errors }, }, updateFormState, readFormStateRef, fieldsRef, fieldArrayNamesRef, shallowFieldsStateRef, } = control || methods.control;\r\n const isNotFieldArray = !isNameInFieldArray(fieldArrayNamesRef.current, name);\r\n const getInitialValue = () => !isUndefined(get(shallowFieldsStateRef.current, name)) && isNotFieldArray\r\n ? get(shallowFieldsStateRef.current, name)\r\n : isUndefined(defaultValue)\r\n ? get(defaultValuesRef.current, name)\r\n : defaultValue;\r\n const [value, setInputStateValue] = useState(getInitialValue());\r\n const valueRef = useRef(value);\r\n const ref = useRef({\r\n focus: () => null,\r\n });\r\n const onFocusRef = useRef(onFocus ||\r\n (() => {\r\n if (isFunction(ref.current.focus)) {\r\n ref.current.focus();\r\n }\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!isFunction(ref.current.focus)) {\r\n console.warn(`📋 'ref' from Controller render prop must be attached to a React component or a DOM Element whose ref provides a 'focus()' method`);\r\n }\r\n }\r\n }));\r\n const shouldValidate = useCallback((isBlurEvent) => !skipValidation(Object.assign({ isBlurEvent,\r\n isReValidateOnBlur,\r\n isReValidateOnChange,\r\n isSubmitted, isTouched: !!get(touched, name) }, mode)), [\r\n isReValidateOnBlur,\r\n isReValidateOnChange,\r\n isSubmitted,\r\n touched,\r\n name,\r\n mode,\r\n ]);\r\n const commonTask = useCallback(([event]) => {\r\n const data = getInputValue(event);\r\n setInputStateValue(data);\r\n valueRef.current = data;\r\n return data;\r\n }, []);\r\n const registerField = useCallback((shouldUpdateValue) => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!name) {\r\n return console.warn('📋 Field is missing `name` prop. https://react-hook-form.com/api#Controller');\r\n }\r\n }\r\n if (fieldsRef.current[name]) {\r\n fieldsRef.current[name] = Object.assign({ ref: fieldsRef.current[name].ref }, rules);\r\n }\r\n else {\r\n register(Object.defineProperties({\r\n name,\r\n focus: onFocusRef.current,\r\n }, {\r\n value: {\r\n set(data) {\r\n setInputStateValue(data);\r\n valueRef.current = data;\r\n },\r\n get() {\r\n return valueRef.current;\r\n },\r\n },\r\n }), rules);\r\n shouldUpdateValue = isUndefined(get(defaultValuesRef.current, name));\r\n }\r\n shouldUpdateValue &&\r\n isNotFieldArray &&\r\n setInputStateValue(getInitialValue());\r\n }, [rules, name, register]);\r\n useEffect(() => () => unregister(name), [name]);\r\n useEffect(() => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (isUndefined(value)) {\r\n console.warn(`📋 ${name} is missing in the 'defaultValue' prop of either its Controller (https://react-hook-form.com/api#Controller) or useForm (https://react-hook-form.com/api#useForm)`);\r\n }\r\n if (!isNotFieldArray && isUndefined(defaultValue)) {\r\n console.warn('📋 Controller is missing `defaultValue` prop when using `useFieldArray`. https://react-hook-form.com/api#Controller');\r\n }\r\n }\r\n registerField();\r\n }, [registerField]);\r\n useEffect(() => {\r\n !fieldsRef.current[name] && registerField(true);\r\n });\r\n const onBlur = useCallback(() => {\r\n if (readFormStateRef.current.touched && !get(touched, name)) {\r\n set(touched, name, true);\r\n updateFormState({\r\n touched,\r\n });\r\n }\r\n shouldValidate(true) && trigger(name);\r\n }, [name, updateFormState, shouldValidate, trigger, readFormStateRef]);\r\n const onChange = useCallback((...event) => setValue(name, commonTask(event), {\r\n shouldValidate: shouldValidate(),\r\n shouldDirty: true,\r\n }), [setValue, name, shouldValidate]);\r\n return {\r\n field: {\r\n onChange,\r\n onBlur,\r\n name,\r\n value,\r\n ref,\r\n },\r\n meta: Object.defineProperties({\r\n invalid: !!get(errors, name),\r\n }, {\r\n isDirty: {\r\n get() {\r\n return !!get(formState.dirtyFields, name);\r\n },\r\n },\r\n isTouched: {\r\n get() {\r\n return !!get(formState.touched, name);\r\n },\r\n },\r\n }),\r\n };\r\n}\n\nfunction useWatch({ control, name, defaultValue, }) {\r\n const methods = useFormContext();\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (!control && !methods) {\r\n throw new Error('📋 useWatch is missing `control` prop. https://react-hook-form.com/api#useWatch');\r\n }\r\n }\r\n const { useWatchFieldsRef, useWatchRenderFunctionsRef, watchInternal, defaultValuesRef, } = control || methods.control;\r\n const updateValue = useState()[1];\r\n const idRef = useRef();\r\n const defaultValueRef = useRef(defaultValue);\r\n useEffect(() => {\r\n if (process.env.NODE_ENV !== 'production') {\r\n if (name === '') {\r\n console.warn('📋 useWatch is missing `name` attribute. https://react-hook-form.com/api#useWatch');\r\n }\r\n }\r\n const id = (idRef.current = generateId());\r\n const watchFieldsHookRender = useWatchRenderFunctionsRef.current;\r\n const watchFieldsHook = useWatchFieldsRef.current;\r\n watchFieldsHook[id] = new Set();\r\n watchFieldsHookRender[id] = () => updateValue({});\r\n watchInternal(name, defaultValueRef.current, id);\r\n return () => {\r\n delete watchFieldsHook[id];\r\n delete watchFieldsHookRender[id];\r\n };\r\n }, [\r\n name,\r\n useWatchRenderFunctionsRef,\r\n useWatchFieldsRef,\r\n watchInternal,\r\n defaultValueRef,\r\n ]);\r\n return idRef.current\r\n ? watchInternal(name, defaultValueRef.current, idRef.current)\r\n : isUndefined(defaultValue)\r\n ? isString(name)\r\n ? get(defaultValuesRef.current, name)\r\n : Array.isArray(name)\r\n ? name.reduce((previous, inputName) => (Object.assign(Object.assign({}, previous), { [inputName]: get(defaultValuesRef.current, inputName) })), {})\r\n : defaultValuesRef.current\r\n : defaultValue;\r\n}\n\nconst Controller = (props) => {\r\n const { rules, as, render, defaultValue, control, onFocus } = props, rest = __rest(props, [\"rules\", \"as\", \"render\", \"defaultValue\", \"control\", \"onFocus\"]);\r\n const { field, meta } = useController(props);\r\n const componentProps = Object.assign(Object.assign({}, rest), field);\r\n return as\r\n ? isValidElement(as)\r\n ? cloneElement(as, componentProps)\r\n : createElement(as, componentProps)\r\n : render\r\n ? render(field, meta)\r\n : null;\r\n};\n\nexport { Controller, FormProvider, appendErrors, get, transformToNestObject, useController, useFieldArray, useForm, useFormContext, useWatch };\n//# sourceMappingURL=index.esm.js.map\n"],"names":["isHTMLElement","value","HTMLElement","EVENTS","VALIDATION_MODE","INPUT_VALIDATION_RULES","isNullOrUndefined","isObjectType","isObject","Array","isArray","Date","isKey","test","compact","filter","Boolean","stringToPath","input","replace","split","set","object","path","let","index","tempPath","length","lastIndex","const","key","newValue","objValue","isNaN","transformToNestObject","data","isUndefined","val","undefined","get","obj","defaultValue","result","reduce","removeAllEventListeners","ref","validateWithStateUpdate","removeEventListener","defaultReturn","isValid","getRadioValue","options","previous","option","checked","isRadioInput","element","type","isFileInput","isCheckBoxInput","isMultipleSelect","defaultResult","validResult","getCheckboxValue","values","map","attributes","getFieldValue","fieldsRef","name","shallowFieldsStateRef","excludeDisabled","shouldKeepRawValue","field","current","disabled","files","valueAsNumber","NaN","valueAsDate","setValueAs","isDetached","nodeType","Node","DOCUMENT_NODE","parentNode","isEmptyObject","Object","keys","isBoolean","unset","previousObjRef","updatePath","childObject","slice","baseGet","k","objectRef","currentPaths","currentPathsLength","item","isSameRef","fieldValue","isPrimitive","deepMerge","target","source","targetValue","sourceValue","_a","deepEqual","object1","object2","isErrorObject","isValidElement","keys1","keys2","val1","val2","setDirtyFields","defaultValues","dirtyFields","parentName","assign","isString","getFieldsValues","shallowFieldsState","shouldUnregister","search","output","startsWith","find","isRegex","RegExp","getValueAndMessage","validationData","message","isFunction","isMessage","getValidateError","appendErrors","validateAllFieldCriteria","errors","types","validateField","async","error","isRadio","isCheckBox","isRadioOrCheckbox","isEmpty","appendErrorsCurry","bind","getMinMaxMessage","exceedMax","maxLengthMessage","minLengthMessage","maxType","minType","required","min","max","exceedMin","maxOutput","minOutput","valueDate","valueNumber","parseFloat","maxLength","minLength","maxLengthOutput","minLengthOutput","pattern","patternValue","validate","validateRef","validateError","validationResult","entries","validateFunction","getPath","rootPath","paths","property","rootName","push","assignWatchFields","fieldValues","fieldName","watchFields","inputValue","isSingleField","add","forEach","getFieldArrayParentName","substring","indexOf","isNameInFieldArray","names","some","searchName","isMatchFieldArrayName","isWeb","window","document","cloneObject","copy","File","includes","constructor","getTime","Set","Map","modeChecker","mode","isOnSubmit","isOnBlur","isOnChange","isOnAll","isOnTouch","isRadioOrCheckboxFunction","isWindowUndefined","isProxyEnabled","Proxy","useForm","useRef","fieldArrayDefaultValuesRef","fieldArrayValuesRef","watchFieldsRef","useWatchFieldsRef","useWatchRenderFunctionsRef","fieldsWithValidationRef","validFieldsRef","defaultValuesRef","isUnMount","isWatchAllRef","handleChangeRef","resetFieldArrayFunctionRef","contextRef","context","resolverRef","resolver","fieldArrayNamesRef","modeRef","isValidateAllFieldCriteria","criteriaMode","useState","isDirty","isValidating","isSubmitted","submitCount","touched","isSubmitting","isSubmitSuccessful","readFormStateRef","formStateRef","formState","observerRef","reValidateMode","updateFormState","useCallback","state","setFormState","updateIsValidating","shouldRenderBaseOnError","shouldRender","shouldReRender","previousError","fieldsWithValidation","validFields","isErrorStateChanged","setFieldValue","rawValue","radioRef","selectRef","selected","checkboxRef","isFormDirty","formValues","getValues","updateAndGetDirtyState","isFieldDirty","isDirtyFieldExist","previousIsDirty","isChanged","executeValidation","skipReRender","process","env","NODE_ENV","console","warn","executeSchemaOrResolverValidation","previousFormIsValid","isInputsValid","every","trigger","fields","Promise","all","setInternalValues","shouldDirty","shouldValidate","setInternalValue","config","has","setFieldArrayDirtyFields","isFieldWatched","match","renderWatchedInputs","found","size","setFieldArrayDefaultValues","payload","isBlurEvent","shouldSkipValidation","isTouched","isReValidateOnBlur","isReValidateOnChange","skipValidation","parentNodeName","currentError","validateResolver","newDefaultValues","removeFieldEventListener","forceDelete","handleChange","fieldRef","findRemovedFieldAndRemoveListener","updateWatchedValue","removeFieldEventListenerAndRef","watchInternal","fieldNames","watchId","combinedDefaultValues","registerFieldRef","fieldRefAndValidationOptions","isFieldArray","compareRef","currentRef","isEmptyDefaultValue","isEmptyUnmountFields","then","shouldAttachChangeEvent","addEventListener","attachEventListeners","handleSubmit","onValid","onInvalid","e","preventDefault","persist","fieldErrors","fieldError","shouldFocusError","focus","focusOnErrorField","useEffect","observer","MutationObserver","observe","childList","subtree","onDomRemove","disconnect","commonProps","setValue","register","refOrRegisterOptions","unregister","prop","control","useMemo","reset","omitResetState","inputRef","closest","resetFieldArray","resetRefs","clearErrors","inputName","setError","shouldFocus","createContext","displayName"],"mappings":"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"}
@@ -1,26 +0,0 @@
1
- import React from 'react';
2
- export interface FormGroupProps {
3
- /** title for the the fieldset */
4
- title?: string;
5
- /** text placed in the legend tag of the fieldset */
6
- legend?: string;
7
- /** Items in the ExpanderList */
8
- children?: React.ReactNode;
9
- /** Adds custom classes to the element. */
10
- className?: string;
11
- /** Changes the visuals of the formgroup */
12
- mode?: FormMode;
13
- /** Changes the visuals of the formgroup */
14
- variant?: FormVariant;
15
- /** Error message */
16
- error?: string;
17
- /** Sets the data-testid attribute. */
18
- testId?: string;
19
- }
20
- export declare type FormVariant = 'normal' | 'bigform';
21
- export declare type FormMode = 'on-white' | 'on-blueberry' | 'on-dark';
22
- export declare const allFormVariants: FormVariant[];
23
- export declare const allFormModes: FormMode[];
24
- export declare const FormGroup: React.ForwardRefExoticComponent<FormGroupProps & React.RefAttributes<HTMLElement>>;
25
- export default FormGroup;
26
- //# sourceMappingURL=FormGroup.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormGroup.d.ts","sourceRoot":"","sources":["../../../src/components/FormGroup/FormGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAS1B,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,oBAAY,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAC/C,oBAAY,QAAQ,GAAG,UAAU,GAAG,cAAc,GAAG,SAAS,CAAC;AAE/D,eAAO,MAAM,eAAe,EAAE,WAAW,EAA0B,CAAC;AACpE,eAAO,MAAM,YAAY,EAAE,QAAQ,EAA4C,CAAC;AAEhF,eAAO,MAAM,SAAS,oFAkDpB,CAAC;AAEH,eAAe,SAAS,CAAC"}
@@ -1,183 +0,0 @@
1
- {
2
- "props": {
3
- "title": {
4
- "defaultValue": null,
5
- "description": "title for the the fieldset",
6
- "name": "title",
7
- "parent": {
8
- "fileName": "src/components/FormGroup/FormGroup.tsx",
9
- "name": "FormGroupProps"
10
- },
11
- "declarations": [
12
- {
13
- "fileName": "src/components/FormGroup/FormGroup.tsx",
14
- "name": "FormGroupProps"
15
- }
16
- ],
17
- "required": false,
18
- "type": {
19
- "name": "string"
20
- }
21
- },
22
- "legend": {
23
- "defaultValue": null,
24
- "description": "text placed in the legend tag of the fieldset",
25
- "name": "legend",
26
- "parent": {
27
- "fileName": "src/components/FormGroup/FormGroup.tsx",
28
- "name": "FormGroupProps"
29
- },
30
- "declarations": [
31
- {
32
- "fileName": "src/components/FormGroup/FormGroup.tsx",
33
- "name": "FormGroupProps"
34
- }
35
- ],
36
- "required": false,
37
- "type": {
38
- "name": "string"
39
- }
40
- },
41
- "children": {
42
- "defaultValue": null,
43
- "description": "Items in the ExpanderList",
44
- "name": "children",
45
- "parent": {
46
- "fileName": "src/components/FormGroup/FormGroup.tsx",
47
- "name": "FormGroupProps"
48
- },
49
- "declarations": [
50
- {
51
- "fileName": "src/components/FormGroup/FormGroup.tsx",
52
- "name": "FormGroupProps"
53
- }
54
- ],
55
- "required": false,
56
- "type": {
57
- "name": "ReactNode"
58
- }
59
- },
60
- "className": {
61
- "defaultValue": null,
62
- "description": "Adds custom classes to the element.",
63
- "name": "className",
64
- "parent": {
65
- "fileName": "src/components/FormGroup/FormGroup.tsx",
66
- "name": "FormGroupProps"
67
- },
68
- "declarations": [
69
- {
70
- "fileName": "src/components/FormGroup/FormGroup.tsx",
71
- "name": "FormGroupProps"
72
- }
73
- ],
74
- "required": false,
75
- "type": {
76
- "name": "string"
77
- }
78
- },
79
- "mode": {
80
- "defaultValue": null,
81
- "description": "Changes the visuals of the formgroup",
82
- "name": "mode",
83
- "parent": {
84
- "fileName": "src/components/FormGroup/FormGroup.tsx",
85
- "name": "FormGroupProps"
86
- },
87
- "declarations": [
88
- {
89
- "fileName": "src/components/FormGroup/FormGroup.tsx",
90
- "name": "FormGroupProps"
91
- }
92
- ],
93
- "required": false,
94
- "type": {
95
- "name": "enum",
96
- "raw": "\"on-white\" | \"on-blueberry\" | \"on-dark\" | undefined",
97
- "value": [
98
- {
99
- "value": "undefined"
100
- },
101
- {
102
- "value": "\"on-white\""
103
- },
104
- {
105
- "value": "\"on-blueberry\""
106
- },
107
- {
108
- "value": "\"on-dark\""
109
- }
110
- ]
111
- }
112
- },
113
- "variant": {
114
- "defaultValue": null,
115
- "description": "Changes the visuals of the formgroup",
116
- "name": "variant",
117
- "parent": {
118
- "fileName": "src/components/FormGroup/FormGroup.tsx",
119
- "name": "FormGroupProps"
120
- },
121
- "declarations": [
122
- {
123
- "fileName": "src/components/FormGroup/FormGroup.tsx",
124
- "name": "FormGroupProps"
125
- }
126
- ],
127
- "required": false,
128
- "type": {
129
- "name": "enum",
130
- "raw": "\"normal\" | \"bigform\" | undefined",
131
- "value": [
132
- {
133
- "value": "undefined"
134
- },
135
- {
136
- "value": "\"normal\""
137
- },
138
- {
139
- "value": "\"bigform\""
140
- }
141
- ]
142
- }
143
- },
144
- "error": {
145
- "defaultValue": null,
146
- "description": "Error message",
147
- "name": "error",
148
- "parent": {
149
- "fileName": "src/components/FormGroup/FormGroup.tsx",
150
- "name": "FormGroupProps"
151
- },
152
- "declarations": [
153
- {
154
- "fileName": "src/components/FormGroup/FormGroup.tsx",
155
- "name": "FormGroupProps"
156
- }
157
- ],
158
- "required": false,
159
- "type": {
160
- "name": "string"
161
- }
162
- },
163
- "testId": {
164
- "defaultValue": null,
165
- "description": "Sets the data-testid attribute.",
166
- "name": "testId",
167
- "parent": {
168
- "fileName": "src/components/FormGroup/FormGroup.tsx",
169
- "name": "FormGroupProps"
170
- },
171
- "declarations": [
172
- {
173
- "fileName": "src/components/FormGroup/FormGroup.tsx",
174
- "name": "FormGroupProps"
175
- }
176
- ],
177
- "required": false,
178
- "type": {
179
- "name": "string"
180
- }
181
- }
182
- }
183
- }
@@ -1,3 +0,0 @@
1
- import FormGroup from './FormGroup';
2
- export default FormGroup;
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/FormGroup/index.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,aAAa,CAAC;AACpC,eAAe,SAAS,CAAC"}
@@ -1,2 +0,0 @@
1
- import{F as s}from"../../FormGroup-17d2a3d3.js";export{F as default}from"../../FormGroup-17d2a3d3.js";import"../../_rollupPluginBabelHelpers-e1c7fe69.js";import"react";import"../../index-9b84fabc.js";import"./styles.module.scss";import"../../Checkbox-ffdd3cb7.js";import"../../uuid-484288be.js";import"../../Check-6291ad09.js";import"../../constants-d1f48e8e.js";import"../../_tslib-51c8a283.js";import"../../color-acb834c6.js";import"../../index-19b48c51.js";import"../../palette-f206f488.js";import"../../grid-11a70eb7.js";import"../Checkbox/styles.module.scss";import"../../Title-863af332.js";import"../Title/styles.module.scss";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,79 +0,0 @@
1
- @import '../../scss/_spacers.scss';
2
- @import '../../scss/_breakpoints.scss';
3
- @import '../../scss/_palette.scss';
4
- @import '../../scss/font-settings.scss';
5
-
6
- .form-group-wrapper {
7
- padding: getSpacer(s) getSpacer(xs) getSpacer(m);
8
-
9
- @media (min-width: map-get($grid-breakpoints, md)) {
10
- padding: getSpacer(s) getSpacer(m) getSpacer(l);
11
- }
12
-
13
- &--bigform {
14
- background-color: $neutral50;
15
- }
16
-
17
- &--on-blueberry {
18
- background-color: $blueberry50;
19
- }
20
-
21
- &--on-dark {
22
- background-color: $blueberry800;
23
- }
24
-
25
- &--invalid {
26
- background-color: $cherry50;
27
- border-left: 0.25rem solid $cherry500;
28
- }
29
-
30
- &__title {
31
- margin-bottom: getSpacer(l) !important;
32
-
33
- &--on-dark {
34
- color: $white;
35
- }
36
-
37
- &--bigform {
38
- margin-left: getSpacer(l) !important;
39
- }
40
- }
41
-
42
- &__errors {
43
- font-size: $font-size-sm;
44
- font-weight: 600;
45
- color: $cherry500;
46
- margin-top: 0;
47
-
48
- &--bigform {
49
- margin-left: getSpacer(l);
50
- }
51
- }
52
- }
53
-
54
- .form-group-wrapper:first-of-type {
55
- padding-top: getSpacer(xl);
56
- }
57
-
58
- .form-group-wrapper:last-of-type {
59
- padding-bottom: getSpacer(xl);
60
- }
61
-
62
- .form-group {
63
- border: none;
64
- padding: 0;
65
- margin: 0;
66
-
67
- &__legend {
68
- font-size: $font-size-md;
69
- font-weight: 600;
70
-
71
- &--on-dark {
72
- color: $white;
73
- }
74
-
75
- &--bigform {
76
- padding: 0 getSpacer(l) getSpacer(l);
77
- }
78
- }
79
- }
@@ -1,22 +0,0 @@
1
- export type Styles = {
2
- 'form-group': string;
3
- 'form-group__legend': string;
4
- 'form-group__legend--bigform': string;
5
- 'form-group__legend--on-dark': string;
6
- 'form-group-wrapper': string;
7
- 'form-group-wrapper__errors': string;
8
- 'form-group-wrapper__errors--bigform': string;
9
- 'form-group-wrapper__title': string;
10
- 'form-group-wrapper__title--bigform': string;
11
- 'form-group-wrapper__title--on-dark': string;
12
- 'form-group-wrapper--bigform': string;
13
- 'form-group-wrapper--invalid': string;
14
- 'form-group-wrapper--on-blueberry': string;
15
- 'form-group-wrapper--on-dark': string;
16
- };
17
-
18
- export type ClassNames = keyof Styles;
19
-
20
- declare const styles: Styles;
21
-
22
- export default styles;
@@ -1,17 +0,0 @@
1
- import React from 'react';
2
- import { FormVariant } from '../FormGroup/FormGroup';
3
- interface ValidationProps {
4
- /** text placed in the legend tag of the fieldset */
5
- errorSummary?: string;
6
- /** Items in the ExpanderList */
7
- children?: React.ReactNode;
8
- /** Adds custom classes to the element. */
9
- className?: string;
10
- /** Changes the visuals of the formgroup */
11
- variant?: FormVariant;
12
- /** Sets the data-testid attribute. */
13
- testId?: string;
14
- }
15
- export declare const Validation: React.ForwardRefExoticComponent<ValidationProps & React.RefAttributes<HTMLElement>>;
16
- export default Validation;
17
- //# sourceMappingURL=Validation.d.ts.map