@grafana/ui
Version:
Grafana Components Library
1 lines • 2.69 kB
Source Map (JSON)
{"version":3,"file":"Form.mjs","sources":["../../../../src/components/Forms/Form.tsx"],"sourcesContent":["import { css } from '@emotion/css';\nimport { HTMLProps, useEffect } from 'react';\nimport * as React from 'react';\nimport { useForm, Mode, DefaultValues, SubmitHandler, FieldValues } from 'react-hook-form';\n\nimport { FormAPI } from '../../types/forms';\n\ninterface FormProps<T extends FieldValues> extends Omit<HTMLProps<HTMLFormElement>, 'onSubmit' | 'children'> {\n validateOn?: Mode;\n validateOnMount?: boolean;\n validateFieldsOnMount?: string | string[];\n defaultValues?: DefaultValues<T>;\n onSubmit: SubmitHandler<T>;\n children: (api: FormAPI<T>) => React.ReactNode;\n /** Sets max-width for container. Use it instead of setting individual widths on inputs.*/\n maxWidth?: number | 'none';\n}\n\n/**\n * @deprecated use the `useForm` hook from react-hook-form instead\n *\n * https://developers.grafana.com/ui/latest/index.html?path=/docs/forms-form--docs\n */\nexport function Form<T extends FieldValues>({\n defaultValues,\n onSubmit,\n validateOnMount = false,\n validateFieldsOnMount,\n children,\n validateOn = 'onSubmit',\n maxWidth = 600,\n ...htmlProps\n}: FormProps<T>) {\n const { handleSubmit, trigger, formState, ...rest } = useForm<T>({\n mode: validateOn,\n defaultValues,\n });\n\n useEffect(() => {\n if (validateOnMount) {\n //@ts-expect-error\n trigger(validateFieldsOnMount);\n }\n }, [trigger, validateFieldsOnMount, validateOnMount]);\n\n return (\n <form\n className={css({\n maxWidth: maxWidth !== 'none' ? maxWidth + 'px' : maxWidth,\n width: '100%',\n })}\n onSubmit={handleSubmit(onSubmit)}\n {...htmlProps}\n >\n {children({ errors: formState.errors, formState, trigger, ...rest })}\n </form>\n );\n}\n"],"names":[],"mappings":";;;;;;AAuBO,SAAS,IAAA,CAA4B;AAAA,EAC1C,aAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA,GAAkB,KAAA;AAAA,EAClB,qBAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA,GAAa,UAAA;AAAA,EACb,QAAA,GAAW,GAAA;AAAA,EACX,GAAG;AACL,CAAA,EAAiB;AACf,EAAA,MAAM,EAAE,YAAA,EAAc,OAAA,EAAS,WAAW,GAAG,IAAA,KAAS,OAAA,CAAW;AAAA,IAC/D,IAAA,EAAM,UAAA;AAAA,IACN;AAAA,GACD,CAAA;AAED,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,eAAA,EAAiB;AAEnB,MAAA,OAAA,CAAQ,qBAAqB,CAAA;AAAA,IAC/B;AAAA,EACF,CAAA,EAAG,CAAC,OAAA,EAAS,qBAAA,EAAuB,eAAe,CAAC,CAAA;AAEpD,EAAA,uBACE,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,WAAW,GAAA,CAAI;AAAA,QACb,QAAA,EAAU,QAAA,KAAa,MAAA,GAAS,QAAA,GAAW,IAAA,GAAO,QAAA;AAAA,QAClD,KAAA,EAAO;AAAA,OACR,CAAA;AAAA,MACD,QAAA,EAAU,aAAa,QAAQ,CAAA;AAAA,MAC9B,GAAG,SAAA;AAAA,MAEH,QAAA,EAAA,QAAA,CAAS,EAAE,MAAA,EAAQ,SAAA,CAAU,QAAQ,SAAA,EAAW,OAAA,EAAS,GAAG,IAAA,EAAM;AAAA;AAAA,GACrE;AAEJ;;;;"}