@mantine/form
Version:
Mantine form management library
1 lines • 8.71 kB
Source Map (JSON)
{"version":3,"file":"actions.cjs","names":["useLayoutEffect","useEffect"],"sources":["../../src/actions/actions.ts"],"sourcesContent":["import { useEffect, useLayoutEffect } from 'react';\nimport type {\n ClearErrors,\n ClearFieldError,\n InsertListItem,\n RemoveListItem,\n ReorderListItem,\n Reset,\n ResetDirty,\n ResetStatus,\n SetErrors,\n SetFieldError,\n SetFieldValue,\n SetFormStatus,\n SetInitialValues,\n SetValues,\n UseFormReturnType,\n} from '../types';\n\nfunction dispatchEvent(type: string, detail?: any): any {\n window.dispatchEvent(new CustomEvent(type, { detail }));\n}\n\nfunction validateFormName(name: string) {\n if (!/^[0-9a-zA-Z-]+$/.test(name)) {\n throw new Error(\n `[@mantine/use-form] Form name \"${name}\" is invalid, it should contain only letters, numbers and dashes`\n );\n }\n}\n\nexport const useIsomorphicEffect = typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\nexport function createFormActions<FormValues extends Record<string, any> = Record<string, any>>(\n name: string\n) {\n validateFormName(name);\n\n const setFieldValue: SetFieldValue<FormValues> = (path, value) =>\n dispatchEvent(`mantine-form:${name}:set-field-value`, { path, value });\n\n const setValues: SetValues<FormValues> = (values) =>\n dispatchEvent(`mantine-form:${name}:set-values`, values);\n\n const setInitialValues: SetInitialValues<FormValues> = (values) =>\n dispatchEvent(`mantine-form:${name}:set-initial-values`, values);\n\n const setErrors: SetErrors = (errors) => dispatchEvent(`mantine-form:${name}:set-errors`, errors);\n\n const setFieldError: SetFieldError<FormValues> = (path, error) =>\n dispatchEvent(`mantine-form:${name}:set-field-error`, { path, error });\n\n const clearFieldError: ClearFieldError = (path) =>\n dispatchEvent(`mantine-form:${name}:clear-field-error`, path);\n\n const clearErrors: ClearErrors = () => dispatchEvent(`mantine-form:${name}:clear-errors`);\n\n const reset: Reset = () => dispatchEvent(`mantine-form:${name}:reset`);\n\n const validate: () => void = () => dispatchEvent(`mantine-form:${name}:validate`);\n\n const validateField: (path: any) => void = (path) =>\n dispatchEvent(`mantine-form:${name}:validate-field`, path);\n\n const reorderListItem: ReorderListItem<FormValues> = (path, payload) =>\n dispatchEvent(`mantine-form:${name}:reorder-list-item`, { path, payload });\n\n const removeListItem: RemoveListItem<FormValues> = (path, index) =>\n dispatchEvent(`mantine-form:${name}:remove-list-item`, { path, index });\n\n const insertListItem: InsertListItem<FormValues> = (path, item, index) =>\n dispatchEvent(`mantine-form:${name}:insert-list-item`, { path, index, item });\n\n const setDirty: SetFormStatus = (value) => dispatchEvent(`mantine-form:${name}:set-dirty`, value);\n\n const setTouched: SetFormStatus = (value) =>\n dispatchEvent(`mantine-form:${name}:set-touched`, value);\n\n const resetDirty: ResetDirty<FormValues> = (values) =>\n dispatchEvent(`mantine-form:${name}:reset-dirty`, values);\n\n const resetTouched: ResetStatus = () => dispatchEvent(`mantine-form:${name}:reset-touched`);\n\n return {\n setFieldValue,\n setValues,\n setInitialValues,\n setErrors,\n setFieldError,\n clearFieldError,\n clearErrors,\n reset,\n validate,\n validateField,\n reorderListItem,\n removeListItem,\n insertListItem,\n setDirty,\n setTouched,\n resetDirty,\n resetTouched,\n };\n}\n\nfunction useFormEvent(eventKey: string | undefined, handler: (event: any) => void) {\n useIsomorphicEffect(() => {\n if (eventKey) {\n window.addEventListener(eventKey, handler);\n return () => window.removeEventListener(eventKey, handler);\n }\n return undefined;\n }, [eventKey]);\n}\n\nexport function useFormActions<Values = Record<string, unknown>, TransformedValues = Values>(\n name: string | undefined,\n form: UseFormReturnType<Values, TransformedValues, any>\n) {\n if (name) {\n validateFormName(name);\n }\n\n useFormEvent(`mantine-form:${name}:set-field-value`, (event: CustomEvent) =>\n form.setFieldValue(event.detail.path, event.detail.value)\n );\n\n useFormEvent(`mantine-form:${name}:set-values`, (event: CustomEvent) =>\n form.setValues(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:set-initial-values`, (event: CustomEvent) =>\n form.setInitialValues(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:set-errors`, (event: CustomEvent) =>\n form.setErrors(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:set-field-error`, (event: CustomEvent) =>\n form.setFieldError(event.detail.path, event.detail.error)\n );\n\n useFormEvent(`mantine-form:${name}:clear-field-error`, (event: CustomEvent) =>\n form.clearFieldError(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:clear-errors`, form.clearErrors);\n useFormEvent(`mantine-form:${name}:reset`, form.reset);\n useFormEvent(`mantine-form:${name}:validate`, form.validate);\n\n useFormEvent(`mantine-form:${name}:validate-field`, (event: CustomEvent) =>\n form.validateField(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:reorder-list-item`, (event: CustomEvent) =>\n form.reorderListItem(event.detail.path, event.detail.payload)\n );\n\n useFormEvent(`mantine-form:${name}:remove-list-item`, (event: CustomEvent) =>\n form.removeListItem(event.detail.path, event.detail.index)\n );\n\n useFormEvent(`mantine-form:${name}:insert-list-item`, (event: CustomEvent) =>\n form.insertListItem(event.detail.path, event.detail.item, event.detail.index)\n );\n\n useFormEvent(`mantine-form:${name}:set-dirty`, (event: CustomEvent) =>\n form.setDirty(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:set-touched`, (event: CustomEvent) =>\n form.setTouched(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:reset-dirty`, (event: CustomEvent) =>\n form.resetDirty(event.detail)\n );\n\n useFormEvent(`mantine-form:${name}:reset-touched`, form.resetTouched);\n}\n"],"mappings":"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"}