@@ -8,7 +8,7 @@ import type { IOEither } from 'fp-ts/IOEither'
88import type { IOOption } from 'fp-ts/IOOption'
99import type { Eq } from 'fp-ts/lib/Eq'
1010import type { Show } from 'fp-ts/lib/Show'
11- import type IO from 'fp-ts/IO'
11+ import * as IO from 'fp-ts/IO'
1212import * as A from 'fp-ts/Array'
1313import * as IOE from 'fp-ts/IOEither'
1414import * as IOO from 'fp-ts/IOOption'
@@ -137,6 +137,7 @@ export type ShareDataSlice = {
137137 id : string ,
138138 value : FormItemValue
139139 ) => IOEither < ResourceNotFoundError | PayloadIsEmptyError | FormItemWrongTypeError , void >
140+ hasTextFieldValue : ( id : FormItemId ) => IO . IO < boolean >
140141 }
141142}
142143const eqFormItemId : Eq < FormItemId > = S . Eq
@@ -286,6 +287,8 @@ export const isDateStringRange = (formItemValue: FormItemValue): formItemValue i
286287 'from' in formItemValue &&
287288 'to' in formItemValue
288289
290+ export const isTextField = ( item : FormItem ) : item is TextField => item . type === 'text'
291+
289292const updateFormItem =
290293 ( updatedValue : FormItemValue ) =>
291294 ( formItem : FormItem ) : E . Either < FormItemWrongTypeError , FormItem > => {
@@ -433,6 +436,23 @@ export const createShareDataSlice: ShareDataStateCreator =
433436 IOO . fromIO ( ( ) => get ( ) . shareData . form ) ,
434437 IOO . chainOptionK ( flow ( A . findFirst ( formItem => eqFormItem . equals ( formItem , { id } ) ) ) )
435438 ) ,
439+ hasTextFieldValue : ( id : FormItemId ) =>
440+ pipe (
441+ IOO . fromIO ( ( ) => get ( ) . shareData . form ) ,
442+ IOO . chainOptionK ( flow ( A . findFirst ( formItem => eqFormItem . equals ( formItem , { id } ) ) ) ) ,
443+ IOO . flatMap ( formItem =>
444+ IOO . fromOption (
445+ pipe (
446+ formItem ,
447+ O . fromPredicate ( isTextField ) ,
448+ O . flatMap ( ( { value } ) => value ) ,
449+ O . map ( S . trim ) ,
450+ O . map ( isNotEmpty )
451+ )
452+ )
453+ ) ,
454+ IOO . getOrElse ( constant ( IO . of ( false ) ) )
455+ ) ,
436456 setFormItemValue : ( id : string , value : FormItemValue ) =>
437457 pipe (
438458 id ,
0 commit comments