@dnb/eufemia 10.21.0 → 10.22.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 (468) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/cjs/components/aria-live/useAriaLive.d.ts +1 -1
  3. package/cjs/components/breadcrumb/Breadcrumb.d.ts +2 -2
  4. package/cjs/components/breadcrumb/Breadcrumb.js +3 -3
  5. package/cjs/components/breadcrumb/Breadcrumb.js.map +1 -1
  6. package/cjs/components/breadcrumb/style/dnb-breadcrumb.css +7 -2
  7. package/cjs/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  8. package/cjs/components/breadcrumb/style/dnb-breadcrumb.scss +10 -2
  9. package/cjs/components/button/Button.js +2 -2
  10. package/cjs/components/button/Button.js.map +1 -1
  11. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.css +23 -11
  12. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.min.css +3 -3
  13. package/cjs/components/button/style/themes/dnb-button-theme-sbanken.scss +30 -14
  14. package/cjs/components/card/style/dnb-card.css +11 -2
  15. package/cjs/components/card/style/dnb-card.min.css +1 -1
  16. package/cjs/components/card/style/dnb-card.scss +12 -2
  17. package/cjs/components/form-label/style/dnb-form-label.css +4 -1
  18. package/cjs/components/form-label/style/dnb-form-label.min.css +1 -1
  19. package/cjs/components/form-label/style/dnb-form-label.scss +5 -2
  20. package/cjs/components/global-status/GlobalStatus.d.ts +1 -1
  21. package/cjs/components/global-status/GlobalStatusProvider.d.ts +1 -1
  22. package/cjs/components/height-animation/HeightAnimationInstance.d.ts +5 -6
  23. package/cjs/components/height-animation/HeightAnimationInstance.js +12 -12
  24. package/cjs/components/height-animation/HeightAnimationInstance.js.map +1 -1
  25. package/cjs/components/height-animation/useHeightAnimation.js +11 -10
  26. package/cjs/components/height-animation/useHeightAnimation.js.map +1 -1
  27. package/cjs/components/input/Input.d.ts +1 -1
  28. package/cjs/components/pagination/InfinityScroller.d.ts +1 -1
  29. package/cjs/components/progress-indicator/ProgressIndicator.js +5 -7
  30. package/cjs/components/progress-indicator/ProgressIndicator.js.map +1 -1
  31. package/cjs/components/progress-indicator/ProgressIndicatorCircular.js +1 -1
  32. package/cjs/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  33. package/cjs/components/progress-indicator/ProgressIndicatorLinear.js +4 -4
  34. package/cjs/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  35. package/cjs/components/progress-indicator/style/dnb-progress-indicator.css +5 -2
  36. package/cjs/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  37. package/cjs/components/progress-indicator/style/dnb-progress-indicator.scss +5 -2
  38. package/cjs/components/space/SpacingHelper.d.ts +5 -5
  39. package/cjs/components/table/Table.js +2 -2
  40. package/cjs/components/table/Table.js.map +1 -1
  41. package/cjs/components/table/TableAccordion.js +40 -57
  42. package/cjs/components/table/TableAccordion.js.map +1 -1
  43. package/cjs/components/table/TableAccordionTd.d.ts +9 -0
  44. package/cjs/components/table/{TableAccordionContent.js → TableAccordionTd.js} +16 -54
  45. package/cjs/components/table/TableAccordionTd.js.map +1 -0
  46. package/cjs/components/table/TableAccordionTr.d.ts +13 -0
  47. package/cjs/components/table/TableAccordionTr.js +61 -0
  48. package/cjs/components/table/TableAccordionTr.js.map +1 -0
  49. package/cjs/components/table/TableContext.d.ts +2 -2
  50. package/cjs/components/table/TableContext.js +4 -3
  51. package/cjs/components/table/TableContext.js.map +1 -1
  52. package/cjs/components/table/TableTd.d.ts +2 -2
  53. package/cjs/components/table/TableTd.js +2 -2
  54. package/cjs/components/table/TableTd.js.map +1 -1
  55. package/cjs/components/table/TableTr.d.ts +6 -1
  56. package/cjs/components/table/TableTr.js +10 -5
  57. package/cjs/components/table/TableTr.js.map +1 -1
  58. package/cjs/components/table/style/dnb-table.css +84 -64
  59. package/cjs/components/table/style/dnb-table.min.css +1 -1
  60. package/cjs/components/table/style/dnb-table.scss +1 -1
  61. package/cjs/components/table/style/table-accordion.scss +62 -44
  62. package/cjs/components/table/style/table-td.scss +1 -1
  63. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.css +10 -0
  64. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.min.css +3 -1
  65. package/cjs/components/table/style/themes/dnb-table-theme-sbanken.scss +14 -0
  66. package/cjs/components/table/useTableAnimationHandler.d.ts +20 -0
  67. package/cjs/components/table/useTableAnimationHandler.js +73 -0
  68. package/cjs/components/table/useTableAnimationHandler.js.map +1 -0
  69. package/cjs/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +1 -0
  70. package/cjs/extensions/forms/DataContext/Context.d.ts +1 -3
  71. package/cjs/extensions/forms/DataContext/Context.js.map +1 -1
  72. package/cjs/extensions/forms/DataContext/Provider/Provider.d.ts +1 -2
  73. package/cjs/extensions/forms/DataContext/Provider/Provider.js +1 -5
  74. package/cjs/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  75. package/cjs/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  76. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -2
  77. package/cjs/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  78. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.css +2 -2
  79. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  80. package/cjs/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -0
  81. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +6 -0
  82. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  83. package/cjs/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -2
  84. package/cjs/extensions/forms/Form/data-context/useData.d.ts +1 -1
  85. package/cjs/extensions/forms/Form/data-context/useData.js +1 -17
  86. package/cjs/extensions/forms/Form/data-context/useData.js.map +1 -1
  87. package/cjs/extensions/forms/Form/data-context/useError.d.ts +2 -1
  88. package/cjs/extensions/forms/Form/data-context/useError.js +4 -2
  89. package/cjs/extensions/forms/Form/data-context/useError.js.map +1 -1
  90. package/cjs/extensions/forms/Value/Number/Number.d.ts +2 -2
  91. package/cjs/extensions/forms/Value/Number/Number.js +1 -1
  92. package/cjs/extensions/forms/Value/Number/Number.js.map +1 -1
  93. package/cjs/extensions/forms/hooks/useDataValue.d.ts +4 -12
  94. package/cjs/extensions/forms/hooks/useDataValue.js +3 -3
  95. package/cjs/extensions/forms/hooks/useDataValue.js.map +1 -1
  96. package/cjs/extensions/forms/hooks/useMounted.d.ts +2 -0
  97. package/cjs/extensions/forms/hooks/useMounted.js +19 -0
  98. package/cjs/extensions/forms/hooks/useMounted.js.map +1 -0
  99. package/cjs/extensions/forms/style/dnb-forms.css +8 -2
  100. package/cjs/extensions/forms/style/dnb-forms.min.css +1 -1
  101. package/cjs/extensions/forms/types.d.ts +2 -0
  102. package/cjs/extensions/forms/types.js.map +1 -1
  103. package/cjs/extensions/payment-card/utils/CardDesigns.d.ts +96 -96
  104. package/cjs/fragments/drawer-list/DrawerListHelpers.d.ts +52 -52
  105. package/cjs/shared/Eufemia.d.ts +1 -1
  106. package/cjs/shared/Eufemia.js +2 -2
  107. package/cjs/shared/Eufemia.js.map +1 -1
  108. package/cjs/shared/Theme.d.ts +7 -1
  109. package/cjs/shared/Theme.js +20 -7
  110. package/cjs/shared/Theme.js.map +1 -1
  111. package/cjs/shared/helpers/debounce.d.ts +37 -0
  112. package/cjs/shared/helpers/debounce.js +92 -0
  113. package/cjs/shared/helpers/debounce.js.map +1 -0
  114. package/cjs/shared/helpers/useSharedState.d.ts +1 -0
  115. package/cjs/shared/helpers/useSharedState.js +52 -20
  116. package/cjs/shared/helpers/useSharedState.js.map +1 -1
  117. package/cjs/shared/helpers/withCamelCaseProps.d.ts +7 -0
  118. package/cjs/shared/helpers/withCamelCaseProps.js.map +1 -1
  119. package/cjs/shared/helpers.d.ts +1 -25
  120. package/cjs/shared/helpers.js +15 -37
  121. package/cjs/shared/helpers.js.map +1 -1
  122. package/cjs/shared/useTheme.d.ts +1 -0
  123. package/cjs/style/dnb-ui-components.css +119 -73
  124. package/cjs/style/dnb-ui-components.min.css +3 -3
  125. package/cjs/style/dnb-ui-extensions.css +8 -2
  126. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  127. package/cjs/style/dnb-ui-forms.css +8 -2
  128. package/cjs/style/dnb-ui-forms.min.css +1 -1
  129. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +127 -75
  130. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
  131. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.css +8 -2
  132. package/cjs/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  133. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.css +8 -2
  134. package/cjs/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  135. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -0
  136. package/cjs/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  137. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +160 -86
  138. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
  139. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -0
  140. package/cjs/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  141. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.css +8 -2
  142. package/cjs/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  143. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.css +8 -2
  144. package/cjs/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  145. package/cjs/style/themes/theme-ui/prism/dnb-prism-theme.d.ts +3 -3
  146. package/cjs/style/themes/theme-ui/ui-theme-components.css +127 -75
  147. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +3 -3
  148. package/cjs/style/themes/theme-ui/ui-theme-extensions.css +8 -2
  149. package/cjs/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  150. package/cjs/style/themes/theme-ui/ui-theme-forms.css +8 -2
  151. package/cjs/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  152. package/components/aria-live/useAriaLive.d.ts +1 -1
  153. package/components/breadcrumb/Breadcrumb.d.ts +2 -2
  154. package/components/breadcrumb/Breadcrumb.js +3 -3
  155. package/components/breadcrumb/Breadcrumb.js.map +1 -1
  156. package/components/breadcrumb/style/dnb-breadcrumb.css +7 -2
  157. package/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  158. package/components/breadcrumb/style/dnb-breadcrumb.scss +10 -2
  159. package/components/button/Button.js +2 -2
  160. package/components/button/Button.js.map +1 -1
  161. package/components/button/style/themes/dnb-button-theme-sbanken.css +23 -11
  162. package/components/button/style/themes/dnb-button-theme-sbanken.min.css +3 -3
  163. package/components/button/style/themes/dnb-button-theme-sbanken.scss +30 -14
  164. package/components/card/style/dnb-card.css +11 -2
  165. package/components/card/style/dnb-card.min.css +1 -1
  166. package/components/card/style/dnb-card.scss +12 -2
  167. package/components/form-label/style/dnb-form-label.css +4 -1
  168. package/components/form-label/style/dnb-form-label.min.css +1 -1
  169. package/components/form-label/style/dnb-form-label.scss +5 -2
  170. package/components/global-status/GlobalStatus.d.ts +1 -1
  171. package/components/global-status/GlobalStatusProvider.d.ts +1 -1
  172. package/components/height-animation/HeightAnimationInstance.d.ts +5 -6
  173. package/components/height-animation/HeightAnimationInstance.js +12 -12
  174. package/components/height-animation/HeightAnimationInstance.js.map +1 -1
  175. package/components/height-animation/useHeightAnimation.js +11 -10
  176. package/components/height-animation/useHeightAnimation.js.map +1 -1
  177. package/components/input/Input.d.ts +1 -1
  178. package/components/pagination/InfinityScroller.d.ts +1 -1
  179. package/components/progress-indicator/ProgressIndicator.js +5 -7
  180. package/components/progress-indicator/ProgressIndicator.js.map +1 -1
  181. package/components/progress-indicator/ProgressIndicatorCircular.js +1 -1
  182. package/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  183. package/components/progress-indicator/ProgressIndicatorLinear.js +4 -4
  184. package/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  185. package/components/progress-indicator/style/dnb-progress-indicator.css +5 -2
  186. package/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  187. package/components/progress-indicator/style/dnb-progress-indicator.scss +5 -2
  188. package/components/space/SpacingHelper.d.ts +5 -5
  189. package/components/table/Table.js +1 -1
  190. package/components/table/Table.js.map +1 -1
  191. package/components/table/TableAccordion.js +38 -53
  192. package/components/table/TableAccordion.js.map +1 -1
  193. package/components/table/TableAccordionTd.d.ts +9 -0
  194. package/{es/components/table/TableAccordionContent.js → components/table/TableAccordionTd.js} +14 -48
  195. package/components/table/TableAccordionTd.js.map +1 -0
  196. package/components/table/TableAccordionTr.d.ts +13 -0
  197. package/components/table/TableAccordionTr.js +51 -0
  198. package/components/table/TableAccordionTr.js.map +1 -0
  199. package/components/table/TableContext.d.ts +2 -2
  200. package/components/table/TableContext.js +2 -2
  201. package/components/table/TableContext.js.map +1 -1
  202. package/components/table/TableTd.d.ts +2 -2
  203. package/components/table/TableTd.js +2 -2
  204. package/components/table/TableTd.js.map +1 -1
  205. package/components/table/TableTr.d.ts +6 -1
  206. package/components/table/TableTr.js +9 -4
  207. package/components/table/TableTr.js.map +1 -1
  208. package/components/table/style/dnb-table.css +84 -64
  209. package/components/table/style/dnb-table.min.css +1 -1
  210. package/components/table/style/dnb-table.scss +1 -1
  211. package/components/table/style/table-accordion.scss +62 -44
  212. package/components/table/style/table-td.scss +1 -1
  213. package/components/table/style/themes/dnb-table-theme-sbanken.css +10 -0
  214. package/components/table/style/themes/dnb-table-theme-sbanken.min.css +3 -1
  215. package/components/table/style/themes/dnb-table-theme-sbanken.scss +14 -0
  216. package/components/table/useTableAnimationHandler.d.ts +20 -0
  217. package/components/table/useTableAnimationHandler.js +63 -0
  218. package/components/table/useTableAnimationHandler.js.map +1 -0
  219. package/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +1 -0
  220. package/es/components/aria-live/useAriaLive.d.ts +1 -1
  221. package/es/components/breadcrumb/Breadcrumb.d.ts +2 -2
  222. package/es/components/breadcrumb/Breadcrumb.js +3 -3
  223. package/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  224. package/es/components/breadcrumb/style/dnb-breadcrumb.css +7 -2
  225. package/es/components/breadcrumb/style/dnb-breadcrumb.min.css +1 -1
  226. package/es/components/breadcrumb/style/dnb-breadcrumb.scss +10 -2
  227. package/es/components/button/Button.js +2 -2
  228. package/es/components/button/Button.js.map +1 -1
  229. package/es/components/button/style/themes/dnb-button-theme-sbanken.css +23 -11
  230. package/es/components/button/style/themes/dnb-button-theme-sbanken.min.css +3 -3
  231. package/es/components/button/style/themes/dnb-button-theme-sbanken.scss +30 -14
  232. package/es/components/card/style/dnb-card.css +11 -2
  233. package/es/components/card/style/dnb-card.min.css +1 -1
  234. package/es/components/card/style/dnb-card.scss +12 -2
  235. package/es/components/form-label/style/dnb-form-label.css +4 -1
  236. package/es/components/form-label/style/dnb-form-label.min.css +1 -1
  237. package/es/components/form-label/style/dnb-form-label.scss +5 -2
  238. package/es/components/global-status/GlobalStatus.d.ts +1 -1
  239. package/es/components/global-status/GlobalStatusProvider.d.ts +1 -1
  240. package/es/components/height-animation/HeightAnimationInstance.d.ts +5 -6
  241. package/es/components/height-animation/HeightAnimationInstance.js +12 -12
  242. package/es/components/height-animation/HeightAnimationInstance.js.map +1 -1
  243. package/es/components/height-animation/useHeightAnimation.js +11 -10
  244. package/es/components/height-animation/useHeightAnimation.js.map +1 -1
  245. package/es/components/input/Input.d.ts +1 -1
  246. package/es/components/pagination/InfinityScroller.d.ts +1 -1
  247. package/es/components/progress-indicator/ProgressIndicator.js +5 -7
  248. package/es/components/progress-indicator/ProgressIndicator.js.map +1 -1
  249. package/es/components/progress-indicator/ProgressIndicatorCircular.js +1 -1
  250. package/es/components/progress-indicator/ProgressIndicatorCircular.js.map +1 -1
  251. package/es/components/progress-indicator/ProgressIndicatorLinear.js +4 -4
  252. package/es/components/progress-indicator/ProgressIndicatorLinear.js.map +1 -1
  253. package/es/components/progress-indicator/style/dnb-progress-indicator.css +5 -2
  254. package/es/components/progress-indicator/style/dnb-progress-indicator.min.css +1 -1
  255. package/es/components/progress-indicator/style/dnb-progress-indicator.scss +5 -2
  256. package/es/components/space/SpacingHelper.d.ts +5 -5
  257. package/es/components/table/Table.js +1 -1
  258. package/es/components/table/Table.js.map +1 -1
  259. package/es/components/table/TableAccordion.js +38 -53
  260. package/es/components/table/TableAccordion.js.map +1 -1
  261. package/es/components/table/TableAccordionTd.d.ts +9 -0
  262. package/{components/table/TableAccordionContent.js → es/components/table/TableAccordionTd.js} +14 -49
  263. package/es/components/table/TableAccordionTd.js.map +1 -0
  264. package/es/components/table/TableAccordionTr.d.ts +13 -0
  265. package/es/components/table/TableAccordionTr.js +51 -0
  266. package/es/components/table/TableAccordionTr.js.map +1 -0
  267. package/es/components/table/TableContext.d.ts +2 -2
  268. package/es/components/table/TableContext.js +2 -2
  269. package/es/components/table/TableContext.js.map +1 -1
  270. package/es/components/table/TableTd.d.ts +2 -2
  271. package/es/components/table/TableTd.js +2 -2
  272. package/es/components/table/TableTd.js.map +1 -1
  273. package/es/components/table/TableTr.d.ts +6 -1
  274. package/es/components/table/TableTr.js +9 -4
  275. package/es/components/table/TableTr.js.map +1 -1
  276. package/es/components/table/style/dnb-table.css +84 -64
  277. package/es/components/table/style/dnb-table.min.css +1 -1
  278. package/es/components/table/style/dnb-table.scss +1 -1
  279. package/es/components/table/style/table-accordion.scss +62 -44
  280. package/es/components/table/style/table-td.scss +1 -1
  281. package/es/components/table/style/themes/dnb-table-theme-sbanken.css +10 -0
  282. package/es/components/table/style/themes/dnb-table-theme-sbanken.min.css +3 -1
  283. package/es/components/table/style/themes/dnb-table-theme-sbanken.scss +14 -0
  284. package/es/components/table/useTableAnimationHandler.d.ts +20 -0
  285. package/es/components/table/useTableAnimationHandler.js +62 -0
  286. package/es/components/table/useTableAnimationHandler.js.map +1 -0
  287. package/es/elements/blockquote/style/themes/dnb-blockquote-theme-sbanken.scss +1 -0
  288. package/es/extensions/forms/DataContext/Context.d.ts +1 -3
  289. package/es/extensions/forms/DataContext/Context.js.map +1 -1
  290. package/es/extensions/forms/DataContext/Provider/Provider.d.ts +1 -2
  291. package/es/extensions/forms/DataContext/Provider/Provider.js +1 -5
  292. package/es/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  293. package/es/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  294. package/es/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -2
  295. package/es/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  296. package/es/extensions/forms/FieldBlock/style/dnb-field-block.css +2 -2
  297. package/es/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  298. package/es/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -0
  299. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +6 -0
  300. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  301. package/es/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -2
  302. package/es/extensions/forms/Form/data-context/useData.d.ts +1 -1
  303. package/es/extensions/forms/Form/data-context/useData.js +2 -18
  304. package/es/extensions/forms/Form/data-context/useData.js.map +1 -1
  305. package/es/extensions/forms/Form/data-context/useError.d.ts +2 -1
  306. package/es/extensions/forms/Form/data-context/useError.js +4 -2
  307. package/es/extensions/forms/Form/data-context/useError.js.map +1 -1
  308. package/es/extensions/forms/Value/Number/Number.d.ts +2 -2
  309. package/es/extensions/forms/Value/Number/Number.js +1 -1
  310. package/es/extensions/forms/Value/Number/Number.js.map +1 -1
  311. package/es/extensions/forms/hooks/useDataValue.d.ts +4 -12
  312. package/es/extensions/forms/hooks/useDataValue.js +5 -5
  313. package/es/extensions/forms/hooks/useDataValue.js.map +1 -1
  314. package/es/extensions/forms/hooks/useMounted.d.ts +2 -0
  315. package/es/extensions/forms/hooks/useMounted.js +14 -0
  316. package/es/extensions/forms/hooks/useMounted.js.map +1 -0
  317. package/es/extensions/forms/style/dnb-forms.css +8 -2
  318. package/es/extensions/forms/style/dnb-forms.min.css +1 -1
  319. package/es/extensions/forms/types.d.ts +2 -0
  320. package/es/extensions/forms/types.js.map +1 -1
  321. package/es/extensions/payment-card/utils/CardDesigns.d.ts +96 -96
  322. package/es/fragments/drawer-list/DrawerListHelpers.d.ts +52 -52
  323. package/es/shared/Eufemia.d.ts +1 -1
  324. package/es/shared/Eufemia.js +2 -2
  325. package/es/shared/Eufemia.js.map +1 -1
  326. package/es/shared/Theme.d.ts +7 -1
  327. package/es/shared/Theme.js +20 -7
  328. package/es/shared/Theme.js.map +1 -1
  329. package/es/shared/helpers/debounce.d.ts +37 -0
  330. package/es/shared/helpers/debounce.js +76 -0
  331. package/es/shared/helpers/debounce.js.map +1 -0
  332. package/es/shared/helpers/useSharedState.d.ts +1 -0
  333. package/es/shared/helpers/useSharedState.js +49 -20
  334. package/es/shared/helpers/useSharedState.js.map +1 -1
  335. package/es/shared/helpers/withCamelCaseProps.d.ts +7 -0
  336. package/es/shared/helpers/withCamelCaseProps.js.map +1 -1
  337. package/es/shared/helpers.d.ts +1 -25
  338. package/es/shared/helpers.js +1 -29
  339. package/es/shared/helpers.js.map +1 -1
  340. package/es/shared/useTheme.d.ts +1 -0
  341. package/es/style/dnb-ui-components.css +119 -73
  342. package/es/style/dnb-ui-components.min.css +3 -3
  343. package/es/style/dnb-ui-extensions.css +8 -2
  344. package/es/style/dnb-ui-extensions.min.css +1 -1
  345. package/es/style/dnb-ui-forms.css +8 -2
  346. package/es/style/dnb-ui-forms.min.css +1 -1
  347. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +127 -75
  348. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
  349. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.css +8 -2
  350. package/es/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  351. package/es/style/themes/theme-eiendom/eiendom-theme-forms.css +8 -2
  352. package/es/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  353. package/es/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -0
  354. package/es/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  355. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +160 -86
  356. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
  357. package/es/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -0
  358. package/es/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  359. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.css +8 -2
  360. package/es/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  361. package/es/style/themes/theme-sbanken/sbanken-theme-forms.css +8 -2
  362. package/es/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  363. package/es/style/themes/theme-ui/prism/dnb-prism-theme.d.ts +3 -3
  364. package/es/style/themes/theme-ui/ui-theme-components.css +127 -75
  365. package/es/style/themes/theme-ui/ui-theme-components.min.css +3 -3
  366. package/es/style/themes/theme-ui/ui-theme-extensions.css +8 -2
  367. package/es/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  368. package/es/style/themes/theme-ui/ui-theme-forms.css +8 -2
  369. package/es/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  370. package/esm/dnb-ui-basis.min.mjs +1 -1
  371. package/esm/dnb-ui-components.min.mjs +1 -1
  372. package/esm/dnb-ui-elements.min.mjs +1 -1
  373. package/esm/dnb-ui-extensions.min.mjs +3 -3
  374. package/esm/dnb-ui-lib.min.mjs +1 -1
  375. package/extensions/forms/DataContext/Context.d.ts +1 -3
  376. package/extensions/forms/DataContext/Context.js.map +1 -1
  377. package/extensions/forms/DataContext/Provider/Provider.d.ts +1 -2
  378. package/extensions/forms/DataContext/Provider/Provider.js +1 -5
  379. package/extensions/forms/DataContext/Provider/Provider.js.map +1 -1
  380. package/extensions/forms/FieldBlock/FieldBlock.js.map +1 -1
  381. package/extensions/forms/FieldBlock/FieldBlockContext.d.ts +1 -2
  382. package/extensions/forms/FieldBlock/FieldBlockContext.js.map +1 -1
  383. package/extensions/forms/FieldBlock/style/dnb-field-block.css +2 -2
  384. package/extensions/forms/FieldBlock/style/dnb-field-block.min.css +1 -1
  385. package/extensions/forms/FieldBlock/style/dnb-field-block.scss +2 -0
  386. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.css +6 -0
  387. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.min.css +1 -1
  388. package/extensions/forms/Form/ButtonRow/style/dnb-form-button-row.scss +10 -2
  389. package/extensions/forms/Form/data-context/useData.d.ts +1 -1
  390. package/extensions/forms/Form/data-context/useData.js +2 -18
  391. package/extensions/forms/Form/data-context/useData.js.map +1 -1
  392. package/extensions/forms/Form/data-context/useError.d.ts +2 -1
  393. package/extensions/forms/Form/data-context/useError.js +4 -2
  394. package/extensions/forms/Form/data-context/useError.js.map +1 -1
  395. package/extensions/forms/Value/Number/Number.d.ts +2 -2
  396. package/extensions/forms/Value/Number/Number.js +1 -1
  397. package/extensions/forms/Value/Number/Number.js.map +1 -1
  398. package/extensions/forms/hooks/useDataValue.d.ts +4 -12
  399. package/extensions/forms/hooks/useDataValue.js +5 -5
  400. package/extensions/forms/hooks/useDataValue.js.map +1 -1
  401. package/extensions/forms/hooks/useMounted.d.ts +2 -0
  402. package/extensions/forms/hooks/useMounted.js +14 -0
  403. package/extensions/forms/hooks/useMounted.js.map +1 -0
  404. package/extensions/forms/style/dnb-forms.css +8 -2
  405. package/extensions/forms/style/dnb-forms.min.css +1 -1
  406. package/extensions/forms/types.d.ts +2 -0
  407. package/extensions/forms/types.js.map +1 -1
  408. package/extensions/payment-card/utils/CardDesigns.d.ts +96 -96
  409. package/fragments/drawer-list/DrawerListHelpers.d.ts +52 -52
  410. package/package.json +1 -1
  411. package/shared/Eufemia.d.ts +1 -1
  412. package/shared/Eufemia.js +2 -2
  413. package/shared/Eufemia.js.map +1 -1
  414. package/shared/Theme.d.ts +7 -1
  415. package/shared/Theme.js +20 -7
  416. package/shared/Theme.js.map +1 -1
  417. package/shared/helpers/debounce.d.ts +37 -0
  418. package/shared/helpers/debounce.js +83 -0
  419. package/shared/helpers/debounce.js.map +1 -0
  420. package/shared/helpers/useSharedState.d.ts +1 -0
  421. package/shared/helpers/useSharedState.js +49 -20
  422. package/shared/helpers/useSharedState.js.map +1 -1
  423. package/shared/helpers/withCamelCaseProps.d.ts +7 -0
  424. package/shared/helpers/withCamelCaseProps.js.map +1 -1
  425. package/shared/helpers.d.ts +1 -25
  426. package/shared/helpers.js +3 -36
  427. package/shared/helpers.js.map +1 -1
  428. package/shared/useTheme.d.ts +1 -0
  429. package/style/dnb-ui-components.css +119 -73
  430. package/style/dnb-ui-components.min.css +3 -3
  431. package/style/dnb-ui-extensions.css +8 -2
  432. package/style/dnb-ui-extensions.min.css +1 -1
  433. package/style/dnb-ui-forms.css +8 -2
  434. package/style/dnb-ui-forms.min.css +1 -1
  435. package/style/themes/theme-eiendom/eiendom-theme-components.css +127 -75
  436. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +3 -3
  437. package/style/themes/theme-eiendom/eiendom-theme-extensions.css +8 -2
  438. package/style/themes/theme-eiendom/eiendom-theme-extensions.min.css +1 -1
  439. package/style/themes/theme-eiendom/eiendom-theme-forms.css +8 -2
  440. package/style/themes/theme-eiendom/eiendom-theme-forms.min.css +1 -1
  441. package/style/themes/theme-sbanken/sbanken-theme-basis.css +1 -0
  442. package/style/themes/theme-sbanken/sbanken-theme-basis.min.css +1 -1
  443. package/style/themes/theme-sbanken/sbanken-theme-components.css +160 -86
  444. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +8 -6
  445. package/style/themes/theme-sbanken/sbanken-theme-elements.css +1 -0
  446. package/style/themes/theme-sbanken/sbanken-theme-elements.min.css +1 -1
  447. package/style/themes/theme-sbanken/sbanken-theme-extensions.css +8 -2
  448. package/style/themes/theme-sbanken/sbanken-theme-extensions.min.css +1 -1
  449. package/style/themes/theme-sbanken/sbanken-theme-forms.css +8 -2
  450. package/style/themes/theme-sbanken/sbanken-theme-forms.min.css +1 -1
  451. package/style/themes/theme-ui/prism/dnb-prism-theme.d.ts +3 -3
  452. package/style/themes/theme-ui/ui-theme-components.css +127 -75
  453. package/style/themes/theme-ui/ui-theme-components.min.css +3 -3
  454. package/style/themes/theme-ui/ui-theme-extensions.css +8 -2
  455. package/style/themes/theme-ui/ui-theme-extensions.min.css +1 -1
  456. package/style/themes/theme-ui/ui-theme-forms.css +8 -2
  457. package/style/themes/theme-ui/ui-theme-forms.min.css +1 -1
  458. package/umd/dnb-ui-basis.min.js +1 -1
  459. package/umd/dnb-ui-components.min.js +1 -1
  460. package/umd/dnb-ui-elements.min.js +1 -1
  461. package/umd/dnb-ui-extensions.min.js +3 -3
  462. package/umd/dnb-ui-lib.min.js +1 -1
  463. package/cjs/components/table/TableAccordionContent.d.ts +0 -18
  464. package/cjs/components/table/TableAccordionContent.js.map +0 -1
  465. package/components/table/TableAccordionContent.d.ts +0 -18
  466. package/components/table/TableAccordionContent.js.map +0 -1
  467. package/es/components/table/TableAccordionContent.d.ts +0 -18
  468. package/es/components/table/TableAccordionContent.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","names":["React","classnames","Context","Provider","createSpacingClasses","createSkeletonClass","extendPropsWithContext","validateDOMAttributes","ScrollView","TableContext","useStickyHeader","useHandleOddEven","defaultProps","size","variant","Table","componentProps","context","useContext","allProps","skeleton","className","children","sticky","stickyOffset","fixed","border","outline","accordion","accordionChevronPlacement","props","_objectWithoutProperties","_excluded","elementRef","trCountRef","rerenderAlias","skeletonClasses","spacingClasses","createElement","Boolean","value","_objectSpread","getTranslation","_extends","ref","_supportsSpacingProps"],"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport Context from '../../shared/Context'\nimport Provider from '../../shared/Provider'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { createSkeletonClass } from '../skeleton/SkeletonHelper'\nimport {\n extendPropsWithContext,\n validateDOMAttributes,\n} from '../../shared/component-helper'\nimport ScrollView from './TableScrollView'\nimport TableContext from './TableContext'\nimport { useStickyHeader } from './TableStickyHeader'\n\nimport type { StickyTableHeaderProps } from './TableStickyHeader'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport type { LocaleProps, SpacingProps } from '../../shared/types'\nimport { useHandleOddEven } from './TableTr'\n\nexport type TableSizes = 'large' | 'medium' | 'small'\nexport type TableVariants = 'generic'\n\nexport { ScrollView }\n\nexport type TableProps = {\n /**\n * The content of the component.\n */\n children: React.ReactNode\n\n /**\n * Custom className on the component root\n */\n className?: string\n\n /**\n * Skeleton should be applied when loading content\n */\n skeleton?: SkeletonShow\n\n /**\n * The size of the component.\n * Default: large.\n */\n size?: TableSizes\n\n /**\n * The style variant of the component.\n * Default: generic.\n */\n variant?: TableVariants\n\n /**\n * Use `true` to show borders between table data cell\n * Default: false\n */\n border?: boolean\n\n /**\n * Use `true` to show a outline border around the table\n * Default: false\n */\n outline?: boolean\n\n /**\n * Set to true if you have one or more rows that contains an accordion content.\n * Default: false\n */\n accordion?: boolean\n\n /**\n * Defines where the chevron will be placed.\n * Default: 'start'\n */\n accordionChevronPlacement?: 'start' | 'end'\n\n /**\n * Defines if the table should behave with a fixed table layout, using: \"table-layout: fixed;\"\n * Default: null.\n */\n fixed?: boolean\n} & StickyTableHeaderProps\n\nexport type TableAllProps = TableProps &\n Omit<React.TableHTMLAttributes<HTMLTableElement>, 'border'> &\n LocaleProps &\n SpacingProps\n\nexport const defaultProps = {\n size: 'large',\n variant: 'generic',\n}\n\nconst Table = (componentProps: TableAllProps) => {\n const context = React.useContext(Context)\n\n const allProps = extendPropsWithContext(\n componentProps,\n defaultProps,\n context?.Table,\n {\n skeleton: context?.skeleton,\n }\n )\n\n const {\n className,\n children,\n size,\n skeleton,\n variant,\n sticky,\n stickyOffset, // eslint-disable-line\n fixed,\n border,\n outline,\n accordion,\n accordionChevronPlacement, // eslint-disable-line\n ...props\n } = allProps\n\n const { elementRef } = useStickyHeader(allProps)\n const { trCountRef, rerenderAlias } = useHandleOddEven({ children })\n\n const skeletonClasses = createSkeletonClass('font', skeleton, context)\n const spacingClasses = createSpacingClasses(props)\n\n validateDOMAttributes(allProps, props)\n\n return (\n <Provider skeleton={Boolean(skeleton)}>\n <TableContext.Provider\n value={{\n trCountRef,\n rerenderAlias,\n allProps: {\n ...allProps,\n ...context.getTranslation(componentProps).Table,\n },\n }}\n >\n <table\n className={classnames(\n 'dnb-table',\n variant && `dnb-table__variant--${variant}`,\n size && `dnb-table__size--${size}`,\n sticky && 'dnb-table--sticky',\n fixed && 'dnb-table--fixed',\n border && 'dnb-table--border',\n outline && 'dnb-table--outline',\n accordion && 'dnb-table--accordion',\n spacingClasses,\n skeletonClasses,\n className\n )}\n ref={elementRef}\n {...props}\n >\n {children}\n </table>\n </TableContext.Provider>\n </Provider>\n )\n}\n\nTable._supportsSpacingProps = true\n\nexport default Table\n\nTable.ScrollView = ScrollView\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,OAAOC,QAAQ,MAAM,uBAAuB;AAC5C,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,mBAAmB,QAAQ,4BAA4B;AAChE,SACEC,sBAAsB,EACtBC,qBAAqB,QAChB,+BAA+B;AACtC,OAAOC,UAAU,MAAM,mBAAmB;AAC1C,OAAOC,YAAY,MAAM,gBAAgB;AACzC,SAASC,eAAe,QAAQ,qBAAqB;AAKrD,SAASC,gBAAgB,QAAQ,WAAW;AAK5C,SAASH,UAAU;AAkEnB,OAAO,MAAMI,YAAY,GAAG;EAC1BC,IAAI,EAAE,OAAO;EACbC,OAAO,EAAE;AACX,CAAC;AAED,MAAMC,KAAK,GAAIC,cAA6B,IAAK;EAC/C,MAAMC,OAAO,GAAGjB,KAAK,CAACkB,UAAU,CAAChB,OAAO,CAAC;EAEzC,MAAMiB,QAAQ,GAAGb,sBAAsB,CACrCU,cAAc,EACdJ,YAAY,EACZK,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEF,KAAK,EACd;IACEK,QAAQ,EAAEH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG;EACrB,CACF,CAAC;EAED,MAAM;MACJC,SAAS;MACTC,QAAQ;MACRT,IAAI;MACJO,QAAQ;MACRN,OAAO;MACPS,MAAM;MACNC,YAAY;MACZC,KAAK;MACLC,MAAM;MACNC,OAAO;MACPC,SAAS;MACTC;IAEF,CAAC,GAAGV,QAAQ;IADPW,KAAK,GAAAC,wBAAA,CACNZ,QAAQ,EAAAa,SAAA;EAEZ,MAAM;IAAEC;EAAW,CAAC,GAAGvB,eAAe,CAACS,QAAQ,CAAC;EAChD,MAAM;IAAEe,UAAU;IAAEC;EAAc,CAAC,GAAGxB,gBAAgB,CAAC;IAAEW;EAAS,CAAC,CAAC;EAEpE,MAAMc,eAAe,GAAG/B,mBAAmB,CAAC,MAAM,EAAEe,QAAQ,EAAEH,OAAO,CAAC;EACtE,MAAMoB,cAAc,GAAGjC,oBAAoB,CAAC0B,KAAK,CAAC;EAElDvB,qBAAqB,CAACY,QAAQ,EAAEW,KAAK,CAAC;EAEtC,OACE9B,KAAA,CAAAsC,aAAA,CAACnC,QAAQ;IAACiB,QAAQ,EAAEmB,OAAO,CAACnB,QAAQ;EAAE,GACpCpB,KAAA,CAAAsC,aAAA,CAAC7B,YAAY,CAACN,QAAQ;IACpBqC,KAAK,EAAE;MACLN,UAAU;MACVC,aAAa;MACbhB,QAAQ,EAAAsB,aAAA,CAAAA,aAAA,KACHtB,QAAQ,GACRF,OAAO,CAACyB,cAAc,CAAC1B,cAAc,CAAC,CAACD,KAAK;IAEnD;EAAE,GAEFf,KAAA,CAAAsC,aAAA,UAAAK,QAAA;IACEtB,SAAS,EAAEpB,UAAU,CACnB,WAAW,EAQXoC,cAAc,EACdD,eAAe,EACff,SAAS,EATTP,OAAO,IAAK,uBAAsBA,OAAQ,EAAC,EAC3CD,IAAI,IAAK,oBAAmBA,IAAK,EAAC,EAClCU,MAAM,IAAI,mBAAmB,EAC7BE,KAAK,IAAI,kBAAkB,EAC3BC,MAAM,IAAI,mBAAmB,EAC7BC,OAAO,IAAI,oBAAoB,EAC/BC,SAAS,IAAI,sBAIf,CAAE;IACFgB,GAAG,EAAEX;EAAW,GACZH,KAAK,GAERR,QACI,CACc,CACf,CAAC;AAEf,CAAC;AAEDP,KAAK,CAAC8B,qBAAqB,GAAG,IAAI;AAElC,eAAe9B,KAAK;AAEpBA,KAAK,CAACP,UAAU,GAAGA,UAAU"}
1
+ {"version":3,"file":"Table.js","names":["React","classnames","Context","Provider","createSpacingClasses","createSkeletonClass","extendPropsWithContext","validateDOMAttributes","ScrollView","TableContext","useStickyHeader","useHandleOddEven","defaultProps","size","variant","Table","componentProps","context","useContext","allProps","skeleton","className","children","sticky","stickyOffset","fixed","border","outline","accordion","accordionChevronPlacement","props","_objectWithoutProperties","_excluded","elementRef","trCountRef","rerenderAlias","skeletonClasses","spacingClasses","createElement","Boolean","value","_objectSpread","getTranslation","_extends","ref","_supportsSpacingProps"],"sources":["../../../../src/components/table/Table.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport Context from '../../shared/Context'\nimport Provider from '../../shared/Provider'\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { createSkeletonClass } from '../skeleton/SkeletonHelper'\nimport {\n extendPropsWithContext,\n validateDOMAttributes,\n} from '../../shared/component-helper'\nimport ScrollView from './TableScrollView'\nimport { TableContext } from './TableContext'\nimport { useStickyHeader } from './TableStickyHeader'\n\nimport type { StickyTableHeaderProps } from './TableStickyHeader'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport type { LocaleProps, SpacingProps } from '../../shared/types'\nimport { useHandleOddEven } from './TableTr'\n\nexport type TableSizes = 'large' | 'medium' | 'small'\nexport type TableVariants = 'generic'\n\nexport { ScrollView }\n\nexport type TableProps = {\n /**\n * The content of the component.\n */\n children: React.ReactNode\n\n /**\n * Custom className on the component root\n */\n className?: string\n\n /**\n * Skeleton should be applied when loading content\n */\n skeleton?: SkeletonShow\n\n /**\n * The size of the component.\n * Default: large.\n */\n size?: TableSizes\n\n /**\n * The style variant of the component.\n * Default: generic.\n */\n variant?: TableVariants\n\n /**\n * Use `true` to show borders between table data cell\n * Default: false\n */\n border?: boolean\n\n /**\n * Use `true` to show a outline border around the table\n * Default: false\n */\n outline?: boolean\n\n /**\n * Set to true if you have one or more rows that contains an accordion content.\n * Default: false\n */\n accordion?: boolean\n\n /**\n * Defines where the chevron will be placed.\n * Default: 'start'\n */\n accordionChevronPlacement?: 'start' | 'end'\n\n /**\n * Defines if the table should behave with a fixed table layout, using: \"table-layout: fixed;\"\n * Default: null.\n */\n fixed?: boolean\n} & StickyTableHeaderProps\n\nexport type TableAllProps = TableProps &\n Omit<React.TableHTMLAttributes<HTMLTableElement>, 'border'> &\n LocaleProps &\n SpacingProps\n\nexport const defaultProps = {\n size: 'large',\n variant: 'generic',\n}\n\nconst Table = (componentProps: TableAllProps) => {\n const context = React.useContext(Context)\n\n const allProps = extendPropsWithContext(\n componentProps,\n defaultProps,\n context?.Table,\n {\n skeleton: context?.skeleton,\n }\n )\n\n const {\n className,\n children,\n size,\n skeleton,\n variant,\n sticky,\n stickyOffset, // eslint-disable-line\n fixed,\n border,\n outline,\n accordion,\n accordionChevronPlacement, // eslint-disable-line\n ...props\n } = allProps\n\n const { elementRef } = useStickyHeader(allProps)\n const { trCountRef, rerenderAlias } = useHandleOddEven({ children })\n\n const skeletonClasses = createSkeletonClass('font', skeleton, context)\n const spacingClasses = createSpacingClasses(props)\n\n validateDOMAttributes(allProps, props)\n\n return (\n <Provider skeleton={Boolean(skeleton)}>\n <TableContext.Provider\n value={{\n trCountRef,\n rerenderAlias,\n allProps: {\n ...allProps,\n ...context.getTranslation(componentProps).Table,\n },\n }}\n >\n <table\n className={classnames(\n 'dnb-table',\n variant && `dnb-table__variant--${variant}`,\n size && `dnb-table__size--${size}`,\n sticky && 'dnb-table--sticky',\n fixed && 'dnb-table--fixed',\n border && 'dnb-table--border',\n outline && 'dnb-table--outline',\n accordion && 'dnb-table--accordion',\n spacingClasses,\n skeletonClasses,\n className\n )}\n ref={elementRef}\n {...props}\n >\n {children}\n </table>\n </TableContext.Provider>\n </Provider>\n )\n}\n\nTable._supportsSpacingProps = true\n\nexport default Table\n\nTable.ScrollView = ScrollView\n"],"mappings":";;;;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,sBAAsB;AAC1C,OAAOC,QAAQ,MAAM,uBAAuB;AAC5C,SAASC,oBAAoB,QAAQ,wBAAwB;AAC7D,SAASC,mBAAmB,QAAQ,4BAA4B;AAChE,SACEC,sBAAsB,EACtBC,qBAAqB,QAChB,+BAA+B;AACtC,OAAOC,UAAU,MAAM,mBAAmB;AAC1C,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,eAAe,QAAQ,qBAAqB;AAKrD,SAASC,gBAAgB,QAAQ,WAAW;AAK5C,SAASH,UAAU;AAkEnB,OAAO,MAAMI,YAAY,GAAG;EAC1BC,IAAI,EAAE,OAAO;EACbC,OAAO,EAAE;AACX,CAAC;AAED,MAAMC,KAAK,GAAIC,cAA6B,IAAK;EAC/C,MAAMC,OAAO,GAAGjB,KAAK,CAACkB,UAAU,CAAChB,OAAO,CAAC;EAEzC,MAAMiB,QAAQ,GAAGb,sBAAsB,CACrCU,cAAc,EACdJ,YAAY,EACZK,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEF,KAAK,EACd;IACEK,QAAQ,EAAEH,OAAO,aAAPA,OAAO,uBAAPA,OAAO,CAAEG;EACrB,CACF,CAAC;EAED,MAAM;MACJC,SAAS;MACTC,QAAQ;MACRT,IAAI;MACJO,QAAQ;MACRN,OAAO;MACPS,MAAM;MACNC,YAAY;MACZC,KAAK;MACLC,MAAM;MACNC,OAAO;MACPC,SAAS;MACTC;IAEF,CAAC,GAAGV,QAAQ;IADPW,KAAK,GAAAC,wBAAA,CACNZ,QAAQ,EAAAa,SAAA;EAEZ,MAAM;IAAEC;EAAW,CAAC,GAAGvB,eAAe,CAACS,QAAQ,CAAC;EAChD,MAAM;IAAEe,UAAU;IAAEC;EAAc,CAAC,GAAGxB,gBAAgB,CAAC;IAAEW;EAAS,CAAC,CAAC;EAEpE,MAAMc,eAAe,GAAG/B,mBAAmB,CAAC,MAAM,EAAEe,QAAQ,EAAEH,OAAO,CAAC;EACtE,MAAMoB,cAAc,GAAGjC,oBAAoB,CAAC0B,KAAK,CAAC;EAElDvB,qBAAqB,CAACY,QAAQ,EAAEW,KAAK,CAAC;EAEtC,OACE9B,KAAA,CAAAsC,aAAA,CAACnC,QAAQ;IAACiB,QAAQ,EAAEmB,OAAO,CAACnB,QAAQ;EAAE,GACpCpB,KAAA,CAAAsC,aAAA,CAAC7B,YAAY,CAACN,QAAQ;IACpBqC,KAAK,EAAE;MACLN,UAAU;MACVC,aAAa;MACbhB,QAAQ,EAAAsB,aAAA,CAAAA,aAAA,KACHtB,QAAQ,GACRF,OAAO,CAACyB,cAAc,CAAC1B,cAAc,CAAC,CAACD,KAAK;IAEnD;EAAE,GAEFf,KAAA,CAAAsC,aAAA,UAAAK,QAAA;IACEtB,SAAS,EAAEpB,UAAU,CACnB,WAAW,EAQXoC,cAAc,EACdD,eAAe,EACff,SAAS,EATTP,OAAO,IAAK,uBAAsBA,OAAQ,EAAC,EAC3CD,IAAI,IAAK,oBAAmBA,IAAK,EAAC,EAClCU,MAAM,IAAI,mBAAmB,EAC7BE,KAAK,IAAI,kBAAkB,EAC3BC,MAAM,IAAI,mBAAmB,EAC7BC,OAAO,IAAI,oBAAoB,EAC/BC,SAAS,IAAI,sBAIf,CAAE;IACFgB,GAAG,EAAEX;EAAW,GACZH,KAAK,GAERR,QACI,CACc,CACf,CAAC;AAEf,CAAC;AAEDP,KAAK,CAAC8B,qBAAqB,GAAG,IAAI;AAElC,eAAe9B,KAAK;AAEpBA,KAAK,CAACP,UAAU,GAAGA,UAAU"}
@@ -1,15 +1,16 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- var _TableTdAccordionIcon, _TableThAccordionIcon, _Td;
2
+ var _Td;
3
3
  import React from 'react';
4
4
  import classnames from 'classnames';
5
5
  import Button from '../button/Button';
6
6
  import IconPrimary from '../icon/IconPrimary';
7
7
  import Th from './TableTh';
8
8
  import Td from './TableTd';
9
- import TableContext from './TableContext';
9
+ import { TableAccordionContext, TableContext } from './TableContext';
10
10
  import keycode from 'keycode';
11
11
  import { hasSelectedText } from '../../shared/helpers';
12
- import TableAccordionContent, { TrContext } from './TableAccordionContent';
12
+ import TableAccordionTd from './TableAccordionTd';
13
+ import TableAccordionTr from './TableAccordionTr';
13
14
  export function useTableAccordion({
14
15
  children,
15
16
  className,
@@ -21,7 +22,7 @@ export function useTableAccordion({
21
22
  onOpened,
22
23
  onClosed
23
24
  }) {
24
- var _tableContext$allProp, _tableContext$allProp2;
25
+ var _tableContext$allProp;
25
26
  const tableContext = React.useContext(TableContext);
26
27
  const [trIsOpen, setOpen] = React.useState(() => {
27
28
  if (typeof expanded === 'boolean') {
@@ -36,17 +37,21 @@ export function useTableAccordion({
36
37
  });
37
38
  const [trIsHover, setHover] = React.useState(false);
38
39
  const [trHadClick, setHadClick] = React.useState(false);
39
- let content = React.Children.toArray(children);
40
40
  if (!(tableContext !== null && tableContext !== void 0 && (_tableContext$allProp = tableContext.allProps) !== null && _tableContext$allProp !== void 0 && _tableContext$allProp.accordion)) {
41
41
  return null;
42
42
  }
43
- const accordionContent = content.find(element => {
44
- return element.type === TableAccordionContent;
43
+ let headerContent = React.Children.toArray(children);
44
+ const addExpandIcon = icon => {
45
+ if (tableContext.allProps.accordionChevronPlacement === 'end') {
46
+ headerContent.push(icon);
47
+ } else {
48
+ headerContent.unshift(icon);
49
+ }
50
+ };
51
+ const accordionContent = headerContent.filter(element => {
52
+ return isAccordionElement(element);
45
53
  });
46
- const hasAccordionContent = React.isValidElement(accordionContent);
47
- const countTds = hasAccordionContent ? children.filter(element => {
48
- return element.type === Td;
49
- }).length + 1 : null;
54
+ const hasAccordionContent = accordionContent.length !== 0 && accordionContent.every(element => React.isValidElement(element));
50
55
  const trParams = !disabled && hasAccordionContent ? {
51
56
  onClick: toggleOpenTr,
52
57
  onMouseEnter: onMouseEnterHandler,
@@ -54,34 +59,25 @@ export function useTableAccordion({
54
59
  onKeyDown: onKeydownHandler
55
60
  } : {};
56
61
  if (hasAccordionContent) {
57
- content = content.filter(element => {
58
- const hasContent = element.type === TableAccordionContent;
59
- return !hasContent;
62
+ headerContent = headerContent.filter(element => {
63
+ return !isAccordionElement(element);
60
64
  });
61
- const tdElem = _TableTdAccordionIcon || (_TableTdAccordionIcon = React.createElement(TableTdAccordionIcon, {
65
+ addExpandIcon(_Td || (_Td = React.createElement(Td, {
66
+ className: "dnb-table__td__accordion-icon",
62
67
  key: "td-icon"
63
- }));
64
- if (tableContext.allProps.accordionChevronPlacement === 'end') {
65
- content.push(tdElem);
66
- } else {
67
- content.unshift(tdElem);
68
- }
69
- } else if (tableContext !== null && tableContext !== void 0 && (_tableContext$allProp2 = tableContext.allProps) !== null && _tableContext$allProp2 !== void 0 && _tableContext$allProp2.accordion) {
70
- const isTh = content.some(element => {
71
- return element.type === Th;
72
- });
73
- if (isTh) {
74
- const thElem = _TableThAccordionIcon || (_TableThAccordionIcon = React.createElement(TableThAccordionIcon, {
75
- key: "th-icon"
76
- }));
77
- if (tableContext.allProps.accordionChevronPlacement === 'end') {
78
- content.push(thElem);
79
- } else {
80
- content.unshift(thElem);
81
- }
82
- }
68
+ }, React.createElement(TableAccordionToggleButton, null))));
69
+ } else if (isTableHead(headerContent)) {
70
+ var _tableContext$allProp2;
71
+ addExpandIcon(React.createElement(Th, {
72
+ "aria-hidden": true,
73
+ className: "dnb-table__th__accordion-icon",
74
+ key: "th-icon"
75
+ }, React.createElement("div", null, tableContext === null || tableContext === void 0 ? void 0 : (_tableContext$allProp2 = tableContext.allProps) === null || _tableContext$allProp2 === void 0 ? void 0 : _tableContext$allProp2.accordionToggleButtonSR)));
83
76
  }
84
- return React.createElement(TrContext.Provider, {
77
+ const countTds = hasAccordionContent ? headerContent.filter(element => {
78
+ return element.type === Td;
79
+ }).length : null;
80
+ return React.createElement(TableAccordionContext.Provider, {
85
81
  value: {
86
82
  toggleOpenTr,
87
83
  trIsOpen,
@@ -94,7 +90,7 @@ export function useTableAccordion({
94
90
  }, React.createElement("tr", _extends({
95
91
  tabIndex: accordionContent && !disabled ? 0 : undefined,
96
92
  className: classnames(className, hasAccordionContent && 'dnb-table__tr--has-accordion-content', trIsOpen && 'dnb-table__tr--expanded', disabled && 'dnb-table__tr--disabled', noAnimation && 'dnb-table__tr--no-animation', trIsHover && trHadClick && 'dnb-table__tr--hover')
97
- }, trParams, props), content), accordionContent);
93
+ }, trParams, props), headerContent), accordionContent);
98
94
  function onKeydownHandler(event) {
99
95
  switch (keycode(event)) {
100
96
  case 'space':
@@ -127,7 +123,7 @@ export function useTableAccordion({
127
123
  }
128
124
  export function TableAccordionToggleButton() {
129
125
  var _React$useContext;
130
- const trContext = React.useContext(TrContext);
126
+ const tableAccordionContext = React.useContext(TableAccordionContext);
131
127
  const allProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
132
128
  const iconSize = allProps.size === 'medium' || allProps.size === 'small' ? 'basis' : 'medium';
133
129
  return React.createElement("span", {
@@ -139,21 +135,10 @@ export function TableAccordionToggleButton() {
139
135
  className: "dnb-sr-only",
140
136
  tabIndex: -1,
141
137
  "aria-label": allProps === null || allProps === void 0 ? void 0 : allProps.accordionToggleButtonSR,
142
- "aria-expanded": Boolean(trContext === null || trContext === void 0 ? void 0 : trContext.trIsOpen),
143
- on_click: event => trContext === null || trContext === void 0 ? void 0 : trContext.toggleOpenTr(event, true)
138
+ "aria-expanded": Boolean(tableAccordionContext === null || tableAccordionContext === void 0 ? void 0 : tableAccordionContext.trIsOpen),
139
+ on_click: event => tableAccordionContext === null || tableAccordionContext === void 0 ? void 0 : tableAccordionContext.toggleOpenTr(event, true)
144
140
  }));
145
141
  }
146
- function TableThAccordionIcon() {
147
- var _tableContext$allProp3;
148
- const tableContext = React.useContext(TableContext);
149
- return React.createElement(Th, {
150
- "aria-hidden": true,
151
- className: "dnb-table__th__accordion-icon"
152
- }, React.createElement("div", null, tableContext === null || tableContext === void 0 ? void 0 : (_tableContext$allProp3 = tableContext.allProps) === null || _tableContext$allProp3 === void 0 ? void 0 : _tableContext$allProp3.accordionToggleButtonSR));
153
- }
154
- function TableTdAccordionIcon() {
155
- return _Td || (_Td = React.createElement(Td, {
156
- className: "dnb-table__td__accordion-icon"
157
- }, React.createElement(TableAccordionToggleButton, null)));
158
- }
142
+ const isAccordionElement = element => element.type === TableAccordionTd || element.type === TableAccordionTr;
143
+ const isTableHead = children => children.some(element => element.type === Th);
159
144
  //# sourceMappingURL=TableAccordion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableAccordion.js","names":["React","classnames","Button","IconPrimary","Th","Td","TableContext","keycode","hasSelectedText","TableAccordionContent","TrContext","useTableAccordion","children","className","props","expanded","disabled","noAnimation","onClick","onOpened","onClosed","_tableContext$allProp","_tableContext$allProp2","tableContext","useContext","trIsOpen","setOpen","useState","location","id","hash","trIsHover","setHover","trHadClick","setHadClick","content","Children","toArray","allProps","accordion","accordionContent","find","element","type","hasAccordionContent","isValidElement","countTds","filter","length","trParams","toggleOpenTr","onMouseEnter","onMouseEnterHandler","onMouseLeave","onMouseLeaveHandler","onKeyDown","onKeydownHandler","hasContent","tdElem","_TableTdAccordionIcon","createElement","TableTdAccordionIcon","key","accordionChevronPlacement","push","unshift","isTh","some","thElem","_TableThAccordionIcon","TableThAccordionIcon","Provider","value","_extends","tabIndex","undefined","event","target","document","activeElement","tagName","preventDefault","allowInteractiveElement","TableAccordionToggleButton","_React$useContext","trContext","iconSize","size","icon","accordionToggleButtonSR","Boolean","on_click","_tableContext$allProp3","_Td"],"sources":["../../../../src/components/table/TableAccordion.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport Button from '../button/Button'\nimport IconPrimary from '../icon/IconPrimary'\nimport Th from './TableTh'\nimport Td from './TableTd'\nimport TableContext from './TableContext'\nimport keycode from 'keycode'\nimport { hasSelectedText } from '../../shared/helpers'\nimport { TableTrProps } from './TableTr'\n\nimport TableAccordionContent, { TrContext } from './TableAccordionContent'\nimport type { TableAccordionContentProps } from './TableAccordionContent'\n\nexport function useTableAccordion({\n children,\n className,\n props,\n expanded,\n disabled,\n noAnimation,\n onClick,\n onOpened,\n onClosed,\n}) {\n const tableContext = React.useContext(TableContext)\n\n const [trIsOpen, setOpen] = React.useState(() => {\n if (typeof expanded === 'boolean') {\n return expanded\n } else if (typeof location !== 'undefined') {\n const id = props?.id\n if (id && '#' + id === location.hash) {\n return true\n }\n }\n\n return false\n })\n const [trIsHover, setHover] = React.useState(false)\n const [trHadClick, setHadClick] = React.useState(false)\n\n let content = React.Children.toArray(children)\n\n if (!tableContext?.allProps?.accordion) {\n return null\n }\n\n /**\n * Handle Accordion Content\n */\n const accordionContent = content.find((element: React.ReactElement) => {\n return element.type === TableAccordionContent\n }) as React.ReactElement<TableAccordionContentProps>\n const hasAccordionContent = React.isValidElement(accordionContent)\n const countTds = hasAccordionContent\n ? children.filter((element: React.ReactElement) => {\n return element.type === Td // TODO: We may need to include this in future --> || component.type === Td.MainCell\n }).length + 1 // +1 because we push the TableAccordionToggleButton\n : null\n\n const trParams =\n !disabled && hasAccordionContent\n ? {\n onClick: toggleOpenTr,\n onMouseEnter: onMouseEnterHandler,\n onMouseLeave: onMouseLeaveHandler,\n onKeyDown: onKeydownHandler,\n }\n : {}\n\n if (hasAccordionContent) {\n // Remove the AccordionContent, and use it outside of the tr\n content = content.filter((element) => {\n const hasContent =\n (element as React.ReactElement<TableTrProps>).type ===\n TableAccordionContent\n return !hasContent\n })\n\n const tdElem = <TableTdAccordionIcon key=\"td-icon\" />\n\n if (tableContext.allProps.accordionChevronPlacement === 'end') {\n content.push(tdElem)\n } else {\n content.unshift(tdElem)\n }\n } else if (tableContext?.allProps?.accordion) {\n const isTh = content.some((element) => {\n return (element as React.ReactElement<TableTrProps>).type === Th\n })\n\n if (isTh) {\n const thElem = <TableThAccordionIcon key=\"th-icon\" />\n\n if (tableContext.allProps.accordionChevronPlacement === 'end') {\n content.push(thElem)\n } else {\n content.unshift(thElem)\n }\n }\n }\n\n return (\n <TrContext.Provider\n value={{\n toggleOpenTr,\n trIsOpen,\n noAnimation,\n countTds,\n hasAccordionContent,\n onOpened,\n onClosed,\n }}\n >\n <tr\n tabIndex={accordionContent && !disabled ? 0 : undefined}\n className={classnames(\n className,\n hasAccordionContent && 'dnb-table__tr--has-accordion-content',\n trIsOpen && 'dnb-table__tr--expanded',\n disabled && 'dnb-table__tr--disabled',\n noAnimation && 'dnb-table__tr--no-animation',\n trIsHover && trHadClick && 'dnb-table__tr--hover'\n )}\n {...trParams}\n {...props}\n >\n {content}\n </tr>\n {accordionContent}\n </TrContext.Provider>\n )\n\n function onKeydownHandler(event: KeyboardEvent) {\n switch (keycode(event)) {\n case 'space':\n case 'enter':\n {\n const target = event.target as HTMLElement\n if (\n document.activeElement !== target ||\n target.tagName === 'TR'\n ) {\n setOpen(!trIsOpen)\n event.preventDefault()\n }\n }\n break\n }\n }\n function onMouseEnterHandler() {\n setHover(true)\n }\n function onMouseLeaveHandler() {\n setHover(false)\n setHadClick(false)\n }\n function toggleOpenTr(\n event: MouseEvent,\n allowInteractiveElement = false\n ) {\n const target = event.target as HTMLElement\n if (\n /**\n * Do not toggle if user clicked an interactive element (input, button, etc.).\n * Interactive to set activeElement on mouseDown, we we can check against it.\n */\n ((document.activeElement !== target &&\n /**\n * Safari on macOS needs this extra check:\n *\n * > For example, on macOS systems, elements that aren't text input elements are not typically focusable by default.\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/activeElement\n */\n target.tagName !== 'INPUT' &&\n target.tagName !== 'LABEL') ||\n allowInteractiveElement) &&\n /**\n * Let the user select text,\n * without triggering the accordion.\n */\n !hasSelectedText()\n ) {\n setOpen(!trIsOpen)\n setHadClick(true)\n\n onClick?.(event)\n }\n }\n}\n\nexport function TableAccordionToggleButton() {\n const trContext = React.useContext(TrContext)\n const allProps = React.useContext(TableContext)?.allProps\n const iconSize =\n allProps.size === 'medium' || allProps.size === 'small'\n ? 'basis'\n : 'medium'\n\n return (\n <span className=\"dnb-table__toggle-button\">\n <IconPrimary icon=\"chevron_down\" size={iconSize} />\n <Button\n className=\"dnb-sr-only\"\n tabIndex={-1}\n aria-label={allProps?.accordionToggleButtonSR}\n aria-expanded={Boolean(trContext?.trIsOpen)}\n on_click={(event) => trContext?.toggleOpenTr(event, true)}\n />\n </span>\n )\n}\n\nfunction TableThAccordionIcon() {\n const tableContext = React.useContext(TableContext)\n return (\n <Th aria-hidden className=\"dnb-table__th__accordion-icon\">\n <div>{tableContext?.allProps?.accordionToggleButtonSR}</div>\n </Th>\n )\n}\n\nfunction TableTdAccordionIcon() {\n return (\n <Td className=\"dnb-table__td__accordion-icon\">\n <TableAccordionToggleButton />\n </Td>\n )\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableAccordion.js","names":["React","classnames","Button","IconPrimary","Th","Td","TableAccordionContext","TableContext","keycode","hasSelectedText","TableAccordionTd","TableAccordionTr","useTableAccordion","children","className","props","expanded","disabled","noAnimation","onClick","onOpened","onClosed","_tableContext$allProp","tableContext","useContext","trIsOpen","setOpen","useState","location","id","hash","trIsHover","setHover","trHadClick","setHadClick","allProps","accordion","headerContent","Children","toArray","addExpandIcon","icon","accordionChevronPlacement","push","unshift","accordionContent","filter","element","isAccordionElement","hasAccordionContent","length","every","isValidElement","trParams","toggleOpenTr","onMouseEnter","onMouseEnterHandler","onMouseLeave","onMouseLeaveHandler","onKeyDown","onKeydownHandler","_Td","createElement","key","TableAccordionToggleButton","isTableHead","_tableContext$allProp2","accordionToggleButtonSR","countTds","type","Provider","value","_extends","tabIndex","undefined","event","target","document","activeElement","tagName","preventDefault","allowInteractiveElement","_React$useContext","tableAccordionContext","iconSize","size","Boolean","on_click","some"],"sources":["../../../../src/components/table/TableAccordion.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport Button from '../button/Button'\nimport IconPrimary from '../icon/IconPrimary'\nimport Th from './TableTh'\nimport Td from './TableTd'\nimport { TableAccordionContext, TableContext } from './TableContext'\nimport keycode from 'keycode'\nimport { hasSelectedText } from '../../shared/helpers'\n\nimport TableAccordionTd from './TableAccordionTd'\nimport TableAccordionTr from './TableAccordionTr'\nimport type { TableAccordionTdProps } from './TableAccordionTd'\nimport type { TableAccordionTrProps } from './TableAccordionTr'\n\ntype TableAccordionContentProps =\n | TableAccordionTdProps\n | TableAccordionTrProps\n\nexport function useTableAccordion({\n children,\n className,\n props,\n expanded,\n disabled,\n noAnimation,\n onClick,\n onOpened,\n onClosed,\n}) {\n const tableContext = React.useContext(TableContext)\n\n const [trIsOpen, setOpen] = React.useState(() => {\n if (typeof expanded === 'boolean') {\n return expanded\n } else if (typeof location !== 'undefined') {\n const id = props?.id\n if (id && '#' + id === location.hash) {\n return true\n }\n }\n\n return false\n })\n const [trIsHover, setHover] = React.useState(false)\n const [trHadClick, setHadClick] = React.useState(false)\n\n if (!tableContext?.allProps?.accordion) {\n return null\n }\n\n let headerContent = React.Children.toArray(children)\n\n const addExpandIcon = (icon) => {\n if (tableContext.allProps.accordionChevronPlacement === 'end') {\n headerContent.push(icon)\n } else {\n headerContent.unshift(icon)\n }\n }\n /**\n * Handle Accordion Content\n */\n const accordionContent = headerContent.filter(\n (element: React.ReactElement) => {\n return isAccordionElement(element)\n }\n ) as React.ReactElement<TableAccordionContentProps>[]\n\n const hasAccordionContent =\n accordionContent.length !== 0 &&\n accordionContent.every((element) => React.isValidElement(element))\n\n const trParams =\n !disabled && hasAccordionContent\n ? {\n onClick: toggleOpenTr,\n onMouseEnter: onMouseEnterHandler,\n onMouseLeave: onMouseLeaveHandler,\n onKeyDown: onKeydownHandler,\n }\n : {}\n\n if (hasAccordionContent) {\n // Remove the AccordionContent, and use it outside of the tr\n headerContent = headerContent.filter((element: React.ReactElement) => {\n return !isAccordionElement(element)\n })\n\n addExpandIcon(\n <Td className=\"dnb-table__td__accordion-icon\" key=\"td-icon\">\n <TableAccordionToggleButton />\n </Td>\n )\n } else if (isTableHead(headerContent)) {\n addExpandIcon(\n <Th\n aria-hidden\n className=\"dnb-table__th__accordion-icon\"\n key=\"th-icon\"\n >\n <div>{tableContext?.allProps?.accordionToggleButtonSR}</div>\n </Th>\n )\n }\n\n const countTds = hasAccordionContent\n ? headerContent.filter((element: React.ReactElement) => {\n return element.type === Td // TODO: We may need to include this in future --> || component.type === Td.MainCell\n }).length\n : null\n\n return (\n <TableAccordionContext.Provider\n value={{\n toggleOpenTr,\n trIsOpen,\n noAnimation,\n countTds,\n hasAccordionContent,\n onOpened,\n onClosed,\n }}\n >\n <tr\n tabIndex={accordionContent && !disabled ? 0 : undefined}\n className={classnames(\n className,\n hasAccordionContent && 'dnb-table__tr--has-accordion-content',\n trIsOpen && 'dnb-table__tr--expanded',\n disabled && 'dnb-table__tr--disabled',\n noAnimation && 'dnb-table__tr--no-animation',\n trIsHover && trHadClick && 'dnb-table__tr--hover'\n )}\n {...trParams}\n {...props}\n >\n {headerContent}\n </tr>\n {accordionContent}\n </TableAccordionContext.Provider>\n )\n\n function onKeydownHandler(event: KeyboardEvent) {\n switch (keycode(event)) {\n case 'space':\n case 'enter':\n {\n const target = event.target as HTMLElement\n if (\n document.activeElement !== target ||\n target.tagName === 'TR'\n ) {\n setOpen(!trIsOpen)\n event.preventDefault()\n }\n }\n break\n }\n }\n function onMouseEnterHandler() {\n setHover(true)\n }\n function onMouseLeaveHandler() {\n setHover(false)\n setHadClick(false)\n }\n function toggleOpenTr(\n event: MouseEvent,\n allowInteractiveElement = false\n ) {\n const target = event.target as HTMLElement\n if (\n /**\n * Do not toggle if user clicked an interactive element (input, button, etc.).\n * Interactive to set activeElement on mouseDown, we we can check against it.\n */\n ((document.activeElement !== target &&\n /**\n * Safari on macOS needs this extra check:\n *\n * > For example, on macOS systems, elements that aren't text input elements are not typically focusable by default.\n * https://developer.mozilla.org/en-US/docs/Web/API/Document/activeElement\n */\n target.tagName !== 'INPUT' &&\n target.tagName !== 'LABEL') ||\n allowInteractiveElement) &&\n /**\n * Let the user select text,\n * without triggering the accordion.\n */\n !hasSelectedText()\n ) {\n setOpen(!trIsOpen)\n setHadClick(true)\n\n onClick?.(event)\n }\n }\n}\n\nexport function TableAccordionToggleButton() {\n const tableAccordionContext = React.useContext(TableAccordionContext)\n const allProps = React.useContext(TableContext)?.allProps\n const iconSize =\n allProps.size === 'medium' || allProps.size === 'small'\n ? 'basis'\n : 'medium'\n\n return (\n <span className=\"dnb-table__toggle-button\">\n <IconPrimary icon=\"chevron_down\" size={iconSize} />\n <Button\n className=\"dnb-sr-only\"\n tabIndex={-1}\n aria-label={allProps?.accordionToggleButtonSR}\n aria-expanded={Boolean(tableAccordionContext?.trIsOpen)}\n on_click={(event) =>\n tableAccordionContext?.toggleOpenTr(event, true)\n }\n />\n </span>\n )\n}\n\nconst isAccordionElement = (element: React.ReactElement) =>\n element.type === TableAccordionTd || element.type === TableAccordionTr\n\nconst isTableHead = (children: React.ReactNode[]) =>\n children.some((element: React.ReactElement) => element.type === Th)\n"],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { TableAccordionTrProps } from './TableAccordionTr';
3
+ export type TableAccordionTdProps = {
4
+ /**
5
+ * Overwrite the internal collected colSpan (add +1)
6
+ */
7
+ colSpan?: number;
8
+ };
9
+ export default function TableAccordionTd(componentProps: TableAccordionTdProps & TableAccordionTrProps & React.TableHTMLAttributes<HTMLTableRowElement>): import("react/jsx-runtime").JSX.Element;
@@ -1,18 +1,14 @@
1
- "use client";
2
-
3
1
  import _extends from "@babel/runtime/helpers/esm/extends";
4
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
5
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
6
4
  const _excluded = ["expanded", "noAnimation", "className", "children", "colSpan", "style"];
7
5
  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
6
  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, { useCallback, useEffect } from 'react';
7
+ import React from 'react';
10
8
  import classnames from 'classnames';
11
- import { useHeightAnimation } from '../height-animation/useHeightAnimation';
12
- import { getClosestScrollViewElement } from '../../shared/component-helper';
13
- import TableContext from './TableContext';
14
- export const TrContext = React.createContext(null);
15
- export default function TableAccordionContent(componentProps) {
9
+ import useTableAnimationHandler from './useTableAnimationHandler';
10
+ import { TableAccordionContext, TableContext } from './TableContext';
11
+ export default function TableAccordionTd(componentProps) {
16
12
  var _React$useContext;
17
13
  const {
18
14
  expanded = null,
@@ -24,59 +20,28 @@ export default function TableAccordionContent(componentProps) {
24
20
  } = componentProps,
25
21
  props = _objectWithoutProperties(componentProps, _excluded);
26
22
  const allProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
27
- const trContext = React.useContext(TrContext);
23
+ const tableAccordionContext = React.useContext(TableAccordionContext);
28
24
  const innerRef = React.useRef(null);
29
25
  const trRef = React.useRef(null);
30
- const [ariaLive, setAriaLive] = React.useState(null);
31
- const open = Boolean(expanded || (trContext === null || trContext === void 0 ? void 0 : trContext.trIsOpen));
32
- const scrollViewHandler = useCallback(function () {
33
- let clip = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : open;
34
- const scollView = getClosestScrollViewElement(trRef.current);
35
- if (scollView instanceof HTMLElement) {
36
- scollView.style.overflow = clip ? 'clip' : '';
37
- }
38
- }, [open]);
39
- useEffect(() => {
40
- if (open) {
41
- scrollViewHandler();
42
- }
43
- }, [open, scrollViewHandler]);
44
- const onOpen = useCallback(state => {
45
- setAriaLive(state ? true : null);
46
- }, []);
47
- const onAnimationEnd = useCallback(state => {
48
- var _trContext$onOpened, _trContext$onClosed;
49
- const event = {
50
- target: trRef.current
51
- };
52
- switch (state) {
53
- case 'opened':
54
- (_trContext$onOpened = trContext.onOpened) === null || _trContext$onOpened === void 0 ? void 0 : _trContext$onOpened.call(trContext, event);
55
- break;
56
- case 'closed':
57
- (_trContext$onClosed = trContext.onClosed) === null || _trContext$onClosed === void 0 ? void 0 : _trContext$onClosed.call(trContext, event);
58
- break;
59
- }
60
- scrollViewHandler(false);
61
- }, [scrollViewHandler, trContext]);
62
26
  const {
27
+ ariaLive,
63
28
  isInDOM,
64
29
  isAnimating,
65
30
  isVisibleParallax,
66
31
  firstPaintStyle
67
- } = useHeightAnimation(innerRef, {
68
- open,
69
- animate: Boolean(!noAnimation && !(trContext !== null && trContext !== void 0 && trContext.noAnimation)),
70
- onOpen,
71
- onAnimationEnd
32
+ } = useTableAnimationHandler({
33
+ innerRef,
34
+ trRef,
35
+ expanded,
36
+ noAnimation
72
37
  });
73
- const countTds = (trContext === null || trContext === void 0 ? void 0 : trContext.countTds) || colSpan;
38
+ const countTds = (tableAccordionContext === null || tableAccordionContext === void 0 ? void 0 : tableAccordionContext.countTds) || colSpan;
74
39
  return React.createElement("tr", _extends({
75
40
  "aria-hidden": !isInDOM,
76
41
  hidden: isInDOM ? undefined : true,
77
42
  role: isInDOM ? 'row' : undefined,
78
43
  style: _objectSpread(_objectSpread({}, firstPaintStyle), style),
79
- className: classnames('dnb-table__tr__accordion-content', className, isInDOM && "dnb-table__tr dnb-table__tr__accordion-content--expanded", isAnimating && 'dnb-table__tr__accordion-content--animating', isVisibleParallax && 'dnb-table__tr__accordion-content--parallax'),
44
+ className: classnames("dnb-table__tr__accordion-content dnb-table__tr__accordion-content--single", className, isInDOM && "dnb-table__tr dnb-table__tr__accordion-content--expanded", isAnimating && 'dnb-table__tr__accordion-content--animating', isVisibleParallax && 'dnb-table__tr__accordion-content--parallax'),
80
45
  ref: trRef
81
46
  }, props), React.createElement("td", {
82
47
  role: isInDOM ? 'cell' : undefined,
@@ -93,4 +58,4 @@ export default function TableAccordionContent(componentProps) {
93
58
  "aria-live": "assertive"
94
59
  }, isInDOM && ariaLive ? allProps === null || allProps === void 0 ? void 0 : allProps.accordionMoreContentSR : null))));
95
60
  }
96
- //# sourceMappingURL=TableAccordionContent.js.map
61
+ //# sourceMappingURL=TableAccordionTd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableAccordionTd.js","names":["React","classnames","useTableAnimationHandler","TableAccordionContext","TableContext","TableAccordionTd","componentProps","_React$useContext","expanded","noAnimation","className","children","colSpan","style","props","_objectWithoutProperties","_excluded","allProps","useContext","tableAccordionContext","innerRef","useRef","trRef","ariaLive","isInDOM","isAnimating","isVisibleParallax","firstPaintStyle","countTds","createElement","_extends","hidden","undefined","role","_objectSpread","ref","accordionMoreContentSR"],"sources":["../../../../src/components/table/TableAccordionTd.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport useTableAnimationHandler from './useTableAnimationHandler'\nimport { TableAccordionContext, TableContext } from './TableContext'\nimport { TableAccordionTrProps } from './TableAccordionTr'\n\nexport type TableAccordionTdProps = {\n /**\n * Overwrite the internal collected colSpan (add +1)\n */\n colSpan?: number\n}\n\nexport default function TableAccordionTd(\n componentProps: TableAccordionTdProps &\n TableAccordionTrProps &\n React.TableHTMLAttributes<HTMLTableRowElement>\n) {\n const {\n expanded = null,\n noAnimation = null,\n className,\n children,\n colSpan = 100,\n style,\n ...props\n } = componentProps\n\n const allProps = React.useContext(TableContext)?.allProps\n const tableAccordionContext = React.useContext(TableAccordionContext)\n const innerRef = React.useRef<HTMLDivElement>(null)\n const trRef = React.useRef<HTMLTableRowElement>(null)\n const {\n ariaLive,\n isInDOM,\n isAnimating,\n isVisibleParallax,\n firstPaintStyle,\n } = useTableAnimationHandler({\n innerRef,\n trRef,\n expanded,\n noAnimation,\n })\n const countTds = tableAccordionContext?.countTds || colSpan\n\n return (\n <tr\n /**\n * VoiceOver needs the \"tr\" to be in the DOM in order to be able to continue reading downwards,\n * even it is either closed or opened. Else VO pretends that this current table row is the end of the table.\n *\n * + All the browsers do count the correct number (childCount) of rows + NVDA counts correct when used with Chrome.\n * - Firefox on Windows does it as well, but not when used with NVDA.\n */\n aria-hidden={!isInDOM} // NVDA and VoiceOver needs \"aria-hidden\" to remove it from the accessibility tree\n hidden={isInDOM ? undefined : true} // NVDA and VoiceOver needs \"hidden\" to be true in order to not count invisible table rows (based on \"tr\" element)\n role={isInDOM ? 'row' : undefined} // NVDA and VoiceOver needs \"hidden\" to be true in order to not count invisible table rows (based on \"role\" element)\n style={{ ...firstPaintStyle, ...style }}\n className={classnames(\n isInDOM && 'dnb-table__tr',\n 'dnb-table__tr__accordion-content',\n 'dnb-table__tr__accordion-content--single',\n isInDOM && 'dnb-table__tr__accordion-content--expanded',\n isAnimating && 'dnb-table__tr__accordion-content--animating',\n isVisibleParallax && 'dnb-table__tr__accordion-content--parallax',\n className\n )}\n ref={trRef}\n {...props}\n >\n <td\n role={isInDOM ? 'cell' : undefined} // remove the \"role\", because the parent role is removed as well\n colSpan={countTds}\n className=\"dnb-table__td\"\n >\n {isInDOM && (\n <div\n className=\"dnb-table__tr__accordion-content__inner\"\n ref={innerRef}\n >\n <div className=\"dnb-table__tr__accordion-content__inner__spacing\">\n {children}\n </div>\n </div>\n )}\n <span className=\"dnb-sr-only\">\n <span aria-live=\"assertive\">\n {isInDOM && ariaLive ? allProps?.accordionMoreContentSR : null}\n </span>\n </span>\n </td>\n </tr>\n )\n}\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,wBAAwB,MAAM,4BAA4B;AACjE,SAASC,qBAAqB,EAAEC,YAAY,QAAQ,gBAAgB;AAUpE,eAAe,SAASC,gBAAgBA,CACtCC,cAEgD,EAChD;EAAA,IAAAC,iBAAA;EACA,MAAM;MACJC,QAAQ,GAAG,IAAI;MACfC,WAAW,GAAG,IAAI;MAClBC,SAAS;MACTC,QAAQ;MACRC,OAAO,GAAG,GAAG;MACbC;IAEF,CAAC,GAAGP,cAAc;IADbQ,KAAK,GAAAC,wBAAA,CACNT,cAAc,EAAAU,SAAA;EAElB,MAAMC,QAAQ,IAAAV,iBAAA,GAAGP,KAAK,CAACkB,UAAU,CAACd,YAAY,CAAC,cAAAG,iBAAA,uBAA9BA,iBAAA,CAAgCU,QAAQ;EACzD,MAAME,qBAAqB,GAAGnB,KAAK,CAACkB,UAAU,CAACf,qBAAqB,CAAC;EACrE,MAAMiB,QAAQ,GAAGpB,KAAK,CAACqB,MAAM,CAAiB,IAAI,CAAC;EACnD,MAAMC,KAAK,GAAGtB,KAAK,CAACqB,MAAM,CAAsB,IAAI,CAAC;EACrD,MAAM;IACJE,QAAQ;IACRC,OAAO;IACPC,WAAW;IACXC,iBAAiB;IACjBC;EACF,CAAC,GAAGzB,wBAAwB,CAAC;IAC3BkB,QAAQ;IACRE,KAAK;IACLd,QAAQ;IACRC;EACF,CAAC,CAAC;EACF,MAAMmB,QAAQ,GAAG,CAAAT,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAES,QAAQ,KAAIhB,OAAO;EAE3D,OACEZ,KAAA,CAAA6B,aAAA,OAAAC,QAAA;IAQE,eAAa,CAACN,OAAQ;IACtBO,MAAM,EAAEP,OAAO,GAAGQ,SAAS,GAAG,IAAK;IACnCC,IAAI,EAAET,OAAO,GAAG,KAAK,GAAGQ,SAAU;IAClCnB,KAAK,EAAAqB,aAAA,CAAAA,aAAA,KAAOP,eAAe,GAAKd,KAAK,CAAG;IACxCH,SAAS,EAAET,UAAU,8EAOnBS,SAAS,EANTc,OAAO,gEAIPC,WAAW,IAAI,6CAA6C,EAC5DC,iBAAiB,IAAI,4CAEvB,CAAE;IACFS,GAAG,EAAEb;EAAM,GACPR,KAAK,GAETd,KAAA,CAAA6B,aAAA;IACEI,IAAI,EAAET,OAAO,GAAG,MAAM,GAAGQ,SAAU;IACnCpB,OAAO,EAAEgB,QAAS;IAClBlB,SAAS,EAAC;EAAe,GAExBc,OAAO,IACNxB,KAAA,CAAA6B,aAAA;IACEnB,SAAS,EAAC,yCAAyC;IACnDyB,GAAG,EAAEf;EAAS,GAEdpB,KAAA,CAAA6B,aAAA;IAAKnB,SAAS,EAAC;EAAkD,GAC9DC,QACE,CACF,CACN,EACDX,KAAA,CAAA6B,aAAA;IAAMnB,SAAS,EAAC;EAAa,GAC3BV,KAAA,CAAA6B,aAAA;IAAM,aAAU;EAAW,GACxBL,OAAO,IAAID,QAAQ,GAAGN,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEmB,sBAAsB,GAAG,IACtD,CACF,CACJ,CACF,CAAC;AAET"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ export type TableAccordionTrProps = {
3
+ /**
4
+ * Set to true to expanded the content on initial render
5
+ */
6
+ expanded?: boolean;
7
+ /**
8
+ * Set to true to skip animation
9
+ * Default: false
10
+ */
11
+ noAnimation?: boolean;
12
+ };
13
+ export default function TableAccordionTr(componentProps: TableAccordionTrProps & React.TableHTMLAttributes<HTMLTableRowElement>): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,51 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ const _excluded = ["expanded", "noAnimation", "className", "children", "style"];
5
+ 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; }
6
+ 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; }
7
+ import React from 'react';
8
+ import classnames from 'classnames';
9
+ import useTableAnimationHandler from './useTableAnimationHandler';
10
+ import { TableContext } from './TableContext';
11
+ import Td from './TableTd';
12
+ export default function TableAccordionTr(componentProps) {
13
+ var _React$useContext;
14
+ const {
15
+ expanded = null,
16
+ noAnimation = null,
17
+ className,
18
+ children,
19
+ style
20
+ } = componentProps,
21
+ props = _objectWithoutProperties(componentProps, _excluded);
22
+ const allProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
23
+ const innerRef = React.useRef(null);
24
+ const trRef = React.useRef(null);
25
+ const {
26
+ ariaLive,
27
+ isInDOM,
28
+ isAnimating,
29
+ isVisibleParallax,
30
+ firstPaintStyle
31
+ } = useTableAnimationHandler({
32
+ innerRef,
33
+ trRef,
34
+ expanded,
35
+ noAnimation
36
+ });
37
+ const expandColumn = React.createElement(Td, null, React.createElement("span", {
38
+ className: "dnb-sr-only"
39
+ }, React.createElement("span", {
40
+ "aria-live": "assertive"
41
+ }, isInDOM && ariaLive ? allProps === null || allProps === void 0 ? void 0 : allProps.accordionMoreContentSR : null)));
42
+ return React.createElement("tr", _extends({
43
+ "aria-hidden": !isInDOM,
44
+ hidden: isInDOM ? undefined : true,
45
+ role: isInDOM ? 'row' : undefined,
46
+ style: _objectSpread(_objectSpread({}, firstPaintStyle), style),
47
+ className: classnames('dnb-table__tr__accordion-content', className, isInDOM && "dnb-table__tr dnb-table__tr__accordion-content--expanded", isAnimating && 'dnb-table__tr__accordion-content--animating', isVisibleParallax && 'dnb-table__tr__accordion-content--parallax'),
48
+ ref: trRef
49
+ }, props), allProps.accordionChevronPlacement !== 'end' && expandColumn, isInDOM && children, allProps.accordionChevronPlacement === 'end' && expandColumn);
50
+ }
51
+ //# sourceMappingURL=TableAccordionTr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableAccordionTr.js","names":["React","classnames","useTableAnimationHandler","TableContext","Td","TableAccordionTr","componentProps","_React$useContext","expanded","noAnimation","className","children","style","props","_objectWithoutProperties","_excluded","allProps","useContext","innerRef","useRef","trRef","ariaLive","isInDOM","isAnimating","isVisibleParallax","firstPaintStyle","expandColumn","createElement","accordionMoreContentSR","_extends","hidden","undefined","role","_objectSpread","ref","accordionChevronPlacement"],"sources":["../../../../src/components/table/TableAccordionTr.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport useTableAnimationHandler from './useTableAnimationHandler'\nimport { TableContext } from './TableContext'\nimport Td from './TableTd'\n\nexport type TableAccordionTrProps = {\n /**\n * Set to true to expanded the content on initial render\n */\n expanded?: boolean\n\n /**\n * Set to true to skip animation\n * Default: false\n */\n noAnimation?: boolean\n}\n\nexport default function TableAccordionTr(\n componentProps: TableAccordionTrProps &\n React.TableHTMLAttributes<HTMLTableRowElement>\n) {\n const {\n expanded = null,\n noAnimation = null,\n className,\n children,\n style,\n ...props\n } = componentProps\n\n const allProps = React.useContext(TableContext)?.allProps\n const innerRef = React.useRef<HTMLDivElement>(null)\n const trRef = React.useRef<HTMLTableRowElement>(null)\n\n const {\n ariaLive,\n isInDOM,\n isAnimating,\n isVisibleParallax,\n firstPaintStyle,\n } = useTableAnimationHandler({\n innerRef,\n trRef,\n expanded,\n noAnimation,\n })\n\n const expandColumn = (\n <Td>\n <span className=\"dnb-sr-only\">\n <span aria-live=\"assertive\">\n {isInDOM && ariaLive ? allProps?.accordionMoreContentSR : null}\n </span>\n </span>\n </Td>\n )\n\n return (\n <tr\n /**\n * VoiceOver needs the \"tr\" to be in the DOM in order to be able to continue reading downwards,\n * even it is either closed or opened. Else VO pretends that this current table row is the end of the table.\n *\n * + All the browsers do count the correct number (childCount) of rows + NVDA counts correct when used with Chrome.\n * - Firefox on Windows does it as well, but not when used with NVDA.\n */\n aria-hidden={!isInDOM} // NVDA and VoiceOver needs \"aria-hidden\" to remove it from the accessibility tree\n hidden={isInDOM ? undefined : true} // NVDA and VoiceOver needs \"hidden\" to be true in order to not count invisible table rows (based on \"tr\" element)\n role={isInDOM ? 'row' : undefined} // NVDA and VoiceOver needs \"hidden\" to be true in order to not count invisible table rows (based on \"role\" element)\n style={{ ...firstPaintStyle, ...style }}\n className={classnames(\n isInDOM && 'dnb-table__tr',\n 'dnb-table__tr__accordion-content',\n isInDOM && 'dnb-table__tr__accordion-content--expanded',\n isAnimating && 'dnb-table__tr__accordion-content--animating',\n isVisibleParallax && 'dnb-table__tr__accordion-content--parallax',\n className\n )}\n ref={trRef}\n {...props}\n >\n {allProps.accordionChevronPlacement !== 'end' && expandColumn}\n {isInDOM && children}\n {allProps.accordionChevronPlacement === 'end' && expandColumn}\n </tr>\n )\n}\n"],"mappings":";;;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,wBAAwB,MAAM,4BAA4B;AACjE,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,OAAOC,EAAE,MAAM,WAAW;AAe1B,eAAe,SAASC,gBAAgBA,CACtCC,cACgD,EAChD;EAAA,IAAAC,iBAAA;EACA,MAAM;MACJC,QAAQ,GAAG,IAAI;MACfC,WAAW,GAAG,IAAI;MAClBC,SAAS;MACTC,QAAQ;MACRC;IAEF,CAAC,GAAGN,cAAc;IADbO,KAAK,GAAAC,wBAAA,CACNR,cAAc,EAAAS,SAAA;EAElB,MAAMC,QAAQ,IAAAT,iBAAA,GAAGP,KAAK,CAACiB,UAAU,CAACd,YAAY,CAAC,cAAAI,iBAAA,uBAA9BA,iBAAA,CAAgCS,QAAQ;EACzD,MAAME,QAAQ,GAAGlB,KAAK,CAACmB,MAAM,CAAiB,IAAI,CAAC;EACnD,MAAMC,KAAK,GAAGpB,KAAK,CAACmB,MAAM,CAAsB,IAAI,CAAC;EAErD,MAAM;IACJE,QAAQ;IACRC,OAAO;IACPC,WAAW;IACXC,iBAAiB;IACjBC;EACF,CAAC,GAAGvB,wBAAwB,CAAC;IAC3BgB,QAAQ;IACRE,KAAK;IACLZ,QAAQ;IACRC;EACF,CAAC,CAAC;EAEF,MAAMiB,YAAY,GAChB1B,KAAA,CAAA2B,aAAA,CAACvB,EAAE,QACDJ,KAAA,CAAA2B,aAAA;IAAMjB,SAAS,EAAC;EAAa,GAC3BV,KAAA,CAAA2B,aAAA;IAAM,aAAU;EAAW,GACxBL,OAAO,IAAID,QAAQ,GAAGL,QAAQ,aAARA,QAAQ,uBAARA,QAAQ,CAAEY,sBAAsB,GAAG,IACtD,CACF,CACJ,CACL;EAED,OACE5B,KAAA,CAAA2B,aAAA,OAAAE,QAAA;IAQE,eAAa,CAACP,OAAQ;IACtBQ,MAAM,EAAER,OAAO,GAAGS,SAAS,GAAG,IAAK;IACnCC,IAAI,EAAEV,OAAO,GAAG,KAAK,GAAGS,SAAU;IAClCnB,KAAK,EAAAqB,aAAA,CAAAA,aAAA,KAAOR,eAAe,GAAKb,KAAK,CAAG;IACxCF,SAAS,EAAET,UAAU,CAEnB,kCAAkC,EAIlCS,SAAS,EALTY,OAAO,gEAGPC,WAAW,IAAI,6CAA6C,EAC5DC,iBAAiB,IAAI,4CAEvB,CAAE;IACFU,GAAG,EAAEd;EAAM,GACPP,KAAK,GAERG,QAAQ,CAACmB,yBAAyB,KAAK,KAAK,IAAIT,YAAY,EAC5DJ,OAAO,IAAIX,QAAQ,EACnBK,QAAQ,CAACmB,yBAAyB,KAAK,KAAK,IAAIT,YAC/C,CAAC;AAET"}
@@ -3,5 +3,5 @@
3
3
  *
4
4
  */
5
5
  import React from 'react';
6
- declare const TableContext: React.Context<any>;
7
- export default TableContext;
6
+ export declare const TableContext: React.Context<any>;
7
+ export declare const TableAccordionContext: React.Context<any>;
@@ -1,4 +1,4 @@
1
1
  import React from 'react';
2
- const TableContext = React.createContext(null);
3
- export default TableContext;
2
+ export const TableContext = React.createContext(null);
3
+ export const TableAccordionContext = React.createContext(null);
4
4
  //# sourceMappingURL=TableContext.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableContext.js","names":["React","TableContext","createContext"],"sources":["../../../../src/components/table/TableContext.tsx"],"sourcesContent":["/**\n * Web TableContext Context\n *\n */\n\nimport React from 'react'\n\nconst TableContext = React.createContext(null)\n\nexport default TableContext\n"],"mappings":"AAKA,OAAOA,KAAK,MAAM,OAAO;AAEzB,MAAMC,YAAY,GAAGD,KAAK,CAACE,aAAa,CAAC,IAAI,CAAC;AAE9C,eAAeD,YAAY"}
1
+ {"version":3,"file":"TableContext.js","names":["React","TableContext","createContext","TableAccordionContext"],"sources":["../../../../src/components/table/TableContext.tsx"],"sourcesContent":["/**\n * Web TableContext Context\n *\n */\n\nimport React from 'react'\n\nexport const TableContext = React.createContext(null)\n\nexport const TableAccordionContext = React.createContext(null)\n"],"mappings":"AAKA,OAAOA,KAAK,MAAM,OAAO;AAEzB,OAAO,MAAMC,YAAY,GAAGD,KAAK,CAACE,aAAa,CAAC,IAAI,CAAC;AAErD,OAAO,MAAMC,qBAAqB,GAAGH,KAAK,CAACE,aAAa,CAAC,IAAI,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import TableAccordionContent from './TableAccordionContent';
2
+ import TableAccordionTd from './TableAccordionTd';
3
3
  export type TableTdProps = {
4
4
  /**
5
5
  * if set to `true`, no padding will be added
@@ -19,6 +19,6 @@ export type TableTdProps = {
19
19
  };
20
20
  declare function Td(componentProps: TableTdProps & React.TdHTMLAttributes<HTMLTableCellElement>): import("react/jsx-runtime").JSX.Element;
21
21
  declare namespace Td {
22
- var AccordionContent: typeof TableAccordionContent;
22
+ var AccordionContent: typeof TableAccordionTd;
23
23
  }
24
24
  export default Td;
@@ -3,7 +3,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutPr
3
3
  const _excluded = ["className", "children", "noSpacing", "spacing"];
4
4
  import React from 'react';
5
5
  import classnames from 'classnames';
6
- import TableAccordionContent from './TableAccordionContent';
6
+ import TableAccordionTd from './TableAccordionTd';
7
7
  export default function Td(componentProps) {
8
8
  const {
9
9
  className,
@@ -17,5 +17,5 @@ export default function Td(componentProps) {
17
17
  className: classnames('dnb-table__td', className, noSpacing && 'dnb-table__td--no-spacing', spacing && `dnb-table__td--spacing-${spacing}`)
18
18
  }, props), children);
19
19
  }
20
- Td.AccordionContent = TableAccordionContent;
20
+ Td.AccordionContent = TableAccordionTd;
21
21
  //# sourceMappingURL=TableTd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableTd.js","names":["React","classnames","TableAccordionContent","Td","componentProps","className","children","noSpacing","spacing","props","_objectWithoutProperties","_excluded","createElement","_extends","role","AccordionContent"],"sources":["../../../../src/components/table/TableTd.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport TableAccordionContent from './TableAccordionContent'\n\nexport type TableTdProps = {\n /**\n * if set to `true`, no padding will be added\n * Default: false\n */\n noSpacing?: boolean\n\n /**\n * Set to `horizontal` for padding on left and right side\n * Default: false\n */\n spacing?: 'horizontal'\n\n /**\n * The content of the component.\n * Default: null\n */\n children?: React.ReactNode\n}\n\nexport default function Td(\n componentProps: TableTdProps &\n React.TdHTMLAttributes<HTMLTableCellElement>\n) {\n const { className, children, noSpacing, spacing, ...props } =\n componentProps\n\n return (\n <td\n role=\"cell\"\n className={classnames(\n 'dnb-table__td',\n noSpacing && 'dnb-table__td--no-spacing',\n spacing && `dnb-table__td--spacing-${spacing}`,\n className\n )}\n {...props}\n >\n {children}\n </td>\n )\n}\n\nTd.AccordionContent = TableAccordionContent\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,qBAAqB,MAAM,yBAAyB;AAsB3D,eAAe,SAASC,EAAEA,CACxBC,cAC8C,EAC9C;EACA,MAAM;MAAEC,SAAS;MAAEC,QAAQ;MAAEC,SAAS;MAAEC;IAAkB,CAAC,GACzDJ,cAAc;IADoCK,KAAK,GAAAC,wBAAA,CACvDN,cAAc,EAAAO,SAAA;EAEhB,OACEX,KAAA,CAAAY,aAAA,OAAAC,QAAA;IACEC,IAAI,EAAC,MAAM;IACXT,SAAS,EAAEJ,UAAU,CACnB,eAAe,EAGfI,SAAS,EAFTE,SAAS,IAAI,2BAA2B,EACxCC,OAAO,IAAK,0BAAyBA,OAAQ,EAE/C;EAAE,GACEC,KAAK,GAERH,QACC,CAAC;AAET;AAEAH,EAAE,CAACY,gBAAgB,GAAGb,qBAAqB"}
1
+ {"version":3,"file":"TableTd.js","names":["React","classnames","TableAccordionTd","Td","componentProps","className","children","noSpacing","spacing","props","_objectWithoutProperties","_excluded","createElement","_extends","role","AccordionContent"],"sources":["../../../../src/components/table/TableTd.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\nimport TableAccordionTd from './TableAccordionTd'\n\nexport type TableTdProps = {\n /**\n * if set to `true`, no padding will be added\n * Default: false\n */\n noSpacing?: boolean\n\n /**\n * Set to `horizontal` for padding on left and right side\n * Default: false\n */\n spacing?: 'horizontal'\n\n /**\n * The content of the component.\n * Default: null\n */\n children?: React.ReactNode\n}\n\nexport default function Td(\n componentProps: TableTdProps &\n React.TdHTMLAttributes<HTMLTableCellElement>\n) {\n const { className, children, noSpacing, spacing, ...props } =\n componentProps\n\n return (\n <td\n role=\"cell\"\n className={classnames(\n 'dnb-table__td',\n noSpacing && 'dnb-table__td--no-spacing',\n spacing && `dnb-table__td--spacing-${spacing}`,\n className\n )}\n {...props}\n >\n {children}\n </td>\n )\n}\n\nTd.AccordionContent = TableAccordionTd\n"],"mappings":";;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,gBAAgB,MAAM,oBAAoB;AAsBjD,eAAe,SAASC,EAAEA,CACxBC,cAC8C,EAC9C;EACA,MAAM;MAAEC,SAAS;MAAEC,QAAQ;MAAEC,SAAS;MAAEC;IAAkB,CAAC,GACzDJ,cAAc;IADoCK,KAAK,GAAAC,wBAAA,CACvDN,cAAc,EAAAO,SAAA;EAEhB,OACEX,KAAA,CAAAY,aAAA,OAAAC,QAAA;IACEC,IAAI,EAAC,MAAM;IACXT,SAAS,EAAEJ,UAAU,CACnB,eAAe,EAGfI,SAAS,EAFTE,SAAS,IAAI,2BAA2B,EACxCC,OAAO,IAAK,0BAAyBA,OAAQ,EAE/C;EAAE,GACEC,KAAK,GAERH,QACC,CAAC;AAET;AAEAH,EAAE,CAACY,gBAAgB,GAAGb,gBAAgB"}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import { TableTdProps } from './TableTd';
3
+ import TableAccordionTr from './TableAccordionTr';
3
4
  export type TableTrProps = {
4
5
  /**
5
6
  * The variant of the tr
@@ -48,7 +49,11 @@ export type TableTrProps = {
48
49
  */
49
50
  children: React.ReactElement<TableTdProps> | Array<React.ReactElement<TableTdProps>>;
50
51
  };
51
- export default function Tr(componentProps: TableTrProps & React.TableHTMLAttributes<HTMLTableRowElement>): import("react/jsx-runtime").JSX.Element;
52
+ declare function Tr(componentProps: TableTrProps & React.TableHTMLAttributes<HTMLTableRowElement>): import("react/jsx-runtime").JSX.Element;
53
+ declare namespace Tr {
54
+ var AccordionContent: typeof TableAccordionTr;
55
+ }
56
+ export default Tr;
52
57
  /**
53
58
  * Handle odd/even on re-render and React.StrictMode
54
59
  */
@@ -4,7 +4,8 @@ const _excluded = ["variant", "noWrap", "expanded", "disabled", "noAnimation", "
4
4
  import React from 'react';
5
5
  import classnames from 'classnames';
6
6
  import { useTableAccordion } from './TableAccordion';
7
- import TableContext from './TableContext';
7
+ import { TableContext } from './TableContext';
8
+ import TableAccordionTr from './TableAccordionTr';
8
9
  export default function Tr(componentProps) {
9
10
  const {
10
11
  variant,
@@ -20,11 +21,12 @@ export default function Tr(componentProps) {
20
21
  } = componentProps,
21
22
  props = _objectWithoutProperties(componentProps, _excluded);
22
23
  const {
23
- currentVariant
24
+ currentVariant,
25
+ isLast
24
26
  } = useHandleTrVariant({
25
27
  variant
26
28
  });
27
- const className = classnames('dnb-table__tr', _className, currentVariant && `dnb-table__tr--${currentVariant}`, noWrap && 'dnb-table--no-wrap');
29
+ const className = classnames('dnb-table__tr', _className, currentVariant && `dnb-table__tr--${currentVariant}`, isLast && 'dnb-table__tr--last', noWrap && 'dnb-table--no-wrap');
28
30
  const accordionTr = useTableAccordion({
29
31
  className,
30
32
  children,
@@ -70,8 +72,10 @@ function useHandleTrVariant({
70
72
  if (!currentVariant) {
71
73
  currentVariant = count % 2 ? 'odd' : 'even';
72
74
  }
75
+ const isLast = typeof countRef !== 'undefined' && countRef.count === count;
73
76
  return {
74
- currentVariant
77
+ currentVariant,
78
+ isLast
75
79
  };
76
80
  }
77
81
  export function useHandleOddEven({
@@ -98,4 +102,5 @@ export function useHandleOddEven({
98
102
  setRerenderAlias({});
99
103
  }
100
104
  }
105
+ Tr.AccordionContent = TableAccordionTr;
101
106
  //# sourceMappingURL=TableTr.js.map