@dnb/eufemia 10.42.0 → 10.43.0

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 (222) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/cjs/components/button/Button.d.ts +17 -0
  3. package/cjs/components/card/Card.d.ts +1 -1
  4. package/cjs/components/card/Card.js.map +1 -1
  5. package/cjs/components/tabs/Tabs.js +1 -1
  6. package/cjs/components/tabs/Tabs.js.map +1 -1
  7. package/cjs/extensions/forms/DataContext/Context.d.ts +2 -2
  8. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  9. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +13 -1
  10. package/cjs/extensions/forms/DataContext/Provider/Provider.js +15 -5
  11. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  12. package/cjs/extensions/forms/Field/Number/Number.js +14 -4
  13. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  14. package/cjs/extensions/forms/Field/String/String.d.ts +1 -0
  15. package/cjs/extensions/forms/Field/String/String.js +21 -2
  16. package/cjs/extensions/forms/Field/String/String.js.map +1 -1
  17. package/cjs/extensions/forms/Form/Isolation/Isolation.d.ts +20 -0
  18. package/cjs/extensions/forms/Form/Isolation/Isolation.js +68 -0
  19. package/cjs/extensions/forms/Form/Isolation/Isolation.js.map +1 -0
  20. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.d.ts +7 -0
  21. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js +52 -0
  22. package/cjs/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -0
  23. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.d.ts +3 -0
  24. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js +40 -0
  25. package/cjs/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -0
  26. package/cjs/extensions/forms/Form/Isolation/index.d.ts +2 -0
  27. package/cjs/extensions/forms/Form/Isolation/index.js +27 -0
  28. package/cjs/extensions/forms/Form/Isolation/index.js.map +1 -0
  29. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js +6 -2
  30. package/cjs/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  31. package/cjs/extensions/forms/Form/Visibility/Visibility.d.ts +26 -10
  32. package/cjs/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  33. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  34. package/cjs/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  35. package/cjs/extensions/forms/Form/Visibility/useVisibility.js +22 -19
  36. package/cjs/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  37. package/cjs/extensions/forms/Form/index.d.ts +1 -0
  38. package/cjs/extensions/forms/Form/index.js +7 -0
  39. package/cjs/extensions/forms/Form/index.js.map +1 -1
  40. package/cjs/extensions/forms/Wizard/Step/Step.d.ts +1 -1
  41. package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
  42. package/cjs/extensions/forms/Wizard/Step/StepDocs.js +1 -1
  43. package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  44. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +3 -0
  45. package/cjs/extensions/forms/constants/locales/en-GB.js +3 -0
  46. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  47. package/cjs/extensions/forms/constants/locales/en-US.d.ts +3 -0
  48. package/cjs/extensions/forms/constants/locales/index.d.ts +6 -0
  49. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +3 -0
  50. package/cjs/extensions/forms/constants/locales/nb-NO.js +3 -0
  51. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  52. package/cjs/extensions/forms/hooks/useFieldProps.js +11 -11
  53. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  54. package/cjs/extensions/forms/hooks/usePath.d.ts +1 -1
  55. package/cjs/extensions/forms/hooks/usePath.js +9 -8
  56. package/cjs/extensions/forms/hooks/usePath.js.map +1 -1
  57. package/cjs/extensions/forms/types.d.ts +1 -0
  58. package/cjs/extensions/forms/types.js.map +1 -1
  59. package/cjs/extensions/payment-card/utils/Types.js.map +1 -1
  60. package/cjs/shared/Eufemia.d.ts +1 -1
  61. package/cjs/shared/Eufemia.js +2 -2
  62. package/cjs/shared/Eufemia.js.map +1 -1
  63. package/cjs/shared/helpers/extendPropsWithContext.js +3 -3
  64. package/cjs/shared/helpers/extendPropsWithContext.js.map +1 -1
  65. package/cjs/style/core/scopes.scss +1 -1
  66. package/cjs/style/dnb-ui-basis.css +1 -1
  67. package/cjs/style/dnb-ui-basis.min.css +1 -1
  68. package/cjs/style/dnb-ui-body.css +1 -1
  69. package/cjs/style/dnb-ui-body.min.css +1 -1
  70. package/cjs/style/dnb-ui-core.css +1 -1
  71. package/cjs/style/dnb-ui-core.min.css +1 -1
  72. package/components/button/Button.d.ts +17 -0
  73. package/components/card/Card.d.ts +1 -1
  74. package/components/card/Card.js.map +1 -1
  75. package/components/tabs/Tabs.js +1 -1
  76. package/components/tabs/Tabs.js.map +1 -1
  77. package/es/components/button/Button.d.ts +17 -0
  78. package/es/components/card/Card.d.ts +1 -1
  79. package/es/components/card/Card.js.map +1 -1
  80. package/es/components/tabs/Tabs.js +1 -1
  81. package/es/components/tabs/Tabs.js.map +1 -1
  82. package/es/extensions/forms/DataContext/Context.d.ts +2 -2
  83. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  84. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +13 -1
  85. package/es/extensions/forms/DataContext/Provider/Provider.js +15 -5
  86. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  87. package/es/extensions/forms/Field/Number/Number.js +14 -4
  88. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  89. package/es/extensions/forms/Field/String/String.d.ts +1 -0
  90. package/es/extensions/forms/Field/String/String.js +20 -2
  91. package/es/extensions/forms/Field/String/String.js.map +1 -1
  92. package/es/extensions/forms/Form/Isolation/Isolation.d.ts +20 -0
  93. package/es/extensions/forms/Form/Isolation/Isolation.js +57 -0
  94. package/es/extensions/forms/Form/Isolation/Isolation.js.map +1 -0
  95. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.d.ts +7 -0
  96. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js +42 -0
  97. package/es/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -0
  98. package/es/extensions/forms/Form/Isolation/IsolationDocs.d.ts +3 -0
  99. package/es/extensions/forms/Form/Isolation/IsolationDocs.js +30 -0
  100. package/es/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -0
  101. package/es/extensions/forms/Form/Isolation/index.d.ts +2 -0
  102. package/es/extensions/forms/Form/Isolation/index.js +3 -0
  103. package/es/extensions/forms/Form/Isolation/index.js.map +1 -0
  104. package/es/extensions/forms/Form/SubmitButton/SubmitButton.js +6 -2
  105. package/es/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  106. package/es/extensions/forms/Form/Visibility/Visibility.d.ts +26 -10
  107. package/es/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  108. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  109. package/es/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  110. package/es/extensions/forms/Form/Visibility/useVisibility.js +22 -19
  111. package/es/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  112. package/es/extensions/forms/Form/index.d.ts +1 -0
  113. package/es/extensions/forms/Form/index.js +1 -0
  114. package/es/extensions/forms/Form/index.js.map +1 -1
  115. package/es/extensions/forms/Wizard/Step/Step.d.ts +1 -1
  116. package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
  117. package/es/extensions/forms/Wizard/Step/StepDocs.js +1 -1
  118. package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  119. package/es/extensions/forms/constants/locales/en-GB.d.ts +3 -0
  120. package/es/extensions/forms/constants/locales/en-GB.js +3 -0
  121. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  122. package/es/extensions/forms/constants/locales/en-US.d.ts +3 -0
  123. package/es/extensions/forms/constants/locales/index.d.ts +6 -0
  124. package/es/extensions/forms/constants/locales/nb-NO.d.ts +3 -0
  125. package/es/extensions/forms/constants/locales/nb-NO.js +3 -0
  126. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  127. package/es/extensions/forms/hooks/useFieldProps.js +11 -11
  128. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  129. package/es/extensions/forms/hooks/usePath.d.ts +1 -1
  130. package/es/extensions/forms/hooks/usePath.js +8 -8
  131. package/es/extensions/forms/hooks/usePath.js.map +1 -1
  132. package/es/extensions/forms/types.d.ts +1 -0
  133. package/es/extensions/forms/types.js.map +1 -1
  134. package/es/extensions/payment-card/utils/Types.js.map +1 -1
  135. package/es/shared/Eufemia.d.ts +1 -1
  136. package/es/shared/Eufemia.js +2 -2
  137. package/es/shared/Eufemia.js.map +1 -1
  138. package/es/shared/helpers/extendPropsWithContext.js +3 -3
  139. package/es/shared/helpers/extendPropsWithContext.js.map +1 -1
  140. package/es/style/core/scopes.scss +1 -1
  141. package/es/style/dnb-ui-basis.css +1 -1
  142. package/es/style/dnb-ui-basis.min.css +1 -1
  143. package/es/style/dnb-ui-body.css +1 -1
  144. package/es/style/dnb-ui-body.min.css +1 -1
  145. package/es/style/dnb-ui-core.css +1 -1
  146. package/es/style/dnb-ui-core.min.css +1 -1
  147. package/esm/dnb-ui-basis.min.mjs +1 -1
  148. package/esm/dnb-ui-components.min.mjs +1 -1
  149. package/esm/dnb-ui-elements.min.mjs +1 -1
  150. package/esm/dnb-ui-extensions.min.mjs +3 -3
  151. package/esm/dnb-ui-lib.min.mjs +1 -1
  152. package/extensions/forms/DataContext/Context.d.ts +2 -2
  153. package/extensions/forms/DataContext/Context.js.map +1 -1
  154. package/extensions/forms/DataContext/Provider/Provider.d.ts +13 -1
  155. package/extensions/forms/DataContext/Provider/Provider.js +15 -5
  156. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  157. package/extensions/forms/Field/Number/Number.js +14 -4
  158. package/extensions/forms/Field/Number/Number.js.map +1 -1
  159. package/extensions/forms/Field/String/String.d.ts +1 -0
  160. package/extensions/forms/Field/String/String.js +21 -2
  161. package/extensions/forms/Field/String/String.js.map +1 -1
  162. package/extensions/forms/Form/Isolation/Isolation.d.ts +20 -0
  163. package/extensions/forms/Form/Isolation/Isolation.js +57 -0
  164. package/extensions/forms/Form/Isolation/Isolation.js.map +1 -0
  165. package/extensions/forms/Form/Isolation/IsolationCommitButton.d.ts +7 -0
  166. package/extensions/forms/Form/Isolation/IsolationCommitButton.js +42 -0
  167. package/extensions/forms/Form/Isolation/IsolationCommitButton.js.map +1 -0
  168. package/extensions/forms/Form/Isolation/IsolationDocs.d.ts +3 -0
  169. package/extensions/forms/Form/Isolation/IsolationDocs.js +30 -0
  170. package/extensions/forms/Form/Isolation/IsolationDocs.js.map +1 -0
  171. package/extensions/forms/Form/Isolation/index.d.ts +2 -0
  172. package/extensions/forms/Form/Isolation/index.js +3 -0
  173. package/extensions/forms/Form/Isolation/index.js.map +1 -0
  174. package/extensions/forms/Form/SubmitButton/SubmitButton.js +6 -2
  175. package/extensions/forms/Form/SubmitButton/SubmitButton.js.map +1 -1
  176. package/extensions/forms/Form/Visibility/Visibility.d.ts +26 -10
  177. package/extensions/forms/Form/Visibility/Visibility.js.map +1 -1
  178. package/extensions/forms/Form/Visibility/VisibilityDocs.js +1 -1
  179. package/extensions/forms/Form/Visibility/VisibilityDocs.js.map +1 -1
  180. package/extensions/forms/Form/Visibility/useVisibility.js +22 -19
  181. package/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  182. package/extensions/forms/Form/index.d.ts +1 -0
  183. package/extensions/forms/Form/index.js +1 -0
  184. package/extensions/forms/Form/index.js.map +1 -1
  185. package/extensions/forms/Wizard/Step/Step.d.ts +1 -1
  186. package/extensions/forms/Wizard/Step/Step.js.map +1 -1
  187. package/extensions/forms/Wizard/Step/StepDocs.js +1 -1
  188. package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  189. package/extensions/forms/constants/locales/en-GB.d.ts +3 -0
  190. package/extensions/forms/constants/locales/en-GB.js +3 -0
  191. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  192. package/extensions/forms/constants/locales/en-US.d.ts +3 -0
  193. package/extensions/forms/constants/locales/index.d.ts +6 -0
  194. package/extensions/forms/constants/locales/nb-NO.d.ts +3 -0
  195. package/extensions/forms/constants/locales/nb-NO.js +3 -0
  196. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  197. package/extensions/forms/hooks/useFieldProps.js +11 -11
  198. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  199. package/extensions/forms/hooks/usePath.d.ts +1 -1
  200. package/extensions/forms/hooks/usePath.js +9 -8
  201. package/extensions/forms/hooks/usePath.js.map +1 -1
  202. package/extensions/forms/types.d.ts +1 -0
  203. package/extensions/forms/types.js.map +1 -1
  204. package/extensions/payment-card/utils/Types.js.map +1 -1
  205. package/package.json +1 -1
  206. package/shared/Eufemia.d.ts +1 -1
  207. package/shared/Eufemia.js +2 -2
  208. package/shared/Eufemia.js.map +1 -1
  209. package/shared/helpers/extendPropsWithContext.js +3 -3
  210. package/shared/helpers/extendPropsWithContext.js.map +1 -1
  211. package/style/core/scopes.scss +1 -1
  212. package/style/dnb-ui-basis.css +1 -1
  213. package/style/dnb-ui-basis.min.css +1 -1
  214. package/style/dnb-ui-body.css +1 -1
  215. package/style/dnb-ui-body.min.css +1 -1
  216. package/style/dnb-ui-core.css +1 -1
  217. package/style/dnb-ui-core.min.css +1 -1
  218. package/umd/dnb-ui-basis.min.js +1 -1
  219. package/umd/dnb-ui-components.min.js +1 -1
  220. package/umd/dnb-ui-elements.min.js +1 -1
  221. package/umd/dnb-ui-extensions.min.js +2 -2
  222. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","classnames","HelpButton","Input","Textarea","InputMasked","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","useErrorMessage","useTranslation","StringComponent","props","_props$width","_value$toString","fieldBlockContext","translations","errorMessages","path","required","Field","errorRequired","minLength","StringField","errorMinLength","maxLength","errorMaxLength","pattern","errorPattern","schema","_props$schema","type","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transform","transformValue","capitalize","String","preparedProps","_objectSpread","width","composition","id","name","className","innerRef","inputClassName","layout","placeholder","label","labelDescription","info","warning","error","hasError","disabled","help","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","transformInstantly","cn","sharedProps","suffix","createElement","title","content","undefined","on_focus","on_blur","on_change","stretch","Boolean","inner_ref","status","toString","textareaProps","autoresize_max_rows","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { HelpButton, Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type {\n FieldProps,\n FieldHelpProps,\n CustomErrorMessages,\n AllJSONSchemaVersions,\n FieldBlockWidth,\n} from '../../types'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minLength?: string\n maxLength?: string\n pattern?: string\n}\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string, ErrorMessages> & {\n // - Shared props\n multiline?: boolean\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n width?: FieldBlockWidth\n size?: InputProps['size'] | TextareaProps['size']\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n submitElement?: InputProps['submit_element']\n capitalize?: boolean\n trim?: boolean\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n }\n\nfunction StringComponent(props: Props) {\n const fieldBlockContext = useContext(FieldBlockContext)\n const translations = useTranslation()\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.Field.errorRequired,\n minLength: translations.StringField.errorMinLength,\n maxLength: translations.StringField.errorMaxLength,\n pattern: translations.Field.errorPattern,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transform = props.transformValue\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return transform?.(value) || value\n },\n [props.capitalize, transform]\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n }\n\n const {\n id,\n name,\n className,\n innerRef,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n } = useFieldProps(preparedProps)\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const textareaProps: TextareaProps = {\n keepPlaceholder,\n rows,\n autoresize_max_rows: autoresizeMaxRows,\n autoresize,\n characterCounter,\n }\n\n const inputProps: InputProps = {\n type: type,\n clear: clear,\n size: size,\n align: align,\n selectall: selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-string', className),\n forId: id,\n layout,\n label,\n labelDescription,\n info,\n warning,\n error,\n disabled,\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea {...sharedProps} {...textareaProps} />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
1
+ {"version":3,"file":"String.js","names":["React","useContext","useMemo","useCallback","classnames","HelpButton","Input","Textarea","InputMasked","DataContext","FieldBlockContext","FieldBlock","useFieldProps","pickSpacingProps","toCapitalized","useErrorMessage","useTranslation","StringComponent","props","_props$width","_dataContext$props2","_value$toString","dataContext","fieldBlockContext","translations","errorMessages","path","required","Field","errorRequired","minLength","StringField","errorMinLength","maxLength","errorMaxLength","pattern","errorPattern","schema","_props$schema","type","fromInput","event","_event","_event$cleanedValue","_event2","_event3","value","emptyValue","cleanedValue","toEvent","trim","spaces","RegExp","test","replace","handleChange","transform","transformValue","capitalize","String","preparedProps","_objectSpread","width","composition","id","name","className","innerRef","inputClassName","layout","placeholder","label","labelDescription","info","warning","error","hasError","disabled","help","multiline","mask","leftIcon","rightIcon","htmlAttributes","submitElement","clear","align","size","selectall","keepPlaceholder","rows","autoresizeMaxRows","autoresize","characterCounter","autoComplete","inputMode","autoCorrect","spellCheck","autoFocus","autoCapitalize","handleFocus","handleBlur","onKeyDown","transformInstantly","handleSubmit","handleKeyDown","_dataContext$props","isolate","key","_event$preventDefault","preventDefault","call","cn","sharedProps","suffix","createElement","title","content","undefined","on_focus","on_blur","on_change","on_key_down","stretch","Boolean","inner_ref","status","toString","textareaProps","autoresize_max_rows","inputProps","icon","icon_position","submit_element","keep_placeholder","fieldBlockProps","forId","contentWidth","_extends","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Field/String/String.tsx"],"sourcesContent":["import React, { useContext, useMemo, useCallback } from 'react'\nimport classnames from 'classnames'\nimport { HelpButton, Input, Textarea } from '../../../../components'\nimport { InputProps } from '../../../../components/input/Input'\nimport InputMasked, {\n InputMaskedProps,\n} from '../../../../components/InputMasked'\nimport { TextareaProps } from '../../../../components/Textarea'\nimport DataContext from '../../DataContext/Context'\nimport FieldBlockContext from '../../FieldBlock/FieldBlockContext'\nimport FieldBlock from '../../FieldBlock'\nimport { useFieldProps } from '../../hooks'\nimport { pickSpacingProps } from '../../../../components/flex/utils'\nimport { toCapitalized } from '../../../../shared/component-helper'\nimport type { TextCounterProps } from '../../../../fragments/TextCounter'\nimport type {\n FieldProps,\n FieldHelpProps,\n CustomErrorMessages,\n AllJSONSchemaVersions,\n FieldBlockWidth,\n} from '../../types'\nimport useErrorMessage from '../../hooks/useErrorMessage'\nimport useTranslation from '../../hooks/useTranslation'\n\ninterface ErrorMessages extends CustomErrorMessages {\n required?: string\n schema?: string\n minLength?: string\n maxLength?: string\n pattern?: string\n}\nexport type Props = FieldHelpProps &\n FieldProps<string, undefined | string, ErrorMessages> & {\n // - Shared props\n multiline?: boolean\n inputClassName?: string\n innerRef?: React.RefObject<HTMLInputElement | HTMLTextAreaElement>\n width?: FieldBlockWidth\n size?: InputProps['size'] | TextareaProps['size']\n keepPlaceholder?: InputProps['keep_placeholder']\n\n // - Validation\n minLength?: number\n maxLength?: number\n pattern?: string\n\n // - Input props\n type?: InputProps['type']\n align?: InputProps['align']\n selectall?: InputProps['selectall']\n clear?: boolean\n mask?: InputMaskedProps['mask']\n leftIcon?: string\n rightIcon?: string\n submitElement?: InputProps['submit_element']\n capitalize?: boolean\n trim?: boolean\n\n // - Textarea props\n rows?: TextareaProps['rows']\n autoresizeMaxRows?: TextareaProps['autoresize_max_rows']\n autoresize?: TextareaProps['autoresize']\n characterCounter?: Omit<TextCounterProps, 'text'> | number\n\n // - Html props\n autoComplete?: HTMLInputElement['autocomplete']\n inputMode?: React.HTMLAttributes<HTMLInputElement>['inputMode']\n autoCorrect?: React.HTMLAttributes<HTMLInputElement>['autoCorrect']\n spellCheck?: React.HTMLAttributes<HTMLInputElement>['spellCheck']\n autoFocus?: React.HTMLAttributes<HTMLInputElement>['autoFocus']\n autoCapitalize?: React.HTMLAttributes<HTMLInputElement>['autoCapitalize']\n\n // - Events\n onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>\n }\n\nfunction StringComponent(props: Props) {\n const dataContext = useContext(DataContext)\n const fieldBlockContext = useContext(FieldBlockContext)\n const translations = useTranslation()\n\n const errorMessages = useErrorMessage(props.path, props.errorMessages, {\n required: translations.Field.errorRequired,\n minLength: translations.StringField.errorMinLength,\n maxLength: translations.StringField.errorMaxLength,\n pattern: translations.Field.errorPattern,\n })\n\n const schema = useMemo<AllJSONSchemaVersions>(\n () =>\n props.schema ?? {\n type: 'string',\n minLength: props.minLength,\n maxLength: props.maxLength,\n pattern: props.pattern,\n },\n [props.schema, props.minLength, props.maxLength, props.pattern]\n )\n const fromInput = useCallback(\n (event: { value: string; cleanedValue?: string }) => {\n if (typeof event === 'string') {\n event = { value: event }\n }\n if (event?.value === '') {\n return props.emptyValue\n }\n // Cleaned value for masked\n return event?.cleanedValue ?? event?.value\n },\n [props.emptyValue]\n )\n const toEvent = useCallback(\n (value: string, type: string) => {\n if (props.trim && type === 'onBlur') {\n const spaces = '[\\\\s ]'\n if (new RegExp(`^${spaces}|${spaces}$`).test(value)) {\n value = value.replace(\n new RegExp(`^${spaces}+|${spaces}+$`, 'g'),\n ''\n )\n handleChange(value)\n }\n }\n return value\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [props.trim]\n )\n const transform = props.transformValue\n const transformValue = useCallback(\n (value: string) => {\n if (props.capitalize) {\n value = toCapitalized(String(value || ''))\n }\n return transform?.(value) || value\n },\n [props.capitalize, transform]\n )\n\n const preparedProps: Props = {\n ...props,\n errorMessages,\n schema,\n fromInput,\n toEvent,\n transformValue,\n width:\n props.width ??\n (fieldBlockContext?.composition ? 'stretch' : 'large'),\n }\n\n const {\n id,\n name,\n className,\n innerRef,\n inputClassName,\n layout,\n placeholder,\n label,\n labelDescription,\n value,\n info,\n warning,\n error,\n hasError,\n disabled,\n help,\n multiline,\n mask,\n leftIcon,\n rightIcon,\n width,\n htmlAttributes,\n submitElement,\n\n // - Input props\n type,\n clear,\n align,\n size,\n selectall,\n keepPlaceholder,\n\n // - Textarea props\n rows,\n autoresizeMaxRows = 6,\n autoresize = true,\n characterCounter,\n\n // - Html props\n autoComplete,\n inputMode,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n\n // - Events\n handleFocus,\n handleBlur,\n handleChange,\n onKeyDown,\n } = useFieldProps(preparedProps)\n\n const transformInstantly = useCallback(\n (value: string) => (props.capitalize ? toCapitalized(value) : value),\n [props.capitalize]\n )\n\n const { handleSubmit } = dataContext ?? {}\n const handleKeyDown = useCallback(\n ({ event }: { event: React.KeyboardEvent<HTMLInputElement> }) => {\n if (\n !multiline &&\n dataContext?.props?.isolate &&\n event.key === 'Enter'\n ) {\n handleSubmit() // So we commit the data to the outer context\n event.preventDefault?.() // And prevent the default form submit\n }\n\n onKeyDown?.(event)\n },\n [handleSubmit, dataContext?.props?.isolate, multiline, onKeyDown]\n )\n\n const cn = classnames('dnb-forms-field-string__input', inputClassName)\n\n const sharedProps: InputProps & TextareaProps = {\n id,\n name,\n autoComplete,\n autoCorrect,\n spellCheck,\n autoFocus,\n autoCapitalize,\n inputMode,\n className: cn,\n placeholder,\n suffix: help ? (\n <HelpButton title={help.title}>{help.content}</HelpButton>\n ) : undefined,\n on_focus: handleFocus,\n on_blur: handleBlur,\n on_change: handleChange,\n on_key_down: handleKeyDown,\n disabled,\n ...htmlAttributes,\n stretch: Boolean(\n width !== undefined || fieldBlockContext?.composition\n ),\n inner_ref: innerRef,\n status: hasError ? 'error' : undefined,\n value: transformInstantly(value?.toString() ?? ''),\n }\n\n const textareaProps: TextareaProps = {\n keepPlaceholder,\n rows,\n autoresize_max_rows: autoresizeMaxRows,\n autoresize,\n characterCounter,\n }\n\n const inputProps: InputProps = {\n type: type,\n clear: clear,\n size: size,\n align: align,\n selectall: selectall,\n icon: leftIcon ?? rightIcon,\n icon_position: rightIcon && !leftIcon ? 'right' : undefined,\n submit_element: submitElement,\n keep_placeholder: keepPlaceholder,\n }\n\n const fieldBlockProps = {\n className: classnames('dnb-forms-field-string', className),\n forId: id,\n layout,\n label,\n labelDescription,\n info,\n warning,\n error,\n disabled,\n width:\n width === 'stretch' || fieldBlockContext?.composition\n ? width\n : undefined,\n contentWidth: width !== false ? width : undefined,\n ...pickSpacingProps(props),\n }\n\n return (\n <FieldBlock {...fieldBlockProps}>\n {multiline ? (\n <Textarea {...sharedProps} {...textareaProps} />\n ) : mask ? (\n <InputMasked {...sharedProps} {...inputProps} mask={mask} />\n ) : (\n <Input {...sharedProps} {...inputProps} />\n )}\n </FieldBlock>\n )\n}\n\nStringComponent._supportsSpacingProps = true\nexport default StringComponent\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import React from 'react';
2
+ import { JsonObject } from 'json-pointer';
3
+ import { Props as ProviderProps } from '../../DataContext/Provider';
4
+ import IsolationCommitButton from './IsolationCommitButton';
5
+ export type IsolationProps<Data> = Omit<ProviderProps<Data>, 'onSubmit' | 'onSubmitRequest' | 'onSubmitComplete' | 'minimumAsyncBehaviorTime' | 'asyncSubmitTimeout' | 'scrollTopOnSubmit' | 'sessionStorageId' | 'filterSubmitData' | 'globalStatusId'> & {
6
+ /**
7
+ * A ref (function) that you can call in order to commit the data programmatically to the outer context.
8
+ */
9
+ commitHandleRef?: React.MutableRefObject<() => void>;
10
+ /**
11
+ * Will be called when the isolated context is committed.
12
+ */
13
+ onCommit?: (data: Data) => void;
14
+ };
15
+ declare function IsolationProvider<Data extends JsonObject>(props: IsolationProps<Data>): import("react/jsx-runtime").JSX.Element;
16
+ declare namespace IsolationProvider {
17
+ var CommitButton: typeof IsolationCommitButton;
18
+ var _supportsSpacingProps: any;
19
+ }
20
+ export default IsolationProvider;
@@ -0,0 +1,57 @@
1
+ "use client";
2
+
3
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
5
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
6
+ import React, { useCallback, useContext, useEffect, useMemo, useRef } from 'react';
7
+ import pointer from 'json-pointer';
8
+ import { Context, Provider } from '../../DataContext';
9
+ import { extendDeep } from '../../../../shared/component-helper';
10
+ import IsolationCommitButton from './IsolationCommitButton';
11
+ function IsolationProvider(props) {
12
+ const {
13
+ children,
14
+ onPathChange,
15
+ onCommit,
16
+ commitHandleRef,
17
+ data,
18
+ defaultData
19
+ } = props;
20
+ const nestedContext = useContext(Context);
21
+ const {
22
+ handlePathChange
23
+ } = nestedContext !== null && nestedContext !== void 0 ? nestedContext : {};
24
+ const dataRef = useRef({});
25
+ const getData = useCallback(() => {
26
+ return extendDeep({}, nestedContext === null || nestedContext === void 0 ? void 0 : nestedContext.data, dataRef.current);
27
+ }, [nestedContext === null || nestedContext === void 0 ? void 0 : nestedContext.data]);
28
+ useEffect(() => {
29
+ if (commitHandleRef) {
30
+ commitHandleRef.current = () => {
31
+ handlePathChange === null || handlePathChange === void 0 ? void 0 : handlePathChange('/', getData());
32
+ };
33
+ }
34
+ }, [getData, handlePathChange, commitHandleRef]);
35
+ const onPathChangeHandler = useCallback(async (path, value) => {
36
+ pointer.set(dataRef.current, path, value);
37
+ return await (onPathChange === null || onPathChange === void 0 ? void 0 : onPathChange(path, value));
38
+ }, [onPathChange]);
39
+ const providerProps = _objectSpread(_objectSpread({}, props), {}, {
40
+ data,
41
+ defaultData,
42
+ onPathChange: onPathChangeHandler,
43
+ onCommit,
44
+ isolate: true
45
+ });
46
+ providerProps.data = useMemo(() => {
47
+ if (!defaultData && !data) {
48
+ return getData();
49
+ }
50
+ return providerProps.data;
51
+ }, [data, defaultData, getData, providerProps.data]);
52
+ return React.createElement(Provider, providerProps, children);
53
+ }
54
+ IsolationProvider.CommitButton = IsolationCommitButton;
55
+ IsolationProvider._supportsSpacingProps = undefined;
56
+ export default IsolationProvider;
57
+ //# sourceMappingURL=Isolation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Isolation.js","names":["React","useCallback","useContext","useEffect","useMemo","useRef","pointer","Context","Provider","extendDeep","IsolationCommitButton","IsolationProvider","props","children","onPathChange","onCommit","commitHandleRef","data","defaultData","nestedContext","handlePathChange","dataRef","getData","current","onPathChangeHandler","path","value","set","providerProps","_objectSpread","isolate","createElement","CommitButton","_supportsSpacingProps","undefined"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/Isolation.tsx"],"sourcesContent":["import React, {\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n} from 'react'\nimport pointer, { JsonObject } from 'json-pointer'\nimport { Context, Provider } from '../../DataContext'\nimport { Props as ProviderProps } from '../../DataContext/Provider'\nimport { Path } from '../../types'\nimport { extendDeep } from '../../../../shared/component-helper'\nimport IsolationCommitButton from './IsolationCommitButton'\n\nexport type IsolationProps<Data> = Omit<\n ProviderProps<Data>,\n | 'onSubmit'\n | 'onSubmitRequest'\n | 'onSubmitComplete'\n | 'minimumAsyncBehaviorTime'\n | 'asyncSubmitTimeout'\n | 'scrollTopOnSubmit'\n | 'sessionStorageId'\n | 'filterSubmitData'\n | 'globalStatusId'\n> & {\n /**\n * A ref (function) that you can call in order to commit the data programmatically to the outer context.\n */\n commitHandleRef?: React.MutableRefObject<() => void>\n\n /**\n * Will be called when the isolated context is committed.\n */\n onCommit?: (data: Data) => void\n}\n\nfunction IsolationProvider<Data extends JsonObject>(\n props: IsolationProps<Data>\n) {\n const {\n children,\n onPathChange,\n onCommit,\n commitHandleRef,\n data,\n defaultData,\n } = props\n\n const nestedContext = useContext(Context)\n const { handlePathChange } = nestedContext ?? {}\n\n const dataRef = useRef<Partial<Data>>({})\n const getData = useCallback(() => {\n return extendDeep({}, nestedContext?.data, dataRef.current) as Data\n }, [nestedContext?.data])\n\n useEffect(() => {\n if (commitHandleRef) {\n commitHandleRef.current = () => {\n handlePathChange?.('/', getData())\n }\n }\n }, [getData, handlePathChange, commitHandleRef])\n\n const onPathChangeHandler = useCallback(\n async (path: Path, value: any) => {\n pointer.set(dataRef.current, path, value)\n\n return await onPathChange?.(path, value)\n },\n [onPathChange]\n )\n\n const providerProps: IsolationProps<Data> = {\n ...props,\n data,\n defaultData,\n onPathChange: onPathChangeHandler,\n onCommit,\n isolate: true,\n }\n\n // Update the isolated data with the outside context data\n providerProps.data = useMemo(() => {\n if (!defaultData && !data) {\n return getData()\n }\n return providerProps.data\n }, [data, defaultData, getData, providerProps.data])\n\n return <Provider {...providerProps}>{children}</Provider>\n}\n\nIsolationProvider.CommitButton = IsolationCommitButton\nIsolationProvider._supportsSpacingProps = undefined\n\nexport default IsolationProvider\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IACVC,WAAW,EACXC,UAAU,EACVC,SAAS,EACTC,OAAO,EACPC,MAAM,QACD,OAAO;AACd,OAAOC,OAAO,MAAsB,cAAc;AAClD,SAASC,OAAO,EAAEC,QAAQ,QAAQ,mBAAmB;AAGrD,SAASC,UAAU,QAAQ,qCAAqC;AAChE,OAAOC,qBAAqB,MAAM,yBAAyB;AAyB3D,SAASC,iBAAiBA,CACxBC,KAA2B,EAC3B;EACA,MAAM;IACJC,QAAQ;IACRC,YAAY;IACZC,QAAQ;IACRC,eAAe;IACfC,IAAI;IACJC;EACF,CAAC,GAAGN,KAAK;EAET,MAAMO,aAAa,GAAGjB,UAAU,CAACK,OAAO,CAAC;EACzC,MAAM;IAAEa;EAAiB,CAAC,GAAGD,aAAa,aAAbA,aAAa,cAAbA,aAAa,GAAI,CAAC,CAAC;EAEhD,MAAME,OAAO,GAAGhB,MAAM,CAAgB,CAAC,CAAC,CAAC;EACzC,MAAMiB,OAAO,GAAGrB,WAAW,CAAC,MAAM;IAChC,OAAOQ,UAAU,CAAC,CAAC,CAAC,EAAEU,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEF,IAAI,EAAEI,OAAO,CAACE,OAAO,CAAC;EAC7D,CAAC,EAAE,CAACJ,aAAa,aAAbA,aAAa,uBAAbA,aAAa,CAAEF,IAAI,CAAC,CAAC;EAEzBd,SAAS,CAAC,MAAM;IACd,IAAIa,eAAe,EAAE;MACnBA,eAAe,CAACO,OAAO,GAAG,MAAM;QAC9BH,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAG,GAAG,EAAEE,OAAO,CAAC,CAAC,CAAC;MACpC,CAAC;IACH;EACF,CAAC,EAAE,CAACA,OAAO,EAAEF,gBAAgB,EAAEJ,eAAe,CAAC,CAAC;EAEhD,MAAMQ,mBAAmB,GAAGvB,WAAW,CACrC,OAAOwB,IAAU,EAAEC,KAAU,KAAK;IAChCpB,OAAO,CAACqB,GAAG,CAACN,OAAO,CAACE,OAAO,EAAEE,IAAI,EAAEC,KAAK,CAAC;IAEzC,OAAO,OAAMZ,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAGW,IAAI,EAAEC,KAAK,CAAC;EAC1C,CAAC,EACD,CAACZ,YAAY,CACf,CAAC;EAED,MAAMc,aAAmC,GAAAC,aAAA,CAAAA,aAAA,KACpCjB,KAAK;IACRK,IAAI;IACJC,WAAW;IACXJ,YAAY,EAAEU,mBAAmB;IACjCT,QAAQ;IACRe,OAAO,EAAE;EAAI,EACd;EAGDF,aAAa,CAACX,IAAI,GAAGb,OAAO,CAAC,MAAM;IACjC,IAAI,CAACc,WAAW,IAAI,CAACD,IAAI,EAAE;MACzB,OAAOK,OAAO,CAAC,CAAC;IAClB;IACA,OAAOM,aAAa,CAACX,IAAI;EAC3B,CAAC,EAAE,CAACA,IAAI,EAAEC,WAAW,EAAEI,OAAO,EAAEM,aAAa,CAACX,IAAI,CAAC,CAAC;EAEpD,OAAOjB,KAAA,CAAA+B,aAAA,CAACvB,QAAQ,EAAKoB,aAAa,EAAGf,QAAmB,CAAC;AAC3D;AAEAF,iBAAiB,CAACqB,YAAY,GAAGtB,qBAAqB;AACtDC,iBAAiB,CAACsB,qBAAqB,GAAGC,SAAS;AAEnD,eAAevB,iBAAiB"}
@@ -0,0 +1,7 @@
1
+ import { ButtonProps } from '../../../../components/button/Button';
2
+ export type Props = ButtonProps;
3
+ declare function IsolationCommitButton(props: Props): import("react/jsx-runtime").JSX.Element;
4
+ declare namespace IsolationCommitButton {
5
+ var _supportsSpacingProps: boolean;
6
+ }
7
+ export default IsolationCommitButton;
@@ -0,0 +1,42 @@
1
+ "use client";
2
+
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
+ const _excluded = ["className", "children", "text"];
6
+ import React, { useCallback, useContext } from 'react';
7
+ import classnames from 'classnames';
8
+ import { useTranslation } from '../../hooks';
9
+ import DataContext from '../../DataContext/Context';
10
+ import Button from '../../../../components/button/Button';
11
+ import { check } from '../../../../icons';
12
+ function IsolationCommitButton(props) {
13
+ const translations = useTranslation().Isolation;
14
+ const {
15
+ className,
16
+ children,
17
+ text
18
+ } = props,
19
+ rest = _objectWithoutProperties(props, _excluded);
20
+ const content = text || children || translations.commitButtonText;
21
+ const {
22
+ handleSubmit,
23
+ props: dataContextProps
24
+ } = useContext(DataContext) || {};
25
+ const {
26
+ isolate
27
+ } = dataContextProps || {};
28
+ const onClickHandler = useCallback(() => {
29
+ if (isolate) {
30
+ handleSubmit === null || handleSubmit === void 0 ? void 0 : handleSubmit();
31
+ }
32
+ }, [handleSubmit, isolate]);
33
+ return React.createElement(Button, _extends({
34
+ variant: "secondary",
35
+ className: classnames('dnb-forms-isolate-button', className),
36
+ icon: check,
37
+ onClick: onClickHandler
38
+ }, rest), content);
39
+ }
40
+ IsolationCommitButton._supportsSpacingProps = true;
41
+ export default IsolationCommitButton;
42
+ //# sourceMappingURL=IsolationCommitButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsolationCommitButton.js","names":["React","useCallback","useContext","classnames","useTranslation","DataContext","Button","check","IsolationCommitButton","props","translations","Isolation","className","children","text","rest","_objectWithoutProperties","_excluded","content","commitButtonText","handleSubmit","dataContextProps","isolate","onClickHandler","createElement","_extends","variant","icon","onClick","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationCommitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport { useTranslation } from '../../hooks'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport { check } from '../../../../icons'\n\nexport type Props = ButtonProps\n\nfunction IsolationCommitButton(props: Props) {\n const translations = useTranslation().Isolation\n\n const { className, children, text, ...rest } = props\n\n const content = text || children || translations.commitButtonText\n\n const { handleSubmit, props: dataContextProps } =\n useContext(DataContext) || {}\n const { isolate } = dataContextProps || {}\n\n const onClickHandler = useCallback(() => {\n if (isolate) {\n handleSubmit?.()\n }\n }, [handleSubmit, isolate])\n\n return (\n <Button\n variant=\"secondary\"\n className={classnames('dnb-forms-isolate-button', className)}\n icon={check}\n onClick={onClickHandler}\n {...rest}\n >\n {content}\n </Button>\n )\n}\n\nIsolationCommitButton._supportsSpacingProps = true\nexport default IsolationCommitButton\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AACnC,SAASC,cAAc,QAAQ,aAAa;AAC5C,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,MAAM,MAAuB,sCAAsC;AAC1E,SAASC,KAAK,QAAQ,mBAAmB;AAIzC,SAASC,qBAAqBA,CAACC,KAAY,EAAE;EAC3C,MAAMC,YAAY,GAAGN,cAAc,CAAC,CAAC,CAACO,SAAS;EAE/C,MAAM;MAAEC,SAAS;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAAGL,KAAK;IAAdM,IAAI,GAAAC,wBAAA,CAAKP,KAAK,EAAAQ,SAAA;EAEpD,MAAMC,OAAO,GAAGJ,IAAI,IAAID,QAAQ,IAAIH,YAAY,CAACS,gBAAgB;EAEjE,MAAM;IAAEC,YAAY;IAAEX,KAAK,EAAEY;EAAiB,CAAC,GAC7CnB,UAAU,CAACG,WAAW,CAAC,IAAI,CAAC,CAAC;EAC/B,MAAM;IAAEiB;EAAQ,CAAC,GAAGD,gBAAgB,IAAI,CAAC,CAAC;EAE1C,MAAME,cAAc,GAAGtB,WAAW,CAAC,MAAM;IACvC,IAAIqB,OAAO,EAAE;MACXF,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAAC;IAClB;EACF,CAAC,EAAE,CAACA,YAAY,EAAEE,OAAO,CAAC,CAAC;EAE3B,OACEtB,KAAA,CAAAwB,aAAA,CAAClB,MAAM,EAAAmB,QAAA;IACLC,OAAO,EAAC,WAAW;IACnBd,SAAS,EAAET,UAAU,CAAC,0BAA0B,EAAES,SAAS,CAAE;IAC7De,IAAI,EAAEpB,KAAM;IACZqB,OAAO,EAAEL;EAAe,GACpBR,IAAI,GAEPG,OACK,CAAC;AAEb;AAEAV,qBAAqB,CAACqB,qBAAqB,GAAG,IAAI;AAClD,eAAerB,qBAAqB"}
@@ -0,0 +1,3 @@
1
+ import { PropertiesTableProps } from '../../../../shared/types';
2
+ export declare const IsolationProperties: PropertiesTableProps;
3
+ export declare const IsolationEvents: PropertiesTableProps;
@@ -0,0 +1,30 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
3
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
4
+ import { ProviderEvents, ProviderProperties } from '../../DataContext/Provider/ProviderDocs';
5
+ export const IsolationProperties = _objectSpread(_objectSpread({
6
+ commitHandleRef: {
7
+ doc: 'Provide a ref to a function that can be called from any location to commit the data to the form.',
8
+ type: 'React.Ref',
9
+ status: 'optional'
10
+ }
11
+ }, ProviderProperties), {}, {
12
+ minimumAsyncBehaviorTime: undefined,
13
+ asyncSubmitTimeout: undefined,
14
+ scrollTopOnSubmit: undefined,
15
+ sessionStorageId: undefined,
16
+ filterSubmitData: undefined,
17
+ globalStatusId: undefined
18
+ });
19
+ export const IsolationEvents = _objectSpread(_objectSpread({
20
+ onCommit: {
21
+ doc: 'Will be called on a nested form context commit – if validation has passed.',
22
+ type: 'function',
23
+ status: 'optional'
24
+ }
25
+ }, ProviderEvents), {}, {
26
+ onSubmit: undefined,
27
+ onSubmitRequest: undefined,
28
+ onSubmitComplete: undefined
29
+ });
30
+ //# sourceMappingURL=IsolationDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IsolationDocs.js","names":["ProviderEvents","ProviderProperties","IsolationProperties","_objectSpread","commitHandleRef","doc","type","status","minimumAsyncBehaviorTime","undefined","asyncSubmitTimeout","scrollTopOnSubmit","sessionStorageId","filterSubmitData","globalStatusId","IsolationEvents","onCommit","onSubmit","onSubmitRequest","onSubmitComplete"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/IsolationDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\nimport {\n ProviderEvents,\n ProviderProperties,\n} from '../../DataContext/Provider/ProviderDocs'\n\nexport const IsolationProperties: PropertiesTableProps = {\n commitHandleRef: {\n doc: 'Provide a ref to a function that can be called from any location to commit the data to the form.',\n type: 'React.Ref',\n status: 'optional',\n },\n ...ProviderProperties,\n minimumAsyncBehaviorTime: undefined,\n asyncSubmitTimeout: undefined,\n scrollTopOnSubmit: undefined,\n sessionStorageId: undefined,\n filterSubmitData: undefined,\n globalStatusId: undefined,\n}\n\nexport const IsolationEvents: PropertiesTableProps = {\n onCommit: {\n doc: 'Will be called on a nested form context commit – if validation has passed.',\n type: 'function',\n status: 'optional',\n },\n ...ProviderEvents,\n onSubmit: undefined,\n onSubmitRequest: undefined,\n onSubmitComplete: undefined,\n}\n"],"mappings":";;;AACA,SACEA,cAAc,EACdC,kBAAkB,QACb,yCAAyC;AAEhD,OAAO,MAAMC,mBAAyC,GAAAC,aAAA,CAAAA,aAAA;EACpDC,eAAe,EAAE;IACfC,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,WAAW;IACjBC,MAAM,EAAE;EACV;AAAC,GACEN,kBAAkB;EACrBO,wBAAwB,EAAEC,SAAS;EACnCC,kBAAkB,EAAED,SAAS;EAC7BE,iBAAiB,EAAEF,SAAS;EAC5BG,gBAAgB,EAAEH,SAAS;EAC3BI,gBAAgB,EAAEJ,SAAS;EAC3BK,cAAc,EAAEL;AAAS,EAC1B;AAED,OAAO,MAAMM,eAAqC,GAAAZ,aAAA,CAAAA,aAAA;EAChDa,QAAQ,EAAE;IACRX,GAAG,EAAE,4EAA4E;IACjFC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV;AAAC,GACEP,cAAc;EACjBiB,QAAQ,EAAER,SAAS;EACnBS,eAAe,EAAET,SAAS;EAC1BU,gBAAgB,EAAEV;AAAS,EAC5B"}
@@ -0,0 +1,2 @@
1
+ export { default } from './Isolation';
2
+ export * from './Isolation';
@@ -0,0 +1,3 @@
1
+ export { default } from './Isolation';
2
+ export * from './Isolation';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["default"],"sources":["../../../../../../src/extensions/forms/Form/Isolation/index.ts"],"sourcesContent":["export { default } from './Isolation'\nexport * from './Isolation'\n"],"mappings":"AAAA,SAASA,OAAO,QAAQ,aAAa;AACrC,cAAc,aAAa"}
@@ -24,8 +24,12 @@ function SubmitButton(props) {
24
24
  const {
25
25
  formState,
26
26
  handleSubmit,
27
- isInsideFormElement
27
+ isInsideFormElement,
28
+ props: dataContextProps
28
29
  } = useContext(DataContext) || {};
30
+ const {
31
+ isolate
32
+ } = dataContextProps || {};
29
33
  const onClickHandler = useCallback(() => {
30
34
  if (!isInsideFormElement) {
31
35
  handleSubmit === null || handleSubmit === void 0 ? void 0 : handleSubmit();
@@ -34,7 +38,7 @@ function SubmitButton(props) {
34
38
  return React.createElement(Button, _extends({
35
39
  className: classnames('dnb-forms-submit-button', className),
36
40
  onClick: onClickHandler,
37
- type: "submit",
41
+ type: isolate ? 'button' : 'submit',
38
42
  icon: variant === 'send' ? send : null
39
43
  }, rest), content, React.createElement(SubmitIndicator, {
40
44
  state: showIndicator ? 'pending' : formState
@@ -1 +1 @@
1
- {"version":3,"file":"SubmitButton.js","names":["React","useCallback","useContext","classnames","DataContext","Button","SubmitIndicator","useTranslation","send","SubmitButton","props","translations","variant","className","showIndicator","children","text","rest","_objectWithoutProperties","_excluded","content","sendText","formState","handleSubmit","isInsideFormElement","onClickHandler","createElement","_extends","onClick","type","icon","state","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/SubmitButton/SubmitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport type { ComponentProps } from '../../types'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport SubmitIndicator from '../SubmitIndicator'\nimport useTranslation from '../../hooks/useTranslation'\nimport { send } from '../../../../icons'\n\nexport type Props = {\n /**\n * Show the submit indicator\n */\n showIndicator?: boolean\n} & ComponentProps &\n Omit<ButtonProps, 'variant'> &\n Partial<React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>> & {\n variant?: 'send'\n }\n\nfunction SubmitButton(props: Props) {\n const translations = useTranslation().SubmitButton\n\n const { variant, className, showIndicator, children, text, ...rest } =\n props\n\n const content =\n text ||\n children ||\n (variant === 'send' ? translations.sendText : translations.text)\n\n const { formState, handleSubmit, isInsideFormElement } =\n useContext(DataContext) || {}\n\n const onClickHandler = useCallback(() => {\n if (!isInsideFormElement) {\n handleSubmit?.()\n }\n }, [isInsideFormElement, handleSubmit])\n\n return (\n <Button\n className={classnames('dnb-forms-submit-button', className)}\n onClick={onClickHandler}\n type=\"submit\"\n icon={variant === 'send' ? send : null}\n {...rest}\n >\n {content}\n\n <SubmitIndicator\n state={\n showIndicator ? 'pending' : formState // will be enabled in a follow-up PR\n }\n />\n </Button>\n )\n}\n\nSubmitButton._supportsSpacingProps = true\nexport default SubmitButton\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,MAAM,MAAuB,sCAAsC;AAC1E,OAAOC,eAAe,MAAM,oBAAoB;AAChD,OAAOC,cAAc,MAAM,4BAA4B;AACvD,SAASC,IAAI,QAAQ,mBAAmB;AAaxC,SAASC,YAAYA,CAACC,KAAY,EAAE;EAClC,MAAMC,YAAY,GAAGJ,cAAc,CAAC,CAAC,CAACE,YAAY;EAElD,MAAM;MAAEG,OAAO;MAAEC,SAAS;MAAEC,aAAa;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAClEN,KAAK;IADuDO,IAAI,GAAAC,wBAAA,CAChER,KAAK,EAAAS,SAAA;EAEP,MAAMC,OAAO,GACXJ,IAAI,IACJD,QAAQ,KACPH,OAAO,KAAK,MAAM,GAAGD,YAAY,CAACU,QAAQ,GAAGV,YAAY,CAACK,IAAI,CAAC;EAElE,MAAM;IAAEM,SAAS;IAAEC,YAAY;IAAEC;EAAoB,CAAC,GACpDtB,UAAU,CAACE,WAAW,CAAC,IAAI,CAAC,CAAC;EAE/B,MAAMqB,cAAc,GAAGxB,WAAW,CAAC,MAAM;IACvC,IAAI,CAACuB,mBAAmB,EAAE;MACxBD,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAAC;IAClB;EACF,CAAC,EAAE,CAACC,mBAAmB,EAAED,YAAY,CAAC,CAAC;EAEvC,OACEvB,KAAA,CAAA0B,aAAA,CAACrB,MAAM,EAAAsB,QAAA;IACLd,SAAS,EAAEV,UAAU,CAAC,yBAAyB,EAAEU,SAAS,CAAE;IAC5De,OAAO,EAAEH,cAAe;IACxBI,IAAI,EAAC,QAAQ;IACbC,IAAI,EAAElB,OAAO,KAAK,MAAM,GAAGJ,IAAI,GAAG;EAAK,GACnCS,IAAI,GAEPG,OAAO,EAERpB,KAAA,CAAA0B,aAAA,CAACpB,eAAe;IACdyB,KAAK,EACHjB,aAAa,GAAG,SAAS,GAAGQ;EAC7B,CACF,CACK,CAAC;AAEb;AAEAb,YAAY,CAACuB,qBAAqB,GAAG,IAAI;AACzC,eAAevB,YAAY"}
1
+ {"version":3,"file":"SubmitButton.js","names":["React","useCallback","useContext","classnames","DataContext","Button","SubmitIndicator","useTranslation","send","SubmitButton","props","translations","variant","className","showIndicator","children","text","rest","_objectWithoutProperties","_excluded","content","sendText","formState","handleSubmit","isInsideFormElement","dataContextProps","isolate","onClickHandler","createElement","_extends","onClick","type","icon","state","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/SubmitButton/SubmitButton.tsx"],"sourcesContent":["import React, { useCallback, useContext } from 'react'\nimport classnames from 'classnames'\nimport type { ComponentProps } from '../../types'\nimport DataContext from '../../DataContext/Context'\nimport Button, { ButtonProps } from '../../../../components/button/Button'\nimport SubmitIndicator from '../SubmitIndicator'\nimport useTranslation from '../../hooks/useTranslation'\nimport { send } from '../../../../icons'\n\nexport type Props = {\n /**\n * Show the submit indicator\n */\n showIndicator?: boolean\n} & ComponentProps &\n Omit<ButtonProps, 'variant'> &\n Partial<React.HTMLAttributes<HTMLButtonElement | HTMLAnchorElement>> & {\n variant?: 'send'\n }\n\nfunction SubmitButton(props: Props) {\n const translations = useTranslation().SubmitButton\n\n const { variant, className, showIndicator, children, text, ...rest } =\n props\n\n const content =\n text ||\n children ||\n (variant === 'send' ? translations.sendText : translations.text)\n\n const {\n formState,\n handleSubmit,\n isInsideFormElement,\n props: dataContextProps,\n } = useContext(DataContext) || {}\n const { isolate } = dataContextProps || {}\n\n const onClickHandler = useCallback(() => {\n if (!isInsideFormElement) {\n handleSubmit?.()\n }\n }, [isInsideFormElement, handleSubmit])\n\n return (\n <Button\n className={classnames('dnb-forms-submit-button', className)}\n onClick={onClickHandler}\n type={isolate ? 'button' : 'submit'}\n icon={variant === 'send' ? send : null}\n {...rest}\n >\n {content}\n\n <SubmitIndicator\n state={\n showIndicator ? 'pending' : formState // will be enabled in a follow-up PR\n }\n />\n </Button>\n )\n}\n\nSubmitButton._supportsSpacingProps = true\nexport default SubmitButton\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,IAAIC,WAAW,EAAEC,UAAU,QAAQ,OAAO;AACtD,OAAOC,UAAU,MAAM,YAAY;AAEnC,OAAOC,WAAW,MAAM,2BAA2B;AACnD,OAAOC,MAAM,MAAuB,sCAAsC;AAC1E,OAAOC,eAAe,MAAM,oBAAoB;AAChD,OAAOC,cAAc,MAAM,4BAA4B;AACvD,SAASC,IAAI,QAAQ,mBAAmB;AAaxC,SAASC,YAAYA,CAACC,KAAY,EAAE;EAClC,MAAMC,YAAY,GAAGJ,cAAc,CAAC,CAAC,CAACE,YAAY;EAElD,MAAM;MAAEG,OAAO;MAAEC,SAAS;MAAEC,aAAa;MAAEC,QAAQ;MAAEC;IAAc,CAAC,GAClEN,KAAK;IADuDO,IAAI,GAAAC,wBAAA,CAChER,KAAK,EAAAS,SAAA;EAEP,MAAMC,OAAO,GACXJ,IAAI,IACJD,QAAQ,KACPH,OAAO,KAAK,MAAM,GAAGD,YAAY,CAACU,QAAQ,GAAGV,YAAY,CAACK,IAAI,CAAC;EAElE,MAAM;IACJM,SAAS;IACTC,YAAY;IACZC,mBAAmB;IACnBd,KAAK,EAAEe;EACT,CAAC,GAAGvB,UAAU,CAACE,WAAW,CAAC,IAAI,CAAC,CAAC;EACjC,MAAM;IAAEsB;EAAQ,CAAC,GAAGD,gBAAgB,IAAI,CAAC,CAAC;EAE1C,MAAME,cAAc,GAAG1B,WAAW,CAAC,MAAM;IACvC,IAAI,CAACuB,mBAAmB,EAAE;MACxBD,YAAY,aAAZA,YAAY,uBAAZA,YAAY,CAAG,CAAC;IAClB;EACF,CAAC,EAAE,CAACC,mBAAmB,EAAED,YAAY,CAAC,CAAC;EAEvC,OACEvB,KAAA,CAAA4B,aAAA,CAACvB,MAAM,EAAAwB,QAAA;IACLhB,SAAS,EAAEV,UAAU,CAAC,yBAAyB,EAAEU,SAAS,CAAE;IAC5DiB,OAAO,EAAEH,cAAe;IACxBI,IAAI,EAAEL,OAAO,GAAG,QAAQ,GAAG,QAAS;IACpCM,IAAI,EAAEpB,OAAO,KAAK,MAAM,GAAGJ,IAAI,GAAG;EAAK,GACnCS,IAAI,GAEPG,OAAO,EAERpB,KAAA,CAAA4B,aAAA,CAACtB,eAAe;IACd2B,KAAK,EACHnB,aAAa,GAAG,SAAS,GAAGQ;EAC7B,CACF,CACK,CAAC;AAEb;AAEAb,YAAY,CAACyB,qBAAqB,GAAG,IAAI;AACzC,eAAezB,YAAY"}
@@ -1,30 +1,46 @@
1
1
  import React, { AriaAttributes } from 'react';
2
2
  import { HeightAnimationProps } from '../../../../components/HeightAnimation';
3
- import type { UseFieldProps } from '../../types';
3
+ import type { Path, UseFieldProps } from '../../types';
4
4
  import type { DataAttributes } from '../../hooks/useFieldProps';
5
5
  import { FilterData } from '../../DataContext';
6
6
  export type VisibleWhen = {
7
- path: string;
7
+ path: Path;
8
8
  hasValue: unknown;
9
9
  } | {
10
- path: string;
10
+ itemPath: Path;
11
+ hasValue: unknown;
12
+ }
13
+ /**
14
+ * @deprecated Will be remove din v11!
15
+ */
16
+ | {
17
+ path: Path;
18
+ /** @deprecated Use `hasValue` instead */
19
+ withValue: (value: unknown) => boolean;
20
+ }
21
+ /**
22
+ * @deprecated Will be remove din v11!
23
+ */
24
+ | {
25
+ itemPath: Path;
26
+ /** @deprecated Use `hasValue` instead */
11
27
  withValue: (value: unknown) => boolean;
12
28
  };
13
29
  export type Props = {
14
30
  visible?: boolean;
15
31
  /** Given data context path must be defined to show children */
16
- pathDefined?: string;
32
+ pathDefined?: Path;
17
33
  /** Given data context path must be undefined to show children */
18
- pathUndefined?: string;
34
+ pathUndefined?: Path;
19
35
  /** Given data context path must be truthy to show children */
20
- pathTruthy?: string;
36
+ pathTruthy?: Path;
21
37
  /** Given data context path must be falsy to show children */
22
- pathFalsy?: string;
38
+ pathFalsy?: Path;
23
39
  /** Given data context path must be true to show children */
24
- pathTrue?: string;
40
+ pathTrue?: Path;
25
41
  /** Given data context path must be false to show children */
26
- pathFalse?: string;
27
- /** Provide a `path` and a `hasValue` property with the excepted value in order to show children. You can alternatively provide a `withValue` function that returns a boolean. The first parameter is the value of the path. */
42
+ pathFalse?: Path;
43
+ /** Provide a `path` or `itemPath` and a `hasValue` method that returns a boolean or the excepted value in order to show children. The first parameter is the value of the path. */
28
44
  visibleWhen?: VisibleWhen;
29
45
  /** Same as `visibleWhen`, but with inverted logic. */
30
46
  visibleWhenNot?: VisibleWhen;
@@ -1 +1 @@
1
- {"version":3,"file":"Visibility.js","names":["React","warn","useMountEffect","HeightAnimation","FieldProps","useVisibility","Visibility","_ref","visible","pathDefined","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","pathValue","whenValue","visibleWhen","visibleWhenNot","inferData","filterData","animate","keepInDOM","compensateForGap","fieldPropsWhenHidden","children","rest","_objectWithoutProperties","_excluded","check","open","props","createElement","_extends","Boolean","className","hidden","Fragment","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/Visibility.tsx"],"sourcesContent":["import React, { AriaAttributes } from 'react'\n\nimport { warn } from '../../../../shared/helpers'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport HeightAnimation, {\n HeightAnimationProps,\n} from '../../../../components/HeightAnimation'\nimport FieldProps from '../FieldProps'\nimport useVisibility from './useVisibility'\n\nimport type { UseFieldProps } from '../../types'\nimport type { DataAttributes } from '../../hooks/useFieldProps'\nimport { FilterData } from '../../DataContext'\n\nexport type VisibleWhen =\n | {\n path: string\n hasValue: unknown\n }\n | {\n path: string\n withValue: (value: unknown) => boolean\n }\n\nexport type Props = {\n visible?: boolean\n /** Given data context path must be defined to show children */\n pathDefined?: string\n /** Given data context path must be undefined to show children */\n pathUndefined?: string\n /** Given data context path must be truthy to show children */\n pathTruthy?: string\n /** Given data context path must be falsy to show children */\n pathFalsy?: string\n /** Given data context path must be true to show children */\n pathTrue?: string\n /** Given data context path must be false to show children */\n pathFalse?: string\n /** Provide a `path` and a `hasValue` property with the excepted value in order to show children. You can alternatively provide a `withValue` function that returns a boolean. The first parameter is the value of the path. */\n visibleWhen?: VisibleWhen\n /** Same as `visibleWhen`, but with inverted logic. */\n visibleWhenNot?: VisibleWhen\n /** Infer visibility calling given derivative function with the whole data set. Should return true/false for visibility. */\n inferData?: (data: unknown) => boolean\n /** Filter data based on provided criteria. The first parameter is the path, the second is the value, and the third is the props, and the fourth is the internal. Return false to filter out the data. */\n filterData?: FilterData\n /** Animate the visibility change */\n animate?: boolean\n /** Keep the content in the DOM, even if it's not visible */\n keepInDOM?: boolean\n /** To compensate for CSS gap between the rows, so animation does not jump during the animation. Provide a CSS unit or `auto`. Defaults to `null`. */\n compensateForGap?: HeightAnimationProps['compensateForGap']\n /** When visibility is hidden, and `keepInDOM` is true, pass these props to the children */\n fieldPropsWhenHidden?: UseFieldProps & DataAttributes & AriaAttributes\n element?: HeightAnimationProps['element']\n children: React.ReactNode\n\n /** @deprecated Use `visibleWhen` instead */\n pathValue?: string\n /** @deprecated Use `visibleWhen` instead */\n whenValue?: unknown\n}\n\nfunction Visibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n visibleWhen,\n visibleWhenNot,\n inferData,\n filterData,\n animate,\n keepInDOM,\n compensateForGap,\n fieldPropsWhenHidden,\n children,\n ...rest\n}: Props) {\n useMountEffect(() => {\n if (fieldPropsWhenHidden && !keepInDOM) {\n warn('Using \"fieldPropsWhenHidden\" requires \"keepInDOM\" to be true.')\n }\n })\n\n const { check } = useVisibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n visibleWhen,\n visibleWhenNot,\n inferData,\n filterData,\n })\n const open = check()\n\n if (animate) {\n const props = !open ? fieldPropsWhenHidden : null\n\n return (\n <HeightAnimation\n open={open}\n keepInDOM={Boolean(keepInDOM)}\n className=\"dnb-forms-visibility\"\n compensateForGap={compensateForGap}\n {...rest}\n >\n <FieldProps {...props}>{children}</FieldProps>\n </HeightAnimation>\n )\n }\n\n if (keepInDOM) {\n const props = !open ? fieldPropsWhenHidden : null\n return (\n <span className=\"dnb-forms-visibility\" hidden={!open}>\n <FieldProps {...props}>{children}</FieldProps>\n </span>\n )\n }\n\n return <>{open ? children : null}</>\n}\n\nVisibility._supportsSpacingProps = 'children'\nexport default Visibility\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAA0B,OAAO;AAE7C,SAASC,IAAI,QAAQ,4BAA4B;AACjD,OAAOC,cAAc,MAAM,2CAA2C;AACtE,OAAOC,eAAe,MAEf,wCAAwC;AAC/C,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,aAAa,MAAM,iBAAiB;AAuD3C,SAASC,UAAUA,CAAAC,IAAA,EAoBT;EAAA,IApBU;MAClBC,OAAO;MACPC,WAAW;MACXC,aAAa;MACbC,UAAU;MACVC,SAAS;MACTC,QAAQ;MACRC,SAAS;MACTC,SAAS;MACTC,SAAS;MACTC,WAAW;MACXC,cAAc;MACdC,SAAS;MACTC,UAAU;MACVC,OAAO;MACPC,SAAS;MACTC,gBAAgB;MAChBC,oBAAoB;MACpBC;IAEK,CAAC,GAAAlB,IAAA;IADHmB,IAAI,GAAAC,wBAAA,CAAApB,IAAA,EAAAqB,SAAA;EAEP1B,cAAc,CAAC,MAAM;IACnB,IAAIsB,oBAAoB,IAAI,CAACF,SAAS,EAAE;MACtCrB,IAAI,CAAC,+DAA+D,CAAC;IACvE;EACF,CAAC,CAAC;EAEF,MAAM;IAAE4B;EAAM,CAAC,GAAGxB,aAAa,CAAC;IAC9BG,OAAO;IACPC,WAAW;IACXC,aAAa;IACbC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,SAAS;IACTC,SAAS;IACTC,SAAS;IACTC,WAAW;IACXC,cAAc;IACdC,SAAS;IACTC;EACF,CAAC,CAAC;EACF,MAAMU,IAAI,GAAGD,KAAK,CAAC,CAAC;EAEpB,IAAIR,OAAO,EAAE;IACX,MAAMU,KAAK,GAAG,CAACD,IAAI,GAAGN,oBAAoB,GAAG,IAAI;IAEjD,OACExB,KAAA,CAAAgC,aAAA,CAAC7B,eAAe,EAAA8B,QAAA;MACdH,IAAI,EAAEA,IAAK;MACXR,SAAS,EAAEY,OAAO,CAACZ,SAAS,CAAE;MAC9Ba,SAAS,EAAC,sBAAsB;MAChCZ,gBAAgB,EAAEA;IAAiB,GAC/BG,IAAI,GAER1B,KAAA,CAAAgC,aAAA,CAAC5B,UAAU,EAAK2B,KAAK,EAAGN,QAAqB,CAC9B,CAAC;EAEtB;EAEA,IAAIH,SAAS,EAAE;IACb,MAAMS,KAAK,GAAG,CAACD,IAAI,GAAGN,oBAAoB,GAAG,IAAI;IACjD,OACExB,KAAA,CAAAgC,aAAA;MAAMG,SAAS,EAAC,sBAAsB;MAACC,MAAM,EAAE,CAACN;IAAK,GACnD9B,KAAA,CAAAgC,aAAA,CAAC5B,UAAU,EAAK2B,KAAK,EAAGN,QAAqB,CACzC,CAAC;EAEX;EAEA,OAAOzB,KAAA,CAAAgC,aAAA,CAAAhC,KAAA,CAAAqC,QAAA,QAAGP,IAAI,GAAGL,QAAQ,GAAG,IAAO,CAAC;AACtC;AAEAnB,UAAU,CAACgC,qBAAqB,GAAG,UAAU;AAC7C,eAAehC,UAAU"}
1
+ {"version":3,"file":"Visibility.js","names":["React","warn","useMountEffect","HeightAnimation","FieldProps","useVisibility","Visibility","_ref","visible","pathDefined","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","pathValue","whenValue","visibleWhen","visibleWhenNot","inferData","filterData","animate","keepInDOM","compensateForGap","fieldPropsWhenHidden","children","rest","_objectWithoutProperties","_excluded","check","open","props","createElement","_extends","Boolean","className","hidden","Fragment","_supportsSpacingProps"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/Visibility.tsx"],"sourcesContent":["import React, { AriaAttributes } from 'react'\n\nimport { warn } from '../../../../shared/helpers'\nimport useMountEffect from '../../../../shared/helpers/useMountEffect'\nimport HeightAnimation, {\n HeightAnimationProps,\n} from '../../../../components/HeightAnimation'\nimport FieldProps from '../FieldProps'\nimport useVisibility from './useVisibility'\n\nimport type { Path, UseFieldProps } from '../../types'\nimport type { DataAttributes } from '../../hooks/useFieldProps'\nimport { FilterData } from '../../DataContext'\n\nexport type VisibleWhen =\n | {\n path: Path\n hasValue: unknown\n }\n | {\n itemPath: Path\n hasValue: unknown\n }\n /**\n * @deprecated Will be remove din v11!\n */\n | {\n path: Path\n /** @deprecated Use `hasValue` instead */\n withValue: (value: unknown) => boolean\n }\n /**\n * @deprecated Will be remove din v11!\n */\n | {\n itemPath: Path\n /** @deprecated Use `hasValue` instead */\n withValue: (value: unknown) => boolean\n }\n\nexport type Props = {\n visible?: boolean\n /** Given data context path must be defined to show children */\n pathDefined?: Path\n /** Given data context path must be undefined to show children */\n pathUndefined?: Path\n /** Given data context path must be truthy to show children */\n pathTruthy?: Path\n /** Given data context path must be falsy to show children */\n pathFalsy?: Path\n /** Given data context path must be true to show children */\n pathTrue?: Path\n /** Given data context path must be false to show children */\n pathFalse?: Path\n /** Provide a `path` or `itemPath` and a `hasValue` method that returns a boolean or the excepted value in order to show children. The first parameter is the value of the path. */\n visibleWhen?: VisibleWhen\n /** Same as `visibleWhen`, but with inverted logic. */\n visibleWhenNot?: VisibleWhen\n /** Infer visibility calling given derivative function with the whole data set. Should return true/false for visibility. */\n inferData?: (data: unknown) => boolean\n /** Filter data based on provided criteria. The first parameter is the path, the second is the value, and the third is the props, and the fourth is the internal. Return false to filter out the data. */\n filterData?: FilterData\n /** Animate the visibility change */\n animate?: boolean\n /** Keep the content in the DOM, even if it's not visible */\n keepInDOM?: boolean\n /** To compensate for CSS gap between the rows, so animation does not jump during the animation. Provide a CSS unit or `auto`. Defaults to `null`. */\n compensateForGap?: HeightAnimationProps['compensateForGap']\n /** When visibility is hidden, and `keepInDOM` is true, pass these props to the children */\n fieldPropsWhenHidden?: UseFieldProps & DataAttributes & AriaAttributes\n element?: HeightAnimationProps['element']\n children: React.ReactNode\n\n /** @deprecated Use `visibleWhen` instead */\n pathValue?: string\n /** @deprecated Use `visibleWhen` instead */\n whenValue?: unknown\n}\n\nfunction Visibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n visibleWhen,\n visibleWhenNot,\n inferData,\n filterData,\n animate,\n keepInDOM,\n compensateForGap,\n fieldPropsWhenHidden,\n children,\n ...rest\n}: Props) {\n useMountEffect(() => {\n if (fieldPropsWhenHidden && !keepInDOM) {\n warn('Using \"fieldPropsWhenHidden\" requires \"keepInDOM\" to be true.')\n }\n })\n\n const { check } = useVisibility({\n visible,\n pathDefined,\n pathUndefined,\n pathTruthy,\n pathFalsy,\n pathTrue,\n pathFalse,\n pathValue,\n whenValue,\n visibleWhen,\n visibleWhenNot,\n inferData,\n filterData,\n })\n const open = check()\n\n if (animate) {\n const props = !open ? fieldPropsWhenHidden : null\n\n return (\n <HeightAnimation\n open={open}\n keepInDOM={Boolean(keepInDOM)}\n className=\"dnb-forms-visibility\"\n compensateForGap={compensateForGap}\n {...rest}\n >\n <FieldProps {...props}>{children}</FieldProps>\n </HeightAnimation>\n )\n }\n\n if (keepInDOM) {\n const props = !open ? fieldPropsWhenHidden : null\n return (\n <span className=\"dnb-forms-visibility\" hidden={!open}>\n <FieldProps {...props}>{children}</FieldProps>\n </span>\n )\n }\n\n return <>{open ? children : null}</>\n}\n\nVisibility._supportsSpacingProps = 'children'\nexport default Visibility\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAA0B,OAAO;AAE7C,SAASC,IAAI,QAAQ,4BAA4B;AACjD,OAAOC,cAAc,MAAM,2CAA2C;AACtE,OAAOC,eAAe,MAEf,wCAAwC;AAC/C,OAAOC,UAAU,MAAM,eAAe;AACtC,OAAOC,aAAa,MAAM,iBAAiB;AAuE3C,SAASC,UAAUA,CAAAC,IAAA,EAoBT;EAAA,IApBU;MAClBC,OAAO;MACPC,WAAW;MACXC,aAAa;MACbC,UAAU;MACVC,SAAS;MACTC,QAAQ;MACRC,SAAS;MACTC,SAAS;MACTC,SAAS;MACTC,WAAW;MACXC,cAAc;MACdC,SAAS;MACTC,UAAU;MACVC,OAAO;MACPC,SAAS;MACTC,gBAAgB;MAChBC,oBAAoB;MACpBC;IAEK,CAAC,GAAAlB,IAAA;IADHmB,IAAI,GAAAC,wBAAA,CAAApB,IAAA,EAAAqB,SAAA;EAEP1B,cAAc,CAAC,MAAM;IACnB,IAAIsB,oBAAoB,IAAI,CAACF,SAAS,EAAE;MACtCrB,IAAI,CAAC,+DAA+D,CAAC;IACvE;EACF,CAAC,CAAC;EAEF,MAAM;IAAE4B;EAAM,CAAC,GAAGxB,aAAa,CAAC;IAC9BG,OAAO;IACPC,WAAW;IACXC,aAAa;IACbC,UAAU;IACVC,SAAS;IACTC,QAAQ;IACRC,SAAS;IACTC,SAAS;IACTC,SAAS;IACTC,WAAW;IACXC,cAAc;IACdC,SAAS;IACTC;EACF,CAAC,CAAC;EACF,MAAMU,IAAI,GAAGD,KAAK,CAAC,CAAC;EAEpB,IAAIR,OAAO,EAAE;IACX,MAAMU,KAAK,GAAG,CAACD,IAAI,GAAGN,oBAAoB,GAAG,IAAI;IAEjD,OACExB,KAAA,CAAAgC,aAAA,CAAC7B,eAAe,EAAA8B,QAAA;MACdH,IAAI,EAAEA,IAAK;MACXR,SAAS,EAAEY,OAAO,CAACZ,SAAS,CAAE;MAC9Ba,SAAS,EAAC,sBAAsB;MAChCZ,gBAAgB,EAAEA;IAAiB,GAC/BG,IAAI,GAER1B,KAAA,CAAAgC,aAAA,CAAC5B,UAAU,EAAK2B,KAAK,EAAGN,QAAqB,CAC9B,CAAC;EAEtB;EAEA,IAAIH,SAAS,EAAE;IACb,MAAMS,KAAK,GAAG,CAACD,IAAI,GAAGN,oBAAoB,GAAG,IAAI;IACjD,OACExB,KAAA,CAAAgC,aAAA;MAAMG,SAAS,EAAC,sBAAsB;MAACC,MAAM,EAAE,CAACN;IAAK,GACnD9B,KAAA,CAAAgC,aAAA,CAAC5B,UAAU,EAAK2B,KAAK,EAAGN,QAAqB,CACzC,CAAC;EAEX;EAEA,OAAOzB,KAAA,CAAAgC,aAAA,CAAAhC,KAAA,CAAAqC,QAAA,QAAGP,IAAI,GAAGL,QAAQ,GAAG,IAAO,CAAC;AACtC;AAEAnB,UAAU,CAACgC,qBAAqB,GAAG,UAAU;AAC7C,eAAehC,UAAU"}
@@ -30,7 +30,7 @@ export const VisibilityProperties = {
30
30
  status: 'optional'
31
31
  },
32
32
  visibleWhen: {
33
- doc: 'Provide a `path` and a `hasValue` property with the excepted value in order to show children. You can alternatively provide a `withValue` function that returns a boolean. The first parameter is the value of the path.',
33
+ doc: 'Provide a `path` or `itemPath` and a `hasValue` method that returns a boolean or the excepted value in order to show children. The first parameter is the value of the path.',
34
34
  type: 'object',
35
35
  status: 'optional'
36
36
  },
@@ -1 +1 @@
1
- {"version":3,"file":"VisibilityDocs.js","names":["VisibilityProperties","pathDefined","doc","type","status","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","visibleWhen","visibleWhenNot","inferData","visible","animate","keepInDOM","compensateForGap","filterData","fieldPropsWhenHidden","element","children"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/VisibilityDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const VisibilityProperties: PropertiesTableProps = {\n pathDefined: {\n doc: 'Given data context path must be defined to show children.',\n type: 'string',\n status: 'optional',\n },\n pathUndefined: {\n doc: 'Given data context path must be undefined to show children.',\n type: 'string',\n status: 'optional',\n },\n pathTruthy: {\n doc: 'Given data context path must be truthy to show children.',\n type: 'string',\n status: 'optional',\n },\n pathFalsy: {\n doc: 'Given data context path must be falsy to show children.',\n type: 'string',\n status: 'optional',\n },\n pathTrue: {\n doc: 'Given data context path must be true to show children.',\n type: 'string',\n status: 'optional',\n },\n pathFalse: {\n doc: 'Given data context path must be false to show children.',\n type: 'string',\n status: 'optional',\n },\n visibleWhen: {\n doc: 'Provide a `path` and a `hasValue` property with the excepted value in order to show children. You can alternatively provide a `withValue` function that returns a boolean. The first parameter is the value of the path.',\n type: 'object',\n status: 'optional',\n },\n visibleWhenNot: {\n doc: 'Same as `visibleWhen`, but with inverted logic.',\n type: 'object',\n status: 'optional',\n },\n inferData: {\n doc: 'Will be called to decide by external logic, and show/hide contents based on the return value.',\n type: 'function',\n status: 'optional',\n },\n visible: {\n doc: 'Control visibility directly by boolean value.',\n type: 'boolean',\n status: 'optional',\n },\n animate: {\n doc: 'Define if the content should animate during show/hide.',\n type: 'boolean',\n status: 'optional',\n },\n keepInDOM: {\n doc: \"Keep the content in the DOM, even if it's not visible. Can be used to let fields run validation.\",\n type: 'boolean',\n status: 'optional',\n },\n compensateForGap: {\n doc: 'To compensate for CSS gap between the rows, so animation does not jump during the animation. Provide a CSS unit or `auto`. Defaults to `null`.',\n type: 'string',\n status: 'optional',\n },\n filterData: {\n doc: 'Filter data based on provided criteria. More info about `filterData` can be found in the [Getting Started](/uilib/extensions/forms/getting-started/#filter-data) documentation.',\n type: ['object', 'function'],\n status: 'optional',\n },\n fieldPropsWhenHidden: {\n doc: 'When visibility is hidden, and `keepInDOM` is true, pass these props to the children.',\n type: 'various',\n status: 'optional',\n },\n element: {\n doc: 'Define the type of element. Defaults to `div`. Only for when `animate` is true.',\n type: 'string or React.Element',\n status: 'optional',\n },\n children: {\n doc: 'Contents.',\n type: 'React.Node',\n status: 'required',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,oBAA0C,GAAG;EACxDC,WAAW,EAAE;IACXC,GAAG,EAAE,2DAA2D;IAChEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,aAAa,EAAE;IACbH,GAAG,EAAE,6DAA6D;IAClEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,UAAU,EAAE;IACVJ,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,SAAS,EAAE;IACTL,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,QAAQ,EAAE;IACRN,GAAG,EAAE,wDAAwD;IAC7DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,SAAS,EAAE;IACTP,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDM,WAAW,EAAE;IACXR,GAAG,EAAE,0NAA0N;IAC/NC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDO,cAAc,EAAE;IACdT,GAAG,EAAE,iDAAiD;IACtDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,SAAS,EAAE;IACTV,GAAG,EAAE,+FAA+F;IACpGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDS,OAAO,EAAE;IACPX,GAAG,EAAE,+CAA+C;IACpDC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDU,OAAO,EAAE;IACPZ,GAAG,EAAE,wDAAwD;IAC7DC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDW,SAAS,EAAE;IACTb,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDY,gBAAgB,EAAE;IAChBd,GAAG,EAAE,gJAAgJ;IACrJC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDa,UAAU,EAAE;IACVf,GAAG,EAAE,iLAAiL;IACtLC,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC5BC,MAAM,EAAE;EACV,CAAC;EACDc,oBAAoB,EAAE;IACpBhB,GAAG,EAAE,uFAAuF;IAC5FC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDe,OAAO,EAAE;IACPjB,GAAG,EAAE,iFAAiF;IACtFC,IAAI,EAAE,yBAAyB;IAC/BC,MAAM,EAAE;EACV,CAAC;EACDgB,QAAQ,EAAE;IACRlB,GAAG,EAAE,WAAW;IAChBC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV;AACF,CAAC"}
1
+ {"version":3,"file":"VisibilityDocs.js","names":["VisibilityProperties","pathDefined","doc","type","status","pathUndefined","pathTruthy","pathFalsy","pathTrue","pathFalse","visibleWhen","visibleWhenNot","inferData","visible","animate","keepInDOM","compensateForGap","filterData","fieldPropsWhenHidden","element","children"],"sources":["../../../../../../src/extensions/forms/Form/Visibility/VisibilityDocs.ts"],"sourcesContent":["import { PropertiesTableProps } from '../../../../shared/types'\n\nexport const VisibilityProperties: PropertiesTableProps = {\n pathDefined: {\n doc: 'Given data context path must be defined to show children.',\n type: 'string',\n status: 'optional',\n },\n pathUndefined: {\n doc: 'Given data context path must be undefined to show children.',\n type: 'string',\n status: 'optional',\n },\n pathTruthy: {\n doc: 'Given data context path must be truthy to show children.',\n type: 'string',\n status: 'optional',\n },\n pathFalsy: {\n doc: 'Given data context path must be falsy to show children.',\n type: 'string',\n status: 'optional',\n },\n pathTrue: {\n doc: 'Given data context path must be true to show children.',\n type: 'string',\n status: 'optional',\n },\n pathFalse: {\n doc: 'Given data context path must be false to show children.',\n type: 'string',\n status: 'optional',\n },\n visibleWhen: {\n doc: 'Provide a `path` or `itemPath` and a `hasValue` method that returns a boolean or the excepted value in order to show children. The first parameter is the value of the path.',\n type: 'object',\n status: 'optional',\n },\n visibleWhenNot: {\n doc: 'Same as `visibleWhen`, but with inverted logic.',\n type: 'object',\n status: 'optional',\n },\n inferData: {\n doc: 'Will be called to decide by external logic, and show/hide contents based on the return value.',\n type: 'function',\n status: 'optional',\n },\n visible: {\n doc: 'Control visibility directly by boolean value.',\n type: 'boolean',\n status: 'optional',\n },\n animate: {\n doc: 'Define if the content should animate during show/hide.',\n type: 'boolean',\n status: 'optional',\n },\n keepInDOM: {\n doc: \"Keep the content in the DOM, even if it's not visible. Can be used to let fields run validation.\",\n type: 'boolean',\n status: 'optional',\n },\n compensateForGap: {\n doc: 'To compensate for CSS gap between the rows, so animation does not jump during the animation. Provide a CSS unit or `auto`. Defaults to `null`.',\n type: 'string',\n status: 'optional',\n },\n filterData: {\n doc: 'Filter data based on provided criteria. More info about `filterData` can be found in the [Getting Started](/uilib/extensions/forms/getting-started/#filter-data) documentation.',\n type: ['object', 'function'],\n status: 'optional',\n },\n fieldPropsWhenHidden: {\n doc: 'When visibility is hidden, and `keepInDOM` is true, pass these props to the children.',\n type: 'various',\n status: 'optional',\n },\n element: {\n doc: 'Define the type of element. Defaults to `div`. Only for when `animate` is true.',\n type: 'string or React.Element',\n status: 'optional',\n },\n children: {\n doc: 'Contents.',\n type: 'React.Node',\n status: 'required',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,oBAA0C,GAAG;EACxDC,WAAW,EAAE;IACXC,GAAG,EAAE,2DAA2D;IAChEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDC,aAAa,EAAE;IACbH,GAAG,EAAE,6DAA6D;IAClEC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDE,UAAU,EAAE;IACVJ,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDG,SAAS,EAAE;IACTL,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDI,QAAQ,EAAE;IACRN,GAAG,EAAE,wDAAwD;IAC7DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDK,SAAS,EAAE;IACTP,GAAG,EAAE,yDAAyD;IAC9DC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDM,WAAW,EAAE;IACXR,GAAG,EAAE,8KAA8K;IACnLC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDO,cAAc,EAAE;IACdT,GAAG,EAAE,iDAAiD;IACtDC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDQ,SAAS,EAAE;IACTV,GAAG,EAAE,+FAA+F;IACpGC,IAAI,EAAE,UAAU;IAChBC,MAAM,EAAE;EACV,CAAC;EACDS,OAAO,EAAE;IACPX,GAAG,EAAE,+CAA+C;IACpDC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDU,OAAO,EAAE;IACPZ,GAAG,EAAE,wDAAwD;IAC7DC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDW,SAAS,EAAE;IACTb,GAAG,EAAE,kGAAkG;IACvGC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDY,gBAAgB,EAAE;IAChBd,GAAG,EAAE,gJAAgJ;IACrJC,IAAI,EAAE,QAAQ;IACdC,MAAM,EAAE;EACV,CAAC;EACDa,UAAU,EAAE;IACVf,GAAG,EAAE,iLAAiL;IACtLC,IAAI,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;IAC5BC,MAAM,EAAE;EACV,CAAC;EACDc,oBAAoB,EAAE;IACpBhB,GAAG,EAAE,uFAAuF;IAC5FC,IAAI,EAAE,SAAS;IACfC,MAAM,EAAE;EACV,CAAC;EACDe,OAAO,EAAE;IACPjB,GAAG,EAAE,iFAAiF;IACtFC,IAAI,EAAE,yBAAyB;IAC/BC,MAAM,EAAE;EACV,CAAC;EACDgB,QAAQ,EAAE;IACRlB,GAAG,EAAE,WAAW;IAChBC,IAAI,EAAE,YAAY;IAClBC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -3,17 +3,16 @@
3
3
  import { useCallback, useContext, useRef } from 'react';
4
4
  import pointer from 'json-pointer';
5
5
  import DataContext from '../../DataContext/Context';
6
- import SectionContext from '../Section/SectionContext';
6
+ import usePath from '../../hooks/usePath';
7
7
  export default function useVisibility(props) {
8
8
  const {
9
9
  filterDataHandler,
10
10
  data: originalData
11
11
  } = useContext(DataContext);
12
- const sectionContext = useContext(SectionContext);
13
- const sectionPath = sectionContext === null || sectionContext === void 0 ? void 0 : sectionContext.path;
14
- const composePath = useCallback(path => {
15
- return `${sectionPath && sectionPath !== '/' ? sectionPath : ''}${path}`;
16
- }, [sectionPath]);
12
+ const {
13
+ makePath,
14
+ makeIteratePath
15
+ } = usePath();
17
16
  const propsRef = useRef(props);
18
17
  propsRef.current = props;
19
18
  const check = useCallback(({
@@ -39,12 +38,16 @@ export default function useVisibility(props) {
39
38
  if (visibleWhenNot) {
40
39
  visibleWhen = visibleWhenNot;
41
40
  }
42
- const hasPath = pointer.has(data, composePath(visibleWhen.path));
41
+ const path = 'itemPath' in visibleWhen ? makeIteratePath(visibleWhen.itemPath) : makePath(visibleWhen.path);
42
+ const hasPath = pointer.has(data, path);
43
43
  if (hasPath) {
44
- var _visibleWhen, _visibleWhen2;
45
- const value = pointer.get(data, composePath(visibleWhen.path));
46
- const withValue = (_visibleWhen = visibleWhen) === null || _visibleWhen === void 0 ? void 0 : _visibleWhen['withValue'];
47
- const result = withValue && (withValue === null || withValue === void 0 ? void 0 : withValue(value)) === false || Object.prototype.hasOwnProperty.call(visibleWhen, 'hasValue') && ((_visibleWhen2 = visibleWhen) === null || _visibleWhen2 === void 0 ? void 0 : _visibleWhen2['hasValue']) !== value;
44
+ var _visibleWhen, _visibleWhen$hasValue, _visibleWhen2, _visibleWhen3;
45
+ const value = pointer.get(data, path);
46
+ if ((_visibleWhen = visibleWhen) !== null && _visibleWhen !== void 0 && _visibleWhen['withValue']) {
47
+ console.warn('VisibleWhen: "withValue" is deprecated, use "hasValue" instead');
48
+ }
49
+ const hasValue = (_visibleWhen$hasValue = (_visibleWhen2 = visibleWhen) === null || _visibleWhen2 === void 0 ? void 0 : _visibleWhen2['hasValue']) !== null && _visibleWhen$hasValue !== void 0 ? _visibleWhen$hasValue : (_visibleWhen3 = visibleWhen) === null || _visibleWhen3 === void 0 ? void 0 : _visibleWhen3['withValue'];
50
+ const result = typeof hasValue === 'function' ? hasValue(value) === false : hasValue !== value;
48
51
  if (visibleWhenNot) {
49
52
  if (!result) {
50
53
  return false;
@@ -56,10 +59,10 @@ export default function useVisibility(props) {
56
59
  return false;
57
60
  }
58
61
  }
59
- if (pathDefined && !pointer.has(data, composePath(pathDefined))) {
62
+ if (pathDefined && !pointer.has(data, makePath(pathDefined))) {
60
63
  return false;
61
64
  }
62
- if (pathUndefined && pointer.has(data, composePath(pathUndefined))) {
65
+ if (pathUndefined && pointer.has(data, makePath(pathUndefined))) {
63
66
  return false;
64
67
  }
65
68
  const getValue = path => {
@@ -67,26 +70,26 @@ export default function useVisibility(props) {
67
70
  return pointer.get(data, path);
68
71
  }
69
72
  };
70
- if (pathTrue && getValue(composePath(pathTrue)) !== true) {
73
+ if (pathTrue && getValue(makePath(pathTrue)) !== true) {
71
74
  return false;
72
75
  }
73
- if (pathFalse && getValue(composePath(pathFalse)) !== false) {
76
+ if (pathFalse && getValue(makePath(pathFalse)) !== false) {
74
77
  return false;
75
78
  }
76
- if (pathTruthy && Boolean(getValue(composePath(pathTruthy))) === false) {
79
+ if (pathTruthy && Boolean(getValue(makePath(pathTruthy))) === false) {
77
80
  return false;
78
81
  }
79
- if (pathFalsy && Boolean(getValue(composePath(pathFalsy))) === true) {
82
+ if (pathFalsy && Boolean(getValue(makePath(pathFalsy))) === true) {
80
83
  return false;
81
84
  }
82
85
  if (inferData && !inferData(data)) {
83
86
  return false;
84
87
  }
85
- if (pathValue && getValue(composePath(pathValue)) !== whenValue) {
88
+ if (pathValue && getValue(makePath(pathValue)) !== whenValue) {
86
89
  return false;
87
90
  }
88
91
  return true;
89
- }, [composePath, filterDataHandler, originalData]);
92
+ }, [makePath, filterDataHandler, originalData]);
90
93
  return {
91
94
  check
92
95
  };