File tree Expand file tree Collapse file tree 3 files changed +14
-5
lines changed
Expand file tree Collapse file tree 3 files changed +14
-5
lines changed Original file line number Diff line number Diff line change @@ -21,7 +21,7 @@ const $ExampleFormData = z.object({
2121 z . object ( {
2222 recordArrayStringInput : z . string ( ) ,
2323 showRecordArrayDynamicField : z . boolean ( ) ,
24- recordArrayDynamicField : z . string ( )
24+ recordArrayDynamicField : z . string ( ) . optional ( )
2525 } )
2626 ) ,
2727 date : z . date ( ) . optional ( ) ,
Original file line number Diff line number Diff line change 1- import { useEffect } from 'react' ;
1+ import { useEffect , useRef } from 'react' ;
22
33import type {
44 NumberRecordFieldValue ,
@@ -27,8 +27,13 @@ export const NumberRecordField = <T extends NumberRecordFieldValue = NumberRecor
2727 setValue : setRecordValue ,
2828 value : recordValue
2929} : NumberRecordFieldProps < T > ) => {
30+ const isFirstRenderRef = useRef ( true ) ;
31+
3032 useEffect ( ( ) => {
31- setRecordValue ( { } ) ;
33+ if ( ( isFirstRenderRef . current && ! recordValue ) || ! isFirstRenderRef . current ) {
34+ setRecordValue ( { } ) ;
35+ }
36+ isFirstRenderRef . current = false ;
3237 } , [ options ] ) ;
3338
3439 if ( ! recordValue ) {
Original file line number Diff line number Diff line change 1- import { memo , useEffect } from 'react' ;
1+ import { memo , useEffect , useRef } from 'react' ;
22
33import type { RecordArrayFieldValue , RecordArrayFormField } from '@douglasneuroinformatics/libui-form-types' ;
44import { MinusCircleIcon , PlusCircleIcon } from 'lucide-react' ;
@@ -25,12 +25,16 @@ export const RecordArrayField = memo(function RecordArrayField({
2525 setValue : setArrayValue ,
2626 value : arrayValue
2727} : RecordArrayFieldProps ) {
28+ const isFirstRenderRef = useRef ( true ) ;
2829 const { t } = useTranslation ( 'libui' ) ;
2930
3031 const createNewRecord = ( ) => Object . fromEntries ( Object . keys ( fieldset ) . map ( ( fieldName ) => [ fieldName , undefined ] ) ) ;
3132
3233 useEffect ( ( ) => {
33- setArrayValue ( [ createNewRecord ( ) ] ) ;
34+ if ( ( isFirstRenderRef . current && ! arrayValue ) || ! isFirstRenderRef . current ) {
35+ setArrayValue ( [ createNewRecord ( ) ] ) ;
36+ }
37+ isFirstRenderRef . current = false ;
3438 } , [ fieldset ] ) ;
3539
3640 if ( ! arrayValue ) {
You can’t perform that action at this time.
0 commit comments