---
tags: zeta-dom-react
---
# Change log
## v0.4.7 (2023/6/13)
#### Data view
- <kbd>fix</kbd> latest state not persisted after leaving and traversing back
#### Forms
- <kbd>fix</kbd> `DateField` normalizes value to incorrect date or causes component to update indefinitely when selected date is not in the same timezone as current time due to daylight saving adjustment
- <kbd>fix</kbd> latest statenot persisted after leaving and traversing back
## v0.4.6 (2023/6/7)
#### Utilties
- Add `useSingleton` hook
- Support `AbortSignal` and abortion in `useAsync` [[link]](/Rk3_Cez4RFyniUeMMN0eSA#Abort-signal)
- <kbd>fix</kbd> Callback passed to `useAsync` got invoked twice when component is mounted
#### Forms
- <kbd>fix</kbd> Setting `form.preventLeave` to `false` should unlock form element
## v0.4.5 (2023/5/30)
#### Forms
- Add `form.clear` method
- Stricter condition for `preventLeave`
- <kbd>fix</kbd> `toggleValue` from `MultiChoiceField` has incorrect behavior
## v0.4.4 (2023/5/5)
#### Utilties
- Add `domEventRef` [[link]](/nG1bjWUzQ7Ssjd-Wz4cMPQ#domEventRef)
- Add `emit` method to error handler [[link]](/H4Ay9ZioRB-RuMlU99Geiw#Emit-error)
#### Forms
- Add `form.getErrors` method [[link]](/hm3O3ZvVR0KCsrpDxr44Iw#FormContextgetErrors)
- <kbd>fix</kbd> an bug that could cause page halted with `ChoiceField` [[link]](/i3HSJw6iTDGGT2f8dhC8ug#Choice-field-causing-parent-component-to-update-indefinitely)
- <kbd>fix</kbd> `validateToChange` prop on field level should override form options
## v0.4.3 (2023/4/28)
#### Utilities
- <kbd>fix</kbd> import error for `useMemoizedFunction` introduced in `v0.4.2`
#### Forms
- <kbd>fix</kbd> value in `form.data` object are not synchronized when setting new value does not actually update the value
- <kbd>fix</kbd> a property named `undefined` is created on `form.data` if an unnamed field is associated to a form context
## v0.4.2 (2023/4/24)
#### Utilities
- `ErrorHandler.catch` now accepts multiple error codes or constructors [[link]](/FH4Ay9ZioRB-RuMlU99Geiw#Selective-handling)
#### Forms
- Add `DateField` [[link]](/GCsLwFamS8SR5GCtENrv1Q#DateField)
- Allow focus to first erreous or empty field
- <kbd>fix</kbd> `autoPersist` flag disabled in dev strict mode
- <kbd>fix</kbd> missing `disabled` in `inputProps` for `TextField`
## v0.4.1 (2023/4/13)
#### Utilities
- <kbd>fix</kbd> `useMediaQuery` did not trigger re-render in dev strict mode
#### Forms
- Add `NumericField` [[link]](/GCsLwFamS8SR5GCtENrv1Q#NumericField)
- Add `ValidationError` and `formatError` for customizing error messages [[link]](/g1sBlRuqTgmVDWxrbAzMKA)
- <kbd>fix</kbd> normalize value to boolean for `ToggleField`
## v0.4.0 (2023/3/29)
#### Utilities
- Add `debounce` param to `useAsync` [[link]](/Rk3_Cez4RFyniUeMMN0eSA#Debounce)
#### Forms
- Support nested data object and array [[link]](/JlrFmnLARd6roNfEjIbxhQ)
- Add static method `FormContext.get` [[link]](/hm3O3ZvVR0KCsrpDxr44Iw%23FormContext-class#static-FormContextget)
- Add overload `FormContext.element` and `FormContext.focus` method
- `FormContext.focus` method now returns a boolean whether focus is set
- <kbd>fix</kbd> field not working properly in dev strict mode
- <kbd>fix</kbd> `FormContext.validate` method should return `false` when a required field is empty
- <kbd>fix</kbd> `FormContext.validate` method should not validate disabled field
## v0.3.11 (2023/2/18)
#### Forms
- Add `defaultValue` and `normalizeValue` to field type
- <kbd>fix</kbd> `onChange` should be called with current value when resetting form
- <kbd>fix</kbd> `onChange` are not called when no form context
## v0.3.10 (2023/2/3)
#### Utilities
- <kbd>fix</kbd> Incorrect initial state for `useAsync` when `autoload` is false
- <kbd>fix</kbd> Issue with strict mode in React 18
#### Forms
- <kbd>fix</kbd> Type inference issue
- <kbd>fix</kbd> Value for controlled field cannot be updated
## v0.3.8 (2023/1/17)
#### Forms
- <kbd>feat</kbd> Add `FormContext.getError` method
- <kbd>fix</kbd> Unable to create property on `FormContext.data` with `undefined` value
- <kbd>fix</kbd> Property being re-created for unrendered field after reset or property is deleted
## v0.3.7 (2023/1/10)
#### Forms
- <kbd>fix</kbd> Rerender with correct value for `useFormField` when name is changed
- <kbd>fix</kbd> Reset error state for `useFormField` when name is changed
- <kbd>fix</kbd> Prevent from leaving if `beforeLeave` event is not handled
## v0.3.6 (2022/12/21)
#### Forms
- <kbd>feat</kbd> Add `FormFieldProps.clearWhenUnmount`
- <kbd>fix</kbd> Trigger `dataChange` event when property is created on or deleted from `FormContext.data`
- <kbd>fix</kbd> Trigger `validationChange` event when passing error by field props
- <kbd>fix</kbd> Prevent component update after unmount when using `useFormContext`
## v0.3.5 (2022/11/19)
#### Forms
- <kbd>feat</kbd> Add `preventLeave` option
- <kbd>feat</kbd> New way to define custom field types
- <kbd>fix</kbd> `dataChange` event may report duplicated keys
## v0.3.4 (2022/11/11)
#### Utilities
- <kbd>feat</kbd> Add `useUpdateTrigger`
- <kbd>fix</kbd> Unnecessary effect execution in `useBreakpoint`
#### Forms
- <kbd>feat</kbd> Add `FormContext.toJSON` method
- <kbd>feat</kbd> Handle native form `reset` event
- <kbd>feat</kbd> Add optional `FormFieldProps.label` prop
- <kbd>fix</kbd> Force component update after reset
- <kbd>fix</kbd> Incorrect `isValid` state after reset
- <kbd>fix</kbd> Setting error by `error` prop or `FormContext.setError` should invalidate form
## v0.3.3 (2022/11/3)
#### Forms
- <kbd>feat</kbd> Add `FormContext.ref`
- <kbd>feat</kbd> Update default `isEmpty` condition, and allow to override by field types
### Miscellanous
- <kbd>fix</kbd> Expose correct file in unpkg
## v0.3.2 (2022/8/24)
#### Utilities
- <kbd>feat</kbd> Add `useErrorHandler` replacing `useErrorHandlerRef`
- <kbd>feat</kbd> Emit `load` event from `useAsync`
- <kbd>fix</kbd> Forward `error` event to `zeta.dom` from `useAsync` if it is not handled
- <kbd>fix</kbd> Component will be rerendered when loading starts
#### Forms
- <kbd>feat</kbd> Add `Form` component for rendering `<form>` element
- <kbd>feat</kbd> Add `enterKeyHint` options for `FormContext`
- <kbd>feat</kbd> Add field type for extensibility
- <kbd>feat</kbd> Expose current form object in `FormFieldState.form`
## v0.3.1 (2022/8/4)
#### Utilities
- <kbd>feat</kbd> Add `innerTextOrHTML` and `withSuspense`
- <kbd>fix</kbd> Reduce component rerendering by `useAsync`
#### Forms
- <kbd>fix</kbd> `onChange` callback should be called for uncontrolled field
## v0.3.0 (2022/7/18)
#### Data view
- **Breaking change:** `DataView.getView` no longer reverse item orderings for the array returned from callback when `sortOrder` is `desc`; the callback must handle the descending order manually
- <kbd>feat</kbd> Add `DataView.sort` method
- <kbd>fix</kbd> `viewChange` event was not emitted when `DataView` was not created in by `useDataView` hook
- <kbd>fix</kbd> Maintain previous order unchanged for items in the same order in new sorting logic
> For example given an array of items [A,B,C,D,E] that is currently sorted as [E,B,D,C,A], then for a new sorting logic that results in [E>B=C=D>A], the result ordering should be [E,B,D,C,A]; in the sense that [B,D,C] remains their order unchanged.
- <kbd>fix</kbd> `DataView.getView` should sort items if callback is not supplied
#### Forms
- <kbd>feat</kbd> Add `FormContext.setError` method