Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

use-get-form-values.ts 1.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import { useCallback } from 'react'
  2. import type { AnyFormApi } from '@tanstack/react-form'
  3. import { useCheckValidated } from './use-check-validated'
  4. import type {
  5. FormSchema,
  6. GetValuesOptions,
  7. } from '../types'
  8. import { getTransformedValuesWhenSecretInputPristine } from '../utils'
  9. export const useGetFormValues = (form: AnyFormApi, formSchemas: FormSchema[]) => {
  10. const { checkValidated } = useCheckValidated(form, formSchemas)
  11. const getFormValues = useCallback((
  12. {
  13. needCheckValidatedValues,
  14. needTransformWhenSecretFieldIsPristine,
  15. }: GetValuesOptions,
  16. ) => {
  17. const values = form?.store.state.values || {}
  18. if (!needCheckValidatedValues) {
  19. return {
  20. values,
  21. isCheckValidated: false,
  22. }
  23. }
  24. if (checkValidated()) {
  25. return {
  26. values: needTransformWhenSecretFieldIsPristine ? getTransformedValuesWhenSecretInputPristine(formSchemas, form) : values,
  27. isCheckValidated: true,
  28. }
  29. }
  30. else {
  31. return {
  32. values: {},
  33. isCheckValidated: false,
  34. }
  35. }
  36. }, [form, checkValidated, formSchemas])
  37. return {
  38. getFormValues,
  39. }
  40. }