@contember/react-form 2.1.0-alpha.8 → 2.1.0-beta.1

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 (83) hide show
  1. package/CLAUDE.md +19 -0
  2. package/dist/development/index.cjs +6 -6
  3. package/dist/development/index.js +3 -3
  4. package/dist/development/src/components/FormCheckbox.cjs +2 -2
  5. package/dist/development/src/components/FormCheckbox.cjs.map +1 -1
  6. package/dist/development/src/components/FormCheckbox.js +2 -2
  7. package/dist/development/src/components/FormCheckbox.js.map +1 -1
  8. package/dist/development/src/components/FormError.cjs.map +1 -1
  9. package/dist/development/src/components/FormError.js.map +1 -1
  10. package/dist/development/src/components/FormFieldScope.cjs.map +1 -1
  11. package/dist/development/src/components/FormFieldScope.js.map +1 -1
  12. package/dist/development/src/components/FormFieldStateProvider.cjs +2 -2
  13. package/dist/development/src/components/FormFieldStateProvider.cjs.map +1 -1
  14. package/dist/development/src/components/FormFieldStateProvider.js +4 -4
  15. package/dist/development/src/components/FormFieldStateProvider.js.map +1 -1
  16. package/dist/development/src/components/FormHasManyRelationScope.cjs.map +1 -1
  17. package/dist/development/src/components/FormHasManyRelationScope.js.map +1 -1
  18. package/dist/development/src/components/FormHasOneRelationScope.cjs.map +1 -1
  19. package/dist/development/src/components/FormHasOneRelationScope.js.map +1 -1
  20. package/dist/development/src/components/FormInput.cjs +47 -44
  21. package/dist/development/src/components/FormInput.cjs.map +1 -1
  22. package/dist/development/src/components/FormInput.js +47 -44
  23. package/dist/development/src/components/FormInput.js.map +1 -1
  24. package/dist/development/src/components/FormLabel.cjs.map +1 -1
  25. package/dist/development/src/components/FormLabel.js.map +1 -1
  26. package/dist/development/src/components/FormRadioInput.cjs.map +1 -1
  27. package/dist/development/src/components/FormRadioInput.js.map +1 -1
  28. package/dist/development/src/contexts.cjs.map +1 -1
  29. package/dist/development/src/contexts.js.map +1 -1
  30. package/dist/development/src/hooks/useFormInputValidationHandler.cjs +1 -1
  31. package/dist/development/src/hooks/useFormInputValidationHandler.cjs.map +1 -1
  32. package/dist/development/src/hooks/useFormInputValidationHandler.js +1 -1
  33. package/dist/development/src/hooks/useFormInputValidationHandler.js.map +1 -1
  34. package/dist/development/src/internal/useFormInputHandler.cjs.map +1 -1
  35. package/dist/development/src/internal/useFormInputHandler.js.map +1 -1
  36. package/dist/production/index.cjs +6 -6
  37. package/dist/production/index.js +3 -3
  38. package/dist/production/src/components/FormCheckbox.cjs.map +1 -1
  39. package/dist/production/src/components/FormCheckbox.js.map +1 -1
  40. package/dist/production/src/components/FormError.cjs.map +1 -1
  41. package/dist/production/src/components/FormError.js.map +1 -1
  42. package/dist/production/src/components/FormFieldScope.cjs.map +1 -1
  43. package/dist/production/src/components/FormFieldScope.js.map +1 -1
  44. package/dist/production/src/components/FormFieldStateProvider.cjs.map +1 -1
  45. package/dist/production/src/components/FormFieldStateProvider.js +1 -1
  46. package/dist/production/src/components/FormFieldStateProvider.js.map +1 -1
  47. package/dist/production/src/components/FormHasManyRelationScope.cjs.map +1 -1
  48. package/dist/production/src/components/FormHasManyRelationScope.js.map +1 -1
  49. package/dist/production/src/components/FormHasOneRelationScope.cjs.map +1 -1
  50. package/dist/production/src/components/FormHasOneRelationScope.js.map +1 -1
  51. package/dist/production/src/components/FormInput.cjs +36 -33
  52. package/dist/production/src/components/FormInput.cjs.map +1 -1
  53. package/dist/production/src/components/FormInput.js +36 -33
  54. package/dist/production/src/components/FormInput.js.map +1 -1
  55. package/dist/production/src/components/FormLabel.cjs.map +1 -1
  56. package/dist/production/src/components/FormLabel.js.map +1 -1
  57. package/dist/production/src/components/FormRadioInput.cjs.map +1 -1
  58. package/dist/production/src/components/FormRadioInput.js.map +1 -1
  59. package/dist/production/src/contexts.cjs.map +1 -1
  60. package/dist/production/src/contexts.js.map +1 -1
  61. package/dist/production/src/hooks/useFormInputValidationHandler.cjs +1 -1
  62. package/dist/production/src/hooks/useFormInputValidationHandler.cjs.map +1 -1
  63. package/dist/production/src/hooks/useFormInputValidationHandler.js +1 -1
  64. package/dist/production/src/hooks/useFormInputValidationHandler.js.map +1 -1
  65. package/dist/production/src/internal/useFormInputHandler.cjs.map +1 -1
  66. package/dist/production/src/internal/useFormInputHandler.js.map +1 -1
  67. package/dist/types/components/FormCheckbox.d.ts.map +1 -1
  68. package/dist/types/components/FormError.d.ts +1 -1
  69. package/dist/types/components/FormError.d.ts.map +1 -1
  70. package/dist/types/components/FormFieldStateProvider.d.ts.map +1 -1
  71. package/dist/types/components/FormInput.d.ts.map +1 -1
  72. package/dist/types/contexts.d.ts.map +1 -1
  73. package/dist/types/hooks/useFormInputValidationHandler.d.ts +1 -1
  74. package/dist/types/tsconfig.tsbuildinfo +1 -1
  75. package/package.json +10 -10
  76. package/src/components/FormCheckbox.tsx +2 -1
  77. package/src/components/FormError.tsx +1 -1
  78. package/src/components/FormFieldStateProvider.tsx +0 -2
  79. package/src/components/FormInput.tsx +35 -32
  80. package/src/components/FormRadioInput.tsx +1 -1
  81. package/src/contexts.tsx +0 -2
  82. package/src/hooks/useFormInputValidationHandler.tsx +1 -1
  83. package/src/internal/useFormInputHandler.ts +6 -6
@@ -34,7 +34,6 @@ export const FormFieldIdContext = {
34
34
  Provider: ({ children, value }: { children: React.ReactNode; value: string }) => {
35
35
  const state = useFormFieldState()
36
36
  if (import.meta.env.DEV) {
37
- // eslint-disable-next-line react-hooks/rules-of-hooks
38
37
  useEffect(() => {
39
38
  console.warn('FormFieldIdContext.Provider is deprecated, use FormFieldStateProvider instead')
40
39
  }, [])
@@ -57,7 +56,6 @@ export const FormErrorContext = {
57
56
  Provider: ({ children, value }: { children: React.ReactNode; value: ErrorAccessor.Error[] }) => {
58
57
  const state = useFormFieldState()
59
58
  if (import.meta.env.DEV) {
60
- // eslint-disable-next-line react-hooks/rules-of-hooks
61
59
  useEffect(() => {
62
60
  console.warn('FormErrorContext.Provider is deprecated, use FormFieldStateProvider instead')
63
61
  }, [])
@@ -21,39 +21,42 @@ export interface FormInputProps {
21
21
  parseValue?: FormInputHandler['parseValue']
22
22
  }
23
23
 
24
- export const FormInput = Component<FormInputProps>(({ field, isNonbearing, defaultValue, formatValue: formatValueIn, parseValue: parseValueIn, ...props }) => {
25
- const accessor = useField(field)
24
+ export const FormInput = Component<FormInputProps>(
25
+ ({ field, isNonbearing, defaultValue, formatValue: formatValueIn, parseValue: parseValueIn, ...props }) => {
26
+ const accessor = useField(field)
26
27
 
27
- const formState = useFormFieldState()
28
- const id = formState?.htmlId
29
- const hasErrors = (formState?.errors.length ?? accessor.errors?.errors?.length ?? 0) > 0
30
- const dirty = formState?.dirty ?? accessor.hasUnpersistedChanges
31
- const required = formState?.required ?? !accessor.schema.nullable
28
+ const formState = useFormFieldState()
29
+ const id = formState?.htmlId
30
+ const hasErrors = (formState?.errors.length ?? accessor.errors?.errors?.length ?? 0) > 0
31
+ const dirty = formState?.dirty ?? accessor.hasUnpersistedChanges
32
+ const required = formState?.required ?? !accessor.schema.nullable
32
33
 
33
- const [state, setState] = useState<any>(undefined)
34
+ const [state, setState] = useState<any>(undefined)
34
35
 
35
- const { parseValue, formatValue, defaultInputProps } = useFormInputHandler(accessor, { formatValue: formatValueIn, parseValue: parseValueIn })
36
- const accessorGetter = accessor.getAccessor
37
- const { ref, onFocus, onBlur } = useFormInputValidationHandler(accessor)
36
+ const { parseValue, formatValue, defaultInputProps } = useFormInputHandler(accessor, { formatValue: formatValueIn, parseValue: parseValueIn })
37
+ const accessorGetter = accessor.getAccessor
38
+ const { ref, onFocus, onBlur } = useFormInputValidationHandler(accessor)
38
39
 
39
- return (
40
- <SlotInput
41
- ref={ref}
42
- value={formatValue(accessor.value, { state, setState })}
43
- data-invalid={dataAttribute(hasErrors)}
44
- data-dirty={dataAttribute(dirty)}
45
- data-required={dataAttribute(required)}
46
- onFocus={onFocus}
47
- onBlur={onBlur}
48
- onChange={useReferentiallyStableCallback<ChangeEventHandler<HTMLInputElement>>(e => {
49
- accessorGetter().updateValue(parseValue(e.target.value, { state, setState }))
50
- })}
51
- {...defaultInputProps}
52
- id={id ? `${id}-input` : undefined}
53
- required={required}
54
- {...props}
55
- />
56
- )
57
- }, ({ field, isNonbearing, defaultValue }) => {
58
- return <Field field={field} isNonbearing={isNonbearing} defaultValue={defaultValue} />
59
- })
40
+ return (
41
+ <SlotInput
42
+ ref={ref}
43
+ value={formatValue(accessor.value, { state, setState })}
44
+ data-invalid={dataAttribute(hasErrors)}
45
+ data-dirty={dataAttribute(dirty)}
46
+ data-required={dataAttribute(required)}
47
+ onFocus={onFocus}
48
+ onBlur={onBlur}
49
+ onChange={useReferentiallyStableCallback<ChangeEventHandler<HTMLInputElement>>(e => {
50
+ accessorGetter().updateValue(parseValue(e.target.value, { state, setState }))
51
+ })}
52
+ {...defaultInputProps}
53
+ id={id ? `${id}-input` : undefined}
54
+ required={required}
55
+ {...props}
56
+ />
57
+ )
58
+ },
59
+ ({ field, isNonbearing, defaultValue }) => {
60
+ return <Field field={field} isNonbearing={isNonbearing} defaultValue={defaultValue} />
61
+ },
62
+ )
@@ -48,5 +48,5 @@ export const FormRadioInput = Component<FormRadioItemProps>(({ field, value, def
48
48
  />
49
49
  )
50
50
  }, ({ field, isNonbearing, defaultValue }) => {
51
- return <Field field={field} isNonbearing={isNonbearing} defaultValue={defaultValue}/>
51
+ return <Field field={field} isNonbearing={isNonbearing} defaultValue={defaultValue} />
52
52
  })
package/src/contexts.tsx CHANGED
@@ -1,12 +1,10 @@
1
1
  import { createContext } from '@contember/react-utils'
2
2
  import { FormFieldState } from './types'
3
3
 
4
-
5
4
  const FormFieldStateContext_ = createContext<FormFieldState | undefined>('FormFieldStateContext', undefined)
6
5
  export const FormFieldStateContext = FormFieldStateContext_[0]
7
6
  export const useFormFieldState = FormFieldStateContext_[1]
8
7
 
9
-
10
8
  /**
11
9
  * @deprecated use `useFormState` instead
12
10
  */
@@ -4,7 +4,7 @@ import { FieldAccessor, useEntityBeforePersist } from '@contember/react-binding'
4
4
 
5
5
  export const useFormInputValidationHandler = (field: FieldAccessor<any>) => {
6
6
  const accessorGetter = field.getAccessor
7
- const validationMessage = useRef<string>()
7
+ const validationMessage = useRef<string>(undefined)
8
8
  const [focus, setFocus] = React.useState(false)
9
9
  const inputRef = React.useRef<HTMLInputElement>(null)
10
10
  useEntityBeforePersist(useCallback(() => {
@@ -125,10 +125,10 @@ const toLocalDate = (date: Date) => {
125
125
  return '0'.repeat(Math.max(0, length - str.length)) + str
126
126
  }
127
127
 
128
- return pad(date.getFullYear(), 4) +
129
- '-' + pad(date.getMonth() + 1) +
130
- '-' + pad(date.getDate()) +
131
- 'T' + pad(date.getHours()) +
132
- ':' + pad(date.getMinutes()) +
133
- ':' + pad(date.getSeconds())
128
+ return pad(date.getFullYear(), 4)
129
+ + '-' + pad(date.getMonth() + 1)
130
+ + '-' + pad(date.getDate())
131
+ + 'T' + pad(date.getHours())
132
+ + ':' + pad(date.getMinutes())
133
+ + ':' + pad(date.getSeconds())
134
134
  }