@gen-epix/ui-core-form 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/LICENSE +287 -0
  2. package/dist/@types/ui-form.d.ts +2 -0
  3. package/dist/@types/vite-env.d.ts +2 -0
  4. package/dist/@types/yup.d.ts +30 -0
  5. package/dist/_chunks/Autocomplete.js +229 -0
  6. package/dist/_chunks/Autocomplete.js.map +1 -0
  7. package/dist/_chunks/DatePicker.js +126 -0
  8. package/dist/_chunks/DatePicker.js.map +1 -0
  9. package/dist/_chunks/FormUtil.js +1350 -0
  10. package/dist/_chunks/FormUtil.js.map +1 -0
  11. package/dist/_chunks/RichTextEditor.js +22721 -0
  12. package/dist/_chunks/RichTextEditor.js.map +1 -0
  13. package/dist/_chunks/TransferList.js +453 -0
  14. package/dist/_chunks/TransferList.js.map +1 -0
  15. package/dist/_chunks/UploadButton.js +91 -0
  16. package/dist/_chunks/UploadButton.js.map +1 -0
  17. package/dist/_chunks/classnames.js +33 -0
  18. package/dist/_chunks/classnames.js.map +1 -0
  19. package/dist/_chunks/index.esm.js +348 -0
  20. package/dist/_chunks/index.esm.js.map +1 -0
  21. package/dist/_chunks/isEqual.js +348 -0
  22. package/dist/_chunks/isEqual.js.map +1 -0
  23. package/dist/_chunks/isObjectLike.js +304 -0
  24. package/dist/_chunks/isObjectLike.js.map +1 -0
  25. package/dist/_chunks/isValid.js +28 -0
  26. package/dist/_chunks/isValid.js.map +1 -0
  27. package/dist/_chunks/rolldown-runtime.js +13 -0
  28. package/dist/_chunks/sv.js +434 -0
  29. package/dist/_chunks/sv.js.map +1 -0
  30. package/dist/components/fields/Autocomplete/Autocomplete.d.ts +19 -0
  31. package/dist/components/fields/Autocomplete/AutocompleteSelectAllContext.d.ts +2 -0
  32. package/dist/components/fields/Autocomplete/AutocompleteSelectAllPaper.d.ts +2 -0
  33. package/dist/components/fields/Autocomplete/index.d.ts +1 -0
  34. package/dist/components/fields/Autocomplete/index.js +2 -0
  35. package/dist/components/fields/CheckboxGroup/CheckboxGroup.d.ts +18 -0
  36. package/dist/components/fields/CheckboxGroup/index.d.ts +1 -0
  37. package/dist/components/fields/CheckboxGroup/index.js +114 -0
  38. package/dist/components/fields/CheckboxGroup/index.js.map +1 -0
  39. package/dist/components/fields/DatePicker/DatePicker.d.ts +15 -0
  40. package/dist/components/fields/DatePicker/DatePickerInputAdornment.d.ts +8 -0
  41. package/dist/components/fields/DatePicker/index.d.ts +1 -0
  42. package/dist/components/fields/DatePicker/index.js +2 -0
  43. package/dist/components/fields/DateRangePicker/DateRangePicker.d.ts +17 -0
  44. package/dist/components/fields/DateRangePicker/index.d.ts +1 -0
  45. package/dist/components/fields/DateRangePicker/index.js +1648 -0
  46. package/dist/components/fields/DateRangePicker/index.js.map +1 -0
  47. package/dist/components/fields/NumberField/NumberField.d.ts +19 -0
  48. package/dist/components/fields/NumberField/index.d.ts +1 -0
  49. package/dist/components/fields/NumberField/index.js +180 -0
  50. package/dist/components/fields/NumberField/index.js.map +1 -0
  51. package/dist/components/fields/NumberRangeInput/NumberRangeInput.d.ts +15 -0
  52. package/dist/components/fields/NumberRangeInput/index.d.ts +1 -0
  53. package/dist/components/fields/NumberRangeInput/index.js +192 -0
  54. package/dist/components/fields/NumberRangeInput/index.js.map +1 -0
  55. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +16 -0
  56. package/dist/components/fields/RadioGroup/index.d.ts +1 -0
  57. package/dist/components/fields/RadioGroup/index.js +72 -0
  58. package/dist/components/fields/RadioGroup/index.js.map +1 -0
  59. package/dist/components/fields/RichTextEditor/RichTextEditor.d.ts +13 -0
  60. package/dist/components/fields/RichTextEditor/RichTextEditorContent.d.ts +4 -0
  61. package/dist/components/fields/RichTextEditor/index.d.ts +2 -0
  62. package/dist/components/fields/RichTextEditor/index.js +2 -0
  63. package/dist/components/fields/RichTextEditor/useRichTextEditorExtensions.d.ts +10 -0
  64. package/dist/components/fields/Select/Select.d.ts +16 -0
  65. package/dist/components/fields/Select/index.d.ts +1 -0
  66. package/dist/components/fields/Select/index.js +129 -0
  67. package/dist/components/fields/Select/index.js.map +1 -0
  68. package/dist/components/fields/Switch/Switch.d.ts +13 -0
  69. package/dist/components/fields/Switch/index.d.ts +1 -0
  70. package/dist/components/fields/Switch/index.js +68 -0
  71. package/dist/components/fields/Switch/index.js.map +1 -0
  72. package/dist/components/fields/TextField/TextField.d.ts +18 -0
  73. package/dist/components/fields/TextField/index.d.ts +1 -0
  74. package/dist/components/fields/TextField/index.js +108 -0
  75. package/dist/components/fields/TextField/index.js.map +1 -0
  76. package/dist/components/fields/ToggleButtonGroup/ToggleButtonGroup.d.ts +14 -0
  77. package/dist/components/fields/ToggleButtonGroup/index.d.ts +1 -0
  78. package/dist/components/fields/ToggleButtonGroup/index.js +57 -0
  79. package/dist/components/fields/ToggleButtonGroup/index.js.map +1 -0
  80. package/dist/components/fields/TransferList/TransferList.d.ts +16 -0
  81. package/dist/components/fields/TransferList/index.d.ts +1 -0
  82. package/dist/components/fields/TransferList/index.js +2 -0
  83. package/dist/components/fields/UploadButton/UploadButton.d.ts +15 -0
  84. package/dist/components/fields/UploadButton/index.d.ts +1 -0
  85. package/dist/components/fields/UploadButton/index.js +2 -0
  86. package/dist/components/helpers/FormFieldHelperText/FormFieldHelperText.d.ts +8 -0
  87. package/dist/components/helpers/FormFieldHelperText/index.d.ts +1 -0
  88. package/dist/components/helpers/FormFieldHelperText/index.js +50 -0
  89. package/dist/components/helpers/FormFieldHelperText/index.js.map +1 -0
  90. package/dist/components/helpers/FormFieldLoadingIndicator/FormFieldLoadingIndicator.d.ts +4 -0
  91. package/dist/components/helpers/FormFieldLoadingIndicator/index.d.ts +1 -0
  92. package/dist/components/helpers/FormFieldLoadingIndicator/index.js +16 -0
  93. package/dist/components/helpers/FormFieldLoadingIndicator/index.js.map +1 -0
  94. package/dist/components/helpers/GenericForm/GenericForm.d.ts +18 -0
  95. package/dist/components/helpers/GenericForm/index.d.ts +1 -0
  96. package/dist/components/helpers/GenericForm/index.js +156 -0
  97. package/dist/components/helpers/GenericForm/index.js.map +1 -0
  98. package/dist/hooks/useIsFormFieldRequiredFromSchema/index.d.ts +1 -0
  99. package/dist/hooks/useIsFormFieldRequiredFromSchema/index.js +18 -0
  100. package/dist/hooks/useIsFormFieldRequiredFromSchema/index.js.map +1 -0
  101. package/dist/hooks/useIsFormFieldRequiredFromSchema/useIsFormFieldRequiredFromSchema.d.ts +4 -0
  102. package/dist/locale/en.json +97 -0
  103. package/dist/locale/nl.json +97 -0
  104. package/dist/models/form.d.ts +112 -0
  105. package/dist/models/form.js +8 -0
  106. package/dist/models/form.js.map +1 -0
  107. package/dist/setup/setup.d.ts +1 -0
  108. package/dist/setup/setup.js +166 -0
  109. package/dist/setup/setup.js.map +1 -0
  110. package/dist/utils/FormUtil/FormUtil.d.ts +19 -0
  111. package/dist/utils/FormUtil/index.d.ts +1 -0
  112. package/dist/utils/FormUtil/index.js +2 -0
  113. package/dist/utils/SchemaUtil/SchemaUtil.d.ts +9 -0
  114. package/dist/utils/SchemaUtil/index.d.ts +1 -0
  115. package/dist/utils/SchemaUtil/index.js +30 -0
  116. package/dist/utils/SchemaUtil/index.js.map +1 -0
  117. package/package.json +207 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../src/components/helpers/GenericForm/GenericForm.tsx"],"sourcesContent":["import type {\n ReactElement,\n SubmitEventHandler,\n} from 'react';\nimport {\n Fragment,\n useCallback,\n useMemo,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport type {\n FieldValues,\n Path,\n UseFormReturn,\n} from 'react-hook-form';\nimport { FormProvider } from 'react-hook-form';\nimport {\n Alert,\n AlertTitle,\n Box,\n Button,\n Typography,\n} from '@mui/material';\nimport type { ObjectSchema } from 'yup';\n\nimport type {\n FormFieldDefinition,\n FormGroupDefinition,\n} from '../../../models/form';\nimport { FORM_FIELD_DEFINITION_TYPE } from '../../../models/form';\nimport { FormUtil } from '../../../utils/FormUtil';\nimport { RichTextEditor } from '../../fields/RichTextEditor';\nimport { TransferList } from '../../fields/TransferList';\nimport type { AutocompleteProps } from '../../fields/Autocomplete';\nimport { Autocomplete } from '../../fields/Autocomplete';\nimport type { SelectProps } from '../../fields/Select';\nimport { Select } from '../../fields/Select';\nimport { TextField } from '../../fields/TextField';\nimport { NumberField } from '../../fields/NumberField';\nimport { DatePicker } from '../../fields/DatePicker';\nimport { UploadButton } from '../../fields/UploadButton/UploadButton';\nimport { RadioGroup } from '../../fields/RadioGroup';\nimport { Switch } from '../../fields/Switch';\nimport { useIsFormFieldRequiredFromSchema } from '../../../hooks/useIsFormFieldRequiredFromSchema';\n\nexport type GenericFormProps<TFormFields extends FieldValues> = {\n readonly defaultFormValues?: Partial<TFormFields>;\n readonly disableAll?: boolean;\n readonly formFieldDefinitions: FormFieldDefinition<TFormFields>[];\n readonly formGroupDefinitions?: FormGroupDefinition[];\n readonly formId?: string;\n readonly formMethods: UseFormReturn<TFormFields>;\n readonly onSubmit?: SubmitEventHandler<HTMLFormElement>;\n readonly renderField?: (definition: FormFieldDefinition<TFormFields>, element: ReactElement) => ReactElement;\n readonly renderGroup?: (definition: FormGroupDefinition, children: ReactElement) => ReactElement;\n readonly schema: ObjectSchema<TFormFields, TFormFields>;\n readonly wrapForm?: (children: ReactElement) => ReactElement;\n};\n\nexport const GenericForm = <TFormFields extends FieldValues>({\n disableAll,\n formFieldDefinitions,\n formGroupDefinitions,\n formId,\n formMethods,\n onSubmit,\n renderField,\n renderGroup,\n schema,\n wrapForm,\n}: GenericFormProps<TFormFields>) => {\n const { t } = useTranslation();\n\n const booleanOptions = useMemo(() => FormUtil.createBooleanOptions(t), [t]);\n\n const isFormFieldRequired = useIsFormFieldRequiredFromSchema(schema, formMethods.getValues);\n\n const renderFormFieldDefinition = useCallback((formFieldDefinition: FormFieldDefinition<TFormFields>) => {\n switch (formFieldDefinition.definition) {\n case FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE:\n return (\n <Autocomplete\n {...formFieldDefinition as AutocompleteProps<TFormFields, Path<TFormFields>, false>}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.BOOLEAN:\n return (\n <Select\n {...formFieldDefinition}\n disabled={formFieldDefinition.disabled || disableAll}\n options={booleanOptions}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.BOOLEAN_SWITCH:\n return (\n <Switch\n {...formFieldDefinition}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.DATE:\n return (\n <DatePicker\n {...formFieldDefinition}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.FILE:\n return (\n <UploadButton\n {...formFieldDefinition}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.NUMBER:\n return (\n <NumberField\n {...formFieldDefinition}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.RADIO_GROUP:\n return (\n <RadioGroup\n {...formFieldDefinition}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.RICH_TEXT:\n return (\n <RichTextEditor\n {...formFieldDefinition}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.SELECT:\n return (\n <Select\n {...formFieldDefinition as SelectProps<TFormFields, Path<TFormFields>, false>}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.SWITCH:\n return (\n <Switch\n {...formFieldDefinition}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.TEXTFIELD:\n return (\n <TextField\n {...formFieldDefinition}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n case FORM_FIELD_DEFINITION_TYPE.TRANSFER_LIST:\n return (\n <TransferList\n {...formFieldDefinition}\n disabled={formFieldDefinition.disabled || disableAll}\n required={isFormFieldRequired(formFieldDefinition.name)}\n />\n );\n default:\n throw Error(`Unsupported form field definition: ${formFieldDefinition.definition}`);\n }\n }, [booleanOptions, disableAll, isFormFieldRequired]);\n\n\n const renderSingleField = useCallback((formFieldDefinition: FormFieldDefinition<TFormFields>) => {\n if (renderField) {\n return (\n <Fragment key={formFieldDefinition.name}>\n {renderField(formFieldDefinition, renderFormFieldDefinition(formFieldDefinition))}\n </Fragment>\n );\n }\n return (\n <Box\n key={formFieldDefinition.name}\n sx={{\n marginY: 1,\n }}\n >\n {renderFormFieldDefinition(formFieldDefinition)}\n </Box>\n );\n }, [renderField, renderFormFieldDefinition]);\n\n const formFieldsContent = useMemo(() => {\n if (!formGroupDefinitions?.length) {\n return (\n <>\n {formFieldDefinitions.map(renderSingleField)}\n </>\n );\n }\n\n const groupFieldsMap = new Map<string, FormFieldDefinition<TFormFields>[]>();\n for (const group of formGroupDefinitions) {\n groupFieldsMap.set(group.groupKey, []);\n }\n\n const ungroupedFields: FormFieldDefinition<TFormFields>[] = [];\n for (const field of formFieldDefinitions) {\n if (field.groupKey && groupFieldsMap.has(field.groupKey)) {\n groupFieldsMap.get(field.groupKey)?.push(field);\n } else {\n ungroupedFields.push(field);\n }\n }\n\n return (\n <>\n {formGroupDefinitions.map(group => {\n const groupFields = groupFieldsMap.get(group.groupKey) ?? [];\n if (!groupFields.length) {\n return null;\n }\n const groupContent = (\n <>\n {groupFields.map(renderSingleField)}\n </>\n );\n if (renderGroup) {\n return (\n <Fragment key={group.groupKey}>\n {renderGroup(group, groupContent)}\n </Fragment>\n );\n }\n return (\n <Box\n key={group.groupKey}\n sx={{ marginY: 2 }}\n >\n <Typography variant={'subtitle1'}>\n {group.label}\n </Typography>\n {group.description && (\n <Typography\n color={'text.secondary'}\n variant={'body2'}\n >\n {group.description}\n </Typography>\n )}\n {group.messages?.map((msg) => (\n <Alert\n key={msg.message}\n severity={msg.severity}\n sx={{ '& .MuiAlert-message': { width: '100%' } }}\n >\n <AlertTitle>\n {msg.message}\n </AlertTitle>\n {msg.buttonLabel && msg.onButtonClick && (\n <Box sx={{ display: 'flex', justifyContent: 'flex-end' }}>\n <Button\n color={'inherit'}\n onClick={msg.onButtonClick}\n size={'small'}\n variant={'text'}\n >\n {msg.buttonLabel}\n </Button>\n </Box>\n )}\n </Alert>\n ))}\n {groupContent}\n </Box>\n );\n })}\n {ungroupedFields.map(renderSingleField)}\n </>\n );\n }, [formFieldDefinitions, formGroupDefinitions, renderGroup, renderSingleField]);\n\n return (\n <FormProvider {...formMethods}>\n <Box\n autoComplete={'off'}\n component={'form'}\n id={formId}\n onSubmit={onSubmit}\n >\n {wrapForm ? wrapForm(formFieldsContent) : formFieldsContent}\n </Box>\n </FormProvider>\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AA2DA,IAAa,KAAgD,EAC3D,eACA,yBACA,yBACA,WACA,gBACA,aACA,gBACA,gBACA,WACA,kBACmC;CACnC,IAAM,EAAE,SAAM,EAAe,GAEvB,IAAiB,QAAc,EAAS,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,GAEpE,IAAsB,EAAiC,GAAQ,EAAY,SAAS,GAEpF,IAA4B,GAAa,MAA0D;EACvG,QAAQ,EAAoB,YAA5B;GACE,KAAK,EAA2B,cAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,SAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,SAAS;IACT,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,gBAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,MAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,MAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,QAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,aAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,WAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,QAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,QAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,WAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,KAAK,EAA2B,eAC9B,OACE,kBAAC,GAAD;IACE,GAAI;IACJ,UAAU,EAAoB,YAAY;IAC1C,UAAU,EAAoB,EAAoB,IAAI;GACvD,CAAA;GAEL,SACE,MAAM,MAAM,sCAAsC,EAAoB,YAAY;EACtF;CACF,GAAG;EAAC;EAAgB;EAAY;CAAmB,CAAC,GAG9C,IAAoB,GAAa,MACjC,IAEA,kBAAC,GAAD,EAAA,UACG,EAAY,GAAqB,EAA0B,CAAmB,CAAC,EACxE,GAFK,EAAoB,IAEzB,IAIZ,kBAAC,GAAD;EAEE,IAAI,EACF,SAAS,EACX;YAEC,EAA0B,CAAmB;CAC3C,GANE,EAAoB,IAMtB,GAEN,CAAC,GAAa,CAAyB,CAAC,GAErC,IAAoB,QAAc;EACtC,IAAI,CAAC,GAAsB,QACzB,OACE,kBAAA,GAAA,EAAA,UACG,EAAqB,IAAI,CAAiB,EAC3C,CAAA;EAIN,IAAM,oBAAiB,IAAI,IAAgD;EAC3E,KAAK,IAAM,KAAS,GAClB,EAAe,IAAI,EAAM,UAAU,CAAC,CAAC;EAGvC,IAAM,IAAsD,CAAC;EAC7D,KAAK,IAAM,KAAS,GAClB,AAAI,EAAM,YAAY,EAAe,IAAI,EAAM,QAAQ,IACrD,EAAe,IAAI,EAAM,QAAQ,CAAC,EAAE,KAAK,CAAK,IAE9C,EAAgB,KAAK,CAAK;EAI9B,OACE,kBAAA,GAAA,EAAA,UAAA,CACG,EAAqB,KAAI,MAAS;GACjC,IAAM,IAAc,EAAe,IAAI,EAAM,QAAQ,KAAK,CAAC;GAC3D,IAAI,CAAC,EAAY,QACf,OAAO;GAET,IAAM,IACJ,kBAAA,GAAA,EAAA,UACG,EAAY,IAAI,CAAiB,EAClC,CAAA;GASJ,OAPI,IAEA,kBAAC,GAAD,EAAA,UACG,EAAY,GAAO,CAAY,EACxB,GAFK,EAAM,QAEX,IAIZ,kBAAC,GAAD;IAEE,IAAI,EAAE,SAAS,EAAE;cAFnB;KAIE,kBAAC,GAAD;MAAY,SAAS;gBAClB,EAAM;KACG,CAAA;KACX,EAAM,eACL,kBAAC,GAAD;MACE,OAAO;MACP,SAAS;gBAER,EAAM;KACG,CAAA;KAEb,EAAM,UAAU,KAAK,MACpB,kBAAC,GAAD;MAEE,UAAU,EAAI;MACd,IAAI,EAAE,uBAAuB,EAAE,OAAO,OAAO,EAAE;gBAHjD,CAKE,kBAAC,GAAD,EAAA,UACG,EAAI,QACK,CAAA,GACX,EAAI,eAAe,EAAI,iBACtB,kBAAC,GAAD;OAAK,IAAI;QAAE,SAAS;QAAQ,gBAAgB;OAAW;iBACrD,kBAAC,GAAD;QACE,OAAO;QACP,SAAS,EAAI;QACb,MAAM;QACN,SAAS;kBAER,EAAI;OACC,CAAA;MACL,CAAA,CAEF;QAnBA,EAAI,OAmBJ,CACR;KACA;IACE;MAtCE,EAAM,QAsCR;EAET,CAAC,GACA,EAAgB,IAAI,CAAiB,CACtC,EAAA,CAAA;CAEN,GAAG;EAAC;EAAsB;EAAsB;EAAa;CAAiB,CAAC;CAE/E,OACE,kBAAC,GAAD;EAAc,GAAI;YAChB,kBAAC,GAAD;GACE,cAAc;GACd,WAAW;GACX,IAAI;GACM;aAET,IAAW,EAAS,CAAiB,IAAI;EACvC,CAAA;CACO,CAAA;AAElB"}
@@ -0,0 +1 @@
1
+ export * from './useIsFormFieldRequiredFromSchema';
@@ -0,0 +1,18 @@
1
+ import { r as e } from "../../_chunks/index.esm.js";
2
+ import { useCallback as t } from "react";
3
+ //#region src/hooks/useIsFormFieldRequiredFromSchema/useIsFormFieldRequiredFromSchema.ts
4
+ var n = (n, r) => t((t) => {
5
+ try {
6
+ let i = structuredClone(r());
7
+ return e(i, t, void 0), n.validateSyncAt(t, i, {
8
+ abortEarly: !0,
9
+ strict: !1
10
+ }), !1;
11
+ } catch (e) {
12
+ return e?.type === "required" || e?.type === "optionality";
13
+ }
14
+ }, [r, n]);
15
+ //#endregion
16
+ export { n as useIsFormFieldRequiredFromSchema };
17
+
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/hooks/useIsFormFieldRequiredFromSchema/useIsFormFieldRequiredFromSchema.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport { set } from 'react-hook-form';\nimport type {\n FieldValues,\n Path,\n UseFormGetValues,\n} from 'react-hook-form';\nimport type {\n ObjectSchema,\n ValidationError,\n} from 'yup';\n\nconst useIsFormFieldRequiredFromSchema = <TFormFields extends FieldValues, TName extends Path<TFormFields>>(schema: ObjectSchema<TFormFields, TFormFields>, getFormValues: UseFormGetValues<TFormFields>): (fieldName: TName) => boolean => {\n return useCallback((fieldName: TName) => {\n try {\n const values = structuredClone(getFormValues());\n set(values, fieldName, undefined);\n\n schema.validateSyncAt(fieldName, values, {\n abortEarly: true,\n strict: false,\n });\n return false;\n } catch (error) {\n return (error as ValidationError)?.type === 'required' || (error as ValidationError)?.type === 'optionality';\n }\n }, [getFormValues, schema]);\n};\n\nexport {\n useIsFormFieldRequiredFromSchema,\n};\n"],"mappings":";;;AAYA,IAAM,KAAsG,GAAgD,MACnJ,GAAa,MAAqB;CACvC,IAAI;EACF,IAAM,IAAS,gBAAgB,EAAc,CAAC;EAO9C,OANA,EAAI,GAAQ,GAAW,KAAA,CAAS,GAEhC,EAAO,eAAe,GAAW,GAAQ;GACvC,YAAY;GACZ,QAAQ;EACV,CAAC,GACM;CACT,SAAS,GAAO;EACd,OAAQ,GAA2B,SAAS,cAAe,GAA2B,SAAS;CACjG;AACF,GAAG,CAAC,GAAe,CAAM,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { FieldValues, Path, UseFormGetValues } from 'react-hook-form';
2
+ import { ObjectSchema } from 'yup';
3
+ declare const useIsFormFieldRequiredFromSchema: <TFormFields extends FieldValues, TName extends Path<TFormFields>>(schema: ObjectSchema<TFormFields, TFormFields>, getFormValues: UseFormGetValues<TFormFields>) => (fieldName: TName) => boolean;
4
+ export { useIsFormFieldRequiredFromSchema, };
@@ -0,0 +1,97 @@
1
+ {
2
+ "translation": {
3
+ "Add new link": "Add new link",
4
+ "Cancel changes": "Cancel changes",
5
+ "clear": "clear",
6
+ "Clear": "Clear",
7
+ "Clear checkbox selection": "Clear checkbox selection",
8
+ "Clear date field": "Clear date field",
9
+ "Clear date range": "Clear date range",
10
+ "Clear number range": "Clear number range",
11
+ "Clear rich text editor content": "Clear rich text editor content",
12
+ "Clear selection": "Clear selection",
13
+ "Clear text field": "Clear text field",
14
+ "Delete column": "Delete column",
15
+ "Delete row": "Delete row",
16
+ "Delete table": "Delete table",
17
+ "Do not enter any personal information here (such as name, address, telephone number or government-issued personal identifier).": "Do not enter any personal information here (such as name, address, telephone number or government-issued personal identifier).",
18
+ "Edit link": "Edit link",
19
+ "Field is mandatory": "Field is mandatory",
20
+ "Filter": "Filter",
21
+ "From": "From",
22
+ "Insert column after": "Insert column after",
23
+ "Insert column before": "Insert column before",
24
+ "Insert row above": "Insert row above",
25
+ "Insert row below": "Insert row below",
26
+ "Loading...": "Loading...",
27
+ "Merge cells": "Merge cells",
28
+ "move all left": "move all left",
29
+ "move all right": "move all right",
30
+ "move selected left": "move selected left",
31
+ "move selected right": "move selected right",
32
+ "No": "No",
33
+ "No results": "No results",
34
+ "Only a valid email address is allowed.": "Only a valid email address is allowed.",
35
+ "Only a valid number is allowed. (signed, 0 decimal places)": "Only a valid number is allowed. (signed, 0 decimal places)",
36
+ "Only a valid number is allowed. (signed, maximum 1 decimal place, use '.' as decimal separator)": "Only a valid number is allowed. (signed, maximum 1 decimal place, use '.' as decimal separator)",
37
+ "Only a valid number is allowed. (signed, maximum 2 decimal place, use '.' as decimal separator)": "Only a valid number is allowed. (signed, maximum 2 decimal place, use '.' as decimal separator)",
38
+ "Only a valid number is allowed. (signed, maximum 3 decimal place, use '.' as decimal separator)": "Only a valid number is allowed. (signed, maximum 3 decimal place, use '.' as decimal separator)",
39
+ "Only a valid number is allowed. (signed, maximum 4 decimal place, use '.' as decimal separator)": "Only a valid number is allowed. (signed, maximum 4 decimal place, use '.' as decimal separator)",
40
+ "Only a valid number is allowed. (signed, maximum 5 decimal place, use '.' as decimal separator)": "Only a valid number is allowed. (signed, maximum 5 decimal place, use '.' as decimal separator)",
41
+ "Only a valid number is allowed. (signed, maximum 6 decimal place, use '.' as decimal separator)": "Only a valid number is allowed. (signed, maximum 6 decimal place, use '.' as decimal separator)",
42
+ "Only a valid regex is allowed.": "Only a valid regex is allowed.",
43
+ "Only a valid time month notation is allowed. For example: 2021-01": "Only a valid time month notation is allowed. For example: 2021-01",
44
+ "Only a valid time quarter notation is allowed. For example: 2021-Q1": "Only a valid time quarter notation is allowed. For example: 2021-Q1",
45
+ "Only a valid time week is allowed. For example: 2021-W01": "Only a valid time week is allowed. For example: 2021-W01",
46
+ "Only a valid time year notation is allowed. For example: 2021": "Only a valid time year notation is allowed. For example: 2021",
47
+ "Only a valid url is allowed.": "Only a valid url is allowed.",
48
+ "Only a valid UUID is allowed.": "Only a valid UUID is allowed.",
49
+ "Only digits and letters (including diacritics) are allowed.": "Only digits and letters (including diacritics) are allowed.",
50
+ "Only digits and letters (without diacritics) are allowed.": "Only digits and letters (without diacritics) are allowed.",
51
+ "Only digits, letters (including diacritics) and punctuation marks are allowed.": "Only digits, letters (including diacritics) and punctuation marks are allowed.",
52
+ "Only freeform text characters are allowed.": "Only freeform text characters are allowed.",
53
+ "Only letters (including diacritics) are allowed.": "Only letters (including diacritics) are allowed.",
54
+ "Only letters (without diacritics) are allowed.": "Only letters (without diacritics) are allowed.",
55
+ "Only valid latitude and longitude coordinates are allowed. For example: 13.7368, 100.5627": "Only valid latitude and longitude coordinates are allowed. For example: 13.7368, 100.5627",
56
+ "Privacy notice": "Privacy notice",
57
+ "Remove link": "Remove link",
58
+ "Reset": "Reset",
59
+ "Reset selection": "Reset selection",
60
+ "Save changes": "Save changes",
61
+ "Select all": "Select all",
62
+ "Should be a positive digit": "Should be a positive digit",
63
+ "Should be a valid email address": "Should be a valid email address",
64
+ "Should be a valid URL": "Should be a valid URL",
65
+ "Should be an integer": "Should be an integer",
66
+ "Should be before ${max}": "Should be before ${max}",
67
+ "Should be greater or equal to ${min}": "Should be greater or equal to ${min}",
68
+ "Should be higher than ${more}": "Should be higher than ${more}",
69
+ "Should be later than ${min}": "Should be later than ${min}",
70
+ "Should be less than ${less}": "Should be less than ${less}",
71
+ "Should be lower or equal to ${max}": "Should be lower or equal to ${max}",
72
+ "Should be negative digit": "Should be negative digit",
73
+ "Should be precisely ${length} characters long": "Should be precisely ${length} characters long",
74
+ "Should contain at least ${min} characters": "Should contain at least ${min} characters",
75
+ "Should contain at least ${min} option(s)": "Should contain at least ${min} option(s)",
76
+ "Should contain at most ${max} characters": "Should contain at most ${max} characters",
77
+ "Should contain at most ${max} option(s)": "Should contain at most ${max} option(s)",
78
+ "Should not contain leading or trailing spaces": "Should not contain leading or trailing spaces",
79
+ "Should only contain lowercase characters": "Should only contain lowercase characters",
80
+ "Should only contain uppercase characters": "Should only contain uppercase characters",
81
+ "Split cell": "Split cell",
82
+ "Text content": "Text content",
83
+ "This value is invalid": "This value is invalid",
84
+ "This value is invalid.": "This value is invalid.",
85
+ "To": "To",
86
+ "Toggle header cell": "Toggle header cell",
87
+ "Toggle header column": "Toggle header column",
88
+ "Toggle header row": "Toggle header row",
89
+ "Update this link": "Update this link",
90
+ "Upload file ({{accept}})": "Upload file ({{accept}})",
91
+ "Upload files ({{accept}})": "Upload files ({{accept}})",
92
+ "URL": "URL",
93
+ "Value": "Value",
94
+ "Value is invalid": "Value is invalid",
95
+ "Yes": "Yes"
96
+ }
97
+ }
@@ -0,0 +1,97 @@
1
+ {
2
+ "translation": {
3
+ "Add new link": "Nieuwe link toevoegen",
4
+ "Cancel changes": "Wijzigingen annuleren",
5
+ "clear": "wissen",
6
+ "Clear": "Wissen",
7
+ "Clear checkbox selection": "Selectievakje selectie wissen",
8
+ "Clear date field": "Datumveld leegmaken",
9
+ "Clear date range": "Wis datumbereik",
10
+ "Clear number range": "Getalsbereik wissen",
11
+ "Clear rich text editor content": "Inhoud van teksteditor wissen",
12
+ "Clear selection": "Selectie wissen",
13
+ "Clear text field": "Tekstveld leegmaken",
14
+ "Delete column": "Kolom verwijderen",
15
+ "Delete row": "Rij verwijderen",
16
+ "Delete table": "Tabel verwijderen",
17
+ "Do not enter any personal information here (such as name, address, telephone number or government-issued personal identifier).": "Voer hier geen persoonlijke informatie in (zoals naam, adres, telefoonnummer of door de overheid uitgegeven persoonlijk identificatienummer).",
18
+ "Edit link": "Link bewerken",
19
+ "Field is mandatory": "Veld is verplicht",
20
+ "Filter": "Filter",
21
+ "From": "Van",
22
+ "Insert column after": "Kolom invoegen na",
23
+ "Insert column before": "Kolom invoegen voor",
24
+ "Insert row above": "Rij invoegen boven",
25
+ "Insert row below": "Rij invoegen onder",
26
+ "Loading...": "Laden...",
27
+ "Merge cells": "Cellen samenvoegen",
28
+ "move all left": "alles naar links",
29
+ "move all right": "alles naar rechts",
30
+ "move selected left": "selectie naar links",
31
+ "move selected right": "selectie naar rechts",
32
+ "No": "Nee",
33
+ "No results": "Geen resultaten",
34
+ "Only a valid email address is allowed.": "Alleen een geldig e-mailadres is toegestaan.",
35
+ "Only a valid number is allowed. (signed, 0 decimal places)": "Alleen een geldig getal is toegestaan. (met teken, 0 decimalen)",
36
+ "Only a valid number is allowed. (signed, maximum 1 decimal place, use '.' as decimal separator)": "Alleen een geldig getal is toegestaan. (met teken, maximaal 1 decimaal, gebruik '.' als decimaalteken)",
37
+ "Only a valid number is allowed. (signed, maximum 2 decimal place, use '.' as decimal separator)": "Alleen een geldig getal is toegestaan. (met teken, maximaal 2 decimalen, gebruik '.' als decimaalteken)",
38
+ "Only a valid number is allowed. (signed, maximum 3 decimal place, use '.' as decimal separator)": "Alleen een geldig getal is toegestaan. (met teken, maximaal 3 decimalen, gebruik '.' als decimaalteken)",
39
+ "Only a valid number is allowed. (signed, maximum 4 decimal place, use '.' as decimal separator)": "Alleen een geldig getal is toegestaan. (met teken, maximaal 4 decimalen, gebruik '.' als decimaalteken)",
40
+ "Only a valid number is allowed. (signed, maximum 5 decimal place, use '.' as decimal separator)": "Alleen een geldig getal is toegestaan. (met teken, maximaal 5 decimalen, gebruik '.' als decimaalteken)",
41
+ "Only a valid number is allowed. (signed, maximum 6 decimal place, use '.' as decimal separator)": "Alleen een geldig getal is toegestaan. (met teken, maximaal 6 decimalen, gebruik '.' als decimaalteken)",
42
+ "Only a valid regex is allowed.": "Alleen een geldige reguliere expressie is toegestaan.",
43
+ "Only a valid time month notation is allowed. For example: 2021-01": "Alleen een geldige maandnotatie is toegestaan. Bijvoorbeeld: 2021-01",
44
+ "Only a valid time quarter notation is allowed. For example: 2021-Q1": "Alleen een geldige kwartaalnotatie is toegestaan. Bijvoorbeeld: 2021-Q1",
45
+ "Only a valid time week is allowed. For example: 2021-W01": "Alleen een geldige weeknotatie is toegestaan. Bijvoorbeeld: 2021-W01",
46
+ "Only a valid time year notation is allowed. For example: 2021": "Alleen een geldige jaarnotatie is toegestaan. Bijvoorbeeld: 2021",
47
+ "Only a valid url is allowed.": "Alleen een geldige URL is toegestaan.",
48
+ "Only a valid UUID is allowed.": "Alleen een geldige UUID is toegestaan.",
49
+ "Only digits and letters (including diacritics) are allowed.": "Alleen cijfers en letters (inclusief diakritische tekens) zijn toegestaan.",
50
+ "Only digits and letters (without diacritics) are allowed.": "Alleen cijfers en letters (zonder diakritische tekens) zijn toegestaan.",
51
+ "Only digits, letters (including diacritics) and punctuation marks are allowed.": "Alleen cijfers, letters (inclusief diakritische tekens) en leestekens zijn toegestaan.",
52
+ "Only freeform text characters are allowed.": "Alleen vrije tekst tekens zijn toegestaan.",
53
+ "Only letters (including diacritics) are allowed.": "Alleen letters (inclusief diakritische tekens) zijn toegestaan.",
54
+ "Only letters (without diacritics) are allowed.": "Alleen letters (zonder diakritische tekens) zijn toegestaan.",
55
+ "Only valid latitude and longitude coordinates are allowed. For example: 13.7368, 100.5627": "Alleen geldige breedte- en lengtegraadcoördinaten zijn toegestaan. Bijvoorbeeld: 13.7368, 100.5627",
56
+ "Privacy notice": "Privacyverklaring",
57
+ "Remove link": "Link verwijderen",
58
+ "Reset": "Resetten",
59
+ "Reset selection": "Selectie resetten",
60
+ "Save changes": "Wijzigingen opslaan",
61
+ "Select all": "Alles selecteren",
62
+ "Should be a positive digit": "Moet een positief getal zijn",
63
+ "Should be a valid email address": "Moet een geldig e-mailadres zijn",
64
+ "Should be a valid URL": "Moet een geldige URL zijn",
65
+ "Should be an integer": "Moet een geheel getal zijn",
66
+ "Should be before ${max}": "Moet voor ${max} zijn",
67
+ "Should be greater or equal to ${min}": "Moet groter dan of gelijk aan ${min} zijn",
68
+ "Should be higher than ${more}": "Moet hoger zijn dan ${more}",
69
+ "Should be later than ${min}": "Moet later zijn dan ${min}",
70
+ "Should be less than ${less}": "Moet kleiner zijn dan ${less}",
71
+ "Should be lower or equal to ${max}": "Moet kleiner dan of gelijk aan ${max} zijn",
72
+ "Should be negative digit": "Moet een negatief getal zijn",
73
+ "Should be precisely ${length} characters long": "Moet precies ${length} tekens lang zijn",
74
+ "Should contain at least ${min} characters": "Moet minimaal ${min} tekens bevatten",
75
+ "Should contain at least ${min} option(s)": "Moet minimaal ${min} optie(s) bevatten",
76
+ "Should contain at most ${max} characters": "Mag maximaal ${max} tekens bevatten",
77
+ "Should contain at most ${max} option(s)": "Mag maximaal ${max} optie(s) bevatten",
78
+ "Should not contain leading or trailing spaces": "Mag geen voor- of achterliggende spaties bevatten",
79
+ "Should only contain lowercase characters": "Mag alleen kleine letters bevatten",
80
+ "Should only contain uppercase characters": "Mag alleen hoofdletters bevatten",
81
+ "Split cell": "Cel splitsen",
82
+ "Text content": "Tekst inhoud",
83
+ "This value is invalid": "Deze waarde is ongeldig",
84
+ "This value is invalid.": "Deze waarde is ongeldig.",
85
+ "To": "Tot",
86
+ "Toggle header cell": "Koptekst cel omschakelen",
87
+ "Toggle header column": "Koptekst kolom omschakelen",
88
+ "Toggle header row": "Koptekst rij omschakelen",
89
+ "Update this link": "Deze link bijwerken",
90
+ "Upload file ({{accept}})": "Upload bestand ({{accept}})",
91
+ "Upload files ({{accept}})": "Upload bestanden ({{accept}})",
92
+ "URL": "URL",
93
+ "Value": "Waarde",
94
+ "Value is invalid": "Waarde is ongeldig",
95
+ "Yes": "Ja"
96
+ }
97
+ }
@@ -0,0 +1,112 @@
1
+ import { FieldValues, Path } from 'react-hook-form';
2
+ import { RichTextEditorProps } from '../components/fields/RichTextEditor';
3
+ import { TransferListProps } from '../components/fields/TransferList';
4
+ import { AutocompleteProps } from '../components/fields/Autocomplete';
5
+ import { TextFieldProps } from '../components/fields/TextField';
6
+ import { SelectProps } from '../components/fields/Select';
7
+ import { DatePickerProps } from '../components/fields/DatePicker';
8
+ import { UploadButtonProps } from '../components/fields/UploadButton/UploadButton';
9
+ import { RadioGroupProps } from '../components/fields/RadioGroup';
10
+ import { NumberFieldProps } from '../components/fields/NumberField';
11
+ import { SwitchProps } from '../components/fields/Switch';
12
+ export declare enum FORM_FIELD_DEFINITION_TYPE {
13
+ AUTOCOMPLETE = "AUTOCOMPLETE",
14
+ BOOLEAN = "BOOLEAN",
15
+ BOOLEAN_SWITCH = "BOOLEAN_SWITCH",
16
+ DATE = "DATE",
17
+ FILE = "FILE",
18
+ HIDDEN = "HIDDEN",
19
+ NUMBER = "NUMBER",
20
+ RADIO_GROUP = "RADIO_GROUP",
21
+ RICH_TEXT = "RICH_TEXT",
22
+ SELECT = "SELECT",
23
+ SWITCH = "SWITCH",
24
+ TEXTFIELD = "TEXTFIELD",
25
+ TRANSFER_LIST = "TRANSFER_LIST"
26
+ }
27
+ export interface AutoCompleteOption<TValue = void> extends OptionBase<TValue extends void ? (number | string) : TValue> {
28
+ groupBySortOrderValue?: number;
29
+ groupByValue?: string;
30
+ }
31
+ export type AutocompleteSelectAllContextData = {
32
+ currentValues: AutocompleteValue[];
33
+ enabledOptionValues: AutocompleteValue[];
34
+ handleSelectAll: (isCurrentlyAll: boolean, currentValues: AutocompleteValue[]) => void;
35
+ selectAllLabel: string;
36
+ };
37
+ export type AutocompleteValue = number | string;
38
+ export type CheckboxOption = OptionBase<number | string>;
39
+ export type FormFieldDefinition<TFormFields extends FieldValues> = FormFieldDefinitionAutocomplete<TFormFields> | FormFieldDefinitionAutocompleteMultiple<TFormFields> | FormFieldDefinitionBoolean<TFormFields> | FormFieldDefinitionBooleanSwitch<TFormFields> | FormFieldDefinitionDate<TFormFields> | FormFieldDefinitionFile<TFormFields> | FormFieldDefinitionHidden<TFormFields> | FormFieldDefinitionNumber<TFormFields> | FormFieldDefinitionRadioGroup<TFormFields> | FormFieldDefinitionRichText<TFormFields> | FormFieldDefinitionSelect<TFormFields> | FormFieldDefinitionSelectMultiple<TFormFields> | FormFieldDefinitionSwitch<TFormFields> | FormFieldDefinitionTextField<TFormFields> | FormFieldDefinitionTransferList<TFormFields>;
40
+ export type FormFieldDefinitionAutocomplete<TFormFields extends FieldValues> = {
41
+ definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE;
42
+ multiple?: false;
43
+ } & AutocompleteProps<TFormFields, Path<TFormFields>, false> & FormFieldGrouping;
44
+ export type FormFieldDefinitionAutocompleteMultiple<TFormFields extends FieldValues> = {
45
+ definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE;
46
+ multiple?: true;
47
+ } & AutocompleteProps<TFormFields, Path<TFormFields>, true> & FormFieldGrouping;
48
+ export type FormFieldDefinitionBoolean<TFormFields extends FieldValues> = {
49
+ definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN;
50
+ } & FormFieldGrouping & Omit<SelectProps<TFormFields, Path<TFormFields>, false>, 'options'>;
51
+ export type FormFieldDefinitionBooleanSwitch<TFormFields extends FieldValues> = {
52
+ definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN_SWITCH;
53
+ } & FormFieldGrouping & Omit<SwitchProps<TFormFields, Path<TFormFields>>, 'options'>;
54
+ export type FormFieldDefinitionDate<TFormFields extends FieldValues> = {
55
+ definition: FORM_FIELD_DEFINITION_TYPE.DATE;
56
+ } & DatePickerProps<TFormFields, Path<TFormFields>> & FormFieldGrouping;
57
+ export type FormFieldDefinitionFile<TFormFields extends FieldValues> = {
58
+ definition: FORM_FIELD_DEFINITION_TYPE.FILE;
59
+ } & FormFieldGrouping & UploadButtonProps<TFormFields, Path<TFormFields>>;
60
+ export type FormFieldDefinitionHidden<TFormFields extends FieldValues> = {
61
+ definition: FORM_FIELD_DEFINITION_TYPE.HIDDEN;
62
+ } & FormFieldGrouping & TextFieldProps<TFormFields, Path<TFormFields>>;
63
+ export type FormFieldDefinitionNumber<TFormFields extends FieldValues> = {
64
+ definition: FORM_FIELD_DEFINITION_TYPE.NUMBER;
65
+ } & FormFieldGrouping & NumberFieldProps<TFormFields, Path<TFormFields>>;
66
+ export type FormFieldDefinitionRadioGroup<TFormFields extends FieldValues> = {
67
+ definition: FORM_FIELD_DEFINITION_TYPE.RADIO_GROUP;
68
+ } & FormFieldGrouping & RadioGroupProps<TFormFields, Path<TFormFields>>;
69
+ export type FormFieldDefinitionRichText<TFormFields extends FieldValues> = {
70
+ definition: FORM_FIELD_DEFINITION_TYPE.RICH_TEXT;
71
+ } & FormFieldGrouping & RichTextEditorProps<TFormFields, Path<TFormFields>>;
72
+ export type FormFieldDefinitionSelect<TFormFields extends FieldValues> = {
73
+ definition: FORM_FIELD_DEFINITION_TYPE.SELECT;
74
+ multiple?: false;
75
+ } & FormFieldGrouping & SelectProps<TFormFields, Path<TFormFields>, false>;
76
+ export type FormFieldDefinitionSelectMultiple<TFormFields extends FieldValues> = {
77
+ definition: FORM_FIELD_DEFINITION_TYPE.SELECT;
78
+ multiple?: true;
79
+ } & FormFieldGrouping & SelectProps<TFormFields, Path<TFormFields>, true>;
80
+ export type FormFieldDefinitionSwitch<TFormFields extends FieldValues> = {
81
+ definition: FORM_FIELD_DEFINITION_TYPE.SWITCH;
82
+ } & FormFieldGrouping & SwitchProps<TFormFields, Path<TFormFields>>;
83
+ export type FormFieldDefinitionTextField<TFormFields extends FieldValues> = {
84
+ definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD;
85
+ } & FormFieldGrouping & TextFieldProps<TFormFields, Path<TFormFields>>;
86
+ export type FormFieldDefinitionTransferList<TFormFields extends FieldValues> = {
87
+ definition: FORM_FIELD_DEFINITION_TYPE.TRANSFER_LIST;
88
+ } & FormFieldGrouping & TransferListProps<TFormFields, Path<TFormFields>>;
89
+ export type FormFieldGrouping = {
90
+ groupKey?: string;
91
+ };
92
+ export type FormGroupDefinition = {
93
+ description?: string;
94
+ groupKey: string;
95
+ label: string;
96
+ messages?: FormGroupMessage[];
97
+ };
98
+ export type FormGroupMessage = {
99
+ buttonLabel?: string;
100
+ message: string;
101
+ onButtonClick?: () => void;
102
+ severity: 'error' | 'info' | 'warning';
103
+ };
104
+ export interface OptionBase<TValue> {
105
+ disabled?: boolean;
106
+ label?: string;
107
+ value?: TValue;
108
+ }
109
+ export type RadioButtonOption<TValue = void> = OptionBase<TValue extends void ? (boolean | number | string) : TValue>;
110
+ export type SelectOption<TValue = void> = OptionBase<TValue extends void ? (boolean | number | string) : TValue>;
111
+ export type ToggleButtonOption<TValue = void> = OptionBase<TValue extends void ? (boolean | number | string) : TValue>;
112
+ export type TransferListOption = OptionBase<string>;
@@ -0,0 +1,8 @@
1
+ //#region src/models/form.ts
2
+ var e = /* @__PURE__ */ function(e) {
3
+ return e.AUTOCOMPLETE = "AUTOCOMPLETE", e.BOOLEAN = "BOOLEAN", e.BOOLEAN_SWITCH = "BOOLEAN_SWITCH", e.DATE = "DATE", e.FILE = "FILE", e.HIDDEN = "HIDDEN", e.NUMBER = "NUMBER", e.RADIO_GROUP = "RADIO_GROUP", e.RICH_TEXT = "RICH_TEXT", e.SELECT = "SELECT", e.SWITCH = "SWITCH", e.TEXTFIELD = "TEXTFIELD", e.TRANSFER_LIST = "TRANSFER_LIST", e;
4
+ }({});
5
+ //#endregion
6
+ export { e as FORM_FIELD_DEFINITION_TYPE };
7
+
8
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","names":[],"sources":["../../src/models/form.ts"],"sourcesContent":["import type {\n FieldValues,\n Path,\n} from 'react-hook-form';\n\nimport type { RichTextEditorProps } from '../components/fields/RichTextEditor';\nimport type { TransferListProps } from '../components/fields/TransferList';\nimport type { AutocompleteProps } from '../components/fields/Autocomplete';\nimport type { TextFieldProps } from '../components/fields/TextField';\nimport type { SelectProps } from '../components/fields/Select';\nimport type { DatePickerProps } from '../components/fields/DatePicker';\nimport type { UploadButtonProps } from '../components/fields/UploadButton/UploadButton';\nimport type { RadioGroupProps } from '../components/fields/RadioGroup';\nimport type { NumberFieldProps } from '../components/fields/NumberField';\nimport type { SwitchProps } from '../components/fields/Switch';\n\nexport enum FORM_FIELD_DEFINITION_TYPE {\n AUTOCOMPLETE = 'AUTOCOMPLETE',\n BOOLEAN = 'BOOLEAN',\n BOOLEAN_SWITCH = 'BOOLEAN_SWITCH',\n DATE = 'DATE',\n FILE = 'FILE',\n HIDDEN = 'HIDDEN',\n NUMBER = 'NUMBER',\n RADIO_GROUP = 'RADIO_GROUP',\n RICH_TEXT = 'RICH_TEXT',\n SELECT = 'SELECT',\n SWITCH = 'SWITCH',\n TEXTFIELD = 'TEXTFIELD',\n TRANSFER_LIST = 'TRANSFER_LIST',\n}\n\nexport interface AutoCompleteOption<TValue = void> extends OptionBase<TValue extends void ? (number | string) : TValue> {\n groupBySortOrderValue?: number;\n groupByValue?: string;\n}\n\nexport type AutocompleteSelectAllContextData = {\n currentValues: AutocompleteValue[];\n enabledOptionValues: AutocompleteValue[];\n handleSelectAll: (isCurrentlyAll: boolean, currentValues: AutocompleteValue[]) => void;\n selectAllLabel: string;\n};\nexport type AutocompleteValue = number | string;\nexport type CheckboxOption = OptionBase<number | string>;\n\nexport type FormFieldDefinition<TFormFields extends FieldValues> =\n FormFieldDefinitionAutocomplete<TFormFields> |\n FormFieldDefinitionAutocompleteMultiple<TFormFields> |\n FormFieldDefinitionBoolean<TFormFields> |\n FormFieldDefinitionBooleanSwitch<TFormFields> |\n FormFieldDefinitionDate<TFormFields> |\n FormFieldDefinitionFile<TFormFields> |\n FormFieldDefinitionHidden<TFormFields> |\n FormFieldDefinitionNumber<TFormFields> |\n FormFieldDefinitionRadioGroup<TFormFields> |\n FormFieldDefinitionRichText<TFormFields> |\n FormFieldDefinitionSelect<TFormFields> |\n FormFieldDefinitionSelectMultiple<TFormFields> |\n FormFieldDefinitionSwitch<TFormFields> |\n FormFieldDefinitionTextField<TFormFields> |\n FormFieldDefinitionTransferList<TFormFields>;\n\nexport type FormFieldDefinitionAutocomplete<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE; multiple?: false } & AutocompleteProps<TFormFields, Path<TFormFields>, false> & FormFieldGrouping;\n\nexport type FormFieldDefinitionAutocompleteMultiple<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.AUTOCOMPLETE; multiple?: true } & AutocompleteProps<TFormFields, Path<TFormFields>, true> & FormFieldGrouping;\nexport type FormFieldDefinitionBoolean<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN } & FormFieldGrouping & Omit<SelectProps<TFormFields, Path<TFormFields>, false>, 'options'>;\nexport type FormFieldDefinitionBooleanSwitch<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.BOOLEAN_SWITCH } & FormFieldGrouping & Omit<SwitchProps<TFormFields, Path<TFormFields>>, 'options'>;\nexport type FormFieldDefinitionDate<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.DATE } & DatePickerProps<TFormFields, Path<TFormFields>> & FormFieldGrouping;\nexport type FormFieldDefinitionFile<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.FILE } & FormFieldGrouping & UploadButtonProps<TFormFields, Path<TFormFields>>;\nexport type FormFieldDefinitionHidden<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.HIDDEN } & FormFieldGrouping & TextFieldProps<TFormFields, Path<TFormFields>>;\nexport type FormFieldDefinitionNumber<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.NUMBER } & FormFieldGrouping & NumberFieldProps<TFormFields, Path<TFormFields>>;\nexport type FormFieldDefinitionRadioGroup<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.RADIO_GROUP } & FormFieldGrouping & RadioGroupProps<TFormFields, Path<TFormFields>>;\nexport type FormFieldDefinitionRichText<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.RICH_TEXT } & FormFieldGrouping & RichTextEditorProps<TFormFields, Path<TFormFields>>;\nexport type FormFieldDefinitionSelect<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.SELECT; multiple?: false } & FormFieldGrouping & SelectProps<TFormFields, Path<TFormFields>, false>;\nexport type FormFieldDefinitionSelectMultiple<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.SELECT; multiple?: true } & FormFieldGrouping & SelectProps<TFormFields, Path<TFormFields>, true>;\nexport type FormFieldDefinitionSwitch<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.SWITCH } & FormFieldGrouping & SwitchProps<TFormFields, Path<TFormFields>>;\nexport type FormFieldDefinitionTextField<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.TEXTFIELD } & FormFieldGrouping & TextFieldProps<TFormFields, Path<TFormFields>>;\nexport type FormFieldDefinitionTransferList<TFormFields extends FieldValues> = { definition: FORM_FIELD_DEFINITION_TYPE.TRANSFER_LIST } & FormFieldGrouping & TransferListProps<TFormFields, Path<TFormFields>>;\nexport type FormFieldGrouping = {\n groupKey?: string;\n};\nexport type FormGroupDefinition = {\n description?: string;\n groupKey: string;\n label: string;\n messages?: FormGroupMessage[];\n};\nexport type FormGroupMessage = {\n buttonLabel?: string;\n message: string;\n onButtonClick?: () => void;\n severity: 'error' | 'info' | 'warning';\n};\nexport interface OptionBase<TValue> {\n disabled?: boolean;\n label?: string;\n value?: TValue;\n}\nexport type RadioButtonOption<TValue = void> = OptionBase<TValue extends void ? (boolean | number | string) : TValue>;\nexport type SelectOption<TValue = void> = OptionBase<TValue extends void ? (boolean | number | string) : TValue>;\nexport type ToggleButtonOption<TValue = void> = OptionBase<TValue extends void ? (boolean | number | string) : TValue>;\n\nexport type TransferListOption = OptionBase<string>;\n"],"mappings":";AAgBA,IAAY,IAAL,yBAAA,GAAA;QACL,EAAA,eAAA,gBACA,EAAA,UAAA,WACA,EAAA,iBAAA,kBACA,EAAA,OAAA,QACA,EAAA,OAAA,QACA,EAAA,SAAA,UACA,EAAA,SAAA,UACA,EAAA,cAAA,eACA,EAAA,YAAA,aACA,EAAA,SAAA,UACA,EAAA,SAAA,UACA,EAAA,YAAA,aACA,EAAA,gBAAA;AACF,EAAA,CAAA,CAAA"}
@@ -0,0 +1 @@
1
+ export declare const setupYup: () => void;
@@ -0,0 +1,166 @@
1
+ import { addMethod as e, setLocale as t, string as n } from "yup";
2
+ import { t as r } from "i18next";
3
+ import { ValidationUtil as i } from "@gen-epix/ui-core/utils/ValidationUtil";
4
+ //#region src/setup/setup.ts
5
+ var a = () => {
6
+ t({
7
+ array: {
8
+ max: r("Should contain at most ${max} option(s)"),
9
+ min: r("Should contain at least ${min} option(s)")
10
+ },
11
+ boolean: {},
12
+ date: {
13
+ max: r("Should be before ${max}"),
14
+ min: r("Should be later than ${min}")
15
+ },
16
+ mixed: {
17
+ default: r("Value is invalid"),
18
+ notNull: r("Field is mandatory"),
19
+ notOneOf: r("Value is invalid"),
20
+ notType: r("Field is mandatory"),
21
+ oneOf: r("Field is mandatory"),
22
+ required: r("Field is mandatory")
23
+ },
24
+ number: {
25
+ integer: r("Should be an integer"),
26
+ lessThan: r("Should be less than ${less}"),
27
+ max: r("Should be lower or equal to ${max}"),
28
+ min: r("Should be greater or equal to ${min}"),
29
+ moreThan: r("Should be higher than ${more}"),
30
+ negative: r("Should be negative digit"),
31
+ positive: r("Should be a positive digit")
32
+ },
33
+ object: { noUnknown: r("This value is invalid") },
34
+ string: {
35
+ email: r("Should be a valid email address"),
36
+ length: r("Should be precisely ${length} characters long"),
37
+ lowercase: r("Should only contain lowercase characters"),
38
+ matches: r("This value is invalid."),
39
+ max: r("Should contain at most ${max} characters"),
40
+ min: r("Should contain at least ${min} characters"),
41
+ trim: r("Should not contain leading or trailing spaces"),
42
+ uppercase: r("Should only contain uppercase characters"),
43
+ url: r("Should be a valid URL")
44
+ }
45
+ }), [
46
+ {
47
+ assertCallback: (e) => i.validate("STRICT_ALPHA", e),
48
+ message: () => r`Only letters (without diacritics) are allowed.`,
49
+ name: "strictAlpha"
50
+ },
51
+ {
52
+ assertCallback: (e) => i.validate("STRICT_ALPHA_NUMERIC", e),
53
+ message: () => r`Only digits and letters (without diacritics) are allowed.`,
54
+ name: "strictAlphaNumeric"
55
+ },
56
+ {
57
+ assertCallback: (e) => i.validate("ALPHA", e),
58
+ message: () => r`Only letters (including diacritics) are allowed.`,
59
+ name: "alpha"
60
+ },
61
+ {
62
+ assertCallback: (e) => i.validate("ALPHA_NUMERIC", e),
63
+ message: () => r`Only digits and letters (including diacritics) are allowed.`,
64
+ name: "alphaNumeric"
65
+ },
66
+ {
67
+ assertCallback: (e) => i.validate("EXTENDED_ALPHA_NUMERIC", e),
68
+ message: () => r`Only digits, letters (including diacritics) and punctuation marks are allowed.`,
69
+ name: "extendedAlphaNumeric"
70
+ },
71
+ {
72
+ assertCallback: (e) => i.validate("FREE_FORM_TEXT", e),
73
+ message: () => r`Only freeform text characters are allowed.`,
74
+ name: "freeFormText"
75
+ },
76
+ {
77
+ assertCallback: (e) => i.validate("EMAIL", e),
78
+ message: () => r`Only a valid email address is allowed.`,
79
+ name: "email"
80
+ },
81
+ {
82
+ assertCallback: (e) => i.validate("URL", e),
83
+ message: () => r`Only a valid url is allowed.`,
84
+ name: "url"
85
+ },
86
+ {
87
+ assertCallback: (e) => i.validate("REGEX", e),
88
+ message: () => r`Only a valid regex is allowed.`,
89
+ name: "regex"
90
+ },
91
+ {
92
+ assertCallback: (e) => i.validate("UUID4", e),
93
+ message: () => r`Only a valid UUID is allowed.`,
94
+ name: "uuid4"
95
+ },
96
+ {
97
+ assertCallback: (e) => i.validate("LAT_LONG", e),
98
+ message: () => r`Only valid latitude and longitude coordinates are allowed. For example: 13.7368, 100.5627`,
99
+ name: "latLong"
100
+ },
101
+ {
102
+ assertCallback: (e) => i.validate("TIME_WEEK", e),
103
+ message: () => r`Only a valid time week is allowed. For example: 2021-W01`,
104
+ name: "timeWeek"
105
+ },
106
+ {
107
+ assertCallback: (e) => i.validate("TIME_QUARTER", e),
108
+ message: () => r`Only a valid time quarter notation is allowed. For example: 2021-Q1`,
109
+ name: "timeQuarter"
110
+ },
111
+ {
112
+ assertCallback: (e) => i.validate("TIME_MONTH", e),
113
+ message: () => r`Only a valid time month notation is allowed. For example: 2021-01`,
114
+ name: "timeMonth"
115
+ },
116
+ {
117
+ assertCallback: (e) => i.validate("TIME_YEAR", e),
118
+ message: () => r`Only a valid time year notation is allowed. For example: 2021`,
119
+ name: "timeYear"
120
+ },
121
+ {
122
+ assertCallback: (e) => i.validate("DECIMAL_0", e),
123
+ message: () => r`Only a valid number is allowed. (signed, 0 decimal places)`,
124
+ name: "decimal0"
125
+ },
126
+ {
127
+ assertCallback: (e) => i.validate("DECIMAL_1", e),
128
+ message: () => r`Only a valid number is allowed. (signed, maximum 1 decimal place, use '.' as decimal separator)`,
129
+ name: "decimal1"
130
+ },
131
+ {
132
+ assertCallback: (e) => i.validate("DECIMAL_2", e),
133
+ message: () => r`Only a valid number is allowed. (signed, maximum 2 decimal place, use '.' as decimal separator)`,
134
+ name: "decimal2"
135
+ },
136
+ {
137
+ assertCallback: (e) => i.validate("DECIMAL_3", e),
138
+ message: () => r`Only a valid number is allowed. (signed, maximum 3 decimal place, use '.' as decimal separator)`,
139
+ name: "decimal3"
140
+ },
141
+ {
142
+ assertCallback: (e) => i.validate("DECIMAL_4", e),
143
+ message: () => r`Only a valid number is allowed. (signed, maximum 4 decimal place, use '.' as decimal separator)`,
144
+ name: "decimal4"
145
+ },
146
+ {
147
+ assertCallback: (e) => i.validate("DECIMAL_5", e),
148
+ message: () => r`Only a valid number is allowed. (signed, maximum 5 decimal place, use '.' as decimal separator)`,
149
+ name: "decimal5"
150
+ },
151
+ {
152
+ assertCallback: (e) => i.validate("DECIMAL_6", e),
153
+ message: () => r`Only a valid number is allowed. (signed, maximum 6 decimal place, use '.' as decimal separator)`,
154
+ name: "decimal6"
155
+ }
156
+ ].forEach((t) => {
157
+ function r(...e) {
158
+ return this.test(t.name, () => typeof t.message == "string" ? t.message : t.message(...e), ((n) => t.assertCallback(n, ...e)));
159
+ }
160
+ e(n, t.name, r);
161
+ });
162
+ };
163
+ //#endregion
164
+ export { a as setupYup };
165
+
166
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","names":[],"sources":["../../src/setup/setup.ts"],"sourcesContent":["import type {\n StringSchema,\n TestFunction,\n} from 'yup';\nimport {\n addMethod,\n setLocale,\n string,\n} from 'yup';\nimport { t } from 'i18next';\nimport { ValidationUtil } from '@gen-epix/ui-core/utils/ValidationUtil';\n\ntype CustomValidation = {\n assertCallback: (value: string, ...args: unknown[]) => boolean;\n message: ((...args: unknown[]) => string) | string;\n name: string;\n};\n\nexport const setupYup = () => {\n setLocale({\n array: {\n max: t('Should contain at most ${max} option(s)'),\n min: t('Should contain at least ${min} option(s)'),\n },\n boolean: {},\n date: {\n max: t('Should be before ${max}'),\n min: t('Should be later than ${min}'),\n },\n mixed: {\n default: t('Value is invalid'),\n notNull: t('Field is mandatory'),\n notOneOf: t('Value is invalid'),\n notType: t('Field is mandatory'),\n oneOf: t('Field is mandatory'),\n required: t('Field is mandatory'),\n },\n number: {\n integer: t('Should be an integer'),\n lessThan: t('Should be less than ${less}'),\n max: t('Should be lower or equal to ${max}'),\n min: t('Should be greater or equal to ${min}'),\n moreThan: t('Should be higher than ${more}'),\n negative: t('Should be negative digit'),\n positive: t('Should be a positive digit'),\n },\n object: {\n noUnknown: t('This value is invalid'),\n },\n string: {\n email: t('Should be a valid email address'),\n length: t('Should be precisely ${length} characters long'),\n lowercase: t('Should only contain lowercase characters'),\n matches: t('This value is invalid.'),\n max: t('Should contain at most ${max} characters'),\n min: t('Should contain at least ${min} characters'),\n trim: t('Should not contain leading or trailing spaces'),\n uppercase: t('Should only contain uppercase characters'),\n url: t('Should be a valid URL'),\n },\n });\n\n const customValidations: CustomValidation[] = [\n {\n assertCallback: (value: string) => ValidationUtil.validate('STRICT_ALPHA', value),\n message: () => t`Only letters (without diacritics) are allowed.`,\n name: 'strictAlpha',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('STRICT_ALPHA_NUMERIC', value),\n message: () => t`Only digits and letters (without diacritics) are allowed.`,\n name: 'strictAlphaNumeric',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('ALPHA', value),\n message: () => t`Only letters (including diacritics) are allowed.`,\n name: 'alpha',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('ALPHA_NUMERIC', value),\n message: () => t`Only digits and letters (including diacritics) are allowed.`,\n name: 'alphaNumeric',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('EXTENDED_ALPHA_NUMERIC', value),\n message: () => t`Only digits, letters (including diacritics) and punctuation marks are allowed.`,\n name: 'extendedAlphaNumeric',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('FREE_FORM_TEXT', value),\n message: () => t`Only freeform text characters are allowed.`,\n name: 'freeFormText',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('EMAIL', value),\n message: () => t`Only a valid email address is allowed.`,\n name: 'email',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('URL', value),\n message: () => t`Only a valid url is allowed.`,\n name: 'url',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('REGEX', value),\n message: () => t`Only a valid regex is allowed.`,\n name: 'regex',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('UUID4', value),\n message: () => t`Only a valid UUID is allowed.`,\n name: 'uuid4',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('LAT_LONG', value),\n message: () => t`Only valid latitude and longitude coordinates are allowed. For example: 13.7368, 100.5627`,\n name: 'latLong',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('TIME_WEEK', value),\n message: () => t`Only a valid time week is allowed. For example: 2021-W01`,\n name: 'timeWeek',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('TIME_QUARTER', value),\n message: () => t`Only a valid time quarter notation is allowed. For example: 2021-Q1`,\n name: 'timeQuarter',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('TIME_MONTH', value),\n message: () => t`Only a valid time month notation is allowed. For example: 2021-01`,\n name: 'timeMonth',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('TIME_YEAR', value),\n message: () => t`Only a valid time year notation is allowed. For example: 2021`,\n name: 'timeYear',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('DECIMAL_0', value),\n message: () => t`Only a valid number is allowed. (signed, 0 decimal places)`,\n name: 'decimal0',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('DECIMAL_1', value),\n message: () => t`Only a valid number is allowed. (signed, maximum 1 decimal place, use '.' as decimal separator)`,\n name: 'decimal1',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('DECIMAL_2', value),\n message: () => t`Only a valid number is allowed. (signed, maximum 2 decimal place, use '.' as decimal separator)`,\n name: 'decimal2',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('DECIMAL_3', value),\n message: () => t`Only a valid number is allowed. (signed, maximum 3 decimal place, use '.' as decimal separator)`,\n name: 'decimal3',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('DECIMAL_4', value),\n message: () => t`Only a valid number is allowed. (signed, maximum 4 decimal place, use '.' as decimal separator)`,\n name: 'decimal4',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('DECIMAL_5', value),\n message: () => t`Only a valid number is allowed. (signed, maximum 5 decimal place, use '.' as decimal separator)`,\n name: 'decimal5',\n },\n {\n assertCallback: (value: string) => ValidationUtil.validate('DECIMAL_6', value),\n message: () => t`Only a valid number is allowed. (signed, maximum 6 decimal place, use '.' as decimal separator)`,\n name: 'decimal6',\n },\n ];\n\n customValidations.forEach((customValidation) => {\n // * Inevitable function inside a forEach\n function method(this: StringSchema, ...args: unknown[]) {\n return this.test(\n customValidation.name,\n () => {\n if (typeof customValidation.message === 'string') {\n return customValidation.message;\n }\n return customValidation.message(...args);\n },\n ((value: string): boolean => customValidation.assertCallback(value, ...args)) as TestFunction,\n );\n }\n addMethod(string, customValidation.name, method);\n });\n};\n"],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { DeepRequired, FieldErrorsImpl, FieldValues } from 'react-hook-form';
2
+ import { TFunction } from 'i18next';
3
+ import { ObjectSchema } from 'yup';
4
+ import { FormFieldDefinition } from '../../models/form';
5
+ export declare class FormUtil {
6
+ static areFormValuesValid<TFormFields extends FieldValues>(formFieldDefinitions: FormFieldDefinition<TFormFields>[], values: unknown): boolean;
7
+ static createBooleanOptions(t: TFunction<'translation', undefined>): {
8
+ label: string;
9
+ value: boolean;
10
+ }[];
11
+ static createFormValues<TFormFields extends FieldValues, TData = TFormFields>(formFieldDefinitions: FormFieldDefinition<TFormFields>[], item: TData): TFormFields;
12
+ static createStringValuesFromFormValues<TFormFields extends FieldValues>(formFieldDefinitions: FormFieldDefinition<TFormFields>[], formValues: TFormFields): {
13
+ [key: string]: string;
14
+ };
15
+ static createYupSchemaFromFormFieldDefinitions<TFormFields extends FieldValues>(formFieldDefinitions: FormFieldDefinition<TFormFields>[]): ObjectSchema<{
16
+ [key: string]: string;
17
+ }>;
18
+ static getFieldErrorMessage<TFormFields extends FieldValues>(fieldErrors: Partial<FieldErrorsImpl<DeepRequired<TFormFields>>>, fieldName: string): string;
19
+ }
@@ -0,0 +1 @@
1
+ export * from './FormUtil';