@helsenorge/designsystem-react 15.4.0 → 15.5.1

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 (301) hide show
  1. package/lib/AnchorLink.js +4 -4
  2. package/lib/AnchorLink.js.map +1 -1
  3. package/lib/AsChildSlot.js.map +1 -1
  4. package/lib/Avatar.js +2 -2
  5. package/lib/Avatar.js.map +1 -1
  6. package/lib/Badge.js +2 -2
  7. package/lib/Badge.js.map +1 -1
  8. package/lib/Button.js +6 -6
  9. package/lib/Button.js.map +1 -1
  10. package/lib/CHANGELOG.md +25 -0
  11. package/lib/Checkbox.js +12 -10
  12. package/lib/Checkbox.js.map +1 -1
  13. package/lib/Checkbox2.js +2 -2
  14. package/lib/Checkbox2.js.map +1 -1
  15. package/lib/CheckboxMarker.js +2 -2
  16. package/lib/CheckboxMarker.js.map +1 -1
  17. package/lib/Chip.js +4 -4
  18. package/lib/Chip.js.map +1 -1
  19. package/lib/Close.js +3 -3
  20. package/lib/Close.js.map +1 -1
  21. package/lib/DictionaryTrigger.js +2 -2
  22. package/lib/DictionaryTrigger.js.map +1 -1
  23. package/lib/Drawer.js +13 -13
  24. package/lib/Drawer.js.map +1 -1
  25. package/lib/DrawerNavigation.js +1 -1
  26. package/lib/DrawerNavigation.js.map +1 -1
  27. package/lib/Duolist.js +5 -5
  28. package/lib/Duolist.js.map +1 -1
  29. package/lib/ElementHeader.js +9 -9
  30. package/lib/ElementHeader.js.map +1 -1
  31. package/lib/ElementHeaderText.js +4 -4
  32. package/lib/ElementHeaderText.js.map +1 -1
  33. package/lib/ErrorWrapper.js +3 -2
  34. package/lib/ErrorWrapper.js.map +1 -1
  35. package/lib/Expander.js +9 -8
  36. package/lib/Expander.js.map +1 -1
  37. package/lib/FilterButton.js +2 -2
  38. package/lib/FilterButton.js.map +1 -1
  39. package/lib/FilterButtonAndChipsWrapper.js +2 -2
  40. package/lib/FilterButtonAndChipsWrapper.js.map +1 -1
  41. package/lib/FilterDrawer.js.map +1 -1
  42. package/lib/FilterLinkList.js +5 -4
  43. package/lib/FilterLinkList.js.map +1 -1
  44. package/lib/FilterOverviewSearch.js +2 -2
  45. package/lib/FilterOverviewSearch.js.map +1 -1
  46. package/lib/FilterResultCountAndSortWrapper.js.map +1 -1
  47. package/lib/FilterSearch.js +31 -18
  48. package/lib/FilterSearch.js.map +1 -1
  49. package/lib/FormFieldTag.js +2 -2
  50. package/lib/FormFieldTag.js.map +1 -1
  51. package/lib/FormGroup.js +5 -5
  52. package/lib/FormGroup.js.map +1 -1
  53. package/lib/FormLayout.js +3 -3
  54. package/lib/FormLayout.js.map +1 -1
  55. package/lib/HelpDetails.js +5 -4
  56. package/lib/HelpDetails.js.map +1 -1
  57. package/lib/HelpTriggerIcon.js +2 -2
  58. package/lib/HelpTriggerIcon.js.map +1 -1
  59. package/lib/HelpTriggerStandalone.js +2 -2
  60. package/lib/HelpTriggerStandalone.js.map +1 -1
  61. package/lib/HighlightPanel.js +4 -4
  62. package/lib/HighlightPanel.js.map +1 -1
  63. package/lib/Highlighter.js +1 -1
  64. package/lib/Highlighter.js.map +1 -1
  65. package/lib/HorizontalScroll.js +4 -4
  66. package/lib/HorizontalScroll.js.map +1 -1
  67. package/lib/Icon.js +2 -2
  68. package/lib/Icon.js.map +1 -1
  69. package/lib/Illustration.js.map +1 -1
  70. package/lib/InfoTeaser.js +3 -3
  71. package/lib/InfoTeaser.js.map +1 -1
  72. package/lib/Input.js +12 -6
  73. package/lib/Input.js.map +1 -1
  74. package/lib/LazyIcon.js +1 -0
  75. package/lib/LazyIcon.js.map +1 -1
  76. package/lib/LazyIllustration.js.map +1 -1
  77. package/lib/LinkList.js +36 -33
  78. package/lib/LinkList.js.map +1 -1
  79. package/lib/List.js +5 -3
  80. package/lib/List.js.map +1 -1
  81. package/lib/ListEditMode.js +8 -7
  82. package/lib/ListEditMode.js.map +1 -1
  83. package/lib/LoaderSpinner.js.map +1 -1
  84. package/lib/MaxCharacters.js +2 -2
  85. package/lib/MaxCharacters.js.map +1 -1
  86. package/lib/PanelTitle.js +2 -2
  87. package/lib/PanelTitle.js.map +1 -1
  88. package/lib/PopOver.js +7 -4
  89. package/lib/PopOver.js.map +1 -1
  90. package/lib/Radio.js +2 -2
  91. package/lib/Radio.js.map +1 -1
  92. package/lib/RadioButton.js +5 -5
  93. package/lib/RadioButton.js.map +1 -1
  94. package/lib/RadioMarker.js +12 -11
  95. package/lib/RadioMarker.js.map +1 -1
  96. package/lib/Select.js +4 -4
  97. package/lib/Select.js.map +1 -1
  98. package/lib/SingleSelectItem.js +3 -3
  99. package/lib/SingleSelectItem.js.map +1 -1
  100. package/lib/Slider.js +10 -8
  101. package/lib/Slider.js.map +1 -1
  102. package/lib/Spacer.js +17 -16
  103. package/lib/Spacer.js.map +1 -1
  104. package/lib/StatusDot.js +4 -4
  105. package/lib/StatusDot.js.map +1 -1
  106. package/lib/StatusDotList.js +2 -2
  107. package/lib/StatusDotList.js.map +1 -1
  108. package/lib/StepButtons.js +5 -5
  109. package/lib/StepButtons.js.map +1 -1
  110. package/lib/TabList.js +8 -8
  111. package/lib/TabList.js.map +1 -1
  112. package/lib/TabPanel.js +3 -2
  113. package/lib/TabPanel.js.map +1 -1
  114. package/lib/TableBody.js +4 -3
  115. package/lib/TableBody.js.map +1 -1
  116. package/lib/TableCell.js +4 -3
  117. package/lib/TableCell.js.map +1 -1
  118. package/lib/TableExpandedRow.js +8 -5
  119. package/lib/TableExpandedRow.js.map +1 -1
  120. package/lib/TableExpanderCell.js +4 -3
  121. package/lib/TableExpanderCell.js.map +1 -1
  122. package/lib/TableHead.js +9 -8
  123. package/lib/TableHead.js.map +1 -1
  124. package/lib/TableHeadCell.js +6 -6
  125. package/lib/TableHeadCell.js.map +1 -1
  126. package/lib/TableRow.js +9 -7
  127. package/lib/TableRow.js.map +1 -1
  128. package/lib/Textarea.js +6 -6
  129. package/lib/Textarea.js.map +1 -1
  130. package/lib/Title.js +21 -18
  131. package/lib/Title.js.map +1 -1
  132. package/lib/Toast.js +3 -3
  133. package/lib/Toast.js.map +1 -1
  134. package/lib/VisualCheckbox.js +3 -3
  135. package/lib/VisualCheckbox.js.map +1 -1
  136. package/lib/VisualRadio.js +3 -3
  137. package/lib/VisualRadio.js.map +1 -1
  138. package/lib/__mocks__/matchMedia.js.map +1 -1
  139. package/lib/__mocks__/usePseudoClasses.js.map +1 -1
  140. package/lib/__mocks__/useSize.js.map +1 -1
  141. package/lib/__mocks__/uuid.js +1 -1
  142. package/lib/__mocks__/uuid.js.map +1 -1
  143. package/lib/components/ArticleTeaser/index.js +4 -4
  144. package/lib/components/ArticleTeaser/index.js.map +1 -1
  145. package/lib/components/Dropdown/index.js +5 -5
  146. package/lib/components/Dropdown/index.js.map +1 -1
  147. package/lib/components/DropdownOld/index.js +3 -3
  148. package/lib/components/DropdownOld/index.js.map +1 -1
  149. package/lib/components/EmptyState/index.js +3 -5
  150. package/lib/components/EmptyState/index.js.map +1 -1
  151. package/lib/components/ExpanderHierarchy/index.js +8 -7
  152. package/lib/components/ExpanderHierarchy/index.js.map +1 -1
  153. package/lib/components/ExpanderList/index.js +12 -11
  154. package/lib/components/ExpanderList/index.js.map +1 -1
  155. package/lib/components/EyebrowHeader/index.js.map +1 -1
  156. package/lib/components/FavoriteButton/index.js +11 -9
  157. package/lib/components/FavoriteButton/index.js.map +1 -1
  158. package/lib/components/Filter/FilterSearch/FilterSearch.d.ts +2 -0
  159. package/lib/components/Filter/FilterSearch/styles.module.scss +32 -7
  160. package/lib/components/Filter/FilterSearch/styles.module.scss.d.ts +2 -0
  161. package/lib/components/Filter/index.js.map +1 -1
  162. package/lib/components/HelpBubble/index.js +3 -3
  163. package/lib/components/HelpBubble/index.js.map +1 -1
  164. package/lib/components/HelpExpanderInline/index.js.map +1 -1
  165. package/lib/components/HelpExpanderStandalone/index.js.map +1 -1
  166. package/lib/components/HelpPanel/index.js +2 -2
  167. package/lib/components/HelpPanel/index.js.map +1 -1
  168. package/lib/components/HelpTooltip/index.js +6 -3
  169. package/lib/components/HelpTooltip/index.js.map +1 -1
  170. package/lib/components/HelpTriggerInline/index.js +2 -2
  171. package/lib/components/HelpTriggerInline/index.js.map +1 -1
  172. package/lib/components/Icons/AlarmClock.js.map +1 -1
  173. package/lib/components/Icons/ArrowUpRight.js +4 -4
  174. package/lib/components/Icons/ArrowUpRight.js.map +1 -1
  175. package/lib/components/Icons/ArrowUpRightLight.d.ts +3 -0
  176. package/lib/components/Icons/ArrowUpRightLight.js +17 -0
  177. package/lib/components/Icons/ArrowUpRightLight.js.map +1 -0
  178. package/lib/components/Icons/Bus.js.map +1 -1
  179. package/lib/components/Icons/IconNames.d.ts +1 -1
  180. package/lib/components/Icons/IconNames.js +1 -0
  181. package/lib/components/Icons/IconNames.js.map +1 -1
  182. package/lib/components/Illustrations/BabyMobile.js +5 -4
  183. package/lib/components/Illustrations/BabyMobile.js.map +1 -1
  184. package/lib/components/Illustrations/BabyMobileMedium.js.map +1 -1
  185. package/lib/components/Illustrations/Child.js +5 -4
  186. package/lib/components/Illustrations/Child.js.map +1 -1
  187. package/lib/components/Illustrations/ChildMedium.js.map +1 -1
  188. package/lib/components/Illustrations/Doctor.js +10 -8
  189. package/lib/components/Illustrations/Doctor.js.map +1 -1
  190. package/lib/components/Illustrations/DoctorMedium.js.map +1 -1
  191. package/lib/components/Illustrations/DoctorSmall.js.map +1 -1
  192. package/lib/components/Illustrations/EyeContact.js +5 -4
  193. package/lib/components/Illustrations/EyeContact.js.map +1 -1
  194. package/lib/components/Illustrations/EyeContactMedium.js.map +1 -1
  195. package/lib/components/Illustrations/FacialRecognitionFingerprint.js +5 -4
  196. package/lib/components/Illustrations/FacialRecognitionFingerprint.js.map +1 -1
  197. package/lib/components/Illustrations/FacialRecognitionFingerprintMedium.js.map +1 -1
  198. package/lib/components/Illustrations/GiveBabyFood.js +5 -4
  199. package/lib/components/Illustrations/GiveBabyFood.js.map +1 -1
  200. package/lib/components/Illustrations/GiveBabyFoodMedium.js.map +1 -1
  201. package/lib/components/Illustrations/HealthcarePersonnel.js +10 -8
  202. package/lib/components/Illustrations/HealthcarePersonnel.js.map +1 -1
  203. package/lib/components/Illustrations/HealthcarePersonnelMedium.js.map +1 -1
  204. package/lib/components/Illustrations/HealthcarePersonnelSmall.js.map +1 -1
  205. package/lib/components/Illustrations/ReadLetters.js +5 -4
  206. package/lib/components/Illustrations/ReadLetters.js.map +1 -1
  207. package/lib/components/Illustrations/ReadLettersMedium.js.map +1 -1
  208. package/lib/components/Illustrations/SkinToSkin.js +5 -4
  209. package/lib/components/Illustrations/SkinToSkin.js.map +1 -1
  210. package/lib/components/Illustrations/SkinToSkinMedium.js.map +1 -1
  211. package/lib/components/Illustrations/Stork.js +5 -4
  212. package/lib/components/Illustrations/Stork.js.map +1 -1
  213. package/lib/components/Illustrations/StorkMedium.js.map +1 -1
  214. package/lib/components/Illustrations/Stroller.js +5 -4
  215. package/lib/components/Illustrations/Stroller.js.map +1 -1
  216. package/lib/components/Illustrations/StrollerMedium.js.map +1 -1
  217. package/lib/components/Illustrations/Support2.js +5 -4
  218. package/lib/components/Illustrations/Support2.js.map +1 -1
  219. package/lib/components/Illustrations/Support2Medium.js.map +1 -1
  220. package/lib/components/Illustrations/Thinking.js +5 -4
  221. package/lib/components/Illustrations/Thinking.js.map +1 -1
  222. package/lib/components/Illustrations/ThinkingMedium.js.map +1 -1
  223. package/lib/components/Loader/index.js +19 -18
  224. package/lib/components/Loader/index.js.map +1 -1
  225. package/lib/components/Logo/index.js.map +1 -1
  226. package/lib/components/Modal/index.js +10 -10
  227. package/lib/components/Modal/index.js.map +1 -1
  228. package/lib/components/NotificationPanel/index.js +12 -9
  229. package/lib/components/NotificationPanel/index.js.map +1 -1
  230. package/lib/components/Panel/index.js +25 -24
  231. package/lib/components/Panel/index.js.map +1 -1
  232. package/lib/components/PanelList/index.js +3 -3
  233. package/lib/components/PanelList/index.js.map +1 -1
  234. package/lib/components/PopMenu/index.js +3 -3
  235. package/lib/components/PopMenu/index.js.map +1 -1
  236. package/lib/components/Portal/index.js.map +1 -1
  237. package/lib/components/Progressbar/index.js +7 -6
  238. package/lib/components/Progressbar/index.js.map +1 -1
  239. package/lib/components/PromoPanel/PromoPanel.d.ts +2 -2
  240. package/lib/components/PromoPanel/index.js +13 -9
  241. package/lib/components/PromoPanel/index.js.map +1 -1
  242. package/lib/components/RadioButton/RadioMarker/styles.module.scss +3 -9
  243. package/lib/components/ServiceMessage/index.js +6 -5
  244. package/lib/components/ServiceMessage/index.js.map +1 -1
  245. package/lib/components/SharingStatus/index.js +4 -4
  246. package/lib/components/SharingStatus/index.js.map +1 -1
  247. package/lib/components/Step/index.js +2 -2
  248. package/lib/components/Step/index.js.map +1 -1
  249. package/lib/components/Stepper/index.js +5 -3
  250. package/lib/components/Stepper/index.js.map +1 -1
  251. package/lib/components/StickyNote/index.js +8 -8
  252. package/lib/components/StickyNote/index.js.map +1 -1
  253. package/lib/components/Table/index.js +5 -8
  254. package/lib/components/Table/index.js.map +1 -1
  255. package/lib/components/Tabs/index.js +4 -4
  256. package/lib/components/Tabs/index.js.map +1 -1
  257. package/lib/components/Tag/index.js +3 -2
  258. package/lib/components/Tag/index.js.map +1 -1
  259. package/lib/components/TagList/index.js.map +1 -1
  260. package/lib/components/Tile/index.js +8 -7
  261. package/lib/components/Tile/index.js.map +1 -1
  262. package/lib/components/ToastList/index.js +3 -2
  263. package/lib/components/ToastList/index.js.map +1 -1
  264. package/lib/components/Toggle/index.js +13 -10
  265. package/lib/components/Toggle/index.js.map +1 -1
  266. package/lib/components/Validation/index.js +2 -2
  267. package/lib/components/Validation/index.js.map +1 -1
  268. package/lib/components/VisualCheckboxCloud/index.js +2 -2
  269. package/lib/components/VisualCheckboxCloud/index.js.map +1 -1
  270. package/lib/components/VisualCheckboxGroup/index.js +3 -3
  271. package/lib/components/VisualCheckboxGroup/index.js.map +1 -1
  272. package/lib/components/VisualContentgroupWithImage/index.js +2 -2
  273. package/lib/components/VisualContentgroupWithImage/index.js.map +1 -1
  274. package/lib/components/VisualRadioCloud/index.js +2 -2
  275. package/lib/components/VisualRadioCloud/index.js.map +1 -1
  276. package/lib/components/VisualRadioGroup/index.js +3 -3
  277. package/lib/components/VisualRadioGroup/index.js.map +1 -1
  278. package/lib/floating-ui.react.js +100 -117
  279. package/lib/floating-ui.react.js.map +1 -1
  280. package/lib/getFilterChips.js.map +1 -1
  281. package/lib/hooks/useBreakpoint.js.map +1 -1
  282. package/lib/hooks/useFocusableElements.js.map +1 -1
  283. package/lib/hooks/useIsVisible.js.map +1 -1
  284. package/lib/hooks/useOutsideEvent.js.map +1 -1
  285. package/lib/hooks/useResizeObserver.js.map +1 -1
  286. package/lib/hooks/useRovingFocus.js.map +1 -1
  287. package/lib/hooks/useSize.js.map +1 -1
  288. package/lib/index.js +1 -1
  289. package/lib/theme/spacers.js +2 -2
  290. package/lib/theme/spacers.js.map +1 -1
  291. package/lib/utils/focus.js.map +1 -1
  292. package/lib/utils/mobile.js.map +1 -1
  293. package/lib/utils/uuid.js +29 -2
  294. package/lib/utils/uuid.js.map +1 -0
  295. package/lib/utils2.js +7 -7
  296. package/lib/utils2.js.map +1 -1
  297. package/lib/utils5.js +2 -2
  298. package/lib/utils5.js.map +1 -1
  299. package/package.json +1 -1
  300. package/lib/uuid.js +0 -29
  301. package/lib/uuid.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"getFilterChips.js","names":[],"sources":["../src/components/Filter/getFilterChips/getFilterChips.tsx","../src/components/Filter/getFilterChips/index.ts"],"sourcesContent":["import type { FilterValues, UseFilterReturn } from '../useFilter';\n\nimport Chip from '../../Chip';\n\nexport interface GetFilterChipsArgs<T extends FilterValues> {\n /** The filter instance from useFilter */\n filter: UseFilterReturn<T>;\n /** Look up the display label for a filter key + value */\n getLabel: (key: keyof T, value: unknown) => string;\n /** Called when a chip is clicked (f.ex. to open the drawer at that filter category) */\n onChipClick: (key: keyof T, value: unknown) => void;\n /** Called when a chip's close button is clicked. If not provided, defaults to filter.removeFilter */\n onChipRemove?: (key: keyof T, value: unknown) => void;\n /** Called when the overflow chip is clicked */\n onOverflowChipClick: () => void;\n /** Function for mapping if close button is shown on chip or not */\n willShowCloseButton?: (key: keyof T, value?: unknown) => boolean;\n}\n\nfunction getFilterChips<T extends FilterValues>({\n filter,\n getLabel,\n onChipClick,\n onChipRemove,\n onOverflowChipClick,\n willShowCloseButton,\n}: GetFilterChipsArgs<T>): React.ReactNode[] {\n const maxVisible = 5;\n\n const allChips = Object.entries(filter.filters).flatMap(([key, raw]) => {\n const values = [raw ?? []].flat();\n return values.map(v => ({ key, value: v }));\n });\n\n const visibleChips = allChips.slice(0, maxVisible);\n const overflowCount = allChips.length - maxVisible;\n\n return [\n ...visibleChips.map(({ key, value: v }) => (\n <Chip\n key={`${key}-${v}`}\n onChipClick={() => onChipClick(key as keyof T, v)}\n onCloseClick={() => {\n if (onChipRemove) {\n onChipRemove(key as keyof T, v);\n } else {\n filter.removeFilter(key, v);\n }\n }}\n withCloseButton={willShowCloseButton?.(key, v)}\n >\n {getLabel(key as keyof T, v)}\n </Chip>\n )),\n ...(overflowCount > 0\n ? [<Chip key=\"overflow\" onChipClick={onOverflowChipClick} withCloseButton={false}>{`+${overflowCount}`}</Chip>]\n : []),\n ];\n}\n\nexport default getFilterChips;\n","import getFilterChips from './getFilterChips';\nexport * from './getFilterChips';\nexport default getFilterChips;\n"],"mappings":";;;AAmBA,SAAS,eAAuC,EAC9C,QACA,UACA,aACA,cACA,qBACA,uBAC2C;CAC3C,MAAM,aAAa;CAEnB,MAAM,WAAW,OAAO,QAAQ,OAAO,OAAO,EAAE,SAAS,CAAC,KAAK,SAAS;EAEtE,OADe,CAAC,OAAO,CAAC,CAAC,EAAE,KACpB,EAAO,KAAI,OAAM;GAAE;GAAK,OAAO;EAAE,EAAE;CAC5C,CAAC;CAED,MAAM,eAAe,SAAS,MAAM,GAAG,UAAU;CACjD,MAAM,gBAAgB,SAAS,SAAS;CAExC,OAAO,CACL,GAAG,aAAa,KAAK,EAAE,KAAK,OAAO,QACjC,oBAAC,cAAD;EAEE,mBAAmB,YAAY,KAAgB,CAAC;EAChD,oBAAoB;GAClB,IAAI,cACF,aAAa,KAAgB,CAAC;QAE9B,OAAO,aAAa,KAAK,CAAC;EAE9B;EACA,iBAAiB,sBAAsB,KAAK,CAAC;YAE5C,SAAS,KAAgB,CAAC;CACvB,GAZC,GAAG,IAAI,GAAG,GAYX,CACP,GACD,GAAI,gBAAgB,IAChB,CAAC,oBAAC,cAAD;EAAqB,aAAa;EAAqB,iBAAiB;YAAQ,IAAI;CAAsB,GAAhG,UAAgG,CAAC,IAC5G,CAAC,CACP;AACF;;;ACxDA,IAAA,yBAAe"}
1
+ {"version":3,"file":"getFilterChips.js","names":[],"sources":["../src/components/Filter/getFilterChips/getFilterChips.tsx","../src/components/Filter/getFilterChips/index.ts"],"sourcesContent":["import type { FilterValues, UseFilterReturn } from '../useFilter';\n\nimport Chip from '../../Chip';\n\nexport interface GetFilterChipsArgs<T extends FilterValues> {\n /** The filter instance from useFilter */\n filter: UseFilterReturn<T>;\n /** Look up the display label for a filter key + value */\n getLabel: (key: keyof T, value: unknown) => string;\n /** Called when a chip is clicked (f.ex. to open the drawer at that filter category) */\n onChipClick: (key: keyof T, value: unknown) => void;\n /** Called when a chip's close button is clicked. If not provided, defaults to filter.removeFilter */\n onChipRemove?: (key: keyof T, value: unknown) => void;\n /** Called when the overflow chip is clicked */\n onOverflowChipClick: () => void;\n /** Function for mapping if close button is shown on chip or not */\n willShowCloseButton?: (key: keyof T, value?: unknown) => boolean;\n}\n\nfunction getFilterChips<T extends FilterValues>({\n filter,\n getLabel,\n onChipClick,\n onChipRemove,\n onOverflowChipClick,\n willShowCloseButton,\n}: GetFilterChipsArgs<T>): React.ReactNode[] {\n const maxVisible = 5;\n\n const allChips = Object.entries(filter.filters).flatMap(([key, raw]) => {\n const values = [raw ?? []].flat();\n return values.map(v => ({ key, value: v }));\n });\n\n const visibleChips = allChips.slice(0, maxVisible);\n const overflowCount = allChips.length - maxVisible;\n\n return [\n ...visibleChips.map(({ key, value: v }) => (\n <Chip\n key={`${key}-${v}`}\n onChipClick={() => onChipClick(key as keyof T, v)}\n onCloseClick={() => {\n if (onChipRemove) {\n onChipRemove(key as keyof T, v);\n } else {\n filter.removeFilter(key, v);\n }\n }}\n withCloseButton={willShowCloseButton?.(key, v)}\n >\n {getLabel(key as keyof T, v)}\n </Chip>\n )),\n ...(overflowCount > 0\n ? [<Chip key=\"overflow\" onChipClick={onOverflowChipClick} withCloseButton={false}>{`+${overflowCount}`}</Chip>]\n : []),\n ];\n}\n\nexport default getFilterChips;\n","import getFilterChips from './getFilterChips';\nexport * from './getFilterChips';\nexport default getFilterChips;\n"],"mappings":";;;AAmBA,SAAS,eAAuC,EAC9C,QACA,UACA,aACA,cACA,qBACA,uBAC2C;CAC3C,MAAM,aAAa;CAEnB,MAAM,WAAW,OAAO,QAAQ,OAAO,OAAO,CAAC,CAAC,SAAS,CAAC,KAAK,SAAS;EAEtE,OADe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KACpB,CAAA,CAAO,KAAI,OAAM;GAAE;GAAK,OAAO;EAAE,EAAE;CAC5C,CAAC;CAED,MAAM,eAAe,SAAS,MAAM,GAAG,UAAU;CACjD,MAAM,gBAAgB,SAAS,SAAS;CAExC,OAAO,CACL,GAAG,aAAa,KAAK,EAAE,KAAK,OAAO,QACjC,oBAAC,cAAD;EAEE,mBAAmB,YAAY,KAAgB,CAAC;EAChD,oBAAoB;GAClB,IAAI,cACF,aAAa,KAAgB,CAAC;QAE9B,OAAO,aAAa,KAAK,CAAC;EAE9B;EACA,iBAAiB,sBAAsB,KAAK,CAAC;EAE5C,UAAA,SAAS,KAAgB,CAAC;CACvB,GAZC,GAAG,IAAI,GAAG,GAYX,CACP,GACD,GAAI,gBAAgB,IAChB,CAAC,oBAAC,cAAD;EAAqB,aAAa;EAAqB,iBAAiB;EAAQ,UAAA,IAAI;CAAsB,GAAhG,UAAgG,CAAC,IAC5G,CAAC,CACP;AACF;;;ACxDA,IAAA,yBAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBreakpoint.js","names":[],"sources":["../../src/hooks/useBreakpoint.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nimport { breakpoints, screen } from '../theme/grid';\n\nexport enum Breakpoint {\n xxs = breakpoints.xxs,\n xs = breakpoints.xs,\n sm = breakpoints.sm,\n md = breakpoints.md,\n lg = breakpoints.lg,\n xl = breakpoints.xl,\n}\n\n/** Sjekker nettleserens media queries fra største til minste; det høyeste treffet gjelder */\nfunction getCurrentBreakpoint(): Breakpoint {\n const mediaQueryList = Object.entries(screen)\n .reverse() // Sjekk xl, lg, md, osv. i synkende rekkefølge\n .map(([size, mediaQuery]) => {\n return {\n breakpoint: Breakpoint[size as keyof typeof Breakpoint],\n mq: window.matchMedia(mediaQuery),\n };\n });\n\n const matched = mediaQueryList.find(entry => entry.mq.matches);\n return matched?.breakpoint ?? Breakpoint.xxs;\n}\n\n/** Event listeners for media queries - dette varslet React ved endringer */\nfunction subscribeToBreakpointChanges(callback: () => void): () => void {\n const mediaQueryList = Object.values(screen).map(mediaQuery => {\n const mq = window.matchMedia(mediaQuery);\n mq.addEventListener('change', callback);\n return mq;\n });\n\n return (): void => {\n mediaQueryList.forEach(mq => {\n mq.removeEventListener('change', callback);\n });\n };\n}\n\n/** Brukes ved server side rendering der window ikke finnes. Returnerer minste breakpoint som default */\nconst getServerSnapshot = (): Breakpoint => Breakpoint.xxs;\n\nexport const useBreakpoint = (): Breakpoint => {\n return useSyncExternalStore(subscribeToBreakpointChanges, getCurrentBreakpoint, getServerSnapshot);\n};\n"],"mappings":";;;AAIA,IAAY,aAAL,yBAAA,YAAA;CACL,WAAA,WAAA,SAAM,YAAY,OAAA;CAClB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;;AACnB,EAAA,CAAA,CAAA;;AAGA,SAAS,uBAAmC;CAW1C,OAVuB,OAAO,QAAQ,MAAM,EACzC,QAAQ,EACR,KAAK,CAAC,MAAM,gBAAgB;EAC3B,OAAO;GACL,YAAY,WAAW;GACvB,IAAI,OAAO,WAAW,UAAU;EAClC;CACF,CAEc,EAAe,MAAK,UAAS,MAAM,GAAG,OAC/C,GAAS,cAAc,WAAW;AAC3C;;AAGA,SAAS,6BAA6B,UAAkC;CACtE,MAAM,iBAAiB,OAAO,OAAO,MAAM,EAAE,KAAI,eAAc;EAC7D,MAAM,KAAK,OAAO,WAAW,UAAU;EACvC,GAAG,iBAAiB,UAAU,QAAQ;EACtC,OAAO;CACT,CAAC;CAED,aAAmB;EACjB,eAAe,SAAQ,OAAM;GAC3B,GAAG,oBAAoB,UAAU,QAAQ;EAC3C,CAAC;CACH;AACF;;AAGA,IAAM,0BAAsC,WAAW;AAEvD,IAAa,sBAAkC;CAC7C,OAAO,qBAAqB,8BAA8B,sBAAsB,iBAAiB;AACnG"}
1
+ {"version":3,"file":"useBreakpoint.js","names":[],"sources":["../../src/hooks/useBreakpoint.ts"],"sourcesContent":["import { useSyncExternalStore } from 'react';\n\nimport { breakpoints, screen } from '../theme/grid';\n\nexport enum Breakpoint {\n xxs = breakpoints.xxs,\n xs = breakpoints.xs,\n sm = breakpoints.sm,\n md = breakpoints.md,\n lg = breakpoints.lg,\n xl = breakpoints.xl,\n}\n\n/** Sjekker nettleserens media queries fra største til minste; det høyeste treffet gjelder */\nfunction getCurrentBreakpoint(): Breakpoint {\n const mediaQueryList = Object.entries(screen)\n .reverse() // Sjekk xl, lg, md, osv. i synkende rekkefølge\n .map(([size, mediaQuery]) => {\n return {\n breakpoint: Breakpoint[size as keyof typeof Breakpoint],\n mq: window.matchMedia(mediaQuery),\n };\n });\n\n const matched = mediaQueryList.find(entry => entry.mq.matches);\n return matched?.breakpoint ?? Breakpoint.xxs;\n}\n\n/** Event listeners for media queries - dette varslet React ved endringer */\nfunction subscribeToBreakpointChanges(callback: () => void): () => void {\n const mediaQueryList = Object.values(screen).map(mediaQuery => {\n const mq = window.matchMedia(mediaQuery);\n mq.addEventListener('change', callback);\n return mq;\n });\n\n return (): void => {\n mediaQueryList.forEach(mq => {\n mq.removeEventListener('change', callback);\n });\n };\n}\n\n/** Brukes ved server side rendering der window ikke finnes. Returnerer minste breakpoint som default */\nconst getServerSnapshot = (): Breakpoint => Breakpoint.xxs;\n\nexport const useBreakpoint = (): Breakpoint => {\n return useSyncExternalStore(subscribeToBreakpointChanges, getCurrentBreakpoint, getServerSnapshot);\n};\n"],"mappings":";;;AAIA,IAAY,aAAL,yBAAA,YAAA;CACL,WAAA,WAAA,SAAM,YAAY,OAAA;CAClB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;CACjB,WAAA,WAAA,QAAK,YAAY,MAAA;;AACnB,EAAA,CAAA,CAAA;;AAGA,SAAS,uBAAmC;CAW1C,OAVuB,OAAO,QAAQ,MAAM,CAAC,CAC1C,QAAQ,CAAC,CACT,KAAK,CAAC,MAAM,gBAAgB;EAC3B,OAAO;GACL,YAAY,WAAW;GACvB,IAAI,OAAO,WAAW,UAAU;EAClC;CACF,CAEc,CAAA,CAAe,MAAK,UAAS,MAAM,GAAG,OAC/C,CAAA,EAAS,cAAc,WAAW;AAC3C;;AAGA,SAAS,6BAA6B,UAAkC;CACtE,MAAM,iBAAiB,OAAO,OAAO,MAAM,CAAC,CAAC,KAAI,eAAc;EAC7D,MAAM,KAAK,OAAO,WAAW,UAAU;EACvC,GAAG,iBAAiB,UAAU,QAAQ;EACtC,OAAO;CACT,CAAC;CAED,aAAmB;EACjB,eAAe,SAAQ,OAAM;GAC3B,GAAG,oBAAoB,UAAU,QAAQ;EAC3C,CAAC;CACH;AACF;;AAGA,IAAM,0BAAsC,WAAW;AAEvD,IAAa,sBAAkC;CAC7C,OAAO,qBAAqB,8BAA8B,sBAAsB,iBAAiB;AACnG"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFocusableElements.js","names":[],"sources":["../../src/hooks/useFocusableElements.ts"],"sourcesContent":["import { useElementList } from './useElementList';\n\n// Fra https://github.com/KittyGiraudel/focusable-selectors\nexport const FOCUSABLE_SELECTORS = [\n 'a[href]:not([tabindex^=\"-\"])',\n 'area[href]:not([tabindex^=\"-\"])',\n 'input:not([type=\"hidden\"]):not([type=\"radio\"]):not([disabled]):not([tabindex^=\"-\"])',\n 'input[type=\"radio\"]:not([disabled]):not([tabindex^=\"-\"])',\n 'select:not([disabled]):not([tabindex^=\"-\"])',\n 'textarea:not([disabled]):not([tabindex^=\"-\"])',\n 'button:not([disabled]):not([tabindex^=\"-\"])',\n 'iframe:not([tabindex^=\"-\"])',\n 'audio[controls]:not([tabindex^=\"-\"])',\n 'video[controls]:not([tabindex^=\"-\"])',\n '[contenteditable]:not([tabindex^=\"-\"])',\n '[tabindex]:not([tabindex^=\"-\"])',\n].join(',');\n\n/**\n * Overvåk et element og finn alle fokuserbare elementer inne i elementet. Bruker MutationObserver slik at eventuelle\n * nye elementer som legges til også vil inkluderes i listen.\n * @param ref Element som skal observeres\n * @returns Liste med fokuserbare HTML-elementer\n */\nexport const useFocusableElements = (ref: React.RefObject<HTMLElement | null>): NodeListOf<HTMLElement> | undefined =>\n useElementList(ref, FOCUSABLE_SELECTORS, { attributeFilter: ['href', 'tabindex', 'type', 'disabled', 'controls', 'contenteditable'] });\n"],"mappings":";;AAGA,IAAa,sBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,EAAE,KAAK,GAAG;;;;;;;AAQV,IAAa,wBAAwB,QACnC,eAAe,KAAK,qBAAqB,EAAE,iBAAiB;CAAC;CAAQ;CAAY;CAAQ;CAAY;CAAY;AAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"useFocusableElements.js","names":[],"sources":["../../src/hooks/useFocusableElements.ts"],"sourcesContent":["import { useElementList } from './useElementList';\n\n// Fra https://github.com/KittyGiraudel/focusable-selectors\nexport const FOCUSABLE_SELECTORS = [\n 'a[href]:not([tabindex^=\"-\"])',\n 'area[href]:not([tabindex^=\"-\"])',\n 'input:not([type=\"hidden\"]):not([type=\"radio\"]):not([disabled]):not([tabindex^=\"-\"])',\n 'input[type=\"radio\"]:not([disabled]):not([tabindex^=\"-\"])',\n 'select:not([disabled]):not([tabindex^=\"-\"])',\n 'textarea:not([disabled]):not([tabindex^=\"-\"])',\n 'button:not([disabled]):not([tabindex^=\"-\"])',\n 'iframe:not([tabindex^=\"-\"])',\n 'audio[controls]:not([tabindex^=\"-\"])',\n 'video[controls]:not([tabindex^=\"-\"])',\n '[contenteditable]:not([tabindex^=\"-\"])',\n '[tabindex]:not([tabindex^=\"-\"])',\n].join(',');\n\n/**\n * Overvåk et element og finn alle fokuserbare elementer inne i elementet. Bruker MutationObserver slik at eventuelle\n * nye elementer som legges til også vil inkluderes i listen.\n * @param ref Element som skal observeres\n * @returns Liste med fokuserbare HTML-elementer\n */\nexport const useFocusableElements = (ref: React.RefObject<HTMLElement | null>): NodeListOf<HTMLElement> | undefined =>\n useElementList(ref, FOCUSABLE_SELECTORS, { attributeFilter: ['href', 'tabindex', 'type', 'disabled', 'controls', 'contenteditable'] });\n"],"mappings":";;AAGA,IAAa,sBAAsB;CACjC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF,CAAC,CAAC,KAAK,GAAG;;;;;;;AAQV,IAAa,wBAAwB,QACnC,eAAe,KAAK,qBAAqB,EAAE,iBAAiB;CAAC;CAAQ;CAAY;CAAQ;CAAY;CAAY;AAAiB,EAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useIsVisible.js","names":[],"sources":["../../src/hooks/useIsVisible.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useIntersectionObserver } from './useIntersectionObserver';\n\n/**\n * Sjekk om et HTML-element er synlig i vinduet, eller ikke.\n *\n * @param ref Element som skal observeres\n * @param threshold Hvor synlig må elementet være? Default = 1 (helt synlig)\n * @param options Objekt med options for IntersectionObserver, f.eks. threshold for å bestemme når callbacken skal fyres\n * @param initial Om elementet default skal antas å være synlig eller ikke. Default: ikke synlig\n * @returns true hvis objektet er synlig lik threshold eller mer, false hvis ikke\n */\nexport const useIsVisible = (\n ref: React.RefObject<Element | null>,\n threshold = 1,\n options?: IntersectionObserverInit,\n initial = false\n): boolean => {\n const [isVisible, setIsVisible] = useState(initial);\n\n const handleIntersectChange: IntersectionObserverCallback = entries => {\n setIsVisible(threshold === 0 ? entries[0].intersectionRatio !== threshold : entries[0].intersectionRatio >= threshold);\n };\n\n useIntersectionObserver(ref, handleIntersectChange, { threshold, ...options });\n\n return isVisible;\n};\n"],"mappings":";;;;;;;;;;;;AAaA,IAAa,gBACX,KACA,YAAY,GACZ,SACA,UAAU,UACE;CACZ,MAAM,CAAC,WAAW,gBAAgB,SAAS,OAAO;CAElD,MAAM,yBAAsD,YAAW;EACrE,aAAa,cAAc,IAAI,QAAQ,GAAG,sBAAsB,YAAY,QAAQ,GAAG,qBAAqB,SAAS;CACvH;CAEA,wBAAwB,KAAK,uBAAuB;EAAE;EAAW,GAAG;CAAQ,CAAC;CAE7E,OAAO;AACT"}
1
+ {"version":3,"file":"useIsVisible.js","names":[],"sources":["../../src/hooks/useIsVisible.ts"],"sourcesContent":["import { useState } from 'react';\n\nimport { useIntersectionObserver } from './useIntersectionObserver';\n\n/**\n * Sjekk om et HTML-element er synlig i vinduet, eller ikke.\n *\n * @param ref Element som skal observeres\n * @param threshold Hvor synlig må elementet være? Default = 1 (helt synlig)\n * @param options Objekt med options for IntersectionObserver, f.eks. threshold for å bestemme når callbacken skal fyres\n * @param initial Om elementet default skal antas å være synlig eller ikke. Default: ikke synlig\n * @returns true hvis objektet er synlig lik threshold eller mer, false hvis ikke\n */\nexport const useIsVisible = (\n ref: React.RefObject<Element | null>,\n threshold = 1,\n options?: IntersectionObserverInit,\n initial = false\n): boolean => {\n const [isVisible, setIsVisible] = useState(initial);\n\n const handleIntersectChange: IntersectionObserverCallback = entries => {\n setIsVisible(threshold === 0 ? entries[0].intersectionRatio !== threshold : entries[0].intersectionRatio >= threshold);\n };\n\n useIntersectionObserver(ref, handleIntersectChange, { threshold, ...options });\n\n return isVisible;\n};\n"],"mappings":";;;;;;;;;;;;AAaA,IAAa,gBACX,KACA,YAAY,GACZ,SACA,UAAU,UACE;CACZ,MAAM,CAAC,WAAW,gBAAgB,SAAS,OAAO;CAElD,MAAM,yBAAsD,YAAW;EACrE,aAAa,cAAc,IAAI,QAAQ,EAAE,CAAC,sBAAsB,YAAY,QAAQ,EAAE,CAAC,qBAAqB,SAAS;CACvH;CAEA,wBAAwB,KAAK,uBAAuB;EAAE;EAAW,GAAG;CAAQ,CAAC;CAE7E,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useOutsideEvent.js","names":[],"sources":["../../src/hooks/useOutsideEvent.ts"],"sourcesContent":["import { useEffect } from 'react';\n\ntype OutsideEvents = {\n [K in keyof DocumentEventMap]: DocumentEventMap[K] extends MouseEvent | FocusEvent ? K : never;\n}[keyof DocumentEventMap];\n\n/**\n * Custom hook for klikk eller fokus utenfor et gitt element (eller flere elementer)\n * @param ref Sjekker om det klikkes utenfor dette elementet/elementene\n * @param callback Callback-funksjon ved klikk utenfor elementet/elementene\n * @param events Type eventer å lytte på. Default: mousedown\n */\nexport const useOutsideEvent = (\n ref: React.RefObject<HTMLElement | null> | React.RefObject<HTMLElement | null>[],\n callback: (event: MouseEvent | FocusEvent) => void,\n events: OutsideEvents[] = ['mousedown']\n): void => {\n const refArray = Array.isArray(ref) ? ref : [ref];\n\n const handleOutsideEvent = (event: MouseEvent | FocusEvent): void => {\n if (refArray.every(r => r.current && !event.composedPath().includes(r.current))) {\n callback(event);\n }\n };\n\n useEffect(() => {\n events.forEach(eventName => document.addEventListener(eventName, handleOutsideEvent));\n\n return (): void => {\n events.forEach(eventName => document.removeEventListener(eventName, handleOutsideEvent));\n };\n }, [refArray, callback, events]);\n};\n"],"mappings":";;;;;;;;AAYA,IAAa,mBACX,KACA,UACA,SAA0B,CAAC,WAAW,MAC7B;CACT,MAAM,WAAW,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;CAEhD,MAAM,sBAAsB,UAAyC;EACnE,IAAI,SAAS,OAAM,MAAK,EAAE,WAAW,CAAC,MAAM,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,GAC5E,SAAS,KAAK;CAElB;CAEA,gBAAgB;EACd,OAAO,SAAQ,cAAa,SAAS,iBAAiB,WAAW,kBAAkB,CAAC;EAEpF,aAAmB;GACjB,OAAO,SAAQ,cAAa,SAAS,oBAAoB,WAAW,kBAAkB,CAAC;EACzF;CACF,GAAG;EAAC;EAAU;EAAU;CAAM,CAAC;AACjC"}
1
+ {"version":3,"file":"useOutsideEvent.js","names":[],"sources":["../../src/hooks/useOutsideEvent.ts"],"sourcesContent":["import { useEffect } from 'react';\n\ntype OutsideEvents = {\n [K in keyof DocumentEventMap]: DocumentEventMap[K] extends MouseEvent | FocusEvent ? K : never;\n}[keyof DocumentEventMap];\n\n/**\n * Custom hook for klikk eller fokus utenfor et gitt element (eller flere elementer)\n * @param ref Sjekker om det klikkes utenfor dette elementet/elementene\n * @param callback Callback-funksjon ved klikk utenfor elementet/elementene\n * @param events Type eventer å lytte på. Default: mousedown\n */\nexport const useOutsideEvent = (\n ref: React.RefObject<HTMLElement | null> | React.RefObject<HTMLElement | null>[],\n callback: (event: MouseEvent | FocusEvent) => void,\n events: OutsideEvents[] = ['mousedown']\n): void => {\n const refArray = Array.isArray(ref) ? ref : [ref];\n\n const handleOutsideEvent = (event: MouseEvent | FocusEvent): void => {\n if (refArray.every(r => r.current && !event.composedPath().includes(r.current))) {\n callback(event);\n }\n };\n\n useEffect(() => {\n events.forEach(eventName => document.addEventListener(eventName, handleOutsideEvent));\n\n return (): void => {\n events.forEach(eventName => document.removeEventListener(eventName, handleOutsideEvent));\n };\n }, [refArray, callback, events]);\n};\n"],"mappings":";;;;;;;;AAYA,IAAa,mBACX,KACA,UACA,SAA0B,CAAC,WAAW,MAC7B;CACT,MAAM,WAAW,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC,GAAG;CAEhD,MAAM,sBAAsB,UAAyC;EACnE,IAAI,SAAS,OAAM,MAAK,EAAE,WAAW,CAAC,MAAM,aAAa,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,GAC5E,SAAS,KAAK;CAElB;CAEA,gBAAgB;EACd,OAAO,SAAQ,cAAa,SAAS,iBAAiB,WAAW,kBAAkB,CAAC;EAEpF,aAAmB;GACjB,OAAO,SAAQ,cAAa,SAAS,oBAAoB,WAAW,kBAAkB,CAAC;EACzF;CACF,GAAG;EAAC;EAAU;EAAU;CAAM,CAAC;AACjC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useResizeObserver.js","names":[],"sources":["../../src/hooks/useResizeObserver.ts"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\n\n/**\n * Lytt på endringer i størrelse på et element. Bruker ResizeObserver-APIet.\n *\n * @param ref Element som skal observeres.\n * @returns Object med høyde, bredde, x og y til elementet\n */\nexport const useResizeObserver = (ref?: React.RefObject<HTMLElement | null>): DOMRect | undefined => {\n const ticking = useRef(false);\n const [size, setSize] = useState<DOMRect>();\n useEffect(() => {\n const resizeObserver = new ResizeObserver(entries => {\n if (!ticking.current) {\n window.requestAnimationFrame(() => {\n setSize(entries[0].target.getBoundingClientRect());\n ticking.current = false;\n });\n }\n ticking.current = true;\n });\n if (ref?.current) {\n resizeObserver.observe(ref?.current);\n }\n\n return (): void => {\n if (ref?.current) {\n resizeObserver.unobserve(ref.current);\n } else {\n resizeObserver.disconnect();\n }\n };\n }, [ref]);\n\n return size;\n};\n"],"mappings":";;;;;;;;AAQA,IAAa,qBAAqB,QAAmE;CACnG,MAAM,UAAU,OAAO,KAAK;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAkB;CAC1C,gBAAgB;EACd,MAAM,iBAAiB,IAAI,gBAAe,YAAW;GACnD,IAAI,CAAC,QAAQ,SACX,OAAO,4BAA4B;IACjC,QAAQ,QAAQ,GAAG,OAAO,sBAAsB,CAAC;IACjD,QAAQ,UAAU;GACpB,CAAC;GAEH,QAAQ,UAAU;EACpB,CAAC;EACD,IAAI,KAAK,SACP,eAAe,QAAQ,KAAK,OAAO;EAGrC,aAAmB;GACjB,IAAI,KAAK,SACP,eAAe,UAAU,IAAI,OAAO;QAEpC,eAAe,WAAW;EAE9B;CACF,GAAG,CAAC,GAAG,CAAC;CAER,OAAO;AACT"}
1
+ {"version":3,"file":"useResizeObserver.js","names":[],"sources":["../../src/hooks/useResizeObserver.ts"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\n\n/**\n * Lytt på endringer i størrelse på et element. Bruker ResizeObserver-APIet.\n *\n * @param ref Element som skal observeres.\n * @returns Object med høyde, bredde, x og y til elementet\n */\nexport const useResizeObserver = (ref?: React.RefObject<HTMLElement | null>): DOMRect | undefined => {\n const ticking = useRef(false);\n const [size, setSize] = useState<DOMRect>();\n useEffect(() => {\n const resizeObserver = new ResizeObserver(entries => {\n if (!ticking.current) {\n window.requestAnimationFrame(() => {\n setSize(entries[0].target.getBoundingClientRect());\n ticking.current = false;\n });\n }\n ticking.current = true;\n });\n if (ref?.current) {\n resizeObserver.observe(ref?.current);\n }\n\n return (): void => {\n if (ref?.current) {\n resizeObserver.unobserve(ref.current);\n } else {\n resizeObserver.disconnect();\n }\n };\n }, [ref]);\n\n return size;\n};\n"],"mappings":";;;;;;;;AAQA,IAAa,qBAAqB,QAAmE;CACnG,MAAM,UAAU,OAAO,KAAK;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAkB;CAC1C,gBAAgB;EACd,MAAM,iBAAiB,IAAI,gBAAe,YAAW;GACnD,IAAI,CAAC,QAAQ,SACX,OAAO,4BAA4B;IACjC,QAAQ,QAAQ,EAAE,CAAC,OAAO,sBAAsB,CAAC;IACjD,QAAQ,UAAU;GACpB,CAAC;GAEH,QAAQ,UAAU;EACpB,CAAC;EACD,IAAI,KAAK,SACP,eAAe,QAAQ,KAAK,OAAO;EAGrC,aAAmB;GACjB,IAAI,KAAK,SACP,eAAe,UAAU,IAAI,OAAO;QAEpC,eAAe,WAAW;EAE9B;CACF,GAAG,CAAC,GAAG,CAAC;CAER,OAAO;AACT"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRovingFocus.js","names":[],"sources":["../../src/hooks/useRovingFocus.tsx"],"sourcesContent":["// Inspiration from https://www.joshuawootonn.com/react-roving-tabindex\nimport { useEffect } from 'react';\n\nimport { useKeyboardEvent } from './useKeyboardEvent';\nimport { KeyboardEventKey } from '../constants';\n\nexport const useRovingFocus = (\n /** Function to run when new index is set */\n handleNewIndex: (index: number) => void,\n /** List of elements that should have rocing focus */\n inputRefList: React.RefObject<React.RefObject<HTMLElement | null>[] | null | undefined>,\n /** Ref of container that should have the keyboard event handler */\n containerRef: React.RefObject<HTMLElement | null>,\n /** Indicated wether right/left or up/down arrows should be used for navigation. Default is up/down. */\n leftRightNavigation?: boolean\n): void => {\n leftRightNavigation = leftRightNavigation ?? false;\n\n // Initialize only first index to be tabbable\n useEffect(() => {\n if (!inputRefList.current) {\n return;\n }\n inputRefList.current.forEach(ref => {\n ref.current?.setAttribute('tabIndex', '-1');\n });\n inputRefList.current[0]?.current?.setAttribute('tabIndex', '0');\n }, []);\n\n const handleKeyboardNavigation = (event: KeyboardEvent): void => {\n if (event.key === KeyboardEventKey.Tab) {\n return;\n }\n event.preventDefault();\n\n if (!inputRefList.current) {\n return;\n }\n const index = inputRefList.current.findIndex(x => x.current === event.target);\n let nextIndex = index;\n\n if (event.key === KeyboardEventKey.Home) {\n nextIndex = 0;\n } else if (event.key === KeyboardEventKey.End) {\n nextIndex = inputRefList.current.length - 1;\n } else if (\n (event.key === KeyboardEventKey.ArrowDown || event.key === KeyboardEventKey.ArrowRight) &&\n index < inputRefList.current.length - 1\n ) {\n nextIndex = index + 1;\n } else if ((event.key === KeyboardEventKey.ArrowUp || event.key === KeyboardEventKey.ArrowLeft) && index > 0) {\n nextIndex = index - 1;\n } else if (event.key === KeyboardEventKey.Enter || event.key === KeyboardEventKey.Space) {\n nextIndex = index;\n }\n\n if (nextIndex !== -1) {\n inputRefList.current?.forEach((ref, i) => {\n if (ref.current) {\n ref.current.tabIndex = i === nextIndex ? 0 : -1;\n }\n });\n inputRefList.current[nextIndex]?.current?.focus();\n inputRefList.current[nextIndex]?.current?.click?.();\n handleNewIndex(nextIndex);\n }\n };\n\n const commonKeys = [KeyboardEventKey.End, KeyboardEventKey.Enter, KeyboardEventKey.Escape, KeyboardEventKey.Home];\n\n const arrowKeys = leftRightNavigation\n ? [KeyboardEventKey.ArrowRight, KeyboardEventKey.ArrowLeft]\n : [KeyboardEventKey.ArrowUp, KeyboardEventKey.ArrowDown];\n\n useKeyboardEvent(containerRef, handleKeyboardNavigation, [...commonKeys, ...arrowKeys]);\n};\n"],"mappings":";;;;AAMA,IAAa,kBAEX,gBAEA,cAEA,cAEA,wBACS;CACT,sBAAsB,uBAAuB;CAG7C,gBAAgB;EACd,IAAI,CAAC,aAAa,SAChB;EAEF,aAAa,QAAQ,SAAQ,QAAO;GAClC,IAAI,SAAS,aAAa,YAAY,IAAI;EAC5C,CAAC;EACD,aAAa,QAAQ,IAAI,SAAS,aAAa,YAAY,GAAG;CAChE,GAAG,CAAC,CAAC;CAEL,MAAM,4BAA4B,UAA+B;EAC/D,IAAI,MAAM,QAAQ,iBAAiB,KACjC;EAEF,MAAM,eAAe;EAErB,IAAI,CAAC,aAAa,SAChB;EAEF,MAAM,QAAQ,aAAa,QAAQ,WAAU,MAAK,EAAE,YAAY,MAAM,MAAM;EAC5E,IAAI,YAAY;EAEhB,IAAI,MAAM,QAAQ,iBAAiB,MACjC,YAAY;OACP,IAAI,MAAM,QAAQ,iBAAiB,KACxC,YAAY,aAAa,QAAQ,SAAS;OACrC,KACJ,MAAM,QAAQ,iBAAiB,aAAa,MAAM,QAAQ,iBAAiB,eAC5E,QAAQ,aAAa,QAAQ,SAAS,GAEtC,YAAY,QAAQ;OACf,KAAK,MAAM,QAAQ,iBAAiB,WAAW,MAAM,QAAQ,iBAAiB,cAAc,QAAQ,GACzG,YAAY,QAAQ;OACf,IAAI,MAAM,QAAQ,iBAAiB,SAAS,MAAM,QAAQ,iBAAiB,OAChF,YAAY;EAGd,IAAI,cAAc,IAAI;GACpB,aAAa,SAAS,SAAS,KAAK,MAAM;IACxC,IAAI,IAAI,SACN,IAAI,QAAQ,WAAW,MAAM,YAAY,IAAI;GAEjD,CAAC;GACD,aAAa,QAAQ,YAAY,SAAS,MAAM;GAChD,aAAa,QAAQ,YAAY,SAAS,QAAQ;GAClD,eAAe,SAAS;EAC1B;CACF;CAEA,MAAM,aAAa;EAAC,iBAAiB;EAAK,iBAAiB;EAAO,iBAAiB;EAAQ,iBAAiB;CAAI;CAEhH,MAAM,YAAY,sBACd,CAAC,iBAAiB,YAAY,iBAAiB,SAAS,IACxD,CAAC,iBAAiB,SAAS,iBAAiB,SAAS;CAEzD,iBAAiB,cAAc,0BAA0B,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC;AACxF"}
1
+ {"version":3,"file":"useRovingFocus.js","names":[],"sources":["../../src/hooks/useRovingFocus.tsx"],"sourcesContent":["// Inspiration from https://www.joshuawootonn.com/react-roving-tabindex\nimport { useEffect } from 'react';\n\nimport { useKeyboardEvent } from './useKeyboardEvent';\nimport { KeyboardEventKey } from '../constants';\n\nexport const useRovingFocus = (\n /** Function to run when new index is set */\n handleNewIndex: (index: number) => void,\n /** List of elements that should have rocing focus */\n inputRefList: React.RefObject<React.RefObject<HTMLElement | null>[] | null | undefined>,\n /** Ref of container that should have the keyboard event handler */\n containerRef: React.RefObject<HTMLElement | null>,\n /** Indicated wether right/left or up/down arrows should be used for navigation. Default is up/down. */\n leftRightNavigation?: boolean\n): void => {\n leftRightNavigation = leftRightNavigation ?? false;\n\n // Initialize only first index to be tabbable\n useEffect(() => {\n if (!inputRefList.current) {\n return;\n }\n inputRefList.current.forEach(ref => {\n ref.current?.setAttribute('tabIndex', '-1');\n });\n inputRefList.current[0]?.current?.setAttribute('tabIndex', '0');\n }, []);\n\n const handleKeyboardNavigation = (event: KeyboardEvent): void => {\n if (event.key === KeyboardEventKey.Tab) {\n return;\n }\n event.preventDefault();\n\n if (!inputRefList.current) {\n return;\n }\n const index = inputRefList.current.findIndex(x => x.current === event.target);\n let nextIndex = index;\n\n if (event.key === KeyboardEventKey.Home) {\n nextIndex = 0;\n } else if (event.key === KeyboardEventKey.End) {\n nextIndex = inputRefList.current.length - 1;\n } else if (\n (event.key === KeyboardEventKey.ArrowDown || event.key === KeyboardEventKey.ArrowRight) &&\n index < inputRefList.current.length - 1\n ) {\n nextIndex = index + 1;\n } else if ((event.key === KeyboardEventKey.ArrowUp || event.key === KeyboardEventKey.ArrowLeft) && index > 0) {\n nextIndex = index - 1;\n } else if (event.key === KeyboardEventKey.Enter || event.key === KeyboardEventKey.Space) {\n nextIndex = index;\n }\n\n if (nextIndex !== -1) {\n inputRefList.current?.forEach((ref, i) => {\n if (ref.current) {\n ref.current.tabIndex = i === nextIndex ? 0 : -1;\n }\n });\n inputRefList.current[nextIndex]?.current?.focus();\n inputRefList.current[nextIndex]?.current?.click?.();\n handleNewIndex(nextIndex);\n }\n };\n\n const commonKeys = [KeyboardEventKey.End, KeyboardEventKey.Enter, KeyboardEventKey.Escape, KeyboardEventKey.Home];\n\n const arrowKeys = leftRightNavigation\n ? [KeyboardEventKey.ArrowRight, KeyboardEventKey.ArrowLeft]\n : [KeyboardEventKey.ArrowUp, KeyboardEventKey.ArrowDown];\n\n useKeyboardEvent(containerRef, handleKeyboardNavigation, [...commonKeys, ...arrowKeys]);\n};\n"],"mappings":";;;;AAMA,IAAa,kBAEX,gBAEA,cAEA,cAEA,wBACS;CACT,sBAAsB,uBAAuB;CAG7C,gBAAgB;EACd,IAAI,CAAC,aAAa,SAChB;EAEF,aAAa,QAAQ,SAAQ,QAAO;GAClC,IAAI,SAAS,aAAa,YAAY,IAAI;EAC5C,CAAC;EACD,aAAa,QAAQ,EAAE,EAAE,SAAS,aAAa,YAAY,GAAG;CAChE,GAAG,CAAC,CAAC;CAEL,MAAM,4BAA4B,UAA+B;EAC/D,IAAI,MAAM,QAAQ,iBAAiB,KACjC;EAEF,MAAM,eAAe;EAErB,IAAI,CAAC,aAAa,SAChB;EAEF,MAAM,QAAQ,aAAa,QAAQ,WAAU,MAAK,EAAE,YAAY,MAAM,MAAM;EAC5E,IAAI,YAAY;EAEhB,IAAI,MAAM,QAAQ,iBAAiB,MACjC,YAAY;OACP,IAAI,MAAM,QAAQ,iBAAiB,KACxC,YAAY,aAAa,QAAQ,SAAS;OACrC,KACJ,MAAM,QAAQ,iBAAiB,aAAa,MAAM,QAAQ,iBAAiB,eAC5E,QAAQ,aAAa,QAAQ,SAAS,GAEtC,YAAY,QAAQ;OACf,KAAK,MAAM,QAAQ,iBAAiB,WAAW,MAAM,QAAQ,iBAAiB,cAAc,QAAQ,GACzG,YAAY,QAAQ;OACf,IAAI,MAAM,QAAQ,iBAAiB,SAAS,MAAM,QAAQ,iBAAiB,OAChF,YAAY;EAGd,IAAI,cAAc,IAAI;GACpB,aAAa,SAAS,SAAS,KAAK,MAAM;IACxC,IAAI,IAAI,SACN,IAAI,QAAQ,WAAW,MAAM,YAAY,IAAI;GAEjD,CAAC;GACD,aAAa,QAAQ,UAAU,EAAE,SAAS,MAAM;GAChD,aAAa,QAAQ,UAAU,EAAE,SAAS,QAAQ;GAClD,eAAe,SAAS;EAC1B;CACF;CAEA,MAAM,aAAa;EAAC,iBAAiB;EAAK,iBAAiB;EAAO,iBAAiB;EAAQ,iBAAiB;CAAI;CAEhH,MAAM,YAAY,sBACd,CAAC,iBAAiB,YAAY,iBAAiB,SAAS,IACxD,CAAC,iBAAiB,SAAS,iBAAiB,SAAS;CAEzD,iBAAiB,cAAc,0BAA0B,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC;AACxF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSize.js","names":[],"sources":["../../src/hooks/useSize.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Lytt på endringer i størrelse på et element\n *\n * @param ref Element som skal observeres.\n * @returns Object med høyde, bredde, x og y til elementet. Merk at objektet bare oppdates når høyde eller bredde endres, ikke når\n * posisjonen (x og y) endres.\n */\nexport const useSize = (ref?: React.RefObject<HTMLElement | null>): DOMRect | undefined => {\n const ticking = useRef(false);\n const [size, setSize] = useState<DOMRect>();\n useEffect(() => {\n const resizeObserver = new ResizeObserver(entries => {\n if (!ticking.current) {\n window.requestAnimationFrame(() => {\n setSize(entries[0].target.getBoundingClientRect());\n ticking.current = false;\n });\n }\n ticking.current = true;\n });\n if (ref?.current) {\n resizeObserver.observe(ref?.current);\n }\n return (): void => {\n if (ref?.current) {\n resizeObserver.unobserve(ref.current);\n } else {\n resizeObserver.disconnect();\n }\n };\n }, [ref?.current]);\n\n return size;\n};\n"],"mappings":";;;;;;;;;AASA,IAAa,WAAW,QAAmE;CACzF,MAAM,UAAU,OAAO,KAAK;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAkB;CAC1C,gBAAgB;EACd,MAAM,iBAAiB,IAAI,gBAAe,YAAW;GACnD,IAAI,CAAC,QAAQ,SACX,OAAO,4BAA4B;IACjC,QAAQ,QAAQ,GAAG,OAAO,sBAAsB,CAAC;IACjD,QAAQ,UAAU;GACpB,CAAC;GAEH,QAAQ,UAAU;EACpB,CAAC;EACD,IAAI,KAAK,SACP,eAAe,QAAQ,KAAK,OAAO;EAErC,aAAmB;GACjB,IAAI,KAAK,SACP,eAAe,UAAU,IAAI,OAAO;QAEpC,eAAe,WAAW;EAE9B;CACF,GAAG,CAAC,KAAK,OAAO,CAAC;CAEjB,OAAO;AACT"}
1
+ {"version":3,"file":"useSize.js","names":[],"sources":["../../src/hooks/useSize.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\n/**\n * Lytt på endringer i størrelse på et element\n *\n * @param ref Element som skal observeres.\n * @returns Object med høyde, bredde, x og y til elementet. Merk at objektet bare oppdates når høyde eller bredde endres, ikke når\n * posisjonen (x og y) endres.\n */\nexport const useSize = (ref?: React.RefObject<HTMLElement | null>): DOMRect | undefined => {\n const ticking = useRef(false);\n const [size, setSize] = useState<DOMRect>();\n useEffect(() => {\n const resizeObserver = new ResizeObserver(entries => {\n if (!ticking.current) {\n window.requestAnimationFrame(() => {\n setSize(entries[0].target.getBoundingClientRect());\n ticking.current = false;\n });\n }\n ticking.current = true;\n });\n if (ref?.current) {\n resizeObserver.observe(ref?.current);\n }\n return (): void => {\n if (ref?.current) {\n resizeObserver.unobserve(ref.current);\n } else {\n resizeObserver.disconnect();\n }\n };\n }, [ref?.current]);\n\n return size;\n};\n"],"mappings":";;;;;;;;;AASA,IAAa,WAAW,QAAmE;CACzF,MAAM,UAAU,OAAO,KAAK;CAC5B,MAAM,CAAC,MAAM,WAAW,SAAkB;CAC1C,gBAAgB;EACd,MAAM,iBAAiB,IAAI,gBAAe,YAAW;GACnD,IAAI,CAAC,QAAQ,SACX,OAAO,4BAA4B;IACjC,QAAQ,QAAQ,EAAE,CAAC,OAAO,sBAAsB,CAAC;IACjD,QAAQ,UAAU;GACpB,CAAC;GAEH,QAAQ,UAAU;EACpB,CAAC;EACD,IAAI,KAAK,SACP,eAAe,QAAQ,KAAK,OAAO;EAErC,aAAmB;GACjB,IAAI,KAAK,SACP,eAAe,UAAU,IAAI,OAAO;QAEpC,eAAe,WAAW;EAE9B;CACF,GAAG,CAAC,KAAK,OAAO,CAAC;CAEjB,OAAO;AACT"}
package/lib/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { t as uuid } from "./uuid.js";
1
+ import uuid from "./utils/uuid.js";
2
2
  import { AVERAGE_CHARACTER_WIDTH_PX, AnalyticsId, FormOnColor, FormSize, IconSize, KeyboardEventKey, LanguageLocales, ZIndex } from "./constants.js";
3
3
  import { usePseudoClasses } from "./hooks/usePseudoClasses.js";
4
4
  import { theme } from "./theme/index.js";
@@ -5,9 +5,9 @@ var spacers = {
5
5
  1: 1 / 8,
6
6
  2: 1 / 4,
7
7
  3: 1 / 2,
8
- 4: 1 * .75,
8
+ 4: .75,
9
9
  5: 1,
10
- 6: 1 * 1.5,
10
+ 6: 1.5,
11
11
  7: 2,
12
12
  8: 3,
13
13
  9: 4,
@@ -1 +1 @@
1
- {"version":3,"file":"spacers.js","names":[],"sources":["../../src/theme/spacers.ts"],"sourcesContent":["export type SpacerSizes = '4xs' | '3xs' | '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl';\n\nexport const spacer = 1;\n\nexport const spacers = {\n 0: 0,\n 1: spacer / 8,\n 2: spacer / 4,\n 3: spacer / 2,\n 4: spacer * 0.75,\n 5: spacer * 1,\n 6: spacer * 1.5,\n 7: spacer * 2,\n 8: spacer * 3,\n 9: spacer * 4,\n 10: spacer * 5,\n 11: spacer * 6,\n 12: spacer * 7,\n 13: spacer * 8,\n};\n"],"mappings":";AAEA,IAAa,SAAS;AAEtB,IAAa,UAAU;CACrB,GAAG;CACH,GAAA,IAAY;CACZ,GAAA,IAAY;CACZ,GAAA,IAAY;CACZ,GAAA,IAAY;CACZ,GAAA;CACA,GAAA,IAAY;CACZ,GAAA;CACA,GAAA;CACA,GAAA;CACA,IAAA;CACA,IAAA;CACA,IAAA;CACA,IAAA;AACF"}
1
+ {"version":3,"file":"spacers.js","names":[],"sources":["../../src/theme/spacers.ts"],"sourcesContent":["export type SpacerSizes = '4xs' | '3xs' | '2xs' | 'xs' | 's' | 'm' | 'l' | 'xl' | '2xl' | '3xl' | '4xl' | '5xl' | '6xl';\n\nexport const spacer = 1;\n\nexport const spacers = {\n 0: 0,\n 1: spacer / 8,\n 2: spacer / 4,\n 3: spacer / 2,\n 4: spacer * 0.75,\n 5: spacer * 1,\n 6: spacer * 1.5,\n 7: spacer * 2,\n 8: spacer * 3,\n 9: spacer * 4,\n 10: spacer * 5,\n 11: spacer * 6,\n 12: spacer * 7,\n 13: spacer * 8,\n};\n"],"mappings":";AAEA,IAAa,SAAS;AAEtB,IAAa,UAAU;CACrB,GAAG;CACH,GAAA,IAAY;CACZ,GAAA,IAAY;CACZ,GAAA,IAAY;CACZ,GAAA;CACA,GAAG;CACH,GAAA;CACA,GAAG;CACH,GAAG;CACH,GAAG;CACH,IAAI;CACJ,IAAI;CACJ,IAAI;CACJ,IAAI;AACN"}
@@ -1 +1 @@
1
- {"version":3,"file":"focus.js","names":[],"sources":["../../src/utils/focus.ts"],"sourcesContent":["/**\n * Kopi fra core-frontend (focus-utils.tsx)\n * Returnerer document.activeElement (element in focus), uavhengig av om den er i document-dom eller shadow-dom\n * @param element HtmlElement som den skal søke i\n */\nexport const getDocumentActiveElement = (element: HTMLElement | string): Element | null => {\n try {\n const domNode = typeof element === 'string' ? (document.querySelector(element) as HTMLElement) : element;\n const root = domNode.getRootNode() as Document;\n return root.activeElement;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Feil ved å ta tak i active element basert på angitt node: ', element, e);\n return null;\n }\n};\n"],"mappings":";;;;;;AAKA,IAAa,4BAA4B,YAAkD;CACzF,IAAI;EAGF,QAFgB,OAAO,YAAY,WAAY,SAAS,cAAc,OAAO,IAAoB,SAC5E,YACd,EAAK;CACd,SAAS,GAAG;EAEV,QAAQ,MAAM,8DAA8D,SAAS,CAAC;EACtF,OAAO;CACT;AACF"}
1
+ {"version":3,"file":"focus.js","names":[],"sources":["../../src/utils/focus.ts"],"sourcesContent":["/**\n * Kopi fra core-frontend (focus-utils.tsx)\n * Returnerer document.activeElement (element in focus), uavhengig av om den er i document-dom eller shadow-dom\n * @param element HtmlElement som den skal søke i\n */\nexport const getDocumentActiveElement = (element: HTMLElement | string): Element | null => {\n try {\n const domNode = typeof element === 'string' ? (document.querySelector(element) as HTMLElement) : element;\n const root = domNode.getRootNode() as Document;\n return root.activeElement;\n } catch (e) {\n // eslint-disable-next-line no-console\n console.error('Feil ved å ta tak i active element basert på angitt node: ', element, e);\n return null;\n }\n};\n"],"mappings":";;;;;;AAKA,IAAa,4BAA4B,YAAkD;CACzF,IAAI;EAGF,QAFgB,OAAO,YAAY,WAAY,SAAS,cAAc,OAAO,IAAoB,QAAA,CAC5E,YACd,CAAA,CAAK;CACd,SAAS,GAAG;EAEV,QAAQ,MAAM,8DAA8D,SAAS,CAAC;EACtF,OAAO;CACT;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"mobile.js","names":[],"sources":["../../src/utils/mobile.ts"],"sourcesContent":["declare global {\n interface Window {\n opera?: unknown;\n }\n}\n\ninterface WindowWithOpera extends Window {\n opera: string;\n}\n\n/**\n * Returns true når brukeren er på mobil (native check on user agent)\n */\nexport const isMobileUA = (): boolean => {\n let check = false;\n (function (a: string): void {\n const regexString =\n '(android|bbd+|meego).+mobile|avantgo|bada/|blackberry\\\n |blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|\\\n midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|\\\n pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows ce|xda|\\\n xiino';\n\n const regexString2 =\n '1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|\\\n ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|\\\n avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|\\\n chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|\\\n el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|\\\n gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|\\\n hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|\\\n ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |\\\n kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|\\\n ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |\\\n o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|\\\n ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|\\\n pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|\\\n qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|\\\n mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|\\\n sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|\\\n t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|\\\n m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|\\\n vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|\\\n whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-';\n\n const regex = new RegExp(regexString, 'i');\n const regex2 = new RegExp(regexString2, 'i');\n\n if (regex.test(a) || regex2.test(a.substr(0, 4))) {\n check = true;\n }\n })(navigator.userAgent || navigator.vendor || (window as WindowWithOpera).opera);\n\n return check;\n};\n"],"mappings":";;;;AAaA,IAAa,mBAA4B;CACvC,IAAI,QAAQ;CACZ,CAAC,SAAU,GAAiB;EAC1B,MAAM,cACJ;EAMF,MAAM,eACJ;EAqBF,MAAM,QAAQ,IAAI,OAAO,aAAa,GAAG;EACzC,MAAM,SAAS,IAAI,OAAO,cAAc,GAAG;EAE3C,IAAI,MAAM,KAAK,CAAC,KAAK,OAAO,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,GAC7C,QAAQ;CAEZ,GAAG,UAAU,aAAa,UAAU,UAAW,OAA2B,KAAK;CAE/E,OAAO;AACT"}
1
+ {"version":3,"file":"mobile.js","names":[],"sources":["../../src/utils/mobile.ts"],"sourcesContent":["declare global {\n interface Window {\n opera?: unknown;\n }\n}\n\ninterface WindowWithOpera extends Window {\n opera: string;\n}\n\n/**\n * Returns true når brukeren er på mobil (native check on user agent)\n */\nexport const isMobileUA = (): boolean => {\n let check = false;\n (function (a: string): void {\n const regexString =\n '(android|bbd+|meego).+mobile|avantgo|bada/|blackberry\\\n |blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|\\\n midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|\\\n pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows ce|xda|\\\n xiino';\n\n const regexString2 =\n '1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|\\\n ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|\\\n avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55/|capi|ccwa|cdm-|cell|\\\n chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|\\\n el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|\\\n gf-5|g-mo|go(.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|\\\n hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|/)|ibro|idea|\\\n ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |/)|klon|kpt |\\\n kwc-|kyo(c|k)|le(no|xi)|lg( g|/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50/|\\\n ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |\\\n o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|\\\n ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|\\\n pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|\\\n qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55/|sa(ge|ma|\\\n mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|\\\n sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|\\\n t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|\\\n m-|m3|m5)|tx-9|up(.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|\\\n vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|\\\n whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-';\n\n const regex = new RegExp(regexString, 'i');\n const regex2 = new RegExp(regexString2, 'i');\n\n if (regex.test(a) || regex2.test(a.substr(0, 4))) {\n check = true;\n }\n })(navigator.userAgent || navigator.vendor || (window as WindowWithOpera).opera);\n\n return check;\n};\n"],"mappings":";;;;AAaA,IAAa,mBAA4B;CACvC,IAAI,QAAQ;CACZ,CAAC,SAAU,GAAiB;EAC1B,MAAM,cACJ;EAMF,MAAM,eACJ;EAqBF,MAAM,QAAQ,IAAI,OAAO,aAAa,GAAG;EACzC,MAAM,SAAS,IAAI,OAAO,cAAc,GAAG;EAE3C,IAAI,MAAM,KAAK,CAAC,KAAK,OAAO,KAAK,EAAE,OAAO,GAAG,CAAC,CAAC,GAC7C,QAAQ;CAEZ,EAAA,CAAG,UAAU,aAAa,UAAU,UAAW,OAA2B,KAAK;CAE/E,OAAO;AACT"}
package/lib/utils/uuid.js CHANGED
@@ -1,2 +1,29 @@
1
- import { t as uuid } from "../uuid.js";
2
- export { uuid as default, uuid };
1
+ import { isTest } from "./environment.js";
2
+ //#region \0rolldown/runtime.js
3
+ var __defProp = Object.defineProperty;
4
+ var __exportAll = (all, no_symbols) => {
5
+ let target = {};
6
+ for (var name in all) __defProp(target, name, {
7
+ get: all[name],
8
+ enumerable: true
9
+ });
10
+ if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
11
+ return target;
12
+ };
13
+ //#endregion
14
+ //#region src/utils/uuid.ts
15
+ var uuid_exports = /* @__PURE__ */ __exportAll({
16
+ default: () => uuid,
17
+ uuid: () => uuid
18
+ });
19
+ var uuid = () => {
20
+ if (isTest()) return "test";
21
+ return "bxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".replace(/[x]/g, function(c) {
22
+ const r = Math.random() * 16 | 0;
23
+ return (c == "x" ? r : r & 3 | 8).toString(16);
24
+ });
25
+ };
26
+ //#endregion
27
+ export { uuid as default, uuid, uuid_exports as t };
28
+
29
+ //# sourceMappingURL=uuid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uuid.js","names":[],"sources":["../../src/utils/uuid.ts"],"sourcesContent":["import { isTest } from './environment';\n\nexport const uuid = (): string => {\n if (isTest()) {\n return 'test';\n }\n return 'bxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nexport default uuid;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAEA,IAAa,aAAqB;CAChC,IAAI,OAAO,GACT,OAAO;CAET,OAAO,uCAAuC,QAAQ,QAAQ,SAAU,GAAG;EACzE,MAAM,IAAK,KAAK,OAAO,IAAI,KAAM;EAEjC,QADM,KAAK,MAAM,IAAK,IAAI,IAAO,EAAA,CACxB,SAAS,EAAE;CACtB,CAAC;AACH"}
package/lib/utils2.js CHANGED
@@ -3,7 +3,7 @@ import { isComponent } from "./utils/component.js";
3
3
  import { t as Spacer_default } from "./Spacer.js";
4
4
  import { t as FormFieldTag_default } from "./FormFieldTag.js";
5
5
  import { t as StatusDot_default } from "./StatusDot.js";
6
- import cn from "classnames";
6
+ import classNames from "classnames";
7
7
  import React from "react";
8
8
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
9
9
  import styles from "./components/Label/styles.module.scss";
@@ -11,7 +11,7 @@ import styles from "./components/Label/styles.module.scss";
11
11
  var Sublabel = ({ children, className, id, onColor, sublabelTexts, testId }) => {
12
12
  const mapSublabels = (hideFromScreenReader) => {
13
13
  return sublabelTexts && sublabelTexts.map((sublabelText, index) => {
14
- const labelClasses = cn(styles.label, styles["sublabel"], {
14
+ const labelClasses = classNames(styles.label, styles["sublabel"], {
15
15
  [styles["sublabel--subdued"]]: sublabelText.type === "subdued",
16
16
  [styles["sublabel--on-dark"]]: onColor === FormOnColor.ondark
17
17
  });
@@ -43,13 +43,13 @@ var Sublabel = ({ children, className, id, onColor, sublabelTexts, testId }) =>
43
43
  //#region src/components/Label/Label.tsx
44
44
  var Label = ({ afterLabelChildren, children, className, formFieldTag, htmlFor, htmlMarkup = "label", labelClassName, labelTextClassName, labelId, labelTexts, onColor = FormOnColor.onwhite, statusDot, sublabel, sublabelWrapperClassName, testId, afterLabelChildrenClassName }) => {
45
45
  const hasChildren = children && typeof children !== "undefined";
46
- const labelWrapperClasses = cn(styles["label-wrapper"], { [styles["label-wrapper--no-bottom-margin"]]: hasChildren }, className);
47
- const mainLabelWrapperClasses = cn({ [styles["label-wrapper--after-label-children"]]: afterLabelChildren });
48
- const afterLabelChildrenClasses = cn(styles["after-label-children"], afterLabelChildrenClassName);
46
+ const labelWrapperClasses = classNames(styles["label-wrapper"], { [styles["label-wrapper--no-bottom-margin"]]: hasChildren }, className);
47
+ const mainLabelWrapperClasses = classNames({ [styles["label-wrapper--after-label-children"]]: afterLabelChildren });
48
+ const afterLabelChildrenClasses = classNames(styles["after-label-children"], afterLabelChildrenClassName);
49
49
  const mapLabels = () => {
50
50
  if (typeof labelTexts === "undefined") return null;
51
51
  return labelTexts.map((labelText, index) => {
52
- const labelClasses = cn(styles.label, {
52
+ const labelClasses = classNames(styles.label, {
53
53
  [styles["label--subdued"]]: labelText.type === "subdued",
54
54
  [styles["label--on-dark"]]: onColor === FormOnColor.ondark
55
55
  }, labelTextClassName);
@@ -121,7 +121,7 @@ var renderLabelAsParent = (props) => {
121
121
  htmlFor: props.inputId,
122
122
  onColor: props.onColor,
123
123
  children: props.children,
124
- labelClassName: cn(props.labelClassName, props.label.props.labelClassName),
124
+ labelClassName: classNames(props.labelClassName, props.label.props.labelClassName),
125
125
  labelTextClassName: props.labelTextClassName,
126
126
  htmlMarkup: props.markup || "label",
127
127
  sublabelWrapperClassName: props.sublabelWrapperClassName,
package/lib/utils2.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils2.js","names":[],"sources":["../src/components/Label/SubLabel.tsx","../src/components/Label/Label.tsx","../src/components/Label/utils.tsx"],"sourcesContent":["import cn from 'classnames';\n\nimport type { LabelText } from './Label';\n\nimport { AnalyticsId, FormOnColor } from '../../constants';\nimport Spacer from '../Spacer';\n\nimport styles from './styles.module.scss';\n\nexport interface SublabelProps {\n /** Sets the content of the Sublabel */\n children?: React.ReactNode;\n /** Adds custom classes to the element. */\n className?: string;\n /** id that is placed on the wrapper */\n id: string;\n /** Array of sublabel strings. Can be of type semibold or normal */\n onColor?: FormOnColor;\n /** Array of sublabel strings. Can be of type semibold or normal */\n sublabelTexts?: LabelText[];\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nexport const Sublabel: React.FC<SublabelProps> = ({ children, className, id, onColor, sublabelTexts, testId }) => {\n const mapSublabels = (hideFromScreenReader?: boolean): React.ReactNode => {\n return (\n sublabelTexts &&\n sublabelTexts.map((sublabelText, index) => {\n const labelClasses = cn(styles.label, styles['sublabel'], {\n [styles['sublabel--subdued']]: sublabelText.type === 'subdued',\n [styles['sublabel--on-dark']]: onColor === FormOnColor.ondark,\n });\n return (\n hideFromScreenReader === sublabelText.hideFromScreenReader && (\n <span className={labelClasses} key={index}>\n {sublabelText.text}\n </span>\n )\n );\n })\n );\n };\n\n const subLabels = mapSublabels();\n const ariaHiddenSublabels = mapSublabels(true);\n\n return (\n <>\n <Spacer size={'3xs'} />\n {(subLabels || children) && (\n <div className={className} id={id} data-testid={testId} data-analyticsid={AnalyticsId.Sublabel}>\n {subLabels}\n {children}\n </div>\n )}\n {ariaHiddenSublabels && (\n <div className={className} data-testid={testId}>\n {ariaHiddenSublabels}\n </div>\n )}\n </>\n );\n};\n","import type { FunctionComponent } from 'react';\nimport React from 'react';\n\nimport cn from 'classnames';\n\nimport type { SublabelProps } from './SubLabel';\nimport type { FormFieldTagProps } from '../FormFieldTag';\nimport type { StatusDotProps } from '../StatusDot';\n\nimport { Sublabel } from './SubLabel';\nimport { AnalyticsId, FormOnColor } from '../../constants';\nimport { isComponent } from '../../utils/component';\nimport FormFieldTag from '../FormFieldTag';\nimport Spacer from '../Spacer';\nimport StatusDot from '../StatusDot';\n\nimport styles from './styles.module.scss';\n\nexport type LabelText = {\n hideFromScreenReader?: boolean;\n text: string;\n type?: 'normal' | 'subdued';\n};\n\nexport type LabelTags = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span' | 'label' | 'p' | 'legend';\n\nexport interface LabelProps {\n /** Component shown after label - discourage use of this */\n afterLabelChildren?: React.ReactNode;\n /** Sets the content of the Label */\n children?: React.ReactNode;\n /** Sets a tag that describes whether the form field is required or optional */\n formFieldTag?: React.ReactNode;\n /** Adds custom classes to the label tag. */\n labelClassName?: string;\n /** Adds custom classes to the label text. */\n labelTextClassName?: string;\n /** Adds custom classes to the element. */\n className?: string;\n /** Id that is put on the \"for\" attribute of the label */\n htmlFor?: string;\n /** Changes the underlying element of the label */\n htmlMarkup?: LabelTags;\n /** Id som plasseres på <label/> */\n labelId?: string;\n /** Array of main label strings. Can be of type semibold or normal */\n labelTexts?: LabelText[];\n /** Array of sublabel strings. Can be of type semibold or normal */\n onColor?: keyof typeof FormOnColor;\n /** StatusDot placed underneath the last sublabel */\n statusDot?: React.ReactNode;\n /** Sublabel component */\n sublabel?: React.ReactNode;\n /** Adds custom classes to the div wrapping the sublabels. */\n sublabelWrapperClassName?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Gives a custom classname to the afterLabelChildren wrapper. Used in checkbox and radiobutton */\n afterLabelChildrenClassName?: string;\n}\n\nconst Label: FunctionComponent<LabelProps> = ({\n afterLabelChildren,\n children,\n className,\n formFieldTag,\n htmlFor,\n htmlMarkup = 'label',\n labelClassName,\n labelTextClassName,\n labelId,\n labelTexts,\n onColor = FormOnColor.onwhite,\n statusDot,\n sublabel,\n sublabelWrapperClassName,\n testId,\n afterLabelChildrenClassName,\n}) => {\n const hasChildren = children && typeof children !== 'undefined';\n const labelWrapperClasses = cn(styles['label-wrapper'], { [styles['label-wrapper--no-bottom-margin']]: hasChildren }, className);\n const mainLabelWrapperClasses = cn({\n [styles['label-wrapper--after-label-children']]: afterLabelChildren,\n });\n const afterLabelChildrenClasses = cn(styles['after-label-children'], afterLabelChildrenClassName);\n\n const mapLabels = (): React.ReactNode => {\n if (typeof labelTexts === 'undefined') return null;\n\n return labelTexts.map((labelText, index) => {\n const labelClasses = cn(\n styles.label,\n {\n [styles['label--subdued']]: labelText.type === 'subdued',\n [styles['label--on-dark']]: onColor === FormOnColor.ondark,\n },\n labelTextClassName\n );\n return (\n <span aria-hidden={labelText.hideFromScreenReader} className={labelClasses} key={index}>\n {labelText.text}\n </span>\n );\n });\n };\n const CustomTag = htmlMarkup;\n\n return (\n <div className={labelWrapperClasses}>\n <div className={mainLabelWrapperClasses}>\n <CustomTag className={labelClassName} id={labelId} htmlFor={htmlFor} data-testid={testId} data-analyticsid={AnalyticsId.Label}>\n <span className={styles['label-content-wrapper']}>\n {children}\n <span className={styles.label__texts}>{mapLabels()}</span>\n </span>\n </CustomTag>\n {afterLabelChildren && <div className={afterLabelChildrenClasses}>{afterLabelChildren}</div>}\n </div>\n {(sublabel || statusDot || formFieldTag) && (\n <div className={sublabelWrapperClassName}>\n {formFieldTag && isComponent<FormFieldTagProps>(formFieldTag, FormFieldTag) && React.cloneElement(formFieldTag)}\n {sublabel &&\n isComponent<SublabelProps>(sublabel, Sublabel) &&\n React.cloneElement(sublabel, {\n onColor: onColor as FormOnColor,\n })}\n {statusDot && isComponent<StatusDotProps>(statusDot, StatusDot) && (\n <>\n <Spacer size={'3xs'} />\n {React.cloneElement(statusDot, {\n onColor: onColor === FormOnColor.ondark ? 'ondark' : 'onwhite',\n })}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default Label;\n","import React from 'react';\n\nimport cn from 'classnames';\n\nimport type { LabelProps, LabelTags } from './Label';\nimport type { FormOnColor } from '../../constants';\n\nimport Label from './Label';\nimport { isComponent } from '../../utils/component';\n\nexport const getLabelText = (label: React.ReactNode): string => {\n let allLabelText = '';\n\n if (isComponent<LabelProps>(label, Label)) {\n label.props.labelTexts?.forEach(labelText => {\n allLabelText += !labelText.hideFromScreenReader ? labelText.text : '';\n });\n }\n\n return allLabelText;\n};\n\ninterface RenderLabelProps {\n label: React.ReactNode;\n inputId: string;\n onColor: FormOnColor;\n markup?: LabelTags;\n className?: string;\n}\n\nexport const renderLabel = (props: RenderLabelProps): React.ReactNode => {\n return (\n <>\n {props.label && isComponent<LabelProps>(props.label, Label)\n ? React.cloneElement(props.label, {\n htmlFor: props.inputId,\n htmlMarkup: props.markup || 'label',\n onColor: props.onColor,\n className: props.className,\n })\n : typeof props.label === 'string' && (\n <Label\n labelTexts={[{ text: props.label, type: 'normal' }]}\n htmlFor={props.inputId}\n onColor={props.onColor}\n className={props.className}\n />\n )}\n </>\n );\n};\n\ninterface RenderLabelAsParentProps {\n label: React.ReactNode;\n children: React.ReactNode;\n inputId: string;\n onColor: FormOnColor;\n labelClassName?: string;\n labelTextClassName?: string;\n sublabelWrapperClassName?: string;\n large?: boolean;\n markup?: LabelTags;\n afterLabelChildrenClassName?: string;\n}\n\nexport const renderLabelAsParent = (props: RenderLabelAsParentProps): React.ReactNode => {\n return (\n <>\n {props.label && isComponent<LabelProps>(props.label, Label)\n ? React.cloneElement(props.label, {\n htmlFor: props.inputId,\n onColor: props.onColor,\n children: props.children,\n labelClassName: cn(props.labelClassName, props.label.props.labelClassName),\n labelTextClassName: props.labelTextClassName,\n htmlMarkup: props.markup || 'label',\n sublabelWrapperClassName: props.sublabelWrapperClassName,\n sublabel: props.large ? undefined : props.label.props.sublabel,\n statusDot: props.large ? undefined : props.label.props.statusDot,\n afterLabelChildrenClassName: props.afterLabelChildrenClassName,\n })\n : typeof props.label === 'string' && (\n <Label\n labelTexts={[{ text: props.label, type: 'subdued' }]}\n htmlFor={props.inputId}\n onColor={props.onColor}\n htmlMarkup={props.markup || 'label'}\n labelClassName={props.labelClassName}\n labelTextClassName={props.labelTextClassName}\n sublabelWrapperClassName={props.sublabelWrapperClassName}\n afterLabelChildrenClassName={props.afterLabelChildrenClassName}\n >\n {props.children}\n </Label>\n )}\n </>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils2.js","names":[],"sources":["../src/components/Label/SubLabel.tsx","../src/components/Label/Label.tsx","../src/components/Label/utils.tsx"],"sourcesContent":["import cn from 'classnames';\n\nimport type { LabelText } from './Label';\n\nimport { AnalyticsId, FormOnColor } from '../../constants';\nimport Spacer from '../Spacer';\n\nimport styles from './styles.module.scss';\n\nexport interface SublabelProps {\n /** Sets the content of the Sublabel */\n children?: React.ReactNode;\n /** Adds custom classes to the element. */\n className?: string;\n /** id that is placed on the wrapper */\n id: string;\n /** Array of sublabel strings. Can be of type semibold or normal */\n onColor?: FormOnColor;\n /** Array of sublabel strings. Can be of type semibold or normal */\n sublabelTexts?: LabelText[];\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nexport const Sublabel: React.FC<SublabelProps> = ({ children, className, id, onColor, sublabelTexts, testId }) => {\n const mapSublabels = (hideFromScreenReader?: boolean): React.ReactNode => {\n return (\n sublabelTexts &&\n sublabelTexts.map((sublabelText, index) => {\n const labelClasses = cn(styles.label, styles['sublabel'], {\n [styles['sublabel--subdued']]: sublabelText.type === 'subdued',\n [styles['sublabel--on-dark']]: onColor === FormOnColor.ondark,\n });\n return (\n hideFromScreenReader === sublabelText.hideFromScreenReader && (\n <span className={labelClasses} key={index}>\n {sublabelText.text}\n </span>\n )\n );\n })\n );\n };\n\n const subLabels = mapSublabels();\n const ariaHiddenSublabels = mapSublabels(true);\n\n return (\n <>\n <Spacer size={'3xs'} />\n {(subLabels || children) && (\n <div className={className} id={id} data-testid={testId} data-analyticsid={AnalyticsId.Sublabel}>\n {subLabels}\n {children}\n </div>\n )}\n {ariaHiddenSublabels && (\n <div className={className} data-testid={testId}>\n {ariaHiddenSublabels}\n </div>\n )}\n </>\n );\n};\n","import type { FunctionComponent } from 'react';\nimport React from 'react';\n\nimport cn from 'classnames';\n\nimport type { SublabelProps } from './SubLabel';\nimport type { FormFieldTagProps } from '../FormFieldTag';\nimport type { StatusDotProps } from '../StatusDot';\n\nimport { Sublabel } from './SubLabel';\nimport { AnalyticsId, FormOnColor } from '../../constants';\nimport { isComponent } from '../../utils/component';\nimport FormFieldTag from '../FormFieldTag';\nimport Spacer from '../Spacer';\nimport StatusDot from '../StatusDot';\n\nimport styles from './styles.module.scss';\n\nexport type LabelText = {\n hideFromScreenReader?: boolean;\n text: string;\n type?: 'normal' | 'subdued';\n};\n\nexport type LabelTags = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'span' | 'label' | 'p' | 'legend';\n\nexport interface LabelProps {\n /** Component shown after label - discourage use of this */\n afterLabelChildren?: React.ReactNode;\n /** Sets the content of the Label */\n children?: React.ReactNode;\n /** Sets a tag that describes whether the form field is required or optional */\n formFieldTag?: React.ReactNode;\n /** Adds custom classes to the label tag. */\n labelClassName?: string;\n /** Adds custom classes to the label text. */\n labelTextClassName?: string;\n /** Adds custom classes to the element. */\n className?: string;\n /** Id that is put on the \"for\" attribute of the label */\n htmlFor?: string;\n /** Changes the underlying element of the label */\n htmlMarkup?: LabelTags;\n /** Id som plasseres på <label/> */\n labelId?: string;\n /** Array of main label strings. Can be of type semibold or normal */\n labelTexts?: LabelText[];\n /** Array of sublabel strings. Can be of type semibold or normal */\n onColor?: keyof typeof FormOnColor;\n /** StatusDot placed underneath the last sublabel */\n statusDot?: React.ReactNode;\n /** Sublabel component */\n sublabel?: React.ReactNode;\n /** Adds custom classes to the div wrapping the sublabels. */\n sublabelWrapperClassName?: string;\n /** Sets the data-testid attribute. */\n testId?: string;\n /** Gives a custom classname to the afterLabelChildren wrapper. Used in checkbox and radiobutton */\n afterLabelChildrenClassName?: string;\n}\n\nconst Label: FunctionComponent<LabelProps> = ({\n afterLabelChildren,\n children,\n className,\n formFieldTag,\n htmlFor,\n htmlMarkup = 'label',\n labelClassName,\n labelTextClassName,\n labelId,\n labelTexts,\n onColor = FormOnColor.onwhite,\n statusDot,\n sublabel,\n sublabelWrapperClassName,\n testId,\n afterLabelChildrenClassName,\n}) => {\n const hasChildren = children && typeof children !== 'undefined';\n const labelWrapperClasses = cn(styles['label-wrapper'], { [styles['label-wrapper--no-bottom-margin']]: hasChildren }, className);\n const mainLabelWrapperClasses = cn({\n [styles['label-wrapper--after-label-children']]: afterLabelChildren,\n });\n const afterLabelChildrenClasses = cn(styles['after-label-children'], afterLabelChildrenClassName);\n\n const mapLabels = (): React.ReactNode => {\n if (typeof labelTexts === 'undefined') return null;\n\n return labelTexts.map((labelText, index) => {\n const labelClasses = cn(\n styles.label,\n {\n [styles['label--subdued']]: labelText.type === 'subdued',\n [styles['label--on-dark']]: onColor === FormOnColor.ondark,\n },\n labelTextClassName\n );\n return (\n <span aria-hidden={labelText.hideFromScreenReader} className={labelClasses} key={index}>\n {labelText.text}\n </span>\n );\n });\n };\n const CustomTag = htmlMarkup;\n\n return (\n <div className={labelWrapperClasses}>\n <div className={mainLabelWrapperClasses}>\n <CustomTag className={labelClassName} id={labelId} htmlFor={htmlFor} data-testid={testId} data-analyticsid={AnalyticsId.Label}>\n <span className={styles['label-content-wrapper']}>\n {children}\n <span className={styles.label__texts}>{mapLabels()}</span>\n </span>\n </CustomTag>\n {afterLabelChildren && <div className={afterLabelChildrenClasses}>{afterLabelChildren}</div>}\n </div>\n {(sublabel || statusDot || formFieldTag) && (\n <div className={sublabelWrapperClassName}>\n {formFieldTag && isComponent<FormFieldTagProps>(formFieldTag, FormFieldTag) && React.cloneElement(formFieldTag)}\n {sublabel &&\n isComponent<SublabelProps>(sublabel, Sublabel) &&\n React.cloneElement(sublabel, {\n onColor: onColor as FormOnColor,\n })}\n {statusDot && isComponent<StatusDotProps>(statusDot, StatusDot) && (\n <>\n <Spacer size={'3xs'} />\n {React.cloneElement(statusDot, {\n onColor: onColor === FormOnColor.ondark ? 'ondark' : 'onwhite',\n })}\n </>\n )}\n </div>\n )}\n </div>\n );\n};\n\nexport default Label;\n","import React from 'react';\n\nimport cn from 'classnames';\n\nimport type { LabelProps, LabelTags } from './Label';\nimport type { FormOnColor } from '../../constants';\n\nimport Label from './Label';\nimport { isComponent } from '../../utils/component';\n\nexport const getLabelText = (label: React.ReactNode): string => {\n let allLabelText = '';\n\n if (isComponent<LabelProps>(label, Label)) {\n label.props.labelTexts?.forEach(labelText => {\n allLabelText += !labelText.hideFromScreenReader ? labelText.text : '';\n });\n }\n\n return allLabelText;\n};\n\ninterface RenderLabelProps {\n label: React.ReactNode;\n inputId: string;\n onColor: FormOnColor;\n markup?: LabelTags;\n className?: string;\n}\n\nexport const renderLabel = (props: RenderLabelProps): React.ReactNode => {\n return (\n <>\n {props.label && isComponent<LabelProps>(props.label, Label)\n ? React.cloneElement(props.label, {\n htmlFor: props.inputId,\n htmlMarkup: props.markup || 'label',\n onColor: props.onColor,\n className: props.className,\n })\n : typeof props.label === 'string' && (\n <Label\n labelTexts={[{ text: props.label, type: 'normal' }]}\n htmlFor={props.inputId}\n onColor={props.onColor}\n className={props.className}\n />\n )}\n </>\n );\n};\n\ninterface RenderLabelAsParentProps {\n label: React.ReactNode;\n children: React.ReactNode;\n inputId: string;\n onColor: FormOnColor;\n labelClassName?: string;\n labelTextClassName?: string;\n sublabelWrapperClassName?: string;\n large?: boolean;\n markup?: LabelTags;\n afterLabelChildrenClassName?: string;\n}\n\nexport const renderLabelAsParent = (props: RenderLabelAsParentProps): React.ReactNode => {\n return (\n <>\n {props.label && isComponent<LabelProps>(props.label, Label)\n ? React.cloneElement(props.label, {\n htmlFor: props.inputId,\n onColor: props.onColor,\n children: props.children,\n labelClassName: cn(props.labelClassName, props.label.props.labelClassName),\n labelTextClassName: props.labelTextClassName,\n htmlMarkup: props.markup || 'label',\n sublabelWrapperClassName: props.sublabelWrapperClassName,\n sublabel: props.large ? undefined : props.label.props.sublabel,\n statusDot: props.large ? undefined : props.label.props.statusDot,\n afterLabelChildrenClassName: props.afterLabelChildrenClassName,\n })\n : typeof props.label === 'string' && (\n <Label\n labelTexts={[{ text: props.label, type: 'subdued' }]}\n htmlFor={props.inputId}\n onColor={props.onColor}\n htmlMarkup={props.markup || 'label'}\n labelClassName={props.labelClassName}\n labelTextClassName={props.labelTextClassName}\n sublabelWrapperClassName={props.sublabelWrapperClassName}\n afterLabelChildrenClassName={props.afterLabelChildrenClassName}\n >\n {props.children}\n </Label>\n )}\n </>\n );\n};\n"],"mappings":"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"}
package/lib/utils5.js CHANGED
@@ -2,7 +2,7 @@ import { Breakpoint } from "./hooks/useBreakpoint.js";
2
2
  import { r as ResponsiveTableVariant } from "./constants2.js";
3
3
  import { isTouchDevice } from "./utils/device.js";
4
4
  import React from "react";
5
- import tableStyles from "./components/Table/styles.module.scss";
5
+ import styles from "./components/Table/styles.module.scss";
6
6
  //#region src/components/Table/utils.ts
7
7
  /**
8
8
  * Sjekk om det skal brukes CSS for å bestemme responsivt utseende på dette breakpoint
@@ -15,7 +15,7 @@ var configUsesCss = (config) => config.variant === ResponsiveTableVariant.center
15
15
  * @param config Konfigurasjon for responsiv oppførsel
16
16
  * @returns CSS-klassenavn
17
17
  */
18
- var mapConfigToClass = (config) => config.variant === "centeredoverflow" || config.variant === "block" ? tableStyles[`table--${config.variant}-${config.breakpoint}`] : "";
18
+ var mapConfigToClass = (config) => config.variant === "centeredoverflow" || config.variant === "block" ? styles[`table--${config.variant}-${config.breakpoint}`] : "";
19
19
  /**
20
20
  * Sorter konfigurasjon etter breakpoints, fra største til minste
21
21
  * @param a Konfigurasjon for responsiv oppførsel
package/lib/utils5.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils5.js","names":[],"sources":["../src/components/Table/utils.ts"],"sourcesContent":["import React from 'react';\n\nimport type { ModeType } from './constants';\nimport type { BreakpointConfig } from './Table';\n\nimport { ResponsiveTableVariant } from './constants';\nimport { Breakpoint } from '../../hooks/useBreakpoint';\nimport { isTouchDevice } from '../../utils/device';\n\nimport styles from './styles.module.scss';\n\n/**\n * Sjekk om det skal brukes CSS for å bestemme responsivt utseende på dette breakpoint\n * @param config Konfigurasjon for responsiv oppførsel\n * @returns true om breakpoint bruker CSS\n */\nconst configUsesCss = (config: BreakpointConfig): boolean =>\n config.variant === ResponsiveTableVariant.centeredoverflow || config.variant === ResponsiveTableVariant.block;\n\n/**\n * Lag klassenavn for CSS-config\n * @param config Konfigurasjon for responsiv oppførsel\n * @returns CSS-klassenavn\n */\nconst mapConfigToClass = (config: BreakpointConfig): string =>\n config.variant === 'centeredoverflow' || config.variant === 'block' ? styles[`table--${config.variant}-${config.breakpoint}`] : '';\n\n/**\n * Sorter konfigurasjon etter breakpoints, fra største til minste\n * @param a Konfigurasjon for responsiv oppførsel\n * @param b Konfigurasjon for responsiv oppførsel\n * @returns Sortert liste\n */\nconst sortByBreakpointsDescending = (a: BreakpointConfig, b: BreakpointConfig): number =>\n Breakpoint[a.breakpoint] - Breakpoint[b.breakpoint];\n\n/**\n * Sjekk om en konfigurasjon skal brukes for nåværende breakpoint\n * @param a Konfigurasjon for responsiv oppførsel\n * @param breakpoint Nåværende breakpoint\n * @returns true dersom config skal brukes for breakpointet\n */\nconst isValidForCurrentBreakpoint = (config: BreakpointConfig, breakpoint: Breakpoint): boolean =>\n Breakpoint[config.breakpoint] >= breakpoint;\n\n/**\n * Finn konfigurasjon for nåværende breakpoint\n * @param config Konfigurasjon for responsiv oppførsel\n * @param breakpoint Nåværende breakpoint\n * @returns Konfigurasjon for responsiv oppførsel\n */\nconst getConfigForBreakpoint = (config: BreakpointConfig | BreakpointConfig[], breakpoint: Breakpoint): BreakpointConfig | undefined => {\n if (Array.isArray(config)) {\n config.sort(sortByBreakpointsDescending);\n\n return config.find(x => isValidForCurrentBreakpoint(x, breakpoint));\n } else if (config && isValidForCurrentBreakpoint(config, breakpoint)) {\n return config;\n }\n};\n\n/**\n * Finn konfigurasjon for nåværende breakpoint og tabellbredde\n * @param config Konfigurasjon for responsiv oppførsel\n * @param breakpoint Nåværende breakpoint\n * @param tableWidth Bredde på tabell i px\n * @returns Konfigurasjon for responsiv oppførsel uten fallbackVariant\n */\nexport const getCurrentConfig = (\n config: BreakpointConfig | BreakpointConfig[],\n breakpoint: Breakpoint,\n tableWidth: number,\n windowWidth: number\n): Omit<BreakpointConfig, 'fallbackVariant'> | undefined => {\n const breakpointConfig = getConfigForBreakpoint(config, breakpoint);\n const canUseHorizontalScroll = isTouchDevice();\n const canUseCenteredOverflow = tableWidth <= windowWidth;\n\n if (!breakpointConfig) {\n return;\n }\n\n if (\n breakpointConfig.variant === ResponsiveTableVariant.centeredoverflow &&\n !canUseCenteredOverflow &&\n breakpointConfig.fallbackVariant === ResponsiveTableVariant.horizontalscroll\n ) {\n return {\n variant: canUseHorizontalScroll ? ResponsiveTableVariant.horizontalscroll : ResponsiveTableVariant.none,\n breakpoint: breakpointConfig.breakpoint,\n };\n }\n\n if (\n breakpointConfig.variant === ResponsiveTableVariant.centeredoverflow &&\n !canUseCenteredOverflow &&\n breakpointConfig.fallbackVariant !== ResponsiveTableVariant.centeredoverflow\n ) {\n return {\n variant: breakpointConfig.fallbackVariant ?? ResponsiveTableVariant.none,\n breakpoint: breakpointConfig.breakpoint,\n };\n }\n\n if (\n breakpointConfig.variant === ResponsiveTableVariant.horizontalscroll &&\n !canUseHorizontalScroll &&\n breakpointConfig.fallbackVariant === ResponsiveTableVariant.centeredoverflow\n ) {\n return {\n variant: canUseCenteredOverflow ? ResponsiveTableVariant.centeredoverflow : ResponsiveTableVariant.none,\n breakpoint: breakpointConfig.breakpoint,\n };\n }\n\n if (\n breakpointConfig.variant === ResponsiveTableVariant.horizontalscroll &&\n !canUseHorizontalScroll &&\n breakpointConfig.fallbackVariant !== ResponsiveTableVariant.horizontalscroll\n ) {\n return {\n variant: breakpointConfig.fallbackVariant ?? ResponsiveTableVariant.none,\n breakpoint: breakpointConfig.breakpoint,\n };\n }\n\n return breakpointConfig;\n};\n\n/**\n * Finn klassenavn for responsiv oppførsel\n * @param config Konfigurasjon for responsiv oppførsel\n * @returns Klassenavn\n */\nexport const getBreakpointClass = (config?: BreakpointConfig): string | undefined =>\n config && configUsesCss(config) ? mapConfigToClass(config) : undefined;\n\n/**\n * Finn riktig posisjon for horisontal sentrering av tabell som skal vises \"centeredoverflow\"\n * @param parentWidth Bredde på element som tabellen ligger i\n * @param tableWidth Bredde på tabellen\n * @returns Styling som posisjonerer tabellen riktig\n */\nexport const getCenteredOverflowTableStyle = (parentWidth: number, tableWidth: number): React.CSSProperties | undefined => {\n if (parentWidth >= tableWidth) {\n return;\n }\n\n const COLUMN_GUTTER_WIDTH_PX = 8;\n\n return { left: `${(parentWidth - tableWidth) / 2 - COLUMN_GUTTER_WIDTH_PX}px` };\n};\n\n/**\n * Map children and inject the `mode` prop into element children, but never on React.Fragment.\n * If a Fragment is encountered, its children are mapped and updated, while the Fragment wrapper is preserved.\n */\nexport const mapChildrenWithMode = (children: React.ReactNode, mode: ModeType | undefined): React.ReactNode =>\n React.Children.map(children, child => {\n if (!React.isValidElement(child)) return child;\n if (child.type === React.Fragment) {\n const fragmentChildren = (child.props as { children?: React.ReactNode }).children;\n const mapped = React.Children.map(fragmentChildren, gc =>\n React.isValidElement<{ mode?: ModeType }>(gc) ? React.cloneElement(gc, { mode }) : gc\n );\n return React.cloneElement(child, undefined, mapped);\n }\n return React.cloneElement(child as React.ReactElement<{ mode?: ModeType }>, { mode });\n });\n\n/**\n * Create a shallow copy of an object with specific keys omitted.\n */\nexport const omitProps = <T extends Record<PropertyKey, unknown>>(obj: T, keys: Array<keyof T>): Partial<T> => {\n const clone: Partial<T> = { ...obj };\n for (const k of keys) {\n delete clone[k];\n }\n return clone;\n};\n"],"mappings":";;;;;;;;;;;AAgBA,IAAM,iBAAiB,WACrB,OAAO,YAAY,uBAAuB,oBAAoB,OAAO,YAAY,uBAAuB;;;;;;AAO1G,IAAM,oBAAoB,WACxB,OAAO,YAAY,sBAAsB,OAAO,YAAY,UAAU,YAAO,UAAU,OAAO,QAAQ,GAAG,OAAO,gBAAgB;;;;;;;AAQlI,IAAM,+BAA+B,GAAqB,MACxD,WAAW,EAAE,cAAc,WAAW,EAAE;;;;;;;AAQ1C,IAAM,+BAA+B,QAA0B,eAC7D,WAAW,OAAO,eAAe;;;;;;;AAQnC,IAAM,0BAA0B,QAA+C,eAAyD;CACtI,IAAI,MAAM,QAAQ,MAAM,GAAG;EACzB,OAAO,KAAK,2BAA2B;EAEvC,OAAO,OAAO,MAAK,MAAK,4BAA4B,GAAG,UAAU,CAAC;CACpE,OAAO,IAAI,UAAU,4BAA4B,QAAQ,UAAU,GACjE,OAAO;AAEX;;;;;;;;AASA,IAAa,oBACX,QACA,YACA,YACA,gBAC0D;CAC1D,MAAM,mBAAmB,uBAAuB,QAAQ,UAAU;CAClE,MAAM,yBAAyB,cAAc;CAC7C,MAAM,yBAAyB,cAAc;CAE7C,IAAI,CAAC,kBACH;CAGF,IACE,iBAAiB,YAAY,uBAAuB,oBACpD,CAAC,0BACD,iBAAiB,oBAAoB,uBAAuB,kBAE5D,OAAO;EACL,SAAS,yBAAyB,uBAAuB,mBAAmB,uBAAuB;EACnG,YAAY,iBAAiB;CAC/B;CAGF,IACE,iBAAiB,YAAY,uBAAuB,oBACpD,CAAC,0BACD,iBAAiB,oBAAoB,uBAAuB,kBAE5D,OAAO;EACL,SAAS,iBAAiB,mBAAmB,uBAAuB;EACpE,YAAY,iBAAiB;CAC/B;CAGF,IACE,iBAAiB,YAAY,uBAAuB,oBACpD,CAAC,0BACD,iBAAiB,oBAAoB,uBAAuB,kBAE5D,OAAO;EACL,SAAS,yBAAyB,uBAAuB,mBAAmB,uBAAuB;EACnG,YAAY,iBAAiB;CAC/B;CAGF,IACE,iBAAiB,YAAY,uBAAuB,oBACpD,CAAC,0BACD,iBAAiB,oBAAoB,uBAAuB,kBAE5D,OAAO;EACL,SAAS,iBAAiB,mBAAmB,uBAAuB;EACpE,YAAY,iBAAiB;CAC/B;CAGF,OAAO;AACT;;;;;;AAOA,IAAa,sBAAsB,WACjC,UAAU,cAAc,MAAM,IAAI,iBAAiB,MAAM,IAAI,KAAA;;;;;;;AAQ/D,IAAa,iCAAiC,aAAqB,eAAwD;CACzH,IAAI,eAAe,YACjB;CAKF,OAAO,EAAE,MAAM,IAAI,cAAc,cAAc,IAAI,EAAuB,IAAI;AAChF;;;;;AAMA,IAAa,uBAAuB,UAA2B,SAC7D,MAAM,SAAS,IAAI,WAAU,UAAS;CACpC,IAAI,CAAC,MAAM,eAAe,KAAK,GAAG,OAAO;CACzC,IAAI,MAAM,SAAS,MAAM,UAAU;EACjC,MAAM,mBAAoB,MAAM,MAAyC;EACzE,MAAM,SAAS,MAAM,SAAS,IAAI,mBAAkB,OAClD,MAAM,eAAoC,EAAE,IAAI,MAAM,aAAa,IAAI,EAAE,KAAK,CAAC,IAAI,EACrF;EACA,OAAO,MAAM,aAAa,OAAO,KAAA,GAAW,MAAM;CACpD;CACA,OAAO,MAAM,aAAa,OAAkD,EAAE,KAAK,CAAC;AACtF,CAAC;;;;AAKH,IAAa,aAAqD,KAAQ,SAAqC;CAC7G,MAAM,QAAoB,EAAE,GAAG,IAAI;CACnC,KAAK,MAAM,KAAK,MACd,OAAO,MAAM;CAEf,OAAO;AACT"}
1
+ {"version":3,"file":"utils5.js","names":[],"sources":["../src/components/Table/utils.ts"],"sourcesContent":["import React from 'react';\n\nimport type { ModeType } from './constants';\nimport type { BreakpointConfig } from './Table';\n\nimport { ResponsiveTableVariant } from './constants';\nimport { Breakpoint } from '../../hooks/useBreakpoint';\nimport { isTouchDevice } from '../../utils/device';\n\nimport styles from './styles.module.scss';\n\n/**\n * Sjekk om det skal brukes CSS for å bestemme responsivt utseende på dette breakpoint\n * @param config Konfigurasjon for responsiv oppførsel\n * @returns true om breakpoint bruker CSS\n */\nconst configUsesCss = (config: BreakpointConfig): boolean =>\n config.variant === ResponsiveTableVariant.centeredoverflow || config.variant === ResponsiveTableVariant.block;\n\n/**\n * Lag klassenavn for CSS-config\n * @param config Konfigurasjon for responsiv oppførsel\n * @returns CSS-klassenavn\n */\nconst mapConfigToClass = (config: BreakpointConfig): string =>\n config.variant === 'centeredoverflow' || config.variant === 'block' ? styles[`table--${config.variant}-${config.breakpoint}`] : '';\n\n/**\n * Sorter konfigurasjon etter breakpoints, fra største til minste\n * @param a Konfigurasjon for responsiv oppførsel\n * @param b Konfigurasjon for responsiv oppførsel\n * @returns Sortert liste\n */\nconst sortByBreakpointsDescending = (a: BreakpointConfig, b: BreakpointConfig): number =>\n Breakpoint[a.breakpoint] - Breakpoint[b.breakpoint];\n\n/**\n * Sjekk om en konfigurasjon skal brukes for nåværende breakpoint\n * @param a Konfigurasjon for responsiv oppførsel\n * @param breakpoint Nåværende breakpoint\n * @returns true dersom config skal brukes for breakpointet\n */\nconst isValidForCurrentBreakpoint = (config: BreakpointConfig, breakpoint: Breakpoint): boolean =>\n Breakpoint[config.breakpoint] >= breakpoint;\n\n/**\n * Finn konfigurasjon for nåværende breakpoint\n * @param config Konfigurasjon for responsiv oppførsel\n * @param breakpoint Nåværende breakpoint\n * @returns Konfigurasjon for responsiv oppførsel\n */\nconst getConfigForBreakpoint = (config: BreakpointConfig | BreakpointConfig[], breakpoint: Breakpoint): BreakpointConfig | undefined => {\n if (Array.isArray(config)) {\n config.sort(sortByBreakpointsDescending);\n\n return config.find(x => isValidForCurrentBreakpoint(x, breakpoint));\n } else if (config && isValidForCurrentBreakpoint(config, breakpoint)) {\n return config;\n }\n};\n\n/**\n * Finn konfigurasjon for nåværende breakpoint og tabellbredde\n * @param config Konfigurasjon for responsiv oppførsel\n * @param breakpoint Nåværende breakpoint\n * @param tableWidth Bredde på tabell i px\n * @returns Konfigurasjon for responsiv oppførsel uten fallbackVariant\n */\nexport const getCurrentConfig = (\n config: BreakpointConfig | BreakpointConfig[],\n breakpoint: Breakpoint,\n tableWidth: number,\n windowWidth: number\n): Omit<BreakpointConfig, 'fallbackVariant'> | undefined => {\n const breakpointConfig = getConfigForBreakpoint(config, breakpoint);\n const canUseHorizontalScroll = isTouchDevice();\n const canUseCenteredOverflow = tableWidth <= windowWidth;\n\n if (!breakpointConfig) {\n return;\n }\n\n if (\n breakpointConfig.variant === ResponsiveTableVariant.centeredoverflow &&\n !canUseCenteredOverflow &&\n breakpointConfig.fallbackVariant === ResponsiveTableVariant.horizontalscroll\n ) {\n return {\n variant: canUseHorizontalScroll ? ResponsiveTableVariant.horizontalscroll : ResponsiveTableVariant.none,\n breakpoint: breakpointConfig.breakpoint,\n };\n }\n\n if (\n breakpointConfig.variant === ResponsiveTableVariant.centeredoverflow &&\n !canUseCenteredOverflow &&\n breakpointConfig.fallbackVariant !== ResponsiveTableVariant.centeredoverflow\n ) {\n return {\n variant: breakpointConfig.fallbackVariant ?? ResponsiveTableVariant.none,\n breakpoint: breakpointConfig.breakpoint,\n };\n }\n\n if (\n breakpointConfig.variant === ResponsiveTableVariant.horizontalscroll &&\n !canUseHorizontalScroll &&\n breakpointConfig.fallbackVariant === ResponsiveTableVariant.centeredoverflow\n ) {\n return {\n variant: canUseCenteredOverflow ? ResponsiveTableVariant.centeredoverflow : ResponsiveTableVariant.none,\n breakpoint: breakpointConfig.breakpoint,\n };\n }\n\n if (\n breakpointConfig.variant === ResponsiveTableVariant.horizontalscroll &&\n !canUseHorizontalScroll &&\n breakpointConfig.fallbackVariant !== ResponsiveTableVariant.horizontalscroll\n ) {\n return {\n variant: breakpointConfig.fallbackVariant ?? ResponsiveTableVariant.none,\n breakpoint: breakpointConfig.breakpoint,\n };\n }\n\n return breakpointConfig;\n};\n\n/**\n * Finn klassenavn for responsiv oppførsel\n * @param config Konfigurasjon for responsiv oppførsel\n * @returns Klassenavn\n */\nexport const getBreakpointClass = (config?: BreakpointConfig): string | undefined =>\n config && configUsesCss(config) ? mapConfigToClass(config) : undefined;\n\n/**\n * Finn riktig posisjon for horisontal sentrering av tabell som skal vises \"centeredoverflow\"\n * @param parentWidth Bredde på element som tabellen ligger i\n * @param tableWidth Bredde på tabellen\n * @returns Styling som posisjonerer tabellen riktig\n */\nexport const getCenteredOverflowTableStyle = (parentWidth: number, tableWidth: number): React.CSSProperties | undefined => {\n if (parentWidth >= tableWidth) {\n return;\n }\n\n const COLUMN_GUTTER_WIDTH_PX = 8;\n\n return { left: `${(parentWidth - tableWidth) / 2 - COLUMN_GUTTER_WIDTH_PX}px` };\n};\n\n/**\n * Map children and inject the `mode` prop into element children, but never on React.Fragment.\n * If a Fragment is encountered, its children are mapped and updated, while the Fragment wrapper is preserved.\n */\nexport const mapChildrenWithMode = (children: React.ReactNode, mode: ModeType | undefined): React.ReactNode =>\n React.Children.map(children, child => {\n if (!React.isValidElement(child)) return child;\n if (child.type === React.Fragment) {\n const fragmentChildren = (child.props as { children?: React.ReactNode }).children;\n const mapped = React.Children.map(fragmentChildren, gc =>\n React.isValidElement<{ mode?: ModeType }>(gc) ? React.cloneElement(gc, { mode }) : gc\n );\n return React.cloneElement(child, undefined, mapped);\n }\n return React.cloneElement(child as React.ReactElement<{ mode?: ModeType }>, { mode });\n });\n\n/**\n * Create a shallow copy of an object with specific keys omitted.\n */\nexport const omitProps = <T extends Record<PropertyKey, unknown>>(obj: T, keys: Array<keyof T>): Partial<T> => {\n const clone: Partial<T> = { ...obj };\n for (const k of keys) {\n delete clone[k];\n }\n return clone;\n};\n"],"mappings":";;;;;;;;;;;AAgBA,IAAM,iBAAiB,WACrB,OAAO,YAAY,uBAAuB,oBAAoB,OAAO,YAAY,uBAAuB;;;;;;AAO1G,IAAM,oBAAoB,WACxB,OAAO,YAAY,sBAAsB,OAAO,YAAY,UAAU,OAAO,UAAU,OAAO,QAAQ,GAAG,OAAO,gBAAgB;;;;;;;AAQlI,IAAM,+BAA+B,GAAqB,MACxD,WAAW,EAAE,cAAc,WAAW,EAAE;;;;;;;AAQ1C,IAAM,+BAA+B,QAA0B,eAC7D,WAAW,OAAO,eAAe;;;;;;;AAQnC,IAAM,0BAA0B,QAA+C,eAAyD;CACtI,IAAI,MAAM,QAAQ,MAAM,GAAG;EACzB,OAAO,KAAK,2BAA2B;EAEvC,OAAO,OAAO,MAAK,MAAK,4BAA4B,GAAG,UAAU,CAAC;CACpE,OAAO,IAAI,UAAU,4BAA4B,QAAQ,UAAU,GACjE,OAAO;AAEX;;;;;;;;AASA,IAAa,oBACX,QACA,YACA,YACA,gBAC0D;CAC1D,MAAM,mBAAmB,uBAAuB,QAAQ,UAAU;CAClE,MAAM,yBAAyB,cAAc;CAC7C,MAAM,yBAAyB,cAAc;CAE7C,IAAI,CAAC,kBACH;CAGF,IACE,iBAAiB,YAAY,uBAAuB,oBACpD,CAAC,0BACD,iBAAiB,oBAAoB,uBAAuB,kBAE5D,OAAO;EACL,SAAS,yBAAyB,uBAAuB,mBAAmB,uBAAuB;EACnG,YAAY,iBAAiB;CAC/B;CAGF,IACE,iBAAiB,YAAY,uBAAuB,oBACpD,CAAC,0BACD,iBAAiB,oBAAoB,uBAAuB,kBAE5D,OAAO;EACL,SAAS,iBAAiB,mBAAmB,uBAAuB;EACpE,YAAY,iBAAiB;CAC/B;CAGF,IACE,iBAAiB,YAAY,uBAAuB,oBACpD,CAAC,0BACD,iBAAiB,oBAAoB,uBAAuB,kBAE5D,OAAO;EACL,SAAS,yBAAyB,uBAAuB,mBAAmB,uBAAuB;EACnG,YAAY,iBAAiB;CAC/B;CAGF,IACE,iBAAiB,YAAY,uBAAuB,oBACpD,CAAC,0BACD,iBAAiB,oBAAoB,uBAAuB,kBAE5D,OAAO;EACL,SAAS,iBAAiB,mBAAmB,uBAAuB;EACpE,YAAY,iBAAiB;CAC/B;CAGF,OAAO;AACT;;;;;;AAOA,IAAa,sBAAsB,WACjC,UAAU,cAAc,MAAM,IAAI,iBAAiB,MAAM,IAAI,KAAA;;;;;;;AAQ/D,IAAa,iCAAiC,aAAqB,eAAwD;CACzH,IAAI,eAAe,YACjB;CAKF,OAAO,EAAE,MAAM,IAAI,cAAc,cAAc,IAAI,EAAuB,IAAI;AAChF;;;;;AAMA,IAAa,uBAAuB,UAA2B,SAC7D,MAAM,SAAS,IAAI,WAAU,UAAS;CACpC,IAAI,CAAC,MAAM,eAAe,KAAK,GAAG,OAAO;CACzC,IAAI,MAAM,SAAS,MAAM,UAAU;EACjC,MAAM,mBAAoB,MAAM,MAAyC;EACzE,MAAM,SAAS,MAAM,SAAS,IAAI,mBAAkB,OAClD,MAAM,eAAoC,EAAE,IAAI,MAAM,aAAa,IAAI,EAAE,KAAK,CAAC,IAAI,EACrF;EACA,OAAO,MAAM,aAAa,OAAO,KAAA,GAAW,MAAM;CACpD;CACA,OAAO,MAAM,aAAa,OAAkD,EAAE,KAAK,CAAC;AACtF,CAAC;;;;AAKH,IAAa,aAAqD,KAAQ,SAAqC;CAC7G,MAAM,QAAoB,EAAE,GAAG,IAAI;CACnC,KAAK,MAAM,KAAK,MACd,OAAO,MAAM;CAEf,OAAO;AACT"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@helsenorge/designsystem-react",
3
3
  "sideEffects": false,
4
4
  "private": false,
5
- "version": "15.4.0",
5
+ "version": "15.5.1",
6
6
  "description": "The official design system for Helsenorge built with React.",
7
7
  "repository": {
8
8
  "type": "git",
package/lib/uuid.js DELETED
@@ -1,29 +0,0 @@
1
- import { isTest } from "./utils/environment.js";
2
- //#region \0rolldown/runtime.js
3
- var __defProp = Object.defineProperty;
4
- var __exportAll = (all, no_symbols) => {
5
- let target = {};
6
- for (var name in all) __defProp(target, name, {
7
- get: all[name],
8
- enumerable: true
9
- });
10
- if (!no_symbols) __defProp(target, Symbol.toStringTag, { value: "Module" });
11
- return target;
12
- };
13
- //#endregion
14
- //#region src/utils/uuid.ts
15
- var uuid_exports = /* @__PURE__ */ __exportAll({
16
- default: () => uuid,
17
- uuid: () => uuid
18
- });
19
- var uuid = () => {
20
- if (isTest()) return "test";
21
- return "bxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx".replace(/[x]/g, function(c) {
22
- const r = Math.random() * 16 | 0;
23
- return (c == "x" ? r : r & 3 | 8).toString(16);
24
- });
25
- };
26
- //#endregion
27
- export { uuid_exports as n, uuid as t };
28
-
29
- //# sourceMappingURL=uuid.js.map
package/lib/uuid.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"uuid.js","names":[],"sources":["../src/utils/uuid.ts"],"sourcesContent":["import { isTest } from './environment';\n\nexport const uuid = (): string => {\n if (isTest()) {\n return 'test';\n }\n return 'bxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'.replace(/[x]/g, function (c) {\n const r = (Math.random() * 16) | 0,\n v = c == 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n};\n\nexport default uuid;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAEA,IAAa,aAAqB;CAChC,IAAI,OAAO,GACT,OAAO;CAET,OAAO,uCAAuC,QAAQ,QAAQ,SAAU,GAAG;EACzE,MAAM,IAAK,KAAK,OAAO,IAAI,KAAM;EAEjC,QADM,KAAK,MAAM,IAAK,IAAI,IAAO,GACxB,SAAS,EAAE;CACtB,CAAC;AACH"}