@dnb/eufemia 10.63.2 → 10.63.4

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 (132) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/cjs/components/avatar/Avatar.d.ts +1 -1
  3. package/cjs/components/avatar/Avatar.js.map +1 -1
  4. package/cjs/components/avatar/AvatarGroup.d.ts +1 -1
  5. package/cjs/components/avatar/AvatarGroup.js.map +1 -1
  6. package/cjs/components/badge/Badge.d.ts +1 -1
  7. package/cjs/components/badge/Badge.js.map +1 -1
  8. package/cjs/components/form-status/FormStatus.js +3 -2
  9. package/cjs/components/form-status/FormStatus.js.map +1 -1
  10. package/cjs/components/lib.d.ts +2 -2
  11. package/cjs/components/section/Section.js +1 -1
  12. package/cjs/components/section/Section.js.map +1 -1
  13. package/cjs/components/tag/Tag.d.ts +2 -2
  14. package/cjs/components/tag/Tag.js.map +1 -1
  15. package/cjs/components/tag/TagGroup.d.ts +1 -1
  16. package/cjs/components/tag/TagGroup.js.map +1 -1
  17. package/cjs/extensions/forms/DataContext/Context.d.ts +4 -1
  18. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  19. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +3 -0
  20. package/cjs/extensions/forms/DataContext/Provider/Provider.js +60 -43
  21. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  22. package/cjs/extensions/forms/Form/Visibility/useVisibility.js +6 -6
  23. package/cjs/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  24. package/cjs/extensions/forms/Form/data-context/useData.js +14 -10
  25. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
  26. package/cjs/extensions/forms/hooks/useFieldProps.d.ts +4 -1
  27. package/cjs/extensions/forms/hooks/useFieldProps.js +11 -3
  28. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  29. package/cjs/shared/Eufemia.d.ts +1 -1
  30. package/cjs/shared/Eufemia.js +2 -2
  31. package/cjs/shared/Eufemia.js.map +1 -1
  32. package/cjs/shared/error-helper.d.ts +0 -6
  33. package/cjs/shared/error-helper.js +6 -3
  34. package/cjs/shared/error-helper.js.map +1 -1
  35. package/cjs/style/core/scopes.scss +1 -1
  36. package/cjs/style/dnb-ui-basis.css +1 -1
  37. package/cjs/style/dnb-ui-basis.min.css +1 -1
  38. package/cjs/style/dnb-ui-body.css +1 -1
  39. package/cjs/style/dnb-ui-body.min.css +1 -1
  40. package/cjs/style/dnb-ui-core.css +1 -1
  41. package/cjs/style/dnb-ui-core.min.css +1 -1
  42. package/components/avatar/Avatar.d.ts +1 -1
  43. package/components/avatar/Avatar.js.map +1 -1
  44. package/components/avatar/AvatarGroup.d.ts +1 -1
  45. package/components/avatar/AvatarGroup.js.map +1 -1
  46. package/components/badge/Badge.d.ts +1 -1
  47. package/components/badge/Badge.js.map +1 -1
  48. package/components/form-status/FormStatus.js +3 -2
  49. package/components/form-status/FormStatus.js.map +1 -1
  50. package/components/lib.d.ts +2 -2
  51. package/components/section/Section.js +1 -1
  52. package/components/section/Section.js.map +1 -1
  53. package/components/tag/Tag.d.ts +2 -2
  54. package/components/tag/Tag.js.map +1 -1
  55. package/components/tag/TagGroup.d.ts +1 -1
  56. package/components/tag/TagGroup.js.map +1 -1
  57. package/es/components/avatar/Avatar.d.ts +1 -1
  58. package/es/components/avatar/Avatar.js.map +1 -1
  59. package/es/components/avatar/AvatarGroup.d.ts +1 -1
  60. package/es/components/avatar/AvatarGroup.js.map +1 -1
  61. package/es/components/badge/Badge.d.ts +1 -1
  62. package/es/components/badge/Badge.js.map +1 -1
  63. package/es/components/form-status/FormStatus.js +3 -2
  64. package/es/components/form-status/FormStatus.js.map +1 -1
  65. package/es/components/lib.d.ts +2 -2
  66. package/es/components/section/Section.js +1 -1
  67. package/es/components/section/Section.js.map +1 -1
  68. package/es/components/tag/Tag.d.ts +2 -2
  69. package/es/components/tag/Tag.js.map +1 -1
  70. package/es/components/tag/TagGroup.d.ts +1 -1
  71. package/es/components/tag/TagGroup.js.map +1 -1
  72. package/es/extensions/forms/DataContext/Context.d.ts +4 -1
  73. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  74. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +3 -0
  75. package/es/extensions/forms/DataContext/Provider/Provider.js +55 -41
  76. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  77. package/es/extensions/forms/Form/Visibility/useVisibility.js +6 -6
  78. package/es/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  79. package/es/extensions/forms/Form/data-context/useData.js +14 -10
  80. package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
  81. package/es/extensions/forms/hooks/useFieldProps.d.ts +4 -1
  82. package/es/extensions/forms/hooks/useFieldProps.js +11 -2
  83. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  84. package/es/shared/Eufemia.d.ts +1 -1
  85. package/es/shared/Eufemia.js +2 -2
  86. package/es/shared/Eufemia.js.map +1 -1
  87. package/es/shared/error-helper.d.ts +0 -6
  88. package/es/shared/error-helper.js +6 -3
  89. package/es/shared/error-helper.js.map +1 -1
  90. package/es/style/core/scopes.scss +1 -1
  91. package/es/style/dnb-ui-basis.css +1 -1
  92. package/es/style/dnb-ui-basis.min.css +1 -1
  93. package/es/style/dnb-ui-body.css +1 -1
  94. package/es/style/dnb-ui-body.min.css +1 -1
  95. package/es/style/dnb-ui-core.css +1 -1
  96. package/es/style/dnb-ui-core.min.css +1 -1
  97. package/esm/dnb-ui-basis.min.mjs +1 -1
  98. package/esm/dnb-ui-components.min.mjs +1 -1
  99. package/esm/dnb-ui-elements.min.mjs +1 -1
  100. package/esm/dnb-ui-extensions.min.mjs +1 -1
  101. package/esm/dnb-ui-lib.min.mjs +1 -1
  102. package/extensions/forms/DataContext/Context.d.ts +4 -1
  103. package/extensions/forms/DataContext/Context.js.map +1 -1
  104. package/extensions/forms/DataContext/Provider/Provider.d.ts +3 -0
  105. package/extensions/forms/DataContext/Provider/Provider.js +60 -43
  106. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  107. package/extensions/forms/Form/Visibility/useVisibility.js +6 -6
  108. package/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  109. package/extensions/forms/Form/data-context/useData.js +14 -10
  110. package/extensions/forms/Form/data-context/useData.js.map +1 -1
  111. package/extensions/forms/hooks/useFieldProps.d.ts +4 -1
  112. package/extensions/forms/hooks/useFieldProps.js +11 -3
  113. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  114. package/package.json +1 -1
  115. package/shared/Eufemia.d.ts +1 -1
  116. package/shared/Eufemia.js +2 -2
  117. package/shared/Eufemia.js.map +1 -1
  118. package/shared/error-helper.d.ts +0 -6
  119. package/shared/error-helper.js +6 -3
  120. package/shared/error-helper.js.map +1 -1
  121. package/style/core/scopes.scss +1 -1
  122. package/style/dnb-ui-basis.css +1 -1
  123. package/style/dnb-ui-basis.min.css +1 -1
  124. package/style/dnb-ui-body.css +1 -1
  125. package/style/dnb-ui-body.min.css +1 -1
  126. package/style/dnb-ui-core.css +1 -1
  127. package/style/dnb-ui-core.min.css +1 -1
  128. package/umd/dnb-ui-basis.min.js +1 -1
  129. package/umd/dnb-ui-components.min.js +1 -1
  130. package/umd/dnb-ui-elements.min.js +1 -1
  131. package/umd/dnb-ui-extensions.min.js +2 -2
  132. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useData.js","names":["_react","require","_jsonPointer","_interopRequireDefault","_useSharedState","_useMountEffect","_Context","_structuredClone","obj","__esModule","default","useData","id","arguments","length","undefined","initialData","sharedDataRef","useRef","sharedAttachmentsRef","forceUpdate","useReducer","current","useSharedState","createReferenceKey","rerenderUseDataHook","dataContext","useContext","DataContext","hasContext","Error","data","filterDataHandler","updateDataValue","setData","set","useCallback","newData","update","path","value","existingData","structuredClone","existingValue","pointer","has","get","newValue","extend","remove","reduceToVisibleFields","_dataContext$visibleD","options","_sharedAttachmentsRef","_sharedAttachmentsRef2","visibleDataHandler","call","filterData","filter","_dataContext$filterDa","_sharedAttachmentsRef3","_sharedAttachmentsRef4","getValue","useMountEffect","hadInitialData","useMemo"],"sources":["../../../../../../src/extensions/forms/Form/data-context/useData.tsx"],"sourcesContent":["import {\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport pointer, { JsonObject } from '../../utils/json-pointer'\nimport {\n SharedStateId,\n createReferenceKey,\n useSharedState,\n} from '../../../../shared/helpers/useSharedState'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport type { Path } from '../../types'\nimport DataContext, {\n FilterData,\n VisibleDataHandler,\n} from '../../DataContext/Context'\nimport { SharedAttachments } from '../../DataContext/Provider'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So it's a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\ntype PathImpl<T, P extends string> = P extends `${infer Key}/${infer Rest}`\n ? Key extends keyof T\n ? Rest extends ''\n ? T[Key]\n : PathImpl<T[Key], Rest>\n : never\n : T[P & keyof T]\n\nexport type PathType<T, P extends string> = P extends `/${infer Rest}`\n ? PathImpl<T, Rest>\n : never\n\nexport type UseDataReturnUpdate<Data> = <P extends Path>(\n path: P,\n value: ((value: PathType<Data, P>) => unknown) | unknown\n) => void\n\nexport type UseDataReturnGetValue<Data> = <P extends Path>(\n path: P\n) => PathType<Data, P> | any\n\nexport type UseDataReturnFilterData<Data> = (\n filterDataHandler: FilterData,\n data?: Data\n) => Partial<Data>\n\nexport type UseDataReturnVisibleData<Data> = VisibleDataHandler<Data>\n\ntype UseDataReturn<Data> = {\n data: Data\n set: (newData: Data) => void\n update: UseDataReturnUpdate<Data>\n remove: (path: Path) => void\n getValue: UseDataReturnGetValue<Data>\n filterData: UseDataReturnFilterData<Data>\n reduceToVisibleFields: UseDataReturnVisibleData<Data>\n}\n\n/**\n * Custom hook that provides form data management functionality.\n *\n * @template Data - The type of data being managed.\n * @param {SharedStateId} id - The identifier for the data.\n * @param {Data} initialData - The initial data value (optional).\n * @returns {UseDataReturn<Data>} An object containing the data and data management functions.\n */\nexport default function useData<Data = JsonObject>(\n id: SharedStateId = undefined,\n initialData: Data = undefined\n): UseDataReturn<Data> {\n const sharedDataRef =\n useRef<ReturnType<typeof useSharedState<Data>>>(null)\n const sharedAttachmentsRef =\n useRef<ReturnType<typeof useSharedState<SharedAttachments<Data>>>>(\n null\n )\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n sharedDataRef.current = useSharedState<Data>(\n id,\n initialData,\n forceUpdate\n )\n\n sharedAttachmentsRef.current = useSharedState<SharedAttachments<Data>>(\n createReferenceKey(id, 'attachments'),\n { rerenderUseDataHook: forceUpdate }\n )\n\n // If no id is provided, use the context data\n const dataContext = useContext(DataContext)\n if (!id) {\n if (!dataContext.hasContext) {\n throw new Error(\n 'useData needs to run inside DataContext (Form.Handler) or have a valid id'\n )\n }\n\n sharedDataRef.current.data = dataContext.data\n sharedAttachmentsRef.current.data.filterDataHandler =\n dataContext.filterDataHandler\n }\n\n const updateDataValue = dataContext?.updateDataValue\n const setData = dataContext?.setData\n\n const set = useCallback(\n (newData: Data) => {\n if (id) {\n sharedDataRef.current.update(newData)\n } else {\n setData?.(newData)\n }\n },\n [id, setData]\n )\n\n const update = useCallback<UseDataReturnUpdate<Data>>(\n (path, value = undefined) => {\n const existingData = structuredClone(\n sharedDataRef.current.data || {}\n ) as Data & JsonObject\n const existingValue = pointer.has(existingData, path)\n ? pointer.get(existingData, path)\n : undefined\n\n // Get new value\n const newValue =\n typeof value === 'function' ? value(existingValue) : value\n\n if (newValue !== existingValue) {\n // Update existing data\n pointer.set(existingData, path, newValue)\n\n // Update provider with new data\n if (id) {\n sharedDataRef.current.extend(existingData)\n } else {\n updateDataValue(path, newValue)\n }\n }\n },\n [id, updateDataValue]\n )\n\n const remove = useCallback<UseDataReturn<Data>['remove']>(\n (path) => {\n const existingData = structuredClone(\n sharedDataRef.current.data || {}\n ) as Data & JsonObject\n\n if (pointer.has(existingData, path)) {\n // Remove existing data\n pointer.remove(existingData, path)\n\n // Update provider with new data\n if (id) {\n sharedDataRef.current.set(existingData)\n } else {\n updateDataValue(path, undefined)\n }\n }\n },\n [id, updateDataValue]\n )\n\n const reduceToVisibleFields = useCallback<\n UseDataReturn<Data>['reduceToVisibleFields']\n >(\n (data, options = {}) => {\n if (id) {\n return sharedAttachmentsRef.current.data?.visibleDataHandler?.(\n data,\n options\n )\n }\n\n return dataContext?.visibleDataHandler?.(data, options)\n },\n [dataContext, id]\n )\n\n const filterData = useCallback<UseDataReturn<Data>['filterData']>(\n (filter, data = sharedDataRef.current.data) => {\n if (id) {\n return sharedAttachmentsRef.current.data?.filterDataHandler?.(\n data,\n filter\n )\n }\n\n return dataContext?.filterDataHandler?.(data, filter)\n },\n [dataContext, id]\n )\n\n const getValue = useCallback<UseDataReturn<Data>['getValue']>((path) => {\n if (pointer.has(sharedDataRef.current.data, path)) {\n return pointer.get(sharedDataRef.current.data, path)\n }\n\n return undefined\n }, [])\n\n useMountEffect(() => {\n if (id && !sharedDataRef.current.hadInitialData && initialData) {\n sharedDataRef.current.extend(initialData)\n }\n })\n\n const { data } = sharedDataRef.current\n\n return useMemo(\n () => ({\n data,\n remove,\n update,\n set,\n getValue,\n reduceToVisibleFields,\n filterData,\n }),\n [\n data,\n remove,\n update,\n set,\n getValue,\n reduceToVisibleFields,\n filterData,\n ]\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"useData.js","names":["_react","require","_jsonPointer","_interopRequireDefault","_useSharedState","_useMountEffect","_Context","_structuredClone","obj","__esModule","default","useData","id","arguments","length","undefined","initialData","sharedDataRef","useRef","sharedAttachmentsRef","forceUpdate","useReducer","current","useSharedState","createReferenceKey","rerenderUseDataHook","dataContext","useContext","DataContext","hasContext","Error","data","filterDataHandler","updateDataValue","setData","getExistingData","useCallback","_sharedAttachmentsRef","_sharedAttachmentsRef2","_sharedAttachmentsRef3","structuredClone","internalDataRef","set","newData","update","path","value","existingData","existingValue","pointer","has","get","newValue","extend","remove","reduceToVisibleFields","_dataContext$visibleD","options","_sharedAttachmentsRef4","_sharedAttachmentsRef5","visibleDataHandler","call","filterData","filter","_dataContext$filterDa","_sharedAttachmentsRef6","_sharedAttachmentsRef7","getValue","useMountEffect","hadInitialData","useMemo"],"sources":["../../../../../../src/extensions/forms/Form/data-context/useData.tsx"],"sourcesContent":["import {\n useCallback,\n useContext,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\nimport pointer, { JsonObject } from '../../utils/json-pointer'\nimport {\n SharedStateId,\n createReferenceKey,\n useSharedState,\n} from '../../../../shared/helpers/useSharedState'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport type { Path } from '../../types'\nimport DataContext, {\n FilterData,\n VisibleDataHandler,\n} from '../../DataContext/Context'\nimport { SharedAttachments } from '../../DataContext/Provider'\n\n/**\n * Deprecated, as it is supported by all major browsers and Node.js >=v18\n * So it's a question of time, when we will remove this polyfill\n */\nimport structuredClone from '@ungap/structured-clone'\n\ntype PathImpl<T, P extends string> = P extends `${infer Key}/${infer Rest}`\n ? Key extends keyof T\n ? Rest extends ''\n ? T[Key]\n : PathImpl<T[Key], Rest>\n : never\n : T[P & keyof T]\n\nexport type PathType<T, P extends string> = P extends `/${infer Rest}`\n ? PathImpl<T, Rest>\n : never\n\nexport type UseDataReturnUpdate<Data> = <P extends Path>(\n path: P,\n value: ((value: PathType<Data, P>) => unknown) | unknown\n) => void\n\nexport type UseDataReturnGetValue<Data> = <P extends Path>(\n path: P\n) => PathType<Data, P> | any\n\nexport type UseDataReturnFilterData<Data> = (\n filterDataHandler: FilterData,\n data?: Data\n) => Partial<Data>\n\nexport type UseDataReturnVisibleData<Data> = VisibleDataHandler<Data>\n\ntype UseDataReturn<Data> = {\n data: Data\n set: (newData: Data) => void\n update: UseDataReturnUpdate<Data>\n remove: (path: Path) => void\n getValue: UseDataReturnGetValue<Data>\n filterData: UseDataReturnFilterData<Data>\n reduceToVisibleFields: UseDataReturnVisibleData<Data>\n}\n\n/**\n * Custom hook that provides form data management functionality.\n *\n * @template Data - The type of data being managed.\n * @param {SharedStateId} id - The identifier for the data.\n * @param {Data} initialData - The initial data value (optional).\n * @returns {UseDataReturn<Data>} An object containing the data and data management functions.\n */\nexport default function useData<Data = JsonObject>(\n id: SharedStateId = undefined,\n initialData: Data = undefined\n): UseDataReturn<Data> {\n const sharedDataRef =\n useRef<ReturnType<typeof useSharedState<Data>>>(null)\n const sharedAttachmentsRef =\n useRef<ReturnType<typeof useSharedState<SharedAttachments<Data>>>>(\n null\n )\n const [, forceUpdate] = useReducer(() => ({}), {})\n\n sharedDataRef.current = useSharedState<Data>(\n id,\n initialData,\n forceUpdate\n )\n\n sharedAttachmentsRef.current = useSharedState<SharedAttachments<Data>>(\n createReferenceKey(id, 'attachments'),\n { rerenderUseDataHook: forceUpdate }\n )\n\n // If no id is provided, use the context data\n const dataContext = useContext(DataContext)\n if (!id) {\n if (!dataContext.hasContext) {\n throw new Error(\n 'useData needs to run inside DataContext (Form.Handler) or have a valid id'\n )\n }\n\n sharedDataRef.current.data = dataContext.data\n sharedAttachmentsRef.current.data.filterDataHandler =\n dataContext.filterDataHandler\n }\n\n const updateDataValue = dataContext?.updateDataValue\n const setData = dataContext?.setData\n\n const getExistingData = useCallback(() => {\n return structuredClone(\n sharedAttachmentsRef.current?.data?.internalDataRef?.current ||\n sharedDataRef.current.data ||\n {}\n ) as Data & JsonObject\n }, [])\n\n const set = useCallback(\n (newData: Data) => {\n if (id) {\n sharedDataRef.current.update(newData)\n } else {\n setData?.(newData)\n }\n },\n [id, setData]\n )\n\n const update = useCallback<UseDataReturnUpdate<Data>>(\n (path, value = undefined) => {\n const existingData = getExistingData()\n const existingValue = pointer.has(existingData, path)\n ? pointer.get(existingData, path)\n : undefined\n\n // Get new value\n const newValue =\n typeof value === 'function' ? value(existingValue) : value\n\n if (newValue !== existingValue) {\n // Update existing data\n pointer.set(existingData, path, newValue)\n\n // Update provider with new data\n if (id) {\n sharedDataRef.current.extend(existingData)\n } else {\n updateDataValue?.(path, newValue)\n }\n }\n },\n [getExistingData, id, updateDataValue]\n )\n\n const remove = useCallback<UseDataReturn<Data>['remove']>(\n (path) => {\n const existingData = getExistingData()\n\n if (pointer.has(existingData, path)) {\n // Remove existing data\n pointer.remove(existingData, path)\n\n // Update provider with new data\n if (id) {\n sharedDataRef.current.set(existingData)\n } else {\n setData?.(existingData)\n }\n }\n },\n [getExistingData, id, setData]\n )\n\n const reduceToVisibleFields = useCallback<\n UseDataReturn<Data>['reduceToVisibleFields']\n >(\n (data, options = {}) => {\n if (id) {\n return sharedAttachmentsRef.current.data?.visibleDataHandler?.(\n data,\n options\n )\n }\n\n return dataContext?.visibleDataHandler?.(data, options)\n },\n [dataContext, id]\n )\n\n const filterData = useCallback<UseDataReturn<Data>['filterData']>(\n (filter, data = sharedDataRef.current.data) => {\n if (id) {\n return sharedAttachmentsRef.current.data?.filterDataHandler?.(\n data,\n filter\n )\n }\n\n return dataContext?.filterDataHandler?.(data, filter)\n },\n [dataContext, id]\n )\n\n const getValue = useCallback<UseDataReturn<Data>['getValue']>((path) => {\n if (pointer.has(sharedDataRef.current.data, path)) {\n return pointer.get(sharedDataRef.current.data, path)\n }\n\n return undefined\n }, [])\n\n useMountEffect(() => {\n if (id && !sharedDataRef.current.hadInitialData && initialData) {\n sharedDataRef.current.extend(initialData)\n }\n })\n\n const { data } = sharedDataRef.current\n\n return useMemo(\n () => ({\n data,\n remove,\n update,\n set,\n getValue,\n reduceToVisibleFields,\n filterData,\n }),\n [\n data,\n remove,\n update,\n set,\n getValue,\n reduceToVisibleFields,\n filterData,\n ]\n )\n}\n"],"mappings":"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"}
@@ -27,7 +27,10 @@ export interface ReturnAdditional<Value> {
27
27
  handleChange: (value: Value | unknown, additionalArgs?: AdditionalEventArgs) => void;
28
28
  updateValue: (value: Value) => void;
29
29
  setChanged: (state: boolean) => void;
30
- setDisplayValue: (value: React.ReactNode, path?: Identifier) => void;
30
+ setDisplayValue: (value: React.ReactNode, { path, type }?: {
31
+ path?: Identifier;
32
+ type?: 'field';
33
+ }) => void;
31
34
  forceUpdate: () => void;
32
35
  hasError?: boolean;
33
36
  /** Internal */
@@ -1039,12 +1039,20 @@ function useFieldProps(localProps) {
1039
1039
  handleError();
1040
1040
  });
1041
1041
  }, [emptyValue, additionalArgs, hasPath, itemPath, addToPool, validateValue, callOnChangeContext, onChangeContext, runPool, handlePathChangeUnvalidatedDataContext, nestedIteratePath, identifier, handleChangeIterateContext, makeIteratePath, handleError]);
1042
- const setDisplayValue = (0, _react.useCallback)(function (content) {
1043
- let fieldPath = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : itemPath ? identifier : path;
1042
+ const setDisplayValue = (0, _react.useCallback)((value, options) => {
1043
+ const {
1044
+ path: fieldPath = itemPath ? identifier : path,
1045
+ type = 'field'
1046
+ } = options || {};
1044
1047
  if (!fieldPath || !(fieldDisplayValueRef !== null && fieldDisplayValueRef !== void 0 && fieldDisplayValueRef.current)) {
1045
1048
  return;
1046
1049
  }
1047
- fieldDisplayValueRef.current[fieldPath] = valueRef.current === emptyValue ? undefined : content;
1050
+ fieldDisplayValueRef.current[fieldPath] = valueRef.current === emptyValue ? {
1051
+ type
1052
+ } : {
1053
+ value,
1054
+ type
1055
+ };
1048
1056
  }, [identifier, emptyValue, fieldDisplayValueRef, itemPath, path]);
1049
1057
  const handleChange = (0, _react.useCallback)(async function (argFromInput) {
1050
1058
  let additionalArgs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;