@dnb/eufemia 10.38.0 → 10.40.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 (297) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/cjs/components/badge/Badge.js +2 -1
  3. package/cjs/components/badge/Badge.js.map +1 -1
  4. package/cjs/components/badge/style/dnb-badge.css +6 -0
  5. package/cjs/components/badge/style/dnb-badge.min.css +1 -1
  6. package/cjs/components/badge/style/dnb-badge.scss +12 -0
  7. package/cjs/components/button/Button.d.ts +1 -0
  8. package/cjs/components/button/Button.js +5 -2
  9. package/cjs/components/button/Button.js.map +1 -1
  10. package/cjs/components/modal/Modal.js +1 -1
  11. package/cjs/components/modal/Modal.js.map +1 -1
  12. package/cjs/components/modal/types.d.ts +4 -0
  13. package/cjs/components/modal/types.js.map +1 -1
  14. package/cjs/components/table/Table.d.ts +6 -3
  15. package/cjs/components/table/Table.js +6 -2
  16. package/cjs/components/table/Table.js.map +1 -1
  17. package/cjs/components/table/TableClickableHead.d.ts +22 -0
  18. package/cjs/components/table/TableClickableHead.js +116 -0
  19. package/cjs/components/table/TableClickableHead.js.map +1 -0
  20. package/cjs/components/table/TableDocs.js +6 -6
  21. package/cjs/components/table/TableDocs.js.map +1 -1
  22. package/cjs/components/table/TableTr.d.ts +12 -12
  23. package/cjs/components/table/TableTr.js +13 -6
  24. package/cjs/components/table/TableTr.js.map +1 -1
  25. package/cjs/components/table/style/dnb-table.css +61 -61
  26. package/cjs/components/table/style/dnb-table.min.css +1 -1
  27. package/cjs/components/table/style/dnb-table.scss +1 -1
  28. package/cjs/components/table/style/table-accordion.scss +28 -36
  29. package/cjs/components/table/style/table-td.scss +1 -1
  30. package/cjs/components/table/table-accordion/TableAccordionHead.d.ts +0 -1
  31. package/cjs/components/table/table-accordion/TableAccordionHead.js +45 -74
  32. package/cjs/components/table/table-accordion/TableAccordionHead.js.map +1 -1
  33. package/cjs/components/table/table-navigation/TableNavigationHead.d.ts +4 -0
  34. package/cjs/components/table/table-navigation/TableNavigationHead.js +56 -0
  35. package/cjs/components/table/table-navigation/TableNavigationHead.js.map +1 -0
  36. package/cjs/extensions/forms/Field/Number/Number.d.ts +3 -1
  37. package/cjs/extensions/forms/Field/Number/Number.js +6 -2
  38. package/cjs/extensions/forms/Field/Number/Number.js.map +1 -1
  39. package/cjs/extensions/forms/Field/Number/NumberDocs.js +10 -0
  40. package/cjs/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
  41. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +3 -3
  42. package/cjs/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
  43. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js +2 -2
  44. package/cjs/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +1 -1
  45. package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +6 -5
  46. package/cjs/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
  47. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js +2 -2
  48. package/cjs/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  49. package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
  50. package/cjs/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
  51. package/cjs/extensions/forms/Wizard/EditButton/EditButton.js +2 -2
  52. package/cjs/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
  53. package/cjs/extensions/forms/Wizard/NextButton/NextButton.js +2 -2
  54. package/cjs/extensions/forms/Wizard/NextButton/NextButton.js.map +1 -1
  55. package/cjs/extensions/forms/Wizard/PreviousButton/PreviousButton.js +2 -2
  56. package/cjs/extensions/forms/Wizard/PreviousButton/PreviousButton.js.map +1 -1
  57. package/cjs/extensions/forms/constants/locales/en-GB.d.ts +28 -8
  58. package/cjs/extensions/forms/constants/locales/en-GB.js +28 -8
  59. package/cjs/extensions/forms/constants/locales/en-GB.js.map +1 -1
  60. package/cjs/extensions/forms/constants/locales/en-US.d.ts +28 -8
  61. package/cjs/extensions/forms/constants/locales/index.d.ts +56 -16
  62. package/cjs/extensions/forms/constants/locales/nb-NO.d.ts +28 -8
  63. package/cjs/extensions/forms/constants/locales/nb-NO.js +28 -8
  64. package/cjs/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  65. package/cjs/extensions/forms/hooks/DataValueDocs.js +1 -1
  66. package/cjs/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  67. package/cjs/extensions/payment-card/utils/cardProducts.js +7 -7
  68. package/cjs/extensions/payment-card/utils/cardProducts.js.map +1 -1
  69. package/cjs/shared/Eufemia.d.ts +1 -1
  70. package/cjs/shared/Eufemia.js +2 -2
  71. package/cjs/shared/Eufemia.js.map +1 -1
  72. package/cjs/shared/helpers/isAsync.js +5 -1
  73. package/cjs/shared/helpers/isAsync.js.map +1 -1
  74. package/cjs/shared/locales/en-GB.d.ts +1 -0
  75. package/cjs/shared/locales/en-GB.js +2 -1
  76. package/cjs/shared/locales/en-GB.js.map +1 -1
  77. package/cjs/shared/locales/en-US.d.ts +1 -0
  78. package/cjs/shared/locales/index.d.ts +2 -0
  79. package/cjs/shared/locales/nb-NO.d.ts +1 -0
  80. package/cjs/shared/locales/nb-NO.js +2 -1
  81. package/cjs/shared/locales/nb-NO.js.map +1 -1
  82. package/cjs/style/core/scopes.scss +1 -1
  83. package/cjs/style/dnb-ui-basis.css +1 -1
  84. package/cjs/style/dnb-ui-basis.min.css +1 -1
  85. package/cjs/style/dnb-ui-body.css +1 -1
  86. package/cjs/style/dnb-ui-body.min.css +1 -1
  87. package/cjs/style/dnb-ui-components.css +67 -61
  88. package/cjs/style/dnb-ui-components.min.css +2 -2
  89. package/cjs/style/dnb-ui-core.css +1 -1
  90. package/cjs/style/dnb-ui-core.min.css +1 -1
  91. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.css +67 -61
  92. package/cjs/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  93. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.css +67 -61
  94. package/cjs/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  95. package/cjs/style/themes/theme-ui/ui-theme-components.css +67 -61
  96. package/cjs/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  97. package/components/badge/Badge.js +2 -1
  98. package/components/badge/Badge.js.map +1 -1
  99. package/components/badge/style/dnb-badge.css +6 -0
  100. package/components/badge/style/dnb-badge.min.css +1 -1
  101. package/components/badge/style/dnb-badge.scss +12 -0
  102. package/components/button/Button.d.ts +1 -0
  103. package/components/button/Button.js +5 -2
  104. package/components/button/Button.js.map +1 -1
  105. package/components/modal/Modal.js +1 -1
  106. package/components/modal/Modal.js.map +1 -1
  107. package/components/modal/types.d.ts +4 -0
  108. package/components/modal/types.js.map +1 -1
  109. package/components/table/Table.d.ts +6 -3
  110. package/components/table/Table.js +6 -2
  111. package/components/table/Table.js.map +1 -1
  112. package/components/table/TableClickableHead.d.ts +22 -0
  113. package/components/table/TableClickableHead.js +103 -0
  114. package/components/table/TableClickableHead.js.map +1 -0
  115. package/components/table/TableDocs.js +6 -6
  116. package/components/table/TableDocs.js.map +1 -1
  117. package/components/table/TableTr.d.ts +12 -12
  118. package/components/table/TableTr.js +13 -6
  119. package/components/table/TableTr.js.map +1 -1
  120. package/components/table/style/dnb-table.css +61 -61
  121. package/components/table/style/dnb-table.min.css +1 -1
  122. package/components/table/style/dnb-table.scss +1 -1
  123. package/components/table/style/table-accordion.scss +28 -36
  124. package/components/table/style/table-td.scss +1 -1
  125. package/components/table/table-accordion/TableAccordionHead.d.ts +0 -1
  126. package/components/table/table-accordion/TableAccordionHead.js +44 -72
  127. package/components/table/table-accordion/TableAccordionHead.js.map +1 -1
  128. package/components/table/table-navigation/TableNavigationHead.d.ts +4 -0
  129. package/components/table/table-navigation/TableNavigationHead.js +48 -0
  130. package/components/table/table-navigation/TableNavigationHead.js.map +1 -0
  131. package/es/components/badge/Badge.js +2 -1
  132. package/es/components/badge/Badge.js.map +1 -1
  133. package/es/components/badge/style/dnb-badge.css +6 -0
  134. package/es/components/badge/style/dnb-badge.min.css +1 -1
  135. package/es/components/badge/style/dnb-badge.scss +12 -0
  136. package/es/components/button/Button.d.ts +1 -0
  137. package/es/components/button/Button.js +5 -2
  138. package/es/components/button/Button.js.map +1 -1
  139. package/es/components/modal/Modal.js +1 -1
  140. package/es/components/modal/Modal.js.map +1 -1
  141. package/es/components/modal/types.d.ts +4 -0
  142. package/es/components/modal/types.js.map +1 -1
  143. package/es/components/table/Table.d.ts +6 -3
  144. package/es/components/table/Table.js +6 -2
  145. package/es/components/table/Table.js.map +1 -1
  146. package/es/components/table/TableClickableHead.d.ts +22 -0
  147. package/es/components/table/TableClickableHead.js +101 -0
  148. package/es/components/table/TableClickableHead.js.map +1 -0
  149. package/es/components/table/TableDocs.js +6 -6
  150. package/es/components/table/TableDocs.js.map +1 -1
  151. package/es/components/table/TableTr.d.ts +12 -12
  152. package/es/components/table/TableTr.js +13 -6
  153. package/es/components/table/TableTr.js.map +1 -1
  154. package/es/components/table/style/dnb-table.css +61 -61
  155. package/es/components/table/style/dnb-table.min.css +1 -1
  156. package/es/components/table/style/dnb-table.scss +1 -1
  157. package/es/components/table/style/table-accordion.scss +28 -36
  158. package/es/components/table/style/table-td.scss +1 -1
  159. package/es/components/table/table-accordion/TableAccordionHead.d.ts +0 -1
  160. package/es/components/table/table-accordion/TableAccordionHead.js +44 -71
  161. package/es/components/table/table-accordion/TableAccordionHead.js.map +1 -1
  162. package/es/components/table/table-navigation/TableNavigationHead.d.ts +4 -0
  163. package/es/components/table/table-navigation/TableNavigationHead.js +48 -0
  164. package/es/components/table/table-navigation/TableNavigationHead.js.map +1 -0
  165. package/es/extensions/forms/Field/Number/Number.d.ts +3 -1
  166. package/es/extensions/forms/Field/Number/Number.js +6 -2
  167. package/es/extensions/forms/Field/Number/Number.js.map +1 -1
  168. package/es/extensions/forms/Field/Number/NumberDocs.js +10 -0
  169. package/es/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
  170. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +3 -3
  171. package/es/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
  172. package/es/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js +2 -2
  173. package/es/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +1 -1
  174. package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +5 -4
  175. package/es/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
  176. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js +2 -2
  177. package/es/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  178. package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
  179. package/es/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
  180. package/es/extensions/forms/Wizard/EditButton/EditButton.js +2 -2
  181. package/es/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
  182. package/es/extensions/forms/Wizard/NextButton/NextButton.js +2 -2
  183. package/es/extensions/forms/Wizard/NextButton/NextButton.js.map +1 -1
  184. package/es/extensions/forms/Wizard/PreviousButton/PreviousButton.js +2 -2
  185. package/es/extensions/forms/Wizard/PreviousButton/PreviousButton.js.map +1 -1
  186. package/es/extensions/forms/constants/locales/en-GB.d.ts +28 -8
  187. package/es/extensions/forms/constants/locales/en-GB.js +28 -8
  188. package/es/extensions/forms/constants/locales/en-GB.js.map +1 -1
  189. package/es/extensions/forms/constants/locales/en-US.d.ts +28 -8
  190. package/es/extensions/forms/constants/locales/index.d.ts +56 -16
  191. package/es/extensions/forms/constants/locales/nb-NO.d.ts +28 -8
  192. package/es/extensions/forms/constants/locales/nb-NO.js +28 -8
  193. package/es/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  194. package/es/extensions/forms/hooks/DataValueDocs.js +1 -1
  195. package/es/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  196. package/es/extensions/payment-card/utils/cardProducts.js +7 -7
  197. package/es/extensions/payment-card/utils/cardProducts.js.map +1 -1
  198. package/es/shared/Eufemia.d.ts +1 -1
  199. package/es/shared/Eufemia.js +2 -2
  200. package/es/shared/Eufemia.js.map +1 -1
  201. package/es/shared/helpers/isAsync.js +5 -1
  202. package/es/shared/helpers/isAsync.js.map +1 -1
  203. package/es/shared/locales/en-GB.d.ts +1 -0
  204. package/es/shared/locales/en-GB.js +2 -1
  205. package/es/shared/locales/en-GB.js.map +1 -1
  206. package/es/shared/locales/en-US.d.ts +1 -0
  207. package/es/shared/locales/index.d.ts +2 -0
  208. package/es/shared/locales/nb-NO.d.ts +1 -0
  209. package/es/shared/locales/nb-NO.js +2 -1
  210. package/es/shared/locales/nb-NO.js.map +1 -1
  211. package/es/style/core/scopes.scss +1 -1
  212. package/es/style/dnb-ui-basis.css +1 -1
  213. package/es/style/dnb-ui-basis.min.css +1 -1
  214. package/es/style/dnb-ui-body.css +1 -1
  215. package/es/style/dnb-ui-body.min.css +1 -1
  216. package/es/style/dnb-ui-components.css +67 -61
  217. package/es/style/dnb-ui-components.min.css +2 -2
  218. package/es/style/dnb-ui-core.css +1 -1
  219. package/es/style/dnb-ui-core.min.css +1 -1
  220. package/es/style/themes/theme-eiendom/eiendom-theme-components.css +67 -61
  221. package/es/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  222. package/es/style/themes/theme-sbanken/sbanken-theme-components.css +67 -61
  223. package/es/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  224. package/es/style/themes/theme-ui/ui-theme-components.css +67 -61
  225. package/es/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  226. package/esm/dnb-ui-basis.min.mjs +1 -1
  227. package/esm/dnb-ui-components.min.mjs +1 -1
  228. package/esm/dnb-ui-elements.min.mjs +1 -1
  229. package/esm/dnb-ui-extensions.min.mjs +3 -3
  230. package/esm/dnb-ui-lib.min.mjs +1 -1
  231. package/extensions/forms/Field/Number/Number.d.ts +3 -1
  232. package/extensions/forms/Field/Number/Number.js +6 -2
  233. package/extensions/forms/Field/Number/Number.js.map +1 -1
  234. package/extensions/forms/Field/Number/NumberDocs.js +10 -0
  235. package/extensions/forms/Field/Number/NumberDocs.js.map +1 -1
  236. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js +3 -3
  237. package/extensions/forms/Form/Section/EditContainer/EditToolbarTools.js.map +1 -1
  238. package/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js +2 -2
  239. package/extensions/forms/Form/Section/ViewContainer/ViewToolbarTools.js.map +1 -1
  240. package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js +5 -4
  241. package/extensions/forms/Iterate/EditContainer/EditToolbarTools.js.map +1 -1
  242. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js +2 -2
  243. package/extensions/forms/Iterate/RemoveButton/RemoveButton.js.map +1 -1
  244. package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js +3 -3
  245. package/extensions/forms/Iterate/ViewContainer/ViewToolbarTools.js.map +1 -1
  246. package/extensions/forms/Wizard/EditButton/EditButton.js +2 -2
  247. package/extensions/forms/Wizard/EditButton/EditButton.js.map +1 -1
  248. package/extensions/forms/Wizard/NextButton/NextButton.js +2 -2
  249. package/extensions/forms/Wizard/NextButton/NextButton.js.map +1 -1
  250. package/extensions/forms/Wizard/PreviousButton/PreviousButton.js +2 -2
  251. package/extensions/forms/Wizard/PreviousButton/PreviousButton.js.map +1 -1
  252. package/extensions/forms/constants/locales/en-GB.d.ts +28 -8
  253. package/extensions/forms/constants/locales/en-GB.js +28 -8
  254. package/extensions/forms/constants/locales/en-GB.js.map +1 -1
  255. package/extensions/forms/constants/locales/en-US.d.ts +28 -8
  256. package/extensions/forms/constants/locales/index.d.ts +56 -16
  257. package/extensions/forms/constants/locales/nb-NO.d.ts +28 -8
  258. package/extensions/forms/constants/locales/nb-NO.js +28 -8
  259. package/extensions/forms/constants/locales/nb-NO.js.map +1 -1
  260. package/extensions/forms/hooks/DataValueDocs.js +1 -1
  261. package/extensions/forms/hooks/DataValueDocs.js.map +1 -1
  262. package/extensions/payment-card/utils/cardProducts.js +7 -7
  263. package/extensions/payment-card/utils/cardProducts.js.map +1 -1
  264. package/package.json +1 -1
  265. package/shared/Eufemia.d.ts +1 -1
  266. package/shared/Eufemia.js +2 -2
  267. package/shared/Eufemia.js.map +1 -1
  268. package/shared/helpers/isAsync.js +5 -1
  269. package/shared/helpers/isAsync.js.map +1 -1
  270. package/shared/locales/en-GB.d.ts +1 -0
  271. package/shared/locales/en-GB.js +2 -1
  272. package/shared/locales/en-GB.js.map +1 -1
  273. package/shared/locales/en-US.d.ts +1 -0
  274. package/shared/locales/index.d.ts +2 -0
  275. package/shared/locales/nb-NO.d.ts +1 -0
  276. package/shared/locales/nb-NO.js +2 -1
  277. package/shared/locales/nb-NO.js.map +1 -1
  278. package/style/core/scopes.scss +1 -1
  279. package/style/dnb-ui-basis.css +1 -1
  280. package/style/dnb-ui-basis.min.css +1 -1
  281. package/style/dnb-ui-body.css +1 -1
  282. package/style/dnb-ui-body.min.css +1 -1
  283. package/style/dnb-ui-components.css +67 -61
  284. package/style/dnb-ui-components.min.css +2 -2
  285. package/style/dnb-ui-core.css +1 -1
  286. package/style/dnb-ui-core.min.css +1 -1
  287. package/style/themes/theme-eiendom/eiendom-theme-components.css +67 -61
  288. package/style/themes/theme-eiendom/eiendom-theme-components.min.css +2 -2
  289. package/style/themes/theme-sbanken/sbanken-theme-components.css +67 -61
  290. package/style/themes/theme-sbanken/sbanken-theme-components.min.css +2 -2
  291. package/style/themes/theme-ui/ui-theme-components.css +67 -61
  292. package/style/themes/theme-ui/ui-theme-components.min.css +2 -2
  293. package/umd/dnb-ui-basis.min.js +1 -1
  294. package/umd/dnb-ui-components.min.js +1 -1
  295. package/umd/dnb-ui-elements.min.js +1 -1
  296. package/umd/dnb-ui-extensions.min.js +3 -3
  297. package/umd/dnb-ui-lib.min.js +1 -1
@@ -4,12 +4,12 @@
4
4
  */
5
5
 
6
6
  @mixin tableAccordionActiveColor {
7
- .dnb-table__td__accordion-icon .dnb-icon {
7
+ .dnb-table__td__button-icon .dnb-icon {
8
8
  color: var(--table-accordion-icon-color--active);
9
9
  }
10
10
  }
11
11
  @mixin tableAccordionDisabledColor {
12
- .dnb-table__td__accordion-icon .dnb-icon {
12
+ .dnb-table__td__button-icon .dnb-icon {
13
13
  color: var(--table-accordion-icon-color--disabled);
14
14
  }
15
15
  }
@@ -32,7 +32,7 @@
32
32
  --table-accordion-outline-width: var(--focus-ring-width);
33
33
  --table-accordion-outline-background--active: var(--color-pistachio);
34
34
 
35
- &__th#{&}__th__accordion-icon {
35
+ &__th#{&}__th__button-icon {
36
36
  &.dnb-table__th {
37
37
  padding: 0;
38
38
  }
@@ -53,14 +53,14 @@
53
53
  }
54
54
  }
55
55
 
56
- &__td#{&}__td__accordion-icon {
56
+ &__td#{&}__td__button-icon {
57
57
  &.dnb-table__td {
58
58
  padding: 0;
59
59
  }
60
60
  user-select: none; // prevent selection on double-click
61
61
  }
62
62
 
63
- &__tr--has-accordion-content &__toggle-button {
63
+ &__tr--clickable &__button {
64
64
  display: flex; // to ensure we inherit the correct size from its content
65
65
  justify-content: center;
66
66
 
@@ -69,26 +69,21 @@
69
69
  transition: transform 500ms var(--easing-default);
70
70
  }
71
71
  }
72
- &__tr--has-accordion-content#{&}__tr--no-animation
73
- &__toggle-button
74
- .dnb-icon,
75
- html[data-visual-test]
76
- &__tr--has-accordion-content
77
- &__toggle-button
78
- .dnb-icon {
72
+ &__tr--clickable#{&}__tr--no-animation &__button .dnb-icon,
73
+ html[data-visual-test] &__tr--clickable &__button .dnb-icon {
79
74
  transition: none !important;
80
75
  }
81
76
 
82
- &__tr--has-accordion-content,
77
+ &__tr--clickable,
83
78
  &__tr__accordion-content {
84
79
  position: relative;
85
80
  }
86
- &__tr--has-accordion-content#{&}__tr--expanded,
81
+ &__tr--clickable#{&}__tr--expanded,
87
82
  &__tr__accordion-content {
88
83
  z-index: 3; // ensure borders are visible in certain states
89
84
  }
90
85
 
91
- &__tr--has-accordion-content {
86
+ &__tr--clickable {
92
87
  &:active,
93
88
  html[data-whatinput='keyboard'] &:focus,
94
89
  &:hover:not(.dnb-table__tr--hover.dnb-table__tr--expanded) {
@@ -96,13 +91,11 @@
96
91
  }
97
92
  }
98
93
 
99
- &__tr--has-accordion-content#{&}__tr--expanded
100
- &__toggle-button
101
- .dnb-icon {
94
+ &__tr--clickable#{&}__tr--expanded &__button .dnb-icon {
102
95
  transform: rotate(180deg);
103
96
  }
104
97
 
105
- &__tr--has-accordion-content#{&}__tr--expanded {
98
+ &__tr--clickable#{&}__tr--expanded {
106
99
  .dnb-table--border & td::after {
107
100
  border-bottom: none;
108
101
  border-left: none;
@@ -110,7 +103,7 @@
110
103
  }
111
104
  }
112
105
 
113
- &__tr--has-accordion-content#{&}__tr:not(&__tr--disabled) {
106
+ &__tr--clickable#{&}__tr:not(&__tr--disabled) {
114
107
  outline: none;
115
108
 
116
109
  td::before {
@@ -145,19 +138,18 @@
145
138
 
146
139
  &--border
147
140
  tbody
148
- &__tr--has-accordion-content:not(#{&}__tr--expanded):not(&__tr--last)
141
+ &__tr--clickable:not(#{&}__tr--expanded):not(&__tr--last)
149
142
  &__td::before {
150
143
  bottom: calc(var(--table-border-width) * -1);
151
144
  }
152
145
 
153
- &__tr--has-accordion-content#{&}__tr--expanded:not(&__tr--disabled):hover
154
- &__td {
146
+ &__tr--clickable#{&}__tr--expanded:not(&__tr--disabled):hover &__td {
155
147
  background-color: var(--color-white);
156
148
  }
157
149
 
158
- &__tr--has-accordion-content#{&}__tr:not(&__tr--disabled):not(
159
- :active
160
- ):not(:hover):focus {
150
+ &__tr--clickable#{&}__tr:not(&__tr--disabled):not(:active):not(
151
+ :hover
152
+ ):focus {
161
153
  td::before {
162
154
  @include whatInput(keyboard) {
163
155
  border-color: var(--focus-ring-color);
@@ -172,7 +164,7 @@
172
164
  }
173
165
  }
174
166
 
175
- &__tr--has-accordion-content#{&}__tr:not(&__tr--disabled):active {
167
+ &__tr--clickable#{&}__tr:not(&__tr--disabled):active {
176
168
  html:not([data-whatintent='touch']) &:hover td::before,
177
169
  td::before {
178
170
  border-color: var(--table-accordion-outline-color);
@@ -182,13 +174,13 @@
182
174
  }
183
175
  }
184
176
 
185
- &__tr--has-accordion-content#{&}__tr:not(&__tr--disabled):active &__td {
177
+ &__tr--clickable#{&}__tr:not(&__tr--disabled):active &__td {
186
178
  background-color: var(--table-accordion-outline-background--active);
187
179
 
188
180
  @include tableAccordionActiveColor();
189
181
  }
190
182
 
191
- &__tr--has-accordion-content#{&}__tr--expanded:not(
183
+ &__tr--clickable#{&}__tr--expanded:not(
192
184
  &__tr--disabled
193
185
  )#{&}__tr--hover:not(:active):hover
194
186
  &__td {
@@ -200,9 +192,9 @@
200
192
  }
201
193
  }
202
194
 
203
- &__tr--has-accordion-content#{&}__tr#{&}__tr--expanded:not(
204
- &__tr--disabled
205
- ):not(:active):not(:hover) {
195
+ &__tr--clickable#{&}__tr#{&}__tr--expanded:not(&__tr--disabled):not(
196
+ :active
197
+ ):not(:hover) {
206
198
  @include whatInputNot('keyboard') {
207
199
  background-color: var(--table-accordion-header-background);
208
200
 
@@ -213,7 +205,7 @@
213
205
  }
214
206
  }
215
207
 
216
- &__tr--has-accordion-content#{&}__tr--disabled {
208
+ &__tr--clickable#{&}__tr--disabled {
217
209
  @include tableAccordionDisabledColor();
218
210
  }
219
211
 
@@ -256,7 +248,7 @@
256
248
  background-color: var(--color-white);
257
249
  }
258
250
 
259
- + .dnb-table__tr--has-accordion-content .dnb-table__td {
251
+ + .dnb-table__tr--clickable .dnb-table__td {
260
252
  @include tableBorder() {
261
253
  border-top: var(--table-accordion-border);
262
254
  }
@@ -323,13 +315,13 @@
323
315
  }
324
316
 
325
317
  // stylelint-disable-next-line
326
- &__tr--has-accordion-content:not(&__tr--disabled) {
318
+ &__tr--clickable:not(&__tr--disabled) {
327
319
  cursor: pointer;
328
320
  }
329
321
 
330
322
  // prevent selection while animating – useful when user double-clicks
331
323
  // TODO: Our SASS version does not support :has – so we may use this in future
332
- // &__tr--has-accordion-content:has(& + &__tr__accordion-content--animating) {
324
+ // &__tr--clickable:has(& + &__tr__accordion-content--animating) {
333
325
  // user-select: none;
334
326
  // }
335
327
 
@@ -73,7 +73,7 @@
73
73
  //last row must be rounded
74
74
  &--outline tbody:last-child {
75
75
  .dnb-table__tr:last-child,
76
- .dnb-table__tr--has-accordion-content:not(
76
+ .dnb-table__tr--clickable:not(
77
77
  .dnb-table__tr--expanded
78
78
  ).dnb-table__tr--last {
79
79
  clip-path: inset(
@@ -5,4 +5,3 @@ export type TableAccordionHeadProps = {
5
5
  count: number;
6
6
  } & TableTrProps & React.TableHTMLAttributes<HTMLTableRowElement>;
7
7
  export declare function TableAccordionHead(allProps: TableAccordionHeadProps): import("react/jsx-runtime").JSX.Element;
8
- export declare function TableAccordionToggleButton(): import("react/jsx-runtime").JSX.Element;
@@ -3,24 +3,18 @@
3
3
  import _extends from "@babel/runtime/helpers/esm/extends";
4
4
  import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
5
5
  var _Td;
6
- const _excluded = ["children", "className", "expanded", "disabled", "noAnimation", "onClick", "onOpened", "onClosed", "count"];
6
+ const _excluded = ["children", "expanded", "noAnimation", "onClick", "onOpened", "onClosed", "count"];
7
7
  import React, { useEffect } from 'react';
8
- import classnames from 'classnames';
9
- import keycode from 'keycode';
10
- import { hasSelectedText } from '../../../shared/helpers';
11
- import Button from '../../button/Button';
12
- import IconPrimary from '../../icon/IconPrimary';
13
- import Th from '../TableTh';
14
8
  import Td from '../TableTd';
15
9
  import { TableContext } from '../TableContext';
10
+ import { TableClickableButtonTd, TableClickableHead, TableIconSrTh, isTableHead, onClickTr } from '../TableClickableHead';
16
11
  import { TableAccordionContext } from './TableAccordionContext';
17
12
  import { TableAccordionContentSingle, TableAccordionContentRow } from './TableAccordionContent';
18
13
  export function TableAccordionHead(allProps) {
14
+ var _React$useContext;
19
15
  const {
20
16
  children,
21
- className,
22
17
  expanded,
23
- disabled,
24
18
  noAnimation,
25
19
  onClick,
26
20
  onOpened,
@@ -43,11 +37,11 @@ export function TableAccordionHead(allProps) {
43
37
  const [trIsHover, setHover] = React.useState(false);
44
38
  const [trHadClick, setHadClick] = React.useState(false);
45
39
  let headerContent = React.Children.toArray(children);
46
- const addExpandIcon = icon => {
40
+ const addContent = content => {
47
41
  if (tableContext.allProps.accordionChevronPlacement === 'end') {
48
- headerContent.push(icon);
42
+ headerContent.push(content);
49
43
  } else {
50
- headerContent.unshift(icon);
44
+ headerContent.unshift(content);
51
45
  }
52
46
  };
53
47
  const accordionContent = headerContent.filter(element => {
@@ -62,30 +56,31 @@ export function TableAccordionHead(allProps) {
62
56
  };
63
57
  }
64
58
  }, [count, tableContext === null || tableContext === void 0 ? void 0 : tableContext.collapseTrCallbacks, hasAccordionContent]);
65
- const trParams = !disabled && hasAccordionContent ? {
66
- onClick: toggleOpenTr,
67
- onMouseEnter: onMouseEnterHandler,
68
- onMouseLeave: onMouseLeaveHandler,
69
- onKeyDown: onKeydownHandler
70
- } : {};
59
+ const tableContextAllProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
71
60
  if (hasAccordionContent) {
72
61
  headerContent = headerContent.filter(element => {
73
62
  return !isAccordionElement(element);
74
63
  });
75
- addExpandIcon(_Td || (_Td = React.createElement(Td, {
76
- className: "dnb-table__td__accordion-icon",
64
+ addContent(React.createElement(TableClickableButtonTd, {
65
+ trIsOpen: trIsOpen,
66
+ ariaLabel: tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.accordionToggleButtonSR,
67
+ icon: "chevron_down",
68
+ onClick: toggleOpenTr,
77
69
  key: "td-icon"
78
- }, React.createElement(TableAccordionToggleButton, null))));
70
+ }));
79
71
  } else if (isTableHead(headerContent)) {
80
72
  var _tableContext$allProp;
81
- addExpandIcon(React.createElement(Th, {
82
- "aria-hidden": true,
83
- className: "dnb-table__th__accordion-icon",
84
- key: "th-icon"
85
- }, React.createElement("div", null, tableContext === null || tableContext === void 0 ? void 0 : (_tableContext$allProp = tableContext.allProps) === null || _tableContext$allProp === void 0 ? void 0 : _tableContext$allProp.accordionToggleButtonSR)));
73
+ addContent(React.createElement(TableIconSrTh, {
74
+ key: "th-icon",
75
+ text: tableContext === null || tableContext === void 0 ? void 0 : (_tableContext$allProp = tableContext.allProps) === null || _tableContext$allProp === void 0 ? void 0 : _tableContext$allProp.accordionToggleButtonSR
76
+ }));
77
+ } else if (!hasAccordionContent) {
78
+ addContent(_Td || (_Td = React.createElement(Td, {
79
+ key: "empty-td"
80
+ })));
86
81
  }
87
82
  const countTds = hasAccordionContent ? headerContent.filter(element => {
88
- return element.type === Td;
83
+ return element.type === Td || element.type === TableClickableButtonTd;
89
84
  }).length : null;
90
85
  return React.createElement(TableAccordionContext.Provider, {
91
86
  value: {
@@ -96,59 +91,36 @@ export function TableAccordionHead(allProps) {
96
91
  onOpened,
97
92
  onClosed
98
93
  }
99
- }, React.createElement("tr", _extends({
100
- tabIndex: accordionContent && !disabled ? 0 : undefined,
101
- 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')
102
- }, trParams, props), headerContent), accordionContent);
103
- function onKeydownHandler(event) {
104
- switch (keycode(event.nativeEvent)) {
105
- case 'space':
106
- case 'enter':
107
- {
108
- const target = event.target;
109
- if (document.activeElement !== target || target.tagName === 'TR') {
110
- setOpen(!trIsOpen);
111
- event.preventDefault();
112
- }
113
- }
114
- break;
115
- }
116
- }
94
+ }, React.createElement(TableClickableHead, _extends({
95
+ trIsOpen: trIsOpen,
96
+ trIsHover: trIsHover,
97
+ trHadClick: trHadClick,
98
+ clickable: hasAccordionContent,
99
+ noAnimation: noAnimation,
100
+ onClick: toggleOpenTr,
101
+ onMouseEnter: onMouseEnterHandler,
102
+ onMouseLeave: onMouseLeaveHandler,
103
+ onKeyDown: onKeyDownHandler,
104
+ ariaLabel: tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.accordionToggleButtonSR
105
+ }, props), headerContent), accordionContent);
117
106
  function onMouseEnterHandler() {
118
107
  setHover(true);
119
108
  }
109
+ function onKeyDownHandler(event) {
110
+ toggleOpenTr(event, true);
111
+ }
120
112
  function onMouseLeaveHandler() {
121
113
  setHover(false);
122
114
  setHadClick(false);
123
115
  }
124
- function toggleOpenTr(event) {
125
- let allowInteractiveElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
126
- const target = event.target;
127
- if ((document.activeElement !== target && target.tagName !== 'INPUT' && target.tagName !== 'LABEL' || allowInteractiveElement) && !hasSelectedText()) {
128
- setOpen(!trIsOpen);
129
- setHadClick(true);
130
- onClick === null || onClick === void 0 ? void 0 : onClick(event);
131
- }
116
+ function toggleOpenFn(event) {
117
+ setOpen(!trIsOpen);
118
+ setHadClick(true);
119
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
120
+ }
121
+ function toggleOpenTr(event, allowInteractiveElement) {
122
+ onClickTr(event, allowInteractiveElement, toggleOpenFn);
132
123
  }
133
- }
134
- export function TableAccordionToggleButton() {
135
- var _React$useContext;
136
- const tableAccordionContext = React.useContext(TableAccordionContext);
137
- const tableContextAllProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
138
- const iconSize = (tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.size) === 'medium' || (tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.size) === 'small' ? 'basis' : 'medium';
139
- return React.createElement("span", {
140
- className: "dnb-table__toggle-button"
141
- }, React.createElement(IconPrimary, {
142
- icon: "chevron_down",
143
- size: iconSize
144
- }), React.createElement(Button, {
145
- className: "dnb-sr-only",
146
- tabIndex: -1,
147
- "aria-label": tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.accordionToggleButtonSR,
148
- "aria-expanded": Boolean(tableAccordionContext === null || tableAccordionContext === void 0 ? void 0 : tableAccordionContext.trIsOpen),
149
- on_click: event => tableAccordionContext === null || tableAccordionContext === void 0 ? void 0 : tableAccordionContext.toggleOpenTr(event, true)
150
- }));
151
124
  }
152
125
  const isAccordionElement = element => element.type === TableAccordionContentSingle || element.type === TableAccordionContentRow;
153
- const isTableHead = children => children.some(element => element.type === Th);
154
126
  //# sourceMappingURL=TableAccordionHead.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableAccordionHead.js","names":["React","useEffect","classnames","keycode","hasSelectedText","Button","IconPrimary","Th","Td","TableContext","TableAccordionContext","TableAccordionContentSingle","TableAccordionContentRow","TableAccordionHead","allProps","children","className","expanded","disabled","noAnimation","onClick","onOpened","onClosed","count","props","_objectWithoutProperties","_excluded","tableContext","useContext","trIsOpen","setOpen","useState","location","id","hash","trIsHover","setHover","trHadClick","setHadClick","headerContent","Children","toArray","addExpandIcon","icon","accordionChevronPlacement","push","unshift","accordionContent","filter","element","isAccordionElement","hasAccordionContent","length","every","isValidElement","_tableContext$collaps","collapseTrCallbacks","current","trParams","toggleOpenTr","onMouseEnter","onMouseEnterHandler","onMouseLeave","onMouseLeaveHandler","onKeyDown","onKeydownHandler","_Td","createElement","key","TableAccordionToggleButton","isTableHead","_tableContext$allProp","accordionToggleButtonSR","countTds","type","Provider","value","_extends","tabIndex","undefined","event","nativeEvent","target","document","activeElement","tagName","preventDefault","allowInteractiveElement","arguments","_React$useContext","tableAccordionContext","tableContextAllProps","iconSize","size","Boolean","on_click","some"],"sources":["../../../../../src/components/table/table-accordion/TableAccordionHead.tsx"],"sourcesContent":["import React, { useEffect } from 'react'\nimport classnames from 'classnames'\nimport keycode from 'keycode'\nimport { hasSelectedText } from '../../../shared/helpers'\nimport Button from '../../button/Button'\nimport IconPrimary from '../../icon/IconPrimary'\nimport Th from '../TableTh'\nimport Td from '../TableTd'\nimport { TableContext } from '../TableContext'\nimport { TableAccordionContext } from './TableAccordionContext'\nimport {\n TableAccordionContentSingle,\n TableAccordionContentRow,\n} from './TableAccordionContent'\n\nimport type {\n TableAccordionContentSingleProps,\n TableAccordionContentRowProps,\n} from './TableAccordionContent'\nimport type { TableTrProps } from '../TableTr'\n\nexport type TableAccordionHeadProps = {\n /** The row number */\n count: number\n} & TableTrProps &\n React.TableHTMLAttributes<HTMLTableRowElement>\n\nexport function TableAccordionHead(allProps: TableAccordionHeadProps) {\n const {\n children,\n className,\n expanded,\n disabled,\n noAnimation,\n onClick,\n onOpened,\n onClosed,\n count,\n ...props\n } = allProps\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 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<\n TableAccordionContentSingleProps | TableAccordionContentRowProps\n >[]\n\n const hasAccordionContent =\n accordionContent.length !== 0 &&\n accordionContent.every((element) => React.isValidElement(element))\n\n useEffect(() => {\n if (\n hasAccordionContent &&\n tableContext?.collapseTrCallbacks?.current &&\n count\n ) {\n tableContext.collapseTrCallbacks.current[count] = () => {\n setOpen(false)\n }\n }\n }, [count, tableContext?.collapseTrCallbacks, hasAccordionContent])\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 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: React.SyntheticEvent) {\n switch (keycode(event.nativeEvent)) {\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: React.SyntheticEvent,\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 tableContextAllProps = React.useContext(TableContext)?.allProps\n const iconSize =\n tableContextAllProps?.size === 'medium' ||\n tableContextAllProps?.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={tableContextAllProps?.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 === TableAccordionContentSingle ||\n element.type === TableAccordionContentRow\n\nconst isTableHead = (children: React.ReactNode[]) =>\n children.some((element: React.ReactElement) => element.type === Th)\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableAccordionHead.js","names":["React","useEffect","Td","TableContext","TableClickableButtonTd","TableClickableHead","TableIconSrTh","isTableHead","onClickTr","TableAccordionContext","TableAccordionContentSingle","TableAccordionContentRow","TableAccordionHead","allProps","_React$useContext","children","expanded","noAnimation","onClick","onOpened","onClosed","count","props","_objectWithoutProperties","_excluded","tableContext","useContext","trIsOpen","setOpen","useState","location","id","hash","trIsHover","setHover","trHadClick","setHadClick","headerContent","Children","toArray","addContent","content","accordionChevronPlacement","push","unshift","accordionContent","filter","element","isAccordionElement","hasAccordionContent","length","every","isValidElement","_tableContext$collaps","collapseTrCallbacks","current","tableContextAllProps","createElement","ariaLabel","accordionToggleButtonSR","icon","toggleOpenTr","key","_tableContext$allProp","text","_Td","countTds","type","Provider","value","_extends","clickable","onMouseEnter","onMouseEnterHandler","onMouseLeave","onMouseLeaveHandler","onKeyDown","onKeyDownHandler","event","toggleOpenFn","allowInteractiveElement"],"sources":["../../../../../src/components/table/table-accordion/TableAccordionHead.tsx"],"sourcesContent":["import React, { useEffect } from 'react'\nimport Td from '../TableTd'\nimport { TableContext } from '../TableContext'\nimport {\n TableClickableButtonTd,\n TableClickableHead,\n TableIconSrTh,\n isTableHead,\n onClickTr,\n} from '../TableClickableHead'\nimport { TableAccordionContext } from './TableAccordionContext'\nimport {\n TableAccordionContentSingle,\n TableAccordionContentRow,\n} from './TableAccordionContent'\n\nimport type {\n TableAccordionContentSingleProps,\n TableAccordionContentRowProps,\n} from './TableAccordionContent'\nimport type { TableTrProps } from '../TableTr'\n\nexport type TableAccordionHeadProps = {\n /** The row number */\n count: number\n} & TableTrProps &\n React.TableHTMLAttributes<HTMLTableRowElement>\n\nexport function TableAccordionHead(allProps: TableAccordionHeadProps) {\n const {\n children,\n expanded,\n noAnimation,\n onClick,\n onOpened,\n onClosed,\n count,\n ...props\n } = allProps\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 headerContent = React.Children.toArray(children)\n\n const addContent = (content) => {\n if (tableContext.allProps.accordionChevronPlacement === 'end') {\n headerContent.push(content)\n } else {\n headerContent.unshift(content)\n }\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<\n TableAccordionContentSingleProps | TableAccordionContentRowProps\n >[]\n\n const hasAccordionContent =\n accordionContent.length !== 0 &&\n accordionContent.every((element) => React.isValidElement(element))\n\n useEffect(() => {\n if (\n hasAccordionContent &&\n tableContext?.collapseTrCallbacks?.current &&\n count\n ) {\n tableContext.collapseTrCallbacks.current[count] = () => {\n setOpen(false)\n }\n }\n }, [count, tableContext?.collapseTrCallbacks, hasAccordionContent])\n\n const tableContextAllProps = React.useContext(TableContext)?.allProps\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 addContent(\n <TableClickableButtonTd\n trIsOpen={trIsOpen}\n ariaLabel={tableContextAllProps?.accordionToggleButtonSR}\n icon=\"chevron_down\"\n onClick={toggleOpenTr}\n key=\"td-icon\"\n />\n )\n } else if (isTableHead(headerContent)) {\n addContent(\n <TableIconSrTh\n key=\"th-icon\"\n text={tableContext?.allProps?.accordionToggleButtonSR}\n />\n )\n } else if (!hasAccordionContent) {\n addContent(<Td key=\"empty-td\"></Td>)\n }\n\n const countTds = hasAccordionContent\n ? headerContent.filter((element: React.ReactElement) => {\n return (\n element.type === Td || element.type === TableClickableButtonTd\n ) // 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 onOpened,\n onClosed,\n }}\n >\n <TableClickableHead\n trIsOpen={trIsOpen}\n trIsHover={trIsHover}\n trHadClick={trHadClick}\n clickable={hasAccordionContent}\n noAnimation={noAnimation}\n onClick={toggleOpenTr}\n onMouseEnter={onMouseEnterHandler}\n onMouseLeave={onMouseLeaveHandler}\n onKeyDown={onKeyDownHandler}\n ariaLabel={tableContextAllProps?.accordionToggleButtonSR}\n {...props}\n >\n {headerContent}\n </TableClickableHead>\n {accordionContent}\n </TableAccordionContext.Provider>\n )\n\n function onMouseEnterHandler() {\n setHover(true)\n }\n\n function onKeyDownHandler(event: React.SyntheticEvent) {\n toggleOpenTr(event, true)\n }\n\n function onMouseLeaveHandler() {\n setHover(false)\n setHadClick(false)\n }\n\n function toggleOpenFn(event: React.SyntheticEvent) {\n setOpen(!trIsOpen)\n setHadClick(true)\n onClick?.(event)\n }\n\n function toggleOpenTr(\n event: React.SyntheticEvent,\n allowInteractiveElement?: boolean\n ) {\n onClickTr(event, allowInteractiveElement, toggleOpenFn)\n }\n}\n\nconst isAccordionElement = (element: React.ReactElement) =>\n element.type === TableAccordionContentSingle ||\n element.type === TableAccordionContentRow\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { TableTrProps } from '../TableTr';
3
+ export type TableNavigationHeadProps = TableTrProps & React.TableHTMLAttributes<HTMLTableRowElement>;
4
+ export declare function TableNavigationHead(allProps: TableNavigationHeadProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,48 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ var _Td;
4
+ const _excluded = ["children", "onClick"];
5
+ import React from 'react';
6
+ import Td from '../TableTd';
7
+ import { TableContext } from '../TableContext';
8
+ import { TableClickableButtonTd, TableClickableHead, TableIconSrTh, isTableHead, onClickTr } from '../TableClickableHead';
9
+ export function TableNavigationHead(allProps) {
10
+ var _React$useContext;
11
+ const {
12
+ children,
13
+ onClick
14
+ } = allProps,
15
+ props = _objectWithoutProperties(allProps, _excluded);
16
+ const tableContext = React.useContext(TableContext);
17
+ let content = React.Children.toArray(children);
18
+ const hasOnClick = typeof onClick === 'function';
19
+ const tableContextAllProps = (_React$useContext = React.useContext(TableContext)) === null || _React$useContext === void 0 ? void 0 : _React$useContext.allProps;
20
+ if (hasOnClick) {
21
+ content.push(React.createElement(TableClickableButtonTd, {
22
+ key: "td-icon",
23
+ ariaLabel: tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.navigationButtonSR,
24
+ icon: "chevron_right",
25
+ onClick: onClickHandler
26
+ }));
27
+ } else if (isTableHead(content)) {
28
+ var _tableContext$allProp;
29
+ content.push(React.createElement(TableIconSrTh, {
30
+ key: "th-icon",
31
+ text: tableContext === null || tableContext === void 0 ? void 0 : (_tableContext$allProp = tableContext.allProps) === null || _tableContext$allProp === void 0 ? void 0 : _tableContext$allProp.navigationButtonSR
32
+ }));
33
+ } else if (!hasOnClick) {
34
+ content.push(_Td || (_Td = React.createElement(Td, {
35
+ key: "empty-td"
36
+ })));
37
+ }
38
+ return React.createElement(TableClickableHead, _extends({
39
+ clickable: hasOnClick,
40
+ onClick: onClickHandler,
41
+ onKeyDown: onClick,
42
+ ariaLabel: tableContextAllProps === null || tableContextAllProps === void 0 ? void 0 : tableContextAllProps.navigationButtonSR
43
+ }, props), content);
44
+ function onClickHandler(event, allowInteractiveElement) {
45
+ onClickTr(event, allowInteractiveElement, onClick);
46
+ }
47
+ }
48
+ //# sourceMappingURL=TableNavigationHead.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableNavigationHead.js","names":["React","Td","TableContext","TableClickableButtonTd","TableClickableHead","TableIconSrTh","isTableHead","onClickTr","TableNavigationHead","allProps","_React$useContext","children","onClick","props","_objectWithoutProperties","_excluded","tableContext","useContext","content","Children","toArray","hasOnClick","tableContextAllProps","push","createElement","key","ariaLabel","navigationButtonSR","icon","onClickHandler","_tableContext$allProp","text","_Td","_extends","clickable","onKeyDown","event","allowInteractiveElement"],"sources":["../../../../../src/components/table/table-navigation/TableNavigationHead.tsx"],"sourcesContent":["import React from 'react'\nimport Td from '../TableTd'\nimport { TableContext } from '../TableContext'\nimport {\n TableClickableButtonTd,\n TableClickableHead,\n TableIconSrTh,\n isTableHead,\n onClickTr,\n} from '../TableClickableHead'\n\nimport type { TableTrProps } from '../TableTr'\n\nexport type TableNavigationHeadProps = TableTrProps &\n React.TableHTMLAttributes<HTMLTableRowElement>\n\nexport function TableNavigationHead(allProps: TableNavigationHeadProps) {\n const { children, onClick, ...props } = allProps\n const tableContext = React.useContext(TableContext)\n\n let content = React.Children.toArray(children)\n\n const hasOnClick = typeof onClick === 'function'\n\n const tableContextAllProps = React.useContext(TableContext)?.allProps\n\n if (hasOnClick) {\n content.push(\n <TableClickableButtonTd\n key=\"td-icon\"\n ariaLabel={tableContextAllProps?.navigationButtonSR}\n icon=\"chevron_right\"\n onClick={onClickHandler}\n />\n )\n } else if (isTableHead(content)) {\n content.push(\n <TableIconSrTh\n key=\"th-icon\"\n text={tableContext?.allProps?.navigationButtonSR}\n />\n )\n } else if (!hasOnClick) {\n content.push(<Td key=\"empty-td\"></Td>)\n }\n\n return (\n <TableClickableHead\n clickable={hasOnClick}\n onClick={onClickHandler}\n onKeyDown={onClick}\n ariaLabel={tableContextAllProps?.navigationButtonSR}\n {...props}\n >\n {content}\n </TableClickableHead>\n )\n\n function onClickHandler(\n event: React.SyntheticEvent,\n allowInteractiveElement?: boolean\n ) {\n onClickTr(event, allowInteractiveElement, onClick)\n }\n}\n"],"mappings":";;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,EAAE,MAAM,YAAY;AAC3B,SAASC,YAAY,QAAQ,iBAAiB;AAC9C,SACEC,sBAAsB,EACtBC,kBAAkB,EAClBC,aAAa,EACbC,WAAW,EACXC,SAAS,QACJ,uBAAuB;AAO9B,OAAO,SAASC,mBAAmBA,CAACC,QAAkC,EAAE;EAAA,IAAAC,iBAAA;EACtE,MAAM;MAAEC,QAAQ;MAAEC;IAAkB,CAAC,GAAGH,QAAQ;IAAlBI,KAAK,GAAAC,wBAAA,CAAKL,QAAQ,EAAAM,SAAA;EAChD,MAAMC,YAAY,GAAGhB,KAAK,CAACiB,UAAU,CAACf,YAAY,CAAC;EAEnD,IAAIgB,OAAO,GAAGlB,KAAK,CAACmB,QAAQ,CAACC,OAAO,CAACT,QAAQ,CAAC;EAE9C,MAAMU,UAAU,GAAG,OAAOT,OAAO,KAAK,UAAU;EAEhD,MAAMU,oBAAoB,IAAAZ,iBAAA,GAAGV,KAAK,CAACiB,UAAU,CAACf,YAAY,CAAC,cAAAQ,iBAAA,uBAA9BA,iBAAA,CAAgCD,QAAQ;EAErE,IAAIY,UAAU,EAAE;IACdH,OAAO,CAACK,IAAI,CACVvB,KAAA,CAAAwB,aAAA,CAACrB,sBAAsB;MACrBsB,GAAG,EAAC,SAAS;MACbC,SAAS,EAAEJ,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEK,kBAAmB;MACpDC,IAAI,EAAC,eAAe;MACpBhB,OAAO,EAAEiB;IAAe,CACzB,CACH,CAAC;EACH,CAAC,MAAM,IAAIvB,WAAW,CAACY,OAAO,CAAC,EAAE;IAAA,IAAAY,qBAAA;IAC/BZ,OAAO,CAACK,IAAI,CACVvB,KAAA,CAAAwB,aAAA,CAACnB,aAAa;MACZoB,GAAG,EAAC,SAAS;MACbM,IAAI,EAAEf,YAAY,aAAZA,YAAY,wBAAAc,qBAAA,GAAZd,YAAY,CAAEP,QAAQ,cAAAqB,qBAAA,uBAAtBA,qBAAA,CAAwBH;IAAmB,CAClD,CACH,CAAC;EACH,CAAC,MAAM,IAAI,CAACN,UAAU,EAAE;IACtBH,OAAO,CAACK,IAAI,CAAAS,GAAA,KAAAA,GAAA,GAAChC,KAAA,CAAAwB,aAAA,CAACvB,EAAE;MAACwB,GAAG,EAAC;IAAU,CAAK,CAAC,EAAC;EACxC;EAEA,OACEzB,KAAA,CAAAwB,aAAA,CAACpB,kBAAkB,EAAA6B,QAAA;IACjBC,SAAS,EAAEb,UAAW;IACtBT,OAAO,EAAEiB,cAAe;IACxBM,SAAS,EAAEvB,OAAQ;IACnBc,SAAS,EAAEJ,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEK;EAAmB,GAChDd,KAAK,GAERK,OACiB,CAAC;EAGvB,SAASW,cAAcA,CACrBO,KAA2B,EAC3BC,uBAAiC,EACjC;IACA9B,SAAS,CAAC6B,KAAK,EAAEC,uBAAuB,EAAEzB,OAAO,CAAC;EACpD;AACF"}
@@ -60,9 +60,10 @@ function Badge(localProps) {
60
60
  if (!label && contentIsNum) {
61
61
  warn(`Label required: A Badge with a number as content requires a label describing the content of the badge. This is to ensure correct semantic and accessibility.`);
62
62
  }
63
+ const isInline = !children && content;
63
64
  return React.createElement("span", _extends({
64
65
  role: "status",
65
- className: classnames(`dnb-badge dnb-badge--variant-${variant}`, skeletonClasses, spacingClasses, className, horizontal && `dnb-badge--horizontal-${horizontal}`, vertical && `dnb-badge--vertical-${vertical}`)
66
+ className: classnames(`dnb-badge dnb-badge--variant-${variant}`, skeletonClasses, spacingClasses, className, horizontal && `dnb-badge--horizontal-${horizontal}`, vertical && `dnb-badge--vertical-${vertical}`, isInline && 'dnb-badge--inline')
66
67
  }, props), label && (_span || (_span = React.createElement("span", {
67
68
  className: "dnb-sr-only"
68
69
  }, label, " "))), content);
@@ -1 +1 @@
1
- {"version":3,"file":"Badge.js","names":["React","classnames","createSpacingClasses","createSkeletonClass","Context","warn","extendPropsWithContext","validateDOMAttributes","defaultProps","label","className","skeleton","children","content","vertical","horizontal","variant","Badge","localProps","_span","context","useContext","allProps","contentProp","props","_objectWithoutProperties","_excluded","createElement","BadgeRoot","BadgeElem","skeletonClasses","spacingClasses","contentIsNum","variantIsNotification","_extends","role","_supportsSpacingProps"],"sources":["../../../../src/components/badge/Badge.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\n\n// Components\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { createSkeletonClass } from '../skeleton/SkeletonHelper'\n\n// Shared\nimport Context from '../../shared/Context'\nimport type { SpacingProps } from '../../shared/types'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport {\n warn,\n extendPropsWithContext,\n validateDOMAttributes,\n} from '../../shared/component-helper'\n\nexport type BadgeProps = {\n /**\n * Aria label to describe the badge\n * Default: null\n */\n label?: React.ReactNode\n\n /**\n * Custom className on the component root\n * Default: null\n */\n className?: string\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /**\n * The content to display the badge on top of.\n * Default: null\n */\n children?: React.ReactNode\n\n /**\n * The content of the component.\n * Default: null\n */\n content?: string | number | React.ReactNode\n\n /**\n * The vertical positioning of the component.\n * Default: null\n */\n vertical?: 'bottom' | 'top'\n\n /**\n * The horizontal positioning of the component.\n * Default: null\n */\n horizontal?: 'left' | 'right'\n\n /**\n * The variant of the component.\n * Default: information.\n */\n variant?: 'information' | 'notification'\n}\n\ntype BadgeAndSpacingProps = BadgeProps & SpacingProps\n\nexport const defaultProps = {\n label: null,\n className: null,\n skeleton: false,\n children: null,\n content: null,\n vertical: null,\n horizontal: null,\n variant: 'information',\n}\n\nfunction Badge(localProps: BadgeAndSpacingProps) {\n // Every component should have a context\n const context = React.useContext(Context)\n\n // Extract additional props from global context\n const allProps = extendPropsWithContext(\n localProps,\n defaultProps,\n context?.Badge,\n { skeleton: context?.skeleton }\n )\n\n const {\n label,\n className,\n children, // eslint-disable-line\n skeleton,\n horizontal,\n vertical,\n content: contentProp,\n variant,\n ...props\n } = allProps\n\n validateDOMAttributes(allProps, props)\n\n if (children) {\n return (\n <BadgeRoot>\n {children}\n <BadgeElem />\n </BadgeRoot>\n )\n }\n\n return <BadgeElem />\n\n function BadgeRoot({ children }: { children: React.ReactNode }) {\n return <span className=\"dnb-badge__root\">{children}</span>\n }\n\n function BadgeElem() {\n const skeletonClasses = createSkeletonClass('shape', skeleton, context)\n const spacingClasses = createSpacingClasses(allProps)\n const contentIsNum = typeof contentProp === 'number'\n const variantIsNotification = variant === 'notification'\n\n const content =\n variantIsNotification && contentIsNum && contentProp > 9\n ? '9+'\n : contentProp\n\n if (variantIsNotification && !contentIsNum) {\n warn(\n `Type of content should be a number: A notification badge is best suited to display content of type number.`\n )\n }\n if (!label && contentIsNum) {\n warn(\n `Label required: A Badge with a number as content requires a label describing the content of the badge. This is to ensure correct semantic and accessibility.`\n )\n }\n\n return (\n <span\n role=\"status\"\n className={classnames(\n 'dnb-badge',\n `dnb-badge--variant-${variant}`,\n horizontal && `dnb-badge--horizontal-${horizontal}`,\n vertical && `dnb-badge--vertical-${vertical}`,\n skeletonClasses,\n spacingClasses,\n className\n )}\n {...props}\n >\n {label && <span className=\"dnb-sr-only\">{label} </span>}\n {content}\n </span>\n )\n }\n}\n\nBadge._supportsSpacingProps = true\n\nexport default Badge\n"],"mappings":"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"}
1
+ {"version":3,"file":"Badge.js","names":["React","classnames","createSpacingClasses","createSkeletonClass","Context","warn","extendPropsWithContext","validateDOMAttributes","defaultProps","label","className","skeleton","children","content","vertical","horizontal","variant","Badge","localProps","_span","context","useContext","allProps","contentProp","props","_objectWithoutProperties","_excluded","createElement","BadgeRoot","BadgeElem","skeletonClasses","spacingClasses","contentIsNum","variantIsNotification","isInline","_extends","role","_supportsSpacingProps"],"sources":["../../../../src/components/badge/Badge.tsx"],"sourcesContent":["import React from 'react'\nimport classnames from 'classnames'\n\n// Components\nimport { createSpacingClasses } from '../space/SpacingHelper'\nimport { createSkeletonClass } from '../skeleton/SkeletonHelper'\n\n// Shared\nimport Context from '../../shared/Context'\nimport type { SpacingProps } from '../../shared/types'\nimport type { SkeletonShow } from '../skeleton/Skeleton'\nimport {\n warn,\n extendPropsWithContext,\n validateDOMAttributes,\n} from '../../shared/component-helper'\n\nexport type BadgeProps = {\n /**\n * Aria label to describe the badge\n * Default: null\n */\n label?: React.ReactNode\n\n /**\n * Custom className on the component root\n * Default: null\n */\n className?: string\n\n /**\n * Skeleton should be applied when loading content\n * Default: null\n */\n skeleton?: SkeletonShow\n\n /**\n * The content to display the badge on top of.\n * Default: null\n */\n children?: React.ReactNode\n\n /**\n * The content of the component.\n * Default: null\n */\n content?: string | number | React.ReactNode\n\n /**\n * The vertical positioning of the component.\n * Default: null\n */\n vertical?: 'bottom' | 'top'\n\n /**\n * The horizontal positioning of the component.\n * Default: null\n */\n horizontal?: 'left' | 'right'\n\n /**\n * The variant of the component.\n * Default: information.\n */\n variant?: 'information' | 'notification'\n}\n\ntype BadgeAndSpacingProps = BadgeProps & SpacingProps\n\nexport const defaultProps = {\n label: null,\n className: null,\n skeleton: false,\n children: null,\n content: null,\n vertical: null,\n horizontal: null,\n variant: 'information',\n}\n\nfunction Badge(localProps: BadgeAndSpacingProps) {\n // Every component should have a context\n const context = React.useContext(Context)\n\n // Extract additional props from global context\n const allProps = extendPropsWithContext(\n localProps,\n defaultProps,\n context?.Badge,\n { skeleton: context?.skeleton }\n )\n\n const {\n label,\n className,\n children, // eslint-disable-line\n skeleton,\n horizontal,\n vertical,\n content: contentProp,\n variant,\n ...props\n } = allProps\n\n validateDOMAttributes(allProps, props)\n\n if (children) {\n return (\n <BadgeRoot>\n {children}\n <BadgeElem />\n </BadgeRoot>\n )\n }\n\n return <BadgeElem />\n\n function BadgeRoot({ children }: { children: React.ReactNode }) {\n return <span className=\"dnb-badge__root\">{children}</span>\n }\n\n function BadgeElem() {\n const skeletonClasses = createSkeletonClass('shape', skeleton, context)\n const spacingClasses = createSpacingClasses(allProps)\n const contentIsNum = typeof contentProp === 'number'\n const variantIsNotification = variant === 'notification'\n\n const content =\n variantIsNotification && contentIsNum && contentProp > 9\n ? '9+'\n : contentProp\n\n if (variantIsNotification && !contentIsNum) {\n warn(\n `Type of content should be a number: A notification badge is best suited to display content of type number.`\n )\n }\n if (!label && contentIsNum) {\n warn(\n `Label required: A Badge with a number as content requires a label describing the content of the badge. This is to ensure correct semantic and accessibility.`\n )\n }\n\n const isInline = !children && content\n\n return (\n <span\n role=\"status\"\n className={classnames(\n 'dnb-badge',\n `dnb-badge--variant-${variant}`,\n horizontal && `dnb-badge--horizontal-${horizontal}`,\n vertical && `dnb-badge--vertical-${vertical}`,\n isInline && 'dnb-badge--inline',\n skeletonClasses,\n spacingClasses,\n className\n )}\n {...props}\n >\n {label && <span className=\"dnb-sr-only\">{label} </span>}\n {content}\n </span>\n )\n }\n}\n\nBadge._supportsSpacingProps = true\n\nexport default Badge\n"],"mappings":"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"}
@@ -58,4 +58,10 @@
58
58
  }
59
59
  .dnb-badge--vertical-top {
60
60
  top: 0;
61
+ }
62
+ .dnb-badge--inline.dnb-badge--vertical-top {
63
+ transform: translateY(-25%);
64
+ }
65
+ .dnb-badge--inline.dnb-badge--vertical-bottom {
66
+ transform: translateY(25%);
61
67
  }
@@ -1 +1 @@
1
- .dnb-badge{--badge-font-size:var(--font-size-x-small);--badge-width:1.5rem;--badge-height:1.5rem;--badge-border-radius-information:calc(var(--badge-height)/4);--badge-border-radius-notification:calc(var(--badge-height)/2);--badge-line-height:var(--line-height-x-small);align-content:center;align-items:center;display:inline-flex;flex-flow:row wrap;font-size:var(--badge-font-size);font-weight:var(--font-weight-medium);height:var(--badge-height);justify-content:center;white-space:nowrap;width:var(--badge-width)}.dnb-badge,.dnb-core-style .dnb-badge{line-height:var(--badge-line-height)}.dnb-badge__root{display:inline-flex;flex-shrink:0;position:relative;vertical-align:middle}.dnb-badge__root .dnb-badge{display:flex;overflow:hidden;position:absolute;z-index:2}.dnb-badge--variant-notification{border-radius:var(--badge-border-radius-notification)}.dnb-badge--variant-information{border-radius:var(--badge-border-radius-information);min-width:var(--badge-width);padding:0 var(--spacing-xx-small);width:auto}.dnb-badge--horizontal-left{left:0}.dnb-badge--horizontal-right{right:0}.dnb-badge--vertical-bottom{bottom:0}.dnb-badge--vertical-top{top:0}
1
+ .dnb-badge{--badge-font-size:var(--font-size-x-small);--badge-width:1.5rem;--badge-height:1.5rem;--badge-border-radius-information:calc(var(--badge-height)/4);--badge-border-radius-notification:calc(var(--badge-height)/2);--badge-line-height:var(--line-height-x-small);align-content:center;align-items:center;display:inline-flex;flex-flow:row wrap;font-size:var(--badge-font-size);font-weight:var(--font-weight-medium);height:var(--badge-height);justify-content:center;white-space:nowrap;width:var(--badge-width)}.dnb-badge,.dnb-core-style .dnb-badge{line-height:var(--badge-line-height)}.dnb-badge__root{display:inline-flex;flex-shrink:0;position:relative;vertical-align:middle}.dnb-badge__root .dnb-badge{display:flex;overflow:hidden;position:absolute;z-index:2}.dnb-badge--variant-notification{border-radius:var(--badge-border-radius-notification)}.dnb-badge--variant-information{border-radius:var(--badge-border-radius-information);min-width:var(--badge-width);padding:0 var(--spacing-xx-small);width:auto}.dnb-badge--horizontal-left{left:0}.dnb-badge--horizontal-right{right:0}.dnb-badge--vertical-bottom{bottom:0}.dnb-badge--vertical-top{top:0}.dnb-badge--inline.dnb-badge--vertical-top{transform:translateY(-25%)}.dnb-badge--inline.dnb-badge--vertical-bottom{transform:translateY(25%)}
@@ -71,4 +71,16 @@
71
71
  &--vertical-top {
72
72
  top: 0;
73
73
  }
74
+
75
+ &--inline {
76
+ &.dnb-badge--vertical-top {
77
+ // 1/4 of the badge height
78
+ transform: translateY(-25%);
79
+ }
80
+
81
+ &.dnb-badge--vertical-bottom {
82
+ // 1/4 of the badge height
83
+ transform: translateY(25%);
84
+ }
85
+ }
74
86
  }
@@ -136,6 +136,7 @@ export type ButtonProps = {
136
136
  disabled?: boolean;
137
137
  inner_ref?: React.Ref;
138
138
  className?: string;
139
+ class?: string;
139
140
  innerRef?: any;
140
141
  /**
141
142
  * The content of the button can be a string or a React Element.