@dnb/eufemia 9.18.0 → 9.19.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 (499) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/cjs/components/Avatar.d.ts +14 -0
  3. package/cjs/components/Avatar.js +52 -0
  4. package/cjs/components/InfoCard.d.ts +14 -0
  5. package/cjs/components/InfoCard.js +52 -0
  6. package/cjs/components/Timeline.d.ts +14 -0
  7. package/cjs/components/Timeline.js +52 -0
  8. package/cjs/components/autocomplete/Autocomplete.d.ts +2 -2
  9. package/cjs/components/avatar/Avatar.js +149 -0
  10. package/cjs/components/avatar/AvatarGroup.js +131 -0
  11. package/cjs/components/avatar/index.d.ts +8 -0
  12. package/cjs/components/avatar/index.js +52 -0
  13. package/cjs/components/avatar/style/_avatar.scss +145 -0
  14. package/cjs/components/avatar/style/dnb-avatar.css +218 -0
  15. package/cjs/components/avatar/style/dnb-avatar.min.css +1 -0
  16. package/cjs/components/avatar/style/dnb-avatar.scss +12 -0
  17. package/cjs/components/avatar/style/index.d.ts +6 -0
  18. package/cjs/components/avatar/style/index.js +3 -0
  19. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  20. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  21. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  22. package/cjs/components/avatar/style/themes/ui.js +3 -0
  23. package/cjs/components/avatar/style.js +3 -0
  24. package/cjs/components/breadcrumb/BreadcrumbItem.js +3 -3
  25. package/cjs/components/button/Button.d.ts +1 -1
  26. package/cjs/components/button/Button.js +1 -1
  27. package/cjs/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  28. package/cjs/components/date-picker/DatePicker.js +4 -2
  29. package/cjs/components/date-picker/DatePickerFooter.d.ts +1 -0
  30. package/cjs/components/date-picker/DatePickerFooter.js +10 -6
  31. package/cjs/components/dropdown/Dropdown.d.ts +4 -3
  32. package/cjs/components/form-label/FormLabel.d.ts +1 -1
  33. package/cjs/components/heading/Heading.d.ts +2 -2
  34. package/cjs/components/heading/HeadingProvider.d.ts +2 -2
  35. package/cjs/components/help-button/HelpButton.d.ts +1 -1
  36. package/cjs/components/help-button/HelpButtonInstance.d.ts +3 -2
  37. package/cjs/components/icon/Icon.d.ts +1 -1
  38. package/cjs/components/icon-primary/IconPrimary.d.ts +1 -1
  39. package/cjs/components/index.d.ts +6 -0
  40. package/cjs/components/index.js +24 -0
  41. package/cjs/components/info-card/InfoCard.js +180 -0
  42. package/cjs/components/info-card/index.d.ts +8 -0
  43. package/cjs/components/info-card/index.js +52 -0
  44. package/cjs/components/info-card/style/_info-card.scss +52 -0
  45. package/cjs/components/info-card/style/dnb-info-card.css +135 -0
  46. package/cjs/components/info-card/style/dnb-info-card.min.css +1 -0
  47. package/cjs/components/info-card/style/dnb-info-card.scss +12 -0
  48. package/cjs/components/info-card/style/index.d.ts +6 -0
  49. package/cjs/components/info-card/style/index.js +3 -0
  50. package/cjs/components/info-card/style.js +3 -0
  51. package/cjs/components/input/Input.d.ts +2 -1
  52. package/cjs/components/lib.js +27 -0
  53. package/cjs/components/number-format/NumberFormat.d.ts +2 -2
  54. package/cjs/components/pagination/Pagination.js +11 -1
  55. package/cjs/components/radio/Radio.d.ts +1 -1
  56. package/cjs/components/radio/RadioGroup.d.ts +1 -1
  57. package/cjs/components/slider/Slider.d.ts +1 -1
  58. package/cjs/components/step-indicator/StepIndicator.d.ts +3 -3
  59. package/cjs/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  60. package/cjs/components/step-indicator/StepIndicatorItem.d.ts +1 -1
  61. package/cjs/components/step-indicator/StepIndicatorSidebar.d.ts +3 -3
  62. package/cjs/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  63. package/cjs/components/switch/Switch.d.ts +1 -1
  64. package/cjs/components/tabs/Tabs.d.ts +4 -4
  65. package/cjs/components/tabs/TabsContentWrapper.d.ts +1 -1
  66. package/cjs/components/tabs/TabsCustomContent.d.ts +1 -1
  67. package/cjs/components/tag/Tag.js +85 -25
  68. package/cjs/components/tag/TagContext.js +14 -0
  69. package/cjs/components/tag/TagGroup.js +123 -0
  70. package/cjs/components/tag/style/_tag.scss +80 -16
  71. package/cjs/components/tag/style/dnb-tag.css +849 -33
  72. package/cjs/components/tag/style/dnb-tag.min.css +1 -1
  73. package/cjs/components/tag/style/dnb-tag.scss +3 -0
  74. package/cjs/components/tag/style/themes/_tag-mixins.scss +18 -0
  75. package/cjs/components/timeline/Timeline.js +129 -0
  76. package/cjs/components/timeline/TimelineItem.js +149 -0
  77. package/cjs/components/timeline/index.d.ts +8 -0
  78. package/cjs/components/timeline/index.js +52 -0
  79. package/cjs/components/timeline/style/_timeline.scss +42 -0
  80. package/cjs/components/timeline/style/dnb-timeline.css +307 -0
  81. package/cjs/components/timeline/style/dnb-timeline.min.css +1 -0
  82. package/cjs/components/timeline/style/dnb-timeline.scss +12 -0
  83. package/cjs/components/timeline/style/index.d.ts +6 -0
  84. package/cjs/components/timeline/style/index.js +3 -0
  85. package/cjs/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  86. package/cjs/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  87. package/cjs/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  88. package/cjs/components/timeline/style/themes/ui.js +3 -0
  89. package/cjs/components/timeline/style.js +3 -0
  90. package/cjs/components/toggle-button/ToggleButton.d.ts +2 -2
  91. package/cjs/components/toggle-button/ToggleButtonGroup.d.ts +1 -1
  92. package/cjs/elements/Img.d.ts +2 -2
  93. package/cjs/extensions/payment-card/PaymentCard.d.ts +1 -1
  94. package/cjs/extensions/payment-card/style/_payment-card.scss +0 -1
  95. package/cjs/extensions/payment-card/style/dnb-payment-card.css +0 -1
  96. package/cjs/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  97. package/cjs/fragments/drawer-list/DrawerListProvider.js +1 -0
  98. package/cjs/index.d.ts +6 -0
  99. package/cjs/index.js +24 -0
  100. package/cjs/shared/Context.js +10 -4
  101. package/cjs/shared/locales/en-GB.js +5 -0
  102. package/cjs/shared/locales/nb-NO.js +5 -0
  103. package/cjs/style/dnb-ui-components.css +710 -34
  104. package/cjs/style/dnb-ui-components.min.css +3 -3
  105. package/cjs/style/dnb-ui-components.scss +3 -0
  106. package/cjs/style/dnb-ui-elements.css +3 -0
  107. package/cjs/style/dnb-ui-elements.min.css +1 -1
  108. package/cjs/style/dnb-ui-extensions.css +0 -1
  109. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  110. package/cjs/style/dnb-ui-tags.css +6 -0
  111. package/cjs/style/dnb-ui-tags.min.css +2 -2
  112. package/cjs/style/elements/code.scss +3 -0
  113. package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.css +226 -0
  114. package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  115. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +226 -0
  116. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  117. package/cjs/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  118. package/components/Avatar.d.ts +14 -0
  119. package/components/Avatar.js +3 -0
  120. package/components/InfoCard.d.ts +14 -0
  121. package/components/InfoCard.js +3 -0
  122. package/components/Timeline.d.ts +14 -0
  123. package/components/Timeline.js +3 -0
  124. package/components/autocomplete/Autocomplete.d.ts +2 -2
  125. package/components/avatar/Avatar.js +89 -0
  126. package/components/avatar/Avatar.tsx +163 -0
  127. package/components/avatar/AvatarGroup.js +94 -0
  128. package/components/avatar/AvatarGroup.tsx +167 -0
  129. package/components/avatar/index.d.ts +8 -0
  130. package/components/avatar/index.js +3 -0
  131. package/components/avatar/style/_avatar.scss +145 -0
  132. package/components/avatar/style/dnb-avatar.css +218 -0
  133. package/components/avatar/style/dnb-avatar.min.css +1 -0
  134. package/components/avatar/style/dnb-avatar.scss +12 -0
  135. package/components/avatar/style/index.d.ts +6 -0
  136. package/components/avatar/style/index.js +1 -0
  137. package/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  138. package/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  139. package/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  140. package/components/avatar/style/themes/ui.js +1 -0
  141. package/components/avatar/style.js +1 -0
  142. package/components/breadcrumb/BreadcrumbItem.js +3 -3
  143. package/components/breadcrumb/BreadcrumbItem.tsx +2 -2
  144. package/components/button/Button.js +1 -1
  145. package/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  146. package/components/date-picker/DatePicker.js +4 -2
  147. package/components/date-picker/DatePickerFooter.d.ts +1 -0
  148. package/components/date-picker/DatePickerFooter.js +10 -6
  149. package/components/dropdown/Dropdown.d.ts +4 -3
  150. package/components/form-label/FormLabel.d.ts +1 -1
  151. package/components/heading/Heading.d.ts +2 -2
  152. package/components/heading/HeadingProvider.d.ts +2 -2
  153. package/components/help-button/HelpButton.d.ts +1 -1
  154. package/components/help-button/HelpButtonInstance.d.ts +3 -2
  155. package/components/icon/Icon.d.ts +1 -1
  156. package/components/index.d.ts +6 -0
  157. package/components/index.js +4 -1
  158. package/components/info-card/InfoCard.js +140 -0
  159. package/components/info-card/InfoCard.tsx +249 -0
  160. package/components/info-card/index.d.ts +8 -0
  161. package/components/info-card/index.js +3 -0
  162. package/components/info-card/style/_info-card.scss +52 -0
  163. package/components/info-card/style/dnb-info-card.css +135 -0
  164. package/components/info-card/style/dnb-info-card.min.css +1 -0
  165. package/components/info-card/style/dnb-info-card.scss +12 -0
  166. package/components/info-card/style/index.d.ts +6 -0
  167. package/components/info-card/style/index.js +1 -0
  168. package/components/info-card/style.js +1 -0
  169. package/components/input/Input.d.ts +2 -1
  170. package/components/lib.js +7 -1
  171. package/components/number-format/NumberFormat.d.ts +2 -2
  172. package/components/pagination/Pagination.js +7 -0
  173. package/components/radio/Radio.d.ts +1 -1
  174. package/components/radio/RadioGroup.d.ts +1 -1
  175. package/components/slider/Slider.d.ts +1 -1
  176. package/components/step-indicator/StepIndicator.d.ts +3 -3
  177. package/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  178. package/components/step-indicator/StepIndicatorItem.d.ts +1 -1
  179. package/components/step-indicator/StepIndicatorSidebar.d.ts +3 -3
  180. package/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  181. package/components/switch/Switch.d.ts +1 -1
  182. package/components/tabs/Tabs.d.ts +4 -4
  183. package/components/tabs/TabsContentWrapper.d.ts +1 -1
  184. package/components/tabs/TabsCustomContent.d.ts +1 -1
  185. package/components/tag/Tag.js +84 -25
  186. package/components/tag/Tag.tsx +133 -34
  187. package/components/tag/TagContext.js +2 -0
  188. package/components/tag/TagContext.tsx +3 -0
  189. package/components/tag/TagGroup.js +60 -0
  190. package/components/tag/TagGroup.tsx +80 -0
  191. package/components/tag/style/_tag.scss +80 -16
  192. package/components/tag/style/dnb-tag.css +849 -33
  193. package/components/tag/style/dnb-tag.min.css +1 -1
  194. package/components/tag/style/dnb-tag.scss +3 -0
  195. package/components/tag/style/themes/_tag-mixins.scss +18 -0
  196. package/components/timeline/Timeline.js +57 -0
  197. package/components/timeline/Timeline.tsx +91 -0
  198. package/components/timeline/TimelineItem.js +112 -0
  199. package/components/timeline/TimelineItem.tsx +193 -0
  200. package/components/timeline/index.d.ts +8 -0
  201. package/components/timeline/index.js +3 -0
  202. package/components/timeline/style/_timeline.scss +42 -0
  203. package/components/timeline/style/dnb-timeline.css +307 -0
  204. package/components/timeline/style/dnb-timeline.min.css +1 -0
  205. package/components/timeline/style/dnb-timeline.scss +12 -0
  206. package/components/timeline/style/index.d.ts +6 -0
  207. package/components/timeline/style/index.js +1 -0
  208. package/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  209. package/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  210. package/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  211. package/components/timeline/style/themes/ui.js +1 -0
  212. package/components/timeline/style.js +1 -0
  213. package/components/toggle-button/ToggleButton.d.ts +2 -2
  214. package/components/toggle-button/ToggleButtonGroup.d.ts +1 -1
  215. package/elements/Img.d.ts +1 -1
  216. package/es/components/Avatar.d.ts +14 -0
  217. package/es/components/Avatar.js +3 -0
  218. package/es/components/InfoCard.d.ts +14 -0
  219. package/es/components/InfoCard.js +3 -0
  220. package/es/components/Timeline.d.ts +14 -0
  221. package/es/components/Timeline.js +3 -0
  222. package/es/components/autocomplete/Autocomplete.d.ts +2 -2
  223. package/es/components/avatar/Avatar.js +83 -0
  224. package/es/components/avatar/Avatar.tsx +163 -0
  225. package/es/components/avatar/AvatarGroup.js +89 -0
  226. package/es/components/avatar/AvatarGroup.tsx +167 -0
  227. package/es/components/avatar/index.d.ts +8 -0
  228. package/es/components/avatar/index.js +3 -0
  229. package/es/components/avatar/style/_avatar.scss +145 -0
  230. package/es/components/avatar/style/dnb-avatar.css +218 -0
  231. package/es/components/avatar/style/dnb-avatar.min.css +1 -0
  232. package/es/components/avatar/style/dnb-avatar.scss +12 -0
  233. package/es/components/avatar/style/index.d.ts +6 -0
  234. package/es/components/avatar/style/index.js +1 -0
  235. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  236. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  237. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  238. package/es/components/avatar/style/themes/ui.js +1 -0
  239. package/es/components/avatar/style.js +1 -0
  240. package/es/components/breadcrumb/BreadcrumbItem.js +3 -3
  241. package/es/components/breadcrumb/BreadcrumbItem.tsx +2 -2
  242. package/es/components/button/Button.d.ts +1 -1
  243. package/es/components/button/Button.js +1 -1
  244. package/es/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  245. package/es/components/date-picker/DatePicker.js +4 -2
  246. package/es/components/date-picker/DatePickerFooter.d.ts +1 -0
  247. package/es/components/date-picker/DatePickerFooter.js +9 -6
  248. package/es/components/dropdown/Dropdown.d.ts +4 -3
  249. package/es/components/form-label/FormLabel.d.ts +1 -1
  250. package/es/components/heading/Heading.d.ts +2 -2
  251. package/es/components/heading/HeadingProvider.d.ts +2 -2
  252. package/es/components/help-button/HelpButton.d.ts +1 -1
  253. package/es/components/help-button/HelpButtonInstance.d.ts +3 -2
  254. package/es/components/icon/Icon.d.ts +1 -1
  255. package/es/components/icon-primary/IconPrimary.d.ts +1 -1
  256. package/es/components/index.d.ts +6 -0
  257. package/es/components/index.js +4 -1
  258. package/es/components/info-card/InfoCard.js +135 -0
  259. package/es/components/info-card/InfoCard.tsx +249 -0
  260. package/es/components/info-card/index.d.ts +8 -0
  261. package/es/components/info-card/index.js +3 -0
  262. package/es/components/info-card/style/_info-card.scss +52 -0
  263. package/es/components/info-card/style/dnb-info-card.css +135 -0
  264. package/es/components/info-card/style/dnb-info-card.min.css +1 -0
  265. package/es/components/info-card/style/dnb-info-card.scss +12 -0
  266. package/es/components/info-card/style/index.d.ts +6 -0
  267. package/es/components/info-card/style/index.js +1 -0
  268. package/es/components/info-card/style.js +1 -0
  269. package/es/components/input/Input.d.ts +2 -1
  270. package/es/components/lib.js +7 -1
  271. package/es/components/number-format/NumberFormat.d.ts +2 -2
  272. package/es/components/pagination/Pagination.js +3 -0
  273. package/es/components/radio/Radio.d.ts +1 -1
  274. package/es/components/radio/RadioGroup.d.ts +1 -1
  275. package/es/components/slider/Slider.d.ts +1 -1
  276. package/es/components/step-indicator/StepIndicator.d.ts +3 -3
  277. package/es/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  278. package/es/components/step-indicator/StepIndicatorItem.d.ts +1 -1
  279. package/es/components/step-indicator/StepIndicatorSidebar.d.ts +3 -3
  280. package/es/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  281. package/es/components/switch/Switch.d.ts +1 -1
  282. package/es/components/tabs/Tabs.d.ts +4 -4
  283. package/es/components/tabs/TabsContentWrapper.d.ts +1 -1
  284. package/es/components/tabs/TabsCustomContent.d.ts +1 -1
  285. package/es/components/tag/Tag.js +83 -26
  286. package/es/components/tag/Tag.tsx +133 -34
  287. package/es/components/tag/TagContext.js +2 -0
  288. package/es/components/tag/TagContext.tsx +3 -0
  289. package/es/components/tag/TagGroup.js +53 -0
  290. package/es/components/tag/TagGroup.tsx +80 -0
  291. package/es/components/tag/style/_tag.scss +80 -16
  292. package/es/components/tag/style/dnb-tag.css +849 -33
  293. package/es/components/tag/style/dnb-tag.min.css +1 -1
  294. package/es/components/tag/style/dnb-tag.scss +3 -0
  295. package/es/components/tag/style/themes/_tag-mixins.scss +18 -0
  296. package/es/components/timeline/Timeline.js +48 -0
  297. package/es/components/timeline/Timeline.tsx +91 -0
  298. package/es/components/timeline/TimelineItem.js +111 -0
  299. package/es/components/timeline/TimelineItem.tsx +193 -0
  300. package/es/components/timeline/index.d.ts +8 -0
  301. package/es/components/timeline/index.js +3 -0
  302. package/es/components/timeline/style/_timeline.scss +42 -0
  303. package/es/components/timeline/style/dnb-timeline.css +307 -0
  304. package/es/components/timeline/style/dnb-timeline.min.css +1 -0
  305. package/es/components/timeline/style/dnb-timeline.scss +12 -0
  306. package/es/components/timeline/style/index.d.ts +6 -0
  307. package/es/components/timeline/style/index.js +1 -0
  308. package/es/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  309. package/es/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  310. package/es/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  311. package/es/components/timeline/style/themes/ui.js +1 -0
  312. package/es/components/timeline/style.js +1 -0
  313. package/es/components/toggle-button/ToggleButton.d.ts +2 -2
  314. package/es/components/toggle-button/ToggleButtonGroup.d.ts +1 -1
  315. package/es/elements/Img.d.ts +2 -2
  316. package/es/extensions/payment-card/PaymentCard.d.ts +1 -1
  317. package/es/extensions/payment-card/style/_payment-card.scss +0 -1
  318. package/es/extensions/payment-card/style/dnb-payment-card.css +0 -1
  319. package/es/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  320. package/es/fragments/drawer-list/DrawerListProvider.js +1 -0
  321. package/es/index.d.ts +6 -0
  322. package/es/index.js +4 -1
  323. package/es/shared/Context.js +10 -4
  324. package/es/shared/locales/en-GB.js +5 -0
  325. package/es/shared/locales/nb-NO.js +5 -0
  326. package/es/style/dnb-ui-components.css +710 -34
  327. package/es/style/dnb-ui-components.min.css +3 -3
  328. package/es/style/dnb-ui-components.scss +3 -0
  329. package/es/style/dnb-ui-elements.css +3 -0
  330. package/es/style/dnb-ui-elements.min.css +1 -1
  331. package/es/style/dnb-ui-extensions.css +0 -1
  332. package/es/style/dnb-ui-extensions.min.css +1 -1
  333. package/es/style/dnb-ui-tags.css +6 -0
  334. package/es/style/dnb-ui-tags.min.css +2 -2
  335. package/es/style/elements/code.scss +3 -0
  336. package/es/style/themes/theme-open-banking/dnb-theme-open-banking.css +226 -0
  337. package/es/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  338. package/es/style/themes/theme-ui/dnb-theme-ui.css +226 -0
  339. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  340. package/es/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  341. package/esm/components/Avatar.d.ts +14 -0
  342. package/esm/components/Avatar.js +3 -0
  343. package/esm/components/InfoCard.d.ts +14 -0
  344. package/esm/components/InfoCard.js +3 -0
  345. package/esm/components/Timeline.d.ts +14 -0
  346. package/esm/components/Timeline.js +3 -0
  347. package/esm/components/autocomplete/Autocomplete.d.ts +2 -2
  348. package/esm/components/avatar/Avatar.js +89 -0
  349. package/esm/components/avatar/Avatar.tsx +163 -0
  350. package/esm/components/avatar/AvatarGroup.js +94 -0
  351. package/esm/components/avatar/AvatarGroup.tsx +167 -0
  352. package/esm/components/avatar/index.d.ts +8 -0
  353. package/esm/components/avatar/index.js +3 -0
  354. package/esm/components/avatar/style/_avatar.scss +145 -0
  355. package/esm/components/avatar/style/dnb-avatar.css +218 -0
  356. package/esm/components/avatar/style/dnb-avatar.min.css +1 -0
  357. package/esm/components/avatar/style/dnb-avatar.scss +12 -0
  358. package/esm/components/avatar/style/index.d.ts +6 -0
  359. package/esm/components/avatar/style/index.js +1 -0
  360. package/esm/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  361. package/esm/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  362. package/esm/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  363. package/esm/components/avatar/style/themes/ui.js +1 -0
  364. package/esm/components/avatar/style.js +1 -0
  365. package/esm/components/breadcrumb/BreadcrumbItem.js +3 -3
  366. package/esm/components/breadcrumb/BreadcrumbItem.tsx +2 -2
  367. package/esm/components/button/Button.js +1 -1
  368. package/esm/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  369. package/esm/components/date-picker/DatePicker.js +4 -2
  370. package/esm/components/date-picker/DatePickerFooter.d.ts +1 -0
  371. package/esm/components/date-picker/DatePickerFooter.js +10 -6
  372. package/esm/components/dropdown/Dropdown.d.ts +4 -3
  373. package/esm/components/form-label/FormLabel.d.ts +1 -1
  374. package/esm/components/heading/Heading.d.ts +2 -2
  375. package/esm/components/heading/HeadingProvider.d.ts +2 -2
  376. package/esm/components/help-button/HelpButton.d.ts +1 -1
  377. package/esm/components/help-button/HelpButtonInstance.d.ts +3 -2
  378. package/esm/components/icon/Icon.d.ts +1 -1
  379. package/esm/components/index.d.ts +6 -0
  380. package/esm/components/index.js +4 -1
  381. package/esm/components/info-card/InfoCard.js +140 -0
  382. package/esm/components/info-card/InfoCard.tsx +249 -0
  383. package/esm/components/info-card/index.d.ts +8 -0
  384. package/esm/components/info-card/index.js +3 -0
  385. package/esm/components/info-card/style/_info-card.scss +52 -0
  386. package/esm/components/info-card/style/dnb-info-card.css +135 -0
  387. package/esm/components/info-card/style/dnb-info-card.min.css +1 -0
  388. package/esm/components/info-card/style/dnb-info-card.scss +12 -0
  389. package/esm/components/info-card/style/index.d.ts +6 -0
  390. package/esm/components/info-card/style/index.js +1 -0
  391. package/esm/components/info-card/style.js +1 -0
  392. package/esm/components/input/Input.d.ts +2 -1
  393. package/esm/components/lib.js +7 -1
  394. package/esm/components/number-format/NumberFormat.d.ts +2 -2
  395. package/esm/components/pagination/Pagination.js +7 -0
  396. package/esm/components/radio/Radio.d.ts +1 -1
  397. package/esm/components/radio/RadioGroup.d.ts +1 -1
  398. package/esm/components/slider/Slider.d.ts +1 -1
  399. package/esm/components/step-indicator/StepIndicator.d.ts +3 -3
  400. package/esm/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  401. package/esm/components/step-indicator/StepIndicatorItem.d.ts +1 -1
  402. package/esm/components/step-indicator/StepIndicatorSidebar.d.ts +3 -3
  403. package/esm/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  404. package/esm/components/switch/Switch.d.ts +1 -1
  405. package/esm/components/tabs/Tabs.d.ts +4 -4
  406. package/esm/components/tabs/TabsContentWrapper.d.ts +1 -1
  407. package/esm/components/tabs/TabsCustomContent.d.ts +1 -1
  408. package/esm/components/tag/Tag.js +84 -25
  409. package/esm/components/tag/Tag.tsx +133 -34
  410. package/esm/components/tag/TagContext.js +2 -0
  411. package/esm/components/tag/TagContext.tsx +3 -0
  412. package/esm/components/tag/TagGroup.js +60 -0
  413. package/esm/components/tag/TagGroup.tsx +80 -0
  414. package/esm/components/tag/style/_tag.scss +80 -16
  415. package/esm/components/tag/style/dnb-tag.css +849 -33
  416. package/esm/components/tag/style/dnb-tag.min.css +1 -1
  417. package/esm/components/tag/style/dnb-tag.scss +3 -0
  418. package/esm/components/tag/style/themes/_tag-mixins.scss +18 -0
  419. package/esm/components/timeline/Timeline.js +57 -0
  420. package/esm/components/timeline/Timeline.tsx +91 -0
  421. package/esm/components/timeline/TimelineItem.js +112 -0
  422. package/esm/components/timeline/TimelineItem.tsx +193 -0
  423. package/esm/components/timeline/index.d.ts +8 -0
  424. package/esm/components/timeline/index.js +3 -0
  425. package/esm/components/timeline/style/_timeline.scss +42 -0
  426. package/esm/components/timeline/style/dnb-timeline.css +307 -0
  427. package/esm/components/timeline/style/dnb-timeline.min.css +1 -0
  428. package/esm/components/timeline/style/dnb-timeline.scss +12 -0
  429. package/esm/components/timeline/style/index.d.ts +6 -0
  430. package/esm/components/timeline/style/index.js +1 -0
  431. package/esm/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  432. package/esm/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  433. package/esm/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  434. package/esm/components/timeline/style/themes/ui.js +1 -0
  435. package/esm/components/timeline/style.js +1 -0
  436. package/esm/components/toggle-button/ToggleButton.d.ts +2 -2
  437. package/esm/components/toggle-button/ToggleButtonGroup.d.ts +1 -1
  438. package/esm/dnb-ui-components.min.mjs +4 -4
  439. package/esm/dnb-ui-elements.min.mjs +1 -1
  440. package/esm/dnb-ui-extensions.min.mjs +3 -3
  441. package/esm/dnb-ui-lib.min.mjs +4 -4
  442. package/esm/dnb-ui-web-components.min.mjs +4 -4
  443. package/esm/elements/Img.d.ts +1 -1
  444. package/esm/extensions/payment-card/PaymentCard.d.ts +1 -1
  445. package/esm/extensions/payment-card/style/_payment-card.scss +0 -1
  446. package/esm/extensions/payment-card/style/dnb-payment-card.css +0 -1
  447. package/esm/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  448. package/esm/fragments/drawer-list/DrawerListProvider.js +1 -0
  449. package/esm/index.d.ts +6 -0
  450. package/esm/index.js +4 -1
  451. package/esm/shared/Context.js +10 -4
  452. package/esm/shared/locales/en-GB.js +5 -0
  453. package/esm/shared/locales/nb-NO.js +5 -0
  454. package/esm/style/dnb-ui-components.css +710 -34
  455. package/esm/style/dnb-ui-components.min.css +3 -3
  456. package/esm/style/dnb-ui-components.scss +3 -0
  457. package/esm/style/dnb-ui-elements.css +3 -0
  458. package/esm/style/dnb-ui-elements.min.css +1 -1
  459. package/esm/style/dnb-ui-extensions.css +0 -1
  460. package/esm/style/dnb-ui-extensions.min.css +1 -1
  461. package/esm/style/dnb-ui-tags.css +6 -0
  462. package/esm/style/dnb-ui-tags.min.css +2 -2
  463. package/esm/style/elements/code.scss +3 -0
  464. package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.css +226 -0
  465. package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  466. package/esm/style/themes/theme-ui/dnb-theme-ui.css +226 -0
  467. package/esm/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  468. package/esm/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  469. package/extensions/payment-card/PaymentCard.d.ts +1 -1
  470. package/extensions/payment-card/style/_payment-card.scss +0 -1
  471. package/extensions/payment-card/style/dnb-payment-card.css +0 -1
  472. package/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  473. package/fragments/drawer-list/DrawerListProvider.js +1 -0
  474. package/index.d.ts +6 -0
  475. package/index.js +4 -1
  476. package/package.json +2 -3
  477. package/shared/Context.js +10 -4
  478. package/shared/locales/en-GB.js +5 -0
  479. package/shared/locales/nb-NO.js +5 -0
  480. package/style/dnb-ui-components.css +710 -34
  481. package/style/dnb-ui-components.min.css +3 -3
  482. package/style/dnb-ui-components.scss +3 -0
  483. package/style/dnb-ui-elements.css +3 -0
  484. package/style/dnb-ui-elements.min.css +1 -1
  485. package/style/dnb-ui-extensions.css +0 -1
  486. package/style/dnb-ui-extensions.min.css +1 -1
  487. package/style/dnb-ui-tags.css +6 -0
  488. package/style/dnb-ui-tags.min.css +2 -2
  489. package/style/elements/code.scss +3 -0
  490. package/style/themes/theme-open-banking/dnb-theme-open-banking.css +226 -0
  491. package/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  492. package/style/themes/theme-ui/dnb-theme-ui.css +226 -0
  493. package/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  494. package/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  495. package/umd/dnb-ui-components.min.js +5 -5
  496. package/umd/dnb-ui-elements.min.js +3 -3
  497. package/umd/dnb-ui-extensions.min.js +3 -3
  498. package/umd/dnb-ui-lib.min.js +5 -5
  499. package/umd/dnb-ui-web-components.min.js +5 -5
package/elements/Img.d.ts CHANGED
@@ -14,7 +14,7 @@ export type ImgRight = string | number | boolean;
14
14
  export type ImgBottom = string | number | boolean;
15
15
  export type ImgLeft = string | number | boolean;
16
16
  export type ImgSkeleton = string | boolean;
17
- export type ImgClassName = string | Object | any[];
17
+ export type ImgClassName = string | any | any[];
18
18
 
19
19
  /**
20
20
  * NB: Do not change the docs (comments) in here. The docs are updated during build time by "generateTypes.js" and "fetchPropertiesFromDocs.js".
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ATTENTION: This file is auto generated by using "prepareTemplates".
3
+ * Do not change the content!
4
+ *
5
+ */
6
+
7
+ /**
8
+ * Library Index avatar to autogenerate all the components and extensions
9
+ * Used by "prepareAvatars"
10
+ */
11
+
12
+ import Avatar from './avatar/Avatar'
13
+ export * from './avatar/Avatar'
14
+ export default Avatar
@@ -0,0 +1,3 @@
1
+ import Avatar from './avatar/Avatar';
2
+ export * from './avatar/Avatar';
3
+ export default Avatar;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ATTENTION: This file is auto generated by using "prepareTemplates".
3
+ * Do not change the content!
4
+ *
5
+ */
6
+
7
+ /**
8
+ * Library Index info-card to autogenerate all the components and extensions
9
+ * Used by "prepareInfoCards"
10
+ */
11
+
12
+ import InfoCard from './info-card/InfoCard'
13
+ export * from './info-card/InfoCard'
14
+ export default InfoCard
@@ -0,0 +1,3 @@
1
+ import InfoCard from './info-card/InfoCard';
2
+ export * from './info-card/InfoCard';
3
+ export default InfoCard;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * ATTENTION: This file is auto generated by using "prepareTemplates".
3
+ * Do not change the content!
4
+ *
5
+ */
6
+
7
+ /**
8
+ * Library Index timeline to autogenerate all the components and extensions
9
+ * Used by "prepareTimelines"
10
+ */
11
+
12
+ import Timeline from './timeline/Timeline'
13
+ export * from './timeline/Timeline'
14
+ export default Timeline
@@ -0,0 +1,3 @@
1
+ import Timeline from './timeline/Timeline';
2
+ export * from './timeline/Timeline';
3
+ export default Timeline;
@@ -440,7 +440,7 @@ export interface AutocompleteProps extends React.HTMLProps<HTMLElement> {
440
440
  input_element?: AutocompleteInputElement;
441
441
 
442
442
  /**
443
- * The data we want to fill the list with. Provide the data as a `JSON string`, `array` or `object` in these <a href="/uilib/components/fragments/drawer-list/info#data-structure">data structure</a>. <br /> If you don&#39;t have to define a `value`, you can also send in a `function` which will be called once the user opens the DrawerList.
443
+ * <em>(required)</em> the data we want to fill the list with. Provide the data as a `JSON string`, `array` or `object` in these <a href="/uilib/components/fragments/drawer-list/info#data-structure">data structure</a>. <br /> If you don&#39;t have to define a `value`, you can also send in a `function` which will be called once the user opens the DrawerList.
444
444
  */
445
445
  data?: AutocompleteData;
446
446
 
@@ -513,7 +513,7 @@ export interface AutocompleteProps extends React.HTMLProps<HTMLElement> {
513
513
  className?: string;
514
514
 
515
515
  /**
516
- * The data we want to fill the list with. Provide the data as a `JSON string`, `array` or `object` in these <a href="/uilib/components/fragments/drawer-list/info#data-structure">data structure</a>. <br /> If you don&#39;t have to define a `value`, you can also send in a `function` which will be called once the user opens the DrawerList.
516
+ * <em>(required)</em> the data we want to fill the list with. Provide the data as a `JSON string`, `array` or `object` in these <a href="/uilib/components/fragments/drawer-list/info#data-structure">data structure</a>. <br /> If you don&#39;t have to define a `value`, you can also send in a `function` which will be called once the user opens the DrawerList.
517
517
  */
518
518
  children?: AutocompleteChildren;
519
519
  custom_element?: Object;
@@ -0,0 +1,83 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ const _excluded = ["alt", "className", "children", "size", "skeleton", "variant", "src", "imgProps"];
5
+
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
+
8
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
9
+
10
+ import React from 'react';
11
+ import classnames from 'classnames';
12
+ import { createSpacingClasses } from '../space/SpacingHelper';
13
+ import { createSkeletonClass } from '../skeleton/SkeletonHelper';
14
+ import Img from '../../elements/Img';
15
+ import Context from '../../shared/Context';
16
+ import { extendPropsWithContext, warn } from '../../shared/component-helper';
17
+ import AvatarGroup, { AvatarGroupContext } from './AvatarGroup';
18
+ export const defaultProps = {
19
+ alt: null,
20
+ className: null,
21
+ size: 'medium',
22
+ src: null,
23
+ imgProps: null,
24
+ variant: 'primary',
25
+ skeleton: false,
26
+ children: null
27
+ };
28
+
29
+ function Avatar(localProps) {
30
+ const context = React.useContext(Context);
31
+ const avatarGroupContext = React.useContext(AvatarGroupContext);
32
+
33
+ const _extendPropsWithConte = extendPropsWithContext(_objectSpread(_objectSpread({}, defaultProps), localProps), defaultProps, context === null || context === void 0 ? void 0 : context.Avatar, avatarGroupContext),
34
+ {
35
+ alt,
36
+ className,
37
+ children: childrenProp,
38
+ size,
39
+ skeleton,
40
+ variant,
41
+ src,
42
+ imgProps
43
+ } = _extendPropsWithConte,
44
+ props = _objectWithoutProperties(_extendPropsWithConte, _excluded);
45
+
46
+ let children = null;
47
+ const skeletonClasses = createSkeletonClass('shape', skeleton, context);
48
+ const spacingClasses = createSpacingClasses(props);
49
+ const childrenIsString = typeof childrenProp === 'string';
50
+
51
+ if (src || imgProps) {
52
+ const imageProps = _objectSpread({
53
+ src,
54
+ alt
55
+ }, imgProps);
56
+
57
+ children = React.createElement(Img, imageProps);
58
+ } else if (childrenIsString) {
59
+ const firstLetterUpperCase = childrenProp.charAt(0).toUpperCase();
60
+ children = React.createElement("span", {
61
+ "data-testid": "avatar-text",
62
+ "aria-hidden": true
63
+ }, firstLetterUpperCase);
64
+ } else {
65
+ children = childrenProp;
66
+ }
67
+
68
+ if (!avatarGroupContext) {
69
+ warn(`Avatar group required: An Avatar requires an Avatar.Group with label description as a parent component. This is to ensure correct semantic and accessibility.`);
70
+ }
71
+
72
+ return React.createElement("span", _extends({
73
+ className: classnames(`dnb-avatar dnb-avatar--${variant || 'primary'} dnb-avatar--size-${size || 'medium'}`, skeletonClasses, spacingClasses, className),
74
+ "data-testid": "avatar"
75
+ }, props), childrenIsString && React.createElement("span", {
76
+ "data-testid": "avatar-label",
77
+ className: "dnb-sr-only"
78
+ }, childrenProp), children);
79
+ }
80
+
81
+ Avatar.Group = AvatarGroup;
82
+ export { AvatarGroup };
83
+ export default Avatar;
@@ -0,0 +1,163 @@
1
+ import React from 'react'
2
+ import classnames from 'classnames'
3
+
4
+ // Components
5
+ import { createSpacingClasses } from '../space/SpacingHelper'
6
+ import { createSkeletonClass } from '../skeleton/SkeletonHelper'
7
+
8
+ // Elements
9
+ import Img, { ImgProps } from '../../elements/Img'
10
+
11
+ // Shared
12
+ import Context from '../../shared/Context'
13
+ import { ISpacingProps, SkeletonTypes } from '../../shared/interfaces'
14
+ import {
15
+ extendPropsWithContext,
16
+ warn,
17
+ } from '../../shared/component-helper'
18
+
19
+ // Internal
20
+ import AvatarGroup, { AvatarGroupContext } from './AvatarGroup'
21
+
22
+ export type AvatarSizes = 'small' | 'medium' | 'large' | 'x-large'
23
+ export type AvatarVariants = 'primary' | 'secondary' | 'tertiary'
24
+
25
+ export interface AvatarProps {
26
+ /**
27
+ * Used in combination with `src` to provide an alt attribute for the `img` element.
28
+ * Default: null
29
+ */
30
+ alt?: string
31
+
32
+ /**
33
+ * Custom className on the component root
34
+ * Default: null
35
+ */
36
+ className?: string
37
+
38
+ /**
39
+ * Skeleton should be applied when loading content
40
+ * Default: null
41
+ */
42
+ skeleton?: SkeletonTypes
43
+
44
+ /**
45
+ * The content of the component. Can be used instead of prop "data".
46
+ * Default: null
47
+ */
48
+ children?: React.ReactNode
49
+
50
+ /**
51
+ * The size of the component.
52
+ * Default: medium.
53
+ */
54
+ size?: AvatarSizes
55
+
56
+ /**
57
+ * Specifies the path to the image
58
+ * Default: null
59
+ */
60
+ src?: string
61
+
62
+ /**
63
+ * Props applied to the `img` element if the component is used to display an image.
64
+ * Default: null
65
+ */
66
+ imgProps?: ImgProps
67
+
68
+ /**
69
+ * The variant of the component.
70
+ * Default: primary.
71
+ */
72
+ variant?: AvatarVariants
73
+ }
74
+
75
+ export const defaultProps = {
76
+ alt: null,
77
+ className: null,
78
+ size: 'medium',
79
+ src: null,
80
+ imgProps: null,
81
+ variant: 'primary',
82
+ skeleton: false,
83
+ children: null,
84
+ }
85
+
86
+ function Avatar(localProps: AvatarProps & ISpacingProps) {
87
+ // Every component should have a context
88
+ const context = React.useContext(Context)
89
+ const avatarGroupContext = React.useContext(AvatarGroupContext)
90
+
91
+ // Extract additional props from global context
92
+ const {
93
+ alt,
94
+ className,
95
+ children: childrenProp,
96
+ size,
97
+ skeleton,
98
+ variant,
99
+ src,
100
+ imgProps,
101
+ ...props
102
+ } = extendPropsWithContext(
103
+ { ...defaultProps, ...localProps },
104
+ defaultProps,
105
+ context?.Avatar,
106
+ avatarGroupContext
107
+ )
108
+
109
+ let children = null
110
+
111
+ const skeletonClasses = createSkeletonClass('shape', skeleton, context)
112
+ const spacingClasses = createSpacingClasses(props)
113
+
114
+ const childrenIsString = typeof childrenProp === 'string'
115
+
116
+ if (src || imgProps) {
117
+ const imageProps = { src, alt, ...imgProps }
118
+ children = <Img {...imageProps} />
119
+ } else if (childrenIsString) {
120
+ const firstLetterUpperCase = childrenProp.charAt(0).toUpperCase()
121
+ children = (
122
+ <span data-testid="avatar-text" aria-hidden>
123
+ {firstLetterUpperCase}
124
+ </span>
125
+ )
126
+ } else {
127
+ children = childrenProp
128
+ }
129
+
130
+ if (!avatarGroupContext) {
131
+ warn(
132
+ `Avatar group required: An Avatar requires an Avatar.Group with label description as a parent component. This is to ensure correct semantic and accessibility.`
133
+ )
134
+ }
135
+
136
+ return (
137
+ <span
138
+ className={classnames(
139
+ 'dnb-avatar',
140
+ `dnb-avatar--${variant || 'primary'}`,
141
+ `dnb-avatar--size-${size || 'medium'}`,
142
+ skeletonClasses,
143
+ spacingClasses,
144
+ className
145
+ )}
146
+ data-testid="avatar"
147
+ {...props}
148
+ >
149
+ {childrenIsString && (
150
+ <span data-testid="avatar-label" className="dnb-sr-only">
151
+ {childrenProp}
152
+ </span>
153
+ )}
154
+ {children}
155
+ </span>
156
+ )
157
+ }
158
+
159
+ Avatar.Group = AvatarGroup
160
+
161
+ export { AvatarGroup }
162
+
163
+ export default Avatar
@@ -0,0 +1,89 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
+ const _excluded = ["label", "className", "children", "size", "maxElements", "variant"];
5
+
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
+
8
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
9
+
10
+ import React from 'react';
11
+ import classnames from 'classnames';
12
+ import { createSpacingClasses } from '../space/SpacingHelper';
13
+ import Context from '../../shared/Context';
14
+ import { extendPropsWithContext } from '../../shared/component-helper';
15
+ export const defaultProps = {
16
+ label: null,
17
+ className: null,
18
+ maxElements: 4,
19
+ size: 'medium',
20
+ children: null,
21
+ variant: 'primary'
22
+ };
23
+ export const AvatarGroupContext = React.createContext(null);
24
+
25
+ function AvatarGroup(localProps) {
26
+ const context = React.useContext(Context);
27
+
28
+ const _extendPropsWithConte = extendPropsWithContext(_objectSpread(_objectSpread({}, defaultProps), localProps), defaultProps, context === null || context === void 0 ? void 0 : context.AvatarGroup),
29
+ {
30
+ label,
31
+ className,
32
+ children: childrenProp,
33
+ size,
34
+ maxElements: maxElementsProp,
35
+ variant
36
+ } = _extendPropsWithConte,
37
+ props = _objectWithoutProperties(_extendPropsWithConte, _excluded);
38
+
39
+ const maxElements = maxElementsProp && maxElementsProp > 0 ? maxElementsProp : 4;
40
+ let children = childrenProp;
41
+ let numOfHiddenAvatars = 0;
42
+
43
+ if (Array.isArray(childrenProp)) {
44
+ const total = childrenProp.length;
45
+
46
+ if (total > maxElements) {
47
+ numOfHiddenAvatars = total - maxElements + 1;
48
+ }
49
+
50
+ children = childrenProp.slice(0, total - numOfHiddenAvatars).map((child, i) => {
51
+ const appliedSize = child.props.size ? child.props.size : size;
52
+ const appliedVariant = child.props.variant ? child.props.variant : variant;
53
+ return React.cloneElement(child, {
54
+ size: appliedSize,
55
+ variant: appliedVariant,
56
+ style: _objectSpread(_objectSpread({}, child.props.style), {}, {
57
+ zIndex: total - i
58
+ }),
59
+ key: i
60
+ });
61
+ });
62
+ }
63
+
64
+ const spacingClasses = createSpacingClasses(props);
65
+ return React.createElement(AvatarGroupContext.Provider, {
66
+ value: props
67
+ }, React.createElement("span", _extends({
68
+ className: classnames('dnb-avatar__group', spacingClasses, className),
69
+ "data-testid": "avatar-group"
70
+ }, props), React.createElement("span", {
71
+ "data-testid": "avatar-group-label",
72
+ className: "dnb-sr-only"
73
+ }, label), children, numOfHiddenAvatars ? React.createElement(ElementsHidden, {
74
+ size: size
75
+ }, "+", numOfHiddenAvatars) : null));
76
+ }
77
+
78
+ function ElementsHidden(props) {
79
+ const {
80
+ size,
81
+ children
82
+ } = props;
83
+ return React.createElement("span", {
84
+ className: `dnb-avatar__group--elements-left dnb-avatar__group--elements-left--size-${size || 'medium'}`,
85
+ "data-testid": "elements-left"
86
+ }, children);
87
+ }
88
+
89
+ export default AvatarGroup;
@@ -0,0 +1,167 @@
1
+ import React from 'react'
2
+ import classnames from 'classnames'
3
+
4
+ // Components
5
+ import { createSpacingClasses } from '../space/SpacingHelper'
6
+ import { AvatarSizes, AvatarVariants } from './Avatar'
7
+
8
+ // Shared
9
+ import Context from '../../shared/Context'
10
+ import { ISpacingProps } from '../../shared/interfaces'
11
+ import { extendPropsWithContext } from '../../shared/component-helper'
12
+
13
+ export interface AvatarGroupProps {
14
+ /**
15
+ * Label to describe the avatar group
16
+ * Default: null
17
+ */
18
+ label: string
19
+
20
+ /**
21
+ * Custom className on the component root
22
+ * Default: null
23
+ */
24
+ className?: string
25
+
26
+ /**
27
+ * Number of max displayed elements, including the "elements hidden text (+x)".
28
+ * Default: 4
29
+ */
30
+ maxElements?: number
31
+
32
+ /**
33
+ * The avatars to group.
34
+ * Default: null
35
+ */
36
+ children?: React.ReactNode
37
+
38
+ /**
39
+ * The size of the Avatars, and "elements hidden text (+x)".
40
+ * Default: medium.
41
+ */
42
+ size?: AvatarSizes
43
+
44
+ /**
45
+ * The variant of the Avatars.
46
+ * Default: primary.
47
+ */
48
+ variant?: AvatarVariants
49
+ }
50
+
51
+ export const defaultProps = {
52
+ label: null,
53
+ className: null,
54
+ maxElements: 4,
55
+ size: 'medium',
56
+ children: null,
57
+ variant: 'primary',
58
+ }
59
+
60
+ export const AvatarGroupContext = React.createContext(null)
61
+
62
+ function AvatarGroup(localProps: AvatarGroupProps & ISpacingProps) {
63
+ // Every component should have a context
64
+ const context = React.useContext(Context)
65
+ // Extract additional props from global context
66
+ const {
67
+ label,
68
+ className,
69
+ children: childrenProp,
70
+ size,
71
+ maxElements: maxElementsProp,
72
+ variant,
73
+ ...props
74
+ } = extendPropsWithContext(
75
+ { ...defaultProps, ...localProps },
76
+ defaultProps,
77
+ context?.AvatarGroup
78
+ )
79
+
80
+ const maxElements =
81
+ maxElementsProp && maxElementsProp > 0 ? maxElementsProp : 4
82
+
83
+ let children = childrenProp
84
+ let numOfHiddenAvatars = 0
85
+
86
+ if (Array.isArray(childrenProp)) {
87
+ const total = childrenProp.length
88
+
89
+ if (total > maxElements) {
90
+ numOfHiddenAvatars = total - maxElements + 1
91
+ }
92
+
93
+ children = childrenProp
94
+ .slice(0, total - numOfHiddenAvatars)
95
+ .map((child, i) => {
96
+ const appliedSize = child.props.size ? child.props.size : size
97
+ const appliedVariant = child.props.variant
98
+ ? child.props.variant
99
+ : variant
100
+ return React.cloneElement(child, {
101
+ size: appliedSize,
102
+ variant: appliedVariant,
103
+ style: { ...child.props.style, zIndex: total - i },
104
+ key: i,
105
+ })
106
+ })
107
+ }
108
+
109
+ const spacingClasses = createSpacingClasses(props)
110
+
111
+ return (
112
+ <AvatarGroupContext.Provider value={props}>
113
+ <span
114
+ className={classnames(
115
+ 'dnb-avatar__group',
116
+ spacingClasses,
117
+ className
118
+ )}
119
+ data-testid="avatar-group"
120
+ {...props}
121
+ >
122
+ <span data-testid="avatar-group-label" className="dnb-sr-only">
123
+ {label}
124
+ </span>
125
+
126
+ {children}
127
+
128
+ {numOfHiddenAvatars ? (
129
+ <ElementsHidden size={size}>
130
+ +{numOfHiddenAvatars}
131
+ </ElementsHidden>
132
+ ) : null}
133
+ </span>
134
+ </AvatarGroupContext.Provider>
135
+ )
136
+ }
137
+
138
+ export interface ElementsHiddenProps {
139
+ /**
140
+ * The avatars to group.
141
+ * Default: null
142
+ */
143
+ children?: React.ReactNode
144
+
145
+ /**
146
+ * The size of the "elements hidden text (+x)".
147
+ * Default: medium.
148
+ */
149
+ size?: AvatarSizes
150
+ }
151
+
152
+ function ElementsHidden(props: ElementsHiddenProps) {
153
+ const { size, children } = props
154
+ return (
155
+ <span
156
+ className={classnames(
157
+ 'dnb-avatar__group--elements-left',
158
+ `dnb-avatar__group--elements-left--size-${size || 'medium'}`
159
+ )}
160
+ data-testid="elements-left"
161
+ >
162
+ {children}
163
+ </span>
164
+ )
165
+ }
166
+
167
+ export default AvatarGroup
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Component Entry
3
+ *
4
+ */
5
+
6
+ import Avatar from './Avatar'
7
+ export default Avatar
8
+ export * from './Avatar'
@@ -0,0 +1,3 @@
1
+ import Avatar from './Avatar';
2
+ export default Avatar;
3
+ export * from './Avatar';