@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
@@ -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,89 @@
1
+ import "core-js/modules/es.object.keys.js";
2
+ import "core-js/modules/es.symbol.js";
3
+ import "core-js/modules/es.array.filter.js";
4
+ import "core-js/modules/es.object.to-string.js";
5
+ import "core-js/modules/es.object.get-own-property-descriptor.js";
6
+ import "core-js/modules/web.dom-collections.for-each.js";
7
+ import "core-js/modules/es.object.get-own-property-descriptors.js";
8
+ import _extends from "@babel/runtime/helpers/esm/extends";
9
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
10
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
11
+ var _excluded = ["alt", "className", "children", "size", "skeleton", "variant", "src", "imgProps"];
12
+ import "core-js/modules/es.array.concat.js";
13
+
14
+ 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; }
15
+
16
+ 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; }
17
+
18
+ import React from 'react';
19
+ import classnames from 'classnames';
20
+ import { createSpacingClasses } from '../space/SpacingHelper';
21
+ import { createSkeletonClass } from '../skeleton/SkeletonHelper';
22
+ import Img from '../../elements/Img';
23
+ import Context from '../../shared/Context';
24
+ import { extendPropsWithContext, warn } from '../../shared/component-helper';
25
+ import AvatarGroup, { AvatarGroupContext } from './AvatarGroup';
26
+ export var defaultProps = {
27
+ alt: null,
28
+ className: null,
29
+ size: 'medium',
30
+ src: null,
31
+ imgProps: null,
32
+ variant: 'primary',
33
+ skeleton: false,
34
+ children: null
35
+ };
36
+
37
+ function Avatar(localProps) {
38
+ var context = React.useContext(Context);
39
+ var avatarGroupContext = React.useContext(AvatarGroupContext);
40
+
41
+ var _extendPropsWithConte = extendPropsWithContext(_objectSpread(_objectSpread({}, defaultProps), localProps), defaultProps, context === null || context === void 0 ? void 0 : context.Avatar, avatarGroupContext),
42
+ alt = _extendPropsWithConte.alt,
43
+ className = _extendPropsWithConte.className,
44
+ childrenProp = _extendPropsWithConte.children,
45
+ size = _extendPropsWithConte.size,
46
+ skeleton = _extendPropsWithConte.skeleton,
47
+ variant = _extendPropsWithConte.variant,
48
+ src = _extendPropsWithConte.src,
49
+ imgProps = _extendPropsWithConte.imgProps,
50
+ props = _objectWithoutProperties(_extendPropsWithConte, _excluded);
51
+
52
+ var children = null;
53
+ var skeletonClasses = createSkeletonClass('shape', skeleton, context);
54
+ var spacingClasses = createSpacingClasses(props);
55
+ var childrenIsString = typeof childrenProp === 'string';
56
+
57
+ if (src || imgProps) {
58
+ var imageProps = _objectSpread({
59
+ src: src,
60
+ alt: alt
61
+ }, imgProps);
62
+
63
+ children = React.createElement(Img, imageProps);
64
+ } else if (childrenIsString) {
65
+ var firstLetterUpperCase = childrenProp.charAt(0).toUpperCase();
66
+ children = React.createElement("span", {
67
+ "data-testid": "avatar-text",
68
+ "aria-hidden": true
69
+ }, firstLetterUpperCase);
70
+ } else {
71
+ children = childrenProp;
72
+ }
73
+
74
+ if (!avatarGroupContext) {
75
+ 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.");
76
+ }
77
+
78
+ return React.createElement("span", _extends({
79
+ className: classnames("dnb-avatar dnb-avatar--".concat(variant || 'primary', " dnb-avatar--size-").concat(size || 'medium'), skeletonClasses, spacingClasses, className),
80
+ "data-testid": "avatar"
81
+ }, props), childrenIsString && React.createElement("span", {
82
+ "data-testid": "avatar-label",
83
+ className: "dnb-sr-only"
84
+ }, childrenProp), children);
85
+ }
86
+
87
+ Avatar.Group = AvatarGroup;
88
+ export { AvatarGroup };
89
+ 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,94 @@
1
+ import "core-js/modules/es.object.keys.js";
2
+ import "core-js/modules/es.symbol.js";
3
+ import "core-js/modules/es.array.filter.js";
4
+ import "core-js/modules/es.object.to-string.js";
5
+ import "core-js/modules/es.object.get-own-property-descriptor.js";
6
+ import "core-js/modules/web.dom-collections.for-each.js";
7
+ import "core-js/modules/es.object.get-own-property-descriptors.js";
8
+ import _extends from "@babel/runtime/helpers/esm/extends";
9
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
10
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
11
+ var _excluded = ["label", "className", "children", "size", "maxElements", "variant"];
12
+ import "core-js/modules/es.array.map.js";
13
+ import "core-js/modules/es.array.slice.js";
14
+
15
+ 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; }
16
+
17
+ 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; }
18
+
19
+ import React from 'react';
20
+ import classnames from 'classnames';
21
+ import { createSpacingClasses } from '../space/SpacingHelper';
22
+ import Context from '../../shared/Context';
23
+ import { extendPropsWithContext } from '../../shared/component-helper';
24
+ export var defaultProps = {
25
+ label: null,
26
+ className: null,
27
+ maxElements: 4,
28
+ size: 'medium',
29
+ children: null,
30
+ variant: 'primary'
31
+ };
32
+ export var AvatarGroupContext = React.createContext(null);
33
+
34
+ function AvatarGroup(localProps) {
35
+ var context = React.useContext(Context);
36
+
37
+ var _extendPropsWithConte = extendPropsWithContext(_objectSpread(_objectSpread({}, defaultProps), localProps), defaultProps, context === null || context === void 0 ? void 0 : context.AvatarGroup),
38
+ label = _extendPropsWithConte.label,
39
+ className = _extendPropsWithConte.className,
40
+ childrenProp = _extendPropsWithConte.children,
41
+ size = _extendPropsWithConte.size,
42
+ maxElementsProp = _extendPropsWithConte.maxElements,
43
+ variant = _extendPropsWithConte.variant,
44
+ props = _objectWithoutProperties(_extendPropsWithConte, _excluded);
45
+
46
+ var maxElements = maxElementsProp && maxElementsProp > 0 ? maxElementsProp : 4;
47
+ var children = childrenProp;
48
+ var numOfHiddenAvatars = 0;
49
+
50
+ if (Array.isArray(childrenProp)) {
51
+ var total = childrenProp.length;
52
+
53
+ if (total > maxElements) {
54
+ numOfHiddenAvatars = total - maxElements + 1;
55
+ }
56
+
57
+ children = childrenProp.slice(0, total - numOfHiddenAvatars).map(function (child, i) {
58
+ var appliedSize = child.props.size ? child.props.size : size;
59
+ var appliedVariant = child.props.variant ? child.props.variant : variant;
60
+ return React.cloneElement(child, {
61
+ size: appliedSize,
62
+ variant: appliedVariant,
63
+ style: _objectSpread(_objectSpread({}, child.props.style), {}, {
64
+ zIndex: total - i
65
+ }),
66
+ key: i
67
+ });
68
+ });
69
+ }
70
+
71
+ var spacingClasses = createSpacingClasses(props);
72
+ return React.createElement(AvatarGroupContext.Provider, {
73
+ value: props
74
+ }, React.createElement("span", _extends({
75
+ className: classnames('dnb-avatar__group', spacingClasses, className),
76
+ "data-testid": "avatar-group"
77
+ }, props), React.createElement("span", {
78
+ "data-testid": "avatar-group-label",
79
+ className: "dnb-sr-only"
80
+ }, label), children, numOfHiddenAvatars ? React.createElement(ElementsHidden, {
81
+ size: size
82
+ }, "+", numOfHiddenAvatars) : null));
83
+ }
84
+
85
+ function ElementsHidden(props) {
86
+ var size = props.size,
87
+ children = props.children;
88
+ return React.createElement("span", {
89
+ className: "dnb-avatar__group--elements-left dnb-avatar__group--elements-left--size-".concat(size || 'medium'),
90
+ "data-testid": "elements-left"
91
+ }, children);
92
+ }
93
+
94
+ 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';