@dnb/eufemia 9.27.0 → 9.30.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 (388) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/cjs/components/Badge.d.ts +3 -0
  3. package/cjs/components/{slider/web-component.js → Badge.js} +6 -9
  4. package/cjs/components/autocomplete/Autocomplete.js +14 -2
  5. package/cjs/components/autocomplete/style/_autocomplete.scss +17 -1
  6. package/cjs/components/autocomplete/style/dnb-autocomplete.css +36 -3
  7. package/cjs/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
  8. package/cjs/components/avatar/style/_avatar.scss +1 -0
  9. package/cjs/components/avatar/style/dnb-avatar.css +1 -0
  10. package/cjs/components/avatar/style/dnb-avatar.min.css +1 -1
  11. package/cjs/components/badge/Badge.d.ts +58 -0
  12. package/cjs/components/badge/Badge.js +124 -0
  13. package/cjs/components/badge/index.d.ts +8 -0
  14. package/cjs/components/badge/index.js +52 -0
  15. package/cjs/components/badge/style/_badge.scss +74 -0
  16. package/cjs/components/badge/style/dnb-badge.css +151 -0
  17. package/cjs/components/badge/style/dnb-badge.min.css +1 -0
  18. package/cjs/components/badge/style/dnb-badge.scss +12 -0
  19. package/cjs/components/badge/style/index.d.ts +6 -0
  20. package/cjs/components/badge/style/index.js +3 -0
  21. package/cjs/components/badge/style/themes/dnb-badge-theme-ui.css +21 -0
  22. package/cjs/components/badge/style/themes/dnb-badge-theme-ui.min.css +1 -0
  23. package/cjs/components/badge/style/themes/dnb-badge-theme-ui.scss +17 -0
  24. package/cjs/components/badge/style/themes/ui.d.ts +1 -0
  25. package/cjs/components/badge/style/themes/ui.js +3 -0
  26. package/cjs/components/badge/style.d.ts +1 -0
  27. package/cjs/components/badge/style.js +3 -0
  28. package/cjs/components/button/style/themes/dnb-button-theme-eiendom.css +20 -0
  29. package/cjs/components/button/style/themes/dnb-button-theme-eiendom.min.css +2 -2
  30. package/cjs/components/button/style/themes/dnb-button-theme-eiendom.scss +8 -0
  31. package/cjs/components/dialog/style/dnb-dialog.css +12 -19
  32. package/cjs/components/dialog/style/dnb-dialog.min.css +1 -1
  33. package/cjs/components/dialog/style/themes/dnb-dialog-theme-ui.css +0 -2
  34. package/cjs/components/dialog/style/themes/dnb-dialog-theme-ui.min.css +1 -1
  35. package/cjs/components/dialog/style/themes/dnb-dialog-theme-ui.scss +0 -7
  36. package/cjs/components/drawer/DrawerContent.js +7 -1
  37. package/cjs/components/drawer/style/_drawer.scss +6 -13
  38. package/cjs/components/drawer/style/dnb-drawer.css +21 -31
  39. package/cjs/components/drawer/style/dnb-drawer.min.css +1 -1
  40. package/cjs/components/drawer/style/themes/dnb-drawer-theme-ui.css +0 -2
  41. package/cjs/components/drawer/style/themes/dnb-drawer-theme-ui.min.css +1 -1
  42. package/cjs/components/drawer/style/themes/dnb-drawer-theme-ui.scss +0 -7
  43. package/cjs/components/form-row/FormRow.js +9 -8
  44. package/cjs/components/form-row/FormRowHelpers.d.ts +1 -0
  45. package/cjs/components/form-row/FormRowHelpers.js +16 -2
  46. package/cjs/components/index.d.ts +2 -1
  47. package/cjs/components/index.js +8 -0
  48. package/cjs/components/lib.d.ts +3 -1
  49. package/cjs/components/lib.js +9 -0
  50. package/cjs/components/modal/ModalContent.js +0 -2
  51. package/cjs/components/modal/style/_modal.scss +0 -4
  52. package/cjs/components/modal/style/dnb-modal.css +12 -19
  53. package/cjs/components/modal/style/dnb-modal.min.css +1 -1
  54. package/cjs/components/modal/style/themes/dnb-modal-theme-ui.css +6 -2
  55. package/cjs/components/modal/style/themes/dnb-modal-theme-ui.min.css +1 -1
  56. package/cjs/components/modal/style/themes/dnb-modal-theme-ui.scss +6 -5
  57. package/cjs/components/skeleton/SkeletonHelper.d.ts +2 -1
  58. package/cjs/components/slider/Slider.d.ts +8 -229
  59. package/cjs/components/slider/Slider.js +21 -798
  60. package/cjs/components/slider/SliderHelpers.d.ts +23 -0
  61. package/cjs/components/slider/SliderHelpers.js +245 -0
  62. package/cjs/components/slider/SliderInstance.d.ts +6 -0
  63. package/cjs/components/slider/SliderInstance.js +190 -0
  64. package/cjs/components/slider/SliderProvider.d.ts +4 -0
  65. package/cjs/components/slider/SliderProvider.js +301 -0
  66. package/cjs/components/slider/SliderThumb.d.ts +2 -0
  67. package/cjs/components/slider/SliderThumb.js +142 -0
  68. package/cjs/components/slider/SliderTrack.d.ts +6 -0
  69. package/cjs/components/slider/SliderTrack.js +132 -0
  70. package/cjs/components/slider/hooks/useSliderEvents.d.ts +11 -0
  71. package/cjs/components/slider/hooks/useSliderEvents.js +146 -0
  72. package/cjs/components/slider/hooks/useSliderProps.d.ts +1 -0
  73. package/cjs/components/slider/hooks/useSliderProps.js +16 -0
  74. package/cjs/components/slider/style/_slider.scss +19 -54
  75. package/cjs/components/slider/style/dnb-slider.css +30 -66
  76. package/cjs/components/slider/style/dnb-slider.min.css +1 -1
  77. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.css +0 -16
  78. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  79. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.scss +0 -17
  80. package/cjs/components/slider/types.d.ts +100 -0
  81. package/cjs/components/slider/types.js +1 -0
  82. package/cjs/components/tabs/style/themes/dnb-tabs-theme-eiendom.css +148 -0
  83. package/cjs/components/tabs/style/themes/dnb-tabs-theme-eiendom.min.css +1 -0
  84. package/cjs/components/tabs/style/themes/dnb-tabs-theme-eiendom.scss +14 -0
  85. package/cjs/components/timeline/TimelineItem.js +2 -1
  86. package/cjs/elements/Anchor.d.ts +44 -105
  87. package/cjs/elements/Anchor.js +48 -138
  88. package/cjs/elements/Element.d.ts +23 -40
  89. package/cjs/elements/Element.js +48 -122
  90. package/cjs/elements/Link.d.ts +18 -1
  91. package/cjs/elements/lib.d.ts +36 -2
  92. package/cjs/index.d.ts +2 -1
  93. package/cjs/index.js +8 -0
  94. package/cjs/shared/AlignmentHelper.js +4 -2
  95. package/cjs/shared/Context.d.ts +7 -1
  96. package/cjs/shared/Eufemia.js +1 -1
  97. package/cjs/shared/helpers/Suffix.d.ts +6 -4
  98. package/cjs/shared/helpers/Suffix.js +5 -2
  99. package/cjs/shared/helpers/filterValidProps.d.ts +11 -0
  100. package/cjs/shared/helpers/filterValidProps.js +19 -0
  101. package/cjs/shared/helpers/withCamelCaseProps.d.ts +1 -1
  102. package/cjs/shared/helpers/withCamelCaseProps.js +10 -0
  103. package/cjs/shared/helpers/withSnakeCaseProps.d.ts +40 -0
  104. package/cjs/shared/helpers/withSnakeCaseProps.js +168 -0
  105. package/cjs/shared/locales/en-GB.d.ts +3 -3
  106. package/cjs/shared/locales/en-GB.js +3 -3
  107. package/cjs/shared/locales/en-US.d.ts +3 -3
  108. package/cjs/shared/locales/index.d.ts +6 -6
  109. package/cjs/shared/locales/nb-NO.d.ts +3 -3
  110. package/cjs/shared/locales/nb-NO.js +3 -3
  111. package/cjs/style/dnb-ui-components.css +161 -88
  112. package/cjs/style/dnb-ui-components.min.css +4 -4
  113. package/cjs/style/dnb-ui-components.scss +1 -0
  114. package/cjs/style/dnb-ui-elements.css +44 -28
  115. package/cjs/style/dnb-ui-elements.min.css +1 -1
  116. package/cjs/style/dnb-ui-tags.css +63 -40
  117. package/cjs/style/dnb-ui-tags.min.css +1 -1
  118. package/cjs/style/elements/_anchor-mixins.scss +6 -3
  119. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.css +237 -46
  120. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +7 -7
  121. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.scss +1 -0
  122. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +72 -50
  123. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +4 -4
  124. package/cjs/style/themes/theme-ui/dnb-theme-ui.scss +1 -0
  125. package/components/Badge.d.ts +3 -0
  126. package/components/Badge.js +3 -0
  127. package/components/autocomplete/Autocomplete.js +15 -3
  128. package/components/autocomplete/style/_autocomplete.scss +17 -1
  129. package/components/autocomplete/style/dnb-autocomplete.css +36 -3
  130. package/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
  131. package/components/avatar/style/_avatar.scss +1 -0
  132. package/components/avatar/style/dnb-avatar.css +1 -0
  133. package/components/avatar/style/dnb-avatar.min.css +1 -1
  134. package/components/badge/Badge.d.ts +58 -0
  135. package/components/badge/Badge.js +92 -0
  136. package/components/badge/index.d.ts +8 -0
  137. package/components/badge/index.js +3 -0
  138. package/components/badge/style/_badge.scss +74 -0
  139. package/components/badge/style/dnb-badge.css +151 -0
  140. package/components/badge/style/dnb-badge.min.css +1 -0
  141. package/components/badge/style/dnb-badge.scss +12 -0
  142. package/components/badge/style/index.d.ts +6 -0
  143. package/components/badge/style/index.js +1 -0
  144. package/components/badge/style/themes/dnb-badge-theme-ui.css +21 -0
  145. package/components/badge/style/themes/dnb-badge-theme-ui.min.css +1 -0
  146. package/components/badge/style/themes/dnb-badge-theme-ui.scss +17 -0
  147. package/components/badge/style/themes/ui.d.ts +1 -0
  148. package/components/badge/style/themes/ui.js +1 -0
  149. package/components/badge/style.d.ts +1 -0
  150. package/components/badge/style.js +1 -0
  151. package/components/button/style/themes/dnb-button-theme-eiendom.css +20 -0
  152. package/components/button/style/themes/dnb-button-theme-eiendom.min.css +2 -2
  153. package/components/button/style/themes/dnb-button-theme-eiendom.scss +8 -0
  154. package/components/dialog/style/dnb-dialog.css +12 -19
  155. package/components/dialog/style/dnb-dialog.min.css +1 -1
  156. package/components/dialog/style/themes/dnb-dialog-theme-ui.css +0 -2
  157. package/components/dialog/style/themes/dnb-dialog-theme-ui.min.css +1 -1
  158. package/components/dialog/style/themes/dnb-dialog-theme-ui.scss +0 -7
  159. package/components/drawer/DrawerContent.js +4 -1
  160. package/components/drawer/style/_drawer.scss +6 -13
  161. package/components/drawer/style/dnb-drawer.css +21 -31
  162. package/components/drawer/style/dnb-drawer.min.css +1 -1
  163. package/components/drawer/style/themes/dnb-drawer-theme-ui.css +0 -2
  164. package/components/drawer/style/themes/dnb-drawer-theme-ui.min.css +1 -1
  165. package/components/drawer/style/themes/dnb-drawer-theme-ui.scss +0 -7
  166. package/components/form-row/FormRow.js +9 -8
  167. package/components/form-row/FormRowHelpers.d.ts +1 -0
  168. package/components/form-row/FormRowHelpers.js +10 -0
  169. package/components/index.d.ts +2 -1
  170. package/components/index.js +2 -1
  171. package/components/lib.d.ts +3 -1
  172. package/components/lib.js +3 -1
  173. package/components/modal/ModalContent.js +0 -2
  174. package/components/modal/style/_modal.scss +0 -4
  175. package/components/modal/style/dnb-modal.css +12 -19
  176. package/components/modal/style/dnb-modal.min.css +1 -1
  177. package/components/modal/style/themes/dnb-modal-theme-ui.css +6 -2
  178. package/components/modal/style/themes/dnb-modal-theme-ui.min.css +1 -1
  179. package/components/modal/style/themes/dnb-modal-theme-ui.scss +6 -5
  180. package/components/skeleton/SkeletonHelper.d.ts +2 -1
  181. package/components/slider/Slider.d.ts +8 -229
  182. package/components/slider/Slider.js +8 -748
  183. package/components/slider/SliderHelpers.d.ts +23 -0
  184. package/components/slider/SliderHelpers.js +158 -0
  185. package/components/slider/SliderInstance.d.ts +6 -0
  186. package/components/slider/SliderInstance.js +162 -0
  187. package/components/slider/SliderProvider.d.ts +4 -0
  188. package/components/slider/SliderProvider.js +236 -0
  189. package/components/slider/SliderThumb.d.ts +2 -0
  190. package/components/slider/SliderThumb.js +114 -0
  191. package/components/slider/SliderTrack.d.ts +6 -0
  192. package/components/slider/SliderTrack.js +105 -0
  193. package/components/slider/hooks/useSliderEvents.d.ts +11 -0
  194. package/components/slider/hooks/useSliderEvents.js +132 -0
  195. package/components/slider/hooks/useSliderProps.d.ts +1 -0
  196. package/components/slider/hooks/useSliderProps.js +5 -0
  197. package/components/slider/style/_slider.scss +19 -54
  198. package/components/slider/style/dnb-slider.css +30 -66
  199. package/components/slider/style/dnb-slider.min.css +1 -1
  200. package/components/slider/style/themes/dnb-slider-theme-ui.css +0 -16
  201. package/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  202. package/components/slider/style/themes/dnb-slider-theme-ui.scss +0 -17
  203. package/components/slider/types.d.ts +100 -0
  204. package/components/slider/types.js +1 -0
  205. package/components/tabs/style/themes/dnb-tabs-theme-eiendom.css +148 -0
  206. package/components/tabs/style/themes/dnb-tabs-theme-eiendom.min.css +1 -0
  207. package/components/tabs/style/themes/dnb-tabs-theme-eiendom.scss +14 -0
  208. package/components/timeline/TimelineItem.js +2 -1
  209. package/elements/Anchor.d.ts +44 -105
  210. package/elements/Anchor.js +51 -113
  211. package/elements/Element.d.ts +23 -40
  212. package/elements/Element.js +44 -92
  213. package/elements/Link.d.ts +18 -1
  214. package/elements/lib.d.ts +36 -2
  215. package/es/components/Badge.d.ts +3 -0
  216. package/es/components/Badge.js +3 -0
  217. package/es/components/autocomplete/Autocomplete.js +14 -3
  218. package/es/components/autocomplete/style/_autocomplete.scss +17 -1
  219. package/es/components/autocomplete/style/dnb-autocomplete.css +36 -3
  220. package/es/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
  221. package/es/components/avatar/style/_avatar.scss +1 -0
  222. package/es/components/avatar/style/dnb-avatar.css +1 -0
  223. package/es/components/avatar/style/dnb-avatar.min.css +1 -1
  224. package/es/components/badge/Badge.d.ts +58 -0
  225. package/es/components/badge/Badge.js +88 -0
  226. package/es/components/badge/index.d.ts +8 -0
  227. package/es/components/badge/index.js +3 -0
  228. package/es/components/badge/style/_badge.scss +74 -0
  229. package/es/components/badge/style/dnb-badge.css +151 -0
  230. package/es/components/badge/style/dnb-badge.min.css +1 -0
  231. package/es/components/badge/style/dnb-badge.scss +12 -0
  232. package/es/components/badge/style/index.d.ts +6 -0
  233. package/es/components/badge/style/index.js +1 -0
  234. package/es/components/badge/style/themes/dnb-badge-theme-ui.css +21 -0
  235. package/es/components/badge/style/themes/dnb-badge-theme-ui.min.css +1 -0
  236. package/es/components/badge/style/themes/dnb-badge-theme-ui.scss +17 -0
  237. package/es/components/badge/style/themes/ui.d.ts +1 -0
  238. package/es/components/badge/style/themes/ui.js +1 -0
  239. package/es/components/badge/style.d.ts +1 -0
  240. package/es/components/badge/style.js +1 -0
  241. package/es/components/button/style/themes/dnb-button-theme-eiendom.css +20 -0
  242. package/es/components/button/style/themes/dnb-button-theme-eiendom.min.css +2 -2
  243. package/es/components/button/style/themes/dnb-button-theme-eiendom.scss +8 -0
  244. package/es/components/dialog/style/dnb-dialog.css +12 -19
  245. package/es/components/dialog/style/dnb-dialog.min.css +1 -1
  246. package/es/components/dialog/style/themes/dnb-dialog-theme-ui.css +0 -2
  247. package/es/components/dialog/style/themes/dnb-dialog-theme-ui.min.css +1 -1
  248. package/es/components/dialog/style/themes/dnb-dialog-theme-ui.scss +0 -7
  249. package/es/components/drawer/DrawerContent.js +4 -1
  250. package/es/components/drawer/style/_drawer.scss +6 -13
  251. package/es/components/drawer/style/dnb-drawer.css +21 -31
  252. package/es/components/drawer/style/dnb-drawer.min.css +1 -1
  253. package/es/components/drawer/style/themes/dnb-drawer-theme-ui.css +0 -2
  254. package/es/components/drawer/style/themes/dnb-drawer-theme-ui.min.css +1 -1
  255. package/es/components/drawer/style/themes/dnb-drawer-theme-ui.scss +0 -7
  256. package/es/components/form-row/FormRow.js +13 -11
  257. package/es/components/form-row/FormRowHelpers.d.ts +1 -0
  258. package/es/components/form-row/FormRowHelpers.js +10 -0
  259. package/es/components/index.d.ts +2 -1
  260. package/es/components/index.js +2 -1
  261. package/es/components/lib.d.ts +3 -1
  262. package/es/components/lib.js +3 -1
  263. package/es/components/modal/ModalContent.js +0 -1
  264. package/es/components/modal/style/_modal.scss +0 -4
  265. package/es/components/modal/style/dnb-modal.css +12 -19
  266. package/es/components/modal/style/dnb-modal.min.css +1 -1
  267. package/es/components/modal/style/themes/dnb-modal-theme-ui.css +6 -2
  268. package/es/components/modal/style/themes/dnb-modal-theme-ui.min.css +1 -1
  269. package/es/components/modal/style/themes/dnb-modal-theme-ui.scss +6 -5
  270. package/es/components/skeleton/SkeletonHelper.d.ts +2 -1
  271. package/es/components/slider/Slider.d.ts +8 -229
  272. package/es/components/slider/Slider.js +7 -688
  273. package/es/components/slider/SliderHelpers.d.ts +23 -0
  274. package/es/components/slider/SliderHelpers.js +130 -0
  275. package/es/components/slider/SliderInstance.d.ts +6 -0
  276. package/es/components/slider/SliderInstance.js +167 -0
  277. package/es/components/slider/SliderProvider.d.ts +4 -0
  278. package/es/components/slider/SliderProvider.js +214 -0
  279. package/es/components/slider/SliderThumb.d.ts +2 -0
  280. package/es/components/slider/SliderThumb.js +106 -0
  281. package/es/components/slider/SliderTrack.d.ts +6 -0
  282. package/es/components/slider/SliderTrack.js +100 -0
  283. package/es/components/slider/hooks/useSliderEvents.d.ts +11 -0
  284. package/es/components/slider/hooks/useSliderEvents.js +129 -0
  285. package/es/components/slider/hooks/useSliderProps.d.ts +1 -0
  286. package/es/components/slider/hooks/useSliderProps.js +5 -0
  287. package/es/components/slider/style/_slider.scss +19 -54
  288. package/es/components/slider/style/dnb-slider.css +30 -66
  289. package/es/components/slider/style/dnb-slider.min.css +1 -1
  290. package/es/components/slider/style/themes/dnb-slider-theme-ui.css +0 -16
  291. package/es/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  292. package/es/components/slider/style/themes/dnb-slider-theme-ui.scss +0 -17
  293. package/es/components/slider/types.d.ts +100 -0
  294. package/es/components/slider/types.js +1 -0
  295. package/es/components/tabs/style/themes/dnb-tabs-theme-eiendom.css +148 -0
  296. package/es/components/tabs/style/themes/dnb-tabs-theme-eiendom.min.css +1 -0
  297. package/es/components/tabs/style/themes/dnb-tabs-theme-eiendom.scss +14 -0
  298. package/es/components/timeline/TimelineItem.js +2 -1
  299. package/es/elements/Anchor.d.ts +44 -105
  300. package/es/elements/Anchor.js +49 -80
  301. package/es/elements/Element.d.ts +23 -40
  302. package/es/elements/Element.js +44 -61
  303. package/es/elements/Link.d.ts +18 -1
  304. package/es/elements/lib.d.ts +36 -2
  305. package/es/index.d.ts +2 -1
  306. package/es/index.js +2 -1
  307. package/es/shared/AlignmentHelper.js +2 -2
  308. package/es/shared/Context.d.ts +7 -1
  309. package/es/shared/Eufemia.js +1 -1
  310. package/es/shared/helpers/Suffix.d.ts +6 -4
  311. package/es/shared/helpers/Suffix.js +5 -3
  312. package/es/shared/helpers/filterValidProps.d.ts +11 -0
  313. package/es/shared/helpers/filterValidProps.js +14 -0
  314. package/es/shared/helpers/withCamelCaseProps.d.ts +1 -1
  315. package/es/shared/helpers/withCamelCaseProps.js +9 -0
  316. package/es/shared/helpers/withSnakeCaseProps.d.ts +40 -0
  317. package/es/shared/helpers/withSnakeCaseProps.js +72 -0
  318. package/es/shared/locales/en-GB.d.ts +3 -3
  319. package/es/shared/locales/en-GB.js +3 -3
  320. package/es/shared/locales/en-US.d.ts +3 -3
  321. package/es/shared/locales/index.d.ts +6 -6
  322. package/es/shared/locales/nb-NO.d.ts +3 -3
  323. package/es/shared/locales/nb-NO.js +3 -3
  324. package/es/style/dnb-ui-components.css +161 -88
  325. package/es/style/dnb-ui-components.min.css +4 -4
  326. package/es/style/dnb-ui-components.scss +1 -0
  327. package/es/style/dnb-ui-elements.css +44 -28
  328. package/es/style/dnb-ui-elements.min.css +1 -1
  329. package/es/style/dnb-ui-tags.css +63 -40
  330. package/es/style/dnb-ui-tags.min.css +1 -1
  331. package/es/style/elements/_anchor-mixins.scss +6 -3
  332. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.css +237 -46
  333. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +7 -7
  334. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.scss +1 -0
  335. package/es/style/themes/theme-ui/dnb-theme-ui.css +72 -50
  336. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +4 -4
  337. package/es/style/themes/theme-ui/dnb-theme-ui.scss +1 -0
  338. package/esm/dnb-ui-basis.min.mjs +1 -1
  339. package/esm/dnb-ui-components.min.mjs +3 -3
  340. package/esm/dnb-ui-elements.min.mjs +9 -10
  341. package/esm/dnb-ui-extensions.min.mjs +4 -4
  342. package/esm/dnb-ui-lib.min.mjs +3 -3
  343. package/esm/dnb-ui-web-components.min.mjs +3 -3
  344. package/index.d.ts +2 -1
  345. package/index.js +2 -1
  346. package/package.json +1 -1
  347. package/shared/AlignmentHelper.js +4 -2
  348. package/shared/Context.d.ts +7 -1
  349. package/shared/Eufemia.js +1 -1
  350. package/shared/helpers/Suffix.d.ts +6 -4
  351. package/shared/helpers/Suffix.js +4 -2
  352. package/shared/helpers/filterValidProps.d.ts +11 -0
  353. package/shared/helpers/filterValidProps.js +14 -0
  354. package/shared/helpers/withCamelCaseProps.d.ts +1 -1
  355. package/shared/helpers/withCamelCaseProps.js +10 -0
  356. package/shared/helpers/withSnakeCaseProps.d.ts +40 -0
  357. package/shared/helpers/withSnakeCaseProps.js +115 -0
  358. package/shared/locales/en-GB.d.ts +3 -3
  359. package/shared/locales/en-GB.js +3 -3
  360. package/shared/locales/en-US.d.ts +3 -3
  361. package/shared/locales/index.d.ts +6 -6
  362. package/shared/locales/nb-NO.d.ts +3 -3
  363. package/shared/locales/nb-NO.js +3 -3
  364. package/style/dnb-ui-components.css +161 -88
  365. package/style/dnb-ui-components.min.css +4 -4
  366. package/style/dnb-ui-components.scss +1 -0
  367. package/style/dnb-ui-elements.css +44 -28
  368. package/style/dnb-ui-elements.min.css +1 -1
  369. package/style/dnb-ui-tags.css +63 -40
  370. package/style/dnb-ui-tags.min.css +1 -1
  371. package/style/elements/_anchor-mixins.scss +6 -3
  372. package/style/themes/theme-eiendom/dnb-theme-eiendom.css +237 -46
  373. package/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +7 -7
  374. package/style/themes/theme-eiendom/dnb-theme-eiendom.scss +1 -0
  375. package/style/themes/theme-ui/dnb-theme-ui.css +72 -50
  376. package/style/themes/theme-ui/dnb-theme-ui.min.css +4 -4
  377. package/style/themes/theme-ui/dnb-theme-ui.scss +1 -0
  378. package/umd/dnb-ui-basis.min.js +1 -1
  379. package/umd/dnb-ui-components.min.js +5 -5
  380. package/umd/dnb-ui-elements.min.js +20 -21
  381. package/umd/dnb-ui-extensions.min.js +3 -3
  382. package/umd/dnb-ui-lib.min.js +4 -4
  383. package/umd/dnb-ui-web-components.min.js +4 -4
  384. package/cjs/components/slider/web-component.d.ts +0 -3
  385. package/components/slider/web-component.d.ts +0 -3
  386. package/components/slider/web-component.js +0 -5
  387. package/es/components/slider/web-component.d.ts +0 -3
  388. package/es/components/slider/web-component.js +0 -5
@@ -0,0 +1,23 @@
1
+ import { formatOptionParams, formatValue, formatReturnType } from '../number-format/NumberUtils';
2
+ import type { ValueTypes } from './types';
3
+ export declare const percentToValue: (percent: number, min: number, max: number, isReverse: boolean) => number;
4
+ export declare const roundToStep: (number: number, step: number) => number;
5
+ export declare const getOffset: (node: HTMLElement) => {
6
+ top: number;
7
+ left: number;
8
+ };
9
+ export declare const getMousePosition: (event: MouseEvent & TouchEvent) => {
10
+ x: number;
11
+ y: number;
12
+ };
13
+ export declare const calculatePercent: (node: HTMLElement, event: MouseEvent | TouchEvent, isVertical: boolean) => number;
14
+ export declare const clamp: (value: number, min?: number, max?: number) => number;
15
+ export declare const roundValue: (value: number, step: number) => number;
16
+ export declare const createMockDiv: ({ width, height }: {
17
+ width: any;
18
+ height: any;
19
+ }) => HTMLDivElement;
20
+ export declare const getUpdatedValues: (value: Array<number>, index: number, newValue: number) => ValueTypes;
21
+ export declare const closestIndex: (goal: number, array: Array<number>) => number;
22
+ export declare const formatNumber: (value: formatValue, opts?: formatOptionParams) => formatReturnType;
23
+ export declare const getHumanNumber: (value: number, numberFormat: formatOptionParams) => string;
@@ -0,0 +1,130 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+
4
+ 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; }
5
+
6
+ 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; }
7
+
8
+ import { format } from '../number-format/NumberUtils';
9
+ export const percentToValue = (percent, min, max, isReverse) => {
10
+ if (typeof min === 'string') {
11
+ min = parseFloat(min);
12
+ }
13
+
14
+ if (typeof max === 'string') {
15
+ max = parseFloat(max);
16
+ }
17
+
18
+ let num = (max - min) * percent / 100 + min;
19
+
20
+ if (isReverse) {
21
+ num = max + min - num;
22
+ }
23
+
24
+ return num;
25
+ };
26
+ export const roundToStep = (number, step) => Math.round(number / step) * step;
27
+ export const getOffset = node => {
28
+ const {
29
+ pageYOffset,
30
+ pageXOffset
31
+ } = typeof window !== 'undefined' ? window : {
32
+ pageYOffset: 0,
33
+ pageXOffset: 0
34
+ };
35
+ const {
36
+ left,
37
+ top
38
+ } = node.getBoundingClientRect();
39
+ return {
40
+ top: top + pageYOffset,
41
+ left: left + pageXOffset
42
+ };
43
+ };
44
+ export const getMousePosition = event => {
45
+ if (event.changedTouches && event.changedTouches[0]) {
46
+ return {
47
+ x: event.changedTouches[0].pageX,
48
+ y: event.changedTouches[0].pageY
49
+ };
50
+ }
51
+
52
+ return {
53
+ x: event.pageX,
54
+ y: event.pageY
55
+ };
56
+ };
57
+ export const calculatePercent = (node, event, isVertical) => {
58
+ const {
59
+ width,
60
+ height
61
+ } = node.getBoundingClientRect();
62
+ const {
63
+ top,
64
+ left
65
+ } = getOffset(node);
66
+ const {
67
+ x,
68
+ y
69
+ } = getMousePosition(event);
70
+ const value = isVertical ? y - top : x - left;
71
+ const onePercent = (isVertical ? height : width) / 100;
72
+ return Math.abs(clamp(value / onePercent));
73
+ };
74
+ export const clamp = (value, min = 0, max = 100) => Math.min(Math.max(value, min), max);
75
+ export const roundValue = (value, step) => {
76
+ return step > 0 ? roundToStep(value, step) : parseFloat(parseFloat(String(value)).toFixed(3));
77
+ };
78
+ export const createMockDiv = ({
79
+ width,
80
+ height
81
+ }) => {
82
+ const div = document.createElement('div');
83
+
84
+ _extends(div.style, {
85
+ width: `${width}px`,
86
+ height: `${height}px`
87
+ });
88
+
89
+ div.getBoundingClientRect = () => ({
90
+ width,
91
+ height,
92
+ top: 0,
93
+ left: 0,
94
+ right: width,
95
+ bottom: height
96
+ });
97
+
98
+ return div;
99
+ };
100
+ export const getUpdatedValues = (value, index, newValue) => {
101
+ return value.map((val, i) => {
102
+ if (i === index) {
103
+ val = newValue;
104
+ }
105
+
106
+ return val;
107
+ });
108
+ };
109
+ export const closestIndex = (goal, array) => {
110
+ const res = [...array].sort((a, b) => Math.abs(goal - a) - Math.abs(goal - b))[0];
111
+ return array.findIndex(num => num === res);
112
+ };
113
+ export const formatNumber = (value, opts = null) => {
114
+ if (opts) {
115
+ return format(value, opts);
116
+ }
117
+
118
+ return value;
119
+ };
120
+ export const getHumanNumber = (value, numberFormat) => {
121
+ const num = value;
122
+ const {
123
+ aria: humanNumber
124
+ } = numberFormat ? formatNumber(num, _objectSpread(_objectSpread({}, numberFormat || {}), {}, {
125
+ returnAria: true
126
+ })) : {
127
+ aria: null
128
+ };
129
+ return String(humanNumber || value);
130
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Web Slider Component
3
+ *
4
+ */
5
+ /// <reference types="react" />
6
+ export declare function SliderInstance(): JSX.Element;
@@ -0,0 +1,167 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+
3
+ var _SubtractButton, _AddButton, _AlignmentHelper, _SliderMainTrack, _SliderSuffix;
4
+
5
+ import React from 'react';
6
+ import classnames from 'classnames';
7
+ import { isTrue } from '../../shared/component-helper';
8
+ import AlignmentHelper from '../../shared/AlignmentHelper';
9
+ import { createSpacingClasses } from '../space/SpacingHelper';
10
+ import { createSkeletonClass, skeletonDOMAttributes } from '../skeleton/SkeletonHelper';
11
+ import Context from '../../shared/Context';
12
+ import Suffix from '../../shared/helpers/Suffix';
13
+ import Button from '../button/Button';
14
+ import FormLabel from '../form-label/FormLabel';
15
+ import FormStatus from '../form-status/FormStatus';
16
+ import { SliderMainTrack, SliderTrackAfter, SliderTrackBefore } from './SliderTrack';
17
+ import { SliderThumb } from './SliderThumb';
18
+ import { useSliderProps } from './hooks/useSliderProps';
19
+ import { clamp, getHumanNumber } from './SliderHelpers';
20
+ export function SliderInstance() {
21
+ const context = React.useContext(Context);
22
+ const {
23
+ isReverse,
24
+ isVertical,
25
+ showButtons,
26
+ showStatus,
27
+ allProps
28
+ } = useSliderProps();
29
+ const {
30
+ id,
31
+ label,
32
+ labelSrOnly,
33
+ labelDirection,
34
+ status,
35
+ statusProps,
36
+ statusState,
37
+ statusNoAnimation,
38
+ globalStatusId,
39
+ stretch,
40
+ skeleton,
41
+ disabled,
42
+ className
43
+ } = allProps;
44
+ const mainParams = {
45
+ className: classnames("dnb-slider dnb-form-component", createSkeletonClass(null, skeleton), createSpacingClasses(allProps), className, isVertical && 'dnb-slider--vertical', disabled && 'dnb-slider__state--disabled', !showButtons && 'dnb-slider--no-buttons', isTrue(stretch) && 'dnb-slider--stretch', label && labelDirection && `dnb-slider__label--${labelDirection}`, showStatus && 'dnb-slider__form-status', status && `dnb-slider__status--${statusState}`)
46
+ };
47
+ const subtractButton = showButtons ? _SubtractButton || (_SubtractButton = React.createElement(SubtractButton, null)) : null;
48
+ const addButton = showButtons ? _AddButton || (_AddButton = React.createElement(AddButton, null)) : null;
49
+ skeletonDOMAttributes(mainParams, skeleton, context);
50
+ return React.createElement("span", mainParams, label && React.createElement(FormLabel, {
51
+ id: id + '-label',
52
+ text: label,
53
+ disabled: disabled,
54
+ skeleton: skeleton,
55
+ label_direction: labelDirection,
56
+ sr_only: labelSrOnly
57
+ }), React.createElement("span", {
58
+ className: "dnb-slider__wrapper"
59
+ }, _AlignmentHelper || (_AlignmentHelper = React.createElement(AlignmentHelper, null)), React.createElement(FormStatus, _extends({
60
+ show: showStatus,
61
+ id: id + '-form-status',
62
+ global_status_id: globalStatusId,
63
+ label: label,
64
+ text_id: id + '-status',
65
+ text: status,
66
+ status: statusState,
67
+ no_animation: statusNoAnimation,
68
+ skeleton: skeleton
69
+ }, statusProps)), React.createElement("span", {
70
+ className: "dnb-slider__inner"
71
+ }, showButtons && (isReverse ? addButton : subtractButton), _SliderMainTrack || (_SliderMainTrack = React.createElement(SliderMainTrack, null, React.createElement(SliderThumb, null), React.createElement(SliderTrackBefore, null), React.createElement(SliderTrackAfter, null))), showButtons && (isReverse ? subtractButton : addButton), _SliderSuffix || (_SliderSuffix = React.createElement(SliderSuffix, null)))));
72
+ }
73
+
74
+ function SliderSuffix() {
75
+ const {
76
+ allProps
77
+ } = useSliderProps();
78
+ const {
79
+ id,
80
+ suffix
81
+ } = allProps;
82
+ return suffix ? React.createElement(Suffix, {
83
+ className: "dnb-slider__suffix",
84
+ id: id + '-suffix',
85
+ context: allProps
86
+ }, suffix) : null;
87
+ }
88
+
89
+ function SubtractButton() {
90
+ const {
91
+ emitChange,
92
+ value,
93
+ attributes,
94
+ allProps
95
+ } = useSliderProps();
96
+ const {
97
+ step,
98
+ min,
99
+ max,
100
+ disabled,
101
+ skeleton,
102
+ subtractTitle,
103
+ numberFormat
104
+ } = allProps;
105
+
106
+ const onSubtractClickHandler = event => {
107
+ emitChange(event, clamp(value - (step || 1), min, max));
108
+ };
109
+
110
+ const subtractParams = {};
111
+
112
+ if (typeof attributes['aria-hidden'] !== 'undefined') {
113
+ subtractParams['aria-hidden'] = attributes['aria-hidden'];
114
+ }
115
+
116
+ const humanNumber = getHumanNumber(value, numberFormat);
117
+ return React.createElement(Button, _extends({
118
+ className: "dnb-slider__button dnb-slider__button--subtract",
119
+ variant: "secondary",
120
+ icon: "subtract",
121
+ size: "small",
122
+ "aria-label": subtractTitle === null || subtractTitle === void 0 ? void 0 : subtractTitle.replace('%s', humanNumber),
123
+ on_click: onSubtractClickHandler,
124
+ disabled: disabled,
125
+ skeleton: skeleton
126
+ }, subtractParams));
127
+ }
128
+
129
+ function AddButton() {
130
+ const {
131
+ emitChange,
132
+ value,
133
+ attributes,
134
+ allProps
135
+ } = useSliderProps();
136
+ const {
137
+ step,
138
+ min,
139
+ max,
140
+ disabled,
141
+ skeleton,
142
+ addTitle,
143
+ numberFormat
144
+ } = allProps;
145
+
146
+ const onAddClickHandler = event => {
147
+ emitChange(event, clamp(value + (step || 1), min, max));
148
+ };
149
+
150
+ const addParams = {};
151
+
152
+ if (typeof attributes['aria-hidden'] !== 'undefined') {
153
+ addParams['aria-hidden'] = attributes['aria-hidden'];
154
+ }
155
+
156
+ const humanNumber = getHumanNumber(value, numberFormat);
157
+ return React.createElement(Button, _extends({
158
+ className: "dnb-slider__button dnb-slider__button--add",
159
+ variant: "secondary",
160
+ icon: "add",
161
+ size: "small",
162
+ "aria-label": addTitle === null || addTitle === void 0 ? void 0 : addTitle.replace('%s', humanNumber),
163
+ on_click: onAddClickHandler,
164
+ disabled: disabled,
165
+ skeleton: skeleton
166
+ }, addParams));
167
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { SliderProps, SliderContextTypes } from './types';
3
+ export declare const SliderContext: React.Context<SliderContextTypes>;
4
+ export declare function SliderProvider(localProps: SliderProps): JSX.Element;
@@ -0,0 +1,214 @@
1
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
+ const _excluded = ["step", "label", "labelDirection", "labelSrOnly", "status", "statusState", "statusProps", "statusNoAnimation", "globalStatusId", "stretch", "suffix", "thumbTitle", "subtractTitle", "addTitle", "hideButtons", "multiThumbBehavior", "numberFormat", "skeleton", "max", "min", "disabled", "className", "id", "onInit", "onChange", "onDragStart", "onDragEnd", "vertical", "reverse", "value", "children"];
3
+ import React from 'react';
4
+ import { includeValidProps } from '../../components/form-row/FormRowHelpers';
5
+ import { usePropsWithContext } from '../../shared/hooks';
6
+ import { warn, isTrue, makeUniqueId, dispatchCustomElementEvent, getStatusState } from '../../shared/component-helper';
7
+ import Context from '../../shared/Context';
8
+ import { closestIndex, formatNumber, getUpdatedValues, roundValue } from './SliderHelpers';
9
+ import { convertSnakeCaseProps } from '../../shared/helpers/withSnakeCaseProps';
10
+ const defaultProps = {
11
+ statusState: 'error',
12
+ addTitle: '+',
13
+ subtractTitle: '−',
14
+ min: 0,
15
+ max: 100,
16
+ value: -1,
17
+ multiThumbBehavior: 'swap'
18
+ };
19
+ export const SliderContext = React.createContext(null);
20
+ export function SliderProvider(localProps) {
21
+ const context = React.useContext(Context);
22
+ const allProps = convertSnakeCaseProps(usePropsWithContext(localProps, defaultProps, {
23
+ skeleton: context === null || context === void 0 ? void 0 : context.skeleton
24
+ }, context === null || context === void 0 ? void 0 : context.getTranslation(localProps).Slider, includeValidProps(context === null || context === void 0 ? void 0 : context.FormRow, {
25
+ vertical: null
26
+ }), context === null || context === void 0 ? void 0 : context.Slider));
27
+ const [_id] = React.useState(makeUniqueId);
28
+
29
+ if (!allProps.id) {
30
+ allProps.id = _id;
31
+ }
32
+
33
+ const {
34
+ step,
35
+ label,
36
+ labelDirection,
37
+ labelSrOnly,
38
+ status,
39
+ statusState,
40
+ statusProps,
41
+ statusNoAnimation,
42
+ globalStatusId,
43
+ stretch,
44
+ suffix,
45
+ thumbTitle: title,
46
+ subtractTitle,
47
+ addTitle,
48
+ hideButtons,
49
+ multiThumbBehavior,
50
+ numberFormat,
51
+ skeleton,
52
+ max,
53
+ min,
54
+ disabled,
55
+ className,
56
+ id,
57
+ onInit,
58
+ onChange,
59
+ onDragStart,
60
+ onDragEnd,
61
+ vertical: _vertical,
62
+ reverse: _reverse,
63
+ value: _value,
64
+ children: _children
65
+ } = allProps,
66
+ attributes = _objectWithoutProperties(allProps, _excluded);
67
+
68
+ const [value, setValue] = React.useState(_value);
69
+ const realtimeValue = React.useRef(_value);
70
+ const [thumbState, setThumbState] = React.useState('initial');
71
+ const thumbIndex = React.useRef(-1);
72
+ const [isVertical] = React.useState(isTrue(_vertical));
73
+ const [isReverse] = React.useState(isVertical ? !isTrue(_reverse) : isTrue(_reverse));
74
+ const isMulti = Array.isArray(value);
75
+
76
+ const setThumbIndex = index => {
77
+ if (!isNaN(index)) {
78
+ thumbIndex.current = index;
79
+ }
80
+ };
81
+
82
+ if (allProps.use_scrollwheel) {
83
+ warn('use_scrollwheel is not supported anymore!');
84
+ }
85
+
86
+ const getAndUpdateCurrentIndex = currentValue => {
87
+ let currentIndex = null;
88
+
89
+ if (thumbIndex.current > -1) {
90
+ currentIndex = thumbIndex.current;
91
+ } else {
92
+ currentIndex = closestIndex(currentValue, value);
93
+ setThumbIndex(currentIndex);
94
+ }
95
+
96
+ return currentIndex;
97
+ };
98
+
99
+ const updateValue = value => {
100
+ setValue(value);
101
+ realtimeValue.current = value;
102
+ };
103
+
104
+ const emitChange = (event, rawValue) => {
105
+ if (disabled || isTrue(skeleton)) {
106
+ return;
107
+ }
108
+
109
+ let numberValue = roundValue(rawValue, step);
110
+ let multiValues = numberValue;
111
+
112
+ if (numberValue > -1) {
113
+ if (isMulti) {
114
+ const currentIndex = getAndUpdateCurrentIndex(numberValue);
115
+ const lower = realtimeValue.current[currentIndex - 1];
116
+ const upper = realtimeValue.current[currentIndex + 1];
117
+
118
+ if (multiThumbBehavior === 'omit') {
119
+ if (numberValue < lower) {
120
+ numberValue = lower;
121
+ }
122
+
123
+ if (numberValue > upper) {
124
+ numberValue = upper;
125
+ }
126
+ }
127
+
128
+ multiValues = getUpdatedValues(multiThumbBehavior === 'push' ? realtimeValue.current : value, currentIndex, numberValue);
129
+
130
+ if (multiThumbBehavior === 'push') {
131
+ if (typeof lower !== 'undefined' && numberValue < lower) {
132
+ multiValues[currentIndex - 1] = numberValue;
133
+ }
134
+
135
+ if (typeof upper !== 'undefined' && numberValue >= upper) {
136
+ multiValues[currentIndex + 1] = numberValue;
137
+ }
138
+ }
139
+
140
+ if (numberValue === realtimeValue.current[currentIndex]) {
141
+ return;
142
+ }
143
+ } else if (numberValue === realtimeValue.current) {
144
+ return;
145
+ }
146
+
147
+ if (typeof onChange === 'function') {
148
+ const obj = {
149
+ value: multiValues,
150
+ rawValue,
151
+ raw_value: rawValue,
152
+ event,
153
+ number: null
154
+ };
155
+
156
+ if (numberFormat) {
157
+ obj.number = formatNumber(numberValue, numberFormat);
158
+ }
159
+
160
+ dispatchCustomElementEvent(allProps, 'onChange', obj);
161
+ }
162
+
163
+ updateValue(multiValues);
164
+ }
165
+ };
166
+
167
+ React.useEffect(() => {
168
+ if (isMulti) {
169
+ const hasChanged = _value.some((val, i) => {
170
+ return val !== value[i];
171
+ });
172
+
173
+ if (hasChanged) {
174
+ updateValue(_value);
175
+ }
176
+ } else {
177
+ updateValue(_value);
178
+ }
179
+ }, [_value, isMulti]);
180
+ const trackRef = React.useRef();
181
+ const jumpedTimeout = React.useRef();
182
+
183
+ const setJumpedState = () => {
184
+ setThumbState('jumped');
185
+ clearTimeout(jumpedTimeout.current);
186
+ jumpedTimeout.current = setTimeout(() => setThumbState('normal'), 100);
187
+ };
188
+
189
+ const showStatus = getStatusState(status);
190
+ const showButtons = !isMulti && !isTrue(hideButtons);
191
+ const values = isMulti ? value : [value];
192
+ return React.createElement(SliderContext.Provider, {
193
+ value: {
194
+ isMulti,
195
+ isReverse,
196
+ isVertical,
197
+ value,
198
+ values,
199
+ setValue,
200
+ attributes,
201
+ showStatus,
202
+ showButtons,
203
+ thumbState,
204
+ setThumbState,
205
+ thumbIndex,
206
+ setThumbIndex,
207
+ emitChange,
208
+ allProps,
209
+ trackRef,
210
+ setJumpedState,
211
+ jumpedTimeout
212
+ }
213
+ }, localProps.children);
214
+ }
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function SliderThumb(): JSX.Element;
@@ -0,0 +1,106 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
+
4
+ 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; }
5
+
6
+ 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; }
7
+
8
+ import React from 'react';
9
+ import { combineDescribedBy, combineLabelledBy, validateDOMAttributes } from '../../shared/component-helper';
10
+ import Button from '../button/Button';
11
+ import { useSliderEvents } from './hooks/useSliderEvents';
12
+ import { useSliderProps } from './hooks/useSliderProps';
13
+ import { clamp, getHumanNumber } from './SliderHelpers';
14
+ export function SliderThumb() {
15
+ const {
16
+ values,
17
+ thumbIndex,
18
+ isVertical,
19
+ isReverse,
20
+ showStatus,
21
+ attributes,
22
+ allProps
23
+ } = useSliderProps();
24
+ const {
25
+ id,
26
+ label,
27
+ min,
28
+ max,
29
+ step,
30
+ skeleton,
31
+ disabled,
32
+ suffix,
33
+ numberFormat
34
+ } = allProps;
35
+ const {
36
+ onThumbMouseDownHandler,
37
+ onThumbMouseUpHandler,
38
+ onThumbBlurHandler,
39
+ onThumbFocusHandler,
40
+ onHelperChangeHandler,
41
+ onHelperFocusHandler
42
+ } = useSliderEvents();
43
+
44
+ const thumbParams = _objectSpread({
45
+ onBlur: onThumbBlurHandler,
46
+ onFocus: onThumbFocusHandler
47
+ }, attributes);
48
+
49
+ const helperParams = {};
50
+
51
+ if (label) {
52
+ helperParams['aria-labelledby'] = combineLabelledBy(helperParams, label ? id + '-label' : null);
53
+ }
54
+
55
+ if (showStatus || suffix) {
56
+ helperParams['aria-describedby'] = combineDescribedBy(helperParams, showStatus ? id + '-status' : null, suffix ? id + '-suffix' : null);
57
+ }
58
+
59
+ validateDOMAttributes(null, helperParams);
60
+ validateDOMAttributes(allProps, thumbParams);
61
+ return React.createElement(React.Fragment, null, values.map((value, i) => {
62
+ const index = thumbIndex.current;
63
+ let percent = clamp((value - min) * 100 / (max - min));
64
+
65
+ if (isReverse) {
66
+ percent = 100 - percent;
67
+ }
68
+
69
+ const style = {
70
+ zIndex: index === i ? 4 : 3,
71
+ [`${isVertical ? 'top' : 'left'}`]: `${percent}%`
72
+ };
73
+ const humanNumber = getHumanNumber(value, numberFormat);
74
+ return React.createElement(React.Fragment, {
75
+ key: i
76
+ }, React.createElement("span", {
77
+ className: "dnb-slider__thumb",
78
+ style: style
79
+ }, React.createElement("input", _extends({
80
+ type: "range",
81
+ className: "dnb-slider__button-helper",
82
+ min: min,
83
+ max: max,
84
+ step: step,
85
+ value: value,
86
+ disabled: disabled,
87
+ onChange: onHelperChangeHandler,
88
+ onFocus: onHelperFocusHandler,
89
+ "aria-valuemin": min,
90
+ "aria-valuemax": max,
91
+ "aria-valuenow": value,
92
+ "aria-valuetext": humanNumber ? humanNumber : undefined,
93
+ "aria-orientation": isVertical ? 'vertical' : 'horizontal',
94
+ "data-index": i
95
+ }, helperParams)), React.createElement(Button, _extends({
96
+ element: "span",
97
+ type: "",
98
+ variant: "secondary",
99
+ disabled: disabled,
100
+ skeleton: skeleton,
101
+ "data-index": i,
102
+ onMouseDown: onThumbMouseDownHandler,
103
+ onMouseUp: onThumbMouseUpHandler
104
+ }, thumbParams))));
105
+ }));
106
+ }
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare function SliderMainTrack({ children, }: {
3
+ children: React.ReactNode | React.ReactNode[];
4
+ }): JSX.Element;
5
+ export declare function SliderTrackBefore(): JSX.Element;
6
+ export declare function SliderTrackAfter(): JSX.Element;