@dnb/eufemia 10.65.0 → 10.66.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/cjs/components/card/Card.js +1 -1
  3. package/cjs/components/card/Card.js.map +1 -1
  4. package/cjs/components/date-picker/DatePicker.d.ts +3 -1
  5. package/cjs/components/date-picker/DatePicker.js +3 -1
  6. package/cjs/components/date-picker/DatePicker.js.map +1 -1
  7. package/cjs/components/date-picker/DatePickerAddon.js +8 -1
  8. package/cjs/components/date-picker/DatePickerAddon.js.map +1 -1
  9. package/cjs/components/date-picker/DatePickerInput.d.ts +5 -0
  10. package/cjs/components/date-picker/DatePickerInput.js +54 -36
  11. package/cjs/components/date-picker/DatePickerInput.js.map +1 -1
  12. package/cjs/components/date-picker/DatePickerProvider.d.ts +4 -3
  13. package/cjs/components/date-picker/DatePickerProvider.js +7 -2
  14. package/cjs/components/date-picker/DatePickerProvider.js.map +1 -1
  15. package/cjs/components/date-picker/hooks/useDates.js.map +1 -1
  16. package/cjs/components/flex/Container.d.ts +2 -1
  17. package/cjs/components/flex/Container.js +31 -24
  18. package/cjs/components/flex/Container.js.map +1 -1
  19. package/cjs/components/flex/ContainerDocs.d.ts +2 -0
  20. package/cjs/components/flex/ContainerDocs.js +81 -0
  21. package/cjs/components/flex/ContainerDocs.js.map +1 -0
  22. package/cjs/components/flex/style/dnb-flex.css +36 -4
  23. package/cjs/components/flex/style/dnb-flex.min.css +1 -1
  24. package/cjs/components/flex/style/flex-container.scss +39 -4
  25. package/cjs/components/help-button/HelpButtonInline.d.ts +6 -0
  26. package/cjs/components/help-button/HelpButtonInline.js +51 -19
  27. package/cjs/components/help-button/HelpButtonInline.js.map +1 -1
  28. package/cjs/components/help-button/HelpButtonInstance.js +1 -1
  29. package/cjs/components/help-button/HelpButtonInstance.js.map +1 -1
  30. package/cjs/components/slider/SliderDocs.js +2 -2
  31. package/cjs/components/slider/SliderDocs.js.map +1 -1
  32. package/cjs/components/slider/SliderProvider.js +0 -2
  33. package/cjs/components/slider/SliderProvider.js.map +1 -1
  34. package/cjs/components/slider/types.d.ts +2 -2
  35. package/cjs/components/slider/types.js.map +1 -1
  36. package/cjs/components/step-indicator/StepIndicator.d.ts +6 -0
  37. package/cjs/components/step-indicator/StepIndicator.js.map +1 -1
  38. package/cjs/components/step-indicator/StepIndicatorContext.d.ts +2 -0
  39. package/cjs/components/step-indicator/StepIndicatorContext.js.map +1 -1
  40. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
  41. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  42. package/cjs/components/toggle-button/ToggleButton.d.ts +9 -1
  43. package/cjs/components/toggle-button/ToggleButtonDocs.js +1 -0
  44. package/cjs/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  45. package/cjs/extensions/forms/DataContext/Context.d.ts +11 -5
  46. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  47. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +1 -1
  48. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  49. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +2 -2
  50. package/cjs/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  51. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
  52. package/cjs/extensions/forms/DataContext/Provider/Provider.js +46 -42
  53. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  54. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  55. package/cjs/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  56. package/cjs/extensions/forms/Field/Slider/Slider.js +13 -4
  57. package/cjs/extensions/forms/Field/Slider/Slider.js.map +1 -1
  58. package/cjs/extensions/forms/FieldBlock/FieldBlock.js +17 -13
  59. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  60. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js +7 -2
  61. package/cjs/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  62. package/cjs/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
  63. package/cjs/extensions/forms/Value/ValueDocs.js +5 -0
  64. package/cjs/extensions/forms/Value/ValueDocs.js.map +1 -1
  65. package/cjs/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
  66. package/cjs/extensions/forms/ValueBlock/ValueBlock.js +40 -10
  67. package/cjs/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  68. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
  69. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  70. package/cjs/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
  71. package/cjs/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
  72. package/cjs/extensions/forms/Wizard/Container/DisplaySteps.js +78 -0
  73. package/cjs/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
  74. package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
  75. package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.js +94 -0
  76. package/cjs/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
  77. package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
  78. package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +67 -0
  79. package/cjs/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
  80. package/cjs/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
  81. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js +102 -206
  82. package/cjs/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  83. package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
  84. package/cjs/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
  85. package/cjs/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
  86. package/cjs/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  87. package/cjs/extensions/forms/Wizard/Context/types.d.ts +35 -0
  88. package/cjs/extensions/forms/Wizard/Context/types.js +1 -0
  89. package/cjs/extensions/forms/Wizard/Context/types.js.map +1 -0
  90. package/cjs/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
  91. package/cjs/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
  92. package/cjs/extensions/forms/Wizard/Step/Step.d.ts +4 -0
  93. package/cjs/extensions/forms/Wizard/Step/Step.js +28 -9
  94. package/cjs/extensions/forms/Wizard/Step/Step.js.map +1 -1
  95. package/cjs/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
  96. package/cjs/extensions/forms/Wizard/Step/StepContext.js +12 -0
  97. package/cjs/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
  98. package/cjs/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  99. package/cjs/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  100. package/cjs/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
  101. package/cjs/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  102. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  103. package/cjs/extensions/forms/constants/locales/en-GB.js +2 -1
  104. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  105. package/cjs/extensions/forms/constants/locales/en-US.d.ts +1 -0
  106. package/cjs/extensions/forms/constants/locales/index.d.ts +2 -0
  107. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  108. package/cjs/extensions/forms/constants/locales/nb-NO.js +2 -1
  109. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  110. package/cjs/extensions/forms/hooks/useFieldProps.js +41 -23
  111. package/cjs/extensions/forms/hooks/useFieldProps.js.map +1 -1
  112. package/cjs/extensions/forms/style/dnb-forms.css +17 -0
  113. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  114. package/cjs/extensions/forms/types.d.ts +9 -1
  115. package/cjs/extensions/forms/types.js.map +1 -1
  116. package/cjs/fragments/drawer-list/DrawerList.d.ts +6 -1
  117. package/cjs/fragments/drawer-list/DrawerList.js +1 -0
  118. package/cjs/fragments/drawer-list/DrawerList.js.map +1 -1
  119. package/cjs/shared/Eufemia.d.ts +1 -1
  120. package/cjs/shared/Eufemia.js +2 -2
  121. package/cjs/shared/Eufemia.js.map +1 -1
  122. package/cjs/style/core/scopes.scss +1 -1
  123. package/cjs/style/dnb-ui-basis.css +1 -1
  124. package/cjs/style/dnb-ui-basis.min.css +1 -1
  125. package/cjs/style/dnb-ui-body.css +1 -1
  126. package/cjs/style/dnb-ui-body.min.css +1 -1
  127. package/cjs/style/dnb-ui-components.css +53 -4
  128. package/cjs/style/dnb-ui-components.min.css +2 -2
  129. package/cjs/style/dnb-ui-core.css +1 -1
  130. package/cjs/style/dnb-ui-core.min.css +1 -1
  131. package/cjs/style/dnb-ui-extensions.css +17 -0
  132. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  133. package/cjs/style/dnb-ui-forms.css +17 -0
  134. package/cjs/style/dnb-ui-forms.min.css +1 -1
  135. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +70 -4
  136. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  137. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +17 -0
  138. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  139. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +17 -0
  140. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  141. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +70 -4
  142. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  143. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +17 -0
  144. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  145. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +17 -0
  146. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  147. package/cjs/style/themes/theme-ui/ui-theme-components.css +70 -4
  148. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  149. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +17 -0
  150. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  151. package/cjs/style/themes/theme-ui/ui-theme-forms.css +17 -0
  152. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  153. package/components/card/Card.js +1 -1
  154. package/components/card/Card.js.map +1 -1
  155. package/components/date-picker/DatePicker.d.ts +3 -1
  156. package/components/date-picker/DatePicker.js +3 -1
  157. package/components/date-picker/DatePicker.js.map +1 -1
  158. package/components/date-picker/DatePickerAddon.js +6 -1
  159. package/components/date-picker/DatePickerAddon.js.map +1 -1
  160. package/components/date-picker/DatePickerInput.d.ts +5 -0
  161. package/components/date-picker/DatePickerInput.js +54 -36
  162. package/components/date-picker/DatePickerInput.js.map +1 -1
  163. package/components/date-picker/DatePickerProvider.d.ts +4 -3
  164. package/components/date-picker/DatePickerProvider.js +7 -2
  165. package/components/date-picker/DatePickerProvider.js.map +1 -1
  166. package/components/date-picker/hooks/useDates.js.map +1 -1
  167. package/components/flex/Container.d.ts +2 -1
  168. package/components/flex/Container.js +32 -25
  169. package/components/flex/Container.js.map +1 -1
  170. package/components/flex/ContainerDocs.d.ts +2 -0
  171. package/components/flex/ContainerDocs.js +74 -0
  172. package/components/flex/ContainerDocs.js.map +1 -0
  173. package/components/flex/style/dnb-flex.css +36 -4
  174. package/components/flex/style/dnb-flex.min.css +1 -1
  175. package/components/flex/style/flex-container.scss +39 -4
  176. package/components/help-button/HelpButtonInline.d.ts +6 -0
  177. package/components/help-button/HelpButtonInline.js +51 -19
  178. package/components/help-button/HelpButtonInline.js.map +1 -1
  179. package/components/help-button/HelpButtonInstance.js +1 -1
  180. package/components/help-button/HelpButtonInstance.js.map +1 -1
  181. package/components/slider/SliderDocs.js +2 -2
  182. package/components/slider/SliderDocs.js.map +1 -1
  183. package/components/slider/SliderProvider.js +0 -2
  184. package/components/slider/SliderProvider.js.map +1 -1
  185. package/components/slider/types.d.ts +2 -2
  186. package/components/slider/types.js.map +1 -1
  187. package/components/step-indicator/StepIndicator.d.ts +6 -0
  188. package/components/step-indicator/StepIndicator.js.map +1 -1
  189. package/components/step-indicator/StepIndicatorContext.d.ts +2 -0
  190. package/components/step-indicator/StepIndicatorContext.js.map +1 -1
  191. package/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
  192. package/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  193. package/components/toggle-button/ToggleButton.d.ts +9 -1
  194. package/components/toggle-button/ToggleButtonDocs.js +1 -0
  195. package/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  196. package/es/components/card/Card.js +1 -1
  197. package/es/components/card/Card.js.map +1 -1
  198. package/es/components/date-picker/DatePicker.d.ts +3 -1
  199. package/es/components/date-picker/DatePicker.js +3 -1
  200. package/es/components/date-picker/DatePicker.js.map +1 -1
  201. package/es/components/date-picker/DatePickerAddon.js +6 -1
  202. package/es/components/date-picker/DatePickerAddon.js.map +1 -1
  203. package/es/components/date-picker/DatePickerInput.d.ts +5 -0
  204. package/es/components/date-picker/DatePickerInput.js +54 -36
  205. package/es/components/date-picker/DatePickerInput.js.map +1 -1
  206. package/es/components/date-picker/DatePickerProvider.d.ts +4 -3
  207. package/es/components/date-picker/DatePickerProvider.js +7 -2
  208. package/es/components/date-picker/DatePickerProvider.js.map +1 -1
  209. package/es/components/date-picker/hooks/useDates.js.map +1 -1
  210. package/es/components/flex/Container.d.ts +2 -1
  211. package/es/components/flex/Container.js +32 -25
  212. package/es/components/flex/Container.js.map +1 -1
  213. package/es/components/flex/ContainerDocs.d.ts +2 -0
  214. package/es/components/flex/ContainerDocs.js +74 -0
  215. package/es/components/flex/ContainerDocs.js.map +1 -0
  216. package/es/components/flex/style/dnb-flex.css +36 -4
  217. package/es/components/flex/style/dnb-flex.min.css +1 -1
  218. package/es/components/flex/style/flex-container.scss +39 -4
  219. package/es/components/help-button/HelpButtonInline.d.ts +6 -0
  220. package/es/components/help-button/HelpButtonInline.js +50 -18
  221. package/es/components/help-button/HelpButtonInline.js.map +1 -1
  222. package/es/components/help-button/HelpButtonInstance.js +1 -1
  223. package/es/components/help-button/HelpButtonInstance.js.map +1 -1
  224. package/es/components/slider/SliderDocs.js +2 -2
  225. package/es/components/slider/SliderDocs.js.map +1 -1
  226. package/es/components/slider/SliderProvider.js +0 -2
  227. package/es/components/slider/SliderProvider.js.map +1 -1
  228. package/es/components/slider/types.d.ts +2 -2
  229. package/es/components/slider/types.js.map +1 -1
  230. package/es/components/step-indicator/StepIndicator.d.ts +6 -0
  231. package/es/components/step-indicator/StepIndicator.js.map +1 -1
  232. package/es/components/step-indicator/StepIndicatorContext.d.ts +2 -0
  233. package/es/components/step-indicator/StepIndicatorContext.js.map +1 -1
  234. package/es/components/step-indicator/StepIndicatorTriggerButton.js +4 -3
  235. package/es/components/step-indicator/StepIndicatorTriggerButton.js.map +1 -1
  236. package/es/components/toggle-button/ToggleButton.d.ts +9 -1
  237. package/es/components/toggle-button/ToggleButtonDocs.js +1 -0
  238. package/es/components/toggle-button/ToggleButtonDocs.js.map +1 -1
  239. package/es/extensions/forms/DataContext/Context.d.ts +11 -5
  240. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  241. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +1 -1
  242. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  243. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +2 -2
  244. package/es/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  245. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
  246. package/es/extensions/forms/DataContext/Provider/Provider.js +36 -35
  247. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  248. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  249. package/es/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  250. package/es/extensions/forms/Field/Slider/Slider.js +13 -4
  251. package/es/extensions/forms/Field/Slider/Slider.js.map +1 -1
  252. package/es/extensions/forms/FieldBlock/FieldBlock.js +17 -13
  253. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  254. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js +7 -2
  255. package/es/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  256. package/es/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
  257. package/es/extensions/forms/Value/ValueDocs.js +5 -0
  258. package/es/extensions/forms/Value/ValueDocs.js.map +1 -1
  259. package/es/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
  260. package/es/extensions/forms/ValueBlock/ValueBlock.js +40 -10
  261. package/es/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  262. package/es/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
  263. package/es/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  264. package/es/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
  265. package/es/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
  266. package/es/extensions/forms/Wizard/Container/DisplaySteps.js +66 -0
  267. package/es/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
  268. package/es/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
  269. package/es/extensions/forms/Wizard/Container/IterateOverSteps.js +85 -0
  270. package/es/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
  271. package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
  272. package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +54 -0
  273. package/es/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
  274. package/es/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
  275. package/es/extensions/forms/Wizard/Container/WizardContainer.js +97 -194
  276. package/es/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  277. package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
  278. package/es/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
  279. package/es/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
  280. package/es/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  281. package/es/extensions/forms/Wizard/Context/types.d.ts +35 -0
  282. package/es/extensions/forms/Wizard/Context/types.js +1 -0
  283. package/es/extensions/forms/Wizard/Context/types.js.map +1 -0
  284. package/es/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
  285. package/es/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
  286. package/es/extensions/forms/Wizard/Step/Step.d.ts +4 -0
  287. package/es/extensions/forms/Wizard/Step/Step.js +29 -10
  288. package/es/extensions/forms/Wizard/Step/Step.js.map +1 -1
  289. package/es/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
  290. package/es/extensions/forms/Wizard/Step/StepContext.js +4 -0
  291. package/es/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
  292. package/es/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  293. package/es/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  294. package/es/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
  295. package/es/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  296. package/es/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  297. package/es/extensions/forms/constants/locales/en-GB.js +2 -1
  298. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  299. package/es/extensions/forms/constants/locales/en-US.d.ts +1 -0
  300. package/es/extensions/forms/constants/locales/index.d.ts +2 -0
  301. package/es/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  302. package/es/extensions/forms/constants/locales/nb-NO.js +2 -1
  303. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  304. package/es/extensions/forms/hooks/useFieldProps.js +42 -22
  305. package/es/extensions/forms/hooks/useFieldProps.js.map +1 -1
  306. package/es/extensions/forms/style/dnb-forms.css +17 -0
  307. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  308. package/es/extensions/forms/types.d.ts +9 -1
  309. package/es/extensions/forms/types.js.map +1 -1
  310. package/es/fragments/drawer-list/DrawerList.d.ts +6 -1
  311. package/es/fragments/drawer-list/DrawerList.js +1 -0
  312. package/es/fragments/drawer-list/DrawerList.js.map +1 -1
  313. package/es/shared/Eufemia.d.ts +1 -1
  314. package/es/shared/Eufemia.js +2 -2
  315. package/es/shared/Eufemia.js.map +1 -1
  316. package/es/style/core/scopes.scss +1 -1
  317. package/es/style/dnb-ui-basis.css +1 -1
  318. package/es/style/dnb-ui-basis.min.css +1 -1
  319. package/es/style/dnb-ui-body.css +1 -1
  320. package/es/style/dnb-ui-body.min.css +1 -1
  321. package/es/style/dnb-ui-components.css +53 -4
  322. package/es/style/dnb-ui-components.min.css +2 -2
  323. package/es/style/dnb-ui-core.css +1 -1
  324. package/es/style/dnb-ui-core.min.css +1 -1
  325. package/es/style/dnb-ui-extensions.css +17 -0
  326. package/es/style/dnb-ui-extensions.min.css +1 -1
  327. package/es/style/dnb-ui-forms.css +17 -0
  328. package/es/style/dnb-ui-forms.min.css +1 -1
  329. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +70 -4
  330. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  331. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +17 -0
  332. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  333. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +17 -0
  334. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  335. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +70 -4
  336. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  337. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +17 -0
  338. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  339. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +17 -0
  340. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  341. package/es/style/themes/theme-ui/ui-theme-components.css +70 -4
  342. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  343. package/es/style/themes/theme-ui/ui-theme-extensions.css +17 -0
  344. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  345. package/es/style/themes/theme-ui/ui-theme-forms.css +17 -0
  346. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  347. package/esm/dnb-ui-basis.min.mjs +1 -1
  348. package/esm/dnb-ui-components.min.mjs +1 -1
  349. package/esm/dnb-ui-elements.min.mjs +1 -1
  350. package/esm/dnb-ui-extensions.min.mjs +3 -3
  351. package/esm/dnb-ui-lib.min.mjs +1 -1
  352. package/extensions/forms/DataContext/Context.d.ts +11 -5
  353. package/extensions/forms/DataContext/Context.js.map +1 -1
  354. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.d.ts +1 -1
  355. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryContext.js.map +1 -1
  356. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js +2 -2
  357. package/extensions/forms/DataContext/FieldBoundary/FieldBoundaryProvider.js.map +1 -1
  358. package/extensions/forms/DataContext/Provider/Provider.d.ts +2 -2
  359. package/extensions/forms/DataContext/Provider/Provider.js +46 -42
  360. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  361. package/extensions/forms/DataContext/Provider/ProviderDocs.js +1 -1
  362. package/extensions/forms/DataContext/Provider/ProviderDocs.js.map +1 -1
  363. package/extensions/forms/Field/Slider/Slider.js +13 -4
  364. package/extensions/forms/Field/Slider/Slider.js.map +1 -1
  365. package/extensions/forms/FieldBlock/FieldBlock.js +17 -13
  366. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  367. package/extensions/forms/Iterate/PushContainer/PushContainer.js +7 -2
  368. package/extensions/forms/Iterate/PushContainer/PushContainer.js.map +1 -1
  369. package/extensions/forms/Value/Provider/useValueProvider.d.ts +1 -0
  370. package/extensions/forms/Value/ValueDocs.js +5 -0
  371. package/extensions/forms/Value/ValueDocs.js.map +1 -1
  372. package/extensions/forms/ValueBlock/ValueBlock.d.ts +14 -1
  373. package/extensions/forms/ValueBlock/ValueBlock.js +40 -10
  374. package/extensions/forms/ValueBlock/ValueBlock.js.map +1 -1
  375. package/extensions/forms/ValueBlock/style/dnb-value-block.css +17 -0
  376. package/extensions/forms/ValueBlock/style/dnb-value-block.min.css +1 -1
  377. package/extensions/forms/ValueBlock/style/dnb-value-block.scss +24 -0
  378. package/extensions/forms/Wizard/Container/DisplaySteps.d.ts +7 -0
  379. package/extensions/forms/Wizard/Container/DisplaySteps.js +70 -0
  380. package/extensions/forms/Wizard/Container/DisplaySteps.js.map +1 -0
  381. package/extensions/forms/Wizard/Container/IterateOverSteps.d.ts +3 -0
  382. package/extensions/forms/Wizard/Container/IterateOverSteps.js +86 -0
  383. package/extensions/forms/Wizard/Container/IterateOverSteps.js.map +1 -0
  384. package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.d.ts +4 -0
  385. package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js +57 -0
  386. package/extensions/forms/Wizard/Container/PrerenderFieldPropsOfOtherSteps.js.map +1 -0
  387. package/extensions/forms/Wizard/Container/WizardContainer.d.ts +9 -1
  388. package/extensions/forms/Wizard/Container/WizardContainer.js +103 -207
  389. package/extensions/forms/Wizard/Container/WizardContainer.js.map +1 -1
  390. package/extensions/forms/Wizard/Container/WizardContainerDocs.js +10 -0
  391. package/extensions/forms/Wizard/Container/WizardContainerDocs.js.map +1 -1
  392. package/extensions/forms/Wizard/Context/WizardContext.d.ts +7 -23
  393. package/extensions/forms/Wizard/Context/WizardContext.js.map +1 -1
  394. package/extensions/forms/Wizard/Context/types.d.ts +35 -0
  395. package/extensions/forms/Wizard/Context/types.js +1 -0
  396. package/extensions/forms/Wizard/Context/types.js.map +1 -0
  397. package/extensions/forms/Wizard/EditButton/EditButton.d.ts +1 -1
  398. package/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
  399. package/extensions/forms/Wizard/Step/Step.d.ts +4 -0
  400. package/extensions/forms/Wizard/Step/Step.js +29 -10
  401. package/extensions/forms/Wizard/Step/Step.js.map +1 -1
  402. package/extensions/forms/Wizard/Step/StepContext.d.ts +7 -0
  403. package/extensions/forms/Wizard/Step/StepContext.js +4 -0
  404. package/extensions/forms/Wizard/Step/StepContext.js.map +1 -0
  405. package/extensions/forms/Wizard/Step/StepDocs.js +5 -0
  406. package/extensions/forms/Wizard/Step/StepDocs.js.map +1 -1
  407. package/extensions/forms/Wizard/hooks/useStep.d.ts +2 -1
  408. package/extensions/forms/Wizard/hooks/useStep.js.map +1 -1
  409. package/extensions/forms/constants/locales/en-GB.d.ts +1 -0
  410. package/extensions/forms/constants/locales/en-GB.js +2 -1
  411. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  412. package/extensions/forms/constants/locales/en-US.d.ts +1 -0
  413. package/extensions/forms/constants/locales/index.d.ts +2 -0
  414. package/extensions/forms/constants/locales/nb-NO.d.ts +1 -0
  415. package/extensions/forms/constants/locales/nb-NO.js +2 -1
  416. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  417. package/extensions/forms/hooks/useFieldProps.js +41 -23
  418. package/extensions/forms/hooks/useFieldProps.js.map +1 -1
  419. package/extensions/forms/style/dnb-forms.css +17 -0
  420. package/extensions/forms/style/dnb-forms.min.css +1 -1
  421. package/extensions/forms/types.d.ts +9 -1
  422. package/extensions/forms/types.js.map +1 -1
  423. package/fragments/drawer-list/DrawerList.d.ts +6 -1
  424. package/fragments/drawer-list/DrawerList.js +1 -0
  425. package/fragments/drawer-list/DrawerList.js.map +1 -1
  426. package/package.json +1 -1
  427. package/shared/Eufemia.d.ts +1 -1
  428. package/shared/Eufemia.js +2 -2
  429. package/shared/Eufemia.js.map +1 -1
  430. package/style/core/scopes.scss +1 -1
  431. package/style/dnb-ui-basis.css +1 -1
  432. package/style/dnb-ui-basis.min.css +1 -1
  433. package/style/dnb-ui-body.css +1 -1
  434. package/style/dnb-ui-body.min.css +1 -1
  435. package/style/dnb-ui-components.css +53 -4
  436. package/style/dnb-ui-components.min.css +2 -2
  437. package/style/dnb-ui-core.css +1 -1
  438. package/style/dnb-ui-core.min.css +1 -1
  439. package/style/dnb-ui-extensions.css +17 -0
  440. package/style/dnb-ui-extensions.min.css +1 -1
  441. package/style/dnb-ui-forms.css +17 -0
  442. package/style/dnb-ui-forms.min.css +1 -1
  443. package/style/themes/theme-eiendom/eiendom-theme-components.css +70 -4
  444. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  445. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +17 -0
  446. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  447. package/style/themes/theme-eiendom/eiendom-theme-forms.css +17 -0
  448. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  449. package/style/themes/theme-sbanken/sbanken-theme-components.css +70 -4
  450. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  451. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +17 -0
  452. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  453. package/style/themes/theme-sbanken/sbanken-theme-forms.css +17 -0
  454. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  455. package/style/themes/theme-ui/ui-theme-components.css +70 -4
  456. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  457. package/style/themes/theme-ui/ui-theme-extensions.css +17 -0
  458. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  459. package/style/themes/theme-ui/ui-theme-forms.css +17 -0
  460. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  461. package/umd/dnb-ui-basis.min.js +1 -1
  462. package/umd/dnb-ui-components.min.js +1 -1
  463. package/umd/dnb-ui-elements.min.js +1 -1
  464. package/umd/dnb-ui-extensions.min.js +1 -1
  465. package/umd/dnb-ui-lib.min.js +1 -1
@@ -3,10 +3,11 @@
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 = ["className", "style", "children", "element", "direction", "wrap", "sizeCount", "rowGap", "justify", "align", "alignSelf", "divider", "gap", "spacing", "breakpoints", "queries"];
6
+ const _excluded = ["spacing", "gap", "rowGap"],
7
+ _excluded2 = ["className", "style", "children", "element", "direction", "wrap", "sizeCount", "rowGap", "justify", "align", "alignSelf", "divider", "gap", "breakpoints", "queries"];
7
8
  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
9
  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
- import React, { Fragment, useCallback } from 'react';
10
+ import React, { Fragment, useMemo } from 'react';
10
11
  import classnames from 'classnames';
11
12
  import Space from '../space/Space';
12
13
  import { Hr } from '../../elements';
@@ -16,9 +17,21 @@ const propNames = ['direction', 'wrap', 'justify', 'align', 'divider', 'spacing'
16
17
  export function pickFlexContainerProps(props, defaults = {}, skip = []) {
17
18
  return _objectSpread(_objectSpread({}, defaults), Object.fromEntries(Object.entries(props !== null && props !== void 0 ? props : {}).filter(([key]) => propNames.includes(key) && !skip.includes(key))));
18
19
  }
20
+ function handleDeprecatedProps(_ref) {
21
+ let {
22
+ spacing,
23
+ gap,
24
+ rowGap
25
+ } = _ref,
26
+ rest = _objectWithoutProperties(_ref, _excluded);
27
+ return _objectSpread(_objectSpread({}, rest), {}, {
28
+ rowGap: rowGap === true ? undefined : rowGap,
29
+ gap: spacing !== null && spacing !== void 0 ? spacing : gap
30
+ });
31
+ }
19
32
  function FlexContainer(props) {
20
- var _ref;
21
- const {
33
+ const _handleDeprecatedProp = handleDeprecatedProps(props),
34
+ {
22
35
  className,
23
36
  style,
24
37
  children,
@@ -31,13 +44,15 @@ function FlexContainer(props) {
31
44
  align = 'flex-start',
32
45
  alignSelf,
33
46
  divider = 'space',
34
- gap,
35
- spacing: spacingProp,
47
+ gap = 'small',
36
48
  breakpoints,
37
49
  queries
38
- } = props,
39
- rest = _objectWithoutProperties(props, _excluded);
40
- const spacing = (_ref = spacingProp !== null && spacingProp !== void 0 ? spacingProp : gap) !== null && _ref !== void 0 ? _ref : 'small';
50
+ } = _handleDeprecatedProp,
51
+ rest = _objectWithoutProperties(_handleDeprecatedProp, _excluded2);
52
+ const spacing = useMemo(() => {
53
+ var _ref2;
54
+ return (_ref2 = direction === 'vertical' ? rowGap : undefined) !== null && _ref2 !== void 0 ? _ref2 : gap;
55
+ }, [direction, gap, rowGap]);
41
56
  const childrenArray = replaceRootFragment(wrapChildren(props, children));
42
57
  const hasHeading = childrenArray.some((child, i) => {
43
58
  const previousChild = childrenArray === null || childrenArray === void 0 ? void 0 : childrenArray[i - 1];
@@ -88,8 +103,8 @@ function FlexContainer(props) {
88
103
  if (isFirst && direction !== 'horizontal') {
89
104
  startSpacing = 0;
90
105
  } else {
91
- var _ref2, _getSpaceValue3;
92
- startSpacing = (_ref2 = (_getSpaceValue3 = getSpaceValue(start, child)) !== null && _getSpaceValue3 !== void 0 ? _getSpaceValue3 : getSpaceValue(end, previousChild)) !== null && _ref2 !== void 0 ? _ref2 : spacing;
106
+ var _ref3, _getSpaceValue3;
107
+ startSpacing = (_ref3 = (_getSpaceValue3 = getSpaceValue(start, child)) !== null && _getSpaceValue3 !== void 0 ? _getSpaceValue3 : getSpaceValue(end, previousChild)) !== null && _ref3 !== void 0 ? _ref3 : spacing;
93
108
  }
94
109
  if (React.isValidElement(previousChild) && (previousChild === null || previousChild === void 0 ? void 0 : (_previousChild$type = previousChild.type) === null || _previousChild$type === void 0 ? void 0 : _previousChild$type['_supportsSpacingProps']) === false) {
95
110
  startSpacing = 0;
@@ -107,21 +122,13 @@ function FlexContainer(props) {
107
122
  });
108
123
  });
109
124
  const n = 'dnb-flex-container';
110
- const getRowGapClass = useCallback(() => {
111
- if (rowGap === false) {
112
- return `${n}--row-gap-off`;
113
- }
114
- if (rowGap === true || !rowGap && wrap && direction === 'horizontal') {
115
- return `${n}--row-gap-small`;
116
- }
117
- if (hasSizeProp && spacing) {
118
- return `${n}--row-gap-${spacing}`;
119
- }
120
- if (rowGap) {
121
- return `${n}--row-gap-${rowGap}`;
125
+ const rowGapClass = useMemo(() => {
126
+ if (rowGap !== false && direction === 'horizontal') {
127
+ return `${n}--row-gap-${rowGap !== null && rowGap !== void 0 ? rowGap : 'small'}`;
122
128
  }
123
- }, [direction, hasSizeProp, rowGap, spacing, wrap]);
124
- const cn = classnames('dnb-flex-container', getRowGapClass(), className, direction && `${n}--direction-${direction}`, justify && `${n}--justify-${justify}`, align && `${n}--align-${align}`, alignSelf && `${n}--align-self-${alignSelf}`, spacing && `${n}--spacing-${spacing}`, wrap && `${n}--wrap`, hasSizeProp && `${n}--has-size`, divider && `${n}--divider-${divider}`);
129
+ return undefined;
130
+ }, [direction, rowGap]);
131
+ const cn = classnames('dnb-flex-container', rowGapClass, className, direction && `${n}--direction-${direction}`, justify && `${n}--justify-${justify}`, align && `${n}--align-${align}`, alignSelf && `${n}--align-self-${alignSelf}`, spacing && `${n}--spacing-${spacing}`, wrap && `${n}--wrap`, hasSizeProp && `${n}--has-size`, divider && `${n}--divider-${divider}`);
125
132
  return React.createElement(Space, _extends({
126
133
  element: element,
127
134
  className: cn,
@@ -1 +1 @@
1
- {"version":3,"file":"Container.js","names":["React","Fragment","useCallback","classnames","Space","Hr","useMedia","getSpaceValue","isHeadingElement","renderWithSpacing","propNames","pickFlexContainerProps","props","defaults","skip","_objectSpread","Object","fromEntries","entries","filter","key","includes","FlexContainer","_ref","className","style","children","element","direction","wrap","sizeCount","rowGap","justify","align","alignSelf","divider","gap","spacing","spacingProp","breakpoints","queries","rest","_objectWithoutProperties","_excluded","childrenArray","replaceRootFragment","wrapChildren","hasHeading","some","child","i","previousChild","hasSizeProp","_child$props","size","mediaKey","disabled","content","map","_previousChild$type","isFirst","isLast","length","isHeading","start","end","endSpacing","startSpacing","_getSpaceValue","_getSpaceValue2","spaceAboveLine","createElement","top","space","_ref2","_getSpaceValue3","isValidElement","type","n","getRowGapClass","cn","_extends","Children","toArray","cloneElement","firstChild","count","_firstChild$props","_supportsSpacingProps"],"sources":["../../../../src/components/flex/Container.tsx"],"sourcesContent":["import React, { Fragment, useCallback } from 'react'\nimport classnames from 'classnames'\nimport Space, { SpaceProps } from '../space/Space'\nimport { Hr } from '../../elements'\nimport useMedia from '../../shared/useMedia'\nimport {\n getSpaceValue,\n isHeadingElement,\n renderWithSpacing,\n} from './utils'\n\nimport type { MediaQueryBreakpoints } from '../../shared/MediaQueryUtils'\nimport type { SpaceType } from '../space/types'\nimport type { UseMediaQueries } from '../../shared/useMedia'\nimport type { End, Start } from './types'\n\ntype Gap =\n | false\n | 'xx-small'\n | 'x-small'\n | 'small'\n | 'medium'\n | 'large'\n | 'x-large'\n | 'xx-large'\n\nexport type BasicProps = {\n direction?: 'horizontal' | 'vertical'\n wrap?: boolean\n rowGap?: 'small' | 'medium' | 'large' | boolean\n sizeCount?: number\n justify?:\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'space-between'\n | 'space-around'\n | 'space-evenly'\n align?: 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline'\n /** For when used as a flex item in an outer container in addition to being a container: */\n alignSelf?: 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'\n /** When \"line-framed\" is used, a line will be shown between items and above the first and below the last item */\n divider?: 'space' | 'line' | 'line-framed'\n /** Spacing between items inside */\n gap?: Gap\n /** @deprecated Use `gap` instead */\n spacing?: Gap\n breakpoints?: MediaQueryBreakpoints\n queries?: UseMediaQueries\n}\n\nexport type Props = BasicProps &\n SpaceProps &\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'ref' | 'wrap' | 'value' | 'label' | 'title' | 'placeholder'\n >\n\nconst propNames: Array<keyof Props> = [\n 'direction',\n 'wrap',\n 'justify',\n 'align',\n 'divider',\n 'spacing',\n 'gap',\n]\n\nexport function pickFlexContainerProps<T extends Props>(\n props: T,\n defaults: Partial<Props> = {},\n skip: Array<keyof Props> = []\n): Omit<Props, 'children'> {\n return {\n ...defaults,\n ...Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n propNames.includes(key as keyof Props) &&\n !skip.includes(key as keyof Props)\n )\n ),\n }\n}\n\nfunction FlexContainer(props: Props) {\n const {\n className,\n style,\n children,\n element = 'div',\n direction = 'horizontal',\n wrap = true,\n sizeCount = 12,\n rowGap,\n justify = 'flex-start',\n align = 'flex-start',\n alignSelf,\n divider = 'space',\n gap,\n spacing: spacingProp,\n breakpoints,\n queries,\n ...rest\n } = props\n\n const spacing = spacingProp ?? gap ?? 'small'\n const childrenArray = replaceRootFragment(wrapChildren(props, children))\n const hasHeading = childrenArray.some((child, i) => {\n const previousChild = childrenArray?.[i - 1]\n return (\n isHeadingElement(child) || (i > 0 && isHeadingElement(previousChild))\n )\n })\n const hasSizeProp =\n !hasHeading &&\n direction === 'horizontal' &&\n childrenArray.some((child) => child['props']?.size)\n\n const { key: mediaKey } = useMedia({\n disabled: !hasSizeProp,\n breakpoints,\n queries,\n })\n\n const content = childrenArray.map((child, i) => {\n // Set spacing on child components by props (instead of CSS) to be able to dynamically override by props on each child. The default\n // is the spacing-props that controls space between children. Then override with props sent to the children, including both top\n // and bottom when th\n const isFirst = i === 0\n const isLast = i >= childrenArray.length - 1\n const previousChild = childrenArray?.[i - 1]\n const isHeading = hasHeading && isHeadingElement(previousChild)\n\n // Always set spacing between elements in the vertical layout on the top props, and 0 on bottom, to avoid\n // having to divide spacing between both with smaller values.\n const start: Start = direction === 'horizontal' ? 'left' : 'top'\n const end: End = direction === 'horizontal' ? 'right' : 'bottom'\n // const start: Start | End = direction === 'horizontal' ? 'right' : 'top'\n // const end: Start | End = direction === 'horizontal' ? 'left' : 'bottom'\n const endSpacing = 0\n let startSpacing = null\n\n if (\n // No line above heading\n !isHeading &&\n ((divider === 'line' && !isFirst) || divider === 'line-framed')\n ) {\n const spaceAboveLine = getSpaceValue(end, previousChild) ?? spacing\n startSpacing = (getSpaceValue(start, child) ?? spacing) as SpaceType\n\n return (\n <React.Fragment key={`element-${i}`}>\n <Hr\n top={!isFirst ? spaceAboveLine : 0}\n space={0}\n className=\"dnb-flex-container__hr\"\n />\n\n {renderWithSpacing(child, {\n space: { [start]: startSpacing, [end]: endSpacing },\n })}\n\n {divider === 'line-framed' && isLast && (\n <Hr\n top={spaceAboveLine}\n space={0}\n className=\"dnb-flex-container__hr\"\n />\n )}\n </React.Fragment>\n )\n }\n\n // No space above first element.\n if (isFirst && direction !== 'horizontal') {\n startSpacing = 0\n } else {\n // Since top space of current and bottom space of previous component is the same\n startSpacing =\n getSpaceValue(start, child) ??\n getSpaceValue(end, previousChild) ??\n spacing\n }\n\n if (\n React.isValidElement(previousChild) &&\n previousChild?.type?.['_supportsSpacingProps'] === false\n ) {\n startSpacing = 0\n }\n\n const space =\n direction === 'horizontal'\n ? { [start]: endSpacing, [end]: startSpacing }\n : { [start]: startSpacing, [end]: endSpacing }\n\n return renderWithSpacing(child, {\n key: child?.['key'] || `element-${i}`,\n space,\n })\n })\n\n const n = 'dnb-flex-container'\n const getRowGapClass = useCallback(() => {\n if (rowGap === false) {\n return `${n}--row-gap-off`\n }\n\n if (\n rowGap === true ||\n (!rowGap && wrap && direction === 'horizontal')\n ) {\n return `${n}--row-gap-small`\n }\n\n if (hasSizeProp && spacing) {\n return `${n}--row-gap-${spacing}`\n }\n\n if (rowGap) {\n return `${n}--row-gap-${rowGap}`\n }\n }, [direction, hasSizeProp, rowGap, spacing, wrap])\n\n const cn = classnames(\n 'dnb-flex-container',\n direction && `${n}--direction-${direction}`,\n justify && `${n}--justify-${justify}`,\n align && `${n}--align-${align}`,\n alignSelf && `${n}--align-self-${alignSelf}`,\n spacing && `${n}--spacing-${spacing}`,\n wrap && `${n}--wrap`,\n getRowGapClass(),\n hasSizeProp && `${n}--has-size`,\n divider && `${n}--divider-${divider}`,\n className\n )\n\n return (\n <Space\n element={element}\n className={cn}\n data-media-key={mediaKey}\n style={\n hasSizeProp\n ? ({ '--sizeCount': sizeCount, ...style } as React.CSSProperties)\n : style\n }\n {...rest}\n >\n {content}\n </Space>\n )\n}\n\nfunction wrapChildren(props: Props, children: React.ReactNode) {\n return React.Children.toArray(children).map((child) => {\n if (\n React.isValidElement(child) &&\n child.type['_supportsSpacingProps'] === 'children'\n ) {\n return React.cloneElement(\n child,\n child.props,\n <FlexContainer {...props}>{child.props.children}</FlexContainer>\n )\n }\n\n return child\n })\n}\n\nfunction replaceRootFragment(children) {\n const firstChild = children[0]\n if (\n React.Children.count(children) === 1 &&\n firstChild?.type === Fragment\n ) {\n return React.Children.toArray(firstChild?.props?.children)\n }\n return children\n}\n\nFlexContainer._supportsSpacingProps = true\n\nexport default FlexContainer\n"],"mappings":"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"}
1
+ {"version":3,"file":"Container.js","names":["React","Fragment","useMemo","classnames","Space","Hr","useMedia","getSpaceValue","isHeadingElement","renderWithSpacing","propNames","pickFlexContainerProps","props","defaults","skip","_objectSpread","Object","fromEntries","entries","filter","key","includes","handleDeprecatedProps","_ref","spacing","gap","rowGap","rest","_objectWithoutProperties","_excluded","undefined","FlexContainer","_handleDeprecatedProp","className","style","children","element","direction","wrap","sizeCount","justify","align","alignSelf","divider","breakpoints","queries","_excluded2","_ref2","childrenArray","replaceRootFragment","wrapChildren","hasHeading","some","child","i","previousChild","hasSizeProp","_child$props","size","mediaKey","disabled","content","map","_previousChild$type","isFirst","isLast","length","isHeading","start","end","endSpacing","startSpacing","_getSpaceValue","_getSpaceValue2","spaceAboveLine","createElement","top","space","_ref3","_getSpaceValue3","isValidElement","type","n","rowGapClass","cn","_extends","Children","toArray","cloneElement","firstChild","count","_firstChild$props","_supportsSpacingProps"],"sources":["../../../../src/components/flex/Container.tsx"],"sourcesContent":["import React, { Fragment, useMemo } from 'react'\nimport classnames from 'classnames'\nimport Space, { SpaceProps } from '../space/Space'\nimport { Hr } from '../../elements'\nimport useMedia from '../../shared/useMedia'\nimport {\n getSpaceValue,\n isHeadingElement,\n renderWithSpacing,\n} from './utils'\n\nimport type { MediaQueryBreakpoints } from '../../shared/MediaQueryUtils'\nimport type { SpaceType } from '../space/types'\nimport type { UseMediaQueries } from '../../shared/useMedia'\nimport type { End, Start } from './types'\n\ntype Gap =\n | false\n | 'xx-small'\n | 'x-small'\n | 'small'\n | 'medium'\n | 'large'\n | 'x-large'\n | 'xx-large'\n\nexport type BasicProps = {\n direction?: 'horizontal' | 'vertical'\n wrap?: boolean\n /** value `true` is deprecated, use `undefined` instead */\n rowGap?: Gap | true\n sizeCount?: number\n justify?:\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'space-between'\n | 'space-around'\n | 'space-evenly'\n align?: 'flex-start' | 'flex-end' | 'center' | 'stretch' | 'baseline'\n /** For when used as a flex item in an outer container in addition to being a container: */\n alignSelf?: 'flex-start' | 'flex-end' | 'center' | 'baseline' | 'stretch'\n /** When \"line-framed\" is used, a line will be shown between items and above the first and below the last item */\n divider?: 'space' | 'line' | 'line-framed'\n /** Spacing between items inside */\n gap?: Gap\n /** @deprecated Use `gap` instead */\n spacing?: Gap\n breakpoints?: MediaQueryBreakpoints\n queries?: UseMediaQueries\n}\n\nexport type Props = BasicProps &\n SpaceProps &\n Omit<\n React.HTMLAttributes<HTMLDivElement>,\n 'ref' | 'wrap' | 'value' | 'label' | 'title' | 'placeholder'\n >\n\nconst propNames: Array<keyof Props> = [\n 'direction',\n 'wrap',\n 'justify',\n 'align',\n 'divider',\n 'spacing',\n 'gap',\n]\n\nexport function pickFlexContainerProps<T extends Props>(\n props: T,\n defaults: Partial<Props> = {},\n skip: Array<keyof Props> = []\n): Omit<Props, 'children'> {\n return {\n ...defaults,\n ...Object.fromEntries(\n Object.entries(props ?? {}).filter(\n ([key]) =>\n propNames.includes(key as keyof Props) &&\n !skip.includes(key as keyof Props)\n )\n ),\n }\n}\nfunction handleDeprecatedProps({\n spacing,\n gap,\n rowGap,\n ...rest\n}: Props): Omit<Props, 'spacing'> & { rowGap?: Gap } {\n return {\n ...rest,\n rowGap: rowGap === true ? undefined : rowGap,\n gap: spacing ?? gap,\n }\n}\n\nfunction FlexContainer(props: Props) {\n const {\n className,\n style,\n children,\n element = 'div',\n direction = 'horizontal',\n wrap = true,\n sizeCount = 12,\n rowGap,\n justify = 'flex-start',\n align = 'flex-start',\n alignSelf,\n divider = 'space',\n gap = 'small',\n breakpoints,\n queries,\n ...rest\n } = handleDeprecatedProps(props)\n\n const spacing = useMemo(\n () => (direction === 'vertical' ? rowGap : undefined) ?? gap,\n [direction, gap, rowGap]\n )\n const childrenArray = replaceRootFragment(wrapChildren(props, children))\n const hasHeading = childrenArray.some((child, i) => {\n const previousChild = childrenArray?.[i - 1]\n return (\n isHeadingElement(child) || (i > 0 && isHeadingElement(previousChild))\n )\n })\n const hasSizeProp =\n !hasHeading &&\n direction === 'horizontal' &&\n childrenArray.some((child) => child['props']?.size)\n\n const { key: mediaKey } = useMedia({\n disabled: !hasSizeProp,\n breakpoints,\n queries,\n })\n\n const content = childrenArray.map((child, i) => {\n // Set spacing on child components by props (instead of CSS) to be able to dynamically override by props on each child. The default\n // is the spacing-props that controls space between children. Then override with props sent to the children, including both top\n // and bottom when th\n const isFirst = i === 0\n const isLast = i >= childrenArray.length - 1\n const previousChild = childrenArray?.[i - 1]\n const isHeading = hasHeading && isHeadingElement(previousChild)\n\n // Always set spacing between elements in the vertical layout on the top props, and 0 on bottom, to avoid\n // having to divide spacing between both with smaller values.\n const start: Start = direction === 'horizontal' ? 'left' : 'top'\n const end: End = direction === 'horizontal' ? 'right' : 'bottom'\n // const start: Start | End = direction === 'horizontal' ? 'right' : 'top'\n // const end: Start | End = direction === 'horizontal' ? 'left' : 'bottom'\n const endSpacing = 0\n let startSpacing = null\n\n if (\n // No line above heading\n !isHeading &&\n ((divider === 'line' && !isFirst) || divider === 'line-framed')\n ) {\n const spaceAboveLine = getSpaceValue(end, previousChild) ?? spacing\n startSpacing = (getSpaceValue(start, child) ?? spacing) as SpaceType\n\n return (\n <React.Fragment key={`element-${i}`}>\n <Hr\n top={!isFirst ? spaceAboveLine : 0}\n space={0}\n className=\"dnb-flex-container__hr\"\n />\n\n {renderWithSpacing(child, {\n space: { [start]: startSpacing, [end]: endSpacing },\n })}\n\n {divider === 'line-framed' && isLast && (\n <Hr\n top={spaceAboveLine}\n space={0}\n className=\"dnb-flex-container__hr\"\n />\n )}\n </React.Fragment>\n )\n }\n\n // No space above first element.\n if (isFirst && direction !== 'horizontal') {\n startSpacing = 0\n } else {\n // Since top space of current and bottom space of previous component is the same\n startSpacing =\n getSpaceValue(start, child) ??\n getSpaceValue(end, previousChild) ??\n spacing\n }\n\n if (\n React.isValidElement(previousChild) &&\n previousChild?.type?.['_supportsSpacingProps'] === false\n ) {\n startSpacing = 0\n }\n\n const space =\n direction === 'horizontal'\n ? { [start]: endSpacing, [end]: startSpacing }\n : { [start]: startSpacing, [end]: endSpacing }\n\n return renderWithSpacing(child, {\n key: child?.['key'] || `element-${i}`,\n space,\n })\n })\n\n const n = 'dnb-flex-container'\n const rowGapClass = useMemo(() => {\n if (rowGap !== false && direction === 'horizontal') {\n return `${n}--row-gap-${rowGap ?? 'small'}`\n }\n return undefined\n }, [direction, rowGap])\n\n const cn = classnames(\n 'dnb-flex-container',\n direction && `${n}--direction-${direction}`,\n justify && `${n}--justify-${justify}`,\n align && `${n}--align-${align}`,\n alignSelf && `${n}--align-self-${alignSelf}`,\n spacing && `${n}--spacing-${spacing}`,\n wrap && `${n}--wrap`,\n rowGapClass,\n hasSizeProp && `${n}--has-size`,\n divider && `${n}--divider-${divider}`,\n className\n )\n\n return (\n <Space\n element={element}\n className={cn}\n data-media-key={mediaKey}\n style={\n hasSizeProp\n ? ({ '--sizeCount': sizeCount, ...style } as React.CSSProperties)\n : style\n }\n {...rest}\n >\n {content}\n </Space>\n )\n}\n\nfunction wrapChildren(props: Props, children: React.ReactNode) {\n return React.Children.toArray(children).map((child) => {\n if (\n React.isValidElement(child) &&\n child.type['_supportsSpacingProps'] === 'children'\n ) {\n return React.cloneElement(\n child,\n child.props,\n <FlexContainer {...props}>{child.props.children}</FlexContainer>\n )\n }\n\n return child\n })\n}\n\nfunction replaceRootFragment(children) {\n const firstChild = children[0]\n if (\n React.Children.count(children) === 1 &&\n firstChild?.type === Fragment\n ) {\n return React.Children.toArray(firstChild?.props?.children)\n }\n return children\n}\n\nFlexContainer._supportsSpacingProps = true\n\nexport default FlexContainer\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { PropertiesTableProps } from '../../shared/types';
2
+ export declare const FlexContainerProperties: PropertiesTableProps;
@@ -0,0 +1,74 @@
1
+ export const FlexContainerProperties = {
2
+ direction: {
3
+ doc: 'Direction of sub components. Can be: `horizontal` or `vertical`.',
4
+ type: [`'horizontal'`, `'vertical'`],
5
+ defaultValue: `'horizontal'`,
6
+ status: 'optional'
7
+ },
8
+ wrap: {
9
+ doc: 'Define if we should wrap contents if there is not enough space.',
10
+ type: 'boolean',
11
+ defaultValue: 'true',
12
+ status: 'optional'
13
+ },
14
+ justify: {
15
+ doc: 'How to place sub components if there is space available in the container.',
16
+ type: [`'flex-start'`, `'flex-end'`, `'center'`, `'space-between'`, `'space-around'`, `'space-evenly'`],
17
+ defaultValue: `'flex-start'`,
18
+ status: 'optional'
19
+ },
20
+ align: {
21
+ doc: 'How to align sub components.',
22
+ type: [`'flex-start'`, `'flex-end'`, `'center'`, `'stretch'`, `'baseline'`],
23
+ defaultValue: `'flex-start'`,
24
+ status: 'optional'
25
+ },
26
+ divider: {
27
+ doc: 'How to separate sub components.',
28
+ type: [`'space'`, `'line'`, `'line-framed'`],
29
+ defaultValue: `'space'`,
30
+ status: 'optional'
31
+ },
32
+ sizeCount: {
33
+ doc: 'Define how many parts your layout should be divided in. Should be used in combination with a [Flex.Item](/uilib/layout/flex/item).',
34
+ type: 'number',
35
+ defaultValue: '12',
36
+ status: 'optional'
37
+ },
38
+ gap: {
39
+ doc: 'How much space between child items. Use `false` for no spacing. (If in vertical layout: if both `rowGap` and `gap` is set, `rowGap` will be used.)',
40
+ type: [`'xx-small'`, `'x-small'`, `'small'`, `'medium'`, `'large'`, `'x-large'`, `'xx-large'`, 'false'],
41
+ defaultValue: `'small'`,
42
+ status: 'optional'
43
+ },
44
+ rowGap: {
45
+ doc: 'How much space between rows. Use `false` for no row gap. (If in vertical layout: if both `rowGap` and `gap` is set, `rowGap` will be used.)',
46
+ type: [`'xx-small'`, `'x-small'`, `'small'`, `'medium'`, `'large'`, `'x-large'`, `'xx-large'`, 'false'],
47
+ defaultValue: `'small'`,
48
+ status: 'optional'
49
+ },
50
+ element: {
51
+ doc: 'Define the type of element.',
52
+ type: ['string', 'React.Element'],
53
+ defaultValue: `'div'`,
54
+ status: 'optional'
55
+ },
56
+ innerRef: {
57
+ doc: 'Provide a React.Ref to accessing the inner HTML element.',
58
+ type: 'React.Ref',
59
+ defaultValue: 'undefined',
60
+ status: 'optional'
61
+ },
62
+ '[Space](/uilib/layout/space/properties)': {
63
+ doc: 'Spacing properties like `top` or `bottom` are supported.',
64
+ type: 'Various',
65
+ status: 'optional'
66
+ },
67
+ spacing: {
68
+ doc: 'Deprecated, use `gap` instead. ~~How much space between sub components. Can be `false` for no spacing.~~',
69
+ type: [`'xx-small'`, `'x-small'`, `'small'`, `'medium'`, `'large'`, `'x-large'`, `'xx-large'`, 'false'],
70
+ defaultValue: `'small'`,
71
+ status: 'deprecated'
72
+ }
73
+ };
74
+ //# sourceMappingURL=ContainerDocs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContainerDocs.js","names":["FlexContainerProperties","direction","doc","type","defaultValue","status","wrap","justify","align","divider","sizeCount","gap","rowGap","element","innerRef","spacing"],"sources":["../../../../src/components/flex/ContainerDocs.tsx"],"sourcesContent":["import { PropertiesTableProps } from '../../shared/types'\n\nexport const FlexContainerProperties: PropertiesTableProps = {\n direction: {\n doc: 'Direction of sub components. Can be: `horizontal` or `vertical`.',\n type: [`'horizontal'`, `'vertical'`],\n defaultValue: `'horizontal'`,\n status: 'optional',\n },\n wrap: {\n doc: 'Define if we should wrap contents if there is not enough space.',\n type: 'boolean',\n defaultValue: 'true',\n status: 'optional',\n },\n justify: {\n doc: 'How to place sub components if there is space available in the container.',\n type: [\n `'flex-start'`,\n `'flex-end'`,\n `'center'`,\n `'space-between'`,\n `'space-around'`,\n `'space-evenly'`,\n ],\n defaultValue: `'flex-start'`,\n status: 'optional',\n },\n align: {\n doc: 'How to align sub components.',\n type: [\n `'flex-start'`,\n `'flex-end'`,\n `'center'`,\n `'stretch'`,\n `'baseline'`,\n ],\n defaultValue: `'flex-start'`,\n status: 'optional',\n },\n divider: {\n doc: 'How to separate sub components.',\n type: [`'space'`, `'line'`, `'line-framed'`],\n defaultValue: `'space'`,\n status: 'optional',\n },\n sizeCount: {\n doc: 'Define how many parts your layout should be divided in. Should be used in combination with a [Flex.Item](/uilib/layout/flex/item).',\n type: 'number',\n defaultValue: '12',\n status: 'optional',\n },\n gap: {\n doc: 'How much space between child items. Use `false` for no spacing. (If in vertical layout: if both `rowGap` and `gap` is set, `rowGap` will be used.)',\n type: [\n `'xx-small'`,\n `'x-small'`,\n `'small'`,\n `'medium'`,\n `'large'`,\n `'x-large'`,\n `'xx-large'`,\n 'false',\n ],\n defaultValue: `'small'`,\n status: 'optional',\n },\n rowGap: {\n doc: 'How much space between rows. Use `false` for no row gap. (If in vertical layout: if both `rowGap` and `gap` is set, `rowGap` will be used.)',\n type: [\n `'xx-small'`,\n `'x-small'`,\n `'small'`,\n `'medium'`,\n `'large'`,\n `'x-large'`,\n `'xx-large'`,\n 'false',\n ],\n defaultValue: `'small'`,\n status: 'optional',\n },\n element: {\n doc: 'Define the type of element.',\n type: ['string', 'React.Element'],\n defaultValue: `'div'`,\n status: 'optional',\n },\n innerRef: {\n doc: 'Provide a React.Ref to accessing the inner HTML element.',\n type: 'React.Ref',\n defaultValue: 'undefined',\n status: 'optional',\n },\n '[Space](/uilib/layout/space/properties)': {\n doc: 'Spacing properties like `top` or `bottom` are supported.',\n type: 'Various',\n status: 'optional',\n },\n spacing: {\n doc: 'Deprecated, use `gap` instead. ~~How much space between sub components. Can be `false` for no spacing.~~',\n type: [\n `'xx-small'`,\n `'x-small'`,\n `'small'`,\n `'medium'`,\n `'large'`,\n `'x-large'`,\n `'xx-large'`,\n 'false',\n ],\n defaultValue: `'small'`,\n status: 'deprecated',\n },\n}\n"],"mappings":"AAEA,OAAO,MAAMA,uBAA6C,GAAG;EAC3DC,SAAS,EAAE;IACTC,GAAG,EAAE,kEAAkE;IACvEC,IAAI,EAAE,CAAE,cAAa,EAAG,YAAW,CAAC;IACpCC,YAAY,EAAG,cAAa;IAC5BC,MAAM,EAAE;EACV,CAAC;EACDC,IAAI,EAAE;IACJJ,GAAG,EAAE,iEAAiE;IACtEC,IAAI,EAAE,SAAS;IACfC,YAAY,EAAE,MAAM;IACpBC,MAAM,EAAE;EACV,CAAC;EACDE,OAAO,EAAE;IACPL,GAAG,EAAE,2EAA2E;IAChFC,IAAI,EAAE,CACH,cAAa,EACb,YAAW,EACX,UAAS,EACT,iBAAgB,EAChB,gBAAe,EACf,gBAAe,CACjB;IACDC,YAAY,EAAG,cAAa;IAC5BC,MAAM,EAAE;EACV,CAAC;EACDG,KAAK,EAAE;IACLN,GAAG,EAAE,8BAA8B;IACnCC,IAAI,EAAE,CACH,cAAa,EACb,YAAW,EACX,UAAS,EACT,WAAU,EACV,YAAW,CACb;IACDC,YAAY,EAAG,cAAa;IAC5BC,MAAM,EAAE;EACV,CAAC;EACDI,OAAO,EAAE;IACPP,GAAG,EAAE,iCAAiC;IACtCC,IAAI,EAAE,CAAE,SAAQ,EAAG,QAAO,EAAG,eAAc,CAAC;IAC5CC,YAAY,EAAG,SAAQ;IACvBC,MAAM,EAAE;EACV,CAAC;EACDK,SAAS,EAAE;IACTR,GAAG,EAAE,oIAAoI;IACzIC,IAAI,EAAE,QAAQ;IACdC,YAAY,EAAE,IAAI;IAClBC,MAAM,EAAE;EACV,CAAC;EACDM,GAAG,EAAE;IACHT,GAAG,EAAE,oJAAoJ;IACzJC,IAAI,EAAE,CACH,YAAW,EACX,WAAU,EACV,SAAQ,EACR,UAAS,EACT,SAAQ,EACR,WAAU,EACV,YAAW,EACZ,OAAO,CACR;IACDC,YAAY,EAAG,SAAQ;IACvBC,MAAM,EAAE;EACV,CAAC;EACDO,MAAM,EAAE;IACNV,GAAG,EAAE,6IAA6I;IAClJC,IAAI,EAAE,CACH,YAAW,EACX,WAAU,EACV,SAAQ,EACR,UAAS,EACT,SAAQ,EACR,WAAU,EACV,YAAW,EACZ,OAAO,CACR;IACDC,YAAY,EAAG,SAAQ;IACvBC,MAAM,EAAE;EACV,CAAC;EACDQ,OAAO,EAAE;IACPX,GAAG,EAAE,6BAA6B;IAClCC,IAAI,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;IACjCC,YAAY,EAAG,OAAM;IACrBC,MAAM,EAAE;EACV,CAAC;EACDS,QAAQ,EAAE;IACRZ,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,WAAW;IACjBC,YAAY,EAAE,WAAW;IACzBC,MAAM,EAAE;EACV,CAAC;EACD,yCAAyC,EAAE;IACzCH,GAAG,EAAE,0DAA0D;IAC/DC,IAAI,EAAE,SAAS;IACfE,MAAM,EAAE;EACV,CAAC;EACDU,OAAO,EAAE;IACPb,GAAG,EAAE,0GAA0G;IAC/GC,IAAI,EAAE,CACH,YAAW,EACX,WAAU,EACV,SAAQ,EACR,UAAS,EACT,SAAQ,EACR,WAAU,EACV,YAAW,EACZ,OAAO,CACR;IACDC,YAAY,EAAG,SAAQ;IACvBC,MAAM,EAAE;EACV;AACF,CAAC"}
@@ -1,10 +1,12 @@
1
1
  .dnb-flex-container {
2
+ --gap: 0;
3
+ --horizontal-gap: 0;
2
4
  display: flex;
3
- row-gap: var(--gap, 0);
5
+ row-gap: var(--gap);
4
6
  }
5
7
  .dnb-flex-container--direction-horizontal {
6
8
  flex-direction: row;
7
- margin-right: calc(var(--gap) * -1);
9
+ margin-right: calc(var(--horizontal-gap) * -1);
8
10
  }
9
11
  .dnb-flex-container--direction-vertical {
10
12
  flex-direction: column;
@@ -60,8 +62,11 @@
60
62
  .dnb-flex-container--wrap {
61
63
  flex-wrap: wrap;
62
64
  }
63
- .dnb-flex-container--row-gap-off {
64
- --gap: 0;
65
+ .dnb-flex-container--row-gap-xx-small {
66
+ --gap: var(--spacing-xx-small);
67
+ }
68
+ .dnb-flex-container--row-gap-x-small {
69
+ --gap: var(--spacing-x-small);
65
70
  }
66
71
  .dnb-flex-container--row-gap-small {
67
72
  --gap: var(--spacing-small);
@@ -72,6 +77,33 @@
72
77
  .dnb-flex-container--row-gap-large {
73
78
  --gap: var(--spacing-large);
74
79
  }
80
+ .dnb-flex-container--row-gap-x-large {
81
+ --gap: var(--spacing-x-large);
82
+ }
83
+ .dnb-flex-container--row-gap-xx-large {
84
+ --gap: var(--spacing-xx-large);
85
+ }
86
+ .dnb-flex-container--spacing-xx-small {
87
+ --horizontal-gap: var(--spacing-xx-small);
88
+ }
89
+ .dnb-flex-container--spacing-x-small {
90
+ --horizontal-gap: var(--spacing-x-small);
91
+ }
92
+ .dnb-flex-container--spacing-small {
93
+ --horizontal-gap: var(--spacing-small);
94
+ }
95
+ .dnb-flex-container--spacing-medium {
96
+ --horizontal-gap: var(--spacing-medium);
97
+ }
98
+ .dnb-flex-container--spacing-large {
99
+ --horizontal-gap: var(--spacing-large);
100
+ }
101
+ .dnb-flex-container--spacing-x-large {
102
+ --horizontal-gap: var(--spacing-x-large);
103
+ }
104
+ .dnb-flex-container--spacing-xx-large {
105
+ --horizontal-gap: var(--spacing-xx-large);
106
+ }
75
107
  .dnb-flex-container__hr.dnb-hr {
76
108
  width: 100%;
77
109
  color: var(--color-black-8);
@@ -1 +1 @@
1
- .dnb-flex-container{display:flex;row-gap:var(--gap,0)}.dnb-flex-container--direction-horizontal{flex-direction:row;margin-right:calc(var(--gap)*-1)}.dnb-flex-container--direction-vertical{flex-direction:column}.dnb-flex-container--justify-flex-start{justify-content:flex-start}.dnb-flex-container--justify-flex-end{justify-content:flex-end}.dnb-flex-container--justify-center{justify-content:center}.dnb-flex-container--justify-space-between{justify-content:space-between}.dnb-flex-container--justify-space-around{justify-content:space-around}.dnb-flex-container--justify-space-evenly{justify-content:space-evenly}.dnb-flex-container--align-flex-start{align-items:flex-start}.dnb-flex-container--align-flex-end{align-items:flex-end}.dnb-flex-container--align-center{align-items:center}.dnb-flex-container--align-stretch{align-items:stretch}.dnb-flex-container--align-baseline{align-items:baseline}.dnb-flex-container--align-self-flex-start{align-self:flex-start}.dnb-flex-container--align-self-flex-end{align-self:flex-end}.dnb-flex-container--align-self-center{align-self:center}.dnb-flex-container--align-self-baseline{align-self:baseline}.dnb-flex-container--align-self-stretch{align-self:stretch}.dnb-flex-container--wrap{flex-wrap:wrap}.dnb-flex-container--row-gap-off{--gap:0}.dnb-flex-container--row-gap-small{--gap:var(--spacing-small)}.dnb-flex-container--row-gap-medium{--gap:var(--spacing-medium)}.dnb-flex-container--row-gap-large{--gap:var(--spacing-large)}.dnb-flex-container__hr.dnb-hr{color:var(--color-black-8);width:100%}.dnb-flex-item--grow{flex-grow:1}.dnb-flex-item--shrink{flex-shrink:1}.dnb-flex-item--align-self-flex-start{align-self:flex-start}.dnb-flex-item--align-self-flex-end{align-self:flex-end}.dnb-flex-item--align-self-center{align-self:center}.dnb-flex-item--align-self-baseline{align-self:baseline}.dnb-flex-item--align-self-stretch{align-self:stretch}.dnb-flex-item--responsive{--sizeCount--default:12;--size--default:var(--small);--flex-basis:calc(100%/var(--sizeCount, var(--sizeCount--default))*var(--size, var(--size--default)));flex-basis:var(--flex-basis);flex-grow:0;max-width:var(--flex-basis)}.dnb-flex-container[data-media-key=small] .dnb-flex-item--responsive{--size:var(--small,var(--medium))}.dnb-flex-container[data-media-key=medium] .dnb-flex-item--responsive{--size:var(--medium,var(--large))}.dnb-flex-container[data-media-key=large] .dnb-flex-item--responsive{--size:var(--large,var(--medium))}.dnb-flex-stack+.dnb-flex-stack{margin-top:var(--spacing-small)}.dnb-flex-stack>.dnb-button{align-self:flex-start}
1
+ .dnb-flex-container{--gap:0;--horizontal-gap:0;display:flex;row-gap:var(--gap)}.dnb-flex-container--direction-horizontal{flex-direction:row;margin-right:calc(var(--horizontal-gap)*-1)}.dnb-flex-container--direction-vertical{flex-direction:column}.dnb-flex-container--justify-flex-start{justify-content:flex-start}.dnb-flex-container--justify-flex-end{justify-content:flex-end}.dnb-flex-container--justify-center{justify-content:center}.dnb-flex-container--justify-space-between{justify-content:space-between}.dnb-flex-container--justify-space-around{justify-content:space-around}.dnb-flex-container--justify-space-evenly{justify-content:space-evenly}.dnb-flex-container--align-flex-start{align-items:flex-start}.dnb-flex-container--align-flex-end{align-items:flex-end}.dnb-flex-container--align-center{align-items:center}.dnb-flex-container--align-stretch{align-items:stretch}.dnb-flex-container--align-baseline{align-items:baseline}.dnb-flex-container--align-self-flex-start{align-self:flex-start}.dnb-flex-container--align-self-flex-end{align-self:flex-end}.dnb-flex-container--align-self-center{align-self:center}.dnb-flex-container--align-self-baseline{align-self:baseline}.dnb-flex-container--align-self-stretch{align-self:stretch}.dnb-flex-container--wrap{flex-wrap:wrap}.dnb-flex-container--row-gap-xx-small{--gap:var(--spacing-xx-small)}.dnb-flex-container--row-gap-x-small{--gap:var(--spacing-x-small)}.dnb-flex-container--row-gap-small{--gap:var(--spacing-small)}.dnb-flex-container--row-gap-medium{--gap:var(--spacing-medium)}.dnb-flex-container--row-gap-large{--gap:var(--spacing-large)}.dnb-flex-container--row-gap-x-large{--gap:var(--spacing-x-large)}.dnb-flex-container--row-gap-xx-large{--gap:var(--spacing-xx-large)}.dnb-flex-container--spacing-xx-small{--horizontal-gap:var(--spacing-xx-small)}.dnb-flex-container--spacing-x-small{--horizontal-gap:var(--spacing-x-small)}.dnb-flex-container--spacing-small{--horizontal-gap:var(--spacing-small)}.dnb-flex-container--spacing-medium{--horizontal-gap:var(--spacing-medium)}.dnb-flex-container--spacing-large{--horizontal-gap:var(--spacing-large)}.dnb-flex-container--spacing-x-large{--horizontal-gap:var(--spacing-x-large)}.dnb-flex-container--spacing-xx-large{--horizontal-gap:var(--spacing-xx-large)}.dnb-flex-container__hr.dnb-hr{color:var(--color-black-8);width:100%}.dnb-flex-item--grow{flex-grow:1}.dnb-flex-item--shrink{flex-shrink:1}.dnb-flex-item--align-self-flex-start{align-self:flex-start}.dnb-flex-item--align-self-flex-end{align-self:flex-end}.dnb-flex-item--align-self-center{align-self:center}.dnb-flex-item--align-self-baseline{align-self:baseline}.dnb-flex-item--align-self-stretch{align-self:stretch}.dnb-flex-item--responsive{--sizeCount--default:12;--size--default:var(--small);--flex-basis:calc(100%/var(--sizeCount, var(--sizeCount--default))*var(--size, var(--size--default)));flex-basis:var(--flex-basis);flex-grow:0;max-width:var(--flex-basis)}.dnb-flex-container[data-media-key=small] .dnb-flex-item--responsive{--size:var(--small,var(--medium))}.dnb-flex-container[data-media-key=medium] .dnb-flex-item--responsive{--size:var(--medium,var(--large))}.dnb-flex-container[data-media-key=large] .dnb-flex-item--responsive{--size:var(--large,var(--medium))}.dnb-flex-stack+.dnb-flex-stack{margin-top:var(--spacing-small)}.dnb-flex-stack>.dnb-button{align-self:flex-start}
@@ -1,11 +1,13 @@
1
1
  .dnb-flex-container {
2
+ --gap: 0;
3
+ --horizontal-gap: 0;
2
4
  display: flex;
3
- row-gap: var(--gap, 0);
5
+ row-gap: var(--gap);
4
6
 
5
7
  &--direction {
6
8
  &-horizontal {
7
9
  flex-direction: row;
8
- margin-right: calc(var(--gap) * -1);
10
+ margin-right: calc(var(--horizontal-gap) * -1);
9
11
  }
10
12
 
11
13
  &-vertical {
@@ -88,8 +90,11 @@
88
90
  flex-wrap: wrap;
89
91
  }
90
92
 
91
- &--row-gap-off {
92
- --gap: 0;
93
+ &--row-gap-xx-small {
94
+ --gap: var(--spacing-xx-small);
95
+ }
96
+ &--row-gap-x-small {
97
+ --gap: var(--spacing-x-small);
93
98
  }
94
99
  &--row-gap-small {
95
100
  --gap: var(--spacing-small);
@@ -100,6 +105,36 @@
100
105
  &--row-gap-large {
101
106
  --gap: var(--spacing-large);
102
107
  }
108
+ &--row-gap-x-large {
109
+ --gap: var(--spacing-x-large);
110
+ }
111
+ &--row-gap-xx-large {
112
+ --gap: var(--spacing-xx-large);
113
+ }
114
+
115
+ &--spacing {
116
+ &-xx-small {
117
+ --horizontal-gap: var(--spacing-xx-small);
118
+ }
119
+ &-x-small {
120
+ --horizontal-gap: var(--spacing-x-small);
121
+ }
122
+ &-small {
123
+ --horizontal-gap: var(--spacing-small);
124
+ }
125
+ &-medium {
126
+ --horizontal-gap: var(--spacing-medium);
127
+ }
128
+ &-large {
129
+ --horizontal-gap: var(--spacing-large);
130
+ }
131
+ &-x-large {
132
+ --horizontal-gap: var(--spacing-x-large);
133
+ }
134
+ &-xx-large {
135
+ --horizontal-gap: var(--spacing-xx-large);
136
+ }
137
+ }
103
138
 
104
139
  &__hr.dnb-hr {
105
140
  width: 100%;
@@ -15,11 +15,16 @@ export type HelpProps = {
15
15
  export type HelpButtonInlineProps = HelpButtonProps & {
16
16
  contentId?: string;
17
17
  help?: HelpProps;
18
+ /**
19
+ * If set to `true`, the content will get focus when the help content is opened.
20
+ */
21
+ focusWhenOpen?: boolean;
18
22
  };
19
23
  export type HelpButtonInlineSharedStateDataProps = {
20
24
  isOpen: boolean;
21
25
  isUserIntent?: boolean;
22
26
  buttonRef?: React.RefObject<HTMLButtonElement>;
27
+ focusWhenOpen?: boolean;
23
28
  };
24
29
  declare function HelpButtonInline(props: HelpButtonInlineProps): import("react/jsx-runtime").JSX.Element;
25
30
  declare namespace HelpButtonInline {
@@ -33,6 +38,7 @@ export type HelpButtonInlineContentProps = SpacingProps & {
33
38
  help?: HelpProps;
34
39
  breakout?: boolean;
35
40
  outset?: boolean;
41
+ focusWhenOpen?: boolean;
36
42
  };
37
43
  export declare function HelpButtonInlineContent(props: HelpButtonInlineContentProps): import("react/jsx-runtime").JSX.Element;
38
44
  export declare namespace HelpButtonInlineContent {
@@ -3,8 +3,8 @@
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
5
  var _QuestionIcon, _CloseIcon;
6
- const _excluded = ["contentId", "size", "help", "className", "children"],
7
- _excluded2 = ["contentId", "className", "children", "help", "breakout", "outset"];
6
+ const _excluded = ["contentId", "size", "help", "focusWhenOpen", "className", "children"],
7
+ _excluded2 = ["contentId", "className", "children", "help", "breakout", "outset", "focusWhenOpen"];
8
8
  import React, { useCallback, useContext, useEffect, useRef } from 'react';
9
9
  import classnames from 'classnames';
10
10
  import HelpButtonInstance from './HelpButtonInstance';
@@ -24,6 +24,7 @@ export default function HelpButtonInline(props) {
24
24
  contentId,
25
25
  size,
26
26
  help,
27
+ focusWhenOpen,
27
28
  className,
28
29
  children
29
30
  } = props,
@@ -41,31 +42,54 @@ export default function HelpButtonInline(props) {
41
42
  } = data || {};
42
43
  const wasOpenRef = useRef(undefined);
43
44
  const buttonRef = useRef(null);
44
- const onClickHandler = useCallback(({
45
- event
46
- }) => {
47
- event.preventDefault();
45
+ const toggleOpen = useCallback(() => {
48
46
  update({
49
47
  isOpen: !isOpen,
50
48
  isUserIntent: !isOpen,
51
- buttonRef
49
+ buttonRef,
50
+ focusWhenOpen
52
51
  });
53
52
  wasOpenRef.current = !isOpen;
54
- }, [isOpen, update]);
53
+ }, [focusWhenOpen, isOpen, update]);
54
+ const onClickHandler = useCallback(({
55
+ event
56
+ }) => {
57
+ event.preventDefault();
58
+ toggleOpen();
59
+ }, [toggleOpen]);
60
+ const onKeyDownHandler = useCallback(event => {
61
+ if (event.currentTarget === event.target) {
62
+ switch (event.key.trim() || event.code) {
63
+ case 'Escape':
64
+ if (isOpen) {
65
+ event.preventDefault();
66
+ window.requestAnimationFrame(() => {
67
+ toggleOpen();
68
+ });
69
+ }
70
+ break;
71
+ }
72
+ }
73
+ }, [isOpen, toggleOpen]);
74
+ const title = convertJsxToString(help === null || help === void 0 ? void 0 : help.title);
55
75
  return React.createElement(React.Fragment, null, React.createElement(HelpButtonInstance, _extends({
56
76
  bounding: true,
57
77
  size: size !== null && size !== void 0 ? size : 'small',
58
78
  icon: HelpButtonIcon,
59
- title: !isOpen && !wasOpenRef.current ? convertJsxToString(help === null || help === void 0 ? void 0 : help.title) : undefined
79
+ title: !isOpen && !wasOpenRef.current ? title : undefined
60
80
  }, rest, {
61
81
  id: controlId,
62
82
  className: classnames('dnb-help-button__inline', className, isOpen && 'dnb-help-button__inline--open', isUserIntent && 'dnb-help-button__inline--user-intent', typeof wasOpenRef.current === 'boolean' && 'dnb-help-button__inline--was-open'),
63
83
  "aria-controls": `${controlId}-content`,
84
+ "aria-expanded": isOpen,
85
+ "aria-label": title,
64
86
  on_click: onClickHandler,
87
+ onKeyDown: onKeyDownHandler,
65
88
  innerRef: buttonRef
66
89
  })), !contentId && React.createElement(HelpButtonInlineContent, {
67
90
  contentId: controlId,
68
- help: help
91
+ help: help,
92
+ focusWhenOpen: focusWhenOpen
69
93
  }, children));
70
94
  }
71
95
  export function HelpButtonInlineContent(props) {
@@ -76,7 +100,8 @@ export function HelpButtonInlineContent(props) {
76
100
  children,
77
101
  help: helpProp,
78
102
  breakout = true,
79
- outset = true
103
+ outset = true,
104
+ focusWhenOpen: focusWhenOpenProp
80
105
  } = props,
81
106
  rest = _objectWithoutProperties(props, _excluded2);
82
107
  const {
@@ -85,6 +110,7 @@ export function HelpButtonInlineContent(props) {
85
110
  } = useSharedState(contentId);
86
111
  const {
87
112
  isOpen,
113
+ focusWhenOpen = focusWhenOpenProp,
88
114
  isUserIntent,
89
115
  buttonRef
90
116
  } = data || {};
@@ -101,7 +127,7 @@ export function HelpButtonInlineContent(props) {
101
127
  const breakoutFromLayout = Boolean(cardContext) && breakout && breakoutProp;
102
128
  const outsetFromLayout = outset && outsetProp;
103
129
  useEffect(() => {
104
- if (isOpen && isUserIntent) {
130
+ if (isOpen && isUserIntent && focusWhenOpen) {
105
131
  window.requestAnimationFrame(() => {
106
132
  var _innerRef$current;
107
133
  (_innerRef$current = innerRef.current) === null || _innerRef$current === void 0 ? void 0 : _innerRef$current.focus({
@@ -109,7 +135,7 @@ export function HelpButtonInlineContent(props) {
109
135
  });
110
136
  });
111
137
  }
112
- }, [isOpen, isUserIntent]);
138
+ }, [focusWhenOpen, isOpen, isUserIntent]);
113
139
  const onClose = useCallback(() => {
114
140
  update({
115
141
  isOpen: false,
@@ -140,16 +166,22 @@ export function HelpButtonInlineContent(props) {
140
166
  onClose: onClose
141
167
  }, content, children);
142
168
  }
169
+ const focusParams = focusWhenOpen ? {
170
+ 'aria-label': convertJsxToString(title),
171
+ className: 'dnb-no-focus',
172
+ tabIndex: -1,
173
+ onKeyDown
174
+ } : {
175
+ 'aria-live': 'polite',
176
+ 'aria-atomic': 'true'
177
+ };
143
178
  return React.createElement(HeightAnimation, {
144
179
  className: classnames('dnb-help-button__content', className),
145
180
  open: (_ref = isOpen !== null && isOpen !== void 0 ? isOpen : open) !== null && _ref !== void 0 ? _ref : false
146
181
  }, React.createElement(Section, _extends({
147
- id: `${contentId}-content`,
148
- "aria-label": convertJsxToString(title),
149
- className: "dnb-no-focus",
150
- tabIndex: -1,
182
+ id: `${contentId}-content`
183
+ }, focusParams, {
151
184
  innerRef: innerRef,
152
- onKeyDown: onKeyDown,
153
185
  outset: outsetFromLayout,
154
186
  breakout: breakoutFromLayout,
155
187
  roundedCorner: !breakoutFromLayout,