@dnb/eufemia 10.63.1 → 10.63.3

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 +24 -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/lib.d.ts +2 -2
  9. package/cjs/components/modal/Modal.d.ts +2 -1
  10. package/cjs/components/modal/Modal.js +10 -4
  11. package/cjs/components/modal/Modal.js.map +1 -1
  12. package/cjs/components/modal/ModalContent.d.ts +10 -8
  13. package/cjs/components/modal/ModalContent.js +48 -23
  14. package/cjs/components/modal/ModalContent.js.map +1 -1
  15. package/cjs/components/modal/ModalRoot.d.ts +2 -0
  16. package/cjs/components/modal/ModalRoot.js.map +1 -1
  17. package/cjs/components/modal/types.d.ts +11 -3
  18. package/cjs/components/modal/types.js.map +1 -1
  19. package/cjs/components/section/Section.js +1 -1
  20. package/cjs/components/section/Section.js.map +1 -1
  21. package/cjs/components/tag/Tag.d.ts +2 -2
  22. package/cjs/components/tag/Tag.js.map +1 -1
  23. package/cjs/components/tag/TagGroup.d.ts +1 -1
  24. package/cjs/components/tag/TagGroup.js.map +1 -1
  25. package/cjs/elements/code/style/code-mixins.scss +4 -0
  26. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -1
  27. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  28. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +3 -0
  29. package/cjs/extensions/forms/DataContext/Provider/Provider.js +33 -30
  30. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  31. package/cjs/extensions/forms/Form/Visibility/useVisibility.js +6 -6
  32. package/cjs/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  33. package/cjs/extensions/forms/Form/data-context/useData.js +14 -10
  34. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
  35. package/cjs/extensions/forms/Form/data-context/useValidation.js +1 -1
  36. package/cjs/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  37. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  38. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  39. package/cjs/extensions/forms/hooks/useExternalValue.js +2 -2
  40. package/cjs/extensions/forms/hooks/useExternalValue.js.map +1 -1
  41. package/cjs/extensions/forms/hooks/useFieldProps.js +23 -16
  42. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  43. package/cjs/shared/Eufemia.d.ts +1 -1
  44. package/cjs/shared/Eufemia.js +2 -2
  45. package/cjs/shared/Eufemia.js.map +1 -1
  46. package/cjs/shared/error-helper.d.ts +0 -6
  47. package/cjs/shared/error-helper.js +6 -3
  48. package/cjs/shared/error-helper.js.map +1 -1
  49. package/cjs/style/core/scopes.scss +1 -1
  50. package/cjs/style/dnb-ui-basis.css +1 -1
  51. package/cjs/style/dnb-ui-basis.min.css +1 -1
  52. package/cjs/style/dnb-ui-body.css +1 -1
  53. package/cjs/style/dnb-ui-body.min.css +1 -1
  54. package/cjs/style/dnb-ui-core.css +1 -1
  55. package/cjs/style/dnb-ui-core.min.css +1 -1
  56. package/cjs/style/dnb-ui-elements.css +3 -0
  57. package/cjs/style/dnb-ui-elements.min.css +1 -1
  58. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -0
  59. package/cjs/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  60. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -0
  61. package/cjs/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  62. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +3 -0
  63. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  64. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +3 -0
  65. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  66. package/cjs/style/themes/theme-ui/ui-theme-basis.css +3 -0
  67. package/cjs/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  68. package/cjs/style/themes/theme-ui/ui-theme-elements.css +3 -0
  69. package/cjs/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  70. package/cjs/style/themes/theme-ui/ui-theme-tags.css +3 -0
  71. package/cjs/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  72. package/components/avatar/Avatar.d.ts +1 -1
  73. package/components/avatar/Avatar.js.map +1 -1
  74. package/components/avatar/AvatarGroup.d.ts +1 -1
  75. package/components/avatar/AvatarGroup.js.map +1 -1
  76. package/components/badge/Badge.d.ts +1 -1
  77. package/components/badge/Badge.js.map +1 -1
  78. package/components/lib.d.ts +2 -2
  79. package/components/modal/Modal.d.ts +2 -1
  80. package/components/modal/Modal.js +10 -4
  81. package/components/modal/Modal.js.map +1 -1
  82. package/components/modal/ModalContent.d.ts +10 -8
  83. package/components/modal/ModalContent.js +48 -23
  84. package/components/modal/ModalContent.js.map +1 -1
  85. package/components/modal/ModalRoot.d.ts +2 -0
  86. package/components/modal/ModalRoot.js.map +1 -1
  87. package/components/modal/types.d.ts +11 -3
  88. package/components/modal/types.js.map +1 -1
  89. package/components/section/Section.js +1 -1
  90. package/components/section/Section.js.map +1 -1
  91. package/components/tag/Tag.d.ts +2 -2
  92. package/components/tag/Tag.js.map +1 -1
  93. package/components/tag/TagGroup.d.ts +1 -1
  94. package/components/tag/TagGroup.js.map +1 -1
  95. package/elements/code/style/code-mixins.scss +4 -0
  96. package/es/components/avatar/Avatar.d.ts +1 -1
  97. package/es/components/avatar/Avatar.js.map +1 -1
  98. package/es/components/avatar/AvatarGroup.d.ts +1 -1
  99. package/es/components/avatar/AvatarGroup.js.map +1 -1
  100. package/es/components/badge/Badge.d.ts +1 -1
  101. package/es/components/badge/Badge.js.map +1 -1
  102. package/es/components/lib.d.ts +2 -2
  103. package/es/components/modal/Modal.d.ts +2 -1
  104. package/es/components/modal/Modal.js +10 -4
  105. package/es/components/modal/Modal.js.map +1 -1
  106. package/es/components/modal/ModalContent.d.ts +10 -8
  107. package/es/components/modal/ModalContent.js +44 -20
  108. package/es/components/modal/ModalContent.js.map +1 -1
  109. package/es/components/modal/ModalRoot.d.ts +2 -0
  110. package/es/components/modal/ModalRoot.js.map +1 -1
  111. package/es/components/modal/types.d.ts +11 -3
  112. package/es/components/modal/types.js.map +1 -1
  113. package/es/components/section/Section.js +1 -1
  114. package/es/components/section/Section.js.map +1 -1
  115. package/es/components/tag/Tag.d.ts +2 -2
  116. package/es/components/tag/Tag.js.map +1 -1
  117. package/es/components/tag/TagGroup.d.ts +1 -1
  118. package/es/components/tag/TagGroup.js.map +1 -1
  119. package/es/elements/code/style/code-mixins.scss +4 -0
  120. package/es/extensions/forms/DataContext/Context.d.ts +1 -1
  121. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  122. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +3 -0
  123. package/es/extensions/forms/DataContext/Provider/Provider.js +33 -30
  124. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  125. package/es/extensions/forms/Form/Visibility/useVisibility.js +6 -6
  126. package/es/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  127. package/es/extensions/forms/Form/data-context/useData.js +14 -10
  128. package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
  129. package/es/extensions/forms/Form/data-context/useValidation.js +1 -1
  130. package/es/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  131. package/es/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  132. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  133. package/es/extensions/forms/hooks/useExternalValue.js +2 -2
  134. package/es/extensions/forms/hooks/useExternalValue.js.map +1 -1
  135. package/es/extensions/forms/hooks/useFieldProps.js +23 -16
  136. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  137. package/es/shared/Eufemia.d.ts +1 -1
  138. package/es/shared/Eufemia.js +2 -2
  139. package/es/shared/Eufemia.js.map +1 -1
  140. package/es/shared/error-helper.d.ts +0 -6
  141. package/es/shared/error-helper.js +6 -3
  142. package/es/shared/error-helper.js.map +1 -1
  143. package/es/style/core/scopes.scss +1 -1
  144. package/es/style/dnb-ui-basis.css +1 -1
  145. package/es/style/dnb-ui-basis.min.css +1 -1
  146. package/es/style/dnb-ui-body.css +1 -1
  147. package/es/style/dnb-ui-body.min.css +1 -1
  148. package/es/style/dnb-ui-core.css +1 -1
  149. package/es/style/dnb-ui-core.min.css +1 -1
  150. package/es/style/dnb-ui-elements.css +3 -0
  151. package/es/style/dnb-ui-elements.min.css +1 -1
  152. package/es/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -0
  153. package/es/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  154. package/es/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -0
  155. package/es/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  156. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +3 -0
  157. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  158. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +3 -0
  159. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  160. package/es/style/themes/theme-ui/ui-theme-basis.css +3 -0
  161. package/es/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  162. package/es/style/themes/theme-ui/ui-theme-elements.css +3 -0
  163. package/es/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  164. package/es/style/themes/theme-ui/ui-theme-tags.css +3 -0
  165. package/es/style/themes/theme-ui/ui-theme-tags.min.css +1 -1
  166. package/esm/dnb-ui-basis.min.mjs +1 -1
  167. package/esm/dnb-ui-components.min.mjs +1 -1
  168. package/esm/dnb-ui-elements.min.mjs +1 -1
  169. package/esm/dnb-ui-extensions.min.mjs +2 -2
  170. package/esm/dnb-ui-lib.min.mjs +1 -1
  171. package/extensions/forms/DataContext/Context.d.ts +1 -1
  172. package/extensions/forms/DataContext/Context.js.map +1 -1
  173. package/extensions/forms/DataContext/Provider/Provider.d.ts +3 -0
  174. package/extensions/forms/DataContext/Provider/Provider.js +33 -30
  175. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  176. package/extensions/forms/Form/Visibility/useVisibility.js +6 -6
  177. package/extensions/forms/Form/Visibility/useVisibility.js.map +1 -1
  178. package/extensions/forms/Form/data-context/useData.js +14 -10
  179. package/extensions/forms/Form/data-context/useData.js.map +1 -1
  180. package/extensions/forms/Form/data-context/useValidation.js +1 -1
  181. package/extensions/forms/Form/data-context/useValidation.js.map +1 -1
  182. package/extensions/forms/Wizard/Container/WizardContainer.js +1 -1
  183. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  184. package/extensions/forms/hooks/useExternalValue.js +2 -2
  185. package/extensions/forms/hooks/useExternalValue.js.map +1 -1
  186. package/extensions/forms/hooks/useFieldProps.js +23 -16
  187. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  188. package/package.json +1 -1
  189. package/shared/Eufemia.d.ts +1 -1
  190. package/shared/Eufemia.js +2 -2
  191. package/shared/Eufemia.js.map +1 -1
  192. package/shared/error-helper.d.ts +0 -6
  193. package/shared/error-helper.js +6 -3
  194. package/shared/error-helper.js.map +1 -1
  195. package/style/core/scopes.scss +1 -1
  196. package/style/dnb-ui-basis.css +1 -1
  197. package/style/dnb-ui-basis.min.css +1 -1
  198. package/style/dnb-ui-body.css +1 -1
  199. package/style/dnb-ui-body.min.css +1 -1
  200. package/style/dnb-ui-core.css +1 -1
  201. package/style/dnb-ui-core.min.css +1 -1
  202. package/style/dnb-ui-elements.css +3 -0
  203. package/style/dnb-ui-elements.min.css +1 -1
  204. package/style/themes/theme-eiendom/eiendom-theme-basis.css +3 -0
  205. package/style/themes/theme-eiendom/eiendom-theme-basis.min.css +1 -1
  206. package/style/themes/theme-eiendom/eiendom-theme-elements.css +3 -0
  207. package/style/themes/theme-eiendom/eiendom-theme-elements.min.css +1 -1
  208. package/style/themes/theme-sbanken/sbanken-theme-basis.css +3 -0
  209. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  210. package/style/themes/theme-sbanken/sbanken-theme-elements.css +3 -0
  211. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  212. package/style/themes/theme-ui/ui-theme-basis.css +3 -0
  213. package/style/themes/theme-ui/ui-theme-basis.min.css +1 -1
  214. package/style/themes/theme-ui/ui-theme-elements.css +3 -0
  215. package/style/themes/theme-ui/ui-theme-elements.min.css +1 -1
  216. package/style/themes/theme-ui/ui-theme-tags.css +3 -0
  217. package/style/themes/theme-ui/ui-theme-tags.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 +1 -1
  222. package/umd/dnb-ui-lib.min.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","names":["React","classnames","createSpacingClasses","createSkeletonClass","Context","warn","extendPropsWithContext","validateDOMAttributes","defaultProps","label","className","skeleton","children","content","vertical","horizontal","variant","Badge","localProps","context","useContext","allProps","createElement","BadgeRoot","BadgeElem","_extends","_ref","props","contentProp","restProps","_objectWithoutProperties","_excluded","skeletonClasses","spacingClasses","contentIsNum","variantIsNotification","isInline","role","_supportsSpacingProps"],"sources":["../../../../src/components/badge/Badge.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\n\n// Components\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { createSkeletonClass } from '../skeleton/SkeletonHelper'\n\n// Shared\nimport Context, { ContextProps } from '../../shared/Context'\nimport type { SpacingProps } from '../../shared/types'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport {\n warn,\n extendPropsWithContext,\n validateDOMAttributes,\n} from '../../shared/component-helper'\n\nexport type BadgeProps = {\n /**\n * Aria label to describe the badge\n * Default: null\n */\n label?: React.ReactNode\n\n /**\n * Custom className on the component root\n * Default: null\n */\n className?: string\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /**\n * The content to display the badge on top of.\n * Default: null\n */\n children?: React.ReactNode\n\n /**\n * The content of the component.\n * Default: null\n */\n content?: string | number | React.ReactNode\n\n /**\n * The vertical positioning of the component.\n * Default: null\n */\n vertical?: 'bottom' | 'top'\n\n /**\n * The horizontal positioning of the component.\n * Default: null\n */\n horizontal?: 'left' | 'right'\n\n /**\n * The variant of the component.\n * Default: information.\n */\n variant?: 'information' | 'notification'\n}\n\ntype BadgeAndSpacingProps = BadgeProps & SpacingProps\n\nexport const defaultProps = {\n label: null,\n className: null,\n skeleton: false,\n children: null,\n content: null,\n vertical: null,\n horizontal: null,\n variant: 'information',\n}\n\nfunction Badge(localProps: BadgeAndSpacingProps) {\n // Every component should have a context\n const context = React.useContext(Context)\n\n // Extract additional props from global context\n const allProps = extendPropsWithContext(\n localProps,\n defaultProps,\n context?.Badge,\n { skeleton: context?.skeleton }\n )\n const { children } = allProps\n\n if (children) {\n return (\n <BadgeRoot>\n {children}\n <BadgeElem context={context} {...allProps} />\n </BadgeRoot>\n )\n }\n\n return <BadgeElem context={context} {...allProps} />\n}\n\nfunction BadgeRoot({ children }: { children: React.ReactNode }) {\n return <span className=\"dnb-badge__root\">{children}</span>\n}\n\nfunction BadgeElem(\n props: BadgeAndSpacingProps & { context: ContextProps }\n) {\n const {\n label,\n className,\n children,\n skeleton,\n horizontal,\n vertical,\n content: contentProp,\n variant,\n context,\n ...restProps\n } = props\n\n // to remove spacing props, etc.\n validateDOMAttributes(props, restProps)\n\n const skeletonClasses = createSkeletonClass('shape', skeleton, context)\n const spacingClasses = createSpacingClasses(props)\n const contentIsNum = typeof contentProp === 'number'\n const variantIsNotification = variant === 'notification'\n\n const content =\n variantIsNotification && contentIsNum && contentProp > 9\n ? '9+'\n : contentProp\n\n if (variantIsNotification && !contentIsNum) {\n warn(\n `Type of content should be a number: A notification badge is best suited to display content of type number.`\n )\n }\n if (!label && contentIsNum) {\n warn(\n `Label required: A Badge with a number as content requires a label describing the content of the badge. This is to ensure correct semantic and accessibility.`\n )\n }\n\n const isInline = !children && content\n\n return (\n <span\n role=\"status\"\n className={classnames(\n 'dnb-badge',\n `dnb-badge--variant-${variant}`,\n horizontal && `dnb-badge--horizontal-${horizontal}`,\n vertical && `dnb-badge--vertical-${vertical}`,\n isInline && 'dnb-badge--inline',\n skeletonClasses,\n spacingClasses,\n className\n )}\n {...restProps}\n >\n {label && <span className=\"dnb-sr-only\">{label} </span>}\n {content}\n </span>\n )\n}\n\nBadge._supportsSpacingProps = true\n\nexport default Badge\n"],"mappings":"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"}
1
+ {"version":3,"file":"Badge.js","names":["React","classnames","createSpacingClasses","createSkeletonClass","Context","warn","extendPropsWithContext","validateDOMAttributes","defaultProps","label","className","skeleton","children","content","vertical","horizontal","variant","Badge","localProps","context","useContext","allProps","createElement","BadgeRoot","BadgeElem","_extends","_ref","props","contentProp","restProps","_objectWithoutProperties","_excluded","skeletonClasses","spacingClasses","contentIsNum","variantIsNotification","isInline","role","_supportsSpacingProps"],"sources":["../../../../src/components/badge/Badge.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\n\n// Components\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { createSkeletonClass } from '../skeleton/SkeletonHelper'\n\n// Shared\nimport Context, { ContextProps } from '../../shared/Context'\nimport type { SpacingProps } from '../../shared/types'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport {\n warn,\n extendPropsWithContext,\n validateDOMAttributes,\n} from '../../shared/component-helper'\n\nexport type BadgeProps = {\n /**\n * Aria label to describe the badge\n * Default: null\n */\n label?: React.ReactNode\n\n /**\n * Custom className on the component root\n * Default: null\n */\n className?: string\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /**\n * The content to display the badge on top of.\n * Default: null\n */\n children?: React.ReactNode\n\n /**\n * The content of the component.\n * Default: null\n */\n content?: string | number | React.ReactNode\n\n /**\n * The vertical positioning of the component.\n * Default: null\n */\n vertical?: 'bottom' | 'top'\n\n /**\n * The horizontal positioning of the component.\n * Default: null\n */\n horizontal?: 'left' | 'right'\n\n /**\n * The variant of the component.\n * Default: information.\n */\n variant?: 'information' | 'notification'\n}\n\ntype BadgeAndSpacingProps = BadgeProps &\n SpacingProps &\n Omit<React.HTMLProps<HTMLElement>, 'content' | 'label'>\n\nexport const defaultProps = {\n label: null,\n className: null,\n skeleton: false,\n children: null,\n content: null,\n vertical: null,\n horizontal: null,\n variant: 'information',\n}\n\nfunction Badge(localProps: BadgeAndSpacingProps) {\n // Every component should have a context\n const context = React.useContext(Context)\n\n // Extract additional props from global context\n const allProps = extendPropsWithContext(\n localProps,\n defaultProps,\n context?.Badge,\n { skeleton: context?.skeleton }\n )\n const { children } = allProps\n\n if (children) {\n return (\n <BadgeRoot>\n {children}\n <BadgeElem context={context} {...allProps} />\n </BadgeRoot>\n )\n }\n\n return <BadgeElem context={context} {...allProps} />\n}\n\nfunction BadgeRoot({ children }: { children: React.ReactNode }) {\n return <span className=\"dnb-badge__root\">{children}</span>\n}\n\nfunction BadgeElem(\n props: BadgeAndSpacingProps & { context: ContextProps }\n) {\n const {\n label,\n className,\n children,\n skeleton,\n horizontal,\n vertical,\n content: contentProp,\n variant,\n context,\n ...restProps\n } = props\n\n // to remove spacing props, etc.\n validateDOMAttributes(props, restProps)\n\n const skeletonClasses = createSkeletonClass('shape', skeleton, context)\n const spacingClasses = createSpacingClasses(props)\n const contentIsNum = typeof contentProp === 'number'\n const variantIsNotification = variant === 'notification'\n\n const content =\n variantIsNotification && contentIsNum && contentProp > 9\n ? '9+'\n : contentProp\n\n if (variantIsNotification && !contentIsNum) {\n warn(\n `Type of content should be a number: A notification badge is best suited to display content of type number.`\n )\n }\n if (!label && contentIsNum) {\n warn(\n `Label required: A Badge with a number as content requires a label describing the content of the badge. This is to ensure correct semantic and accessibility.`\n )\n }\n\n const isInline = !children && content\n\n return (\n <span\n role=\"status\"\n className={classnames(\n 'dnb-badge',\n `dnb-badge--variant-${variant}`,\n horizontal && `dnb-badge--horizontal-${horizontal}`,\n vertical && `dnb-badge--vertical-${vertical}`,\n isInline && 'dnb-badge--inline',\n skeletonClasses,\n spacingClasses,\n className\n )}\n {...restProps}\n >\n {label && <span className=\"dnb-sr-only\">{label} </span>}\n {content}\n </span>\n )\n}\n\nBadge._supportsSpacingProps = true\n\nexport default Badge\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AAGnC,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,mBAAmB,QAAQ,4BAA4B;AAGhE,OAAOC,OAAO,MAAwB,sBAAsB;AAG5D,SACEC,IAAI,EACJC,sBAAsB,EACtBC,qBAAqB,QAChB,+BAA+B;AAwDtC,OAAO,MAAMC,YAAY,GAAG;EAC1BC,KAAK,EAAE,IAAI;EACXC,SAAS,EAAE,IAAI;EACfC,QAAQ,EAAE,KAAK;EACfC,QAAQ,EAAE,IAAI;EACdC,OAAO,EAAE,IAAI;EACbC,QAAQ,EAAE,IAAI;EACdC,UAAU,EAAE,IAAI;EAChBC,OAAO,EAAE;AACX,CAAC;AAED,SAASC,KAAKA,CAACC,UAAgC,EAAE;EAE/C,MAAMC,OAAO,GAAGnB,KAAK,CAACoB,UAAU,CAAChB,OAAO,CAAC;EAGzC,MAAMiB,QAAQ,GAAGf,sBAAsB,CACrCY,UAAU,EACVV,YAAY,EACZW,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEF,KAAK,EACd;IAAEN,QAAQ,EAAEQ,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAER;EAAS,CAChC,CAAC;EACD,MAAM;IAAEC;EAAS,CAAC,GAAGS,QAAQ;EAE7B,IAAIT,QAAQ,EAAE;IACZ,OACEZ,KAAA,CAAAsB,aAAA,CAACC,SAAS,QACPX,QAAQ,EACTZ,KAAA,CAAAsB,aAAA,CAACE,SAAS,EAAAC,QAAA;MAACN,OAAO,EAAEA;IAAQ,GAAKE,QAAQ,CAAG,CACnC,CAAC;EAEhB;EAEA,OAAOrB,KAAA,CAAAsB,aAAA,CAACE,SAAS,EAAAC,QAAA;IAACN,OAAO,EAAEA;EAAQ,GAAKE,QAAQ,CAAG,CAAC;AACtD;AAEA,SAASE,SAASA,CAAAG,IAAA,EAA8C;EAAA,IAA7C;IAAEd;EAAwC,CAAC,GAAAc,IAAA;EAC5D,OAAO1B,KAAA,CAAAsB,aAAA;IAAMZ,SAAS,EAAC;EAAiB,GAAEE,QAAe,CAAC;AAC5D;AAEA,SAASY,SAASA,CAChBG,KAAuD,EACvD;EACA,MAAM;MACJlB,KAAK;MACLC,SAAS;MACTE,QAAQ;MACRD,QAAQ;MACRI,UAAU;MACVD,QAAQ;MACRD,OAAO,EAAEe,WAAW;MACpBZ,OAAO;MACPG;IAEF,CAAC,GAAGQ,KAAK;IADJE,SAAS,GAAAC,wBAAA,CACVH,KAAK,EAAAI,SAAA;EAGTxB,qBAAqB,CAACoB,KAAK,EAAEE,SAAS,CAAC;EAEvC,MAAMG,eAAe,GAAG7B,mBAAmB,CAAC,OAAO,EAAEQ,QAAQ,EAAEQ,OAAO,CAAC;EACvE,MAAMc,cAAc,GAAG/B,oBAAoB,CAACyB,KAAK,CAAC;EAClD,MAAMO,YAAY,GAAG,OAAON,WAAW,KAAK,QAAQ;EACpD,MAAMO,qBAAqB,GAAGnB,OAAO,KAAK,cAAc;EAExD,MAAMH,OAAO,GACXsB,qBAAqB,IAAID,YAAY,IAAIN,WAAW,GAAG,CAAC,GACpD,IAAI,GACJA,WAAW;EAEjB,IAAIO,qBAAqB,IAAI,CAACD,YAAY,EAAE;IAC1C7B,IAAI,CACD,4GACH,CAAC;EACH;EACA,IAAI,CAACI,KAAK,IAAIyB,YAAY,EAAE;IAC1B7B,IAAI,CACD,8JACH,CAAC;EACH;EAEA,MAAM+B,QAAQ,GAAG,CAACxB,QAAQ,IAAIC,OAAO;EAErC,OACEb,KAAA,CAAAsB,aAAA,SAAAG,QAAA;IACEY,IAAI,EAAC,QAAQ;IACb3B,SAAS,EAAET,UAAU,iCAEGe,OAAQ,IAI9BgB,eAAe,EACfC,cAAc,EACdvB,SAAS,EALTK,UAAU,IAAK,yBAAwBA,UAAW,EAAC,EACnDD,QAAQ,IAAK,uBAAsBA,QAAS,EAAC,EAC7CsB,QAAQ,IAAI,mBAId;EAAE,GACEP,SAAS,GAEZpB,KAAK,IAAIT,KAAA,CAAAsB,aAAA;IAAMZ,SAAS,EAAC;EAAa,GAAED,KAAK,EAAC,GAAO,CAAC,EACtDI,OACG,CAAC;AAEX;AAEAI,KAAK,CAACqB,qBAAqB,GAAG,IAAI;AAElC,eAAerB,KAAK"}
@@ -164,12 +164,12 @@ export declare const getComponents: () => {
164
164
  (localProps: import("./tag/Tag").TagProps & import("./space/types").SpacingElementProps & {
165
165
  space?: import("./space/types").SpaceTypeAll;
166
166
  innerSpace?: import("./space/types").SpaceTypeAll | import("./space/types").SpaceTypeMedia;
167
- }): import("react/jsx-runtime").JSX.Element;
167
+ } & import("react").HTMLProps<HTMLElement>): import("react/jsx-runtime").JSX.Element;
168
168
  Group: {
169
169
  (localProps: import("./tag/TagGroup").TagGroupProps & import("./space/types").SpacingElementProps & {
170
170
  space?: import("./space/types").SpaceTypeAll;
171
171
  innerSpace?: import("./space/types").SpaceTypeAll | import("./space/types").SpaceTypeMedia;
172
- }): import("react/jsx-runtime").JSX.Element;
172
+ } & Omit<import("react").HTMLProps<HTMLElement>, "label">): import("react/jsx-runtime").JSX.Element;
173
173
  _supportsSpacingProps: boolean;
174
174
  };
175
175
  _formElement: boolean;
@@ -36,6 +36,7 @@ declare class Modal extends React.PureComponent<ModalPropTypes & ToCamelCasePart
36
36
  _tryToOpenTimeout: NodeJS.Timeout;
37
37
  activeElement: Element;
38
38
  isInTransition: boolean;
39
+ modalContentCloseRef: React.RefObject<any>;
39
40
  state: {
40
41
  hide: boolean;
41
42
  modalActive: boolean;
@@ -97,7 +98,7 @@ declare class Modal extends React.PureComponent<ModalPropTypes & ToCamelCasePart
97
98
  open: (e: Event) => void;
98
99
  close: (event: Event, { ifIsLatest, triggeredBy }?: {
99
100
  ifIsLatest: boolean;
100
- triggeredBy?: any;
101
+ triggeredBy?: string;
101
102
  }) => void;
102
103
  removeActiveState(): void;
103
104
  /**
@@ -3,7 +3,7 @@
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
5
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
6
- const _excluded = ["root_id", "content_id", "disabled", "labelled_by", "focus_selector", "header_content", "bar_content", "bypass_invalidation_selectors", "vertical_alignment", "id", "open_state", "open_delay", "omit_trigger_button", "trigger", "trigger_attributes"];
6
+ const _excluded = ["root_id", "content_id", "disabled", "labelled_by", "focus_selector", "header_content", "bar_content", "bypass_invalidation_selectors", "vertical_alignment", "id", "open_delay", "omit_trigger_button", "trigger", "trigger_attributes"];
7
7
  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; }
8
8
  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; }
9
9
  import React from 'react';
@@ -73,6 +73,7 @@ class Modal extends React.PureComponent {
73
73
  _defineProperty(this, "_tryToOpenTimeout", void 0);
74
74
  _defineProperty(this, "activeElement", void 0);
75
75
  _defineProperty(this, "isInTransition", void 0);
76
+ _defineProperty(this, "modalContentCloseRef", void 0);
76
77
  _defineProperty(this, "state", {
77
78
  hide: false,
78
79
  modalActive: false,
@@ -196,12 +197,16 @@ class Modal extends React.PureComponent {
196
197
  this.toggleOpenClose(e, true);
197
198
  });
198
199
  _defineProperty(this, "close", function (event) {
200
+ var _this$modalContentClo, _this$modalContentClo2;
199
201
  let {
200
202
  ifIsLatest,
201
- triggeredBy = null
203
+ triggeredBy = 'handler'
202
204
  } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
203
205
  ifIsLatest: true
204
206
  };
207
+ (_this$modalContentClo = (_this$modalContentClo2 = _this.modalContentCloseRef).current) === null || _this$modalContentClo === void 0 ? void 0 : _this$modalContentClo.call(_this$modalContentClo2, event, {
208
+ triggeredBy
209
+ });
205
210
  const {
206
211
  prevent_close = false
207
212
  } = _this.props;
@@ -230,6 +235,7 @@ class Modal extends React.PureComponent {
230
235
  });
231
236
  this._id = props.id || makeUniqueId('modal-');
232
237
  this._triggerRef = React.createRef();
238
+ this.modalContentCloseRef = React.createRef();
233
239
  this._onUnmount = [];
234
240
  }
235
241
  componentDidMount() {
@@ -306,7 +312,6 @@ class Modal extends React.PureComponent {
306
312
  bypass_invalidation_selectors = null,
307
313
  vertical_alignment = 'center',
308
314
  id,
309
- open_state,
310
315
  open_delay,
311
316
  omit_trigger_button = false,
312
317
  trigger = null,
@@ -359,7 +364,8 @@ class Modal extends React.PureComponent {
359
364
  bypass_invalidation_selectors: bypass_invalidation_selectors,
360
365
  close: this.close,
361
366
  hide: hide,
362
- title: rest.title || fallbackTitle
367
+ title: rest.title || fallbackTitle,
368
+ modalContentCloseRef: this.modalContentCloseRef
363
369
  })));
364
370
  };
365
371
  return React.createElement(SuffixContext.Consumer, null, render);
@@ -1 +1 @@
1
- {"version":3,"file":"Modal.js","names":["React","classnames","SuffixContext","Context","warn","isTrue","makeUniqueId","extendPropsWithContextInClassComponent","processChildren","dispatchCustomElementEvent","createSpacingClasses","HelpButtonInstance","getListOfModalRoots","getModalRoot","ModalInner","ModalHeader","ModalHeaderBar","CloseButton","ModalRoot","classWithCamelCaseProps","ANIMATION_DURATION","Modal","PureComponent","getContent","props","modal_content","getDerivedStateFromProps","state","window","animation_duration","no_animation","open_state","_open_state","hide","modalActive","constructor","_this","this","_defineProperty","preventAutoFocus","event","arguments","length","undefined","showModal","preventDefault","toggleNow","timeoutDuration","parseFloat","isInTransition","doItNow","setState","handleSideEffects","_closeTimeout","setTimeout","waitBeforeOpen","open_delay","delay","_openTimeout","clearTimeout","open_modal","fn","_onUnmount","push","close_modal","toggleOpenClose","setActiveState","_id","_this$_triggerRef","focus","elem","setAttribute","preventScroll","Promise","resolve","removeAttribute","String","_triggerRef","current","activeElement","HTMLElement","then","e","removeActiveState","ifIsLatest","triggeredBy","prevent_close","id","close","list","last","createRef","componentDidMount","openBasedOnStateUpdate","componentWillUnmount","forEach","componentDidUpdate","prevProps","document","documentElement","modalId","render","visualTestsPropsOverride","defaultProps","context","getTranslation","root_id","content_id","disabled","labelled_by","focus_selector","header_content","bar_content","bypass_invalidation_selectors","vertical_alignment","omit_trigger_button","trigger","trigger_attributes","rest","_objectWithoutProperties","_excluded","children","Object","freeze","_objectSpread","suffixProps","triggerAttributes","hidden","variant","icon_position","fallbackTitle","title","translation","HelpButton","TriggerButton","text","createElement","Fragment","_extends","onClick","innerRef","className","class","Consumer","spacing","dialog_title","close_title","hide_close_button","close_button_attributes","prevent_core_style","no_animation_on_mobile","fullscreen","min_width","max_width","align_content","container_placement","direct_dom_return","on_open","on_close","on_close_prevent","overlay_class","content_class","OriginalComponent"],"sources":["../../../../src/components/modal/Modal.tsx"],"sourcesContent":["/**\n * Web Modal Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport { SuffixContext } from '../../shared/helpers/Suffix'\nimport Context, { ContextProps } from '../../shared/Context'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n extendPropsWithContextInClassComponent,\n processChildren,\n dispatchCustomElementEvent,\n} from '../../shared/component-helper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport HelpButtonInstance from '../help-button/HelpButtonInstance'\nimport { getListOfModalRoots, getModalRoot } from './helpers'\nimport ModalInner from './parts/ModalInner'\nimport { ModalProps } from './types'\n\nimport ModalHeader from './parts/ModalHeader'\nimport ModalHeaderBar from './parts/ModalHeaderBar'\nimport { ScrollViewAllProps } from '../../fragments/scroll-view/ScrollView'\nimport CloseButton from './parts/CloseButton'\nimport ModalRoot from './ModalRoot'\nimport type { SpacingProps } from '../../shared/types'\nimport {\n classWithCamelCaseProps,\n ToCamelCasePartial,\n} from '../../shared/helpers/withCamelCaseProps'\nimport type { ButtonProps } from '../button/Button'\n\nexport const ANIMATION_DURATION = 300\n\ninterface ModalState {\n hide: boolean\n modalActive: boolean\n preventAutoFocus: boolean\n}\n\nexport type ModalPropTypes = ModalProps &\n SpacingProps &\n Omit<ScrollViewAllProps, 'children'>\n\nclass Modal extends React.PureComponent<\n ModalPropTypes & ToCamelCasePartial<ModalPropTypes>,\n ModalState\n> {\n static contextType = Context\n\n context!: ContextProps\n\n static Bar = ModalHeaderBar\n static Header = ModalHeader\n static Content = ModalInner\n\n static getContent(props) {\n if (typeof props.modal_content === 'string') {\n return props.modal_content\n } else if (typeof props.modal_content === 'function') {\n return props.modal_content(props)\n }\n return processChildren(props)\n }\n\n _id: string\n _triggerRef: React.RefObject<any>\n _onUnmount: Array<() => void>\n _openTimeout: NodeJS.Timeout\n _closeTimeout: NodeJS.Timeout\n _sideEffectsTimeout: NodeJS.Timeout\n _tryToOpenTimeout: NodeJS.Timeout\n activeElement: Element\n isInTransition: boolean\n\n state = {\n hide: false,\n modalActive: false,\n preventAutoFocus: true,\n animation_duration: ANIMATION_DURATION,\n no_animation: false,\n }\n\n static defaultProps = {\n id: null,\n focus_selector: null,\n labelled_by: null,\n title: null,\n disabled: null,\n spacing: true,\n open_delay: null,\n content_id: null,\n dialog_title: 'Vindu',\n close_title: 'Lukk', // Close Modal Window\n hide_close_button: false,\n close_button_attributes: null,\n prevent_close: false,\n prevent_core_style: false,\n animation_duration: ANIMATION_DURATION,\n no_animation: false,\n no_animation_on_mobile: false,\n fullscreen: 'auto',\n min_width: null,\n max_width: null,\n align_content: 'left',\n container_placement: null,\n vertical_alignment: null,\n open_state: null,\n direct_dom_return: false,\n root_id: 'root',\n omit_trigger_button: false,\n\n className: null,\n children: null,\n\n on_open: null,\n on_close: null,\n on_close_prevent: null,\n open_modal: null,\n close_modal: null,\n\n trigger: null,\n trigger_attributes: null,\n\n overlay_class: null,\n content_class: null,\n\n modal_content: null,\n header_content: null,\n bar_content: null,\n }\n\n static getDerivedStateFromProps(props, state) {\n if (typeof window !== 'undefined' && window['IS_TEST']) {\n state.animation_duration = 0\n state.no_animation = true\n } else {\n state.animation_duration = props.animation_duration\n state.no_animation = props.no_animation\n }\n\n if (props.open_state !== state._open_state) {\n switch (props.open_state) {\n case 'opened':\n case true:\n state.hide = false\n if (isTrue(state.no_animation)) {\n state.modalActive = true\n }\n break\n case 'closed':\n case false:\n state.hide = true\n if (isTrue(state.no_animation)) {\n state.modalActive = false\n }\n break\n }\n }\n state._open_state = props.open_state\n\n return state\n }\n\n constructor(props) {\n super(props)\n this._id = props.id || makeUniqueId('modal-')\n\n this._triggerRef = React.createRef()\n\n this._onUnmount = []\n }\n\n componentDidMount() {\n this.openBasedOnStateUpdate()\n }\n\n componentWillUnmount() {\n clearTimeout(this._openTimeout)\n clearTimeout(this._closeTimeout)\n\n this.removeActiveState()\n\n this._onUnmount.forEach((fn) => {\n if (typeof fn === 'function') {\n fn()\n }\n })\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps !== this.props) {\n this.openBasedOnStateUpdate()\n }\n }\n\n openBasedOnStateUpdate() {\n const { hide } = this.state\n const { open_state } = this.props\n\n if (!this.activeElement && typeof document !== 'undefined') {\n this.activeElement = document.activeElement\n }\n\n if (!hide && (open_state === 'opened' || open_state === true)) {\n this.toggleOpenClose(null, true)\n } else if (hide && (open_state === 'closed' || open_state === false)) {\n this.toggleOpenClose(null, false)\n }\n }\n\n toggleOpenClose = (event = null, showModal = null) => {\n if (event && event.preventDefault) {\n event.preventDefault()\n }\n\n const toggleNow = () => {\n const {\n animation_duration = ANIMATION_DURATION,\n no_animation = false,\n } = this.state\n const timeoutDuration =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n const modalActive =\n typeof showModal === 'boolean'\n ? showModal\n : !this.state.modalActive\n\n this.isInTransition = true\n\n const doItNow = () => {\n this.setState(\n {\n hide: false,\n modalActive,\n },\n () => {\n this.isInTransition = false\n this.handleSideEffects()\n }\n )\n }\n\n if (modalActive === false && !isTrue(no_animation)) {\n this.setState({\n hide: true,\n })\n\n this._closeTimeout = setTimeout(doItNow, timeoutDuration) // delay because of the animation\n } else {\n doItNow()\n }\n }\n\n const waitBeforeOpen = () => {\n const { open_delay } = this.props\n const { no_animation } = this.state\n const delay =\n typeof open_delay === 'string'\n ? parseFloat(open_delay)\n : open_delay\n if (delay > 0 && !isTrue(no_animation)) {\n this._openTimeout = setTimeout(toggleNow, delay) // custom delay\n } else {\n toggleNow()\n }\n }\n\n clearTimeout(this._closeTimeout)\n clearTimeout(this._openTimeout)\n\n const { open_modal } = this.props\n if (typeof open_modal === 'function') {\n const fn = open_modal(waitBeforeOpen, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n } else {\n waitBeforeOpen()\n }\n }\n\n handleSideEffects = () => {\n const { modalActive, preventAutoFocus, animation_duration } =\n this.state\n const { close_modal, open_state } = this.props\n\n if (modalActive) {\n if (typeof close_modal === 'function') {\n const fn = close_modal(() => {\n this.toggleOpenClose(null, false)\n }, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n }\n this.setActiveState(this._id)\n } else if (modalActive === false && !preventAutoFocus) {\n const focus = (elem: HTMLElement) => {\n // So we can omit showing a Tooltip on the trigger button\n elem.setAttribute('data-autofocus', 'true')\n elem.focus({ preventScroll: true })\n\n return new Promise<void>((resolve) => {\n setTimeout(\n () => {\n elem?.removeAttribute('data-autofocus')\n resolve()\n },\n parseFloat(String(animation_duration)) / 3\n )\n })\n }\n\n if (this._triggerRef?.current) {\n focus(this._triggerRef.current)\n }\n\n // because the open_state was set to opened, we force\n if (\n (open_state === 'opened' || open_state === true) &&\n this.activeElement instanceof HTMLElement\n ) {\n try {\n focus(this.activeElement).then(() => {\n this.activeElement = null\n })\n } catch (e) {\n //\n }\n }\n\n this.removeActiveState()\n }\n\n if (preventAutoFocus) {\n this.setState({ preventAutoFocus: false })\n }\n }\n\n open = (e: Event) => {\n this.toggleOpenClose(e, true)\n }\n\n close = (\n event: Event,\n { ifIsLatest, triggeredBy = null } = { ifIsLatest: true }\n ) => {\n const { prevent_close = false } = this.props\n\n if (isTrue(prevent_close)) {\n const id = this._id\n dispatchCustomElementEvent(this, 'on_close_prevent', {\n id,\n event,\n triggeredBy,\n close: (e) => {\n this.toggleOpenClose(e, false)\n },\n })\n } else {\n if (ifIsLatest) {\n const list = getListOfModalRoots()\n if (list.length > 1) {\n const last = getModalRoot(-1)\n if (last !== this) {\n return // stop here\n }\n }\n }\n\n this.toggleOpenClose(event, false)\n }\n }\n\n removeActiveState() {\n const last = getModalRoot(-1)\n\n // If this instance is not the last one,\n // make the current one to as the active one\n if (last?._id && last._id !== this._id) {\n return this.setActiveState(last._id)\n }\n\n try {\n document.documentElement.removeAttribute('data-dnb-modal-active')\n } catch (e) {\n warn('Modal: Error on remove \"data-dnb-modal-active\"', e)\n }\n }\n\n /**\n * Prevent scrolling on the background\n * But checks if this instance was the last one or not\n *\n * @param {string} modalId Will remove the attribute if false is given\n */\n setActiveState(modalId: string) {\n if (!modalId) {\n warn('Modal: A valid modalId is required')\n }\n // prevent scrolling on the background\n if (typeof document !== 'undefined') {\n try {\n document.documentElement.setAttribute(\n 'data-dnb-modal-active',\n modalId\n )\n } catch (e) {\n warn('Modal: Error on set \"data-dnb-modal-active\"', e)\n }\n }\n }\n\n render() {\n const visualTestsPropsOverride =\n typeof window !== 'undefined' && window['IS_TEST']\n ? {\n animation_duration: 0,\n no_animation: true,\n }\n : {}\n\n // use only the props from context, who are available here anyway\n const props = extendPropsWithContextInClassComponent(\n this.props,\n Modal.defaultProps,\n this.context.getTranslation(this.props).Modal,\n this.context.Modal,\n visualTestsPropsOverride\n )\n\n const {\n root_id = 'root',\n content_id = null,\n disabled = null,\n labelled_by = null,\n focus_selector = null,\n header_content = null,\n bar_content = null,\n bypass_invalidation_selectors = null,\n vertical_alignment = 'center',\n\n id, // eslint-disable-line\n open_state, // eslint-disable-line\n open_delay, // eslint-disable-line\n\n omit_trigger_button = false,\n trigger = null,\n trigger_attributes = null,\n ...rest\n } = props\n\n const { hide, modalActive } = this.state\n const modal_content = Modal.getContent(\n typeof this.props.children === 'function'\n ? Object.freeze({ ...this.props, close: this.close })\n : this.props\n )\n\n const render = (suffixProps) => {\n const triggerAttributes = {\n hidden: false,\n variant: 'secondary',\n icon_position: 'left',\n ...trigger_attributes,\n } as ButtonProps\n\n if (isTrue(disabled)) {\n triggerAttributes.disabled = true\n }\n\n if (triggerAttributes.id) {\n this._id = triggerAttributes.id\n }\n\n let fallbackTitle: string\n if (triggerAttributes.title) {\n fallbackTitle = triggerAttributes.title\n }\n // in case the modal is used in suffix and no title is given\n // suffixProps.label is also available, so we could use that too\n else if (suffixProps) {\n fallbackTitle = this.context.translation.HelpButton.title\n }\n\n const TriggerButton = trigger\n ? (trigger as React.FC)\n : HelpButtonInstance\n\n const title = (\n !triggerAttributes.text ? rest.title || fallbackTitle : null\n ) as string\n\n return (\n <>\n {TriggerButton && !isTrue(omit_trigger_button) && (\n <TriggerButton\n {...triggerAttributes}\n id={this._id}\n title={title}\n onClick={this.toggleOpenClose}\n innerRef={this._triggerRef}\n className={classnames(\n 'dnb-modal__trigger',\n createSpacingClasses(props),\n triggerAttributes.className,\n\n // @deprecated – can be removed in v11\n triggerAttributes.class\n )}\n />\n )}\n\n {modalActive && modal_content && (\n <ModalRoot\n {...rest}\n id={this._id}\n root_id={root_id}\n content_id={content_id || `dnb-modal-${this._id}`}\n labelled_by={labelled_by}\n focus_selector={focus_selector}\n modal_content={modal_content}\n header_content={header_content}\n vertical_alignment={vertical_alignment}\n bar_content={bar_content}\n bypass_invalidation_selectors={bypass_invalidation_selectors}\n close={this.close}\n hide={hide}\n title={rest.title || fallbackTitle}\n />\n )}\n </>\n )\n }\n\n return <SuffixContext.Consumer>{render}</SuffixContext.Consumer>\n }\n}\n\nexport { CloseButton, Modal as OriginalComponent }\n\nexport default classWithCamelCaseProps(Modal)\n"],"mappings":"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"}
1
+ {"version":3,"file":"Modal.js","names":["React","classnames","SuffixContext","Context","warn","isTrue","makeUniqueId","extendPropsWithContextInClassComponent","processChildren","dispatchCustomElementEvent","createSpacingClasses","HelpButtonInstance","getListOfModalRoots","getModalRoot","ModalInner","ModalHeader","ModalHeaderBar","CloseButton","ModalRoot","classWithCamelCaseProps","ANIMATION_DURATION","Modal","PureComponent","getContent","props","modal_content","getDerivedStateFromProps","state","window","animation_duration","no_animation","open_state","_open_state","hide","modalActive","constructor","_this","this","_defineProperty","preventAutoFocus","event","arguments","length","undefined","showModal","preventDefault","toggleNow","timeoutDuration","parseFloat","isInTransition","doItNow","setState","handleSideEffects","_closeTimeout","setTimeout","waitBeforeOpen","open_delay","delay","_openTimeout","clearTimeout","open_modal","fn","_onUnmount","push","close_modal","toggleOpenClose","setActiveState","_id","_this$_triggerRef","focus","elem","setAttribute","preventScroll","Promise","resolve","removeAttribute","String","_triggerRef","current","activeElement","HTMLElement","then","e","removeActiveState","_this$modalContentClo","_this$modalContentClo2","ifIsLatest","triggeredBy","modalContentCloseRef","call","prevent_close","id","close","list","last","createRef","componentDidMount","openBasedOnStateUpdate","componentWillUnmount","forEach","componentDidUpdate","prevProps","document","documentElement","modalId","render","visualTestsPropsOverride","defaultProps","context","getTranslation","root_id","content_id","disabled","labelled_by","focus_selector","header_content","bar_content","bypass_invalidation_selectors","vertical_alignment","omit_trigger_button","trigger","trigger_attributes","rest","_objectWithoutProperties","_excluded","children","Object","freeze","_objectSpread","suffixProps","triggerAttributes","hidden","variant","icon_position","fallbackTitle","title","translation","HelpButton","TriggerButton","text","createElement","Fragment","_extends","onClick","innerRef","className","class","Consumer","spacing","dialog_title","close_title","hide_close_button","close_button_attributes","prevent_core_style","no_animation_on_mobile","fullscreen","min_width","max_width","align_content","container_placement","direct_dom_return","on_open","on_close","on_close_prevent","overlay_class","content_class","OriginalComponent"],"sources":["../../../../src/components/modal/Modal.tsx"],"sourcesContent":["/**\n * Web Modal Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport { SuffixContext } from '../../shared/helpers/Suffix'\nimport Context, { ContextProps } from '../../shared/Context'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n extendPropsWithContextInClassComponent,\n processChildren,\n dispatchCustomElementEvent,\n} from '../../shared/component-helper'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport HelpButtonInstance from '../help-button/HelpButtonInstance'\nimport { getListOfModalRoots, getModalRoot } from './helpers'\nimport ModalInner from './parts/ModalInner'\nimport { ModalProps } from './types'\n\nimport ModalHeader from './parts/ModalHeader'\nimport ModalHeaderBar from './parts/ModalHeaderBar'\nimport { ScrollViewAllProps } from '../../fragments/scroll-view/ScrollView'\nimport CloseButton from './parts/CloseButton'\nimport ModalRoot from './ModalRoot'\nimport type { SpacingProps } from '../../shared/types'\nimport {\n classWithCamelCaseProps,\n ToCamelCasePartial,\n} from '../../shared/helpers/withCamelCaseProps'\nimport type { ButtonProps } from '../button/Button'\n\nexport const ANIMATION_DURATION = 300\n\ninterface ModalState {\n hide: boolean\n modalActive: boolean\n preventAutoFocus: boolean\n}\n\nexport type ModalPropTypes = ModalProps &\n SpacingProps &\n Omit<ScrollViewAllProps, 'children'>\n\nclass Modal extends React.PureComponent<\n ModalPropTypes & ToCamelCasePartial<ModalPropTypes>,\n ModalState\n> {\n static contextType = Context\n\n context!: ContextProps\n\n static Bar = ModalHeaderBar\n static Header = ModalHeader\n static Content = ModalInner\n\n static getContent(props) {\n if (typeof props.modal_content === 'string') {\n return props.modal_content\n } else if (typeof props.modal_content === 'function') {\n return props.modal_content(props)\n }\n return processChildren(props)\n }\n\n _id: string\n _triggerRef: React.RefObject<any>\n _onUnmount: Array<() => void>\n _openTimeout: NodeJS.Timeout\n _closeTimeout: NodeJS.Timeout\n _sideEffectsTimeout: NodeJS.Timeout\n _tryToOpenTimeout: NodeJS.Timeout\n activeElement: Element\n isInTransition: boolean\n modalContentCloseRef: React.RefObject<any>\n\n state = {\n hide: false,\n modalActive: false,\n preventAutoFocus: true,\n animation_duration: ANIMATION_DURATION,\n no_animation: false,\n }\n\n static defaultProps = {\n id: null,\n focus_selector: null,\n labelled_by: null,\n title: null,\n disabled: null,\n spacing: true,\n open_delay: null,\n content_id: null,\n dialog_title: 'Vindu',\n close_title: 'Lukk', // Close Modal Window\n hide_close_button: false,\n close_button_attributes: null,\n prevent_close: false,\n prevent_core_style: false,\n animation_duration: ANIMATION_DURATION,\n no_animation: false,\n no_animation_on_mobile: false,\n fullscreen: 'auto',\n min_width: null,\n max_width: null,\n align_content: 'left',\n container_placement: null,\n vertical_alignment: null,\n open_state: null,\n direct_dom_return: false,\n root_id: 'root',\n omit_trigger_button: false,\n\n className: null,\n children: null,\n\n on_open: null,\n on_close: null,\n on_close_prevent: null,\n open_modal: null,\n close_modal: null,\n\n trigger: null,\n trigger_attributes: null,\n\n overlay_class: null,\n content_class: null,\n\n modal_content: null,\n header_content: null,\n bar_content: null,\n }\n\n static getDerivedStateFromProps(props, state) {\n if (typeof window !== 'undefined' && window['IS_TEST']) {\n state.animation_duration = 0\n state.no_animation = true\n } else {\n state.animation_duration = props.animation_duration\n state.no_animation = props.no_animation\n }\n\n if (props.open_state !== state._open_state) {\n switch (props.open_state) {\n case 'opened':\n case true:\n state.hide = false\n if (isTrue(state.no_animation)) {\n state.modalActive = true\n }\n break\n case 'closed':\n case false:\n state.hide = true\n if (isTrue(state.no_animation)) {\n state.modalActive = false\n }\n break\n }\n }\n state._open_state = props.open_state\n\n return state\n }\n\n constructor(props) {\n super(props)\n this._id = props.id || makeUniqueId('modal-')\n\n this._triggerRef = React.createRef()\n this.modalContentCloseRef = React.createRef()\n\n this._onUnmount = []\n }\n\n componentDidMount() {\n this.openBasedOnStateUpdate()\n }\n\n componentWillUnmount() {\n clearTimeout(this._openTimeout)\n clearTimeout(this._closeTimeout)\n\n this.removeActiveState()\n\n this._onUnmount.forEach((fn) => {\n if (typeof fn === 'function') {\n fn()\n }\n })\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps !== this.props) {\n this.openBasedOnStateUpdate()\n }\n }\n\n openBasedOnStateUpdate() {\n const { hide } = this.state\n const { open_state } = this.props\n\n if (!this.activeElement && typeof document !== 'undefined') {\n this.activeElement = document.activeElement\n }\n\n if (!hide && (open_state === 'opened' || open_state === true)) {\n this.toggleOpenClose(null, true)\n } else if (hide && (open_state === 'closed' || open_state === false)) {\n this.toggleOpenClose(null, false)\n }\n }\n\n toggleOpenClose = (event = null, showModal = null) => {\n if (event && event.preventDefault) {\n event.preventDefault()\n }\n\n const toggleNow = () => {\n const {\n animation_duration = ANIMATION_DURATION,\n no_animation = false,\n } = this.state\n const timeoutDuration =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n const modalActive =\n typeof showModal === 'boolean'\n ? showModal\n : !this.state.modalActive\n\n this.isInTransition = true\n\n const doItNow = () => {\n this.setState(\n {\n hide: false,\n modalActive,\n },\n () => {\n this.isInTransition = false\n this.handleSideEffects()\n }\n )\n }\n\n if (modalActive === false && !isTrue(no_animation)) {\n this.setState({\n hide: true,\n })\n\n this._closeTimeout = setTimeout(doItNow, timeoutDuration) // delay because of the animation\n } else {\n doItNow()\n }\n }\n\n const waitBeforeOpen = () => {\n const { open_delay } = this.props\n const { no_animation } = this.state\n const delay =\n typeof open_delay === 'string'\n ? parseFloat(open_delay)\n : open_delay\n if (delay > 0 && !isTrue(no_animation)) {\n this._openTimeout = setTimeout(toggleNow, delay) // custom delay\n } else {\n toggleNow()\n }\n }\n\n clearTimeout(this._closeTimeout)\n clearTimeout(this._openTimeout)\n\n const { open_modal } = this.props\n if (typeof open_modal === 'function') {\n const fn = open_modal(waitBeforeOpen, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n } else {\n waitBeforeOpen()\n }\n }\n\n handleSideEffects = () => {\n const { modalActive, preventAutoFocus, animation_duration } =\n this.state\n const { close_modal, open_state } = this.props\n\n if (modalActive) {\n if (typeof close_modal === 'function') {\n const fn = close_modal(() => {\n this.toggleOpenClose(null, false)\n }, this)\n if (fn) {\n this._onUnmount.push(fn)\n }\n }\n this.setActiveState(this._id)\n } else if (modalActive === false && !preventAutoFocus) {\n const focus = (elem: HTMLElement) => {\n // So we can omit showing a Tooltip on the trigger button\n elem.setAttribute('data-autofocus', 'true')\n elem.focus({ preventScroll: true })\n\n return new Promise<void>((resolve) => {\n setTimeout(\n () => {\n elem?.removeAttribute('data-autofocus')\n resolve()\n },\n parseFloat(String(animation_duration)) / 3\n )\n })\n }\n\n if (this._triggerRef?.current) {\n focus(this._triggerRef.current)\n }\n\n // because the open_state was set to opened, we force\n if (\n (open_state === 'opened' || open_state === true) &&\n this.activeElement instanceof HTMLElement\n ) {\n try {\n focus(this.activeElement).then(() => {\n this.activeElement = null\n })\n } catch (e) {\n //\n }\n }\n\n this.removeActiveState()\n }\n\n if (preventAutoFocus) {\n this.setState({ preventAutoFocus: false })\n }\n }\n\n open = (e: Event) => {\n this.toggleOpenClose(e, true)\n }\n\n close = (\n event: Event,\n { ifIsLatest, triggeredBy = 'handler' } = {\n ifIsLatest: true,\n }\n ) => {\n this.modalContentCloseRef.current?.(event, { triggeredBy })\n\n const { prevent_close = false } = this.props\n\n if (isTrue(prevent_close)) {\n const id = this._id\n dispatchCustomElementEvent(this, 'on_close_prevent', {\n id,\n event,\n triggeredBy,\n close: (e) => {\n this.toggleOpenClose(e, false)\n },\n })\n } else {\n if (ifIsLatest) {\n const list = getListOfModalRoots()\n if (list.length > 1) {\n const last = getModalRoot(-1)\n if (last !== this) {\n return // stop here\n }\n }\n }\n\n this.toggleOpenClose(event, false)\n }\n }\n\n removeActiveState() {\n const last = getModalRoot(-1)\n\n // If this instance is not the last one,\n // make the current one to as the active one\n if (last?._id && last._id !== this._id) {\n return this.setActiveState(last._id)\n }\n\n try {\n document.documentElement.removeAttribute('data-dnb-modal-active')\n } catch (e) {\n warn('Modal: Error on remove \"data-dnb-modal-active\"', e)\n }\n }\n\n /**\n * Prevent scrolling on the background\n * But checks if this instance was the last one or not\n *\n * @param {string} modalId Will remove the attribute if false is given\n */\n setActiveState(modalId: string) {\n if (!modalId) {\n warn('Modal: A valid modalId is required')\n }\n // prevent scrolling on the background\n if (typeof document !== 'undefined') {\n try {\n document.documentElement.setAttribute(\n 'data-dnb-modal-active',\n modalId\n )\n } catch (e) {\n warn('Modal: Error on set \"data-dnb-modal-active\"', e)\n }\n }\n }\n\n render() {\n const visualTestsPropsOverride =\n typeof window !== 'undefined' && window['IS_TEST']\n ? {\n animation_duration: 0,\n no_animation: true,\n }\n : {}\n\n // use only the props from context, who are available here anyway\n const props = extendPropsWithContextInClassComponent(\n this.props,\n Modal.defaultProps,\n this.context.getTranslation(this.props).Modal,\n this.context.Modal,\n visualTestsPropsOverride\n )\n\n const {\n root_id = 'root',\n content_id = null,\n disabled = null,\n labelled_by = null,\n focus_selector = null,\n header_content = null,\n bar_content = null,\n bypass_invalidation_selectors = null,\n vertical_alignment = 'center',\n\n id, // eslint-disable-line\n open_delay, // eslint-disable-line\n\n omit_trigger_button = false,\n trigger = null,\n trigger_attributes = null,\n ...rest\n } = props\n\n const { hide, modalActive } = this.state\n const modal_content = Modal.getContent(\n typeof this.props.children === 'function'\n ? Object.freeze({ ...this.props, close: this.close })\n : this.props\n )\n\n const render = (suffixProps) => {\n const triggerAttributes = {\n hidden: false,\n variant: 'secondary',\n icon_position: 'left',\n ...trigger_attributes,\n } as ButtonProps\n\n if (isTrue(disabled)) {\n triggerAttributes.disabled = true\n }\n\n if (triggerAttributes.id) {\n this._id = triggerAttributes.id\n }\n\n let fallbackTitle: string\n if (triggerAttributes.title) {\n fallbackTitle = triggerAttributes.title\n }\n // in case the modal is used in suffix and no title is given\n // suffixProps.label is also available, so we could use that too\n else if (suffixProps) {\n fallbackTitle = this.context.translation.HelpButton.title\n }\n\n const TriggerButton = trigger\n ? (trigger as React.FC)\n : HelpButtonInstance\n\n const title = (\n !triggerAttributes.text ? rest.title || fallbackTitle : null\n ) as string\n\n return (\n <>\n {TriggerButton && !isTrue(omit_trigger_button) && (\n <TriggerButton\n {...triggerAttributes}\n id={this._id}\n title={title}\n onClick={this.toggleOpenClose}\n innerRef={this._triggerRef}\n className={classnames(\n 'dnb-modal__trigger',\n createSpacingClasses(props),\n triggerAttributes.className,\n\n // @deprecated – can be removed in v11\n triggerAttributes.class\n )}\n />\n )}\n\n {modalActive && modal_content && (\n <ModalRoot\n {...rest}\n id={this._id}\n root_id={root_id}\n content_id={content_id || `dnb-modal-${this._id}`}\n labelled_by={labelled_by}\n focus_selector={focus_selector}\n modal_content={modal_content}\n header_content={header_content}\n vertical_alignment={vertical_alignment}\n bar_content={bar_content}\n bypass_invalidation_selectors={bypass_invalidation_selectors}\n close={this.close}\n hide={hide}\n title={rest.title || fallbackTitle}\n modalContentCloseRef={this.modalContentCloseRef}\n />\n )}\n </>\n )\n }\n\n return <SuffixContext.Consumer>{render}</SuffixContext.Consumer>\n }\n}\n\nexport { CloseButton, Modal as OriginalComponent }\n\nexport default classWithCamelCaseProps(Modal)\n"],"mappings":"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"}
@@ -5,11 +5,9 @@
5
5
  /// <reference types="node" />
6
6
  import React from 'react';
7
7
  import { InteractionInvalidation } from '../../shared/component-helper';
8
- import { ModalContentProps } from './types';
8
+ import { CloseHandlerParams, ModalContentProps, TriggeredBy } from './types';
9
9
  import { ContextProps } from '../../shared/Context';
10
10
  interface ModalContentState {
11
- triggeredBy: string;
12
- triggeredByEvent: Event;
13
11
  color: string;
14
12
  }
15
13
  declare global {
@@ -19,8 +17,6 @@ declare global {
19
17
  }
20
18
  export default class ModalContent extends React.PureComponent<ModalContentProps, ModalContentState> {
21
19
  state: {
22
- triggeredBy: any;
23
- triggeredByEvent: any;
24
20
  color: any;
25
21
  };
26
22
  _contentRef: React.RefObject<HTMLElement>;
@@ -34,11 +30,17 @@ export default class ModalContent extends React.PureComponent<ModalContentProps,
34
30
  _androidFocusTimeout: NodeJS.Timeout;
35
31
  _ii: InteractionInvalidation;
36
32
  _iiLocal: InteractionInvalidation;
33
+ _triggeredBy: TriggeredBy;
34
+ _triggeredByEvent: React.SyntheticEvent;
35
+ _isControlled: boolean;
37
36
  static contextType: React.Context<ContextProps>;
38
37
  context: ContextProps;
39
38
  constructor(props: ModalContentProps);
40
39
  componentDidMount(): void;
41
40
  componentWillUnmount(): void;
41
+ setIsControlled(): void;
42
+ componentDidUpdate(): void;
43
+ wasOpenedManually(): boolean;
42
44
  lockBody: () => void;
43
45
  removeLocks(): void;
44
46
  setAndroidFocusHelper(): void;
@@ -52,9 +54,9 @@ export default class ModalContent extends React.PureComponent<ModalContentProps,
52
54
  onContentMouseDownHandler: (event: React.SyntheticEvent) => void;
53
55
  onContentClickHandler: (event: React.SyntheticEvent) => void;
54
56
  onKeyDownHandler: (event: any) => void;
55
- closeModalContent(event: any, { triggeredBy, ...params }: {
56
- [x: string]: any;
57
- triggeredBy: any;
57
+ setModalContentState: (event: React.SyntheticEvent, { triggeredBy }: CloseHandlerParams) => void;
58
+ closeModalContent(event: any, { triggeredBy, ...params }: CloseHandlerParams & {
59
+ ifIsLatest?: boolean;
58
60
  }): void;
59
61
  setBackgroundColor: (color: string) => void;
60
62
  render(): import("react/jsx-runtime").JSX.Element;
@@ -20,8 +20,6 @@ export default class ModalContent extends React.PureComponent {
20
20
  constructor(props) {
21
21
  super(props);
22
22
  _defineProperty(this, "state", {
23
- triggeredBy: null,
24
- triggeredByEvent: null,
25
23
  color: null
26
24
  });
27
25
  _defineProperty(this, "_contentRef", void 0);
@@ -33,6 +31,9 @@ export default class ModalContent extends React.PureComponent {
33
31
  _defineProperty(this, "_androidFocusTimeout", void 0);
34
32
  _defineProperty(this, "_ii", void 0);
35
33
  _defineProperty(this, "_iiLocal", void 0);
34
+ _defineProperty(this, "_triggeredBy", void 0);
35
+ _defineProperty(this, "_triggeredByEvent", void 0);
36
+ _defineProperty(this, "_isControlled", false);
36
37
  _defineProperty(this, "context", void 0);
37
38
  _defineProperty(this, "lockBody", () => {
38
39
  const modalRoots = getListOfModalRoots();
@@ -112,6 +113,13 @@ export default class ModalContent extends React.PureComponent {
112
113
  }
113
114
  }
114
115
  });
116
+ _defineProperty(this, "setModalContentState", (event, _ref) => {
117
+ let {
118
+ triggeredBy
119
+ } = _ref;
120
+ this._triggeredBy = triggeredBy;
121
+ this._triggeredByEvent = event;
122
+ });
115
123
  _defineProperty(this, "setBackgroundColor", color => {
116
124
  this.setState({
117
125
  color
@@ -120,6 +128,9 @@ export default class ModalContent extends React.PureComponent {
120
128
  this._contentRef = this.props.content_ref || React.createRef();
121
129
  this._scrollRef = this.props.scroll_ref || React.createRef();
122
130
  this._overlayClickRef = React.createRef();
131
+ if (this.props.modalContentCloseRef) {
132
+ this.props.modalContentCloseRef.current = this.setModalContentState;
133
+ }
123
134
  this._id = props.id;
124
135
  }
125
136
  componentDidMount() {
@@ -141,12 +152,33 @@ export default class ModalContent extends React.PureComponent {
141
152
  } else {
142
153
  this._lockTimeout = setTimeout(this.lockBody, timeoutDuration * 1.2);
143
154
  }
155
+ this.setIsControlled();
144
156
  }
145
157
  componentWillUnmount() {
146
158
  clearTimeout(this._focusTimeout);
147
159
  clearTimeout(this._lockTimeout);
148
160
  this.removeLocks();
149
161
  }
162
+ setIsControlled() {
163
+ const {
164
+ open_state
165
+ } = this.props;
166
+ if (typeof open_state !== 'undefined' && open_state !== null) {
167
+ this._isControlled = true;
168
+ }
169
+ }
170
+ componentDidUpdate() {
171
+ this.setIsControlled();
172
+ }
173
+ wasOpenedManually() {
174
+ if (this._triggeredBy) {
175
+ return true;
176
+ }
177
+ if (this._isControlled) {
178
+ return true;
179
+ }
180
+ return false;
181
+ }
150
182
  removeLocks() {
151
183
  const modalRoots = getListOfModalRoots();
152
184
  const firstLevel = modalRoots[0];
@@ -167,16 +199,14 @@ export default class ModalContent extends React.PureComponent {
167
199
  }
168
200
  }
169
201
  this.removeAndroidFocusHelper();
170
- const id = this.props.id;
171
- const {
172
- triggeredBy,
173
- triggeredByEvent
174
- } = this.state;
175
- dispatchCustomElementEvent(this, 'on_close', {
176
- id,
177
- event: triggeredByEvent,
178
- triggeredBy: triggeredBy || 'unmount'
179
- });
202
+ if (this.wasOpenedManually()) {
203
+ const id = this.props.id;
204
+ dispatchCustomElementEvent(this, 'on_close', {
205
+ id,
206
+ event: this._triggeredByEvent,
207
+ triggeredBy: this._triggeredBy || 'unmount'
208
+ });
209
+ }
180
210
  if (typeof document !== 'undefined') {
181
211
  document.removeEventListener('keydown', this.onKeyDownHandler);
182
212
  }
@@ -230,21 +260,16 @@ export default class ModalContent extends React.PureComponent {
230
260
  enableBodyScroll(this._scrollRef.current);
231
261
  clearAllBodyScrollLocks();
232
262
  }
233
- closeModalContent(event, _ref) {
263
+ closeModalContent(event, _ref2) {
234
264
  var _event$persist;
235
265
  let {
236
266
  triggeredBy
237
- } = _ref,
238
- params = _objectWithoutProperties(_ref, _excluded);
267
+ } = _ref2,
268
+ params = _objectWithoutProperties(_ref2, _excluded);
239
269
  event === null || event === void 0 ? void 0 : (_event$persist = event.persist) === null || _event$persist === void 0 ? void 0 : _event$persist.call(event);
240
- this.setState({
241
- triggeredBy,
242
- triggeredByEvent: event
243
- }, () => {
244
- this.props.close(event, _objectSpread({
245
- triggeredBy
246
- }, params));
247
- });
270
+ this.props.close(event, _objectSpread({
271
+ triggeredBy
272
+ }, params));
248
273
  }
249
274
  render() {
250
275
  var _this$context;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalContent.js","names":["React","classnames","disableBodyScroll","enableBodyScroll","clearAllBodyScrollLocks","warn","isTrue","makeUniqueId","InteractionInvalidation","combineLabelledBy","combineDescribedBy","dispatchCustomElementEvent","keycode","ModalContext","IS_IOS","IS_SAFARI","IS_MAC","isAndroid","getListOfModalRoots","getModalRoot","addToIndex","removeFromIndex","getThemeClasses","Context","ModalContent","PureComponent","constructor","props","_defineProperty","triggeredBy","triggeredByEvent","color","modalRoots","firstLevel","_this$props","_ii","setBypassSelector","root_id","bypass_invalidation_selectors","filter","Boolean","activate","forEach","modal","_iiLocal","_scrollRef","current","document","addEventListener","onKeyDownHandler","animation_duration","timeoutDuration","parseFloat","clearTimeout","_androidFocusTimeout","setTimeout","_document$activeEleme","_document$activeEleme2","activeElement","tagName","scrollIntoView","e","event","stopPropagation","closeModalContent","_overlayClickRef","target","currentTarget","prevent_overlay_close","ifIsLatest","mostCurrent","preventDefault","setState","_contentRef","content_ref","createRef","scroll_ref","_id","id","componentDidMount","no_animation","removeScrollPossibility","setFocus","setAndroidFocusHelper","process","env","NODE_ENV","lockBody","_lockTimeout","componentWillUnmount","_focusTimeout","removeLocks","_this$_ii","revert","revertScrollPossibility","length","removeAndroidFocusHelper","state","removeEventListener","window","_androidFocusHelper","focus_selector","elem","_focusElement","_focusElement$focus","_focusElement2","_focusElement2$select","_elem$parentElement","_elem$parentElement$q","_elem$parentElement2","_elem$parentElement2$","focusElement","querySelector","focus","call","select","noH1Elem","noH1ElemInDrawerHeader","parentElement","noH1ElemInDialogHeader","_ref","_event$persist","params","_objectWithoutProperties","_excluded","persist","close","_objectSpread","render","_this$context","_this$props2","hide","title","labelled_by","close_title","dialog_title","hide_close_button","close_button_attributes","no_animation_on_mobile","fullscreen","container_placement","vertical_alignment","content_class","overlay_class","content_id","children","dialog_role","rest","_excluded2","contentId","useDialogRole","role","contentParams","undefined","className","context","theme","onMouseDown","onContentMouseDownHandler","onClick","onContentClickHandler","content","createElement","Provider","value","setBackgroundColor","onCloseClickHandler","preventClick","contentRef","scrollRef","_extends","style"],"sources":["../../../../src/components/modal/ModalContent.tsx"],"sourcesContent":["/**\n * Web Modal Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport {\n disableBodyScroll,\n enableBodyScroll,\n clearAllBodyScrollLocks,\n} from './bodyScrollLock'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n InteractionInvalidation,\n combineLabelledBy,\n combineDescribedBy,\n dispatchCustomElementEvent,\n keycode,\n} from '../../shared/component-helper'\nimport ModalContext from './ModalContext'\nimport { IS_IOS, IS_SAFARI, IS_MAC, isAndroid } from '../../shared/helpers'\nimport { ModalContentProps } from './types'\nimport {\n getListOfModalRoots,\n getModalRoot,\n addToIndex,\n removeFromIndex,\n} from './helpers'\nimport { getThemeClasses } from '../../shared/Theme'\nimport { Context } from '../../shared'\nimport { ContextProps } from '../../shared/Context'\n\ninterface ModalContentState {\n triggeredBy: string\n triggeredByEvent: Event\n color: string\n}\n\ndeclare global {\n interface Window {\n __modalStack: any[]\n }\n}\n\ninterface CSSPropertiesWithVars extends React.CSSProperties {\n '--modal-background-color': string\n}\n\nexport default class ModalContent extends React.PureComponent<\n ModalContentProps,\n ModalContentState\n> {\n state = { triggeredBy: null, triggeredByEvent: null, color: null }\n\n _contentRef: React.RefObject<HTMLElement>\n _scrollRef: React.RefObject<HTMLElement>\n _overlayClickRef: { current: null | HTMLElement }\n _id: string\n _lockTimeout: NodeJS.Timeout\n _focusTimeout: NodeJS.Timeout\n _androidFocusTimeout: NodeJS.Timeout\n _ii: InteractionInvalidation\n _iiLocal: InteractionInvalidation\n\n static contextType = Context\n\n context!: ContextProps\n\n constructor(props: ModalContentProps) {\n super(props)\n this._contentRef = this.props.content_ref || React.createRef()\n this._scrollRef = this.props.scroll_ref || React.createRef()\n this._overlayClickRef = React.createRef()\n\n // NB: The \"\"._id\" is used in the __modalStack as \"last._id\"\n this._id = props.id\n }\n\n componentDidMount() {\n const {\n id = null,\n no_animation = false,\n animation_duration = null,\n } = this.props\n\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n // Add it to the index at first\n // we use it later with getListOfModalRoots\n addToIndex(this)\n\n // Because of nested modals/drawers, we run this regardless\n // has to be run at first – so the scrollbar gets removed\n this.removeScrollPossibility() // forces browser to re-paint\n\n this.setFocus()\n this.setAndroidFocusHelper()\n\n dispatchCustomElementEvent(this, 'on_open', {\n id,\n })\n\n if (isTrue(no_animation) || process.env.NODE_ENV === 'test') {\n this.lockBody() // forces browser to re-paint\n } else {\n this._lockTimeout = setTimeout(this.lockBody, timeoutDuration * 1.2) // a little over --modal-animation-duration\n }\n }\n\n componentWillUnmount() {\n clearTimeout(this._focusTimeout)\n clearTimeout(this._lockTimeout)\n this.removeLocks()\n }\n\n lockBody = () => {\n const modalRoots = getListOfModalRoots()\n const firstLevel = modalRoots[0]\n\n if (firstLevel === this) {\n this._ii = new InteractionInvalidation()\n this._ii.setBypassSelector(\n [\n // Bypass modal content\n '.dnb-modal__content *',\n `#dnb-modal-${this.props.root_id || 'root'}`,\n `#dnb-modal-${this.props.root_id || 'root'} *`,\n\n // TODO: Eventually in future, make it possible to bypass invalidation from outside\n // '.dnb-modal--bypass_invalidation',\n // '.dnb-modal--bypass_invalidation_deep *',\n\n ...(this.props?.bypass_invalidation_selectors || []),\n ].filter(Boolean)\n )\n this._ii.activate()\n } else {\n modalRoots.forEach((modal) => {\n if (\n modal !== this &&\n typeof modal._iiLocal === 'undefined' &&\n typeof modal._scrollRef !== 'undefined'\n ) {\n modal._iiLocal = new InteractionInvalidation()\n modal._iiLocal.activate(modal._scrollRef.current)\n }\n })\n }\n\n if (typeof document !== 'undefined') {\n /** To ensure, we have always a working keydown, we call it both on the element and document */\n document.addEventListener('keydown', this.onKeyDownHandler)\n }\n }\n\n removeLocks() {\n const modalRoots = getListOfModalRoots()\n const firstLevel = modalRoots[0]\n\n removeFromIndex(this)\n\n if (firstLevel === this) {\n this._ii?.revert()\n this.revertScrollPossibility()\n } else {\n try {\n const modal = modalRoots[modalRoots.length - 2]\n if (modal !== this && modal._iiLocal) {\n modal._iiLocal.revert()\n delete modal._iiLocal\n }\n } catch (e) {\n warn(e)\n }\n }\n\n this.removeAndroidFocusHelper()\n\n const id = this.props.id\n const { triggeredBy, triggeredByEvent } = this.state\n dispatchCustomElementEvent(this, 'on_close', {\n id,\n event: triggeredByEvent,\n triggeredBy: triggeredBy || 'unmount',\n })\n\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', this.onKeyDownHandler)\n }\n }\n\n setAndroidFocusHelper() {\n if (typeof window !== 'undefined' && isAndroid()) {\n window.addEventListener('resize', this._androidFocusHelper)\n }\n }\n\n removeAndroidFocusHelper() {\n window.removeEventListener('resize', this._androidFocusHelper)\n clearTimeout(this._androidFocusTimeout)\n }\n\n _androidFocusHelper = () => {\n const { animation_duration = null } = this.props\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n clearTimeout(this._androidFocusTimeout)\n this._androidFocusTimeout = setTimeout(() => {\n try {\n if (\n document.activeElement?.tagName == 'INPUT' ||\n document.activeElement?.tagName == 'TEXTAREA'\n ) {\n document.activeElement.scrollIntoView()\n }\n } catch (e) {\n //\n }\n }, timeoutDuration / 2) // Older Android needs a delay here\n }\n\n setFocus() {\n const {\n focus_selector = null,\n no_animation = null,\n animation_duration = null,\n } = this.props\n const elem = this._contentRef.current\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n if (elem) {\n clearTimeout(this._focusTimeout)\n this._focusTimeout = setTimeout(\n () => {\n try {\n let focusElement = elem as HTMLInputElement\n\n // Try to use the \"first-focus\" method first\n if (typeof focus_selector === 'string') {\n focusElement = elem.querySelector(focus_selector)\n }\n\n focusElement?.focus?.()\n focusElement?.select?.()\n\n const noH1Elem = elem.querySelector('h1, h2, h3')\n // Check if there's a header in a Drawer.Header\n const noH1ElemInDrawerHeader = elem.parentElement\n ?.querySelector('.dnb-drawer__header')\n ?.querySelector('h1, h2, h3')\n\n // Check if there's a header in a Dialog.Header\n const noH1ElemInDialogHeader = elem.parentElement\n ?.querySelector('.dnb-dialog__header')\n ?.querySelector('h1, h2, h3')\n\n if (\n noH1Elem?.tagName !== 'H1' &&\n noH1ElemInDrawerHeader?.tagName !== 'H1' &&\n noH1ElemInDialogHeader?.tagName !== 'H1'\n ) {\n warn('A Dialog or Drawer needs a h1 as its first element!')\n }\n } catch (e) {\n warn(e)\n }\n },\n isTrue(no_animation) ? 0 : timeoutDuration || 0\n ) // with this delay, the user can press esc without an focus action first\n }\n }\n\n removeScrollPossibility() {\n if (this._scrollRef.current) {\n disableBodyScroll(this._scrollRef.current)\n }\n }\n\n revertScrollPossibility() {\n enableBodyScroll(this._scrollRef.current)\n clearAllBodyScrollLocks()\n }\n\n preventClick = (event) => {\n if (event) {\n event.stopPropagation()\n }\n }\n\n onCloseClickHandler = (event: React.SyntheticEvent) => {\n this.closeModalContent(event, { triggeredBy: 'button' })\n }\n\n onContentMouseDownHandler = (event: React.SyntheticEvent) => {\n this._overlayClickRef.current =\n event.target === event.currentTarget\n ? (event.target as HTMLElement)\n : null\n }\n\n onContentClickHandler = (event: React.SyntheticEvent) => {\n /**\n * Prevent false-positive Modal close,\n * when e.g. selecting text inside and moving the mouse outside,\n * we would still get this event fired. There we check if the current click,\n * has the same target as where the click got initiated.\n */\n if (this._overlayClickRef.current !== event.target) {\n return // stop here\n }\n this._overlayClickRef.current = null\n\n const { prevent_overlay_close } = this.props\n\n if (!isTrue(prevent_overlay_close)) {\n this.closeModalContent(event, {\n triggeredBy: 'overlay',\n ifIsLatest: false,\n })\n }\n }\n\n onKeyDownHandler = (event) => {\n switch (keycode(event)) {\n case 'esc': {\n const mostCurrent = getModalRoot(-1)\n\n if (mostCurrent === this) {\n event.preventDefault()\n this.closeModalContent(event, {\n triggeredBy: 'keyboard',\n })\n }\n\n break\n }\n }\n }\n\n closeModalContent(event, { triggeredBy, ...params }) {\n event?.persist?.()\n this.setState({ triggeredBy, triggeredByEvent: event }, () => {\n this.props.close(event, {\n triggeredBy,\n ...params,\n })\n })\n }\n\n setBackgroundColor = (color: string) => {\n this.setState({ color })\n }\n\n render() {\n const {\n hide,\n title,\n labelled_by,\n id: _id, // eslint-disable-line\n close_title = 'Lukk',\n dialog_title = 'Vindu',\n hide_close_button = false,\n close_button_attributes,\n no_animation = false,\n no_animation_on_mobile = false,\n fullscreen = 'auto',\n container_placement = 'right',\n vertical_alignment = 'center',\n close,\n content_class,\n overlay_class,\n content_id,\n children, // eslint-disable-line\n dialog_role = null,\n ...rest\n } = this.props\n const { color } = this.state\n\n const contentId = content_id || makeUniqueId('modal-')\n\n const useDialogRole = !(IS_MAC || IS_SAFARI || IS_IOS)\n let role = dialog_role || 'dialog'\n if (!useDialogRole && role === 'dialog') {\n role = 'region'\n }\n\n const contentParams = {\n /**\n * Do not use role=\"dialog\" on Safari\n *\n * VoiceOver has troubles with role=\"dialog\" and \"Modal in Modal\",\n * the result is, only the first Modal gets focus (set by Safari)\n *\n * Tests have shown: Both VoiceOver are working fine with the:\n * \"aria-labelledby\" and \"aria-describedby\" approach\n *\n */\n role,\n 'aria-modal': useDialogRole ? true : undefined,\n\n /**\n * ARIA references\n */\n 'aria-labelledby': combineLabelledBy(\n this.props,\n title ? contentId + '-title' : null,\n labelled_by\n ),\n 'aria-describedby': combineDescribedBy(\n this.props,\n contentId + '-content'\n ),\n\n /**\n * If no labelled_by and no title is given,\n * set a fallback \"dialog_title\"\n */\n 'aria-label': !title && !labelled_by ? dialog_title : undefined,\n\n className: classnames(\n 'dnb-modal__content',\n isTrue(fullscreen)\n ? 'dnb-modal__content--fullscreen'\n : fullscreen === 'auto' && 'dnb-modal__content--auto-fullscreen',\n container_placement\n ? `dnb-modal__content--${container_placement || 'right'}`\n : null,\n `dnb-modal__vertical-alignment--${vertical_alignment}`,\n getThemeClasses(this.context?.theme),\n content_class\n ),\n onMouseDown: this.onContentMouseDownHandler,\n onClick: this.onContentClickHandler,\n }\n\n const content =\n typeof children === 'function'\n ? children({ ...rest, close })\n : children\n\n return (\n <ModalContext.Provider\n value={{\n id: this.props.id,\n title,\n hide_close_button,\n close_button_attributes,\n close_title,\n hide,\n setBackgroundColor: this.setBackgroundColor,\n onCloseClickHandler: this.onCloseClickHandler,\n preventClick: this.preventClick,\n onKeyDownHandler: this.onKeyDownHandler,\n contentRef: this._contentRef,\n scrollRef: this._scrollRef,\n contentId,\n close,\n }}\n >\n <div\n id={contentId}\n /** Sets the color on scroll overflow (at the bottom) */\n style={\n (color\n ? { '--modal-background-color': `var(--color-${color})` }\n : null) as CSSPropertiesWithVars\n }\n {...contentParams}\n >\n {content}\n </div>\n\n <span\n className={classnames(\n 'dnb-modal__overlay',\n hide && 'dnb-modal__overlay--hide',\n isTrue(no_animation) && 'dnb-modal__overlay--no-animation',\n isTrue(no_animation_on_mobile) &&\n 'dnb-modal__overlay--no-animation-on-mobile',\n overlay_class\n )}\n aria-hidden={true}\n />\n </ModalContext.Provider>\n )\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ModalContent.js","names":["React","classnames","disableBodyScroll","enableBodyScroll","clearAllBodyScrollLocks","warn","isTrue","makeUniqueId","InteractionInvalidation","combineLabelledBy","combineDescribedBy","dispatchCustomElementEvent","keycode","ModalContext","IS_IOS","IS_SAFARI","IS_MAC","isAndroid","getListOfModalRoots","getModalRoot","addToIndex","removeFromIndex","getThemeClasses","Context","ModalContent","PureComponent","constructor","props","_defineProperty","color","modalRoots","firstLevel","_this$props","_ii","setBypassSelector","root_id","bypass_invalidation_selectors","filter","Boolean","activate","forEach","modal","_iiLocal","_scrollRef","current","document","addEventListener","onKeyDownHandler","animation_duration","timeoutDuration","parseFloat","clearTimeout","_androidFocusTimeout","setTimeout","_document$activeEleme","_document$activeEleme2","activeElement","tagName","scrollIntoView","e","event","stopPropagation","closeModalContent","triggeredBy","_overlayClickRef","target","currentTarget","prevent_overlay_close","ifIsLatest","mostCurrent","preventDefault","_ref","_triggeredBy","_triggeredByEvent","setState","_contentRef","content_ref","createRef","scroll_ref","modalContentCloseRef","setModalContentState","_id","id","componentDidMount","no_animation","removeScrollPossibility","setFocus","setAndroidFocusHelper","process","env","NODE_ENV","lockBody","_lockTimeout","setIsControlled","componentWillUnmount","_focusTimeout","removeLocks","open_state","_isControlled","componentDidUpdate","wasOpenedManually","_this$_ii","revert","revertScrollPossibility","length","removeAndroidFocusHelper","removeEventListener","window","_androidFocusHelper","focus_selector","elem","_focusElement","_focusElement$focus","_focusElement2","_focusElement2$select","_elem$parentElement","_elem$parentElement$q","_elem$parentElement2","_elem$parentElement2$","focusElement","querySelector","focus","call","select","noH1Elem","noH1ElemInDrawerHeader","parentElement","noH1ElemInDialogHeader","_ref2","_event$persist","params","_objectWithoutProperties","_excluded","persist","close","_objectSpread","render","_this$context","_this$props2","hide","title","labelled_by","close_title","dialog_title","hide_close_button","close_button_attributes","no_animation_on_mobile","fullscreen","container_placement","vertical_alignment","content_class","overlay_class","content_id","children","dialog_role","rest","_excluded2","state","contentId","useDialogRole","role","contentParams","undefined","className","context","theme","onMouseDown","onContentMouseDownHandler","onClick","onContentClickHandler","content","createElement","Provider","value","setBackgroundColor","onCloseClickHandler","preventClick","contentRef","scrollRef","_extends","style"],"sources":["../../../../src/components/modal/ModalContent.tsx"],"sourcesContent":["/**\n * Web Modal Component\n *\n */\n\nimport React from 'react'\nimport classnames from 'classnames'\nimport {\n disableBodyScroll,\n enableBodyScroll,\n clearAllBodyScrollLocks,\n} from './bodyScrollLock'\nimport {\n warn,\n isTrue,\n makeUniqueId,\n InteractionInvalidation,\n combineLabelledBy,\n combineDescribedBy,\n dispatchCustomElementEvent,\n keycode,\n} from '../../shared/component-helper'\nimport ModalContext from './ModalContext'\nimport { IS_IOS, IS_SAFARI, IS_MAC, isAndroid } from '../../shared/helpers'\nimport {\n CloseHandlerParams,\n ModalContentProps,\n TriggeredBy,\n} from './types'\nimport {\n getListOfModalRoots,\n getModalRoot,\n addToIndex,\n removeFromIndex,\n} from './helpers'\nimport { getThemeClasses } from '../../shared/Theme'\nimport { Context } from '../../shared'\nimport { ContextProps } from '../../shared/Context'\n\ninterface ModalContentState {\n color: string\n}\n\ndeclare global {\n interface Window {\n __modalStack: any[]\n }\n}\n\ninterface CSSPropertiesWithVars extends React.CSSProperties {\n '--modal-background-color': string\n}\n\nexport default class ModalContent extends React.PureComponent<\n ModalContentProps,\n ModalContentState\n> {\n state = { color: null }\n\n _contentRef: React.RefObject<HTMLElement>\n _scrollRef: React.RefObject<HTMLElement>\n _overlayClickRef: { current: null | HTMLElement }\n _id: string\n _lockTimeout: NodeJS.Timeout\n _focusTimeout: NodeJS.Timeout\n _androidFocusTimeout: NodeJS.Timeout\n _ii: InteractionInvalidation\n _iiLocal: InteractionInvalidation\n _triggeredBy: TriggeredBy\n _triggeredByEvent: React.SyntheticEvent\n _isControlled = false\n\n static contextType = Context\n\n context!: ContextProps\n\n constructor(props: ModalContentProps) {\n super(props)\n this._contentRef = this.props.content_ref || React.createRef()\n this._scrollRef = this.props.scroll_ref || React.createRef()\n this._overlayClickRef = React.createRef()\n if (this.props.modalContentCloseRef) {\n this.props.modalContentCloseRef.current = this.setModalContentState\n }\n\n // NB: The \"\"._id\" is used in the __modalStack as \"last._id\"\n this._id = props.id\n }\n\n componentDidMount() {\n const {\n id = null,\n no_animation = false,\n animation_duration = null,\n } = this.props\n\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n // Add it to the index at first\n // we use it later with getListOfModalRoots\n addToIndex(this)\n\n // Because of nested modals/drawers, we run this regardless\n // has to be run at first – so the scrollbar gets removed\n this.removeScrollPossibility() // forces browser to re-paint\n\n this.setFocus()\n this.setAndroidFocusHelper()\n\n dispatchCustomElementEvent(this, 'on_open', {\n id,\n })\n\n if (isTrue(no_animation) || process.env.NODE_ENV === 'test') {\n this.lockBody() // forces browser to re-paint\n } else {\n this._lockTimeout = setTimeout(this.lockBody, timeoutDuration * 1.2) // a little over --modal-animation-duration\n }\n\n this.setIsControlled()\n }\n\n componentWillUnmount() {\n clearTimeout(this._focusTimeout)\n clearTimeout(this._lockTimeout)\n this.removeLocks()\n }\n\n setIsControlled() {\n const { open_state } = this.props\n if (typeof open_state !== 'undefined' && open_state !== null) {\n this._isControlled = true\n }\n }\n\n componentDidUpdate() {\n this.setIsControlled()\n }\n\n wasOpenedManually() {\n if (this._triggeredBy) {\n return true\n }\n\n if (this._isControlled) {\n return true\n }\n\n return false\n }\n\n lockBody = () => {\n const modalRoots = getListOfModalRoots()\n const firstLevel = modalRoots[0]\n\n if (firstLevel === this) {\n this._ii = new InteractionInvalidation()\n this._ii.setBypassSelector(\n [\n // Bypass modal content\n '.dnb-modal__content *',\n `#dnb-modal-${this.props.root_id || 'root'}`,\n `#dnb-modal-${this.props.root_id || 'root'} *`,\n\n // TODO: Eventually in future, make it possible to bypass invalidation from outside\n // '.dnb-modal--bypass_invalidation',\n // '.dnb-modal--bypass_invalidation_deep *',\n\n ...(this.props?.bypass_invalidation_selectors || []),\n ].filter(Boolean)\n )\n this._ii.activate()\n } else {\n modalRoots.forEach((modal) => {\n if (\n modal !== this &&\n typeof modal._iiLocal === 'undefined' &&\n typeof modal._scrollRef !== 'undefined'\n ) {\n modal._iiLocal = new InteractionInvalidation()\n modal._iiLocal.activate(modal._scrollRef.current)\n }\n })\n }\n\n if (typeof document !== 'undefined') {\n /** To ensure, we have always a working keydown, we call it both on the element and document */\n document.addEventListener('keydown', this.onKeyDownHandler)\n }\n }\n\n removeLocks() {\n const modalRoots = getListOfModalRoots()\n const firstLevel = modalRoots[0]\n\n removeFromIndex(this)\n\n if (firstLevel === this) {\n this._ii?.revert()\n this.revertScrollPossibility()\n } else {\n try {\n const modal = modalRoots[modalRoots.length - 2]\n if (modal !== this && modal._iiLocal) {\n modal._iiLocal.revert()\n delete modal._iiLocal\n }\n } catch (e) {\n warn(e)\n }\n }\n\n this.removeAndroidFocusHelper()\n\n if (this.wasOpenedManually()) {\n const id = this.props.id\n dispatchCustomElementEvent(this, 'on_close', {\n id,\n event: this._triggeredByEvent,\n triggeredBy: this._triggeredBy || 'unmount',\n })\n }\n\n if (typeof document !== 'undefined') {\n document.removeEventListener('keydown', this.onKeyDownHandler)\n }\n }\n\n setAndroidFocusHelper() {\n if (typeof window !== 'undefined' && isAndroid()) {\n window.addEventListener('resize', this._androidFocusHelper)\n }\n }\n\n removeAndroidFocusHelper() {\n window.removeEventListener('resize', this._androidFocusHelper)\n clearTimeout(this._androidFocusTimeout)\n }\n\n _androidFocusHelper = () => {\n const { animation_duration = null } = this.props\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n clearTimeout(this._androidFocusTimeout)\n this._androidFocusTimeout = setTimeout(() => {\n try {\n if (\n document.activeElement?.tagName == 'INPUT' ||\n document.activeElement?.tagName == 'TEXTAREA'\n ) {\n document.activeElement.scrollIntoView()\n }\n } catch (e) {\n //\n }\n }, timeoutDuration / 2) // Older Android needs a delay here\n }\n\n setFocus() {\n const {\n focus_selector = null,\n no_animation = null,\n animation_duration = null,\n } = this.props\n const elem = this._contentRef.current\n const timeoutDuration: number =\n typeof animation_duration === 'string'\n ? parseFloat(animation_duration)\n : animation_duration\n\n if (elem) {\n clearTimeout(this._focusTimeout)\n this._focusTimeout = setTimeout(\n () => {\n try {\n let focusElement = elem as HTMLInputElement\n\n // Try to use the \"first-focus\" method first\n if (typeof focus_selector === 'string') {\n focusElement = elem.querySelector(focus_selector)\n }\n\n focusElement?.focus?.()\n focusElement?.select?.()\n\n const noH1Elem = elem.querySelector('h1, h2, h3')\n // Check if there's a header in a Drawer.Header\n const noH1ElemInDrawerHeader = elem.parentElement\n ?.querySelector('.dnb-drawer__header')\n ?.querySelector('h1, h2, h3')\n\n // Check if there's a header in a Dialog.Header\n const noH1ElemInDialogHeader = elem.parentElement\n ?.querySelector('.dnb-dialog__header')\n ?.querySelector('h1, h2, h3')\n\n if (\n noH1Elem?.tagName !== 'H1' &&\n noH1ElemInDrawerHeader?.tagName !== 'H1' &&\n noH1ElemInDialogHeader?.tagName !== 'H1'\n ) {\n warn('A Dialog or Drawer needs a h1 as its first element!')\n }\n } catch (e) {\n warn(e)\n }\n },\n isTrue(no_animation) ? 0 : timeoutDuration || 0\n ) // with this delay, the user can press esc without an focus action first\n }\n }\n\n removeScrollPossibility() {\n if (this._scrollRef.current) {\n disableBodyScroll(this._scrollRef.current)\n }\n }\n\n revertScrollPossibility() {\n enableBodyScroll(this._scrollRef.current)\n clearAllBodyScrollLocks()\n }\n\n preventClick = (event) => {\n if (event) {\n event.stopPropagation()\n }\n }\n\n onCloseClickHandler = (event: React.SyntheticEvent) => {\n this.closeModalContent(event, { triggeredBy: 'button' })\n }\n\n onContentMouseDownHandler = (event: React.SyntheticEvent) => {\n this._overlayClickRef.current =\n event.target === event.currentTarget\n ? (event.target as HTMLElement)\n : null\n }\n\n onContentClickHandler = (event: React.SyntheticEvent) => {\n /**\n * Prevent false-positive Modal close,\n * when e.g. selecting text inside and moving the mouse outside,\n * we would still get this event fired. There we check if the current click,\n * has the same target as where the click got initiated.\n */\n if (this._overlayClickRef.current !== event.target) {\n return // stop here\n }\n this._overlayClickRef.current = null\n\n const { prevent_overlay_close } = this.props\n\n if (!isTrue(prevent_overlay_close)) {\n this.closeModalContent(event, {\n triggeredBy: 'overlay',\n ifIsLatest: false,\n })\n }\n }\n\n onKeyDownHandler = (event) => {\n switch (keycode(event)) {\n case 'esc': {\n const mostCurrent = getModalRoot(-1)\n\n if (mostCurrent === this) {\n event.preventDefault()\n this.closeModalContent(event, {\n triggeredBy: 'keyboard',\n })\n }\n\n break\n }\n }\n }\n\n setModalContentState = (\n event: React.SyntheticEvent,\n { triggeredBy }: CloseHandlerParams\n ) => {\n this._triggeredBy = triggeredBy\n this._triggeredByEvent = event\n }\n\n closeModalContent(\n event,\n {\n triggeredBy,\n ...params\n }: CloseHandlerParams & { ifIsLatest?: boolean }\n ) {\n event?.persist?.()\n\n this.props.close(event, {\n triggeredBy,\n ...params,\n })\n }\n\n setBackgroundColor = (color: string) => {\n this.setState({ color })\n }\n\n render() {\n const {\n hide,\n title,\n labelled_by,\n id: _id, // eslint-disable-line\n close_title = 'Lukk',\n dialog_title = 'Vindu',\n hide_close_button = false,\n close_button_attributes,\n no_animation = false,\n no_animation_on_mobile = false,\n fullscreen = 'auto',\n container_placement = 'right',\n vertical_alignment = 'center',\n close,\n content_class,\n overlay_class,\n content_id,\n children, // eslint-disable-line\n dialog_role = null,\n ...rest\n } = this.props\n const { color } = this.state\n\n const contentId = content_id || makeUniqueId('modal-')\n\n const useDialogRole = !(IS_MAC || IS_SAFARI || IS_IOS)\n let role = dialog_role || 'dialog'\n if (!useDialogRole && role === 'dialog') {\n role = 'region'\n }\n\n const contentParams = {\n /**\n * Do not use role=\"dialog\" on Safari\n *\n * VoiceOver has troubles with role=\"dialog\" and \"Modal in Modal\",\n * the result is, only the first Modal gets focus (set by Safari)\n *\n * Tests have shown: Both VoiceOver are working fine with the:\n * \"aria-labelledby\" and \"aria-describedby\" approach\n *\n */\n role,\n 'aria-modal': useDialogRole ? true : undefined,\n\n /**\n * ARIA references\n */\n 'aria-labelledby': combineLabelledBy(\n this.props,\n title ? contentId + '-title' : null,\n labelled_by\n ),\n 'aria-describedby': combineDescribedBy(\n this.props,\n contentId + '-content'\n ),\n\n /**\n * If no labelled_by and no title is given,\n * set a fallback \"dialog_title\"\n */\n 'aria-label': !title && !labelled_by ? dialog_title : undefined,\n\n className: classnames(\n 'dnb-modal__content',\n isTrue(fullscreen)\n ? 'dnb-modal__content--fullscreen'\n : fullscreen === 'auto' && 'dnb-modal__content--auto-fullscreen',\n container_placement\n ? `dnb-modal__content--${container_placement || 'right'}`\n : null,\n `dnb-modal__vertical-alignment--${vertical_alignment}`,\n getThemeClasses(this.context?.theme),\n content_class\n ),\n onMouseDown: this.onContentMouseDownHandler,\n onClick: this.onContentClickHandler,\n }\n\n const content =\n typeof children === 'function'\n ? children({ ...rest, close })\n : children\n\n return (\n <ModalContext.Provider\n value={{\n id: this.props.id,\n title,\n hide_close_button,\n close_button_attributes,\n close_title,\n hide,\n setBackgroundColor: this.setBackgroundColor,\n onCloseClickHandler: this.onCloseClickHandler,\n preventClick: this.preventClick,\n onKeyDownHandler: this.onKeyDownHandler,\n contentRef: this._contentRef,\n scrollRef: this._scrollRef,\n contentId,\n close,\n }}\n >\n <div\n id={contentId}\n /** Sets the color on scroll overflow (at the bottom) */\n style={\n (color\n ? { '--modal-background-color': `var(--color-${color})` }\n : null) as CSSPropertiesWithVars\n }\n {...contentParams}\n >\n {content}\n </div>\n\n <span\n className={classnames(\n 'dnb-modal__overlay',\n hide && 'dnb-modal__overlay--hide',\n isTrue(no_animation) && 'dnb-modal__overlay--no-animation',\n isTrue(no_animation_on_mobile) &&\n 'dnb-modal__overlay--no-animation-on-mobile',\n overlay_class\n )}\n aria-hidden={true}\n />\n </ModalContext.Provider>\n )\n }\n}\n"],"mappings":"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"}