@dnb/eufemia 9.17.2 → 9.21.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 (774) hide show
  1. package/CHANGELOG.md +24 -141
  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/Tag.d.ts +14 -0
  7. package/cjs/components/Tag.js +52 -0
  8. package/cjs/components/Timeline.d.ts +14 -0
  9. package/cjs/components/Timeline.js +52 -0
  10. package/cjs/components/accordion/Accordion.d.ts +7 -7
  11. package/cjs/components/autocomplete/Autocomplete.d.ts +13 -13
  12. package/cjs/components/avatar/Avatar.js +151 -0
  13. package/cjs/components/avatar/AvatarGroup.js +131 -0
  14. package/cjs/components/avatar/index.d.ts +8 -0
  15. package/cjs/components/avatar/index.js +52 -0
  16. package/cjs/components/avatar/style/_avatar.scss +147 -0
  17. package/cjs/components/avatar/style/dnb-avatar.css +221 -0
  18. package/cjs/components/avatar/style/dnb-avatar.min.css +1 -0
  19. package/cjs/components/avatar/style/dnb-avatar.scss +12 -0
  20. package/cjs/components/avatar/style/index.d.ts +6 -0
  21. package/cjs/components/avatar/style/index.js +3 -0
  22. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  23. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  24. package/cjs/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  25. package/cjs/components/avatar/style/themes/ui.js +3 -0
  26. package/cjs/components/avatar/style.js +3 -0
  27. package/cjs/components/breadcrumb/Breadcrumb.js +27 -52
  28. package/cjs/components/breadcrumb/BreadcrumbItem.js +18 -32
  29. package/cjs/components/button/Button.d.ts +19 -15
  30. package/cjs/components/button/Button.js +7 -5
  31. package/cjs/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  32. package/cjs/components/checkbox/Checkbox.d.ts +3 -3
  33. package/cjs/components/date-picker/DatePicker.d.ts +14 -14
  34. package/cjs/components/date-picker/DatePicker.js +4 -2
  35. package/cjs/components/date-picker/DatePickerAddon.d.ts +1 -1
  36. package/cjs/components/date-picker/DatePickerCalendar.d.ts +1 -1
  37. package/cjs/components/date-picker/DatePickerFooter.d.ts +1 -0
  38. package/cjs/components/date-picker/DatePickerFooter.js +10 -6
  39. package/cjs/components/date-picker/DatePickerInput.d.ts +1 -1
  40. package/cjs/components/dropdown/Dropdown.d.ts +11 -10
  41. package/cjs/components/form-label/FormLabel.d.ts +1 -1
  42. package/cjs/components/form-row/FormRow.d.ts +4 -4
  43. package/cjs/components/form-set/FormSet.d.ts +5 -5
  44. package/cjs/components/global-error/GlobalError.d.ts +1 -1
  45. package/cjs/components/global-status/GlobalStatus.d.ts +5 -5
  46. package/cjs/components/heading/Heading.d.ts +2 -2
  47. package/cjs/components/heading/HeadingProvider.d.ts +2 -2
  48. package/cjs/components/help-button/HelpButton.d.ts +1 -1
  49. package/cjs/components/help-button/HelpButtonInstance.d.ts +3 -2
  50. package/cjs/components/icon/Icon.d.ts +2 -2
  51. package/cjs/components/icon-primary/IconPrimary.d.ts +4 -3
  52. package/cjs/components/index.d.ts +8 -0
  53. package/cjs/components/index.js +32 -0
  54. package/cjs/components/info-card/InfoCard.js +180 -0
  55. package/cjs/components/info-card/index.d.ts +8 -0
  56. package/cjs/components/info-card/index.js +52 -0
  57. package/cjs/components/info-card/style/_info-card.scss +52 -0
  58. package/cjs/components/info-card/style/dnb-info-card.css +135 -0
  59. package/cjs/components/info-card/style/dnb-info-card.min.css +1 -0
  60. package/cjs/components/info-card/style/dnb-info-card.scss +12 -0
  61. package/cjs/components/info-card/style/index.d.ts +6 -0
  62. package/cjs/components/info-card/style/index.js +3 -0
  63. package/cjs/components/info-card/style.js +3 -0
  64. package/cjs/components/input/Input.d.ts +11 -10
  65. package/cjs/components/input-masked/InputMasked.d.ts +11 -11
  66. package/cjs/components/input-masked/InputMasked.js +6 -3
  67. package/cjs/components/input-masked/InputMaskedHooks.js +26 -34
  68. package/cjs/components/input-masked/InputMaskedUtils.js +9 -20
  69. package/cjs/components/lib.js +36 -0
  70. package/cjs/components/modal/Modal.js +123 -271
  71. package/cjs/components/modal/ModalContent.js +145 -243
  72. package/cjs/components/modal/ModalRoot.js +194 -0
  73. package/cjs/components/modal/components/CloseButton.js +125 -0
  74. package/cjs/components/modal/components/ModalHeader.js +124 -0
  75. package/cjs/components/modal/{ModalHeader.js → components/ModalHeaderBar.js} +50 -162
  76. package/cjs/components/modal/{ModalInner.js → components/ModalInner.js} +11 -19
  77. package/cjs/components/modal/helpers.js +80 -0
  78. package/cjs/components/modal/types.js +1 -0
  79. package/cjs/components/number-format/NumberFormat.d.ts +10 -10
  80. package/cjs/components/pagination/Pagination.d.ts +36 -36
  81. package/cjs/components/pagination/Pagination.js +13 -3
  82. package/cjs/components/pagination/PaginationProvider.d.ts +2 -2
  83. package/cjs/components/radio/Radio.d.ts +5 -5
  84. package/cjs/components/radio/RadioGroup.d.ts +4 -4
  85. package/cjs/components/section/Section.d.ts +3 -2
  86. package/cjs/components/skeleton/Skeleton.d.ts +3 -3
  87. package/cjs/components/skeleton/SkeletonHelper.d.ts +2 -1
  88. package/cjs/components/slider/Slider.d.ts +5 -5
  89. package/cjs/components/step-indicator/StepIndicator.d.ts +6 -6
  90. package/cjs/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  91. package/cjs/components/step-indicator/StepIndicatorItem.d.ts +3 -3
  92. package/cjs/components/step-indicator/StepIndicatorItem.js +1 -0
  93. package/cjs/components/step-indicator/StepIndicatorSidebar.d.ts +4 -4
  94. package/cjs/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  95. package/cjs/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
  96. package/cjs/components/switch/Switch.d.ts +6 -6
  97. package/cjs/components/tabs/Tabs.d.ts +8 -8
  98. package/cjs/components/tabs/TabsContentWrapper.d.ts +2 -2
  99. package/cjs/components/tabs/TabsCustomContent.d.ts +1 -1
  100. package/cjs/components/tag/Tag.js +145 -0
  101. package/cjs/components/tag/TagContext.js +14 -0
  102. package/cjs/components/tag/TagGroup.js +109 -0
  103. package/cjs/components/tag/index.d.ts +8 -0
  104. package/cjs/components/tag/index.js +52 -0
  105. package/cjs/components/tag/style/_tag.scss +102 -0
  106. package/cjs/components/tag/style/dnb-tag.css +931 -0
  107. package/cjs/components/tag/style/dnb-tag.min.css +1 -0
  108. package/cjs/components/tag/style/dnb-tag.scss +15 -0
  109. package/cjs/components/tag/style/index.d.ts +6 -0
  110. package/cjs/components/tag/style/index.js +3 -0
  111. package/cjs/components/tag/style/themes/_tag-mixins.scss +18 -0
  112. package/cjs/components/tag/style.js +3 -0
  113. package/cjs/components/textarea/Textarea.d.ts +4 -4
  114. package/cjs/components/timeline/Timeline.js +89 -0
  115. package/cjs/components/timeline/TimelineItem.js +136 -0
  116. package/cjs/components/timeline/index.d.ts +8 -0
  117. package/cjs/components/timeline/index.js +52 -0
  118. package/cjs/components/timeline/style/_timeline.scss +42 -0
  119. package/cjs/components/timeline/style/dnb-timeline.css +307 -0
  120. package/cjs/components/timeline/style/dnb-timeline.min.css +1 -0
  121. package/cjs/components/timeline/style/dnb-timeline.scss +12 -0
  122. package/cjs/components/timeline/style/index.d.ts +6 -0
  123. package/cjs/components/timeline/style/index.js +3 -0
  124. package/cjs/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  125. package/cjs/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  126. package/cjs/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  127. package/cjs/components/timeline/style/themes/ui.js +3 -0
  128. package/cjs/components/timeline/style.js +3 -0
  129. package/cjs/components/toggle-button/ToggleButton.d.ts +7 -7
  130. package/cjs/components/toggle-button/ToggleButtonGroup.d.ts +4 -4
  131. package/cjs/components/tooltip/Tooltip.d.ts +5 -5
  132. package/cjs/components/tooltip/TooltipContainer.d.ts +3 -3
  133. package/cjs/components/tooltip/TooltipPortal.d.ts +1 -1
  134. package/cjs/components/tooltip/TooltipWithEvents.d.ts +1 -1
  135. package/cjs/elements/Div.d.ts +1 -1
  136. package/cjs/elements/Img.d.ts +2 -2
  137. package/cjs/elements/P.d.ts +2 -1
  138. package/cjs/extensions/payment-card/PaymentCard.d.ts +1 -1
  139. package/cjs/extensions/payment-card/style/_payment-card.scss +0 -1
  140. package/cjs/extensions/payment-card/style/dnb-payment-card.css +0 -1
  141. package/cjs/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  142. package/cjs/fragments/drawer-list/DrawerListProvider.js +1 -0
  143. package/cjs/fragments/scroll-view/ScrollView.js +7 -16
  144. package/cjs/index.d.ts +8 -0
  145. package/cjs/index.js +32 -0
  146. package/cjs/shared/AnimateHeight.js +19 -13
  147. package/cjs/shared/Context.js +11 -4
  148. package/cjs/shared/helpers.js +16 -4
  149. package/cjs/shared/hooks/index.js +13 -0
  150. package/cjs/shared/hooks/usePropsWithContext.js +92 -0
  151. package/cjs/shared/locales/en-GB.js +5 -0
  152. package/cjs/shared/locales/nb-NO.js +5 -0
  153. package/cjs/style/core/helper-classes/skip-link.scss +1 -1
  154. package/cjs/style/dnb-ui-components.css +725 -0
  155. package/cjs/style/dnb-ui-components.min.css +3 -3
  156. package/cjs/style/dnb-ui-components.scss +4 -0
  157. package/cjs/style/dnb-ui-elements.css +1 -0
  158. package/cjs/style/dnb-ui-elements.min.css +1 -1
  159. package/cjs/style/dnb-ui-extensions.css +0 -1
  160. package/cjs/style/dnb-ui-extensions.min.css +1 -1
  161. package/cjs/style/dnb-ui-tags.css +2 -0
  162. package/cjs/style/dnb-ui-tags.min.css +2 -2
  163. package/cjs/style/elements/code.scss +1 -0
  164. package/cjs/style/stylis.d.ts +38 -0
  165. package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.css +224 -0
  166. package/cjs/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  167. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +224 -0
  168. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  169. package/cjs/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  170. package/components/Avatar.d.ts +14 -0
  171. package/components/Avatar.js +3 -0
  172. package/components/InfoCard.d.ts +14 -0
  173. package/components/InfoCard.js +3 -0
  174. package/components/Tag.d.ts +14 -0
  175. package/components/Tag.js +3 -0
  176. package/components/Timeline.d.ts +14 -0
  177. package/components/Timeline.js +3 -0
  178. package/components/accordion/Accordion.d.ts +7 -7
  179. package/components/autocomplete/Autocomplete.d.ts +13 -13
  180. package/components/avatar/Avatar.js +90 -0
  181. package/components/avatar/Avatar.tsx +162 -0
  182. package/components/avatar/AvatarGroup.js +94 -0
  183. package/components/avatar/AvatarGroup.tsx +163 -0
  184. package/components/avatar/index.d.ts +8 -0
  185. package/components/avatar/index.js +3 -0
  186. package/components/avatar/style/_avatar.scss +147 -0
  187. package/components/avatar/style/dnb-avatar.css +221 -0
  188. package/components/avatar/style/dnb-avatar.min.css +1 -0
  189. package/components/avatar/style/dnb-avatar.scss +12 -0
  190. package/components/avatar/style/index.d.ts +6 -0
  191. package/components/avatar/style/index.js +1 -0
  192. package/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  193. package/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  194. package/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  195. package/components/avatar/style/themes/ui.js +1 -0
  196. package/components/avatar/style.js +1 -0
  197. package/components/breadcrumb/Breadcrumb.js +22 -35
  198. package/components/breadcrumb/Breadcrumb.tsx +10 -10
  199. package/components/breadcrumb/BreadcrumbItem.js +17 -28
  200. package/components/breadcrumb/BreadcrumbItem.tsx +10 -13
  201. package/components/button/Button.d.ts +18 -14
  202. package/components/button/Button.js +7 -5
  203. package/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  204. package/components/checkbox/Checkbox.d.ts +3 -3
  205. package/components/date-picker/DatePicker.d.ts +14 -14
  206. package/components/date-picker/DatePicker.js +4 -2
  207. package/components/date-picker/DatePickerAddon.d.ts +1 -1
  208. package/components/date-picker/DatePickerCalendar.d.ts +1 -1
  209. package/components/date-picker/DatePickerFooter.d.ts +1 -0
  210. package/components/date-picker/DatePickerFooter.js +10 -6
  211. package/components/date-picker/DatePickerInput.d.ts +1 -1
  212. package/components/dropdown/Dropdown.d.ts +11 -10
  213. package/components/form-label/FormLabel.d.ts +1 -1
  214. package/components/form-row/FormRow.d.ts +4 -4
  215. package/components/form-set/FormSet.d.ts +5 -5
  216. package/components/global-error/GlobalError.d.ts +1 -1
  217. package/components/global-status/GlobalStatus.d.ts +5 -5
  218. package/components/heading/Heading.d.ts +2 -2
  219. package/components/heading/HeadingProvider.d.ts +2 -2
  220. package/components/help-button/HelpButton.d.ts +1 -1
  221. package/components/help-button/HelpButtonInstance.d.ts +3 -2
  222. package/components/icon/Icon.d.ts +2 -2
  223. package/components/icon-primary/IconPrimary.d.ts +2 -1
  224. package/components/index.d.ts +8 -0
  225. package/components/index.js +5 -1
  226. package/components/info-card/InfoCard.js +140 -0
  227. package/components/info-card/InfoCard.tsx +250 -0
  228. package/components/info-card/index.d.ts +8 -0
  229. package/components/info-card/index.js +3 -0
  230. package/components/info-card/style/_info-card.scss +52 -0
  231. package/components/info-card/style/dnb-info-card.css +135 -0
  232. package/components/info-card/style/dnb-info-card.min.css +1 -0
  233. package/components/info-card/style/dnb-info-card.scss +12 -0
  234. package/components/info-card/style/index.d.ts +6 -0
  235. package/components/info-card/style/index.js +1 -0
  236. package/components/info-card/style.js +1 -0
  237. package/components/input/Input.d.ts +11 -10
  238. package/components/input-masked/InputMasked.d.ts +11 -11
  239. package/components/input-masked/InputMasked.js +6 -4
  240. package/components/input-masked/InputMaskedHooks.js +24 -28
  241. package/components/input-masked/InputMaskedUtils.js +9 -20
  242. package/components/lib.js +9 -1
  243. package/components/modal/Modal.js +112 -250
  244. package/components/modal/Modal.tsx +524 -0
  245. package/components/modal/ModalContent.js +137 -224
  246. package/components/modal/ModalContent.tsx +519 -0
  247. package/components/modal/ModalContext.tsx +10 -0
  248. package/components/modal/ModalRoot.js +145 -0
  249. package/components/modal/ModalRoot.tsx +131 -0
  250. package/components/modal/components/CloseButton.js +72 -0
  251. package/components/modal/components/CloseButton.tsx +56 -0
  252. package/components/modal/components/ModalHeader.js +70 -0
  253. package/components/modal/components/ModalHeader.tsx +79 -0
  254. package/components/modal/components/ModalHeaderBar.js +122 -0
  255. package/components/modal/components/ModalHeaderBar.tsx +118 -0
  256. package/components/modal/{ModalInner.js → components/ModalInner.js} +11 -17
  257. package/components/modal/components/ModalInner.tsx +45 -0
  258. package/components/modal/helpers.js +64 -0
  259. package/components/modal/helpers.ts +63 -0
  260. package/components/modal/types.js +1 -0
  261. package/{cjs/components/modal/Modal.d.ts → components/modal/types.ts} +124 -182
  262. package/components/number-format/NumberFormat.d.ts +10 -10
  263. package/components/pagination/Pagination.d.ts +36 -36
  264. package/components/pagination/Pagination.js +9 -2
  265. package/components/pagination/PaginationProvider.d.ts +2 -2
  266. package/components/radio/Radio.d.ts +5 -5
  267. package/components/radio/RadioGroup.d.ts +4 -4
  268. package/components/section/Section.d.ts +3 -1
  269. package/components/skeleton/Skeleton.d.ts +2 -2
  270. package/components/skeleton/SkeletonHelper.d.ts +2 -1
  271. package/components/slider/Slider.d.ts +5 -5
  272. package/components/step-indicator/StepIndicator.d.ts +6 -6
  273. package/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  274. package/components/step-indicator/StepIndicatorItem.d.ts +3 -3
  275. package/components/step-indicator/StepIndicatorItem.js +1 -0
  276. package/components/step-indicator/StepIndicatorSidebar.d.ts +4 -4
  277. package/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  278. package/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
  279. package/components/switch/Switch.d.ts +6 -6
  280. package/components/tabs/Tabs.d.ts +8 -8
  281. package/components/tabs/TabsContentWrapper.d.ts +2 -2
  282. package/components/tabs/TabsCustomContent.d.ts +1 -1
  283. package/components/tag/Tag.js +112 -0
  284. package/components/tag/Tag.tsx +196 -0
  285. package/components/tag/TagContext.js +2 -0
  286. package/components/tag/TagContext.tsx +3 -0
  287. package/components/tag/TagGroup.js +47 -0
  288. package/components/tag/TagGroup.tsx +76 -0
  289. package/components/tag/index.d.ts +8 -0
  290. package/components/tag/index.js +3 -0
  291. package/components/tag/style/_tag.scss +102 -0
  292. package/components/tag/style/dnb-tag.css +931 -0
  293. package/components/tag/style/dnb-tag.min.css +1 -0
  294. package/components/tag/style/dnb-tag.scss +15 -0
  295. package/components/tag/style/index.d.ts +6 -0
  296. package/components/tag/style/index.js +1 -0
  297. package/components/tag/style/themes/_tag-mixins.scss +18 -0
  298. package/components/tag/style.js +1 -0
  299. package/components/textarea/Textarea.d.ts +4 -4
  300. package/components/timeline/Timeline.js +53 -0
  301. package/components/timeline/Timeline.tsx +95 -0
  302. package/components/timeline/TimelineItem.js +102 -0
  303. package/components/timeline/TimelineItem.tsx +191 -0
  304. package/components/timeline/index.d.ts +8 -0
  305. package/components/timeline/index.js +3 -0
  306. package/components/timeline/style/_timeline.scss +42 -0
  307. package/components/timeline/style/dnb-timeline.css +307 -0
  308. package/components/timeline/style/dnb-timeline.min.css +1 -0
  309. package/components/timeline/style/dnb-timeline.scss +12 -0
  310. package/components/timeline/style/index.d.ts +6 -0
  311. package/components/timeline/style/index.js +1 -0
  312. package/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  313. package/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  314. package/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  315. package/components/timeline/style/themes/ui.js +1 -0
  316. package/components/timeline/style.js +1 -0
  317. package/components/toggle-button/ToggleButton.d.ts +7 -7
  318. package/components/toggle-button/ToggleButtonGroup.d.ts +4 -4
  319. package/components/tooltip/Tooltip.d.ts +5 -5
  320. package/components/tooltip/TooltipContainer.d.ts +3 -3
  321. package/components/tooltip/TooltipPortal.d.ts +1 -1
  322. package/components/tooltip/TooltipWithEvents.d.ts +1 -1
  323. package/elements/Img.d.ts +1 -1
  324. package/elements/P.d.ts +2 -1
  325. package/es/components/Avatar.d.ts +14 -0
  326. package/es/components/Avatar.js +3 -0
  327. package/es/components/InfoCard.d.ts +14 -0
  328. package/es/components/InfoCard.js +3 -0
  329. package/es/components/Tag.d.ts +14 -0
  330. package/es/components/Tag.js +3 -0
  331. package/es/components/Timeline.d.ts +14 -0
  332. package/es/components/Timeline.js +3 -0
  333. package/es/components/accordion/Accordion.d.ts +7 -7
  334. package/es/components/autocomplete/Autocomplete.d.ts +13 -13
  335. package/es/components/avatar/Avatar.js +84 -0
  336. package/es/components/avatar/Avatar.tsx +162 -0
  337. package/es/components/avatar/AvatarGroup.js +89 -0
  338. package/es/components/avatar/AvatarGroup.tsx +163 -0
  339. package/es/components/avatar/index.d.ts +8 -0
  340. package/es/components/avatar/index.js +3 -0
  341. package/es/components/avatar/style/_avatar.scss +147 -0
  342. package/es/components/avatar/style/dnb-avatar.css +221 -0
  343. package/es/components/avatar/style/dnb-avatar.min.css +1 -0
  344. package/es/components/avatar/style/dnb-avatar.scss +12 -0
  345. package/es/components/avatar/style/index.d.ts +6 -0
  346. package/es/components/avatar/style/index.js +1 -0
  347. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  348. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  349. package/es/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  350. package/es/components/avatar/style/themes/ui.js +1 -0
  351. package/es/components/avatar/style.js +1 -0
  352. package/es/components/breadcrumb/Breadcrumb.js +8 -14
  353. package/es/components/breadcrumb/Breadcrumb.tsx +10 -10
  354. package/es/components/breadcrumb/BreadcrumbItem.js +12 -16
  355. package/es/components/breadcrumb/BreadcrumbItem.tsx +10 -13
  356. package/es/components/button/Button.d.ts +19 -15
  357. package/es/components/button/Button.js +7 -5
  358. package/es/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  359. package/es/components/checkbox/Checkbox.d.ts +3 -3
  360. package/es/components/date-picker/DatePicker.d.ts +14 -14
  361. package/es/components/date-picker/DatePicker.js +4 -2
  362. package/es/components/date-picker/DatePickerAddon.d.ts +1 -1
  363. package/es/components/date-picker/DatePickerCalendar.d.ts +1 -1
  364. package/es/components/date-picker/DatePickerFooter.d.ts +1 -0
  365. package/es/components/date-picker/DatePickerFooter.js +9 -6
  366. package/es/components/date-picker/DatePickerInput.d.ts +1 -1
  367. package/es/components/dropdown/Dropdown.d.ts +11 -10
  368. package/es/components/form-label/FormLabel.d.ts +1 -1
  369. package/es/components/form-row/FormRow.d.ts +4 -4
  370. package/es/components/form-set/FormSet.d.ts +5 -5
  371. package/es/components/global-error/GlobalError.d.ts +1 -1
  372. package/es/components/global-status/GlobalStatus.d.ts +5 -5
  373. package/es/components/heading/Heading.d.ts +2 -2
  374. package/es/components/heading/HeadingProvider.d.ts +2 -2
  375. package/es/components/help-button/HelpButton.d.ts +1 -1
  376. package/es/components/help-button/HelpButtonInstance.d.ts +3 -2
  377. package/es/components/icon/Icon.d.ts +2 -2
  378. package/es/components/icon-primary/IconPrimary.d.ts +4 -3
  379. package/es/components/index.d.ts +8 -0
  380. package/es/components/index.js +5 -1
  381. package/es/components/info-card/InfoCard.js +135 -0
  382. package/es/components/info-card/InfoCard.tsx +250 -0
  383. package/es/components/info-card/index.d.ts +8 -0
  384. package/es/components/info-card/index.js +3 -0
  385. package/es/components/info-card/style/_info-card.scss +52 -0
  386. package/es/components/info-card/style/dnb-info-card.css +135 -0
  387. package/es/components/info-card/style/dnb-info-card.min.css +1 -0
  388. package/es/components/info-card/style/dnb-info-card.scss +12 -0
  389. package/es/components/info-card/style/index.d.ts +6 -0
  390. package/es/components/info-card/style/index.js +1 -0
  391. package/es/components/info-card/style.js +1 -0
  392. package/es/components/input/Input.d.ts +11 -10
  393. package/es/components/input-masked/InputMasked.d.ts +11 -11
  394. package/es/components/input-masked/InputMasked.js +6 -4
  395. package/es/components/input-masked/InputMaskedHooks.js +14 -18
  396. package/es/components/input-masked/InputMaskedUtils.js +7 -18
  397. package/es/components/lib.js +9 -1
  398. package/es/components/modal/Modal.js +97 -227
  399. package/es/components/modal/Modal.tsx +524 -0
  400. package/es/components/modal/ModalContent.js +95 -186
  401. package/es/components/modal/ModalContent.tsx +519 -0
  402. package/es/components/modal/ModalContext.tsx +10 -0
  403. package/es/components/modal/ModalRoot.js +108 -0
  404. package/es/components/modal/ModalRoot.tsx +131 -0
  405. package/es/components/modal/components/CloseButton.js +41 -0
  406. package/es/components/modal/components/CloseButton.tsx +56 -0
  407. package/es/components/modal/components/ModalHeader.js +40 -0
  408. package/es/components/modal/components/ModalHeader.tsx +79 -0
  409. package/es/components/modal/components/ModalHeaderBar.js +88 -0
  410. package/es/components/modal/components/ModalHeaderBar.tsx +118 -0
  411. package/es/components/modal/{ModalInner.js → components/ModalInner.js} +8 -18
  412. package/es/components/modal/components/ModalInner.tsx +45 -0
  413. package/es/components/modal/helpers.js +60 -0
  414. package/es/components/modal/helpers.ts +63 -0
  415. package/es/components/modal/types.js +1 -0
  416. package/es/components/modal/{Modal.d.ts → types.ts} +124 -182
  417. package/es/components/number-format/NumberFormat.d.ts +10 -10
  418. package/es/components/pagination/Pagination.d.ts +36 -36
  419. package/es/components/pagination/Pagination.js +5 -2
  420. package/es/components/pagination/PaginationProvider.d.ts +2 -2
  421. package/es/components/radio/Radio.d.ts +5 -5
  422. package/es/components/radio/RadioGroup.d.ts +4 -4
  423. package/es/components/section/Section.d.ts +3 -2
  424. package/es/components/skeleton/Skeleton.d.ts +3 -3
  425. package/es/components/skeleton/SkeletonHelper.d.ts +2 -1
  426. package/es/components/slider/Slider.d.ts +5 -5
  427. package/es/components/step-indicator/StepIndicator.d.ts +6 -6
  428. package/es/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  429. package/es/components/step-indicator/StepIndicatorItem.d.ts +3 -3
  430. package/es/components/step-indicator/StepIndicatorItem.js +1 -0
  431. package/es/components/step-indicator/StepIndicatorSidebar.d.ts +4 -4
  432. package/es/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  433. package/es/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
  434. package/es/components/switch/Switch.d.ts +6 -6
  435. package/es/components/tabs/Tabs.d.ts +8 -8
  436. package/es/components/tabs/TabsContentWrapper.d.ts +2 -2
  437. package/es/components/tabs/TabsCustomContent.d.ts +1 -1
  438. package/es/components/tag/Tag.js +112 -0
  439. package/es/components/tag/Tag.tsx +196 -0
  440. package/es/components/tag/TagContext.js +2 -0
  441. package/es/components/tag/TagContext.tsx +3 -0
  442. package/es/components/tag/TagGroup.js +47 -0
  443. package/es/components/tag/TagGroup.tsx +76 -0
  444. package/es/components/tag/index.d.ts +8 -0
  445. package/es/components/tag/index.js +3 -0
  446. package/es/components/tag/style/_tag.scss +102 -0
  447. package/es/components/tag/style/dnb-tag.css +931 -0
  448. package/es/components/tag/style/dnb-tag.min.css +1 -0
  449. package/es/components/tag/style/dnb-tag.scss +15 -0
  450. package/es/components/tag/style/index.d.ts +6 -0
  451. package/es/components/tag/style/index.js +1 -0
  452. package/es/components/tag/style/themes/_tag-mixins.scss +18 -0
  453. package/es/components/tag/style.js +1 -0
  454. package/es/components/textarea/Textarea.d.ts +4 -4
  455. package/es/components/timeline/Timeline.js +52 -0
  456. package/es/components/timeline/Timeline.tsx +95 -0
  457. package/es/components/timeline/TimelineItem.js +108 -0
  458. package/es/components/timeline/TimelineItem.tsx +191 -0
  459. package/es/components/timeline/index.d.ts +8 -0
  460. package/es/components/timeline/index.js +3 -0
  461. package/es/components/timeline/style/_timeline.scss +42 -0
  462. package/es/components/timeline/style/dnb-timeline.css +307 -0
  463. package/es/components/timeline/style/dnb-timeline.min.css +1 -0
  464. package/es/components/timeline/style/dnb-timeline.scss +12 -0
  465. package/es/components/timeline/style/index.d.ts +6 -0
  466. package/es/components/timeline/style/index.js +1 -0
  467. package/es/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  468. package/es/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  469. package/es/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  470. package/es/components/timeline/style/themes/ui.js +1 -0
  471. package/es/components/timeline/style.js +1 -0
  472. package/es/components/toggle-button/ToggleButton.d.ts +7 -7
  473. package/es/components/toggle-button/ToggleButtonGroup.d.ts +4 -4
  474. package/es/components/tooltip/Tooltip.d.ts +5 -5
  475. package/es/components/tooltip/TooltipContainer.d.ts +3 -3
  476. package/es/components/tooltip/TooltipPortal.d.ts +1 -1
  477. package/es/components/tooltip/TooltipWithEvents.d.ts +1 -1
  478. package/es/elements/Div.d.ts +1 -1
  479. package/es/elements/Img.d.ts +2 -2
  480. package/es/elements/P.d.ts +2 -1
  481. package/es/extensions/payment-card/PaymentCard.d.ts +1 -1
  482. package/es/extensions/payment-card/style/_payment-card.scss +0 -1
  483. package/es/extensions/payment-card/style/dnb-payment-card.css +0 -1
  484. package/es/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  485. package/es/fragments/drawer-list/DrawerListProvider.js +1 -0
  486. package/es/fragments/scroll-view/ScrollView.js +7 -15
  487. package/es/fragments/scroll-view/ScrollView.tsx +92 -0
  488. package/es/index.d.ts +8 -0
  489. package/es/index.js +5 -1
  490. package/es/shared/AnimateHeight.js +15 -13
  491. package/es/shared/Context.js +11 -4
  492. package/es/shared/helpers.js +9 -2
  493. package/es/shared/hooks/index.js +1 -0
  494. package/es/shared/hooks/index.ts +1 -0
  495. package/es/shared/hooks/usePropsWithContext.js +26 -0
  496. package/es/shared/hooks/usePropsWithContext.ts +45 -0
  497. package/es/shared/interfaces.tsx +0 -2
  498. package/es/shared/locales/en-GB.js +5 -0
  499. package/es/shared/locales/nb-NO.js +5 -0
  500. package/es/style/core/helper-classes/skip-link.scss +1 -1
  501. package/es/style/dnb-ui-components.css +725 -0
  502. package/es/style/dnb-ui-components.min.css +3 -3
  503. package/es/style/dnb-ui-components.scss +4 -0
  504. package/es/style/dnb-ui-elements.css +1 -0
  505. package/es/style/dnb-ui-elements.min.css +1 -1
  506. package/es/style/dnb-ui-extensions.css +0 -1
  507. package/es/style/dnb-ui-extensions.min.css +1 -1
  508. package/es/style/dnb-ui-tags.css +2 -0
  509. package/es/style/dnb-ui-tags.min.css +2 -2
  510. package/es/style/elements/code.scss +1 -0
  511. package/es/style/stylis.d.ts +38 -0
  512. package/es/style/themes/theme-open-banking/dnb-theme-open-banking.css +224 -0
  513. package/es/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  514. package/es/style/themes/theme-ui/dnb-theme-ui.css +224 -0
  515. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  516. package/es/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  517. package/esm/components/Avatar.d.ts +14 -0
  518. package/esm/components/Avatar.js +3 -0
  519. package/esm/components/InfoCard.d.ts +14 -0
  520. package/esm/components/InfoCard.js +3 -0
  521. package/esm/components/Tag.d.ts +14 -0
  522. package/esm/components/Tag.js +3 -0
  523. package/esm/components/Timeline.d.ts +14 -0
  524. package/esm/components/Timeline.js +3 -0
  525. package/esm/components/accordion/Accordion.d.ts +7 -7
  526. package/esm/components/autocomplete/Autocomplete.d.ts +13 -13
  527. package/esm/components/avatar/Avatar.js +90 -0
  528. package/esm/components/avatar/Avatar.tsx +162 -0
  529. package/esm/components/avatar/AvatarGroup.js +94 -0
  530. package/esm/components/avatar/AvatarGroup.tsx +163 -0
  531. package/esm/components/avatar/index.d.ts +8 -0
  532. package/esm/components/avatar/index.js +3 -0
  533. package/esm/components/avatar/style/_avatar.scss +147 -0
  534. package/esm/components/avatar/style/dnb-avatar.css +221 -0
  535. package/esm/components/avatar/style/dnb-avatar.min.css +1 -0
  536. package/esm/components/avatar/style/dnb-avatar.scss +12 -0
  537. package/esm/components/avatar/style/index.d.ts +6 -0
  538. package/esm/components/avatar/style/index.js +1 -0
  539. package/esm/components/avatar/style/themes/dnb-avatar-theme-ui.css +36 -0
  540. package/esm/components/avatar/style/themes/dnb-avatar-theme-ui.min.css +1 -0
  541. package/esm/components/avatar/style/themes/dnb-avatar-theme-ui.scss +29 -0
  542. package/esm/components/avatar/style/themes/ui.js +1 -0
  543. package/esm/components/avatar/style.js +1 -0
  544. package/esm/components/breadcrumb/Breadcrumb.js +22 -35
  545. package/esm/components/breadcrumb/Breadcrumb.tsx +10 -10
  546. package/esm/components/breadcrumb/BreadcrumbItem.js +17 -28
  547. package/esm/components/breadcrumb/BreadcrumbItem.tsx +10 -13
  548. package/esm/components/button/Button.d.ts +18 -14
  549. package/esm/components/button/Button.js +7 -5
  550. package/esm/components/button/style/themes/dnb-button-theme-ui.scss +3 -0
  551. package/esm/components/checkbox/Checkbox.d.ts +3 -3
  552. package/esm/components/date-picker/DatePicker.d.ts +14 -14
  553. package/esm/components/date-picker/DatePicker.js +4 -2
  554. package/esm/components/date-picker/DatePickerAddon.d.ts +1 -1
  555. package/esm/components/date-picker/DatePickerCalendar.d.ts +1 -1
  556. package/esm/components/date-picker/DatePickerFooter.d.ts +1 -0
  557. package/esm/components/date-picker/DatePickerFooter.js +10 -6
  558. package/esm/components/date-picker/DatePickerInput.d.ts +1 -1
  559. package/esm/components/dropdown/Dropdown.d.ts +11 -10
  560. package/esm/components/form-label/FormLabel.d.ts +1 -1
  561. package/esm/components/form-row/FormRow.d.ts +4 -4
  562. package/esm/components/form-set/FormSet.d.ts +5 -5
  563. package/esm/components/global-error/GlobalError.d.ts +1 -1
  564. package/esm/components/global-status/GlobalStatus.d.ts +5 -5
  565. package/esm/components/heading/Heading.d.ts +2 -2
  566. package/esm/components/heading/HeadingProvider.d.ts +2 -2
  567. package/esm/components/help-button/HelpButton.d.ts +1 -1
  568. package/esm/components/help-button/HelpButtonInstance.d.ts +3 -2
  569. package/esm/components/icon/Icon.d.ts +2 -2
  570. package/esm/components/icon-primary/IconPrimary.d.ts +2 -1
  571. package/esm/components/index.d.ts +8 -0
  572. package/esm/components/index.js +5 -1
  573. package/esm/components/info-card/InfoCard.js +140 -0
  574. package/esm/components/info-card/InfoCard.tsx +250 -0
  575. package/esm/components/info-card/index.d.ts +8 -0
  576. package/esm/components/info-card/index.js +3 -0
  577. package/esm/components/info-card/style/_info-card.scss +52 -0
  578. package/esm/components/info-card/style/dnb-info-card.css +135 -0
  579. package/esm/components/info-card/style/dnb-info-card.min.css +1 -0
  580. package/esm/components/info-card/style/dnb-info-card.scss +12 -0
  581. package/esm/components/info-card/style/index.d.ts +6 -0
  582. package/esm/components/info-card/style/index.js +1 -0
  583. package/esm/components/info-card/style.js +1 -0
  584. package/esm/components/input/Input.d.ts +11 -10
  585. package/esm/components/input-masked/InputMasked.d.ts +11 -11
  586. package/esm/components/input-masked/InputMasked.js +6 -4
  587. package/esm/components/input-masked/InputMaskedHooks.js +24 -28
  588. package/esm/components/input-masked/InputMaskedUtils.js +9 -20
  589. package/esm/components/lib.js +9 -1
  590. package/esm/components/modal/Modal.js +112 -250
  591. package/esm/components/modal/Modal.tsx +524 -0
  592. package/esm/components/modal/ModalContent.js +137 -224
  593. package/esm/components/modal/ModalContent.tsx +519 -0
  594. package/esm/components/modal/ModalContext.tsx +10 -0
  595. package/esm/components/modal/ModalRoot.js +145 -0
  596. package/esm/components/modal/ModalRoot.tsx +131 -0
  597. package/esm/components/modal/components/CloseButton.js +72 -0
  598. package/esm/components/modal/components/CloseButton.tsx +56 -0
  599. package/esm/components/modal/components/ModalHeader.js +70 -0
  600. package/esm/components/modal/components/ModalHeader.tsx +79 -0
  601. package/esm/components/modal/components/ModalHeaderBar.js +122 -0
  602. package/esm/components/modal/components/ModalHeaderBar.tsx +118 -0
  603. package/esm/components/modal/{ModalInner.js → components/ModalInner.js} +11 -17
  604. package/esm/components/modal/components/ModalInner.tsx +45 -0
  605. package/esm/components/modal/helpers.js +64 -0
  606. package/esm/components/modal/helpers.ts +63 -0
  607. package/esm/components/modal/types.js +1 -0
  608. package/esm/components/modal/{Modal.d.ts → types.ts} +124 -182
  609. package/esm/components/number-format/NumberFormat.d.ts +10 -10
  610. package/esm/components/pagination/Pagination.d.ts +36 -36
  611. package/esm/components/pagination/Pagination.js +9 -2
  612. package/esm/components/pagination/PaginationProvider.d.ts +2 -2
  613. package/esm/components/radio/Radio.d.ts +5 -5
  614. package/esm/components/radio/RadioGroup.d.ts +4 -4
  615. package/esm/components/section/Section.d.ts +3 -1
  616. package/esm/components/skeleton/Skeleton.d.ts +2 -2
  617. package/esm/components/skeleton/SkeletonHelper.d.ts +2 -1
  618. package/esm/components/slider/Slider.d.ts +5 -5
  619. package/esm/components/step-indicator/StepIndicator.d.ts +6 -6
  620. package/esm/components/step-indicator/StepIndicatorContext.d.ts +1 -1
  621. package/esm/components/step-indicator/StepIndicatorItem.d.ts +3 -3
  622. package/esm/components/step-indicator/StepIndicatorItem.js +1 -0
  623. package/esm/components/step-indicator/StepIndicatorSidebar.d.ts +4 -4
  624. package/esm/components/step-indicator/StepIndicatorTriggerButton.d.ts +1 -1
  625. package/esm/components/step-indicator/StepIndicatorTriggerButton.js +4 -4
  626. package/esm/components/switch/Switch.d.ts +6 -6
  627. package/esm/components/tabs/Tabs.d.ts +8 -8
  628. package/esm/components/tabs/TabsContentWrapper.d.ts +2 -2
  629. package/esm/components/tabs/TabsCustomContent.d.ts +1 -1
  630. package/esm/components/tag/Tag.js +112 -0
  631. package/esm/components/tag/Tag.tsx +196 -0
  632. package/esm/components/tag/TagContext.js +2 -0
  633. package/esm/components/tag/TagContext.tsx +3 -0
  634. package/esm/components/tag/TagGroup.js +47 -0
  635. package/esm/components/tag/TagGroup.tsx +76 -0
  636. package/esm/components/tag/index.d.ts +8 -0
  637. package/esm/components/tag/index.js +3 -0
  638. package/esm/components/tag/style/_tag.scss +102 -0
  639. package/esm/components/tag/style/dnb-tag.css +931 -0
  640. package/esm/components/tag/style/dnb-tag.min.css +1 -0
  641. package/esm/components/tag/style/dnb-tag.scss +15 -0
  642. package/esm/components/tag/style/index.d.ts +6 -0
  643. package/esm/components/tag/style/index.js +1 -0
  644. package/esm/components/tag/style/themes/_tag-mixins.scss +18 -0
  645. package/esm/components/tag/style.js +1 -0
  646. package/esm/components/textarea/Textarea.d.ts +4 -4
  647. package/esm/components/timeline/Timeline.js +53 -0
  648. package/esm/components/timeline/Timeline.tsx +95 -0
  649. package/esm/components/timeline/TimelineItem.js +102 -0
  650. package/esm/components/timeline/TimelineItem.tsx +191 -0
  651. package/esm/components/timeline/index.d.ts +8 -0
  652. package/esm/components/timeline/index.js +3 -0
  653. package/esm/components/timeline/style/_timeline.scss +42 -0
  654. package/esm/components/timeline/style/dnb-timeline.css +307 -0
  655. package/esm/components/timeline/style/dnb-timeline.min.css +1 -0
  656. package/esm/components/timeline/style/dnb-timeline.scss +12 -0
  657. package/esm/components/timeline/style/index.d.ts +6 -0
  658. package/esm/components/timeline/style/index.js +1 -0
  659. package/esm/components/timeline/style/themes/dnb-timeline-theme-ui.css +185 -0
  660. package/esm/components/timeline/style/themes/dnb-timeline-theme-ui.min.css +1 -0
  661. package/esm/components/timeline/style/themes/dnb-timeline-theme-ui.scss +105 -0
  662. package/esm/components/timeline/style/themes/ui.js +1 -0
  663. package/esm/components/timeline/style.js +1 -0
  664. package/esm/components/toggle-button/ToggleButton.d.ts +7 -7
  665. package/esm/components/toggle-button/ToggleButtonGroup.d.ts +4 -4
  666. package/esm/components/tooltip/Tooltip.d.ts +5 -5
  667. package/esm/components/tooltip/TooltipContainer.d.ts +3 -3
  668. package/esm/components/tooltip/TooltipPortal.d.ts +1 -1
  669. package/esm/components/tooltip/TooltipWithEvents.d.ts +1 -1
  670. package/esm/dnb-ui-components.min.mjs +4 -4
  671. package/esm/dnb-ui-elements.min.mjs +1 -1
  672. package/esm/dnb-ui-extensions.min.mjs +3 -3
  673. package/esm/dnb-ui-lib.min.mjs +4 -4
  674. package/esm/dnb-ui-web-components.min.mjs +4 -4
  675. package/esm/elements/Img.d.ts +1 -1
  676. package/esm/elements/P.d.ts +2 -1
  677. package/esm/extensions/payment-card/PaymentCard.d.ts +1 -1
  678. package/esm/extensions/payment-card/style/_payment-card.scss +0 -1
  679. package/esm/extensions/payment-card/style/dnb-payment-card.css +0 -1
  680. package/esm/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  681. package/esm/fragments/drawer-list/DrawerListProvider.js +1 -0
  682. package/esm/fragments/scroll-view/ScrollView.js +10 -16
  683. package/esm/fragments/scroll-view/ScrollView.tsx +92 -0
  684. package/esm/index.d.ts +8 -0
  685. package/esm/index.js +5 -1
  686. package/esm/shared/AnimateHeight.js +19 -13
  687. package/esm/shared/Context.js +11 -4
  688. package/esm/shared/helpers.js +15 -4
  689. package/esm/shared/hooks/index.js +1 -0
  690. package/esm/shared/hooks/index.ts +1 -0
  691. package/esm/shared/hooks/usePropsWithContext.js +47 -0
  692. package/esm/shared/hooks/usePropsWithContext.ts +45 -0
  693. package/esm/shared/interfaces.tsx +0 -2
  694. package/esm/shared/locales/en-GB.js +5 -0
  695. package/esm/shared/locales/nb-NO.js +5 -0
  696. package/esm/style/core/helper-classes/skip-link.scss +1 -1
  697. package/esm/style/dnb-ui-components.css +725 -0
  698. package/esm/style/dnb-ui-components.min.css +3 -3
  699. package/esm/style/dnb-ui-components.scss +4 -0
  700. package/esm/style/dnb-ui-elements.css +1 -0
  701. package/esm/style/dnb-ui-elements.min.css +1 -1
  702. package/esm/style/dnb-ui-extensions.css +0 -1
  703. package/esm/style/dnb-ui-extensions.min.css +1 -1
  704. package/esm/style/dnb-ui-tags.css +2 -0
  705. package/esm/style/dnb-ui-tags.min.css +2 -2
  706. package/esm/style/elements/code.scss +1 -0
  707. package/esm/style/stylis.d.ts +38 -0
  708. package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.css +224 -0
  709. package/esm/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  710. package/esm/style/themes/theme-ui/dnb-theme-ui.css +224 -0
  711. package/esm/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  712. package/esm/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  713. package/extensions/payment-card/PaymentCard.d.ts +1 -1
  714. package/extensions/payment-card/style/_payment-card.scss +0 -1
  715. package/extensions/payment-card/style/dnb-payment-card.css +0 -1
  716. package/extensions/payment-card/style/dnb-payment-card.min.css +1 -1
  717. package/fragments/drawer-list/DrawerListProvider.js +1 -0
  718. package/fragments/scroll-view/ScrollView.js +10 -16
  719. package/fragments/scroll-view/ScrollView.tsx +92 -0
  720. package/index.d.ts +8 -0
  721. package/index.js +5 -1
  722. package/package.json +2 -3
  723. package/shared/AnimateHeight.js +19 -13
  724. package/shared/Context.js +11 -4
  725. package/shared/helpers.js +15 -4
  726. package/shared/hooks/index.js +1 -0
  727. package/shared/hooks/index.ts +1 -0
  728. package/shared/hooks/usePropsWithContext.js +47 -0
  729. package/shared/hooks/usePropsWithContext.ts +45 -0
  730. package/shared/interfaces.tsx +0 -2
  731. package/shared/locales/en-GB.js +5 -0
  732. package/shared/locales/nb-NO.js +5 -0
  733. package/style/core/helper-classes/skip-link.scss +1 -1
  734. package/style/dnb-ui-components.css +725 -0
  735. package/style/dnb-ui-components.min.css +3 -3
  736. package/style/dnb-ui-components.scss +4 -0
  737. package/style/dnb-ui-elements.css +1 -0
  738. package/style/dnb-ui-elements.min.css +1 -1
  739. package/style/dnb-ui-extensions.css +0 -1
  740. package/style/dnb-ui-extensions.min.css +1 -1
  741. package/style/dnb-ui-tags.css +2 -0
  742. package/style/dnb-ui-tags.min.css +2 -2
  743. package/style/elements/code.scss +1 -0
  744. package/style/stylis.d.ts +38 -0
  745. package/style/themes/theme-open-banking/dnb-theme-open-banking.css +224 -0
  746. package/style/themes/theme-open-banking/dnb-theme-open-banking.min.css +3 -3
  747. package/style/themes/theme-ui/dnb-theme-ui.css +224 -0
  748. package/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  749. package/style/themes/theme-ui/dnb-theme-ui.scss +2 -0
  750. package/umd/dnb-ui-components.min.js +5 -5
  751. package/umd/dnb-ui-elements.min.js +3 -3
  752. package/umd/dnb-ui-extensions.min.js +3 -3
  753. package/umd/dnb-ui-lib.min.js +5 -5
  754. package/umd/dnb-ui-web-components.min.js +5 -5
  755. package/cjs/components/modal/ModalContent.d.ts +0 -168
  756. package/cjs/components/modal/ModalHeader.d.ts +0 -73
  757. package/cjs/components/modal/ModalInner.d.ts +0 -20
  758. package/cjs/fragments/scroll-view/ScrollView.d.ts +0 -1
  759. package/components/modal/Modal.d.ts +0 -329
  760. package/components/modal/ModalContent.d.ts +0 -168
  761. package/components/modal/ModalHeader.d.ts +0 -73
  762. package/components/modal/ModalHeader.js +0 -224
  763. package/components/modal/ModalInner.d.ts +0 -20
  764. package/es/components/modal/ModalContent.d.ts +0 -168
  765. package/es/components/modal/ModalHeader.d.ts +0 -73
  766. package/es/components/modal/ModalHeader.js +0 -166
  767. package/es/components/modal/ModalInner.d.ts +0 -20
  768. package/es/fragments/scroll-view/ScrollView.d.ts +0 -1
  769. package/esm/components/modal/ModalContent.d.ts +0 -168
  770. package/esm/components/modal/ModalHeader.d.ts +0 -73
  771. package/esm/components/modal/ModalHeader.js +0 -224
  772. package/esm/components/modal/ModalInner.d.ts +0 -20
  773. package/esm/fragments/scroll-view/ScrollView.d.ts +0 -1
  774. package/fragments/scroll-view/ScrollView.d.ts +0 -1
@@ -12,7 +12,7 @@ export type StepIndicatorItemIsActive = string | boolean;
12
12
  export interface StepIndicatorItemProps
13
13
  extends React.HTMLProps<HTMLElement> {
14
14
  /**
15
- * Defines how the StepIndicator should work. Use `static` for non-interactive steps. Use `strict` for a chronological step order, also, the user can navigate between visited steps. Use `loose` if the user should be able to navigate freely.
15
+ * <em>(required)</em> defines how the StepIndicator should work. Use `static` for non-interactive steps. Use `strict` for a chronological step order, also, the user can navigate between visited steps. Use `loose` if the user should be able to navigate freely.
16
16
  */
17
17
  mode?: string;
18
18
  title: StepIndicatorItemTitle;
@@ -29,13 +29,13 @@ export interface StepIndicatorItemProps
29
29
  on_item_render?: (...args: any[]) => any;
30
30
 
31
31
  /**
32
- * Will be called once the users visits actively a new step. Will be emitted only once. Returns an object `{ event, item, current_step }`.
32
+ * Will be called once the user visits actively a new step. Will be emitted only once. Returns an object `{ event, item, current_step }`.
33
33
  */
34
34
  on_change?: (...args: any[]) => any;
35
35
  on_render?: (...args: any[]) => any;
36
36
 
37
37
  /**
38
- * Will be called once the users clicks on the current or another step. Will be emitted on every click. Returns an object `{ event, item, current_step }`.
38
+ * Will be called once the user clicks on the current or another step. Will be emitted on every click. Returns an object `{ event, item, current_step }`.
39
39
  */
40
40
  on_click?: (...args: any[]) => any;
41
41
  is_current?: boolean;
@@ -175,6 +175,7 @@ export default class StepIndicatorItem extends React.PureComponent {
175
175
  if (!buttonParams.onClick) {
176
176
  buttonParams.element = 'span';
177
177
  buttonParams.type = '';
178
+ buttonParams.on_click = undefined;
178
179
  isInactive = true;
179
180
  }
180
181
 
@@ -13,7 +13,7 @@ export type StepIndicatorSidebarData =
13
13
  status_state?: 'warn' | 'info' | 'error';
14
14
 
15
15
  /**
16
- * Will be called once the users clicks on the current or another step. Will be emitted on every click. Returns an object `{ event, item, current_step }`.
16
+ * Will be called once the user clicks on the current or another step. Will be emitted on every click. Returns an object `{ event, item, current_step }`.
17
17
  */
18
18
  on_click?: (...args: any[]) => any;
19
19
  on_render?: (...args: any[]) => any;
@@ -29,12 +29,12 @@ export type StepIndicatorSidebarData =
29
29
  export interface StepIndicatorSidebarProps
30
30
  extends React.HTMLProps<HTMLElement> {
31
31
  /**
32
- * An unique string based ID in order to bind together the main component and the sidebar (`<StepIndicator.Sidebar />`). Both have to get the same ID.
32
+ * <em>(required)</em> a unique string-based ID in order to bind together the main component and the sidebar (`<StepIndicator.Sidebar />`). Both have to get the same ID.
33
33
  */
34
34
  sidebar_id: string;
35
35
 
36
36
  /**
37
- * Defines how the StepIndicator should work. Use `static` for non-interactive steps. Use `strict` for a chronological step order, also, the user can navigate between visited steps. Use `loose` if the user should be able to navigate freely.
37
+ * <em>(required)</em> defines how the StepIndicator should work. Use `static` for non-interactive steps. Use `strict` for a chronological step order, also, the user can navigate between visited steps. Use `loose` if the user should be able to navigate freely.
38
38
  */
39
39
  mode?: StepIndicatorSidebarMode;
40
40
 
@@ -44,7 +44,7 @@ export interface StepIndicatorSidebarProps
44
44
  current_step?: StepIndicatorSidebarCurrentStep;
45
45
 
46
46
  /**
47
- * Defines the data/steps showing up in a JavaScript Array or JSON format like `[{title,is_current}]`. See parameters and example above.
47
+ * <em>(required)</em> defines the data/steps showing up in a JavaScript Array or JSON format like `[{title,is_current}]`. See parameters and the example above.
48
48
  */
49
49
  data?: StepIndicatorSidebarData;
50
50
  internalId?: string;
@@ -6,7 +6,7 @@ import * as React from 'react';
6
6
  export interface StepIndicatorTriggerButtonProps
7
7
  extends React.HTMLProps<HTMLElement> {
8
8
  /**
9
- * An unique string based ID in order to bind together the main component and the sidebar (`<StepIndicator.Sidebar />`). Both have to get the same ID.
9
+ * <em>(required)</em> a unique string-based ID in order to bind together the main component and the sidebar (`<StepIndicator.Sidebar />`). Both have to get the same ID.
10
10
  */
11
11
  sidebar_id?: string;
12
12
  className?: string;
@@ -32,6 +32,8 @@ export default class StepIndicatorTriggerButton extends React.PureComponent {
32
32
 
33
33
  componentDidMount() {
34
34
  this._heightAnim.setElement(this._buttonRef.current);
35
+
36
+ this._prevStep = this.context.activeStep;
35
37
  }
36
38
 
37
39
  componentWillUnmount() {
@@ -42,12 +44,10 @@ export default class StepIndicatorTriggerButton extends React.PureComponent {
42
44
  if (this._prevStep !== this.context.activeStep) {
43
45
  const toHeight = this._heightAnim.getUnknownHeight();
44
46
 
45
- this._heightAnim.adjustFrom(height);
46
-
47
47
  this._heightAnim.adjustTo(height, toHeight);
48
- }
49
48
 
50
- this._prevStep = this.context.activeStep;
49
+ this._prevStep = this.context.activeStep;
50
+ }
51
51
  }
52
52
 
53
53
  render() {
@@ -57,7 +57,7 @@ export type SwitchChildren = string | ((...args: any[]) => any);
57
57
  */
58
58
  export interface SwitchProps extends React.HTMLProps<HTMLElement> {
59
59
  /**
60
- * Use either the `label` property or provide custom one.
60
+ * Use either the `label` property or provide a custom one.
61
61
  */
62
62
  label?: SwitchLabel;
63
63
 
@@ -67,13 +67,13 @@ export interface SwitchProps extends React.HTMLProps<HTMLElement> {
67
67
  label_position?: SwitchLabelPosition;
68
68
 
69
69
  /**
70
- * The `title` of the input - describing it a bit further for accessibility reasons.
70
+ * <em>(required)</em> the `title` of the input - describing it a bit further for accessibility reasons.
71
71
  */
72
72
  title?: string;
73
73
  default_state?: SwitchDefaultState;
74
74
 
75
75
  /**
76
- * Determine whether the switch is checked or not. Default will be `false`.
76
+ * Determine whether the switch is checked or not. The default will be `false`.
77
77
  */
78
78
  checked?: SwitchChecked;
79
79
  disabled?: SwitchDisabled;
@@ -90,7 +90,7 @@ export interface SwitchProps extends React.HTMLProps<HTMLElement> {
90
90
  status?: SwitchStatus;
91
91
 
92
92
  /**
93
- * Defines the state of the status. Currently there are two statuses `[error, info]`. Defaults to `error`.
93
+ * Defines the state of the status. Currently, there are two statuses `[error, info]`. Defaults to `error`.
94
94
  */
95
95
  status_state?: string;
96
96
 
@@ -149,12 +149,12 @@ export interface SwitchProps extends React.HTMLProps<HTMLElement> {
149
149
  custom_method?: (...args: any[]) => any;
150
150
 
151
151
  /**
152
- * Will be called on state changes made by the user. Returns an boolean `{ checked, event }`.
152
+ * Will be called on state changes made by the user. Returns a boolean `{ checked, event }`.
153
153
  */
154
154
  on_change?: (...args: any[]) => any;
155
155
 
156
156
  /**
157
- * Will be called on state changes made by the user, but with a delay. This way the users sees the animation, before e.g. an error will be removed. Returns an boolean `{ checked, event }`.
157
+ * Will be called on state changes made by the user, but with a delay. This way the user sees the animation before e.g. an error will be removed. Returns a boolean `{ checked, event }`.
158
158
  */
159
159
  on_change_end?: (...args: any[]) => any;
160
160
  on_state_update?: (...args: any[]) => any;
@@ -66,12 +66,12 @@ export type TabsChildren =
66
66
  */
67
67
  export interface TabsProps extends React.HTMLProps<HTMLElement> {
68
68
  /**
69
- * Defines the data structure to load as a JSON. e.g. `[{title: &#39;...&#39;, content: &#39;Current tab&#39;, key
69
+ * <em>(required)</em> defines the data structure to load as a JSON. e.g. `[{title: &#39;...&#39;, content: &#39;Current tab&#39;, key
70
70
  */
71
71
  data?: TabsData;
72
72
 
73
73
  /**
74
- * The content to render. Can be a function, returning the current tab content `(key) => (&#39;Current tab&#39;)`, a React Component or an object with the keys and content `{key1: &#39;Current tab&#39;}`.
74
+ * <em>(required)</em> the content to render. Can be a function, returning the current tab content `(key) => (&#39;Current tab&#39;)`, a React Component or an object with the keys and content `{key1: &#39;Current tab&#39;}`.
75
75
  */
76
76
  content?: TabsContent;
77
77
 
@@ -81,7 +81,7 @@ export interface TabsProps extends React.HTMLProps<HTMLElement> {
81
81
  content_style?: string;
82
82
 
83
83
  /**
84
- * To modify the `spacing` on to the content wrapper. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `true`.
84
+ * To modify the `spacing` onto the content wrapper. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `true`.
85
85
  */
86
86
  content_spacing?: TabsContentSpacing;
87
87
  label?: string;
@@ -107,7 +107,7 @@ export interface TabsProps extends React.HTMLProps<HTMLElement> {
107
107
  tabs_style?: string;
108
108
 
109
109
  /**
110
- * To modify the `spacing` inside the tabs list. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `false`.
110
+ * To modify the `spacing` inside the tab list. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `false`.
111
111
  */
112
112
  tabs_spacing?: TabsTabsSpacing;
113
113
  use_hash?: TabsUseHash;
@@ -118,7 +118,7 @@ export interface TabsProps extends React.HTMLProps<HTMLElement> {
118
118
  prerender?: TabsPrerender;
119
119
 
120
120
  /**
121
- * If set to `true`, the Tabs content will stay in the DOM. The visibility will be handled by using the `hidden` and `aria-hidden` HTML attributes. Similar to `prerender`, but in contrast, the content will render once the users is activating a tab. Defaults to `false`.
121
+ * If set to `true`, the Tabs content will stay in the DOM. The visibility will be handled by using the `hidden` and `aria-hidden` HTML attributes. Similar to `prerender`, but in contrast, the content will render once the user is activating a tab. Defaults to `false`.
122
122
  */
123
123
  prevent_rerender?: TabsPreventRerender;
124
124
 
@@ -161,7 +161,7 @@ export interface TabsProps extends React.HTMLProps<HTMLElement> {
161
161
  className?: string;
162
162
 
163
163
  /**
164
- * The content to render. Can be a function, returning the current tab content `(key) => (&#39;Current tab&#39;)`, a React Component or an object with the keys and content `{key1: &#39;Current tab&#39;}`.
164
+ * <em>(required)</em> the content to render. Can be a function, returning the current tab content `(key) => (&#39;Current tab&#39;)`, a React Component or an object with the keys and content `{key1: &#39;Current tab&#39;}`.
165
165
  */
166
166
  children?: TabsChildren;
167
167
  render?: (...args: any[]) => any;
@@ -172,7 +172,7 @@ export interface TabsProps extends React.HTMLProps<HTMLElement> {
172
172
  on_change?: (...args: any[]) => any;
173
173
 
174
174
  /**
175
- * This event gets triggered once the a users mouse enters a tab (hover). Returns `{ key, selected_key, focus_key, event }`.
175
+ * This event gets triggered once the user&#39;s mouse enters a tab (hover). Returns `{ key, selected_key, focus_key, event }`.
176
176
  */
177
177
  on_mouse_enter?: (...args: any[]) => any;
178
178
 
@@ -198,7 +198,7 @@ export default class Tabs extends React.Component<TabsProps, any> {
198
198
  */
199
199
  export interface DummyProps {
200
200
  /**
201
- * The content to render. Can be a function, returning the current tab content `(key) => (&#39;Current tab&#39;)`, a React Component or an object with the keys and content `{key1: &#39;Current tab&#39;}`.
201
+ * <em>(required)</em> the content to render. Can be a function, returning the current tab content `(key) => (&#39;Current tab&#39;)`, a React Component or an object with the keys and content `{key1: &#39;Current tab&#39;}`.
202
202
  */
203
203
  children: React.ReactNode;
204
204
  }
@@ -22,12 +22,12 @@ export interface ContentWrapperProps extends React.HTMLProps<HTMLElement> {
22
22
  content_style?: string;
23
23
 
24
24
  /**
25
- * To modify the `spacing` on to the content wrapper. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `true`.
25
+ * To modify the `spacing` onto the content wrapper. Use a supported modifier from the <a href="/uilib/components/section/properties">Section component</a>. Defaults to `true`.
26
26
  */
27
27
  content_spacing?: ContentWrapperContentSpacing;
28
28
 
29
29
  /**
30
- * The content to render. Can be a function, returning the current tab content `(key) => (&#39;Current tab&#39;)`, a React Component or an object with the keys and content `{key1: &#39;Current tab&#39;}`.
30
+ * <em>(required)</em> the content to render. Can be a function, returning the current tab content `(key) => (&#39;Current tab&#39;)`, a React Component or an object with the keys and content `{key1: &#39;Current tab&#39;}`.
31
31
  */
32
32
  children?: ContentWrapperChildren;
33
33
  }
@@ -74,7 +74,7 @@ export interface CustomContentProps extends React.HTMLProps<HTMLElement> {
74
74
  left?: CustomContentLeft;
75
75
 
76
76
  /**
77
- * The content to render. Can be a function, returning the current tab content `(key) => (&#39;Current tab&#39;)`, a React Component or an object with the keys and content `{key1: &#39;Current tab&#39;}`.
77
+ * <em>(required)</em> the content to render. Can be a function, returning the current tab content `(key) => (&#39;Current tab&#39;)`, a React Component or an object with the keys and content `{key1: &#39;Current tab&#39;}`.
78
78
  */
79
79
  children?: CustomContentChildren;
80
80
  className?: string;
@@ -0,0 +1,112 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+
4
+ var _IconPrimary;
5
+
6
+ const _excluded = ["className", "skeleton", "children", "text", "onClick", "onDelete", "omitOnKeyUpDeleteEvent"];
7
+ import React from 'react';
8
+ import classnames from 'classnames';
9
+ import IconPrimary from '../icon-primary/IconPrimary';
10
+ import Button from '../button/Button';
11
+ import Context from '../../shared/Context';
12
+ import { warn } from '../../shared/component-helper';
13
+ import { usePropsWithContext } from '../../shared/hooks';
14
+ import TagGroup from './TagGroup';
15
+ import { TagGroupContext } from './TagContext';
16
+ export const defaultProps = {
17
+ className: null,
18
+ skeleton: false,
19
+ text: null,
20
+ children: null,
21
+ icon: null,
22
+ onClick: null,
23
+ onDelete: null,
24
+ omitOnKeyUpDeleteEvent: false
25
+ };
26
+
27
+ const Tag = localProps => {
28
+ var _context$translation;
29
+
30
+ const context = React.useContext(Context);
31
+ const tagGroupContext = React.useContext(TagGroupContext);
32
+
33
+ const _usePropsWithContext = usePropsWithContext(localProps, defaultProps, context === null || context === void 0 ? void 0 : (_context$translation = context.translation) === null || _context$translation === void 0 ? void 0 : _context$translation.Tag, context === null || context === void 0 ? void 0 : context.Tag, tagGroupContext),
34
+ {
35
+ className,
36
+ skeleton,
37
+ children,
38
+ text,
39
+ onClick,
40
+ onDelete,
41
+ omitOnKeyUpDeleteEvent
42
+ } = _usePropsWithContext,
43
+ props = _objectWithoutProperties(_usePropsWithContext, _excluded);
44
+
45
+ const content = text || children;
46
+ const isClickable = !!onClick;
47
+ const isRemovable = !!onDelete && !isClickable;
48
+ const isInteractive = isClickable || isRemovable;
49
+ const tagClassNames = classnames('dnb-tag', className, isInteractive && 'dnb-tag--interactive', isRemovable && 'dnb-tag--removable');
50
+
51
+ const isDeleteKeyboardEvent = keyboardEvent => {
52
+ return keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete';
53
+ };
54
+
55
+ const handleKeyUp = event => {
56
+ if (onDelete && isDeleteKeyboardEvent(event)) {
57
+ onDelete(event);
58
+ }
59
+ };
60
+
61
+ const buttonAttr = props;
62
+
63
+ if (!isInteractive) {
64
+ buttonAttr.element = 'span';
65
+ buttonAttr.type = '';
66
+ }
67
+
68
+ if (isRemovable) {
69
+ buttonAttr.icon = getDeleteIcon();
70
+ }
71
+
72
+ if (!tagGroupContext) {
73
+ warn(`Tag group required: A Tag requires a Tag.Group with label description as a parent component. This is to ensure correct semantic and accessibility.`);
74
+ }
75
+
76
+ return React.createElement(Button, _extends({
77
+ "data-testid": "tag",
78
+ variant: "unstyled",
79
+ size: "small",
80
+ icon_position: isRemovable ? 'right' : 'left',
81
+ className: tagClassNames,
82
+ on_click: onClick || onDelete,
83
+ text: content,
84
+ skeleton: skeleton,
85
+ onKeyUp: isRemovable && !omitOnKeyUpDeleteEvent ? e => handleKeyUp(e) : undefined
86
+ }, buttonAttr));
87
+
88
+ function getDeleteIcon() {
89
+ return _IconPrimary || (_IconPrimary = React.createElement(IconPrimary, {
90
+ "data-testid": "tag-delete-icon",
91
+ inherit_color: false,
92
+ icon: React.createElement("svg", {
93
+ width: "16",
94
+ height: "16",
95
+ fill: "none",
96
+ xmlns: "http://www.w3.org/2000/svg"
97
+ }, React.createElement("path", {
98
+ d: "M0 8a8 8 0 1 1 16 0A8 8 0 1 1 0 8Z",
99
+ className: "dnb-icon-close-circle-path"
100
+ }), React.createElement("path", {
101
+ d: "m5.5 10.5 5-5m0 5-5-5",
102
+ className: "dnb-icon-close-cross-path",
103
+ strokeWidth: "1.5",
104
+ strokeLinecap: "round",
105
+ strokeLinejoin: "round"
106
+ }))
107
+ }));
108
+ }
109
+ };
110
+
111
+ Tag.Group = TagGroup;
112
+ export default Tag;
@@ -0,0 +1,196 @@
1
+ import React from 'react'
2
+ import classnames from 'classnames'
3
+
4
+ // Components
5
+ import IconPrimary, { IconPrimaryIcon } from '../icon-primary/IconPrimary'
6
+ import Button, { ButtonProps } from '../button/Button'
7
+
8
+ // Shared
9
+ import Context from '../../shared/Context'
10
+ import { ISpacingProps } from '../../shared/interfaces'
11
+ import { SkeletonShow } from '../skeleton/Skeleton'
12
+ import { warn } from '../../shared/component-helper'
13
+ import { usePropsWithContext } from '../../shared/hooks'
14
+
15
+ // Internal
16
+ import TagGroup from './TagGroup'
17
+ import { TagGroupContext } from './TagContext'
18
+
19
+ export interface TagProps {
20
+ /**
21
+ * The content of the tag element, can be a string or a React Element.
22
+ * Default: null
23
+ */
24
+ text?: string | React.ReactNode
25
+
26
+ /**
27
+ * Icon displaying on the left side
28
+ * Default: null
29
+ */
30
+ icon?: IconPrimaryIcon
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?: SkeletonShow
43
+
44
+ /**
45
+ * The content of the tag element, can be a string or a React Element. Will be overwritten by text prop
46
+ * Default: null
47
+ */
48
+ children?: string | React.ReactNode // ReactNode allows multiple elements, strings, numbers, fragments, portals...
49
+
50
+ /**
51
+ * Handle the click event on 'tag' element
52
+ * Default: null
53
+ */
54
+ onClick?: React.MouseEventHandler<HTMLButtonElement>
55
+
56
+ /**
57
+ * Handle the delete event on 'tag' element
58
+ * Default: null
59
+ */
60
+ onDelete?: React.MouseEventHandler<HTMLButtonElement>
61
+
62
+ /**
63
+ * Handle the delete event on 'tag' element
64
+ * Default: null
65
+ */
66
+ omitOnKeyUpDeleteEvent?: boolean
67
+ }
68
+
69
+ export const defaultProps = {
70
+ className: null,
71
+ skeleton: false,
72
+ text: null,
73
+ children: null,
74
+ icon: null,
75
+ onClick: null,
76
+ onDelete: null,
77
+ omitOnKeyUpDeleteEvent: false,
78
+ }
79
+
80
+ const Tag = (localProps: TagProps & ISpacingProps) => {
81
+ // Every component should have a context
82
+ const context = React.useContext(Context)
83
+ const tagGroupContext = React.useContext(TagGroupContext)
84
+
85
+ // Extract additional props from global context
86
+ const {
87
+ className,
88
+ skeleton,
89
+ children,
90
+ text,
91
+ onClick,
92
+ onDelete,
93
+ omitOnKeyUpDeleteEvent,
94
+ ...props
95
+ } = usePropsWithContext(
96
+ localProps,
97
+ defaultProps,
98
+ context?.translation?.Tag,
99
+ context?.Tag,
100
+ tagGroupContext
101
+ )
102
+
103
+ const content = text || children
104
+ const isClickable = !!onClick
105
+ const isRemovable = !!onDelete && !isClickable
106
+ const isInteractive = isClickable || isRemovable
107
+
108
+ const tagClassNames = classnames(
109
+ 'dnb-tag',
110
+ className,
111
+ isInteractive && 'dnb-tag--interactive',
112
+ isRemovable && 'dnb-tag--removable'
113
+ )
114
+
115
+ const isDeleteKeyboardEvent = (keyboardEvent) => {
116
+ return (
117
+ keyboardEvent.key === 'Backspace' || keyboardEvent.key === 'Delete'
118
+ )
119
+ }
120
+
121
+ const handleKeyUp = (event) => {
122
+ if (onDelete && isDeleteKeyboardEvent(event)) {
123
+ onDelete(event)
124
+ }
125
+ }
126
+
127
+ const buttonAttr: typeof props & Pick<ButtonProps, 'element' | 'type'> =
128
+ props
129
+
130
+ if (!isInteractive) {
131
+ buttonAttr.element = 'span'
132
+ buttonAttr.type = ''
133
+ }
134
+
135
+ if (isRemovable) {
136
+ buttonAttr.icon = getDeleteIcon()
137
+ }
138
+
139
+ if (!tagGroupContext) {
140
+ warn(
141
+ `Tag group required: A Tag requires a Tag.Group with label description as a parent component. This is to ensure correct semantic and accessibility.`
142
+ )
143
+ }
144
+
145
+ return (
146
+ <Button
147
+ data-testid="tag"
148
+ variant="unstyled"
149
+ size="small"
150
+ icon_position={isRemovable ? 'right' : 'left'}
151
+ className={tagClassNames}
152
+ on_click={onClick || onDelete}
153
+ text={content}
154
+ skeleton={skeleton}
155
+ onKeyUp={
156
+ isRemovable && !omitOnKeyUpDeleteEvent
157
+ ? (e) => handleKeyUp(e)
158
+ : undefined
159
+ }
160
+ {...buttonAttr}
161
+ />
162
+ )
163
+
164
+ function getDeleteIcon() {
165
+ return (
166
+ <IconPrimary
167
+ data-testid="tag-delete-icon"
168
+ inherit_color={false}
169
+ icon={
170
+ <svg
171
+ width="16"
172
+ height="16"
173
+ fill="none"
174
+ xmlns="http://www.w3.org/2000/svg"
175
+ >
176
+ <path
177
+ d="M0 8a8 8 0 1 1 16 0A8 8 0 1 1 0 8Z"
178
+ className="dnb-icon-close-circle-path"
179
+ />
180
+ <path
181
+ d="m5.5 10.5 5-5m0 5-5-5"
182
+ className="dnb-icon-close-cross-path"
183
+ strokeWidth="1.5"
184
+ strokeLinecap="round"
185
+ strokeLinejoin="round"
186
+ />
187
+ </svg>
188
+ }
189
+ />
190
+ )
191
+ }
192
+ }
193
+
194
+ Tag.Group = TagGroup
195
+
196
+ export default Tag
@@ -0,0 +1,2 @@
1
+ import React from 'react';
2
+ export const TagGroupContext = React.createContext(null);
@@ -0,0 +1,3 @@
1
+ import React from 'react'
2
+
3
+ export const TagGroupContext = React.createContext(null)
@@ -0,0 +1,47 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
3
+ const _excluded = ["label", "className", "children"];
4
+ import React from 'react';
5
+ import classnames from 'classnames';
6
+ import { createSpacingClasses } from '../space/SpacingHelper';
7
+ import Context from '../../shared/Context';
8
+ import { usePropsWithContext } from '../../shared/hooks';
9
+ import { TagGroupContext } from './TagContext';
10
+ export const defaultProps = {
11
+ label: null,
12
+ className: null,
13
+ children: null
14
+ };
15
+
16
+ const TagGroup = localProps => {
17
+ const context = React.useContext(Context);
18
+
19
+ const _usePropsWithContext = usePropsWithContext(localProps, defaultProps, context === null || context === void 0 ? void 0 : context.TagGroup),
20
+ {
21
+ label,
22
+ className,
23
+ children: childrenProp
24
+ } = _usePropsWithContext,
25
+ props = _objectWithoutProperties(_usePropsWithContext, _excluded);
26
+
27
+ let children = childrenProp;
28
+
29
+ if (Array.isArray(childrenProp)) {
30
+ children = [...childrenProp].map(child => {
31
+ return child;
32
+ });
33
+ }
34
+
35
+ const spacingClasses = createSpacingClasses(props);
36
+ return React.createElement(TagGroupContext.Provider, {
37
+ value: props
38
+ }, React.createElement("span", _extends({
39
+ className: classnames('dnb-tag__group', spacingClasses, className),
40
+ "data-testid": "tag-group"
41
+ }, props), React.createElement("span", {
42
+ "data-testid": "tag-group-label",
43
+ className: "dnb-sr-only"
44
+ }, label), children));
45
+ };
46
+
47
+ export default TagGroup;