@dnb/eufemia 9.39.1 → 9.41.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 (356) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/cjs/components/accordion/style/_accordion.scss +2 -2
  3. package/cjs/components/accordion/style/dnb-accordion.css +3 -3
  4. package/cjs/components/accordion/style/dnb-accordion.min.css +1 -1
  5. package/cjs/components/autocomplete/style/dnb-autocomplete.css +3 -14
  6. package/cjs/components/autocomplete/style/dnb-autocomplete.min.css +2 -2
  7. package/cjs/components/checkbox/style/dnb-checkbox.css +0 -7
  8. package/cjs/components/checkbox/style/dnb-checkbox.min.css +1 -1
  9. package/cjs/components/date-picker/style/dnb-date-picker.css +3 -35
  10. package/cjs/components/date-picker/style/dnb-date-picker.min.css +2 -2
  11. package/cjs/components/dialog/Dialog.d.ts +1 -1
  12. package/cjs/components/dialog/parts/DialogAction.d.ts +5 -4
  13. package/cjs/components/dialog/parts/DialogAction.js +23 -4
  14. package/cjs/components/dialog/style/_dialog.scss +7 -30
  15. package/cjs/components/dialog/style/dnb-dialog.css +21 -44
  16. package/cjs/components/dialog/style/dnb-dialog.min.css +1 -1
  17. package/cjs/components/dialog/style/themes/dnb-dialog-theme-ui.css +20 -0
  18. package/cjs/components/dialog/style/themes/dnb-dialog-theme-ui.min.css +1 -1
  19. package/cjs/components/dialog/style/themes/dnb-dialog-theme-ui.scss +29 -0
  20. package/cjs/components/drawer/style/_drawer.scss +1 -0
  21. package/cjs/components/drawer/style/dnb-drawer.css +12 -22
  22. package/cjs/components/drawer/style/dnb-drawer.min.css +1 -1
  23. package/cjs/components/drawer/types.d.ts +5 -5
  24. package/cjs/components/dropdown/style/dnb-dropdown.css +0 -7
  25. package/cjs/components/dropdown/style/dnb-dropdown.min.css +1 -1
  26. package/cjs/components/form-label/FormLabel.js +1 -1
  27. package/cjs/components/form-label/style/_form-label.scss +0 -13
  28. package/cjs/components/form-label/style/dnb-form-label.css +0 -7
  29. package/cjs/components/form-label/style/dnb-form-label.min.css +1 -1
  30. package/cjs/components/form-row/style/dnb-form-row.css +0 -7
  31. package/cjs/components/form-row/style/dnb-form-row.min.css +1 -1
  32. package/cjs/components/input/style/_input.scss +4 -0
  33. package/cjs/components/input/style/dnb-input.css +3 -7
  34. package/cjs/components/input/style/dnb-input.min.css +1 -1
  35. package/cjs/components/input-masked/style/dnb-input-masked.css +3 -7
  36. package/cjs/components/input-masked/style/dnb-input-masked.min.css +1 -1
  37. package/cjs/components/lib.d.ts +1 -1
  38. package/cjs/components/modal/Modal.d.ts +2 -2
  39. package/cjs/components/modal/style/dnb-modal.css +11 -22
  40. package/cjs/components/modal/style/dnb-modal.min.css +1 -1
  41. package/cjs/components/number-format/NumberFormat.js +1 -1
  42. package/cjs/components/number-format/NumberUtils.d.ts +3 -0
  43. package/cjs/components/radio/style/dnb-radio.css +0 -7
  44. package/cjs/components/radio/style/dnb-radio.min.css +1 -1
  45. package/cjs/components/slider/style/dnb-slider.css +0 -7
  46. package/cjs/components/slider/style/dnb-slider.min.css +1 -1
  47. package/cjs/components/switch/style/dnb-switch.css +0 -7
  48. package/cjs/components/switch/style/dnb-switch.min.css +1 -1
  49. package/cjs/components/table/Table.d.ts +2 -0
  50. package/cjs/components/table/Table.js +14 -50
  51. package/cjs/components/table/TableAccordion.d.ts +10 -0
  52. package/cjs/components/table/TableAccordion.js +265 -0
  53. package/cjs/components/table/TableAccordionContent.d.ts +18 -0
  54. package/cjs/components/table/TableAccordionContent.js +126 -0
  55. package/cjs/components/table/TableContainer.js +3 -2
  56. package/cjs/components/table/TableScrollView.js +2 -1
  57. package/cjs/components/table/TableStickyHeader.d.ts +4 -1
  58. package/cjs/components/table/TableStickyHeader.js +112 -83
  59. package/cjs/components/table/TableTd.d.ts +6 -1
  60. package/cjs/components/table/TableTd.js +5 -1
  61. package/cjs/components/table/TableTh.d.ts +4 -4
  62. package/cjs/components/table/TableTh.js +6 -1
  63. package/cjs/components/table/TableTr.d.ts +27 -0
  64. package/cjs/components/table/TableTr.js +95 -18
  65. package/cjs/components/table/style/_table-accordion.scss +280 -0
  66. package/cjs/components/table/style/_table-cell.scss +4 -4
  67. package/cjs/components/table/style/_table-container.scss +7 -17
  68. package/cjs/components/table/style/_table-deprecated.scss +74 -0
  69. package/cjs/components/table/style/_table-header-buttons.scss +2 -1
  70. package/cjs/components/table/style/_table-sticky.scss +24 -23
  71. package/cjs/components/table/style/_table-td.scss +46 -38
  72. package/cjs/components/table/style/_table-th.scss +44 -0
  73. package/cjs/components/table/style/_table-tr.scss +8 -2
  74. package/cjs/components/table/style/_table.scss +21 -77
  75. package/cjs/components/table/style/dnb-table.css +538 -271
  76. package/cjs/components/table/style/dnb-table.min.css +11 -2
  77. package/cjs/components/table/style/themes/dnb-table-theme-ui.css +82 -63
  78. package/cjs/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  79. package/cjs/components/table/style/themes/dnb-table-theme-ui.scss +49 -16
  80. package/cjs/components/textarea/style/dnb-textarea.css +0 -7
  81. package/cjs/components/textarea/style/dnb-textarea.min.css +1 -1
  82. package/cjs/components/toggle-button/style/dnb-toggle-button.css +0 -21
  83. package/cjs/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  84. package/cjs/components/visually-hidden/VisuallyHidden.d.ts +2 -11
  85. package/cjs/components/visually-hidden/VisuallyHidden.js +2 -5
  86. package/cjs/components/visually-hidden/style/_visually-hidden.scss +0 -8
  87. package/cjs/components/visually-hidden/style/dnb-visually-hidden.css +10 -42
  88. package/cjs/components/visually-hidden/style/dnb-visually-hidden.min.css +1 -1
  89. package/cjs/elements/Element.d.ts +1 -1
  90. package/cjs/fragments/lib.d.ts +4 -7
  91. package/cjs/fragments/scroll-view/ScrollView.d.ts +12 -11
  92. package/cjs/fragments/scroll-view/ScrollView.js +8 -5
  93. package/cjs/fragments/scroll-view/style/_scroll-view.scss +8 -0
  94. package/cjs/shared/Eufemia.js +1 -1
  95. package/cjs/shared/helpers.js +7 -1
  96. package/cjs/shared/locales/en-GB.d.ts +4 -0
  97. package/cjs/shared/locales/en-GB.js +4 -0
  98. package/cjs/shared/locales/en-US.d.ts +4 -0
  99. package/cjs/shared/locales/index.d.ts +8 -0
  100. package/cjs/shared/locales/nb-NO.d.ts +4 -0
  101. package/cjs/shared/locales/nb-NO.js +4 -0
  102. package/cjs/style/core/helper-classes/helper-classes.scss +3 -0
  103. package/cjs/style/core/utilities.scss +15 -16
  104. package/cjs/style/dnb-ui-basis.css +20 -13
  105. package/cjs/style/dnb-ui-basis.min.css +1 -1
  106. package/cjs/style/dnb-ui-components.css +599 -365
  107. package/cjs/style/dnb-ui-components.min.css +13 -4
  108. package/cjs/style/dnb-ui-core.css +20 -13
  109. package/cjs/style/dnb-ui-core.min.css +1 -1
  110. package/cjs/style/dnb-ui-fragments.css +14 -0
  111. package/cjs/style/dnb-ui-fragments.min.css +1 -1
  112. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.css +102 -63
  113. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +2 -2
  114. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +102 -63
  115. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +2 -2
  116. package/components/accordion/style/_accordion.scss +2 -2
  117. package/components/accordion/style/dnb-accordion.css +3 -3
  118. package/components/accordion/style/dnb-accordion.min.css +1 -1
  119. package/components/autocomplete/style/dnb-autocomplete.css +3 -14
  120. package/components/autocomplete/style/dnb-autocomplete.min.css +2 -2
  121. package/components/checkbox/style/dnb-checkbox.css +0 -7
  122. package/components/checkbox/style/dnb-checkbox.min.css +1 -1
  123. package/components/date-picker/style/dnb-date-picker.css +3 -35
  124. package/components/date-picker/style/dnb-date-picker.min.css +2 -2
  125. package/components/dialog/Dialog.d.ts +1 -1
  126. package/components/dialog/parts/DialogAction.d.ts +5 -4
  127. package/components/dialog/parts/DialogAction.js +19 -11
  128. package/components/dialog/style/_dialog.scss +7 -30
  129. package/components/dialog/style/dnb-dialog.css +21 -44
  130. package/components/dialog/style/dnb-dialog.min.css +1 -1
  131. package/components/dialog/style/themes/dnb-dialog-theme-ui.css +20 -0
  132. package/components/dialog/style/themes/dnb-dialog-theme-ui.min.css +1 -1
  133. package/components/dialog/style/themes/dnb-dialog-theme-ui.scss +29 -0
  134. package/components/drawer/style/_drawer.scss +1 -0
  135. package/components/drawer/style/dnb-drawer.css +12 -22
  136. package/components/drawer/style/dnb-drawer.min.css +1 -1
  137. package/components/drawer/types.d.ts +5 -5
  138. package/components/dropdown/style/dnb-dropdown.css +0 -7
  139. package/components/dropdown/style/dnb-dropdown.min.css +1 -1
  140. package/components/form-label/FormLabel.js +1 -1
  141. package/components/form-label/style/_form-label.scss +0 -13
  142. package/components/form-label/style/dnb-form-label.css +0 -7
  143. package/components/form-label/style/dnb-form-label.min.css +1 -1
  144. package/components/form-row/style/dnb-form-row.css +0 -7
  145. package/components/form-row/style/dnb-form-row.min.css +1 -1
  146. package/components/input/style/_input.scss +4 -0
  147. package/components/input/style/dnb-input.css +3 -7
  148. package/components/input/style/dnb-input.min.css +1 -1
  149. package/components/input-masked/style/dnb-input-masked.css +3 -7
  150. package/components/input-masked/style/dnb-input-masked.min.css +1 -1
  151. package/components/lib.d.ts +1 -1
  152. package/components/modal/Modal.d.ts +2 -2
  153. package/components/modal/style/dnb-modal.css +11 -22
  154. package/components/modal/style/dnb-modal.min.css +1 -1
  155. package/components/number-format/NumberFormat.js +1 -1
  156. package/components/number-format/NumberUtils.d.ts +3 -0
  157. package/components/radio/style/dnb-radio.css +0 -7
  158. package/components/radio/style/dnb-radio.min.css +1 -1
  159. package/components/slider/style/dnb-slider.css +0 -7
  160. package/components/slider/style/dnb-slider.min.css +1 -1
  161. package/components/switch/style/dnb-switch.css +0 -7
  162. package/components/switch/style/dnb-switch.min.css +1 -1
  163. package/components/table/Table.d.ts +2 -0
  164. package/components/table/Table.js +12 -20
  165. package/components/table/TableAccordion.d.ts +10 -0
  166. package/components/table/TableAccordion.js +192 -0
  167. package/components/table/TableAccordionContent.d.ts +18 -0
  168. package/components/table/TableAccordionContent.js +63 -0
  169. package/components/table/TableContainer.js +2 -1
  170. package/components/table/TableScrollView.js +2 -1
  171. package/components/table/TableStickyHeader.d.ts +4 -1
  172. package/components/table/TableStickyHeader.js +112 -51
  173. package/components/table/TableTd.d.ts +6 -1
  174. package/components/table/TableTd.js +3 -1
  175. package/components/table/TableTh.d.ts +4 -4
  176. package/components/table/TableTh.js +6 -1
  177. package/components/table/TableTr.d.ts +27 -0
  178. package/components/table/TableTr.js +59 -16
  179. package/components/table/style/_table-accordion.scss +280 -0
  180. package/components/table/style/_table-cell.scss +4 -4
  181. package/components/table/style/_table-container.scss +7 -17
  182. package/components/table/style/_table-deprecated.scss +74 -0
  183. package/components/table/style/_table-header-buttons.scss +2 -1
  184. package/components/table/style/_table-sticky.scss +24 -23
  185. package/components/table/style/_table-td.scss +46 -38
  186. package/components/table/style/_table-th.scss +44 -0
  187. package/components/table/style/_table-tr.scss +8 -2
  188. package/components/table/style/_table.scss +21 -77
  189. package/components/table/style/dnb-table.css +538 -271
  190. package/components/table/style/dnb-table.min.css +11 -2
  191. package/components/table/style/themes/dnb-table-theme-ui.css +82 -63
  192. package/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  193. package/components/table/style/themes/dnb-table-theme-ui.scss +49 -16
  194. package/components/textarea/style/dnb-textarea.css +0 -7
  195. package/components/textarea/style/dnb-textarea.min.css +1 -1
  196. package/components/toggle-button/style/dnb-toggle-button.css +0 -21
  197. package/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  198. package/components/visually-hidden/VisuallyHidden.d.ts +2 -11
  199. package/components/visually-hidden/VisuallyHidden.js +2 -5
  200. package/components/visually-hidden/style/_visually-hidden.scss +0 -8
  201. package/components/visually-hidden/style/dnb-visually-hidden.css +10 -42
  202. package/components/visually-hidden/style/dnb-visually-hidden.min.css +1 -1
  203. package/elements/Element.d.ts +1 -1
  204. package/es/components/accordion/style/_accordion.scss +2 -2
  205. package/es/components/accordion/style/dnb-accordion.css +3 -3
  206. package/es/components/accordion/style/dnb-accordion.min.css +1 -1
  207. package/es/components/autocomplete/style/dnb-autocomplete.css +3 -14
  208. package/es/components/autocomplete/style/dnb-autocomplete.min.css +2 -2
  209. package/es/components/checkbox/style/dnb-checkbox.css +0 -7
  210. package/es/components/checkbox/style/dnb-checkbox.min.css +1 -1
  211. package/es/components/date-picker/style/dnb-date-picker.css +3 -35
  212. package/es/components/date-picker/style/dnb-date-picker.min.css +2 -2
  213. package/es/components/dialog/Dialog.d.ts +1 -1
  214. package/es/components/dialog/parts/DialogAction.d.ts +5 -4
  215. package/es/components/dialog/parts/DialogAction.js +21 -11
  216. package/es/components/dialog/style/_dialog.scss +7 -30
  217. package/es/components/dialog/style/dnb-dialog.css +21 -44
  218. package/es/components/dialog/style/dnb-dialog.min.css +1 -1
  219. package/es/components/dialog/style/themes/dnb-dialog-theme-ui.css +20 -0
  220. package/es/components/dialog/style/themes/dnb-dialog-theme-ui.min.css +1 -1
  221. package/es/components/dialog/style/themes/dnb-dialog-theme-ui.scss +29 -0
  222. package/es/components/drawer/style/_drawer.scss +1 -0
  223. package/es/components/drawer/style/dnb-drawer.css +12 -22
  224. package/es/components/drawer/style/dnb-drawer.min.css +1 -1
  225. package/es/components/drawer/types.d.ts +5 -5
  226. package/es/components/dropdown/style/dnb-dropdown.css +0 -7
  227. package/es/components/dropdown/style/dnb-dropdown.min.css +1 -1
  228. package/es/components/form-label/FormLabel.js +1 -1
  229. package/es/components/form-label/style/_form-label.scss +0 -13
  230. package/es/components/form-label/style/dnb-form-label.css +0 -7
  231. package/es/components/form-label/style/dnb-form-label.min.css +1 -1
  232. package/es/components/form-row/style/dnb-form-row.css +0 -7
  233. package/es/components/form-row/style/dnb-form-row.min.css +1 -1
  234. package/es/components/input/style/_input.scss +4 -0
  235. package/es/components/input/style/dnb-input.css +3 -7
  236. package/es/components/input/style/dnb-input.min.css +1 -1
  237. package/es/components/input-masked/style/dnb-input-masked.css +3 -7
  238. package/es/components/input-masked/style/dnb-input-masked.min.css +1 -1
  239. package/es/components/lib.d.ts +1 -1
  240. package/es/components/modal/Modal.d.ts +2 -2
  241. package/es/components/modal/style/dnb-modal.css +11 -22
  242. package/es/components/modal/style/dnb-modal.min.css +1 -1
  243. package/es/components/number-format/NumberFormat.js +1 -1
  244. package/es/components/number-format/NumberUtils.d.ts +3 -0
  245. package/es/components/radio/style/dnb-radio.css +0 -7
  246. package/es/components/radio/style/dnb-radio.min.css +1 -1
  247. package/es/components/slider/style/dnb-slider.css +0 -7
  248. package/es/components/slider/style/dnb-slider.min.css +1 -1
  249. package/es/components/switch/style/dnb-switch.css +0 -7
  250. package/es/components/switch/style/dnb-switch.min.css +1 -1
  251. package/es/components/table/Table.d.ts +2 -0
  252. package/es/components/table/Table.js +13 -14
  253. package/es/components/table/TableAccordion.d.ts +10 -0
  254. package/es/components/table/TableAccordion.js +175 -0
  255. package/es/components/table/TableAccordionContent.d.ts +18 -0
  256. package/es/components/table/TableAccordionContent.js +54 -0
  257. package/es/components/table/TableContainer.js +2 -1
  258. package/es/components/table/TableScrollView.js +2 -1
  259. package/es/components/table/TableStickyHeader.d.ts +4 -1
  260. package/es/components/table/TableStickyHeader.js +112 -48
  261. package/es/components/table/TableTd.d.ts +6 -1
  262. package/es/components/table/TableTd.js +3 -1
  263. package/es/components/table/TableTh.d.ts +4 -4
  264. package/es/components/table/TableTh.js +6 -1
  265. package/es/components/table/TableTr.d.ts +27 -0
  266. package/es/components/table/TableTr.js +51 -15
  267. package/es/components/table/style/_table-accordion.scss +280 -0
  268. package/es/components/table/style/_table-cell.scss +4 -4
  269. package/es/components/table/style/_table-container.scss +7 -17
  270. package/es/components/table/style/_table-deprecated.scss +74 -0
  271. package/es/components/table/style/_table-header-buttons.scss +2 -1
  272. package/es/components/table/style/_table-sticky.scss +24 -23
  273. package/es/components/table/style/_table-td.scss +46 -38
  274. package/es/components/table/style/_table-th.scss +44 -0
  275. package/es/components/table/style/_table-tr.scss +8 -2
  276. package/es/components/table/style/_table.scss +21 -77
  277. package/es/components/table/style/dnb-table.css +538 -271
  278. package/es/components/table/style/dnb-table.min.css +11 -2
  279. package/es/components/table/style/themes/dnb-table-theme-ui.css +82 -63
  280. package/es/components/table/style/themes/dnb-table-theme-ui.min.css +1 -1
  281. package/es/components/table/style/themes/dnb-table-theme-ui.scss +49 -16
  282. package/es/components/textarea/style/dnb-textarea.css +0 -7
  283. package/es/components/textarea/style/dnb-textarea.min.css +1 -1
  284. package/es/components/toggle-button/style/dnb-toggle-button.css +0 -21
  285. package/es/components/toggle-button/style/dnb-toggle-button.min.css +1 -1
  286. package/es/components/visually-hidden/VisuallyHidden.d.ts +2 -11
  287. package/es/components/visually-hidden/VisuallyHidden.js +2 -5
  288. package/es/components/visually-hidden/style/_visually-hidden.scss +0 -8
  289. package/es/components/visually-hidden/style/dnb-visually-hidden.css +10 -42
  290. package/es/components/visually-hidden/style/dnb-visually-hidden.min.css +1 -1
  291. package/es/elements/Element.d.ts +1 -1
  292. package/es/fragments/lib.d.ts +4 -7
  293. package/es/fragments/scroll-view/ScrollView.d.ts +12 -11
  294. package/es/fragments/scroll-view/ScrollView.js +7 -3
  295. package/es/fragments/scroll-view/style/_scroll-view.scss +8 -0
  296. package/es/shared/Eufemia.js +1 -1
  297. package/es/shared/helpers.js +7 -1
  298. package/es/shared/locales/en-GB.d.ts +4 -0
  299. package/es/shared/locales/en-GB.js +4 -0
  300. package/es/shared/locales/en-US.d.ts +4 -0
  301. package/es/shared/locales/index.d.ts +8 -0
  302. package/es/shared/locales/nb-NO.d.ts +4 -0
  303. package/es/shared/locales/nb-NO.js +4 -0
  304. package/es/style/core/helper-classes/helper-classes.scss +3 -0
  305. package/es/style/core/utilities.scss +15 -16
  306. package/es/style/dnb-ui-basis.css +20 -13
  307. package/es/style/dnb-ui-basis.min.css +1 -1
  308. package/es/style/dnb-ui-components.css +599 -365
  309. package/es/style/dnb-ui-components.min.css +13 -4
  310. package/es/style/dnb-ui-core.css +20 -13
  311. package/es/style/dnb-ui-core.min.css +1 -1
  312. package/es/style/dnb-ui-fragments.css +14 -0
  313. package/es/style/dnb-ui-fragments.min.css +1 -1
  314. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.css +102 -63
  315. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +2 -2
  316. package/es/style/themes/theme-ui/dnb-theme-ui.css +102 -63
  317. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +2 -2
  318. package/esm/dnb-ui-basis.min.mjs +2 -2
  319. package/esm/dnb-ui-components.min.mjs +4 -4
  320. package/esm/dnb-ui-elements.min.mjs +4 -4
  321. package/esm/dnb-ui-extensions.min.mjs +4 -4
  322. package/esm/dnb-ui-lib.min.mjs +4 -4
  323. package/esm/dnb-ui-web-components.min.mjs +4 -4
  324. package/fragments/lib.d.ts +4 -7
  325. package/fragments/scroll-view/ScrollView.d.ts +12 -11
  326. package/fragments/scroll-view/ScrollView.js +8 -4
  327. package/fragments/scroll-view/style/_scroll-view.scss +8 -0
  328. package/package.json +2 -2
  329. package/shared/Eufemia.js +1 -1
  330. package/shared/helpers.js +7 -1
  331. package/shared/locales/en-GB.d.ts +4 -0
  332. package/shared/locales/en-GB.js +4 -0
  333. package/shared/locales/en-US.d.ts +4 -0
  334. package/shared/locales/index.d.ts +8 -0
  335. package/shared/locales/nb-NO.d.ts +4 -0
  336. package/shared/locales/nb-NO.js +4 -0
  337. package/style/core/helper-classes/helper-classes.scss +3 -0
  338. package/style/core/utilities.scss +15 -16
  339. package/style/dnb-ui-basis.css +20 -13
  340. package/style/dnb-ui-basis.min.css +1 -1
  341. package/style/dnb-ui-components.css +599 -365
  342. package/style/dnb-ui-components.min.css +13 -4
  343. package/style/dnb-ui-core.css +20 -13
  344. package/style/dnb-ui-core.min.css +1 -1
  345. package/style/dnb-ui-fragments.css +14 -0
  346. package/style/dnb-ui-fragments.min.css +1 -1
  347. package/style/themes/theme-eiendom/dnb-theme-eiendom.css +102 -63
  348. package/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +2 -2
  349. package/style/themes/theme-ui/dnb-theme-ui.css +102 -63
  350. package/style/themes/theme-ui/dnb-theme-ui.min.css +2 -2
  351. package/umd/dnb-ui-basis.min.js +3 -3
  352. package/umd/dnb-ui-components.min.js +5 -5
  353. package/umd/dnb-ui-elements.min.js +4 -4
  354. package/umd/dnb-ui-extensions.min.js +5 -5
  355. package/umd/dnb-ui-lib.min.js +5 -5
  356. package/umd/dnb-ui-web-components.min.js +5 -5
@@ -1,7 +1,7 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
3
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
- const _excluded = ["className", "children", "size", "skeleton", "variant", "sticky", "stickyOffset", "fixed", "border", "outline"];
4
+ const _excluded = ["className", "children", "size", "skeleton", "variant", "sticky", "stickyOffset", "fixed", "border", "outline", "accordion", "accordionChevronPlacement"];
5
5
 
6
6
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
7
7
 
@@ -17,6 +17,7 @@ import { extendPropsWithContext, validateDOMAttributes } from '../../shared/comp
17
17
  import ScrollView from './TableScrollView';
18
18
  import TableContext from './TableContext';
19
19
  import { useStickyHeader, StickyHelper } from './TableStickyHeader';
20
+ import { useHandleOddEven } from './TableTr';
20
21
  export { StickyHelper };
21
22
  export { ScrollView };
22
23
  export const defaultProps = {
@@ -40,19 +41,23 @@ const Table = componentProps => {
40
41
  stickyOffset,
41
42
  fixed,
42
43
  border,
43
- outline
44
+ outline,
45
+ accordion,
46
+ accordionChevronPlacement
44
47
  } = allProps,
45
48
  props = _objectWithoutProperties(allProps, _excluded);
46
49
 
47
- const skeletonClasses = createSkeletonClass('font', skeleton, context);
48
- const spacingClasses = createSpacingClasses(props);
49
50
  const {
50
51
  elementRef
51
52
  } = useStickyHeader(allProps);
52
- const trCountRef = React.useRef({
53
- count: 0
53
+ const {
54
+ trCountRef,
55
+ rerenderAlias
56
+ } = useHandleOddEven({
57
+ children
54
58
  });
55
- const [rerenderAlias, setRerenderAlias] = React.useState({});
59
+ const skeletonClasses = createSkeletonClass('font', skeleton, context);
60
+ const spacingClasses = createSpacingClasses(props);
56
61
  validateDOMAttributes(allProps, props);
57
62
  return React.createElement(Provider, {
58
63
  skeleton: Boolean(skeleton)
@@ -60,18 +65,12 @@ const Table = componentProps => {
60
65
  value: {
61
66
  trCountRef,
62
67
  rerenderAlias,
63
- forceRerender,
64
68
  allProps: _objectSpread(_objectSpread({}, context.getTranslation(componentProps).Table), allProps)
65
69
  }
66
70
  }, React.createElement("table", _extends({
67
- className: classnames('dnb-table', spacingClasses, skeletonClasses, className, variant && `dnb-table__variant--${variant}`, size && `dnb-table__size--${size}`, sticky && `dnb-table--sticky`, fixed && `dnb-table--fixed`, border && `dnb-table--border`, outline && `dnb-table--outline`),
71
+ className: classnames('dnb-table', spacingClasses, skeletonClasses, className, variant && `dnb-table__variant--${variant}`, size && `dnb-table__size--${size}`, sticky && 'dnb-table--sticky', fixed && 'dnb-table--fixed', border && 'dnb-table--border', outline && 'dnb-table--outline', accordion && 'dnb-table--accordion'),
68
72
  ref: elementRef
69
73
  }, props), children)));
70
-
71
- function forceRerender() {
72
- trCountRef.current.count = 0;
73
- setRerenderAlias({});
74
- }
75
74
  };
76
75
 
77
76
  export default Table;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ export declare function useTableAccordion({ children, className, props, expanded, disabled, noAnimation, }: {
3
+ children: any;
4
+ className: any;
5
+ props: any;
6
+ expanded: any;
7
+ disabled: any;
8
+ noAnimation: any;
9
+ }): JSX.Element;
10
+ export declare function TableAccordionToggleButton(): JSX.Element;
@@ -0,0 +1,175 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+
3
+ var _TableTdAccordionIcon, _TableThAccordionIcon, _Td;
4
+
5
+ import React from 'react';
6
+ import classnames from 'classnames';
7
+ import Button from '../button/Button';
8
+ import IconPrimary from '../icon/IconPrimary';
9
+ import Th from './TableTh';
10
+ import Td from './TableTd';
11
+ import TableContext from './TableContext';
12
+ import keycode from 'keycode';
13
+ import { hasSelectedText } from '../../shared/helpers';
14
+ import TableAccordionContent, { TrContext } from './TableAccordionContent';
15
+ export function useTableAccordion({
16
+ children,
17
+ className,
18
+ props,
19
+ expanded,
20
+ disabled,
21
+ noAnimation
22
+ }) {
23
+ var _tableContext$allProp, _tableContext$allProp2;
24
+
25
+ const tableContext = React.useContext(TableContext);
26
+ const [trIsOpen, setOpen] = React.useState(() => {
27
+ if (typeof expanded === 'boolean') {
28
+ return expanded;
29
+ } else if (typeof location !== 'undefined') {
30
+ const id = props === null || props === void 0 ? void 0 : props.id;
31
+
32
+ if (id && '#' + id === location.hash) {
33
+ return true;
34
+ }
35
+ }
36
+
37
+ return false;
38
+ });
39
+ const [trIsHover, setHover] = React.useState(false);
40
+ const [trHadClick, setHadClick] = React.useState(false);
41
+ let content = React.Children.toArray(children);
42
+
43
+ if (!(tableContext !== null && tableContext !== void 0 && (_tableContext$allProp = tableContext.allProps) !== null && _tableContext$allProp !== void 0 && _tableContext$allProp.accordion)) {
44
+ return null;
45
+ }
46
+
47
+ const accordionContent = content.find(element => {
48
+ return element.type === TableAccordionContent;
49
+ });
50
+ const hasAccordionContent = React.isValidElement(accordionContent);
51
+ const countTds = hasAccordionContent ? children.filter(element => {
52
+ return element.type === Td;
53
+ }).length + 1 : null;
54
+ const trParams = !disabled && hasAccordionContent ? {
55
+ onClick: toggleOpenTr,
56
+ onMouseEnter: onMouseEnterHandler,
57
+ onMouseLeave: onMouseLeaveHandler,
58
+ onKeyDown: onKeydownHandler
59
+ } : {};
60
+
61
+ if (hasAccordionContent) {
62
+ content = content.filter(element => {
63
+ const hasContent = element.type === TableAccordionContent;
64
+ return !hasContent;
65
+ });
66
+
67
+ const tdElem = _TableTdAccordionIcon || (_TableTdAccordionIcon = React.createElement(TableTdAccordionIcon, {
68
+ key: "td-icon"
69
+ }));
70
+
71
+ if (tableContext.allProps.accordionChevronPlacement === 'end') {
72
+ content.push(tdElem);
73
+ } else {
74
+ content.unshift(tdElem);
75
+ }
76
+ } else if (tableContext !== null && tableContext !== void 0 && (_tableContext$allProp2 = tableContext.allProps) !== null && _tableContext$allProp2 !== void 0 && _tableContext$allProp2.accordion) {
77
+ const isTh = content.some(element => {
78
+ return element.type === Th;
79
+ });
80
+
81
+ if (isTh) {
82
+ const thElem = _TableThAccordionIcon || (_TableThAccordionIcon = React.createElement(TableThAccordionIcon, {
83
+ key: "th-icon"
84
+ }));
85
+
86
+ if (tableContext.allProps.accordionChevronPlacement === 'end') {
87
+ content.push(thElem);
88
+ } else {
89
+ content.unshift(thElem);
90
+ }
91
+ }
92
+ }
93
+
94
+ return React.createElement(TrContext.Provider, {
95
+ value: {
96
+ toggleOpenTr,
97
+ trIsOpen,
98
+ noAnimation,
99
+ countTds,
100
+ hasAccordionContent
101
+ }
102
+ }, React.createElement("tr", _extends({
103
+ tabIndex: accordionContent && !disabled ? 0 : undefined,
104
+ 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')
105
+ }, trParams, props), content), accordionContent);
106
+
107
+ function onKeydownHandler(event) {
108
+ switch (keycode(event)) {
109
+ case 'space':
110
+ case 'enter':
111
+ {
112
+ const target = event.target;
113
+
114
+ if (document.activeElement !== target || target.tagName === 'TR') {
115
+ setOpen(!trIsOpen);
116
+ event.preventDefault();
117
+ }
118
+ }
119
+ break;
120
+ }
121
+ }
122
+
123
+ function onMouseEnterHandler() {
124
+ setHover(true);
125
+ }
126
+
127
+ function onMouseLeaveHandler() {
128
+ setHover(false);
129
+ setHadClick(false);
130
+ }
131
+
132
+ function toggleOpenTr(event) {
133
+ const target = event.target;
134
+
135
+ if (document.activeElement !== target && target.tagName !== 'INPUT' && !hasSelectedText()) {
136
+ setOpen(!trIsOpen);
137
+ setHadClick(true);
138
+ }
139
+ }
140
+ }
141
+ export function TableAccordionToggleButton() {
142
+ var _React$useContext;
143
+
144
+ const trContext = React.useContext(TrContext);
145
+ const allProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
146
+ const iconSize = allProps.size === 'medium' || allProps.size === 'small' ? 'basis' : 'medium';
147
+ return React.createElement("span", {
148
+ className: "dnb-table__toggle-button"
149
+ }, React.createElement(IconPrimary, {
150
+ icon: "chevron_down",
151
+ size: iconSize
152
+ }), React.createElement(Button, {
153
+ className: "dnb-sr-only",
154
+ tabIndex: -1,
155
+ "aria-label": allProps === null || allProps === void 0 ? void 0 : allProps.accordionToggleButtonSR,
156
+ "aria-expanded": Boolean(trContext === null || trContext === void 0 ? void 0 : trContext.trIsOpen),
157
+ on_click: trContext === null || trContext === void 0 ? void 0 : trContext.toggleOpenTr
158
+ }));
159
+ }
160
+
161
+ function TableThAccordionIcon() {
162
+ var _tableContext$allProp3;
163
+
164
+ const tableContext = React.useContext(TableContext);
165
+ return React.createElement(Th, {
166
+ "aria-hidden": true,
167
+ className: "dnb-table__th__accordion-icon"
168
+ }, 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));
169
+ }
170
+
171
+ function TableTdAccordionIcon() {
172
+ return _Td || (_Td = React.createElement(Td, {
173
+ className: "dnb-table__td__accordion-icon"
174
+ }, React.createElement(TableAccordionToggleButton, null)));
175
+ }
@@ -0,0 +1,18 @@
1
+ import React from 'react';
2
+ export declare const TrContext: React.Context<any>;
3
+ export declare type TableAccordionContentProps = {
4
+ /**
5
+ * Set to true to expanded the content on initial render
6
+ */
7
+ expanded?: boolean;
8
+ /**
9
+ * Set to true to skip animation
10
+ * Default: false
11
+ */
12
+ noAnimation?: boolean;
13
+ /**
14
+ * Overwrite the internal collected colSpan (add +1)
15
+ */
16
+ colSpan?: number;
17
+ };
18
+ export default function TableAccordionContent(componentProps: TableAccordionContentProps & React.TableHTMLAttributes<HTMLTableRowElement>): JSX.Element;
@@ -0,0 +1,54 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ const _excluded = ["expanded", "noAnimation", "className", "children", "colSpan"];
4
+ import React from 'react';
5
+ import classnames from 'classnames';
6
+ import { useHeightAnimation } from '../height-animation/useHeightAnimation';
7
+ import TableContext from './TableContext';
8
+ export const TrContext = React.createContext(null);
9
+ export default function TableAccordionContent(componentProps) {
10
+ var _React$useContext;
11
+
12
+ const {
13
+ expanded = null,
14
+ noAnimation = null,
15
+ className,
16
+ children,
17
+ colSpan = 100
18
+ } = componentProps,
19
+ props = _objectWithoutProperties(componentProps, _excluded);
20
+
21
+ const allProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
22
+ const trContext = React.useContext(TrContext);
23
+ const innerRef = React.useRef(null);
24
+ const [ariaLive, setAriaLive] = React.useState(null);
25
+ const {
26
+ isInDOM,
27
+ isAnimating,
28
+ isVisibleParallax
29
+ } = useHeightAnimation(innerRef, {
30
+ open: Boolean(expanded || (trContext === null || trContext === void 0 ? void 0 : trContext.trIsOpen)),
31
+ animate: Boolean(!noAnimation && !(trContext !== null && trContext !== void 0 && trContext.noAnimation)),
32
+ onOpen: state => setAriaLive(state ? true : null)
33
+ });
34
+ const countTds = (trContext === null || trContext === void 0 ? void 0 : trContext.countTds) || colSpan;
35
+ return React.createElement("tr", _extends({
36
+ "aria-hidden": !isInDOM,
37
+ hidden: isInDOM ? undefined : true,
38
+ role: isInDOM ? 'row' : undefined,
39
+ 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')
40
+ }, props), React.createElement("td", {
41
+ role: isInDOM ? 'cell' : undefined,
42
+ colSpan: countTds,
43
+ className: "dnb-table__td"
44
+ }, isInDOM && React.createElement("div", {
45
+ className: "dnb-table__tr__accordion_content__inner",
46
+ ref: innerRef
47
+ }, React.createElement("div", {
48
+ className: "dnb-table__tr__accordion_content__inner__spacing"
49
+ }, children)), React.createElement("span", {
50
+ className: "dnb-sr-only"
51
+ }, React.createElement("span", {
52
+ "aria-live": "assertive"
53
+ }, isInDOM && !ariaLive ? allProps === null || allProps === void 0 ? void 0 : allProps.accordionMoreContentSR : null))));
54
+ }
@@ -6,7 +6,7 @@ const _excluded = ["children", "className"],
6
6
  _excluded4 = ["children", "className"];
7
7
  import React from 'react';
8
8
  import classnames from 'classnames';
9
- import ScrollView from '../../fragments/scroll-view/ScrollView';
9
+ import TableScrollView from './TableScrollView';
10
10
  import { createSpacingClasses } from '../space/SpacingUtils';
11
11
  import { validateDOMAttributes } from '../../shared/component-helper';
12
12
  export default function TableContainer(props) {
@@ -18,6 +18,7 @@ export default function TableContainer(props) {
18
18
 
19
19
  const spacingClasses = createSpacingClasses(props);
20
20
  validateDOMAttributes(props, rest);
21
+ const ScrollView = TableScrollView;
21
22
  return React.createElement("section", _extends({
22
23
  className: classnames('dnb-table__container', className, spacingClasses)
23
24
  }, rest), React.createElement(ScrollView, null, children));
@@ -12,6 +12,7 @@ export default function TableScrollView(props) {
12
12
  rest = _objectWithoutProperties(props, _excluded);
13
13
 
14
14
  return React.createElement(ScrollView, _extends({
15
- className: classnames('dnb-table__scroll-view', className)
15
+ className: classnames('dnb-table__scroll-view', className),
16
+ interactive: true
16
17
  }, rest), children);
17
18
  }
@@ -4,7 +4,7 @@ export declare type StickyTableHeaderProps = {
4
4
  * Makes the Table header sticky
5
5
  * Default: false
6
6
  */
7
- sticky?: boolean;
7
+ sticky?: boolean | 'css-position';
8
8
  /**
9
9
  * The offset from top in rem or em unit
10
10
  * Default: false
@@ -18,4 +18,7 @@ export declare type StickyTableHeaderProps = {
18
18
  export declare const useStickyHeader: ({ sticky, stickyOffset, sticky_offset, }: StickyTableHeaderProps) => {
19
19
  elementRef: React.MutableRefObject<HTMLTableElement>;
20
20
  };
21
+ /**
22
+ * Deprecated in v10
23
+ */
21
24
  export declare const StickyHelper: () => JSX.Element;
@@ -1,7 +1,8 @@
1
1
  var _tr;
2
2
 
3
3
  import React from 'react';
4
- import { warn } from '../../shared/component-helper';
4
+ import { getPreviousSibling, warn } from '../../shared/component-helper';
5
+ import { getOffsetTop } from '../../shared/helpers';
5
6
  export const useStickyHeader = ({
6
7
  sticky,
7
8
  stickyOffset,
@@ -12,87 +13,150 @@ export const useStickyHeader = ({
12
13
  }
13
14
 
14
15
  const elementRef = React.useRef();
15
- const intersectionObserver = React.useRef(null);
16
16
  React.useEffect(() => {
17
17
  if (sticky) {
18
- if (typeof IntersectionObserver === 'undefined') {
19
- stickyWarning('IntersectionObserver not supported');
20
- return;
21
- }
22
-
23
- if (!elementRef.current) {
24
- stickyWarning('No ref element given');
25
- }
26
-
27
- const tableElem = elementRef.current;
28
- let thHeight = 80;
18
+ let isSticky = false;
19
+ let thHeight = 0;
29
20
  let offsetTopPx = 0;
21
+ let tableOffset = 0;
22
+ let tableHeight = 0;
23
+ let totalOffset = 0;
24
+ let hasScrollbar = null;
25
+ let scrollViewElem = null;
26
+ let timeout = null;
30
27
 
31
28
  try {
29
+ const tableElem = elementRef.current;
32
30
  const trElem = tableElem.querySelector('thead > tr:first-of-type, thead > .dnb-table__tr:first-of-type');
33
- offsetTopPx = parseFloat(String(stickyOffset || '0'));
31
+ const thElem = getThElement(tableElem);
32
+ const inIframe = window.self !== window.top;
33
+
34
+ const setSizes = () => {
35
+ offsetTopPx = parseFloat(String(stickyOffset)) || 0;
36
+
37
+ if (offsetTopPx > 0) {
38
+ if (String(stickyOffset).includes('rem')) {
39
+ offsetTopPx = Math.round(offsetTopPx * 16);
40
+ }
41
+ }
42
+
43
+ const modalElem = getPreviousSibling('.dnb-modal__content', tableElem);
34
44
 
35
- if (offsetTopPx > 0) {
36
- if (String(stickyOffset).includes('em')) {
37
- offsetTopPx = Math.round(offsetTopPx * 16);
38
- trElem.style.setProperty('--table-top', String(stickyOffset));
45
+ if (modalElem) {
46
+ scrollViewElem = modalElem.querySelector('.dnb-scroll-view');
47
+
48
+ if (offsetTopPx === 0) {
49
+ offsetTopPx = modalElem.querySelector('.dnb-modal__header__bar').offsetHeight || 0;
50
+ }
39
51
  } else {
52
+ const scrollElem = getPreviousSibling('.dnb-scroll-view', tableElem);
53
+
54
+ if (scrollElem) {
55
+ hasScrollbar = scrollElem.scrollHeight - 1 > scrollElem.offsetHeight;
56
+
57
+ if (hasScrollbar) {
58
+ scrollViewElem = scrollElem;
59
+ }
60
+ }
61
+ }
62
+
63
+ thHeight = thElem.offsetHeight;
64
+ tableHeight = tableElem.offsetHeight;
65
+ tableOffset = getOffsetTop(tableElem);
66
+ totalOffset = tableOffset - (inIframe ? 0 : offsetTopPx);
67
+
68
+ if (sticky === 'css-position') {
40
69
  trElem.style.setProperty('--table-top', `${offsetTopPx / 16}rem`);
41
70
  }
42
- }
71
+ };
43
72
 
44
- const thElem = getThElement(tableElem);
45
- thHeight = thElem && parseFloat(window.getComputedStyle(thElem).height) || thHeight;
46
- intersectionObserver.current = new IntersectionObserver(entries => {
47
- const [entry] = entries;
73
+ let offset = 0;
74
+
75
+ const onScroll = () => {
76
+ if (scrollViewElem) {
77
+ offset = scrollViewElem.scrollTop;
78
+ } else {
79
+ offset = window.pageYOffset;
80
+ }
81
+
82
+ offset -= hasScrollbar ? offsetTopPx : totalOffset;
83
+
84
+ if (offset > 0 && offset < tableHeight - thHeight) {
85
+ if (sticky !== 'css-position') {
86
+ trElem.style.setProperty('--table-offset', String(offset) + 'px');
87
+ }
88
+
89
+ if (!isSticky) {
90
+ isSticky = true;
91
+ trElem.classList.add('is-sticky');
92
+ }
93
+ } else {
94
+ if (isSticky) {
95
+ isSticky = false;
96
+
97
+ if (offset <= 0) {
98
+ if (sticky !== 'css-position') {
99
+ trElem.style.removeProperty('--table-offset');
100
+ }
101
+ }
102
+
103
+ trElem.classList.remove('is-sticky');
104
+ }
105
+ }
106
+ };
107
+
108
+ const onResize = () => {
109
+ setSizes();
110
+ onScroll();
111
+ };
48
112
 
113
+ const applyObservers = () => {
49
114
  try {
50
- if (entry.isIntersecting) {
51
- trElem.classList.remove('show-shadow');
52
- } else {
53
- trElem.classList.add('show-shadow');
115
+ trElem.classList.add('sticky');
116
+
117
+ if (sticky === 'css-position') {
118
+ trElem.classList.add('css-position');
54
119
  }
120
+
121
+ setSizes();
122
+ const scrollElem = scrollViewElem || document;
123
+ scrollElem.addEventListener('scroll', onScroll);
124
+ window.addEventListener('resize', onResize);
55
125
  } catch (e) {
56
126
  stickyWarning(e);
57
127
  }
58
- }, {
59
- rootMargin: `-${thHeight + offsetTopPx}px 0px 0px 0px`
60
- });
61
- trElem.classList.add('sticky');
62
- const tdElem = tableElem.querySelector('tbody > tr.dnb-table__sticky-helper > td:first-of-type') || getTdElement(tableElem);
63
-
64
- if (tdElem) {
65
- intersectionObserver.current.observe(tdElem);
66
- }
128
+ };
129
+
130
+ timeout = setTimeout(applyObservers, 100);
131
+ return () => {
132
+ clearTimeout(timeout);
133
+ document.removeEventListener('scroll', onScroll);
134
+ window.removeEventListener('resize', onResize);
135
+ };
67
136
  } catch (e) {
68
137
  stickyWarning(e);
69
138
  }
70
139
  }
71
-
72
- return () => {
73
- var _intersectionObserver;
74
-
75
- (_intersectionObserver = intersectionObserver.current) === null || _intersectionObserver === void 0 ? void 0 : _intersectionObserver.disconnect();
76
- };
77
140
  }, [elementRef, sticky, stickyOffset]);
78
141
  return {
79
142
  elementRef
80
143
  };
81
144
  };
82
145
  export const StickyHelper = () => {
146
+ warn('Table.StickyHelper is deprecated!');
83
147
  return _tr || (_tr = React.createElement("tr", {
84
- className: "dnb-table__sticky-helper"
85
- }, React.createElement("td", null)));
148
+ className: "dnb-table__sticky-helper",
149
+ "aria-hidden": true,
150
+ role: "presentation"
151
+ }, React.createElement("td", {
152
+ colSpan: 100
153
+ })));
86
154
  };
87
155
 
88
156
  const stickyWarning = (message = '') => {
89
157
  warn('Could not enable Sticky mode in table:', message);
90
158
  };
91
159
 
92
- const getTdElement = element => {
93
- return element.querySelector('tbody > tr:not(.dnb-table__sticky-helper):first-of-type > td:first-of-type, tbody > .dnb-table__tr:first-of-type > .dnb-table__td:first-of-type');
94
- };
95
-
96
160
  const getThElement = element => {
97
161
  return element.querySelector('thead > tr:first-of-type > th:first-of-type, thead > .dnb-table__tr:first-of-type > .dnb-table__th:first-of-type');
98
162
  };
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import TableAccordionContent from './TableAccordionContent';
2
3
  export declare type TableTdProps = {
3
4
  /**
4
5
  * if set to `true`, no padding will be added
@@ -16,4 +17,8 @@ export declare type TableTdProps = {
16
17
  */
17
18
  children?: React.ReactNode;
18
19
  };
19
- export default function Td(componentProps: TableTdProps & React.TdHTMLAttributes<HTMLTableCellElement>): JSX.Element;
20
+ declare function Td(componentProps: TableTdProps & React.TdHTMLAttributes<HTMLTableCellElement>): JSX.Element;
21
+ declare namespace Td {
22
+ var AccordionContent: typeof TableAccordionContent;
23
+ }
24
+ export default Td;
@@ -3,6 +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
7
  export default function Td(componentProps) {
7
8
  const {
8
9
  className,
@@ -16,4 +17,5 @@ export default function Td(componentProps) {
16
17
  role: "cell",
17
18
  className: classnames('dnb-table__td', className, noSpacing && 'dnb-table__td--no-spacing', spacing && `dnb-table__td--spacing-${spacing}`)
18
19
  }, props), children);
19
- }
20
+ }
21
+ Td.AccordionContent = TableAccordionContent;
@@ -4,17 +4,17 @@ import TableHelpButton from './TableHelpButton';
4
4
  export declare type TableThChildren = React.ReactNode | ReturnType<typeof TableSortButton> | ReturnType<typeof TableHelpButton>;
5
5
  export declare type TableThProps = {
6
6
  /**
7
- * Defines the table header as sortable
7
+ * Defines the table header as sortable (ascending)
8
8
  * Default: false
9
9
  */
10
10
  sortable?: boolean;
11
11
  /**
12
- * Defines the sortable column as the current active
12
+ * Defines the sortable column as the current active (ascending)
13
13
  * Default: false
14
14
  */
15
15
  active?: boolean;
16
16
  /**
17
- * Defines the sortable column as in reversed order
17
+ * Defines the sortable column as in reversed order (descending)
18
18
  * Default: false
19
19
  */
20
20
  reversed?: boolean;
@@ -26,7 +26,7 @@ export declare type TableThProps = {
26
26
  /**
27
27
  * The content of the table header given as Tr.
28
28
  */
29
- children: TableThChildren | Array<TableThChildren>;
29
+ children?: TableThChildren | Array<TableThChildren>;
30
30
  };
31
31
  declare function Th(componentProps: TableThProps & React.ThHTMLAttributes<HTMLTableCellElement>): JSX.Element;
32
32
  declare namespace Th {
@@ -17,8 +17,13 @@ export default function Th(componentProps) {
17
17
  } = componentProps,
18
18
  props = _objectWithoutProperties(componentProps, _excluded);
19
19
 
20
+ const role = props.scope === 'row' ? 'rowheader' : 'columnheader';
21
+ const scope = props.scope === 'row' ? 'row' : 'col';
22
+ const ariaSort = sortable ? reversed ? 'descending' : 'ascending' : undefined;
20
23
  return React.createElement("th", _extends({
21
- role: "columnheader",
24
+ role: role,
25
+ scope: scope,
26
+ "aria-sort": ariaSort,
22
27
  className: classnames('dnb-table__th', className, sortable && 'dnb-table--sortable', active && 'dnb-table--active', reversed && 'dnb-table--reversed', noWrap && 'dnb-table--no-wrap')
23
28
  }, props), children);
24
29
  }