@fremtind/jokul 0.27.1 → 0.27.2

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 (508) hide show
  1. package/build/build-stats.html +1 -1
  2. package/build/cjs/components/ScreenReaderOnly.cjs.map +1 -1
  3. package/build/cjs/components/accordion/Accordion.cjs.map +1 -1
  4. package/build/cjs/components/accordion/AccordionItem.cjs.map +1 -1
  5. package/build/cjs/components/breadcrumb/Breadcrumb.cjs.map +1 -1
  6. package/build/cjs/components/breadcrumb/BreadcrumbItem.cjs.map +1 -1
  7. package/build/cjs/components/button/Button.cjs.map +1 -1
  8. package/build/cjs/components/button/index.d.cts +1 -1
  9. package/build/cjs/components/button/types.cjs.map +1 -1
  10. package/build/cjs/components/card/Card.cjs.map +1 -1
  11. package/build/cjs/components/card/CardImage.cjs.map +1 -1
  12. package/build/cjs/components/card/InfoCard.cjs.map +1 -1
  13. package/build/cjs/components/card/NavCard.cjs.map +1 -1
  14. package/build/cjs/components/card/TaskCard.cjs.map +1 -1
  15. package/build/cjs/components/card/documentation/examples/FakturainfoExample.d.cts +1 -1
  16. package/build/cjs/components/card/documentation/examples/StatuskortExample.d.cts +1 -1
  17. package/build/cjs/components/card/types.cjs.map +1 -1
  18. package/build/cjs/components/card/utils.cjs.map +1 -1
  19. package/build/cjs/components/checkbox/Checkbox.cjs.map +1 -1
  20. package/build/cjs/components/combobox/Combobox.cjs.map +1 -1
  21. package/build/cjs/components/combobox/index.d.cts +1 -1
  22. package/build/cjs/components/cookie-consent/CookieConsent.cjs.map +1 -1
  23. package/build/cjs/components/cookie-consent/CookieConsentContext.cjs.map +1 -1
  24. package/build/cjs/components/cookie-consent/CookieConsentModal.cjs.map +1 -1
  25. package/build/cjs/components/cookie-consent/consents/CustomConsents.cjs.map +1 -1
  26. package/build/cjs/components/cookie-consent/consents/DefaultConsents.cjs.map +1 -1
  27. package/build/cjs/components/cookie-consent/consents/RequirementCheckbox.cjs.map +1 -1
  28. package/build/cjs/components/cookie-consent/consents/RequirementCheckbox.d.cts +1 -1
  29. package/build/cjs/components/cookie-consent/cookieConsentUtils.cjs.map +1 -1
  30. package/build/cjs/components/cookie-consent/cookieConsentUtils.d.cts +1 -1
  31. package/build/cjs/components/cookie-consent/index.d.cts +1 -1
  32. package/build/cjs/components/datepicker/DatePicker.cjs.map +1 -1
  33. package/build/cjs/components/datepicker/internal/Calendar.cjs.map +1 -1
  34. package/build/cjs/components/datepicker/internal/calendarReducer.cjs.map +1 -1
  35. package/build/cjs/components/datepicker/internal/useCalendar.cjs.map +1 -1
  36. package/build/cjs/components/datepicker/internal/utils.cjs.map +1 -1
  37. package/build/cjs/components/datepicker/internal/utils.d.cts +2 -2
  38. package/build/cjs/components/datepicker/utils.cjs.map +1 -1
  39. package/build/cjs/components/description-list/DescriptionList.cjs.map +1 -1
  40. package/build/cjs/components/expander/ExpandSection.cjs.map +1 -1
  41. package/build/cjs/components/expander/Expander.cjs.map +1 -1
  42. package/build/cjs/components/feedback/Feedback.cjs.map +1 -1
  43. package/build/cjs/components/feedback/FeedbackSuccess.cjs.map +1 -1
  44. package/build/cjs/components/feedback/FeedbackValues.cjs.map +1 -1
  45. package/build/cjs/components/feedback/feedbackContext.cjs.map +1 -1
  46. package/build/cjs/components/feedback/followup/Followup.cjs.map +1 -1
  47. package/build/cjs/components/feedback/followup/followupContext.cjs.map +1 -1
  48. package/build/cjs/components/feedback/followup/useFollowup.cjs.map +1 -1
  49. package/build/cjs/components/feedback/main-question/MainQuestion.cjs.map +1 -1
  50. package/build/cjs/components/feedback/main-question/mainQuestionContext.cjs.map +1 -1
  51. package/build/cjs/components/feedback/main-question/useMainQuestion.cjs.map +1 -1
  52. package/build/cjs/components/feedback/presets.cjs.map +1 -1
  53. package/build/cjs/components/feedback/questions/AddonQuestion.cjs.map +1 -1
  54. package/build/cjs/components/feedback/questions/CheckboxQuestion.cjs.map +1 -1
  55. package/build/cjs/components/feedback/questions/ContactQuestion.cjs.map +1 -1
  56. package/build/cjs/components/feedback/questions/RadioQuestion.cjs.map +1 -1
  57. package/build/cjs/components/feedback/questions/SmileyQuestion.cjs.map +1 -1
  58. package/build/cjs/components/feedback/questions/TextQuestion.cjs.map +1 -1
  59. package/build/cjs/components/feedback/questions/smileyUtils.cjs.map +1 -1
  60. package/build/cjs/components/feedback/utils.cjs.map +1 -1
  61. package/build/cjs/components/flex/Flex.cjs.map +1 -1
  62. package/build/cjs/components/icon/Icon.cjs.map +1 -1
  63. package/build/cjs/components/icon/icons/ArrowDownIcon.cjs.map +1 -1
  64. package/build/cjs/components/icon/icons/ArrowLeftIcon.cjs.map +1 -1
  65. package/build/cjs/components/icon/icons/ArrowNorthEastIcon.cjs.map +1 -1
  66. package/build/cjs/components/icon/icons/ArrowRightIcon.cjs.map +1 -1
  67. package/build/cjs/components/icon/icons/ArrowUpIcon.cjs.map +1 -1
  68. package/build/cjs/components/icon/icons/CalendarIcon.cjs.map +1 -1
  69. package/build/cjs/components/icon/icons/CheckIcon.cjs.map +1 -1
  70. package/build/cjs/components/icon/icons/ChevronDownIcon.cjs.map +1 -1
  71. package/build/cjs/components/icon/icons/ChevronLeftIcon.cjs.map +1 -1
  72. package/build/cjs/components/icon/icons/ChevronRightIcon.cjs.map +1 -1
  73. package/build/cjs/components/icon/icons/ChevronUpIcon.cjs.map +1 -1
  74. package/build/cjs/components/icon/icons/CloseIcon.cjs.map +1 -1
  75. package/build/cjs/components/icon/icons/CopyIcon.cjs.map +1 -1
  76. package/build/cjs/components/icon/icons/DotsIcon.cjs.map +1 -1
  77. package/build/cjs/components/icon/icons/DragIcon.cjs.map +1 -1
  78. package/build/cjs/components/icon/icons/GreenCheckIcon.cjs.map +1 -1
  79. package/build/cjs/components/icon/icons/HamburgerIcon.cjs.map +1 -1
  80. package/build/cjs/components/icon/icons/LinkIcon.cjs.map +1 -1
  81. package/build/cjs/components/icon/icons/MinusIcon.cjs.map +1 -1
  82. package/build/cjs/components/icon/icons/PenIcon.cjs.map +1 -1
  83. package/build/cjs/components/icon/icons/PlusIcon.cjs.map +1 -1
  84. package/build/cjs/components/icon/icons/QuestionIcon.cjs.map +1 -1
  85. package/build/cjs/components/icon/icons/RedCrossIcon.cjs.map +1 -1
  86. package/build/cjs/components/icon/icons/SearchIcon.cjs.map +1 -1
  87. package/build/cjs/components/icon/icons/ThumbDownIcon.cjs.map +1 -1
  88. package/build/cjs/components/icon/icons/ThumbUpIcon.cjs.map +1 -1
  89. package/build/cjs/components/icon/icons/TrashCanIcon.cjs.map +1 -1
  90. package/build/cjs/components/icon/icons/animated/ArrowHorizontalAnimated.cjs.map +1 -1
  91. package/build/cjs/components/icon/icons/animated/ArrowVerticalAnimated.cjs.map +1 -1
  92. package/build/cjs/components/icon/icons/animated/PlusRemoveAnimated.cjs.map +1 -1
  93. package/build/cjs/components/icon-button/IconButton.cjs.map +1 -1
  94. package/build/cjs/components/image/Image.cjs.map +1 -1
  95. package/build/cjs/components/image/useImageLoadingStatus.cjs.map +1 -1
  96. package/build/cjs/components/index.d.cts +1 -1
  97. package/build/cjs/components/input-group/FieldGroup.cjs.map +1 -1
  98. package/build/cjs/components/input-group/InputGroup.cjs.map +1 -1
  99. package/build/cjs/components/input-group/Label.cjs.map +1 -1
  100. package/build/cjs/components/input-group/SupportLabel.cjs.map +1 -1
  101. package/build/cjs/components/input-group/index.d.cts +2 -2
  102. package/build/cjs/components/link/Link.cjs.map +1 -1
  103. package/build/cjs/components/link/NavLink.cjs.map +1 -1
  104. package/build/cjs/components/link-list/LinkList.cjs.map +1 -1
  105. package/build/cjs/components/loader/index.d.cts +2 -2
  106. package/build/cjs/components/loader/skeletons/SkeletonAnimation.cjs.map +1 -1
  107. package/build/cjs/components/loader/skeletons/SkeletonButton.cjs.map +1 -1
  108. package/build/cjs/components/loader/skeletons/SkeletonCheckboxGroup.cjs.map +1 -1
  109. package/build/cjs/components/loader/skeletons/SkeletonElement.cjs.map +1 -1
  110. package/build/cjs/components/loader/skeletons/SkeletonInput.cjs.map +1 -1
  111. package/build/cjs/components/loader/skeletons/SkeletonLabel.cjs.map +1 -1
  112. package/build/cjs/components/loader/skeletons/SkeletonRadioButtonGroup.cjs.map +1 -1
  113. package/build/cjs/components/loader/skeletons/SkeletonTable.cjs.map +1 -1
  114. package/build/cjs/components/loader/skeletons/SkeletonTextArea.cjs.map +1 -1
  115. package/build/cjs/components/loader/useDelayedRender.cjs.map +1 -1
  116. package/build/cjs/components/logo/Logo.cjs.map +1 -1
  117. package/build/cjs/components/logo/LogoStamp.cjs.map +1 -1
  118. package/build/cjs/components/logo/useTextSpinner.cjs.map +1 -1
  119. package/build/cjs/components/menu/Menu.cjs.map +1 -1
  120. package/build/cjs/components/menu/MenuItem.cjs.map +1 -1
  121. package/build/cjs/components/menu/MenuItemCheckbox.cjs.map +1 -1
  122. package/build/cjs/components/menu/index.d.cts +1 -1
  123. package/build/cjs/components/message/DismissButton.cjs.map +1 -1
  124. package/build/cjs/components/message/FormErrorMessage.cjs.map +1 -1
  125. package/build/cjs/components/message/Message.cjs.map +1 -1
  126. package/build/cjs/components/message/index.d.cts +2 -2
  127. package/build/cjs/components/modal/Modal.cjs.map +1 -1
  128. package/build/cjs/components/modal/index.d.cts +1 -1
  129. package/build/cjs/components/modal/useModal.cjs.map +1 -1
  130. package/build/cjs/components/pagination/Pagination.cjs.map +1 -1
  131. package/build/cjs/components/popover/Popover.cjs.map +1 -1
  132. package/build/cjs/components/progress-bar/Countdown.cjs.map +1 -1
  133. package/build/cjs/components/radio-button/BaseRadioButton.cjs.map +1 -1
  134. package/build/cjs/components/radio-button/RadioButton.cjs.map +1 -1
  135. package/build/cjs/components/radio-button/RadioButtonGroup.cjs.map +1 -1
  136. package/build/cjs/components/radio-button/radioGroupContext.cjs.map +1 -1
  137. package/build/cjs/components/radio-panel/RadioPanel.cjs.map +1 -1
  138. package/build/cjs/components/select/NativeSelect.cjs.map +1 -1
  139. package/build/cjs/components/select/Select.cjs.map +1 -1
  140. package/build/cjs/components/select/select-utils.cjs.map +1 -1
  141. package/build/cjs/components/summary-table/SummaryTable.cjs.map +1 -1
  142. package/build/cjs/components/summary-table/SummaryTableRow.cjs.map +1 -1
  143. package/build/cjs/components/summary-table/mocks.cjs.map +1 -1
  144. package/build/cjs/components/system-message/SystemMessage.cjs.map +1 -1
  145. package/build/cjs/components/system-message/common/DismissButton.cjs.map +1 -1
  146. package/build/cjs/components/system-message/common/MessageIcon.cjs.map +1 -1
  147. package/build/cjs/components/system-message/index.d.cts +1 -1
  148. package/build/cjs/components/table/DataTable.cjs.map +1 -1
  149. package/build/cjs/components/table/ExpandableTableRow.cjs.map +1 -1
  150. package/build/cjs/components/table/ExpandableTableRowController.cjs.map +1 -1
  151. package/build/cjs/components/table/Table.cjs.map +1 -1
  152. package/build/cjs/components/table/TableBody.cjs.map +1 -1
  153. package/build/cjs/components/table/TableCaption.cjs.map +1 -1
  154. package/build/cjs/components/table/TableCell.cjs.map +1 -1
  155. package/build/cjs/components/table/TableColumn.cjs.map +1 -1
  156. package/build/cjs/components/table/TableColumnGroup.cjs.map +1 -1
  157. package/build/cjs/components/table/TableFooter.cjs.map +1 -1
  158. package/build/cjs/components/table/TableHead.cjs.map +1 -1
  159. package/build/cjs/components/table/TableHeader.cjs.map +1 -1
  160. package/build/cjs/components/table/TablePagination.cjs.map +1 -1
  161. package/build/cjs/components/table/TableRow.cjs.map +1 -1
  162. package/build/cjs/components/table/index.d.cts +1 -1
  163. package/build/cjs/components/table/tableContext.cjs.map +1 -1
  164. package/build/cjs/components/table/tableSectionContext.cjs.map +1 -1
  165. package/build/cjs/components/table/utils.cjs.map +1 -1
  166. package/build/cjs/components/tabs/NavTab.cjs.map +1 -1
  167. package/build/cjs/components/tabs/NavTabs.cjs.map +1 -1
  168. package/build/cjs/components/tabs/Tab.cjs.map +1 -1
  169. package/build/cjs/components/tabs/TabList.cjs.map +1 -1
  170. package/build/cjs/components/tabs/Tabs.cjs.map +1 -1
  171. package/build/cjs/components/tag/Tag.cjs.map +1 -1
  172. package/build/cjs/components/text-input/BaseTextArea.cjs.map +1 -1
  173. package/build/cjs/components/text-input/BaseTextInput.cjs.map +1 -1
  174. package/build/cjs/components/text-input/TextArea.cjs.map +1 -1
  175. package/build/cjs/components/text-input/TextInput.cjs.map +1 -1
  176. package/build/cjs/components/toast/Toast.cjs.map +1 -1
  177. package/build/cjs/components/toast/ToastRegion.cjs.map +1 -1
  178. package/build/cjs/components/toast/ToastRegion.d.cts +1 -1
  179. package/build/cjs/components/toast/toastContext.cjs.map +1 -1
  180. package/build/cjs/components/toggle-switch/ToggleSlider.cjs.map +1 -1
  181. package/build/cjs/components/toggle-switch/ToggleSwitch.cjs.map +1 -1
  182. package/build/cjs/components/toggle-switch/usePillStyles.cjs.map +1 -1
  183. package/build/cjs/components/tooltip/PopupTip.cjs.map +1 -1
  184. package/build/cjs/components/tooltip/Tooltip.cjs.map +1 -1
  185. package/build/cjs/components/tooltip/TooltipContent.cjs.map +1 -1
  186. package/build/cjs/components/tooltip/TooltipTrigger.cjs.map +1 -1
  187. package/build/cjs/components/tooltip/index.d.cts +1 -1
  188. package/build/cjs/hooks/index.d.cts +5 -5
  189. package/build/cjs/hooks/mediaQueryUtils.cjs.map +1 -1
  190. package/build/cjs/hooks/useAnimatedDetails/useAnimatedDetails.cjs.map +1 -1
  191. package/build/cjs/hooks/useAnimatedHeight/index.d.cts +1 -1
  192. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeight.cjs.map +1 -1
  193. package/build/cjs/hooks/useAnimatedHeight/useAnimatedHeightBetween.cjs.map +1 -1
  194. package/build/cjs/hooks/useAnimatedHeight/useAutoAnimateHeight.cjs.map +1 -1
  195. package/build/cjs/hooks/useAriaLiveRegion/index.d.cts +1 -1
  196. package/build/cjs/hooks/useAriaLiveRegion/useAriaLiveRegion.cjs.map +1 -1
  197. package/build/cjs/hooks/useBrowserPreferences/useBrowserPreferences.cjs.map +1 -1
  198. package/build/cjs/hooks/useClickOutside/useClickOutside.cjs.map +1 -1
  199. package/build/cjs/hooks/useElementDimensions/index.d.cts +1 -1
  200. package/build/cjs/hooks/useElementDimensions/useElementDimensions.cjs.map +1 -1
  201. package/build/cjs/hooks/useFocusOutside/useFocusOutside.cjs.map +1 -1
  202. package/build/cjs/hooks/useIntersectionObserver/useIntersectionObserver.cjs.map +1 -1
  203. package/build/cjs/hooks/useListNavigation/useListNavigation.cjs.map +1 -1
  204. package/build/cjs/hooks/useListNavigation/useListNavigation.d.cts +1 -1
  205. package/build/cjs/hooks/useLocalStorage/useLocalStorage.cjs.map +1 -1
  206. package/build/cjs/hooks/useMutationObserver/useMutationObserver.cjs.map +1 -1
  207. package/build/cjs/hooks/useProgressiveImg/index.d.cts +1 -1
  208. package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.cjs.map +1 -1
  209. package/build/cjs/hooks/useProgressiveImg/useProgressiveImg.d.cts +1 -1
  210. package/build/cjs/hooks/useScreen/state.cjs.map +1 -1
  211. package/build/cjs/hooks/useScreen/useScreen.cjs.map +1 -1
  212. package/build/cjs/hooks/useScrollIntoView/index.d.cts +1 -1
  213. package/build/cjs/hooks/useSwipeGesture/useSwipeGesture.cjs.map +1 -1
  214. package/build/cjs/utilities/formatters/avstand/formatAvstand.cjs.map +1 -1
  215. package/build/cjs/utilities/formatters/bytes/formatBytes.cjs.map +1 -1
  216. package/build/cjs/utilities/formatters/date/formatDate.cjs.map +1 -1
  217. package/build/cjs/utilities/formatters/fodselsnummer/formatFodselsnummer.cjs.map +1 -1
  218. package/build/cjs/utilities/formatters/index.d.cts +5 -5
  219. package/build/cjs/utilities/formatters/kontonummer/formatKontonummer.cjs.map +1 -1
  220. package/build/cjs/utilities/formatters/kortnummer/formatKortnummer.cjs.map +1 -1
  221. package/build/cjs/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.cjs.map +1 -1
  222. package/build/cjs/utilities/formatters/telefonnummer/formatTelefonnummer.cjs.map +1 -1
  223. package/build/cjs/utilities/formatters/util/formatNumber.cjs.map +1 -1
  224. package/build/cjs/utilities/formatters/util/parseNumber.cjs.map +1 -1
  225. package/build/cjs/utilities/formatters/util/registerWithMask.cjs.map +1 -1
  226. package/build/cjs/utilities/formatters/valuta/formatValuta.cjs.map +1 -1
  227. package/build/cjs/utilities/getThemeAndDensity.cjs.map +1 -1
  228. package/build/cjs/utilities/polymorphism/SlotComponent.cjs.map +1 -1
  229. package/build/cjs/utilities/polymorphism/index.d.cts +1 -1
  230. package/build/cjs/utilities/polymorphism/mergeProps.cjs.map +1 -1
  231. package/build/cjs/utilities/polymorphism/mergeRefs.cjs.map +1 -1
  232. package/build/cjs/utilities/tabListener.cjs.map +1 -1
  233. package/build/cjs/utilities/validators/hasMinimumWords/hasMinimumWords.cjs.map +1 -1
  234. package/build/cjs/utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.cjs.map +1 -1
  235. package/build/cjs/utilities/validators/isValidChassisnummer/isValidChassisnummer.cjs.map +1 -1
  236. package/build/cjs/utilities/validators/isValidEpost/isValidEpost.cjs.map +1 -1
  237. package/build/cjs/utilities/validators/isValidFodselsnummer/isValidFodselsnummer.cjs.map +1 -1
  238. package/build/cjs/utilities/validators/isValidKortnummer/isValidKortnummer.cjs.map +1 -1
  239. package/build/cjs/utilities/validators/isValidName/isValidName.cjs.map +1 -1
  240. package/build/cjs/utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.cjs.map +1 -1
  241. package/build/cjs/utilities/validators/isValidTelefonnummer/isValidTelefonnummer.cjs.map +1 -1
  242. package/build/es/components/ScreenReaderOnly.js.map +1 -1
  243. package/build/es/components/accordion/Accordion.js.map +1 -1
  244. package/build/es/components/accordion/AccordionItem.js.map +1 -1
  245. package/build/es/components/breadcrumb/Breadcrumb.js.map +1 -1
  246. package/build/es/components/breadcrumb/BreadcrumbItem.js.map +1 -1
  247. package/build/es/components/button/Button.js.map +1 -1
  248. package/build/es/components/button/index.d.ts +1 -1
  249. package/build/es/components/button/types.js.map +1 -1
  250. package/build/es/components/card/Card.js.map +1 -1
  251. package/build/es/components/card/CardImage.js.map +1 -1
  252. package/build/es/components/card/InfoCard.js.map +1 -1
  253. package/build/es/components/card/NavCard.js.map +1 -1
  254. package/build/es/components/card/TaskCard.js.map +1 -1
  255. package/build/es/components/card/documentation/examples/FakturainfoExample.d.ts +1 -1
  256. package/build/es/components/card/documentation/examples/StatuskortExample.d.ts +1 -1
  257. package/build/es/components/card/types.js.map +1 -1
  258. package/build/es/components/card/utils.js.map +1 -1
  259. package/build/es/components/checkbox/Checkbox.js.map +1 -1
  260. package/build/es/components/combobox/Combobox.js.map +1 -1
  261. package/build/es/components/combobox/index.d.ts +1 -1
  262. package/build/es/components/cookie-consent/CookieConsent.js.map +1 -1
  263. package/build/es/components/cookie-consent/CookieConsentContext.js.map +1 -1
  264. package/build/es/components/cookie-consent/CookieConsentModal.js.map +1 -1
  265. package/build/es/components/cookie-consent/consents/CustomConsents.js.map +1 -1
  266. package/build/es/components/cookie-consent/consents/DefaultConsents.js.map +1 -1
  267. package/build/es/components/cookie-consent/consents/RequirementCheckbox.d.ts +1 -1
  268. package/build/es/components/cookie-consent/consents/RequirementCheckbox.js.map +1 -1
  269. package/build/es/components/cookie-consent/cookieConsentUtils.d.ts +1 -1
  270. package/build/es/components/cookie-consent/cookieConsentUtils.js.map +1 -1
  271. package/build/es/components/cookie-consent/index.d.ts +1 -1
  272. package/build/es/components/datepicker/DatePicker.js.map +1 -1
  273. package/build/es/components/datepicker/internal/Calendar.js.map +1 -1
  274. package/build/es/components/datepicker/internal/calendarReducer.js.map +1 -1
  275. package/build/es/components/datepicker/internal/useCalendar.js.map +1 -1
  276. package/build/es/components/datepicker/internal/utils.d.ts +2 -2
  277. package/build/es/components/datepicker/internal/utils.js.map +1 -1
  278. package/build/es/components/datepicker/utils.js.map +1 -1
  279. package/build/es/components/description-list/DescriptionList.js.map +1 -1
  280. package/build/es/components/expander/ExpandSection.js.map +1 -1
  281. package/build/es/components/expander/Expander.js.map +1 -1
  282. package/build/es/components/feedback/Feedback.js.map +1 -1
  283. package/build/es/components/feedback/FeedbackSuccess.js.map +1 -1
  284. package/build/es/components/feedback/FeedbackValues.js.map +1 -1
  285. package/build/es/components/feedback/feedbackContext.js.map +1 -1
  286. package/build/es/components/feedback/followup/Followup.js.map +1 -1
  287. package/build/es/components/feedback/followup/followupContext.js.map +1 -1
  288. package/build/es/components/feedback/followup/useFollowup.js.map +1 -1
  289. package/build/es/components/feedback/main-question/MainQuestion.js.map +1 -1
  290. package/build/es/components/feedback/main-question/mainQuestionContext.js.map +1 -1
  291. package/build/es/components/feedback/main-question/useMainQuestion.js.map +1 -1
  292. package/build/es/components/feedback/presets.js.map +1 -1
  293. package/build/es/components/feedback/questions/AddonQuestion.js.map +1 -1
  294. package/build/es/components/feedback/questions/CheckboxQuestion.js.map +1 -1
  295. package/build/es/components/feedback/questions/ContactQuestion.js.map +1 -1
  296. package/build/es/components/feedback/questions/RadioQuestion.js.map +1 -1
  297. package/build/es/components/feedback/questions/SmileyQuestion.js.map +1 -1
  298. package/build/es/components/feedback/questions/TextQuestion.js.map +1 -1
  299. package/build/es/components/feedback/questions/smileyUtils.js.map +1 -1
  300. package/build/es/components/feedback/utils.js.map +1 -1
  301. package/build/es/components/flex/Flex.js.map +1 -1
  302. package/build/es/components/icon/Icon.js.map +1 -1
  303. package/build/es/components/icon/icons/ArrowDownIcon.js.map +1 -1
  304. package/build/es/components/icon/icons/ArrowLeftIcon.js.map +1 -1
  305. package/build/es/components/icon/icons/ArrowNorthEastIcon.js.map +1 -1
  306. package/build/es/components/icon/icons/ArrowRightIcon.js.map +1 -1
  307. package/build/es/components/icon/icons/ArrowUpIcon.js.map +1 -1
  308. package/build/es/components/icon/icons/CalendarIcon.js.map +1 -1
  309. package/build/es/components/icon/icons/CheckIcon.js.map +1 -1
  310. package/build/es/components/icon/icons/ChevronDownIcon.js.map +1 -1
  311. package/build/es/components/icon/icons/ChevronLeftIcon.js.map +1 -1
  312. package/build/es/components/icon/icons/ChevronRightIcon.js.map +1 -1
  313. package/build/es/components/icon/icons/ChevronUpIcon.js.map +1 -1
  314. package/build/es/components/icon/icons/CloseIcon.js.map +1 -1
  315. package/build/es/components/icon/icons/CopyIcon.js.map +1 -1
  316. package/build/es/components/icon/icons/DotsIcon.js.map +1 -1
  317. package/build/es/components/icon/icons/DragIcon.js.map +1 -1
  318. package/build/es/components/icon/icons/GreenCheckIcon.js.map +1 -1
  319. package/build/es/components/icon/icons/HamburgerIcon.js.map +1 -1
  320. package/build/es/components/icon/icons/LinkIcon.js.map +1 -1
  321. package/build/es/components/icon/icons/MinusIcon.js.map +1 -1
  322. package/build/es/components/icon/icons/PenIcon.js.map +1 -1
  323. package/build/es/components/icon/icons/PlusIcon.js.map +1 -1
  324. package/build/es/components/icon/icons/QuestionIcon.js.map +1 -1
  325. package/build/es/components/icon/icons/RedCrossIcon.js.map +1 -1
  326. package/build/es/components/icon/icons/SearchIcon.js.map +1 -1
  327. package/build/es/components/icon/icons/ThumbDownIcon.js.map +1 -1
  328. package/build/es/components/icon/icons/ThumbUpIcon.js.map +1 -1
  329. package/build/es/components/icon/icons/TrashCanIcon.js.map +1 -1
  330. package/build/es/components/icon/icons/animated/ArrowHorizontalAnimated.js.map +1 -1
  331. package/build/es/components/icon/icons/animated/ArrowVerticalAnimated.js.map +1 -1
  332. package/build/es/components/icon/icons/animated/PlusRemoveAnimated.js.map +1 -1
  333. package/build/es/components/icon-button/IconButton.js.map +1 -1
  334. package/build/es/components/image/Image.js.map +1 -1
  335. package/build/es/components/image/useImageLoadingStatus.js.map +1 -1
  336. package/build/es/components/index.d.ts +1 -1
  337. package/build/es/components/input-group/FieldGroup.js.map +1 -1
  338. package/build/es/components/input-group/InputGroup.js.map +1 -1
  339. package/build/es/components/input-group/Label.js.map +1 -1
  340. package/build/es/components/input-group/SupportLabel.js.map +1 -1
  341. package/build/es/components/input-group/index.d.ts +2 -2
  342. package/build/es/components/link/Link.js.map +1 -1
  343. package/build/es/components/link/NavLink.js.map +1 -1
  344. package/build/es/components/link-list/LinkList.js.map +1 -1
  345. package/build/es/components/loader/index.d.ts +2 -2
  346. package/build/es/components/loader/skeletons/SkeletonAnimation.js.map +1 -1
  347. package/build/es/components/loader/skeletons/SkeletonButton.js.map +1 -1
  348. package/build/es/components/loader/skeletons/SkeletonCheckboxGroup.js.map +1 -1
  349. package/build/es/components/loader/skeletons/SkeletonElement.js.map +1 -1
  350. package/build/es/components/loader/skeletons/SkeletonInput.js.map +1 -1
  351. package/build/es/components/loader/skeletons/SkeletonLabel.js.map +1 -1
  352. package/build/es/components/loader/skeletons/SkeletonRadioButtonGroup.js.map +1 -1
  353. package/build/es/components/loader/skeletons/SkeletonTable.js.map +1 -1
  354. package/build/es/components/loader/skeletons/SkeletonTextArea.js.map +1 -1
  355. package/build/es/components/loader/useDelayedRender.js.map +1 -1
  356. package/build/es/components/logo/Logo.js.map +1 -1
  357. package/build/es/components/logo/LogoStamp.js.map +1 -1
  358. package/build/es/components/logo/useTextSpinner.js.map +1 -1
  359. package/build/es/components/menu/Menu.js.map +1 -1
  360. package/build/es/components/menu/MenuItem.js.map +1 -1
  361. package/build/es/components/menu/MenuItemCheckbox.js.map +1 -1
  362. package/build/es/components/menu/index.d.ts +1 -1
  363. package/build/es/components/message/DismissButton.js.map +1 -1
  364. package/build/es/components/message/FormErrorMessage.js.map +1 -1
  365. package/build/es/components/message/Message.js.map +1 -1
  366. package/build/es/components/message/index.d.ts +2 -2
  367. package/build/es/components/modal/Modal.js.map +1 -1
  368. package/build/es/components/modal/index.d.ts +1 -1
  369. package/build/es/components/modal/useModal.js.map +1 -1
  370. package/build/es/components/pagination/Pagination.js.map +1 -1
  371. package/build/es/components/popover/Popover.js.map +1 -1
  372. package/build/es/components/progress-bar/Countdown.js.map +1 -1
  373. package/build/es/components/radio-button/BaseRadioButton.js.map +1 -1
  374. package/build/es/components/radio-button/RadioButton.js.map +1 -1
  375. package/build/es/components/radio-button/RadioButtonGroup.js.map +1 -1
  376. package/build/es/components/radio-button/radioGroupContext.js.map +1 -1
  377. package/build/es/components/radio-panel/RadioPanel.js.map +1 -1
  378. package/build/es/components/select/NativeSelect.js.map +1 -1
  379. package/build/es/components/select/Select.js.map +1 -1
  380. package/build/es/components/select/select-utils.js.map +1 -1
  381. package/build/es/components/summary-table/SummaryTable.js.map +1 -1
  382. package/build/es/components/summary-table/SummaryTableRow.js.map +1 -1
  383. package/build/es/components/summary-table/mocks.js.map +1 -1
  384. package/build/es/components/system-message/SystemMessage.js.map +1 -1
  385. package/build/es/components/system-message/common/DismissButton.js.map +1 -1
  386. package/build/es/components/system-message/common/MessageIcon.js.map +1 -1
  387. package/build/es/components/system-message/index.d.ts +1 -1
  388. package/build/es/components/table/DataTable.js.map +1 -1
  389. package/build/es/components/table/ExpandableTableRow.js.map +1 -1
  390. package/build/es/components/table/ExpandableTableRowController.js.map +1 -1
  391. package/build/es/components/table/Table.js.map +1 -1
  392. package/build/es/components/table/TableBody.js.map +1 -1
  393. package/build/es/components/table/TableCaption.js.map +1 -1
  394. package/build/es/components/table/TableCell.js.map +1 -1
  395. package/build/es/components/table/TableColumn.js.map +1 -1
  396. package/build/es/components/table/TableColumnGroup.js.map +1 -1
  397. package/build/es/components/table/TableFooter.js.map +1 -1
  398. package/build/es/components/table/TableHead.js.map +1 -1
  399. package/build/es/components/table/TableHeader.js.map +1 -1
  400. package/build/es/components/table/TablePagination.js.map +1 -1
  401. package/build/es/components/table/TableRow.js.map +1 -1
  402. package/build/es/components/table/index.d.ts +1 -1
  403. package/build/es/components/table/tableContext.js.map +1 -1
  404. package/build/es/components/table/tableSectionContext.js.map +1 -1
  405. package/build/es/components/table/utils.js.map +1 -1
  406. package/build/es/components/tabs/NavTab.js.map +1 -1
  407. package/build/es/components/tabs/NavTabs.js.map +1 -1
  408. package/build/es/components/tabs/Tab.js.map +1 -1
  409. package/build/es/components/tabs/TabList.js.map +1 -1
  410. package/build/es/components/tabs/Tabs.js.map +1 -1
  411. package/build/es/components/tag/Tag.js.map +1 -1
  412. package/build/es/components/text-input/BaseTextArea.js.map +1 -1
  413. package/build/es/components/text-input/BaseTextInput.js.map +1 -1
  414. package/build/es/components/text-input/TextArea.js.map +1 -1
  415. package/build/es/components/text-input/TextInput.js.map +1 -1
  416. package/build/es/components/toast/Toast.js.map +1 -1
  417. package/build/es/components/toast/ToastRegion.d.ts +1 -1
  418. package/build/es/components/toast/ToastRegion.js.map +1 -1
  419. package/build/es/components/toast/toastContext.js.map +1 -1
  420. package/build/es/components/toggle-switch/ToggleSlider.js.map +1 -1
  421. package/build/es/components/toggle-switch/ToggleSwitch.js.map +1 -1
  422. package/build/es/components/toggle-switch/usePillStyles.js.map +1 -1
  423. package/build/es/components/tooltip/PopupTip.js.map +1 -1
  424. package/build/es/components/tooltip/Tooltip.js.map +1 -1
  425. package/build/es/components/tooltip/TooltipContent.js.map +1 -1
  426. package/build/es/components/tooltip/TooltipTrigger.js.map +1 -1
  427. package/build/es/components/tooltip/index.d.ts +1 -1
  428. package/build/es/hooks/index.d.ts +5 -5
  429. package/build/es/hooks/mediaQueryUtils.js.map +1 -1
  430. package/build/es/hooks/useAnimatedDetails/useAnimatedDetails.js.map +1 -1
  431. package/build/es/hooks/useAnimatedHeight/index.d.ts +1 -1
  432. package/build/es/hooks/useAnimatedHeight/useAnimatedHeight.js.map +1 -1
  433. package/build/es/hooks/useAnimatedHeight/useAnimatedHeightBetween.js.map +1 -1
  434. package/build/es/hooks/useAnimatedHeight/useAutoAnimateHeight.js.map +1 -1
  435. package/build/es/hooks/useAriaLiveRegion/index.d.ts +1 -1
  436. package/build/es/hooks/useAriaLiveRegion/useAriaLiveRegion.js.map +1 -1
  437. package/build/es/hooks/useBrowserPreferences/useBrowserPreferences.js.map +1 -1
  438. package/build/es/hooks/useClickOutside/useClickOutside.js.map +1 -1
  439. package/build/es/hooks/useElementDimensions/index.d.ts +1 -1
  440. package/build/es/hooks/useElementDimensions/useElementDimensions.js.map +1 -1
  441. package/build/es/hooks/useFocusOutside/useFocusOutside.js.map +1 -1
  442. package/build/es/hooks/useIntersectionObserver/useIntersectionObserver.js.map +1 -1
  443. package/build/es/hooks/useListNavigation/useListNavigation.d.ts +1 -1
  444. package/build/es/hooks/useListNavigation/useListNavigation.js.map +1 -1
  445. package/build/es/hooks/useLocalStorage/useLocalStorage.js.map +1 -1
  446. package/build/es/hooks/useMutationObserver/useMutationObserver.js.map +1 -1
  447. package/build/es/hooks/useProgressiveImg/index.d.ts +1 -1
  448. package/build/es/hooks/useProgressiveImg/useProgressiveImg.d.ts +1 -1
  449. package/build/es/hooks/useProgressiveImg/useProgressiveImg.js.map +1 -1
  450. package/build/es/hooks/useScreen/state.js.map +1 -1
  451. package/build/es/hooks/useScreen/useScreen.js.map +1 -1
  452. package/build/es/hooks/useScrollIntoView/index.d.ts +1 -1
  453. package/build/es/hooks/useSwipeGesture/useSwipeGesture.js.map +1 -1
  454. package/build/es/utilities/formatters/avstand/formatAvstand.js.map +1 -1
  455. package/build/es/utilities/formatters/bytes/formatBytes.js.map +1 -1
  456. package/build/es/utilities/formatters/date/formatDate.js.map +1 -1
  457. package/build/es/utilities/formatters/fodselsnummer/formatFodselsnummer.js.map +1 -1
  458. package/build/es/utilities/formatters/index.d.ts +5 -5
  459. package/build/es/utilities/formatters/kontonummer/formatKontonummer.js.map +1 -1
  460. package/build/es/utilities/formatters/kortnummer/formatKortnummer.js.map +1 -1
  461. package/build/es/utilities/formatters/organisasjonsnummer/formatOrganisasjonsnummer.js.map +1 -1
  462. package/build/es/utilities/formatters/telefonnummer/formatTelefonnummer.js.map +1 -1
  463. package/build/es/utilities/formatters/util/formatNumber.js.map +1 -1
  464. package/build/es/utilities/formatters/util/parseNumber.js.map +1 -1
  465. package/build/es/utilities/formatters/util/registerWithMask.js.map +1 -1
  466. package/build/es/utilities/formatters/valuta/formatValuta.js.map +1 -1
  467. package/build/es/utilities/getThemeAndDensity.js.map +1 -1
  468. package/build/es/utilities/polymorphism/SlotComponent.js.map +1 -1
  469. package/build/es/utilities/polymorphism/index.d.ts +1 -1
  470. package/build/es/utilities/polymorphism/mergeProps.js.map +1 -1
  471. package/build/es/utilities/polymorphism/mergeRefs.js.map +1 -1
  472. package/build/es/utilities/tabListener.js.map +1 -1
  473. package/build/es/utilities/validators/hasMinimumWords/hasMinimumWords.js.map +1 -1
  474. package/build/es/utilities/validators/hasNoIllegalCharacters/hasNoIllegalCharacters.js.map +1 -1
  475. package/build/es/utilities/validators/isValidChassisnummer/isValidChassisnummer.js.map +1 -1
  476. package/build/es/utilities/validators/isValidEpost/isValidEpost.js.map +1 -1
  477. package/build/es/utilities/validators/isValidFodselsnummer/isValidFodselsnummer.js.map +1 -1
  478. package/build/es/utilities/validators/isValidKortnummer/isValidKortnummer.js.map +1 -1
  479. package/build/es/utilities/validators/isValidName/isValidName.js.map +1 -1
  480. package/build/es/utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.js.map +1 -1
  481. package/build/es/utilities/validators/isValidTelefonnummer/isValidTelefonnummer.js.map +1 -1
  482. package/package.json +2 -2
  483. package/styles/components/button/button.css +2 -2
  484. package/styles/components/button/button.min.css +1 -1
  485. package/styles/components/checkbox/checkbox.css +4 -4
  486. package/styles/components/checkbox/checkbox.min.css +1 -1
  487. package/styles/components/feedback/feedback.css +2 -2
  488. package/styles/components/feedback/feedback.min.css +1 -1
  489. package/styles/components/input-group/input-group.css +2 -2
  490. package/styles/components/input-group/input-group.min.css +1 -1
  491. package/styles/components/loader/loader.css +6 -6
  492. package/styles/components/loader/loader.min.css +1 -1
  493. package/styles/components/loader/skeleton-loader.css +5 -5
  494. package/styles/components/loader/skeleton-loader.min.css +1 -1
  495. package/styles/components/message/message.css +2 -2
  496. package/styles/components/message/message.min.css +1 -1
  497. package/styles/components/progress-bar/progress-bar.css +2 -2
  498. package/styles/components/progress-bar/progress-bar.min.css +1 -1
  499. package/styles/components/radio-button/radio-button.css +2 -2
  500. package/styles/components/radio-button/radio-button.min.css +1 -1
  501. package/styles/components/radio-panel/radio-panel.css +6 -6
  502. package/styles/components/radio-panel/radio-panel.min.css +1 -1
  503. package/styles/components/system-message/system-message.css +2 -2
  504. package/styles/components/system-message/system-message.min.css +1 -1
  505. package/styles/components/toast/toast.css +4 -4
  506. package/styles/components/toast/toast.min.css +1 -1
  507. package/styles/styles.css +35 -35
  508. package/styles/styles.min.css +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"isValidFodselsnummer.cjs","sources":["../../../../../src/utilities/validators/isValidFodselsnummer/isValidFodselsnummer.ts"],"sourcesContent":["/**\n * MIT License\n *\n * Copyright (c) 2019 Ivar Nilsen\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n// https://github.com/ivarni/ninno\n\nconst K1_FACTORS = [3, 7, 6, 1, 8, 9, 4, 5, 2];\nconst K2_FACTORS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n\nconst getChecksumDigit = (fnr: string, factors: number[]) => {\n const sum =\n 11 -\n (Array.from(fnr.substring(0, factors.length)).reduce((_sum, digit, i) => _sum + Number(digit) * factors[i], 0) %\n 11);\n return sum === 11 ? 0 : sum;\n};\n\nexport const getChecksumDigits = (fnr: string) => {\n const k1 = getChecksumDigit(fnr, K1_FACTORS);\n return [k1, getChecksumDigit(fnr + k1, K2_FACTORS)];\n};\n\n/**\n * Sjekker om verdien validerer som et gyldig fødselsnummer.\n * @param value Verdien som skal valideres\n * @returns Om verdien er et gyldig fødselsnummer\n */\nexport const isValidFodselsnummer = (value: string): boolean => {\n if (!value || value.length !== 11 || value === \"00000000000\") {\n return false;\n }\n\n if (Number(value.charAt(9)) !== getChecksumDigit(value, K1_FACTORS)) {\n return false;\n }\n\n return Number(value.charAt(10)) === getChecksumDigit(value, K2_FACTORS);\n};\n"],"names":["K1_FACTORS","K2_FACTORS","getChecksumDigit","fnr","factors","sum","Array","from","substring","length","reduce","_sum","digit","i","Number","k1","value","charAt"],"mappings":"gFAyBA,MAAMA,EAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACtCC,EAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAEzCC,EAAmB,CAACC,EAAaC,KAC7B,MAAAC,EACF,GACCC,MAAMC,KAAKJ,EAAIK,UAAU,EAAGJ,EAAQK,SAASC,QAAO,CAACC,EAAMC,EAAOC,IAAMF,EAAOG,OAAOF,GAASR,EAAQS,IAAI,GACxG,GACD,OAAQ,KAARR,EAAa,EAAIA,6BAGMF,IACxB,MAAAY,EAAKb,EAAiBC,EAAKH,GACjC,MAAO,CAACe,EAAIb,EAAiBC,EAAMY,EAAId,GAAW,+BAQjBe,MAC5BA,GAA0B,KAAjBA,EAAMP,QAA2B,gBAAVO,GAIjCF,OAAOE,EAAMC,OAAO,MAAQf,EAAiBc,EAAOhB,KAIjDc,OAAOE,EAAMC,OAAO,OAASf,EAAiBc,EAAOf"}
1
+ {"version":3,"file":"isValidFodselsnummer.cjs","sources":["../../../../../src/utilities/validators/isValidFodselsnummer/isValidFodselsnummer.ts"],"sourcesContent":["/**\n * MIT License\n *\n * Copyright (c) 2019 Ivar Nilsen\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\n// https://github.com/ivarni/ninno\n\nconst K1_FACTORS = [3, 7, 6, 1, 8, 9, 4, 5, 2];\nconst K2_FACTORS = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n\nconst getChecksumDigit = (fnr: string, factors: number[]) => {\n const sum =\n 11 -\n (Array.from(fnr.substring(0, factors.length)).reduce(\n (_sum, digit, i) => _sum + Number(digit) * factors[i],\n 0,\n ) %\n 11);\n return sum === 11 ? 0 : sum;\n};\n\nexport const getChecksumDigits = (fnr: string) => {\n const k1 = getChecksumDigit(fnr, K1_FACTORS);\n return [k1, getChecksumDigit(fnr + k1, K2_FACTORS)];\n};\n\n/**\n * Sjekker om verdien validerer som et gyldig fødselsnummer.\n * @param value Verdien som skal valideres\n * @returns Om verdien er et gyldig fødselsnummer\n */\nexport const isValidFodselsnummer = (value: string): boolean => {\n if (!value || value.length !== 11 || value === \"00000000000\") {\n return false;\n }\n\n if (Number(value.charAt(9)) !== getChecksumDigit(value, K1_FACTORS)) {\n return false;\n }\n\n return Number(value.charAt(10)) === getChecksumDigit(value, K2_FACTORS);\n};\n"],"names":["K1_FACTORS","K2_FACTORS","getChecksumDigit","fnr","factors","sum","Array","from","substring","length","reduce","_sum","digit","i","Number","k1","value","charAt"],"mappings":"gFAyBA,MAAMA,EAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GACtCC,EAAa,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAEzCC,EAAmB,CAACC,EAAaC,KAC7B,MAAAC,EACF,GACCC,MAAMC,KAAKJ,EAAIK,UAAU,EAAGJ,EAAQK,SAASC,QAC1C,CAACC,EAAMC,EAAOC,IAAMF,EAAOG,OAAOF,GAASR,EAAQS,IACnD,GAEA,GACD,OAAQ,KAARR,EAAa,EAAIA,6BAGMF,IACxB,MAAAY,EAAKb,EAAiBC,EAAKH,GACjC,MAAO,CAACe,EAAIb,EAAiBC,EAAMY,EAAId,GAAW,+BAQjBe,MAC5BA,GAA0B,KAAjBA,EAAMP,QAA2B,gBAAVO,GAIjCF,OAAOE,EAAMC,OAAO,MAAQf,EAAiBc,EAAOhB,KAIjDc,OAAOE,EAAMC,OAAO,OAASf,EAAiBc,EAAOf"}
@@ -1 +1 @@
1
- {"version":3,"file":"isValidKortnummer.cjs","sources":["../../../../../src/utilities/validators/isValidKortnummer/isValidKortnummer.ts"],"sourcesContent":["const KORTNUMMER_REGEX = /^(\\d{4}\\s?){4}$/;\n\nconst luhn = (input: string) => {\n const inputAsArray = input.replace(/\\D/g, \"\").split(\"\");\n\n if (inputAsArray.length !== 15) {\n return null;\n }\n\n function multiplyDigit(index: number, number: string) {\n // Gang hver andre index med 2 (index 0, 2, 4, etc.)\n const multiplier = index % 2 === 0 ? 2 : 1;\n const rawNumber = Number.parseInt(number) * multiplier;\n // Legg sammen sifrene hvis rawNumber har to sifre\n const crossSum = Math.floor(rawNumber / 10) + (rawNumber % 10);\n\n return crossSum;\n }\n\n const checksum = inputAsArray.reduce((sum, digit, index) => sum + multiplyDigit(index, digit), 0);\n const checkDigit = Math.abs((checksum % 10) - 10);\n\n return checkDigit;\n};\n\n/**\n * Sjekker at verdien er et gyldig kortnummer, mot Luhn-algoritmen (https://en.wikipedia.org/wiki/Luhn_algorithm).\n * @param input Verdien som skal valideres\n * @returns Om verdien validerer som et gyldig kortnummer\n */\nexport const isValidKortnummer = (input: string) => {\n if (!KORTNUMMER_REGEX.test(input)) {\n return false;\n }\n\n const strippedInput = input.replace(/\\D/g, \"\");\n const checkDigit = Number.parseInt(strippedInput.slice(-1));\n const firstFifteen = strippedInput.substring(0, strippedInput.length - 1);\n\n return checkDigit === luhn(firstFifteen);\n};\n"],"names":["KORTNUMMER_REGEX","luhn","input","inputAsArray","replace","split","length","checksum","reduce","sum","digit","index","number","multiplier","rawNumber","Number","parseInt","Math","floor","multiplyDigit","abs","test","strippedInput","checkDigit","slice","firstFifteen","substring"],"mappings":"gFAAA,MAAMA,EAAmB,kBAEnBC,EAAQC,IACV,MAAMC,EAAeD,EAAME,QAAQ,MAAO,IAAIC,MAAM,IAEhD,GAAwB,KAAxBF,EAAaG,OACN,OAAA,KAaX,MAAMC,EAAWJ,EAAaK,QAAO,CAACC,EAAKC,EAAOC,IAAUF,EAVnD,SAAcE,EAAeC,GAElC,MAAMC,EAAaF,EAAQ,GAAM,EAAI,EAAI,EACnCG,EAAYC,OAAOC,SAASJ,GAAUC,EAIrC,OAFUI,KAAKC,MAAMJ,EAAY,IAAOA,EAAY,EAG/D,CAEkEK,CAAcR,EAAOD,IAAQ,GAGxF,OAFYO,KAAKG,IAAKb,EAAW,GAAM,GAAE,4BAUlBL,IAC9B,IAAKF,EAAiBqB,KAAKnB,GAChB,OAAA,EAGX,MAAMoB,EAAgBpB,EAAME,QAAQ,MAAO,IACrCmB,EAAaR,OAAOC,SAASM,EAAcE,OAAQ,IACnDC,EAAeH,EAAcI,UAAU,EAAGJ,EAAchB,OAAS,GAEhE,OAAAiB,IAAetB,EAAKwB,EAAY"}
1
+ {"version":3,"file":"isValidKortnummer.cjs","sources":["../../../../../src/utilities/validators/isValidKortnummer/isValidKortnummer.ts"],"sourcesContent":["const KORTNUMMER_REGEX = /^(\\d{4}\\s?){4}$/;\n\nconst luhn = (input: string) => {\n const inputAsArray = input.replace(/\\D/g, \"\").split(\"\");\n\n if (inputAsArray.length !== 15) {\n return null;\n }\n\n function multiplyDigit(index: number, number: string) {\n // Gang hver andre index med 2 (index 0, 2, 4, etc.)\n const multiplier = index % 2 === 0 ? 2 : 1;\n const rawNumber = Number.parseInt(number) * multiplier;\n // Legg sammen sifrene hvis rawNumber har to sifre\n const crossSum = Math.floor(rawNumber / 10) + (rawNumber % 10);\n\n return crossSum;\n }\n\n const checksum = inputAsArray.reduce(\n (sum, digit, index) => sum + multiplyDigit(index, digit),\n 0,\n );\n const checkDigit = Math.abs((checksum % 10) - 10);\n\n return checkDigit;\n};\n\n/**\n * Sjekker at verdien er et gyldig kortnummer, mot Luhn-algoritmen (https://en.wikipedia.org/wiki/Luhn_algorithm).\n * @param input Verdien som skal valideres\n * @returns Om verdien validerer som et gyldig kortnummer\n */\nexport const isValidKortnummer = (input: string) => {\n if (!KORTNUMMER_REGEX.test(input)) {\n return false;\n }\n\n const strippedInput = input.replace(/\\D/g, \"\");\n const checkDigit = Number.parseInt(strippedInput.slice(-1));\n const firstFifteen = strippedInput.substring(0, strippedInput.length - 1);\n\n return checkDigit === luhn(firstFifteen);\n};\n"],"names":["KORTNUMMER_REGEX","luhn","input","inputAsArray","replace","split","length","checksum","reduce","sum","digit","index","number","multiplier","rawNumber","Number","parseInt","Math","floor","multiplyDigit","abs","test","strippedInput","checkDigit","slice","firstFifteen","substring"],"mappings":"gFAAA,MAAMA,EAAmB,kBAEnBC,EAAQC,IACV,MAAMC,EAAeD,EAAME,QAAQ,MAAO,IAAIC,MAAM,IAEhD,GAAwB,KAAxBF,EAAaG,OACN,OAAA,KAaX,MAAMC,EAAWJ,EAAaK,QAC1B,CAACC,EAAKC,EAAOC,IAAUF,EAXlB,SAAcE,EAAeC,GAElC,MAAMC,EAAaF,EAAQ,GAAM,EAAI,EAAI,EACnCG,EAAYC,OAAOC,SAASJ,GAAUC,EAIrC,OAFUI,KAAKC,MAAMJ,EAAY,IAAOA,EAAY,EAG/D,CAGiCK,CAAcR,EAAOD,IAClD,GAIG,OAFYO,KAAKG,IAAKb,EAAW,GAAM,GAAE,4BAUlBL,IAC9B,IAAKF,EAAiBqB,KAAKnB,GAChB,OAAA,EAGX,MAAMoB,EAAgBpB,EAAME,QAAQ,MAAO,IACrCmB,EAAaR,OAAOC,SAASM,EAAcE,OAAQ,IACnDC,EAAeH,EAAcI,UAAU,EAAGJ,EAAchB,OAAS,GAEhE,OAAAiB,IAAetB,EAAKwB,EAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"isValidName.cjs","sources":["../../../../../src/utilities/validators/isValidName/isValidName.ts"],"sourcesContent":["// https://en.wikipedia.org/wiki/List_of_Unicode_characters\n// Checks for all Punctuation, Symbols or Digits until Unicode position 191, but allows Apostrophe and Minus\nexport const INVALID_NAME_REGEX = /[!-&(-,.-@\\[-`{-¿]+/;\n\n/**\n * Sjekker om verdien inneholder spesialtegn som ikke er vanlige i navn.\n * @param value Verdien som skal valideres\n * @returns Om verdien anses som et gyldig navn\n */\nexport const isValidName = (value: string): boolean => !INVALID_NAME_REGEX.test(value);\n"],"names":["INVALID_NAME_REGEX","value","test"],"mappings":"gFAEO,MAAMA,EAAqB,uEAONC,IAA4BD,EAAmBE,KAAKD"}
1
+ {"version":3,"file":"isValidName.cjs","sources":["../../../../../src/utilities/validators/isValidName/isValidName.ts"],"sourcesContent":["// https://en.wikipedia.org/wiki/List_of_Unicode_characters\n// Checks for all Punctuation, Symbols or Digits until Unicode position 191, but allows Apostrophe and Minus\nexport const INVALID_NAME_REGEX = /[!-&(-,.-@\\[-`{-¿]+/;\n\n/**\n * Sjekker om verdien inneholder spesialtegn som ikke er vanlige i navn.\n * @param value Verdien som skal valideres\n * @returns Om verdien anses som et gyldig navn\n */\nexport const isValidName = (value: string): boolean =>\n !INVALID_NAME_REGEX.test(value);\n"],"names":["INVALID_NAME_REGEX","value","test"],"mappings":"gFAEO,MAAMA,EAAqB,uEAONC,IACvBD,EAAmBE,KAAKD"}
@@ -1 +1 @@
1
- {"version":3,"file":"isValidOrganisasjonsnummer.cjs","sources":["../../../../../src/utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.ts"],"sourcesContent":["/**\n * This algorithm is called the Modulus 11 algorithm, and produces a checksum\n * based on its input. It's documented very well in Norwegian here:\n * https://no.wikipedia.org/wiki/MOD11\n *\n * It's used here to validate that an organization number is valid.\n */\nconst calculateChecksum = (reversedNumbers: number[]) => {\n const controlSum = reversedNumbers.map((number, i) => number * ((i % 6) + 2)).reduce((a, b) => a + b, 0);\n const result = 11 - (controlSum % 11);\n return result === 11 ? 0 : result;\n};\n\n/**\n * Sjekker om verdien validerer som et gyldig organisasjonsnummer etter Modulus 11-algoritmen (https://no.wikipedia.org/wiki/MOD11).\n * @param value Verdien som skal valideres\n * @returns Om verdien er et gyldig organisasjonsnummer\n */\nexport const isValidOrganisasjonsnummer = (value: string) => {\n if (!value || value.length !== 9) {\n return false;\n }\n\n const [controlDigit, ...numbers] = value\n .split(\"\")\n .map((number) => Number(number))\n .reverse();\n\n return calculateChecksum(numbers) === controlDigit;\n};\n"],"names":["value","length","controlDigit","numbers","split","map","number","Number","reverse","reversedNumbers","result","i","reduce","a","b","calculateChecksum"],"mappings":"mHAkB2CA,IACvC,IAAKA,GAA0B,IAAjBA,EAAMC,OACT,OAAA,EAGX,MAAOC,KAAiBC,GAAWH,EAC9BI,MAAM,IACNC,KAAKC,GAAWC,OAAOD,KACvBE,UAEE,MArBgBC,KAEjB,MAAAC,EAAS,GADID,EAAgBJ,KAAI,CAACC,EAAQK,IAAML,GAAWK,EAAI,EAAK,KAAIC,QAAO,CAACC,EAAGC,IAAMD,EAAIC,GAAG,GACpE,GAC3B,OAAW,KAAXJ,EAAgB,EAAIA,GAkBpBK,CAAkBZ,KAAaD"}
1
+ {"version":3,"file":"isValidOrganisasjonsnummer.cjs","sources":["../../../../../src/utilities/validators/isValidOrganisasjonsnummer/isValidOrganisasjonsnummer.ts"],"sourcesContent":["/**\n * This algorithm is called the Modulus 11 algorithm, and produces a checksum\n * based on its input. It's documented very well in Norwegian here:\n * https://no.wikipedia.org/wiki/MOD11\n *\n * It's used here to validate that an organization number is valid.\n */\nconst calculateChecksum = (reversedNumbers: number[]) => {\n const controlSum = reversedNumbers\n .map((number, i) => number * ((i % 6) + 2))\n .reduce((a, b) => a + b, 0);\n const result = 11 - (controlSum % 11);\n return result === 11 ? 0 : result;\n};\n\n/**\n * Sjekker om verdien validerer som et gyldig organisasjonsnummer etter Modulus 11-algoritmen (https://no.wikipedia.org/wiki/MOD11).\n * @param value Verdien som skal valideres\n * @returns Om verdien er et gyldig organisasjonsnummer\n */\nexport const isValidOrganisasjonsnummer = (value: string) => {\n if (!value || value.length !== 9) {\n return false;\n }\n\n const [controlDigit, ...numbers] = value\n .split(\"\")\n .map((number) => Number(number))\n .reverse();\n\n return calculateChecksum(numbers) === controlDigit;\n};\n"],"names":["value","length","controlDigit","numbers","split","map","number","Number","reverse","reversedNumbers","result","i","reduce","a","b","calculateChecksum"],"mappings":"mHAoB2CA,IACvC,IAAKA,GAA0B,IAAjBA,EAAMC,OACT,OAAA,EAGX,MAAOC,KAAiBC,GAAWH,EAC9BI,MAAM,IACNC,KAAKC,GAAWC,OAAOD,KACvBE,UAEE,MAvBgBC,KAIjB,MAAAC,EAAS,GAHID,EACdJ,KAAI,CAACC,EAAQK,IAAML,GAAWK,EAAI,EAAK,KACvCC,QAAO,CAACC,EAAGC,IAAMD,EAAIC,GAAG,GACK,GAC3B,OAAW,KAAXJ,EAAgB,EAAIA,GAkBpBK,CAAkBZ,KAAaD"}
@@ -1 +1 @@
1
- {"version":3,"file":"isValidTelefonnummer.cjs","sources":["../../../../../src/utilities/validators/isValidTelefonnummer/isValidTelefonnummer.ts"],"sourcesContent":["export const PHONENR_REGEX = /^\\d{8}$/;\n\n/**\n * Validerer om en kandidat er et gyldig (uformatert) telefonnummer uten landkode.\n * @param value Kandidat for telefonnummer\n * @returns Om kandidaten er et gyldig telefonnummer\n */\nexport const isValidTelefonnummer = (value: string): boolean => PHONENR_REGEX.test(value);\n"],"names":["PHONENR_REGEX","value","test"],"mappings":"gFAAO,MAAMA,EAAgB,+DAOQC,GAA2BD,EAAcE,KAAKD"}
1
+ {"version":3,"file":"isValidTelefonnummer.cjs","sources":["../../../../../src/utilities/validators/isValidTelefonnummer/isValidTelefonnummer.ts"],"sourcesContent":["export const PHONENR_REGEX = /^\\d{8}$/;\n\n/**\n * Validerer om en kandidat er et gyldig (uformatert) telefonnummer uten landkode.\n * @param value Kandidat for telefonnummer\n * @returns Om kandidaten er et gyldig telefonnummer\n */\nexport const isValidTelefonnummer = (value: string): boolean =>\n PHONENR_REGEX.test(value);\n"],"names":["PHONENR_REGEX","value","test"],"mappings":"gFAAO,MAAMA,EAAgB,+DAOQC,GACjCD,EAAcE,KAAKD"}
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenReaderOnly.js","sources":["../../../src/components/ScreenReaderOnly.tsx"],"sourcesContent":["import React, { FC } from \"react\";\nimport { WithChildren } from \"../core/types.js\";\n\nexport interface ScreenReaderOnlyProps extends WithChildren {\n showOnFocus?: boolean;\n}\n\nexport const ScreenReaderOnly: FC<ScreenReaderOnlyProps> = ({ children, showOnFocus, ...rest }) => (\n <span {...rest} className={`jkl-sr-only${showOnFocus ? \" jkl-sr-only--focusable\" : \"\"}`}>\n {children}\n </span>\n);\n"],"names":["ScreenReaderOnly","children","showOnFocus","rest","jsx","className"],"mappings":"wCAOO,MAAMA,EAA8C,EAAGC,SAAAA,EAAUC,YAAAA,KAAgBC,KACpFC,EAAC,OAAM,IAAGD,EAAME,UAAW,eAAcH,EAAc,0BAA4B,IAC9ED,SAAAA"}
1
+ {"version":3,"file":"ScreenReaderOnly.js","sources":["../../../src/components/ScreenReaderOnly.tsx"],"sourcesContent":["import React, { FC } from \"react\";\nimport { WithChildren } from \"../core/types.js\";\n\nexport interface ScreenReaderOnlyProps extends WithChildren {\n showOnFocus?: boolean;\n}\n\nexport const ScreenReaderOnly: FC<ScreenReaderOnlyProps> = ({\n children,\n showOnFocus,\n ...rest\n}) => (\n <span\n {...rest}\n className={`jkl-sr-only${showOnFocus ? \" jkl-sr-only--focusable\" : \"\"}`}\n >\n {children}\n </span>\n);\n"],"names":["ScreenReaderOnly","children","showOnFocus","rest","jsx","className"],"mappings":"wCAOO,MAAMA,EAA8C,EACvDC,SAAAA,EACAC,YAAAA,KACGC,KAEHC,EAAC,OAAA,IACOD,EACJE,UAAW,eAAcH,EAAc,0BAA4B,IAElED,SAAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Accordion.js","sources":["../../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\n\nexport interface AccordionProps extends WithChildren {\n className?: string;\n density?: Density;\n id?: string;\n}\n\nexport const Accordion: FC<AccordionProps> = ({ className, density, id, ...rest }) => {\n return (\n <section\n role=\"group\"\n data-testid=\"jkl-accordion\"\n className={clsx(\"jkl-accordion\", className)}\n data-density={density}\n id={id}\n {...rest}\n />\n );\n};\n"],"names":["Accordion","className","density","id","rest","jsx","role","clsx"],"mappings":"sFAUa,MAAAA,EAAgC,EAAGC,UAAAA,EAAWC,QAAAA,EAASC,GAAAA,KAAOC,KAEnEC,EAAC,UAAA,CACGC,KAAK,QACL,cAAY,gBACZL,UAAWM,EAAK,gBAAiBN,GACjC,eAAcC,EACdC,GAAAA,KACIC"}
1
+ {"version":3,"file":"Accordion.js","sources":["../../../../src/components/accordion/Accordion.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\n\nexport interface AccordionProps extends WithChildren {\n className?: string;\n density?: Density;\n id?: string;\n}\n\nexport const Accordion: FC<AccordionProps> = ({\n className,\n density,\n id,\n ...rest\n}) => {\n return (\n <section\n role=\"group\"\n data-testid=\"jkl-accordion\"\n className={clsx(\"jkl-accordion\", className)}\n data-density={density}\n id={id}\n {...rest}\n />\n );\n};\n"],"names":["Accordion","className","density","id","rest","jsx","role","clsx"],"mappings":"sFAUO,MAAMA,EAAgC,EACzCC,UAAAA,EACAC,QAAAA,EACAC,GAAAA,KACGC,KAGCC,EAAC,UAAA,CACGC,KAAK,QACL,cAAY,gBACZL,UAAWM,EAAK,gBAAiBN,GACjC,eAAcC,EACdC,GAAAA,KACIC"}
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionItem.js","sources":["../../../../src/components/accordion/AccordionItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC, useState } from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\nimport { useAnimatedDetails } from \"../../hooks/useAnimatedDetails/useAnimatedDetails.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\n\nexport interface AccordionItemProps extends WithChildren {\n title: string;\n startExpanded?: boolean;\n className?: string;\n onClick?: (e: React.MouseEvent, isOpen: boolean) => void;\n id?: string;\n}\n\nexport const AccordionItem: FC<AccordionItemProps> = ({\n children,\n title,\n className,\n startExpanded = false,\n onClick,\n id,\n ...rest\n}) => {\n const [isOpen, setIsOpen] = useState(startExpanded);\n const [expandOnMount] = useState(() => startExpanded);\n\n const { detailsRef, summaryRef, contentRef, onSummaryClick } = useAnimatedDetails({\n onOpenChange: (open, e) => {\n setIsOpen(open);\n if (onClick) {\n onClick(e, open);\n }\n },\n isExpanded: expandOnMount,\n });\n\n return (\n <details\n data-testid=\"jkl-accordion-item\"\n {...rest}\n className={clsx(\"jkl-accordion-item\", className)}\n ref={detailsRef}\n id={id}\n >\n <summary\n data-testid=\"jkl-accordion-item__title\"\n className=\"jkl-accordion-item__title\"\n onClick={onSummaryClick}\n ref={summaryRef}\n >\n {title}\n <ArrowVerticalAnimated\n variant=\"inherit\"\n className=\"jkl-accordion-item__arrow\"\n pointingDown={!isOpen}\n bold={isOpen}\n />\n </summary>\n <div\n data-testid=\"jkl-accordion-item__content-wrapper\"\n className=\"jkl-accordion-item__content-wrapper\"\n ref={contentRef}\n >\n <div className=\"jkl-accordion-item__content\">{children}</div>\n </div>\n </details>\n );\n};\n"],"names":["AccordionItem","children","title","className","startExpanded","onClick","id","rest","isOpen","setIsOpen","useState","expandOnMount","detailsRef","summaryRef","contentRef","onSummaryClick","useAnimatedDetails","onOpenChange","open","e","isExpanded","jsxs","clsx","ref","jsx","ArrowVerticalAnimated","variant","pointingDown","bold"],"mappings":"mTAcO,MAAMA,EAAwC,EACjDC,SAAAA,EACAC,MAAAA,EACAC,UAAAA,EACAC,cAAAA,GAAgB,EAChBC,QAAAA,EACAC,GAAAA,KACGC,MAEG,MAACC,EAAQC,GAAaC,EAASN,IAC9BO,GAAiBD,GAAS,IAAMN,KAE/BQ,WAAAA,EAAYC,WAAAA,EAAYC,WAAAA,EAAYC,eAAAA,GAAmBC,EAAmB,CAC9EC,aAAc,CAACC,EAAMC,KACjBV,EAAUS,GACNb,GACAA,EAAQc,EAAGD,EAAI,EAGvBE,WAAYT,IAIZ,OAAAU,EAAC,UAAA,CACG,cAAY,wBACRd,EACJJ,UAAWmB,EAAK,qBAAsBnB,GACtCoB,IAAKX,EACLN,GAAAA,EAEAL,SAAA,CAAAoB,EAAC,UAAA,CACG,cAAY,4BACZlB,UAAU,4BACVE,QAASU,EACTQ,IAAKV,EAEJZ,SAAA,CAAAC,EACDsB,EAACC,EAAA,CACGC,QAAQ,UACRvB,UAAU,4BACVwB,cAAenB,EACfoB,KAAMpB,OAGdgB,EAAC,MAAA,CACG,cAAY,sCACZrB,UAAU,sCACVoB,IAAKT,EAELb,SAACuB,EAAA,MAAA,CAAIrB,UAAU,8BAA+BF,SAAAA,QAClD"}
1
+ {"version":3,"file":"AccordionItem.js","sources":["../../../../src/components/accordion/AccordionItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC, useState } from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\nimport { useAnimatedDetails } from \"../../hooks/useAnimatedDetails/useAnimatedDetails.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\n\nexport interface AccordionItemProps extends WithChildren {\n title: string;\n startExpanded?: boolean;\n className?: string;\n onClick?: (e: React.MouseEvent, isOpen: boolean) => void;\n id?: string;\n}\n\nexport const AccordionItem: FC<AccordionItemProps> = ({\n children,\n title,\n className,\n startExpanded = false,\n onClick,\n id,\n ...rest\n}) => {\n const [isOpen, setIsOpen] = useState(startExpanded);\n const [expandOnMount] = useState(() => startExpanded);\n\n const { detailsRef, summaryRef, contentRef, onSummaryClick } =\n useAnimatedDetails({\n onOpenChange: (open, e) => {\n setIsOpen(open);\n if (onClick) {\n onClick(e, open);\n }\n },\n isExpanded: expandOnMount,\n });\n\n return (\n <details\n data-testid=\"jkl-accordion-item\"\n {...rest}\n className={clsx(\"jkl-accordion-item\", className)}\n ref={detailsRef}\n id={id}\n >\n <summary\n data-testid=\"jkl-accordion-item__title\"\n className=\"jkl-accordion-item__title\"\n onClick={onSummaryClick}\n ref={summaryRef}\n >\n {title}\n <ArrowVerticalAnimated\n variant=\"inherit\"\n className=\"jkl-accordion-item__arrow\"\n pointingDown={!isOpen}\n bold={isOpen}\n />\n </summary>\n <div\n data-testid=\"jkl-accordion-item__content-wrapper\"\n className=\"jkl-accordion-item__content-wrapper\"\n ref={contentRef}\n >\n <div className=\"jkl-accordion-item__content\">{children}</div>\n </div>\n </details>\n );\n};\n"],"names":["AccordionItem","children","title","className","startExpanded","onClick","id","rest","isOpen","setIsOpen","useState","expandOnMount","detailsRef","summaryRef","contentRef","onSummaryClick","useAnimatedDetails","onOpenChange","open","e","isExpanded","jsxs","clsx","ref","jsx","ArrowVerticalAnimated","variant","pointingDown","bold"],"mappings":"mTAcO,MAAMA,EAAwC,EACjDC,SAAAA,EACAC,MAAAA,EACAC,UAAAA,EACAC,cAAAA,GAAgB,EAChBC,QAAAA,EACAC,GAAAA,KACGC,MAEG,MAACC,EAAQC,GAAaC,EAASN,IAC9BO,GAAiBD,GAAS,IAAMN,KAE/BQ,WAAAA,EAAYC,WAAAA,EAAYC,WAAAA,EAAYC,eAAAA,GACxCC,EAAmB,CACfC,aAAc,CAACC,EAAMC,KACjBV,EAAUS,GACNb,GACAA,EAAQc,EAAGD,EAAI,EAGvBE,WAAYT,IAIhB,OAAAU,EAAC,UAAA,CACG,cAAY,wBACRd,EACJJ,UAAWmB,EAAK,qBAAsBnB,GACtCoB,IAAKX,EACLN,GAAAA,EAEAL,SAAA,CAAAoB,EAAC,UAAA,CACG,cAAY,4BACZlB,UAAU,4BACVE,QAASU,EACTQ,IAAKV,EAEJZ,SAAA,CAAAC,EACDsB,EAACC,EAAA,CACGC,QAAQ,UACRvB,UAAU,4BACVwB,cAAenB,EACfoB,KAAMpB,OAGdgB,EAAC,MAAA,CACG,cAAY,sCACZrB,UAAU,sCACVoB,IAAKT,EAELb,SAACuB,EAAA,MAAA,CAAIrB,UAAU,8BAA+BF,SAAAA,QAClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"Breadcrumb.js","sources":["../../../../src/components/breadcrumb/Breadcrumb.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { BreadcrumbItemProps } from \"./BreadcrumbItem.js\";\n\nexport interface BreadcrumbProps extends WithChildren {\n className?: string;\n density?: Density;\n}\n\nexport const Breadcrumb = ({ className, children, density, ...rest }: BreadcrumbProps): JSX.Element => {\n const numberOfChildren = React.Children.count(children);\n return (\n <nav aria-label=\"Sti\" className={clsx(\"jkl-breadcrumb\", className)} data-layout-density={density} {...rest}>\n <ol className=\"jkl-breadcrumb__list\">\n {React.Children.map(children, (child, index) => {\n const isLastElement = index + 1 === numberOfChildren;\n return (\n <>\n {React.isValidElement<BreadcrumbItemProps>(child)\n ? React.cloneElement<BreadcrumbItemProps>(child, {\n isLastElement,\n })\n : child}\n {!isLastElement && (\n <span className=\"jkl-breadcrumb__item-separator\" aria-hidden=\"true\">\n ›\n </span>\n )}\n </>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"names":["Breadcrumb","className","children","density","rest","numberOfChildren","React","Children","count","jsx","clsx","map","child","index","isLastElement","jsxs","Fragment","isValidElement","cloneElement"],"mappings":"mIAUa,MAAAA,EAAa,EAAGC,UAAAA,EAAWC,SAAAA,EAAUC,QAAAA,KAAYC,MAC1D,MAAMC,EAAmBC,EAAMC,SAASC,MAAMN,GAE1C,OAAAO,EAAC,OAAI,aAAW,MAAMR,UAAWS,EAAK,iBAAkBT,GAAY,sBAAqBE,KAAaC,EAClGF,SAAAO,EAAC,KAAG,CAAAR,UAAU,uBACTC,SAAAI,EAAMC,SAASI,IAAIT,GAAU,CAACU,EAAOC,KAC5BC,MAAAA,EAAgBD,EAAQ,IAAMR,EACpC,OAESU,EAAAC,EAAA,CAAAd,SAAA,CAAAI,EAAMW,eAAoCL,GACrCN,EAAMY,aAAkCN,EAAO,CAC3CE,cAAAA,IAEJF,GACJE,GACGL,EAAA,OAAA,CAAKR,UAAU,iCAAiC,cAAY,OAAOC,SAEpE,QAER,OAIhB"}
1
+ {"version":3,"file":"Breadcrumb.js","sources":["../../../../src/components/breadcrumb/Breadcrumb.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { BreadcrumbItemProps } from \"./BreadcrumbItem.js\";\n\nexport interface BreadcrumbProps extends WithChildren {\n className?: string;\n density?: Density;\n}\n\nexport const Breadcrumb = ({\n className,\n children,\n density,\n ...rest\n}: BreadcrumbProps): JSX.Element => {\n const numberOfChildren = React.Children.count(children);\n return (\n <nav\n aria-label=\"Sti\"\n className={clsx(\"jkl-breadcrumb\", className)}\n data-layout-density={density}\n {...rest}\n >\n <ol className=\"jkl-breadcrumb__list\">\n {React.Children.map(children, (child, index) => {\n const isLastElement = index + 1 === numberOfChildren;\n return (\n <>\n {React.isValidElement<BreadcrumbItemProps>(child)\n ? React.cloneElement<BreadcrumbItemProps>(\n child,\n {\n isLastElement,\n },\n )\n : child}\n {!isLastElement && (\n <span\n className=\"jkl-breadcrumb__item-separator\"\n aria-hidden=\"true\"\n >\n ›\n </span>\n )}\n </>\n );\n })}\n </ol>\n </nav>\n );\n};\n"],"names":["Breadcrumb","className","children","density","rest","numberOfChildren","React","Children","count","jsx","clsx","map","child","index","isLastElement","jsxs","Fragment","isValidElement","cloneElement"],"mappings":"mIAUO,MAAMA,EAAa,EACtBC,UAAAA,EACAC,SAAAA,EACAC,QAAAA,KACGC,MAEH,MAAMC,EAAmBC,EAAMC,SAASC,MAAMN,GAE1C,OAAAO,EAAC,MAAA,CACG,aAAW,MACXR,UAAWS,EAAK,iBAAkBT,GAClC,sBAAqBE,KACjBC,EAEJF,SAAAO,EAAC,KAAG,CAAAR,UAAU,uBACTC,SAAAI,EAAMC,SAASI,IAAIT,GAAU,CAACU,EAAOC,KAC5BC,MAAAA,EAAgBD,EAAQ,IAAMR,EACpC,OAESU,EAAAC,EAAA,CAAAd,SAAA,CAAMI,EAAAW,eAAoCL,GACrCN,EAAMY,aACFN,EACA,CACIE,cAAAA,IAGRF,GACJE,GACEL,EAAC,OAAA,CACGR,UAAU,iCACV,cAAY,OACfC,SAAA,QAIT,OAGZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"BreadcrumbItem.js","sources":["../../../../src/components/breadcrumb/BreadcrumbItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { AnchorHTMLAttributes } from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\n\nexport interface BreadcrumbItemProps extends WithChildren {\n className?: string;\n /**\n * Settes automatisk av Breadcrumb\n * @default false\n */\n isLastElement?: boolean;\n}\n\nexport const BreadcrumbItem = ({ className, children, isLastElement, ...rest }: BreadcrumbItemProps): JSX.Element => {\n return (\n <li className={clsx(\"jkl-breadcrumb__item\", className)} {...rest}>\n {React.Children.map(children, (child) => {\n if (React.isValidElement<AnchorHTMLAttributes<HTMLAnchorElement>>(child)) {\n return React.cloneElement<AnchorHTMLAttributes<HTMLAnchorElement>>(child, {\n \"aria-current\": isLastElement ? \"page\" : undefined,\n className: \"jkl-link\",\n });\n } else {\n return child;\n }\n })}\n </li>\n );\n};\n"],"names":["BreadcrumbItem","className","children","isLastElement","rest","jsx","clsx","React","Children","map","child","isValidElement","cloneElement"],"mappings":"2GAaa,MAAAA,EAAiB,EAAGC,UAAAA,EAAWC,SAAAA,EAAUC,cAAAA,KAAkBC,KAE/DC,EAAA,KAAA,CAAGJ,UAAWK,EAAK,uBAAwBL,MAAgBG,EACvDF,SAAMK,EAAAC,SAASC,IAAIP,GAAWQ,GACvBH,EAAMI,eAAwDD,GACvDH,EAAMK,aAAsDF,EAAO,CACtE,eAAgBP,EAAgB,YAAS,EACzCF,UAAW,aAGRS"}
1
+ {"version":3,"file":"BreadcrumbItem.js","sources":["../../../../src/components/breadcrumb/BreadcrumbItem.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { AnchorHTMLAttributes } from \"react\";\nimport { WithChildren } from \"../../core/types.js\";\n\nexport interface BreadcrumbItemProps extends WithChildren {\n className?: string;\n /**\n * Settes automatisk av Breadcrumb\n * @default false\n */\n isLastElement?: boolean;\n}\n\nexport const BreadcrumbItem = ({\n className,\n children,\n isLastElement,\n ...rest\n}: BreadcrumbItemProps): JSX.Element => {\n return (\n <li className={clsx(\"jkl-breadcrumb__item\", className)} {...rest}>\n {React.Children.map(children, (child) => {\n if (\n React.isValidElement<\n AnchorHTMLAttributes<HTMLAnchorElement>\n >(child)\n ) {\n return React.cloneElement<\n AnchorHTMLAttributes<HTMLAnchorElement>\n >(child, {\n \"aria-current\": isLastElement ? \"page\" : undefined,\n className: \"jkl-link\",\n });\n } else {\n return child;\n }\n })}\n </li>\n );\n};\n"],"names":["BreadcrumbItem","className","children","isLastElement","rest","jsx","clsx","React","Children","map","child","isValidElement","cloneElement"],"mappings":"2GAaO,MAAMA,EAAiB,EAC1BC,UAAAA,EACAC,SAAAA,EACAC,cAAAA,KACGC,KAGEC,EAAA,KAAA,CAAGJ,UAAWK,EAAK,uBAAwBL,MAAgBG,EACvDF,SAAMK,EAAAC,SAASC,IAAIP,GAAWQ,GAEvBH,EAAMI,eAEJD,GAEKH,EAAMK,aAEXF,EAAO,CACL,eAAgBP,EAAgB,YAAS,EACzCF,UAAW,aAGRS"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","sources":["../../../../src/components/button/Button.tsx"],"sourcesContent":["import cn from \"clsx\";\nimport React, { ButtonHTMLAttributes, type TouchEvent, useCallback } from \"react\";\nimport { useAriaLiveRegion } from \"../../hooks/useAriaLiveRegion/useAriaLiveRegion.js\";\nimport { PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\nimport { Loader } from \"../loader/Loader.js\";\nimport { ButtonComponent, ButtonProps } from \"./types.js\";\n\nexport const Button = React.forwardRef(function Button<ElementType extends React.ElementType = \"button\">(\n props: ButtonProps<ElementType>,\n ref?: PolymorphicRef<ElementType>,\n) {\n const {\n as = \"button\",\n children,\n className,\n density,\n onTouchStart,\n loader,\n icon,\n iconPosition = \"left\",\n iconLeft,\n iconRight,\n variant = \"secondary\",\n ...rest\n } = props;\n\n const Component = as;\n\n const handleTouch = useCallback(\n (event: TouchEvent<HTMLButtonElement>) => {\n onTouchStart && onTouchStart(event);\n\n const target = event.target as HTMLButtonElement;\n if (target && !target.disabled && event.targetTouches.length) {\n const Xcoord = event.targetTouches[0].clientX - target.getBoundingClientRect().x;\n const Ycoord = event.targetTouches[0].clientY - target.getBoundingClientRect().y;\n target.style.setProperty(\"--jkl-touch-xcoord\", Xcoord.toPrecision(4) + \"px\");\n target.style.setProperty(\"--jkl-touch-ycoord\", Ycoord.toPrecision(4) + \"px\");\n target.classList.add(\"jkl-button--pressed\");\n\n setTimeout(() => {\n target.classList.remove(\"jkl-button--pressed\");\n target.style.removeProperty(\"--jkl-touch-xcoord\");\n target.style.removeProperty(\"--jkl-touch-ycoord\");\n }, 400);\n }\n },\n [onTouchStart],\n );\n\n const ariaLive = useAriaLiveRegion(loader?.showLoader);\n const showLoader = Boolean(children) && Boolean(loader?.showLoader);\n\n return (\n <Component\n {...ariaLive}\n data-loading={showLoader}\n data-density={density}\n className={cn(\"jkl-button\", \"jkl-button--\" + variant, className)}\n disabled={as === \"button\" ? loader?.showLoader : undefined}\n onTouchStart={handleTouch}\n {...rest}\n ref={ref}\n >\n <div className=\"jkl-button__label\">\n {iconLeft && iconLeft}\n {icon && iconPosition === \"left\" && icon}\n {children && <span className=\"jkl-button__text\">{children}</span>}\n {iconRight && iconRight}\n {icon && iconPosition === \"right\" && icon}\n </div>\n\n {children && (\n <Loader\n className=\"jkl-button__loader\"\n variant=\"medium\"\n textDescription={loader?.textDescription || \"Vennligst vent\"}\n aria-hidden={!loader?.showLoader}\n />\n )}\n </Component>\n );\n}) as ButtonComponent;\n\nexport function PrimaryButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = { ...props, variant: \"primary\" } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function SecondaryButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = { ...props, variant: \"secondary\" } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function TertiaryButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = { ...props, variant: \"tertiary\" } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function GhostButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"loader\">,\n) {\n const buttonProps = { ...props, variant: \"ghost\" } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n"],"names":["Button","React","forwardRef","props","ref","as","children","className","density","onTouchStart","loader","icon","iconPosition","iconLeft","iconRight","variant","rest","Component","handleTouch","useCallback","event","target","disabled","targetTouches","length","Xcoord","clientX","getBoundingClientRect","x","Ycoord","clientY","y","style","setProperty","toPrecision","classList","add","setTimeout","remove","removeProperty","ariaLive","useAriaLiveRegion","showLoader","jsxs","cn","jsx","Loader","textDescription","PrimaryButton","buttonProps","SecondaryButton","TertiaryButton","GhostButton"],"mappings":"2QAOO,MAAMA,EAASC,EAAMC,YAAW,SACnCC,EACAC,GAEM,MACFC,GAAAA,EAAK,SACLC,SAAAA,EACAC,UAAAA,EACAC,QAAAA,EACAC,aAAAA,EACAC,OAAAA,EACAC,KAAAA,EACAC,aAAAA,EAAe,OACfC,SAAAA,EACAC,UAAAA,EACAC,QAAAA,EAAU,eACPC,GACHb,EAEEc,EAAYZ,EAEZa,EAAcC,GACfC,IACGX,GAAgBA,EAAaW,GAE7B,MAAMC,EAASD,EAAMC,OACrB,GAAIA,IAAWA,EAAOC,UAAYF,EAAMG,cAAcC,OAAQ,CACpD,MAAAC,EAASL,EAAMG,cAAc,GAAGG,QAAUL,EAAOM,wBAAwBC,EACzEC,EAAST,EAAMG,cAAc,GAAGO,QAAUT,EAAOM,wBAAwBI,EAC/EV,EAAOW,MAAMC,YAAY,qBAAsBR,EAAOS,YAAY,GAAK,MACvEb,EAAOW,MAAMC,YAAY,qBAAsBJ,EAAOK,YAAY,GAAK,MAChEb,EAAAc,UAAUC,IAAI,uBAErBC,YAAW,KACAhB,EAAAc,UAAUG,OAAO,uBACjBjB,EAAAW,MAAMO,eAAe,sBACrBlB,EAAAW,MAAMO,eAAe,qBAAoB,GACjD,IACP,IAEJ,CAAC9B,IAGC+B,EAAWC,EAAkB,MAAA/B,SAAAA,EAAQgC,YACrCA,IAAqBpC,KAAqB,MAAAI,IAAAA,EAAQgC,YAGpD,OAAAC,EAAC1B,EAAA,IACOuB,EACJ,eAAcE,EACd,eAAclC,EACdD,UAAWqC,EAAG,aAAc,eAAiB7B,EAASR,GACtDe,SAAiB,WAAPjB,EAAkB,MAAAK,OAAA,EAAAA,EAAQgC,gBAAa,EACjDjC,aAAcS,KACVF,EACJZ,IAAAA,EAEAE,SAAA,CAACqC,EAAA,MAAA,CAAIpC,UAAU,oBACVD,SAAA,CAAYO,GAAAA,EACZF,GAAyB,SAAjBC,GAA2BD,EACnCL,GAAYuC,EAAC,OAAK,CAAAtC,UAAU,mBAAoBD,SAAAA,IAChDQ,GAAaA,EACbH,GAAyB,UAAjBC,GAA4BD,KAGxCL,GACGuC,EAACC,EAAA,CACGvC,UAAU,qBACVQ,QAAQ,SACRgC,iBAAiB,MAAArC,OAAAA,EAAAA,EAAQqC,kBAAmB,iBAC5C,gBAAc,MAAArC,GAAAA,EAAQgC,gBAK1C,IAEO,SAASM,EACZ7C,GAGA,MAAM8C,EAAc,IAAK9C,EAAOY,QAAS,WAClC,OAAA8B,EAAC7C,EAAQ,IAAGiD,GACvB,CAEO,SAASC,EACZ/C,GAGA,MAAM8C,EAAc,IAAK9C,EAAOY,QAAS,aAClC,OAAA8B,EAAC7C,EAAQ,IAAGiD,GACvB,CAEO,SAASE,EACZhD,GAGA,MAAM8C,EAAc,IAAK9C,EAAOY,QAAS,YAClC,OAAA8B,EAAC7C,EAAQ,IAAGiD,GACvB,CAEO,SAASG,EACZjD,GAEA,MAAM8C,EAAc,IAAK9C,EAAOY,QAAS,SAClC,OAAA8B,EAAC7C,EAAQ,IAAGiD,GACvB"}
1
+ {"version":3,"file":"Button.js","sources":["../../../../src/components/button/Button.tsx"],"sourcesContent":["import cn from \"clsx\";\nimport React, {\n ButtonHTMLAttributes,\n type TouchEvent,\n useCallback,\n} from \"react\";\nimport { useAriaLiveRegion } from \"../../hooks/useAriaLiveRegion/useAriaLiveRegion.js\";\nimport { PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\nimport { Loader } from \"../loader/Loader.js\";\nimport { ButtonComponent, ButtonProps } from \"./types.js\";\n\nexport const Button = React.forwardRef(function Button<\n ElementType extends React.ElementType = \"button\",\n>(props: ButtonProps<ElementType>, ref?: PolymorphicRef<ElementType>) {\n const {\n as = \"button\",\n children,\n className,\n density,\n onTouchStart,\n loader,\n icon,\n iconPosition = \"left\",\n iconLeft,\n iconRight,\n variant = \"secondary\",\n ...rest\n } = props;\n\n const Component = as;\n\n const handleTouch = useCallback(\n (event: TouchEvent<HTMLButtonElement>) => {\n onTouchStart && onTouchStart(event);\n\n const target = event.target as HTMLButtonElement;\n if (target && !target.disabled && event.targetTouches.length) {\n const Xcoord =\n event.targetTouches[0].clientX -\n target.getBoundingClientRect().x;\n const Ycoord =\n event.targetTouches[0].clientY -\n target.getBoundingClientRect().y;\n target.style.setProperty(\n \"--jkl-touch-xcoord\",\n Xcoord.toPrecision(4) + \"px\",\n );\n target.style.setProperty(\n \"--jkl-touch-ycoord\",\n Ycoord.toPrecision(4) + \"px\",\n );\n target.classList.add(\"jkl-button--pressed\");\n\n setTimeout(() => {\n target.classList.remove(\"jkl-button--pressed\");\n target.style.removeProperty(\"--jkl-touch-xcoord\");\n target.style.removeProperty(\"--jkl-touch-ycoord\");\n }, 400);\n }\n },\n [onTouchStart],\n );\n\n const ariaLive = useAriaLiveRegion(loader?.showLoader);\n const showLoader = Boolean(children) && Boolean(loader?.showLoader);\n\n return (\n <Component\n {...ariaLive}\n data-loading={showLoader}\n data-density={density}\n className={cn(\"jkl-button\", \"jkl-button--\" + variant, className)}\n disabled={as === \"button\" ? loader?.showLoader : undefined}\n onTouchStart={handleTouch}\n {...rest}\n ref={ref}\n >\n <div className=\"jkl-button__label\">\n {iconLeft && iconLeft}\n {icon && iconPosition === \"left\" && icon}\n {children && (\n <span className=\"jkl-button__text\">{children}</span>\n )}\n {iconRight && iconRight}\n {icon && iconPosition === \"right\" && icon}\n </div>\n\n {children && (\n <Loader\n className=\"jkl-button__loader\"\n variant=\"medium\"\n textDescription={\n loader?.textDescription || \"Vennligst vent\"\n }\n aria-hidden={!loader?.showLoader}\n />\n )}\n </Component>\n );\n}) as ButtonComponent;\n\nexport function PrimaryButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = {\n ...props,\n variant: \"primary\",\n } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function SecondaryButton<\n ElementType extends React.ElementType = \"button\",\n>(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = {\n ...props,\n variant: \"secondary\",\n } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function TertiaryButton<\n ElementType extends React.ElementType = \"button\",\n>(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"onClick\" | \"as\"> &\n Pick<ButtonHTMLAttributes<HTMLButtonElement>, \"onClick\">,\n) {\n const buttonProps = {\n ...props,\n variant: \"tertiary\",\n } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n\nexport function GhostButton<ElementType extends React.ElementType = \"button\">(\n props: Omit<ButtonProps<ElementType>, \"variant\" | \"loader\">,\n) {\n const buttonProps = {\n ...props,\n variant: \"ghost\",\n } as ButtonProps<ElementType>;\n return <Button {...buttonProps} />;\n}\n"],"names":["Button","React","forwardRef","props","ref","as","children","className","density","onTouchStart","loader","icon","iconPosition","iconLeft","iconRight","variant","rest","Component","handleTouch","useCallback","event","target","disabled","targetTouches","length","Xcoord","clientX","getBoundingClientRect","x","Ycoord","clientY","y","style","setProperty","toPrecision","classList","add","setTimeout","remove","removeProperty","ariaLive","useAriaLiveRegion","showLoader","jsxs","cn","jsx","Loader","textDescription","PrimaryButton","buttonProps","SecondaryButton","TertiaryButton","GhostButton"],"mappings":"2QAWO,MAAMA,EAASC,EAAMC,YAAW,SAErCC,EAAiCC,GACzB,MACFC,GAAAA,EAAK,SACLC,SAAAA,EACAC,UAAAA,EACAC,QAAAA,EACAC,aAAAA,EACAC,OAAAA,EACAC,KAAAA,EACAC,aAAAA,EAAe,OACfC,SAAAA,EACAC,UAAAA,EACAC,QAAAA,EAAU,eACPC,GACHb,EAEEc,EAAYZ,EAEZa,EAAcC,GACfC,IACGX,GAAgBA,EAAaW,GAE7B,MAAMC,EAASD,EAAMC,OACrB,GAAIA,IAAWA,EAAOC,UAAYF,EAAMG,cAAcC,OAAQ,CACpD,MAAAC,EACFL,EAAMG,cAAc,GAAGG,QACvBL,EAAOM,wBAAwBC,EAC7BC,EACFT,EAAMG,cAAc,GAAGO,QACvBT,EAAOM,wBAAwBI,EACnCV,EAAOW,MAAMC,YACT,qBACAR,EAAOS,YAAY,GAAK,MAE5Bb,EAAOW,MAAMC,YACT,qBACAJ,EAAOK,YAAY,GAAK,MAErBb,EAAAc,UAAUC,IAAI,uBAErBC,YAAW,KACAhB,EAAAc,UAAUG,OAAO,uBACjBjB,EAAAW,MAAMO,eAAe,sBACrBlB,EAAAW,MAAMO,eAAe,qBAAoB,GACjD,IACP,IAEJ,CAAC9B,IAGC+B,EAAWC,EAAkB,MAAA/B,SAAAA,EAAQgC,YACrCA,IAAqBpC,KAAqB,MAAAI,IAAAA,EAAQgC,YAGpD,OAAAC,EAAC1B,EAAA,IACOuB,EACJ,eAAcE,EACd,eAAclC,EACdD,UAAWqC,EAAG,aAAc,eAAiB7B,EAASR,GACtDe,SAAiB,WAAPjB,EAAkB,MAAAK,OAAA,EAAAA,EAAQgC,gBAAa,EACjDjC,aAAcS,KACVF,EACJZ,IAAAA,EAEAE,SAAA,CAACqC,EAAA,MAAA,CAAIpC,UAAU,oBACVD,SAAA,CAAYO,GAAAA,EACZF,GAAyB,SAAjBC,GAA2BD,EACnCL,GACGuC,EAAC,OAAK,CAAAtC,UAAU,mBAAoBD,SAAAA,IAEvCQ,GAAaA,EACbH,GAAyB,UAAjBC,GAA4BD,KAGxCL,GACGuC,EAACC,EAAA,CACGvC,UAAU,qBACVQ,QAAQ,SACRgC,iBACI,MAAArC,OAAAA,EAAAA,EAAQqC,kBAAmB,iBAE/B,gBAAc,MAAArC,GAAAA,EAAQgC,gBAK1C,IAEO,SAASM,EACZ7C,GAGA,MAAM8C,EAAc,IACb9C,EACHY,QAAS,WAEN,OAAA8B,EAAC7C,EAAQ,IAAGiD,GACvB,CAEO,SAASC,EAGZ/C,GAGA,MAAM8C,EAAc,IACb9C,EACHY,QAAS,aAEN,OAAA8B,EAAC7C,EAAQ,IAAGiD,GACvB,CAEO,SAASE,EAGZhD,GAGA,MAAM8C,EAAc,IACb9C,EACHY,QAAS,YAEN,OAAA8B,EAAC7C,EAAQ,IAAGiD,GACvB,CAEO,SAASG,EACZjD,GAEA,MAAM8C,EAAc,IACb9C,EACHY,QAAS,SAEN,OAAA8B,EAAC7C,EAAQ,IAAGiD,GACvB"}
@@ -1,2 +1,2 @@
1
- export { Button, PrimaryButton, SecondaryButton, TertiaryButton } from './Button.js';
1
+ export { Button, PrimaryButton, SecondaryButton, TertiaryButton, } from './Button.js';
2
2
  export type { ButtonProps, ButtonVariant } from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../src/components/button/types.ts"],"sourcesContent":["import { Density } from \"../../core/types.js\";\nimport { PolymorphicPropsWithRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const buttonVariants = [\"primary\", \"secondary\", \"tertiary\", \"ghost\"] as const;\nexport type ButtonVariant = (typeof buttonVariants)[number];\nexport type IconPosition = \"left\" | \"right\";\n\ntype IconOptions<T extends React.ElementType> =\n // Hvis ikke knappen har ikon, MÅ den ha children:\n | {\n iconPosition?: never;\n icon?: never;\n children: React.ComponentPropsWithoutRef<T>[\"children\"];\n }\n | {\n /**\n * Plasseringen av ikonet\n * @default \"left\"\n */\n iconPosition?: IconPosition;\n /**\n * Hvilket ikon som skal vises i knappen\n */\n icon: React.ReactElement;\n };\n\nexport type ButtonProps<ElementType extends React.ElementType> = PolymorphicPropsWithRef<\n ElementType,\n {\n density?: Density;\n /**\n * Hvilken variant av knappen skal vises\n * @default \"secondary\"\n */\n variant?: ButtonVariant;\n className?: string;\n loader?: {\n showLoader: boolean;\n textDescription: string;\n };\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"left\"`\n */\n iconLeft?: React.ReactNode;\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"right\"`\n */\n iconRight?: React.ReactNode;\n } & IconOptions<ElementType>\n>;\n\nexport type ButtonComponent = <ElementType extends React.ElementType = \"button\">(\n props: ButtonProps<ElementType>,\n) => React.ReactElement | null;\n"],"names":["buttonVariants"],"mappings":"AAGO,MAAMA,EAAiB,CAAC,UAAW,YAAa,WAAY"}
1
+ {"version":3,"file":"types.js","sources":["../../../../src/components/button/types.ts"],"sourcesContent":["import { Density } from \"../../core/types.js\";\nimport { PolymorphicPropsWithRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const buttonVariants = [\n \"primary\",\n \"secondary\",\n \"tertiary\",\n \"ghost\",\n] as const;\nexport type ButtonVariant = (typeof buttonVariants)[number];\nexport type IconPosition = \"left\" | \"right\";\n\ntype IconOptions<T extends React.ElementType> =\n // Hvis ikke knappen har ikon, MÅ den ha children:\n | {\n iconPosition?: never;\n icon?: never;\n children: React.ComponentPropsWithoutRef<T>[\"children\"];\n }\n | {\n /**\n * Plasseringen av ikonet\n * @default \"left\"\n */\n iconPosition?: IconPosition;\n /**\n * Hvilket ikon som skal vises i knappen\n */\n icon: React.ReactElement;\n };\n\nexport type ButtonProps<ElementType extends React.ElementType> =\n PolymorphicPropsWithRef<\n ElementType,\n {\n density?: Density;\n /**\n * Hvilken variant av knappen skal vises\n * @default \"secondary\"\n */\n variant?: ButtonVariant;\n className?: string;\n loader?: {\n showLoader: boolean;\n textDescription: string;\n };\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"left\"`\n */\n iconLeft?: React.ReactNode;\n /**\n * @deprecated Bruk `icon` i kombinasjon med `iconPosition=\"right\"`\n */\n iconRight?: React.ReactNode;\n } & IconOptions<ElementType>\n >;\n\nexport type ButtonComponent = <\n ElementType extends React.ElementType = \"button\",\n>(\n props: ButtonProps<ElementType>,\n) => React.ReactElement | null;\n"],"names":["buttonVariants"],"mappings":"AAGO,MAAMA,EAAiB,CAC1B,UACA,YACA,WACA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Card.js","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { AsChildProps } from \"../../utilities/polymorphism/as-child.js\";\nimport { SlotComponent } from \"../../utilities/polymorphism/index.js\";\nimport { PolymorphicPropsWithRef, PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const CARD_PADDINGS = [\"s\", \"m\", \"l\", \"xl\"] as const;\nexport type CardPadding = (typeof CARD_PADDINGS)[number];\nexport const CARD_VARIANTS = [\"outlined\", \"high\", \"low\"] as const;\nexport type CardVariant = (typeof CARD_VARIANTS)[number];\n\nexport type CardProps<ElementType extends React.ElementType> = PolymorphicPropsWithRef<\n ElementType,\n {\n className?: string;\n /**\n * Setter padding på kortet. Tilsvarer samme property i Figma.\n * @default \"s\"\n */\n padding?: CardPadding;\n /**\n * Angir hvilken kortvariant du vil bruke. Velg en variant som gir god kontrast\n * til bakgrunnen på siden, slik at det er enkelt å skille innholdet fra hverandre.\n * @default \"high\"\n */\n variant?: CardVariant;\n /**\n * Angir om kortet visuelt skal fremstå som klikkbart. Du må selv rendre\n * kortet som et klikkbart element (f.eks. `<a>` eller en `<Link>` fra\n * et ruting-bibliotek) og gi det en `href` eller `onClick`-handler.\n * HUSK: Sett aria-label for at støtteverktøy, som skjermlesere, ikke\n * skal lese alt innholdet i kortet.\n */\n clickable?: boolean;\n }\n>;\n\ntype CardComponent = <ElementType extends React.ElementType = \"div\">(\n props: CardProps<ElementType> & AsChildProps,\n) => React.ReactElement | null;\n\n/**\n * En allsidig kortkomponent som brukes for å gruppere innhold på en side.\n * Komponenten rendres til vanlig som en `<div>`, men du kan velge å rendre\n * den som andre elementer eller komponenter der du trenger annen semantikk\n * eller funksjonalitet.\n */\nexport const Card = React.forwardRef(function Card<ElementType extends React.ElementType = \"div\">(\n props: CardProps<ElementType>,\n ref?: PolymorphicRef<ElementType>,\n) {\n const {\n className,\n clickable = false,\n padding = \"s\",\n variant = \"high\",\n asChild,\n as = \"div\",\n ...componentProps\n } = props;\n\n const Component = asChild ? SlotComponent : as;\n\n return (\n <Component\n data-testid=\"jkl-card\"\n data-clickable={clickable}\n data-padding={padding}\n className={clsx(\"jkl-card\", `jkl-card--${variant}`, className)}\n {...componentProps}\n ref={ref}\n />\n );\n}) as CardComponent;\n"],"names":["CARD_PADDINGS","CARD_VARIANTS","Card","React","forwardRef","props","ref","className","clickable","padding","variant","asChild","as","componentProps","jsx","SlotComponent","clsx"],"mappings":"yLAMO,MAAMA,EAAgB,CAAC,IAAK,IAAK,IAAK,MAEhCC,EAAgB,CAAC,WAAY,OAAQ,OAuCrCC,EAAOC,EAAMC,YAAW,SACjCC,EACAC,GAEM,MACFC,UAAAA,EACAC,UAAAA,GAAY,EACZC,QAAAA,EAAU,IACVC,QAAAA,EAAU,OACVC,QAAAA,EACAC,GAAAA,EAAK,SACFC,GACHR,EAKA,OAAAS,EAHcH,EAAUI,EAAgBH,EAGvC,CACG,cAAY,WACZ,iBAAgBJ,EAChB,eAAcC,EACdF,UAAWS,EAAK,WAAY,aAAaN,IAAWH,MAChDM,EACJP,IAAAA,GAGZ"}
1
+ {"version":3,"file":"Card.js","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { AsChildProps } from \"../../utilities/polymorphism/as-child.js\";\nimport { SlotComponent } from \"../../utilities/polymorphism/index.js\";\nimport {\n PolymorphicPropsWithRef,\n PolymorphicRef,\n} from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport const CARD_PADDINGS = [\"s\", \"m\", \"l\", \"xl\"] as const;\nexport type CardPadding = (typeof CARD_PADDINGS)[number];\nexport const CARD_VARIANTS = [\"outlined\", \"high\", \"low\"] as const;\nexport type CardVariant = (typeof CARD_VARIANTS)[number];\n\nexport type CardProps<ElementType extends React.ElementType> =\n PolymorphicPropsWithRef<\n ElementType,\n {\n className?: string;\n /**\n * Setter padding på kortet. Tilsvarer samme property i Figma.\n * @default \"s\"\n */\n padding?: CardPadding;\n /**\n * Angir hvilken kortvariant du vil bruke. Velg en variant som gir god kontrast\n * til bakgrunnen på siden, slik at det er enkelt å skille innholdet fra hverandre.\n * @default \"high\"\n */\n variant?: CardVariant;\n /**\n * Angir om kortet visuelt skal fremstå som klikkbart. Du må selv rendre\n * kortet som et klikkbart element (f.eks. `<a>` eller en `<Link>` fra\n * et ruting-bibliotek) og gi det en `href` eller `onClick`-handler.\n * HUSK: Sett aria-label for at støtteverktøy, som skjermlesere, ikke\n * skal lese alt innholdet i kortet.\n */\n clickable?: boolean;\n }\n >;\n\ntype CardComponent = <ElementType extends React.ElementType = \"div\">(\n props: CardProps<ElementType> & AsChildProps,\n) => React.ReactElement | null;\n\n/**\n * En allsidig kortkomponent som brukes for å gruppere innhold på en side.\n * Komponenten rendres til vanlig som en `<div>`, men du kan velge å rendre\n * den som andre elementer eller komponenter der du trenger annen semantikk\n * eller funksjonalitet.\n */\nexport const Card = React.forwardRef(function Card<\n ElementType extends React.ElementType = \"div\",\n>(props: CardProps<ElementType>, ref?: PolymorphicRef<ElementType>) {\n const {\n className,\n clickable = false,\n padding = \"s\",\n variant = \"high\",\n asChild,\n as = \"div\",\n ...componentProps\n } = props;\n\n const Component = asChild ? SlotComponent : as;\n\n return (\n <Component\n data-testid=\"jkl-card\"\n data-clickable={clickable}\n data-padding={padding}\n className={clsx(\"jkl-card\", `jkl-card--${variant}`, className)}\n {...componentProps}\n ref={ref}\n />\n );\n}) as CardComponent;\n"],"names":["CARD_PADDINGS","CARD_VARIANTS","Card","React","forwardRef","props","ref","className","clickable","padding","variant","asChild","as","componentProps","jsx","SlotComponent","clsx"],"mappings":"yLASO,MAAMA,EAAgB,CAAC,IAAK,IAAK,IAAK,MAEhCC,EAAgB,CAAC,WAAY,OAAQ,OAwCrCC,EAAOC,EAAMC,YAAW,SAEnCC,EAA+BC,GACvB,MACFC,UAAAA,EACAC,UAAAA,GAAY,EACZC,QAAAA,EAAU,IACVC,QAAAA,EAAU,OACVC,QAAAA,EACAC,GAAAA,EAAK,SACFC,GACHR,EAKA,OAAAS,EAHcH,EAAUI,EAAgBH,EAGvC,CACG,cAAY,WACZ,iBAAgBJ,EAChB,eAAcC,EACdF,UAAWS,EAAK,WAAY,aAAaN,IAAWH,MAChDM,EACJP,IAAAA,GAGZ"}
@@ -1 +1 @@
1
- {"version":3,"file":"CardImage.js","sources":["../../../../src/components/card/CardImage.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { AsChildProps } from \"../../utilities/polymorphism/as-child.js\";\nimport { SlotComponent } from \"../../utilities/polymorphism/index.js\";\nimport { PolymorphicPropsWithRef, PolymorphicRef } from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport type CardImageProps<ElementType extends React.ElementType> = PolymorphicPropsWithRef<\n ElementType,\n {\n /**\n * Legger til riktig negativ margin avhengig av hvor i kortet bildet\n * skal plasseres. Margin justeres automatisk etter padding i kortet.\n * @default \"top\"\n */\n placement?: \"top\" | \"middle\" | \"bottom\";\n }\n>;\n\ntype CardImageComponent = <ElementType extends React.ElementType = \"img\">(\n props: CardImageProps<ElementType>,\n) => React.ReactElement | null;\n\n/**\n * Bildekomponent som kan brukes i `Card` for å sørge for at bildet\n * blør helt ut i kantene av kortet. Rendres normalt som et `<img>`-\n * element, men du kan overstyre dette med `as` dersom du f.eks. har\n * en egen komponent for å håndtere responsive bilder.\n */\nexport const CardImage = React.forwardRef(function CardImage<ElementType extends React.ElementType = \"img\">(\n { as, asChild, className, placement = \"top\", ...imageProps }: CardImageProps<ElementType> & AsChildProps,\n ref?: PolymorphicRef<ElementType>,\n) {\n const Component = asChild ? SlotComponent : as || \"img\";\n\n return (\n <Component\n ref={ref}\n className={clsx(\"jkl-card-image\", `jkl-card-image--${placement}`, className)}\n {...imageProps}\n />\n );\n}) as CardImageComponent;\n"],"names":["CardImage","React","forwardRef","as","asChild","className","placement","imageProps","ref","jsx","SlotComponent","clsx"],"mappings":"yLA4BO,MAAMA,EAAYC,EAAMC,YAAW,UACpCC,GAAAA,EAAIC,QAAAA,EAASC,UAAAA,EAAWC,UAAAA,EAAY,SAAUC,GAChDC,GAKI,OAAAC,EAHcL,EAAUM,EAAgBP,GAAM,MAG7C,CACGK,IAAAA,EACAH,UAAWM,EAAK,iBAAkB,mBAAmBL,IAAaD,MAC9DE,GAGhB"}
1
+ {"version":3,"file":"CardImage.js","sources":["../../../../src/components/card/CardImage.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React from \"react\";\nimport { AsChildProps } from \"../../utilities/polymorphism/as-child.js\";\nimport { SlotComponent } from \"../../utilities/polymorphism/index.js\";\nimport {\n PolymorphicPropsWithRef,\n PolymorphicRef,\n} from \"../../utilities/polymorphism/polymorphism.js\";\n\nexport type CardImageProps<ElementType extends React.ElementType> =\n PolymorphicPropsWithRef<\n ElementType,\n {\n /**\n * Legger til riktig negativ margin avhengig av hvor i kortet bildet\n * skal plasseres. Margin justeres automatisk etter padding i kortet.\n * @default \"top\"\n */\n placement?: \"top\" | \"middle\" | \"bottom\";\n }\n >;\n\ntype CardImageComponent = <ElementType extends React.ElementType = \"img\">(\n props: CardImageProps<ElementType>,\n) => React.ReactElement | null;\n\n/**\n * Bildekomponent som kan brukes i `Card` for å sørge for at bildet\n * blør helt ut i kantene av kortet. Rendres normalt som et `<img>`-\n * element, men du kan overstyre dette med `as` dersom du f.eks. har\n * en egen komponent for å håndtere responsive bilder.\n */\nexport const CardImage = React.forwardRef(function CardImage<\n ElementType extends React.ElementType = \"img\",\n>(\n {\n as,\n asChild,\n className,\n placement = \"top\",\n ...imageProps\n }: CardImageProps<ElementType> & AsChildProps,\n ref?: PolymorphicRef<ElementType>,\n) {\n const Component = asChild ? SlotComponent : as || \"img\";\n\n return (\n <Component\n ref={ref}\n className={clsx(\n \"jkl-card-image\",\n `jkl-card-image--${placement}`,\n className,\n )}\n {...imageProps}\n />\n );\n}) as CardImageComponent;\n"],"names":["CardImage","React","forwardRef","as","asChild","className","placement","imageProps","ref","jsx","SlotComponent","clsx"],"mappings":"yLAgCO,MAAMA,EAAYC,EAAMC,YAAW,UAIlCC,GAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,UAAAA,EAAY,SACTC,GAEPC,GAKI,OAAAC,EAHcL,EAAUM,EAAgBP,GAAM,MAG7C,CACGK,IAAAA,EACAH,UAAWM,EACP,iBACA,mBAAmBL,IACnBD,MAEAE,GAGhB"}
@@ -1 +1 @@
1
- {"version":3,"file":"InfoCard.js","sources":["../../../../src/components/card/InfoCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { PaddingOptions, SpacingStep } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport interface InfoCardProps extends PaddingOptions, WithChildren {\n className?: string;\n title?: string;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n */\n bottomPadding?: SpacingStep;\n density?: Density;\n}\n\nexport const InfoCard: FC<InfoCardProps> = ({ title, children, density, className, padding = \"l\", ...rest }) => (\n <div {...rest} className={clsx(\"jkl-info-card\", className)} data-density={density}>\n <div className={clsx(\"jkl-info-card__content-wrapper\")} style={getPaddingStyles(padding)}>\n {title && <p className=\"jkl-info-card__title\">{title}</p>}\n {children}\n </div>\n </div>\n);\n"],"names":["InfoCard","title","children","density","className","padding","rest","jsx","clsx","jsxs","style","getPaddingStyles"],"mappings":"8IAgBO,MAAMA,EAA8B,EAAGC,MAAAA,EAAOC,SAAAA,EAAUC,QAAAA,EAASC,UAAAA,EAAWC,QAAAA,EAAU,OAAQC,KACjGC,EAAC,UAAQD,EAAMF,UAAWI,EAAK,gBAAiBJ,GAAY,eAAcD,EACtED,SAACO,EAAA,MAAA,CAAIL,UAAWI,EAAK,kCAAmCE,MAAOC,EAAiBN,GAC3EH,SAAA,CAAAD,GAAUM,EAAA,IAAA,CAAEH,UAAU,uBAAwBF,SAAMD,IACpDC"}
1
+ {"version":3,"file":"InfoCard.js","sources":["../../../../src/components/card/InfoCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { PaddingOptions, SpacingStep } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport interface InfoCardProps extends PaddingOptions, WithChildren {\n className?: string;\n title?: string;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n */\n bottomPadding?: SpacingStep;\n density?: Density;\n}\n\nexport const InfoCard: FC<InfoCardProps> = ({\n title,\n children,\n density,\n className,\n padding = \"l\",\n ...rest\n}) => (\n <div\n {...rest}\n className={clsx(\"jkl-info-card\", className)}\n data-density={density}\n >\n <div\n className={clsx(\"jkl-info-card__content-wrapper\")}\n style={getPaddingStyles(padding)}\n >\n {title && <p className=\"jkl-info-card__title\">{title}</p>}\n {children}\n </div>\n </div>\n);\n"],"names":["InfoCard","title","children","density","className","padding","rest","jsx","clsx","jsxs","style","getPaddingStyles"],"mappings":"8IAgBO,MAAMA,EAA8B,EACvCC,MAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,QAAAA,EAAU,OACPC,KAEHC,EAAC,MAAA,IACOD,EACJF,UAAWI,EAAK,gBAAiBJ,GACjC,eAAcD,EAEdD,SAAAO,EAAC,MAAA,CACGL,UAAWI,EAAK,kCAChBE,MAAOC,EAAiBN,GAEvBH,SAAA,CAAAD,GAAUM,EAAA,IAAA,CAAEH,UAAU,uBAAwBF,SAAMD,IACpDC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NavCard.js","sources":["../../../../src/components/card/NavCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { AnchorHTMLAttributes, ElementType, FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { Image, ImageProps } from \"../image/Image.js\";\nimport { ErrorTag, InfoTag, SuccessTag, Tag, TagProps, WarningTag } from \"../tag/Tag.js\";\nimport { PaddingOptions } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport type TagType = \"success\" | \"warning\" | \"info\" | \"error\";\n\n/**\n * Bruk denne komponenten for å legge til ekstra informasjon i NavCard.\n * Innholdet blir rendret med skillelinje, og tekststil \"small\"\n */\nexport const InfoBlock: FC<WithChildren> = ({ children }) => <div className=\"jkl-nav-card__info\">{children}</div>;\n\ninterface CardTag {\n /**\n * @default <none> Rendres som nøytral tag\n */\n type?: TagType;\n text: string;\n}\n\nexport interface NavCardProps extends PaddingOptions, AnchorHTMLAttributes<HTMLAnchorElement> {\n tag?: CardTag | Array<CardTag>;\n title: string;\n href?: string;\n to?: string;\n external?: boolean;\n description?: string;\n image?: Omit<ImageProps, \"className\">;\n className?: string;\n /**\n * Overstyr hvilken komponent som skal brukes, for eksempel hvis du har en Link-komponent fra en router.\n * @default \"a\"\n */\n component?: ElementType;\n density?: Density;\n}\n\nconst getTag = (type?: TagType) => {\n switch (type) {\n case \"info\":\n return InfoTag;\n case \"success\":\n return SuccessTag;\n case \"warning\":\n return WarningTag;\n case \"error\":\n return ErrorTag;\n default:\n return Tag;\n }\n};\nconst NavCardTag = ({ text, type, density }: CardTag & Pick<TagProps, \"density\">) => {\n const CardTag = getTag(type);\n return <CardTag density={density}>{text}</CardTag>;\n};\n\nexport const NavCard: FC<NavCardProps> = React.forwardRef<HTMLAnchorElement, NavCardProps>((props, ref) => {\n const {\n component = \"a\",\n padding = \"l\",\n image,\n tag,\n title,\n external,\n description,\n children,\n className,\n density,\n ...rest\n } = props;\n\n const Component = component;\n\n const tagArr = !tag ? undefined : Array.isArray(tag) ? tag : [tag];\n\n return (\n <Component\n ref={ref}\n aria-label={title}\n className={clsx(\"jkl-nav-card\", className)}\n data-density={density}\n {...rest}\n >\n {image && <Image className=\"jkl-nav-card__image\" {...image} />}\n <div className=\"jkl-nav-card__content\" style={getPaddingStyles(padding)}>\n {tagArr && (\n <div className=\"jkl-nav-card__tag-wrapper\">\n {tagArr.map((t, index) => (\n <NavCardTag type={t.type} text={t.text} key={index} />\n ))}\n </div>\n )}\n <div>\n <p className={clsx(\"jkl-nav-card__link\", external ? \"jkl-nav-card__link--external\" : \"\")}>\n {title}\n </p>\n {description && <p className=\"jkl-nav-card__description jkl-spacing-xs--top\">{description}</p>}\n </div>\n {children}\n </div>\n </Component>\n );\n});\n\nNavCard.displayName = \"NavCard\";\n"],"names":["InfoBlock","children","jsx","className","NavCardTag","text","type","density","CardTag","InfoTag","SuccessTag","WarningTag","ErrorTag","Tag","getTag","NavCard","React","forwardRef","props","ref","component","padding","image","tag","title","external","description","rest","Component","tagArr","Array","isArray","jsxs","clsx","Image","style","getPaddingStyles","map","t","index","displayName"],"mappings":"4SAca,MAAAA,EAA8B,EAAGC,SAAAA,KAAgBC,EAAA,MAAA,CAAIC,UAAU,qBAAsBF,SAAAA,IAyC5FG,EAAa,EAAGC,KAAAA,EAAMC,KAAAA,EAAMC,QAAAA,MACxBC,MAAAA,EAfK,CAACF,IACZ,OAAQA,GACJ,IAAK,OACMG,OAAAA,EACX,IAAK,UACMC,OAAAA,EACX,IAAK,UACMC,OAAAA,EACX,IAAK,QACMC,OAAAA,EACX,QACWC,OAAAA,EACf,EAGgBC,CAAOR,GAChB,OAAAJ,EAACM,EAAQ,CAAAD,QAAAA,EAAmBN,SAAKI,GAAA,EAG/BU,EAA4BC,EAAMC,YAA4C,CAACC,EAAOC,KACzF,MACFC,UAAAA,EAAY,IACZC,QAAAA,EAAU,IACVC,MAAAA,EACAC,IAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAzB,SAAAA,EACAE,UAAAA,EACAI,QAAAA,KACGoB,GACHT,EAEEU,EAAYR,EAEZS,EAAUN,EAAkBO,MAAMC,QAAQR,GAAOA,EAAM,CAACA,QAAxC,EAGlB,OAAAS,EAACJ,EAAA,CACGT,IAAAA,EACA,aAAYK,EACZrB,UAAW8B,EAAK,eAAgB9B,GAChC,eAAcI,KACVoB,EAEH1B,SAAA,CAAAqB,GAAUpB,EAAAgC,EAAA,CAAM/B,UAAU,yBAA0BmB,MACpD,MAAI,CAAAnB,UAAU,wBAAwBgC,MAAOC,EAAiBf,GAC1DpB,SAAA,CAAA4B,KACI,MAAI,CAAA1B,UAAU,4BACVF,SAAO4B,EAAAQ,KAAI,CAACC,EAAGC,MACXnC,EAAW,CAAAE,KAAMgC,EAAEhC,KAAMD,KAAMiC,EAAEjC,MAAWkC,SAIxD,MACG,CAAAtC,SAAA,CAACC,EAAA,IAAA,CAAEC,UAAW8B,EAAK,qBAAsBR,EAAW,+BAAiC,IAChFxB,SACLuB,IACCE,GAAexB,EAAC,IAAE,CAAAC,UAAU,gDAAiDF,SAAYyB,OAE7FzB,OACL,IAKZc,EAAQyB,YAAc"}
1
+ {"version":3,"file":"NavCard.js","sources":["../../../../src/components/card/NavCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { AnchorHTMLAttributes, ElementType, FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { Image, ImageProps } from \"../image/Image.js\";\nimport {\n ErrorTag,\n InfoTag,\n SuccessTag,\n Tag,\n TagProps,\n WarningTag,\n} from \"../tag/Tag.js\";\nimport { PaddingOptions } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport type TagType = \"success\" | \"warning\" | \"info\" | \"error\";\n\n/**\n * Bruk denne komponenten for å legge til ekstra informasjon i NavCard.\n * Innholdet blir rendret med skillelinje, og tekststil \"small\"\n */\nexport const InfoBlock: FC<WithChildren> = ({ children }) => (\n <div className=\"jkl-nav-card__info\">{children}</div>\n);\n\ninterface CardTag {\n /**\n * @default <none> Rendres som nøytral tag\n */\n type?: TagType;\n text: string;\n}\n\nexport interface NavCardProps\n extends PaddingOptions,\n AnchorHTMLAttributes<HTMLAnchorElement> {\n tag?: CardTag | Array<CardTag>;\n title: string;\n href?: string;\n to?: string;\n external?: boolean;\n description?: string;\n image?: Omit<ImageProps, \"className\">;\n className?: string;\n /**\n * Overstyr hvilken komponent som skal brukes, for eksempel hvis du har en Link-komponent fra en router.\n * @default \"a\"\n */\n component?: ElementType;\n density?: Density;\n}\n\nconst getTag = (type?: TagType) => {\n switch (type) {\n case \"info\":\n return InfoTag;\n case \"success\":\n return SuccessTag;\n case \"warning\":\n return WarningTag;\n case \"error\":\n return ErrorTag;\n default:\n return Tag;\n }\n};\nconst NavCardTag = ({\n text,\n type,\n density,\n}: CardTag & Pick<TagProps, \"density\">) => {\n const CardTag = getTag(type);\n return <CardTag density={density}>{text}</CardTag>;\n};\n\nexport const NavCard: FC<NavCardProps> = React.forwardRef<\n HTMLAnchorElement,\n NavCardProps\n>((props, ref) => {\n const {\n component = \"a\",\n padding = \"l\",\n image,\n tag,\n title,\n external,\n description,\n children,\n className,\n density,\n ...rest\n } = props;\n\n const Component = component;\n\n const tagArr = !tag ? undefined : Array.isArray(tag) ? tag : [tag];\n\n return (\n <Component\n ref={ref}\n aria-label={title}\n className={clsx(\"jkl-nav-card\", className)}\n data-density={density}\n {...rest}\n >\n {image && <Image className=\"jkl-nav-card__image\" {...image} />}\n <div\n className=\"jkl-nav-card__content\"\n style={getPaddingStyles(padding)}\n >\n {tagArr && (\n <div className=\"jkl-nav-card__tag-wrapper\">\n {tagArr.map((t, index) => (\n <NavCardTag\n type={t.type}\n text={t.text}\n key={index}\n />\n ))}\n </div>\n )}\n <div>\n <p\n className={clsx(\n \"jkl-nav-card__link\",\n external ? \"jkl-nav-card__link--external\" : \"\",\n )}\n >\n {title}\n </p>\n {description && (\n <p className=\"jkl-nav-card__description jkl-spacing-xs--top\">\n {description}\n </p>\n )}\n </div>\n {children}\n </div>\n </Component>\n );\n});\n\nNavCard.displayName = \"NavCard\";\n"],"names":["InfoBlock","children","jsx","className","NavCardTag","text","type","density","CardTag","InfoTag","SuccessTag","WarningTag","ErrorTag","Tag","getTag","NavCard","React","forwardRef","props","ref","component","padding","image","tag","title","external","description","rest","Component","tagArr","Array","isArray","jsxs","clsx","Image","style","getPaddingStyles","map","t","index","displayName"],"mappings":"4SAqBa,MAAAA,EAA8B,EAAGC,SAAAA,KACzCC,EAAA,MAAA,CAAIC,UAAU,qBAAsBF,SAAAA,IA4CnCG,EAAa,EACfC,KAAAA,EACAC,KAAAA,EACAC,QAAAA,MAEMC,MAAAA,EAnBK,CAACF,IACZ,OAAQA,GACJ,IAAK,OACMG,OAAAA,EACX,IAAK,UACMC,OAAAA,EACX,IAAK,UACMC,OAAAA,EACX,IAAK,QACMC,OAAAA,EACX,QACWC,OAAAA,EACf,EAOgBC,CAAOR,GAChB,OAAAJ,EAACM,EAAQ,CAAAD,QAAAA,EAAmBN,SAAKI,GAAA,EAG/BU,EAA4BC,EAAMC,YAG7C,CAACC,EAAOC,KACA,MACFC,UAAAA,EAAY,IACZC,QAAAA,EAAU,IACVC,MAAAA,EACAC,IAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,YAAAA,EACAzB,SAAAA,EACAE,UAAAA,EACAI,QAAAA,KACGoB,GACHT,EAEEU,EAAYR,EAEZS,EAAUN,EAAkBO,MAAMC,QAAQR,GAAOA,EAAM,CAACA,QAAxC,EAGlB,OAAAS,EAACJ,EAAA,CACGT,IAAAA,EACA,aAAYK,EACZrB,UAAW8B,EAAK,eAAgB9B,GAChC,eAAcI,KACVoB,EAEH1B,SAAA,CAAAqB,GAAUpB,EAAAgC,EAAA,CAAM/B,UAAU,yBAA0BmB,IACrDU,EAAC,MAAA,CACG7B,UAAU,wBACVgC,MAAOC,EAAiBf,GAEvBpB,SAAA,CACG4B,GAAA3B,EAAC,OAAIC,UAAU,4BACVF,WAAOoC,KAAI,CAACC,EAAGC,IACZrC,EAACE,EAAA,CACGE,KAAMgC,EAAEhC,KACRD,KAAMiC,EAAEjC,MACHkC,SAKpB,MACG,CAAAtC,SAAA,CAAAC,EAAC,IAAA,CACGC,UAAW8B,EACP,qBACAR,EAAW,+BAAiC,IAG/CxB,SAAAuB,IAEJE,GACGxB,EAAC,IAAE,CAAAC,UAAU,gDACRF,SACLyB,OAGPzB,OACL,IAKZc,EAAQyB,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"TaskCard.js","sources":["../../../../src/components/card/TaskCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { PaddingOptions } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport interface TaskCardProps extends PaddingOptions, WithChildren {\n /**\n * Bakgrunnsfargen til kortet\n * @deprecated Bruk `background` i stedet\n */\n bgColor?: \"hvit\" | \"snohvit\" | \"sand\" | \"dis\";\n /**\n * Bestemmer bakgrunnsfargen til kortet, på tvers av mørkt eller lyst tema\n * @default \"highlighted\"\n */\n background?: \"highlighted\" | \"normal\" | \"subdued\";\n /**\n * Skal kortet ha skygge?\n * @default false\n */\n withShadow?: boolean;\n className?: string;\n density?: Density;\n}\n\nexport const TaskCard: FC<TaskCardProps> = ({\n bgColor,\n background = \"highlighted\",\n withShadow = false,\n padding = \"l\",\n className,\n children,\n density,\n ...rest\n}) => (\n <div\n className={clsx(\"jkl-task-card\", className, {\n // Vi bruker kun background hvis bgColor ikke er satt, for å ikke bryte eksisterende kode\n [`jkl-task-card--${background}`]: !bgColor,\n [`jkl-task-card--${bgColor}`]: !!bgColor,\n \"jkl-task-card--with-shadow\": withShadow,\n })}\n data-density={density}\n {...rest}\n >\n <div className=\"jkl-task-card__content-wrapper\" style={getPaddingStyles(padding)}>\n {children}\n </div>\n </div>\n);\n"],"names":["TaskCard","bgColor","background","withShadow","padding","className","children","density","rest","jsx","clsx","style","getPaddingStyles"],"mappings":"oIA0BO,MAAMA,EAA8B,EACvCC,QAAAA,EACAC,WAAAA,EAAa,cACbC,WAAAA,GAAa,EACbC,QAAAA,EAAU,IACVC,UAAAA,EACAC,SAAAA,EACAC,QAAAA,KACGC,KAEHC,EAAC,MAAA,CACGJ,UAAWK,EAAK,gBAAiBL,EAAW,CAExC,CAAC,kBAAkBH,MAAgBD,EACnC,CAAC,kBAAkBA,OAAcA,EACjC,6BAA8BE,IAElC,eAAcI,KACVC,EAEJF,SAAAG,EAAC,OAAIJ,UAAU,iCAAiCM,MAAOC,EAAiBR,GACnEE,SAAAA"}
1
+ {"version":3,"file":"TaskCard.js","sources":["../../../../src/components/card/TaskCard.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, { FC } from \"react\";\nimport { Density, WithChildren } from \"../../core/types.js\";\nimport { PaddingOptions } from \"./types.js\";\nimport { getPaddingStyles } from \"./utils.js\";\n\nexport interface TaskCardProps extends PaddingOptions, WithChildren {\n /**\n * Bakgrunnsfargen til kortet\n * @deprecated Bruk `background` i stedet\n */\n bgColor?: \"hvit\" | \"snohvit\" | \"sand\" | \"dis\";\n /**\n * Bestemmer bakgrunnsfargen til kortet, på tvers av mørkt eller lyst tema\n * @default \"highlighted\"\n */\n background?: \"highlighted\" | \"normal\" | \"subdued\";\n /**\n * Skal kortet ha skygge?\n * @default false\n */\n withShadow?: boolean;\n className?: string;\n density?: Density;\n}\n\nexport const TaskCard: FC<TaskCardProps> = ({\n bgColor,\n background = \"highlighted\",\n withShadow = false,\n padding = \"l\",\n className,\n children,\n density,\n ...rest\n}) => (\n <div\n className={clsx(\"jkl-task-card\", className, {\n // Vi bruker kun background hvis bgColor ikke er satt, for å ikke bryte eksisterende kode\n [`jkl-task-card--${background}`]: !bgColor,\n [`jkl-task-card--${bgColor}`]: !!bgColor,\n \"jkl-task-card--with-shadow\": withShadow,\n })}\n data-density={density}\n {...rest}\n >\n <div\n className=\"jkl-task-card__content-wrapper\"\n style={getPaddingStyles(padding)}\n >\n {children}\n </div>\n </div>\n);\n"],"names":["TaskCard","bgColor","background","withShadow","padding","className","children","density","rest","jsx","clsx","style","getPaddingStyles"],"mappings":"oIA0BO,MAAMA,EAA8B,EACvCC,QAAAA,EACAC,WAAAA,EAAa,cACbC,WAAAA,GAAa,EACbC,QAAAA,EAAU,IACVC,UAAAA,EACAC,SAAAA,EACAC,QAAAA,KACGC,KAEHC,EAAC,MAAA,CACGJ,UAAWK,EAAK,gBAAiBL,EAAW,CAExC,CAAC,kBAAkBH,MAAgBD,EACnC,CAAC,kBAAkBA,OAAcA,EACjC,6BAA8BE,IAElC,eAAcI,KACVC,EAEJF,SAAAG,EAAC,MAAA,CACGJ,UAAU,iCACVM,MAAOC,EAAiBR,GAEvBE,SAAAA"}
@@ -1,4 +1,4 @@
1
1
  import { ExampleComponentProps, ExampleKnobsProps } from 'doc-utils/index.js';
2
2
  import { default as React } from 'react';
3
- export declare const FakturainfoExample: ({ boolValues, choiceValues }: ExampleComponentProps) => React.JSX.Element;
3
+ export declare const FakturainfoExample: ({ boolValues, choiceValues, }: ExampleComponentProps) => React.JSX.Element;
4
4
  export declare const fakturainfoExampleProps: ExampleKnobsProps;
@@ -1,4 +1,4 @@
1
1
  import { ExampleComponentProps, ExampleKnobsProps } from 'doc-utils/index.js';
2
2
  import { default as React } from 'react';
3
- export declare const StatuskortExample: ({ boolValues, choiceValues }: ExampleComponentProps) => React.JSX.Element;
3
+ export declare const StatuskortExample: ({ boolValues, choiceValues, }: ExampleComponentProps) => React.JSX.Element;
4
4
  export declare const statuskortExampleProps: ExampleKnobsProps;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../src/components/card/types.ts"],"sourcesContent":["export const SPACING_STEPS = [\"0\", \"m\", \"l\", \"xl\", \"2xl\", \"3xl\", \"4xl\"] as const;\ntype SpacingSteps = typeof SPACING_STEPS;\nexport const NEW_SPACING_STEPS = [\"0\", \"16\", \"24\", \"40\", \"64\", \"104\", \"168\"] as const;\ntype NewSpacingSteps = typeof NEW_SPACING_STEPS;\nexport type BasePadding = SpacingSteps[0 | 1 | 2 | 3] | NewSpacingSteps[0 | 1 | 2 | 3];\nexport type OldSpacingStep = SpacingSteps[number];\nexport type NewSpacingStep = NewSpacingSteps[number];\nexport type SpacingStep = SpacingSteps[number] | NewSpacingSteps[number];\n\nexport function isOldSpacingStep(value: SpacingStep): value is OldSpacingStep {\n return SPACING_STEPS.includes(value as OldSpacingStep);\n}\n\nexport interface PaddingShorthand {\n /**\n * Legger til ekstra rom i toppen av kortet, fra spacing-skalaen til Jøkul.\n * Ikke bruk ekstra topPadding sammen med tag. Verdier lavere enn for venstre og høyre padding\n * blir ignorert.\n * @default \"24\"\n */\n top?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n right?: BasePadding;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n * Verdier lavere enn for venstre og høyre padding blir ignorert.\n * @default \"24\"\n */\n bottom?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n left?: BasePadding;\n}\n\nexport interface PaddingOptions {\n /**\n * Hvor mye rom skal det være rundt innholdet i kortet?\n * @default \"24\"\n */\n padding?: BasePadding | PaddingShorthand;\n}\n"],"names":["SPACING_STEPS","NEW_SPACING_STEPS","isOldSpacingStep","value","includes"],"mappings":"AAAa,MAAAA,EAAgB,CAAC,IAAK,IAAK,IAAK,KAAM,MAAO,MAAO,OAEpDC,EAAoB,CAAC,IAAK,KAAM,KAAM,KAAM,KAAM,MAAO,OAO/D,SAASC,EAAiBC,GACtBH,OAAAA,EAAcI,SAASD,EAClC"}
1
+ {"version":3,"file":"types.js","sources":["../../../../src/components/card/types.ts"],"sourcesContent":["export const SPACING_STEPS = [\n \"0\",\n \"m\",\n \"l\",\n \"xl\",\n \"2xl\",\n \"3xl\",\n \"4xl\",\n] as const;\ntype SpacingSteps = typeof SPACING_STEPS;\nexport const NEW_SPACING_STEPS = [\n \"0\",\n \"16\",\n \"24\",\n \"40\",\n \"64\",\n \"104\",\n \"168\",\n] as const;\ntype NewSpacingSteps = typeof NEW_SPACING_STEPS;\nexport type BasePadding =\n | SpacingSteps[0 | 1 | 2 | 3]\n | NewSpacingSteps[0 | 1 | 2 | 3];\nexport type OldSpacingStep = SpacingSteps[number];\nexport type NewSpacingStep = NewSpacingSteps[number];\nexport type SpacingStep = SpacingSteps[number] | NewSpacingSteps[number];\n\nexport function isOldSpacingStep(value: SpacingStep): value is OldSpacingStep {\n return SPACING_STEPS.includes(value as OldSpacingStep);\n}\n\nexport interface PaddingShorthand {\n /**\n * Legger til ekstra rom i toppen av kortet, fra spacing-skalaen til Jøkul.\n * Ikke bruk ekstra topPadding sammen med tag. Verdier lavere enn for venstre og høyre padding\n * blir ignorert.\n * @default \"24\"\n */\n top?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n right?: BasePadding;\n /**\n * Legger til ekstra rom i bunnen av kortet, fra spacing-skalaen til Jøkul.\n * Verdier lavere enn for venstre og høyre padding blir ignorert.\n * @default \"24\"\n */\n bottom?: SpacingStep;\n /**\n * Bruk stegene fra spacing-skalaen til Jøkul.\n * Hvis left og right har forskjellige verdier brukes den største for begge.\n * @default \"24\"\n */\n left?: BasePadding;\n}\n\nexport interface PaddingOptions {\n /**\n * Hvor mye rom skal det være rundt innholdet i kortet?\n * @default \"24\"\n */\n padding?: BasePadding | PaddingShorthand;\n}\n"],"names":["SPACING_STEPS","NEW_SPACING_STEPS","isOldSpacingStep","value","includes"],"mappings":"AAAO,MAAMA,EAAgB,CACzB,IACA,IACA,IACA,KACA,MACA,MACA,OAGSC,EAAoB,CAC7B,IACA,KACA,KACA,KACA,KACA,MACA,OAUG,SAASC,EAAiBC,GACtBH,OAAAA,EAAcI,SAASD,EAClC"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/components/card/utils.ts"],"sourcesContent":["import { CSSProperties } from \"react\";\nimport { NEW_SPACING_STEPS, SPACING_STEPS, isOldSpacingStep } from \"./types.js\";\nimport type { BasePadding, PaddingShorthand, SpacingStep } from \"./types.js\";\n\nfunction getSpacingIndex(spacingStep?: SpacingStep, fallback: SpacingStep = \"24\"): number {\n const value = spacingStep || fallback;\n if (isOldSpacingStep(value)) {\n return SPACING_STEPS.indexOf(value);\n } else {\n return NEW_SPACING_STEPS.indexOf(value);\n }\n}\n\nexport function getPaddingStyles(padding: BasePadding | PaddingShorthand): CSSProperties {\n if (typeof padding === \"string\") {\n return { padding: `var(--jkl-spacing-${NEW_SPACING_STEPS[getSpacingIndex(padding)]})` };\n }\n\n // Sett sidepadding til den største av de to innsendte verdiene (eller \"24\")\n const sideSpacingIndex = Math.max(getSpacingIndex(padding.left), getSpacingIndex(padding.right));\n const sidePadding = NEW_SPACING_STEPS[sideSpacingIndex];\n\n // Sett topp-/bunnpadding til det største av innsendt verdi og sidepadding\n const topPadding = NEW_SPACING_STEPS[Math.max(sideSpacingIndex, getSpacingIndex(padding.top, sidePadding))];\n const bottomPadding = NEW_SPACING_STEPS[Math.max(sideSpacingIndex, getSpacingIndex(padding.bottom, sidePadding))];\n\n const top = `var(--jkl-spacing-${topPadding})`;\n const right = `var(--jkl-spacing-${sidePadding})`;\n const bottom = `var(--jkl-spacing-${bottomPadding})`;\n const left = `var(--jkl-spacing-${sidePadding})`;\n\n return { padding: `${top} ${right} ${bottom} ${left}` };\n}\n"],"names":["getSpacingIndex","spacingStep","fallback","value","isOldSpacingStep","SPACING_STEPS","indexOf","NEW_SPACING_STEPS","getPaddingStyles","padding","sideSpacingIndex","Math","max","left","right","sidePadding","top","bottom"],"mappings":"wFAIA,SAASA,EAAgBC,EAA2BC,EAAwB,MACxE,MAAMC,EAAQF,GAAeC,EACzBE,OAAAA,EAAiBD,GACVE,EAAcC,QAAQH,GAEtBI,EAAkBD,QAAQH,EAEzC,CAEO,SAASK,EAAiBC,GACzB,GAAmB,iBAAZA,EACA,MAAA,CAAEA,QAAS,qBAAqBF,EAAkBP,EAAgBS,QAIvEC,MAAAA,EAAmBC,KAAKC,IAAIZ,EAAgBS,EAAQI,MAAOb,EAAgBS,EAAQK,QACnFC,EAAcR,EAAkBG,GAW/B,MAAA,CAAED,QAAS,GALN,qBAHOF,EAAkBI,KAAKC,IAAIF,EAAkBV,EAAgBS,EAAQO,IAAKD,WAI/E,qBAAqBA,QACpB,qBAJOR,EAAkBI,KAAKC,IAAIF,EAAkBV,EAAgBS,EAAQQ,OAAQF,WAKtF,qBAAqBA,OAGtC"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/components/card/utils.ts"],"sourcesContent":["import { CSSProperties } from \"react\";\nimport { NEW_SPACING_STEPS, SPACING_STEPS, isOldSpacingStep } from \"./types.js\";\nimport type { BasePadding, PaddingShorthand, SpacingStep } from \"./types.js\";\n\nfunction getSpacingIndex(\n spacingStep?: SpacingStep,\n fallback: SpacingStep = \"24\",\n): number {\n const value = spacingStep || fallback;\n if (isOldSpacingStep(value)) {\n return SPACING_STEPS.indexOf(value);\n } else {\n return NEW_SPACING_STEPS.indexOf(value);\n }\n}\n\nexport function getPaddingStyles(\n padding: BasePadding | PaddingShorthand,\n): CSSProperties {\n if (typeof padding === \"string\") {\n return {\n padding: `var(--jkl-spacing-${\n NEW_SPACING_STEPS[getSpacingIndex(padding)]\n })`,\n };\n }\n\n // Sett sidepadding til den største av de to innsendte verdiene (eller \"24\")\n const sideSpacingIndex = Math.max(\n getSpacingIndex(padding.left),\n getSpacingIndex(padding.right),\n );\n const sidePadding = NEW_SPACING_STEPS[sideSpacingIndex];\n\n // Sett topp-/bunnpadding til det største av innsendt verdi og sidepadding\n const topPadding =\n NEW_SPACING_STEPS[\n Math.max(\n sideSpacingIndex,\n getSpacingIndex(padding.top, sidePadding),\n )\n ];\n const bottomPadding =\n NEW_SPACING_STEPS[\n Math.max(\n sideSpacingIndex,\n getSpacingIndex(padding.bottom, sidePadding),\n )\n ];\n\n const top = `var(--jkl-spacing-${topPadding})`;\n const right = `var(--jkl-spacing-${sidePadding})`;\n const bottom = `var(--jkl-spacing-${bottomPadding})`;\n const left = `var(--jkl-spacing-${sidePadding})`;\n\n return { padding: `${top} ${right} ${bottom} ${left}` };\n}\n"],"names":["getSpacingIndex","spacingStep","fallback","value","isOldSpacingStep","SPACING_STEPS","indexOf","NEW_SPACING_STEPS","getPaddingStyles","padding","sideSpacingIndex","Math","max","left","right","sidePadding","top","bottom"],"mappings":"wFAIA,SAASA,EACLC,EACAC,EAAwB,MAExB,MAAMC,EAAQF,GAAeC,EACzBE,OAAAA,EAAiBD,GACVE,EAAcC,QAAQH,GAEtBI,EAAkBD,QAAQH,EAEzC,CAEO,SAASK,EACZC,GAEI,GAAmB,iBAAZA,EACA,MAAA,CACHA,QAAS,qBACLF,EAAkBP,EAAgBS,QAM9C,MAAMC,EAAmBC,KAAKC,IAC1BZ,EAAgBS,EAAQI,MACxBb,EAAgBS,EAAQK,QAEtBC,EAAcR,EAAkBG,GAuB/B,MAAA,CAAED,QAAS,GALN,qBAdRF,EACII,KAAKC,IACDF,EACAV,EAAgBS,EAAQO,IAAKD,WAY3B,qBAAqBA,QACpB,qBATXR,EACII,KAAKC,IACDF,EACAV,EAAgBS,EAAQQ,OAAQF,WAO/B,qBAAqBA,OAGtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Checkbox.js","sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ReactNode,\n forwardRef,\n ChangeEventHandler,\n FocusEventHandler,\n InputHTMLAttributes,\n useEffect,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport { DataTestAutoId, Density } from \"../../core/types.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\n\nexport interface CheckboxProps extends DataTestAutoId, InputHTMLAttributes<HTMLInputElement> {\n children: ReactNode;\n name: string;\n value: string;\n checked?: boolean;\n inline?: boolean;\n className?: string;\n density?: Density;\n invalid?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n onFocus?: FocusEventHandler<HTMLInputElement>;\n onBlur?: FocusEventHandler<HTMLInputElement>;\n indeterminate?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>((props, ref) => {\n const {\n id,\n children,\n invalid,\n className,\n inline = false,\n density,\n \"data-testautoid\": testAutoId,\n checked,\n indeterminate,\n ...rest\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => inputRef.current!, []);\n\n const inputId = useId(id || \"jkl-checkbox\", { generateSuffix: !id });\n\n useEffect(() => {\n if (checked === true && indeterminate === true && process.env.NODE_ENV !== \"production\") {\n console.warn(\"A Checkbox can not be both checked and indeterminate, and will be treated as checked\");\n }\n if (inputRef.current) {\n inputRef.current.indeterminate = !checked && !!indeterminate;\n }\n }, [checked, indeterminate]);\n\n return (\n <div\n className={clsx(\"jkl-checkbox\", className, {\n \"jkl-checkbox--inline\": inline,\n \"jkl-checkbox--error\": invalid,\n })}\n data-density={density}\n >\n <input\n id={inputId}\n ref={inputRef}\n className=\"jkl-checkbox__input\"\n data-testid=\"jkl-checkbox-input\"\n aria-invalid={invalid}\n type=\"checkbox\"\n data-testautoid={testAutoId}\n checked={checked}\n {...rest}\n />\n <label htmlFor={inputId} className=\"jkl-checkbox__label\">\n <span className=\"jkl-checkbox__mark\">\n <span className=\"jkl-checkbox__indeterminate-mark\" />\n <span className=\"jkl-checkbox__check-mark\" />\n </span>\n <span className=\"jkl-checkbox__text\">{children}</span>\n </label>\n </div>\n );\n});\n\nCheckbox.displayName = \"Checkbox\";\n"],"names":["Checkbox","forwardRef","props","ref","id","children","invalid","className","inline","density","testAutoId","checked","indeterminate","rest","inputRef","useRef","useImperativeHandle","current","inputId","useId","generateSuffix","useEffect","process","env","NODE_ENV","console","warn","jsxs","clsx","jsx","type","htmlFor","displayName"],"mappings":"qOA6BO,MAAMA,EAAWC,GAA4C,CAACC,EAAOC,KAClE,MACFC,GAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,OAAAA,GAAS,EACTC,QAAAA,EACA,kBAAmBC,EACnBC,QAAAA,EACAC,cAAAA,KACGC,GACHX,EAEEY,EAAWC,EAAyB,MAC1CC,EAAoBb,GAAK,IAAMW,EAASG,SAAU,IAE5CC,MAAAA,EAAUC,EAAMf,GAAM,eAAgB,CAAEgB,gBAAiBhB,IAE/D,OAAAiB,GAAU,MACU,IAAZV,IAAsC,IAAlBC,GAAmD,eAAzBU,QAAQC,IAAIC,UAC1DC,QAAQC,KAAK,wFAEbZ,EAASG,UACTH,EAASG,QAAQL,eAAiBD,KAAaC,EAAAA,GAEpD,CAACD,EAASC,IAGTe,EAAC,MAAA,CACGpB,UAAWqB,EAAK,eAAgBrB,EAAW,CACvC,uBAAwBC,EACxB,sBAAuBF,IAE3B,eAAcG,EAEdJ,SAAA,CAAAwB,EAAC,QAAA,CACGzB,GAAIc,EACJf,IAAKW,EACLP,UAAU,sBACV,cAAY,qBACZ,eAAcD,EACdwB,KAAK,WACL,kBAAiBpB,EACjBC,QAAAA,KACIE,IAEPc,EAAA,QAAA,CAAMI,QAASb,EAASX,UAAU,sBAC/BF,SAAA,CAACsB,EAAA,OAAA,CAAKpB,UAAU,qBACZF,SAAA,CAACwB,EAAA,OAAA,CAAKtB,UAAU,qCAChBsB,EAAC,OAAK,CAAAtB,UAAU,gCAEnBsB,EAAA,OAAA,CAAKtB,UAAU,qBAAsBF,SAAAA,SAC1C,IAKZL,EAASgC,YAAc"}
1
+ {"version":3,"file":"Checkbox.js","sources":["../../../../src/components/checkbox/Checkbox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ReactNode,\n forwardRef,\n ChangeEventHandler,\n FocusEventHandler,\n InputHTMLAttributes,\n useEffect,\n useImperativeHandle,\n useRef,\n} from \"react\";\nimport { DataTestAutoId, Density } from \"../../core/types.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\n\nexport interface CheckboxProps\n extends DataTestAutoId,\n InputHTMLAttributes<HTMLInputElement> {\n children: ReactNode;\n name: string;\n value: string;\n checked?: boolean;\n inline?: boolean;\n className?: string;\n density?: Density;\n invalid?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n onFocus?: FocusEventHandler<HTMLInputElement>;\n onBlur?: FocusEventHandler<HTMLInputElement>;\n indeterminate?: boolean;\n}\n\nexport const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(\n (props, ref) => {\n const {\n id,\n children,\n invalid,\n className,\n inline = false,\n density,\n \"data-testautoid\": testAutoId,\n checked,\n indeterminate,\n ...rest\n } = props;\n\n const inputRef = useRef<HTMLInputElement>(null);\n useImperativeHandle(ref, () => inputRef.current!, []);\n\n const inputId = useId(id || \"jkl-checkbox\", { generateSuffix: !id });\n\n useEffect(() => {\n if (\n checked === true &&\n indeterminate === true &&\n process.env.NODE_ENV !== \"production\"\n ) {\n console.warn(\n \"A Checkbox can not be both checked and indeterminate, and will be treated as checked\",\n );\n }\n if (inputRef.current) {\n inputRef.current.indeterminate = !checked && !!indeterminate;\n }\n }, [checked, indeterminate]);\n\n return (\n <div\n className={clsx(\"jkl-checkbox\", className, {\n \"jkl-checkbox--inline\": inline,\n \"jkl-checkbox--error\": invalid,\n })}\n data-density={density}\n >\n <input\n id={inputId}\n ref={inputRef}\n className=\"jkl-checkbox__input\"\n data-testid=\"jkl-checkbox-input\"\n aria-invalid={invalid}\n type=\"checkbox\"\n data-testautoid={testAutoId}\n checked={checked}\n {...rest}\n />\n <label htmlFor={inputId} className=\"jkl-checkbox__label\">\n <span className=\"jkl-checkbox__mark\">\n <span className=\"jkl-checkbox__indeterminate-mark\" />\n <span className=\"jkl-checkbox__check-mark\" />\n </span>\n <span className=\"jkl-checkbox__text\">{children}</span>\n </label>\n </div>\n );\n },\n);\n\nCheckbox.displayName = \"Checkbox\";\n"],"names":["Checkbox","forwardRef","props","ref","id","children","invalid","className","inline","density","testAutoId","checked","indeterminate","rest","inputRef","useRef","useImperativeHandle","current","inputId","useId","generateSuffix","useEffect","process","env","NODE_ENV","console","warn","jsxs","clsx","jsx","type","htmlFor","displayName"],"mappings":"qOA+BO,MAAMA,EAAWC,GACpB,CAACC,EAAOC,KACE,MACFC,GAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,UAAAA,EACAC,OAAAA,GAAS,EACTC,QAAAA,EACA,kBAAmBC,EACnBC,QAAAA,EACAC,cAAAA,KACGC,GACHX,EAEEY,EAAWC,EAAyB,MAC1CC,EAAoBb,GAAK,IAAMW,EAASG,SAAU,IAE5CC,MAAAA,EAAUC,EAAMf,GAAM,eAAgB,CAAEgB,gBAAiBhB,IAE/D,OAAAiB,GAAU,MAEU,IAAZV,IACkB,IAAlBC,GACyB,eAAzBU,QAAQC,IAAIC,UAEJC,QAAAC,KACJ,wFAGJZ,EAASG,UACTH,EAASG,QAAQL,eAAiBD,KAAaC,EAAAA,GAEpD,CAACD,EAASC,IAGTe,EAAC,MAAA,CACGpB,UAAWqB,EAAK,eAAgBrB,EAAW,CACvC,uBAAwBC,EACxB,sBAAuBF,IAE3B,eAAcG,EAEdJ,SAAA,CAAAwB,EAAC,QAAA,CACGzB,GAAIc,EACJf,IAAKW,EACLP,UAAU,sBACV,cAAY,qBACZ,eAAcD,EACdwB,KAAK,WACL,kBAAiBpB,EACjBC,QAAAA,KACIE,IAEPc,EAAA,QAAA,CAAMI,QAASb,EAASX,UAAU,sBAC/BF,SAAA,CAACsB,EAAA,OAAA,CAAKpB,UAAU,qBACZF,SAAA,CAACwB,EAAA,OAAA,CAAKtB,UAAU,qCAChBsB,EAAC,OAAK,CAAAtB,UAAU,gCAEnBsB,EAAA,OAAA,CAAKtB,UAAU,qBAAsBF,SAAAA,SAC1C,IAMhBL,EAASgC,YAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.js","sources":["../../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ChangeEvent,\n FC,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Density } from \"../../core/types.js\";\nimport { useAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAnimatedHeight.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { useListNavigation } from \"../../hooks/useListNavigation/useListNavigation.js\";\nimport { ValuePair } from \"../../utilities/valuePair.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\nimport { CheckIcon } from \"../icon/index.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { InputGroup, InputGroupProps } from \"../input-group/InputGroup.js\";\nimport { LabelProps } from \"../input-group/Label.js\";\nimport { Tag } from \"../tag/Tag.js\";\nimport { Tooltip } from \"../tooltip/Tooltip.js\";\nimport { TooltipContent } from \"../tooltip/TooltipContent.js\";\nimport { TooltipTrigger } from \"../tooltip/TooltipTrigger.js\";\n\nexport type ComboboxValuePair = ValuePair & {\n tagLabel?: string;\n isMarked?: boolean;\n};\n\nexport function getComboboxValuePair(item: string | ComboboxValuePair): ComboboxValuePair {\n return typeof item === \"string\" ? { value: item, label: item } : item;\n}\n\ninterface PartialChangeEvent extends Partial<Omit<ChangeEvent<HTMLElement>, \"target\">> {\n type: \"change\" | \"blur\";\n target: {\n name: string;\n value: string;\n selectedOptions: Array<ValuePair>;\n };\n}\n\ntype ChangeEventHandler = (event: PartialChangeEvent) => void;\n\ninterface ComboboxProps extends InputGroupProps {\n id?: string;\n placeholder?: string;\n labelProps?: Omit<LabelProps, \"children\" | \"density\" | \"htmlFor\" | \"standAlone\">;\n items: Array<ValuePair>;\n noMatchingOption?: string;\n label: string;\n name: string;\n value?: Array<ValuePair>;\n density?: Density;\n width?: string;\n helpLabel?: string;\n errorLabel?: string;\n className?: string;\n invalid?: boolean;\n hasTagHover?: boolean;\n onChange: ChangeEventHandler;\n onBlur?: ChangeEventHandler;\n onFocus?: ChangeEventHandler;\n}\n\nexport const Combobox: FC<ComboboxProps> = ({\n id,\n placeholder,\n items,\n onChange,\n onFocus,\n onBlur,\n value,\n label,\n noMatchingOption,\n labelProps,\n helpLabel,\n errorLabel,\n width,\n density,\n name,\n className,\n invalid,\n hasTagHover,\n}) => {\n const listId = useId(id || \"jkl-combobox\", { generateSuffix: !id });\n const labelId = `${listId}_label`;\n const buttonId = `${listId}_button`;\n const inputId = `${listId}_search-input`;\n\n const [selectedValue, setSelectedValue] = useState<Array<ComboboxValuePair>>(value || []);\n const [isPointingDown, setIsPointingDown] = useState<boolean>(true);\n const [showMenu, setShowMenu] = useState<boolean>(false);\n const [searchValue, setSearchValue] = useState<string>(\"\");\n const [noResults, setNoResults] = useState(false);\n const [marked, setMarked] = useState<boolean>(false);\n\n const searchRef = useRef<HTMLInputElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n const focusInsideRef = useRef(false);\n\n useEffect(() => {\n setSearchValue(\"\");\n if (showMenu && searchRef.current) {\n searchRef.current.focus();\n }\n }, [showMenu]);\n\n useEffect(() => {\n setSelectedValue((prev) => value || prev);\n }, [value]);\n\n // Funksjon for å stile valgt element\n const isSelected = (option: ValuePair) => {\n if (!selectedValue) {\n return false;\n } else {\n return selectedValue.some((value) => value.value === option.value);\n }\n };\n\n // Fjerne ett eller flere valg\n const removeOption = useCallback(\n (option: string) => {\n return selectedValue.filter((value) => value.value !== option);\n },\n [selectedValue],\n );\n\n const onTagRemove = useCallback(\n (\n e: React.MouseEvent<HTMLButtonElement, globalThis.MouseEvent> | React.KeyboardEvent<HTMLInputElement>,\n option: string,\n ) => {\n let newValue = removeOption(option);\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n e.stopPropagation();\n\n if (newValue.length === 0) {\n setMarked(false);\n }\n },\n [removeOption, setSelectedValue, onChange, name, setMarked],\n );\n\n // Håndtere valgt verdi i listen\n const onItemClick = useCallback(\n (option: string) => {\n let newValue: Array<ValuePair>;\n\n if (selectedValue.some((value) => value.value === option)) {\n newValue = removeOption(option);\n } else {\n const item = items.find((i) => i.value === option);\n newValue = [...selectedValue, item as ValuePair];\n }\n searchRef.current?.focus();\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n },\n [selectedValue, setSelectedValue, onChange, name, removeOption, items],\n );\n\n // Funksjon for søk\n const onSearch = (e: { target: { value: React.SetStateAction<string> } }) => {\n searchRef.current?.focus();\n setShowMenu(true);\n setSearchValue(e.target.value);\n };\n\n const options = useMemo(() => {\n if (!searchValue) {\n return items;\n }\n\n const filteredOptions = items.filter(\n (option) => option.label.toLowerCase().indexOf(searchValue.toLowerCase()) >= 0,\n );\n\n setNoResults(filteredOptions.length === 0);\n\n return filteredOptions;\n }, [searchValue, items]);\n\n // Det første elementet i listen skal være aktivt fram til brukeren klikker på noe annet\n const [activeDescendant, setActiveDescendant] = useState<string | undefined>(\n options[0]?.value ? `${listId}-${options[0]?.value}` : undefined,\n );\n\n // Håndtere arrow-state\n useEffect(() => {\n if (showMenu) {\n setIsPointingDown(false);\n } else {\n setIsPointingDown(true);\n }\n }, [showMenu]);\n\n // Lukk meny med ESC\n useEffect(() => {\n const handleEscape = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\" && showMenu) {\n setShowMenu(false);\n }\n };\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n if (typeof window !== \"undefined\" && showMenu) {\n window.removeEventListener(\"keydown\", handleEscape);\n }\n };\n }, [setShowMenu, showMenu]);\n\n // Fokushåndtering\n const handleFocusPlacement = useCallback((isOpen: boolean) => {\n if (isOpen) {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n } else {\n if (focusInsideRef.current && inputRef.current) {\n inputRef.current.focus();\n }\n }\n }, []);\n\n const handleFocus = useCallback(() => {\n if (!focusInsideRef.current) {\n if (onFocus) {\n onFocus({\n type: \"change\",\n target: {\n name,\n value: selectedValue?.[0].value || \"\",\n selectedOptions: selectedValue,\n },\n });\n }\n focusInsideRef.current = true;\n setShowMenu(true);\n }\n }, [onFocus, selectedValue, name]);\n\n const [dropdownRef] = useAnimatedHeight<HTMLDivElement>(showMenu, {\n onFirstVisible: handleFocusPlacement,\n onTransitionEnd: handleFocusPlacement,\n });\n\n useListNavigation({ ref: dropdownRef });\n\n const componentRootElementRef = useRef<HTMLDivElement>(null);\n\n const handleBlur = useCallback(\n (e: FocusEvent<HTMLDivElement | HTMLInputElement | HTMLButtonElement>) => {\n const componentRootElement = componentRootElementRef.current;\n const nextFocusIsInsideComponent =\n componentRootElement && componentRootElement.contains(e.relatedTarget as Node);\n if (!nextFocusIsInsideComponent) {\n setSearchValue(\"\");\n\n if (onBlur) {\n onBlur({\n type: \"blur\",\n target: {\n name,\n value: selectedValue?.[0]?.value || \"\",\n selectedOptions: selectedValue,\n },\n });\n inputRef.current?.dispatchEvent(new Event(\"focusout\", { bubbles: true }));\n }\n focusInsideRef.current = false;\n setShowMenu(false);\n }\n },\n [onBlur, name, selectedValue],\n );\n\n const handleMouseOver = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n // Ved mouseOver på options flytter vi fokus til dem for å unngå \"dobbel fokus\"\n // der det ser ut som to forskjellige elementer er fokusert/hovered samtidig\n (e.target as HTMLButtonElement).focus({ preventScroll: true });\n }, []);\n\n // Tastaturnavigasjon\n const handleSearchOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n const listElement = dropdownRef.current;\n if (listElement) {\n listElement.querySelector<HTMLButtonElement>('[role=\"option\"]')?.focus();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShowMenu(false);\n }\n\n if ((e.metaKey && e.key === \"a\") || (e.ctrlKey && e.key === \"a\")) {\n e.preventDefault();\n e.stopPropagation();\n const updatedSelectedValue = selectedValue.map((item) => ({\n ...item,\n isMarked: true,\n }));\n setMarked(true);\n setSelectedValue(updatedSelectedValue);\n } else if (e.key === \"Backspace\") {\n e.stopPropagation();\n setMarked(false);\n\n // Sjekk om selectedValue er markert\n const selectedValueIsMarked = selectedValue.some((item) => item.isMarked);\n\n if (selectedValueIsMarked) {\n const updatedSelectedValue = selectedValue.filter((item) => !item.isMarked);\n setSelectedValue(updatedSelectedValue);\n setSearchValue(\"\");\n } else if (selectedValue.length > 0 && searchValue === \"\") {\n // Hvis ingen items er markert, fjern siste valgte item\n onTagRemove(e, selectedValue[selectedValue.length - 1].value);\n }\n }\n },\n [selectedValue, searchValue, dropdownRef, onTagRemove],\n );\n\n const handleOptionOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Tab\") {\n if (searchRef.current) {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.shiftKey) {\n searchRef.current.focus();\n } else {\n setShowMenu(false);\n searchRef.current.focus();\n }\n }\n } else if (e.key === \"ArrowUp\") {\n if (dropdownRef.current && searchRef.current) {\n // Can't be based on index since the first item might be filtered out\n const firstVisible = dropdownRef.current.querySelector('[role=\"option\"]:not([hidden])');\n if (e.currentTarget.id === firstVisible?.id && searchRef.current) {\n searchRef.current.focus();\n }\n }\n }\n },\n [setShowMenu, dropdownRef],\n );\n\n const hasSelection = selectedValue.length >= 1;\n\n return (\n <InputGroup\n label={label}\n id={inputId}\n ref={componentRootElementRef}\n data-testid=\"jkl-combobox\"\n className={clsx(\"jkl-combobox\", className, {\n \"jkl-combobox--invalid\": !!errorLabel || invalid,\n \"jkl-combobox--menu-open\": showMenu,\n \"jkl-combobox--menu-closed\": !showMenu && hasSelection,\n })}\n labelProps={{\n id: labelId,\n ...labelProps,\n }}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n density={density}\n render={(inputProps) => (\n <div\n className={clsx(\"jkl-combobox__wrapper\", { \"jkl-combobox__wrapper--active-value\": hasSelection })}\n style={{ width }}\n tabIndex={-1}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <div className=\"jkl-combobox__tags\" data-testid=\"jkl-combobox__tags\">\n {selectedValue.map(getComboboxValuePair).map((option) => (\n <Tag\n key={option.value}\n className={`jkl-tag ${marked && \"jkl-tag__marked\"}`}\n data-testid=\"jkl-tag\"\n dismissAction={{\n onClick: (e) => {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n onTagRemove(e, option.value);\n },\n onBlur: handleBlur,\n label: `Fjern ${option.value}`,\n }}\n >\n {hasTagHover ? (\n <Tooltip key={option.value}>\n <TooltipTrigger>\n {\" \"}\n <span aria-hidden=\"true\" data-testid=\"jkl-tag__content\">\n {option.tagLabel ? option.tagLabel : option.label}\n </span>\n </TooltipTrigger>\n <TooltipContent>{option.label}</TooltipContent>\n </Tooltip>\n ) : (\n <span aria-hidden=\"true\" data-testid=\"jkl-tag__content\">\n {option.tagLabel ? option.tagLabel : option.label}\n </span>\n )}\n </Tag>\n ))}\n <input\n {...inputProps}\n className=\"jkl-combobox__search-input\"\n onChange={onSearch}\n data-testid=\"jkl-combobox__search-input\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleSearchOnKeyDown}\n value={searchValue}\n ref={searchRef}\n aria-controls={listId}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={showMenu}\n placeholder={selectedValue.length > 0 ? \"\" : placeholder}\n autoComplete=\"off\"\n />\n </div>\n\n <div\n className=\"jkl-combobox__menu\"\n role=\"listbox\"\n ref={dropdownRef}\n id={listId}\n aria-labelledby={labelId}\n aria-multiselectable=\"true\"\n aria-activedescendant={activeDescendant}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={-1}\n >\n {options.map((option, i) => (\n <button\n key={`${listId}-${option.value}`}\n type=\"button\"\n id={`${listId}__${option.value}`}\n aria-selected={isSelected(option)}\n role=\"option\"\n value={option.value}\n onBlur={handleBlur}\n className={`jkl-combobox__option ${\n isSelected(option) && \"jkl-combobox__option--selected\"\n }`}\n data-testid=\"jkl-combobox__option\"\n data-testautoid={`jkl-combobox__option-${i}`}\n onFocus={handleFocus}\n onKeyDown={handleOptionOnKeyDown}\n onClick={(e) => {\n setActiveDescendant(`${listId}__${option.value}`); // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#required_javascript_features\n e.stopPropagation();\n onItemClick(option.value);\n setSearchValue(\"\");\n }}\n onMouseOver={handleMouseOver}\n >\n {option.description ? (\n <span>\n {option.label}\n <span className=\"jkl-combobox__option-description\">{option.description}</span>\n </span>\n ) : (\n option.label\n )}\n {isSelected(option) ? (\n <span>\n <CheckIcon />{\" \"}\n </span>\n ) : null}\n </button>\n ))}\n {noResults && <div className=\"jkl-combobox__no-option\">{noMatchingOption}</div>}\n </div>\n <div className=\"jkl-combobox__actions\">\n <IconButton\n id={buttonId}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className=\"jkl-combobox__button\"\n data-testid=\"jkl-combobox__button\"\n aria-label={`${selectedValue.map((value) => value.label) || \"Velg\"},${label}`}\n aria-expanded={showMenu}\n aria-controls={listId}\n role=\"button\"\n onClick={() => setShowMenu(true)}\n onMouseDown={(e) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n >\n <ArrowVerticalAnimated pointingDown={isPointingDown} />\n </IconButton>\n </div>\n </div>\n )}\n />\n );\n};\nCombobox.displayName = \"Combobox\";\n"],"names":["getComboboxValuePair","item","value","label","Combobox","id","placeholder","items","onChange","onFocus","onBlur","noMatchingOption","labelProps","helpLabel","errorLabel","width","density","name","className","invalid","hasTagHover","listId","useId","generateSuffix","labelId","buttonId","inputId","selectedValue","setSelectedValue","useState","isPointingDown","setIsPointingDown","showMenu","setShowMenu","searchValue","setSearchValue","noResults","setNoResults","marked","setMarked","searchRef","useRef","inputRef","focusInsideRef","useEffect","current","focus","prev","isSelected","option","some","removeOption","useCallback","filter","onTagRemove","e","newValue","type","target","selectedOptions","stopPropagation","length","onItemClick","find","i","_a","onSearch","options","useMemo","filteredOptions","toLowerCase","indexOf","activeDescendant","setActiveDescendant","_b","handleEscape","key","window","addEventListener","removeEventListener","handleFocusPlacement","isOpen","handleFocus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","useListNavigation","ref","componentRootElementRef","handleBlur","componentRootElement","contains","relatedTarget","dispatchEvent","Event","bubbles","handleMouseOver","preventScroll","handleSearchOnKeyDown","preventDefault","listElement","querySelector","metaKey","ctrlKey","updatedSelectedValue","map","isMarked","handleOptionOnKeyDown","shiftKey","firstVisible","currentTarget","hasSelection","jsx","InputGroup","clsx","render","inputProps","jsxs","style","tabIndex","children","Tag","dismissAction","onClick","Tooltip","TooltipTrigger","tagLabel","TooltipContent","onKeyDown","role","autoComplete","onMouseOver","description","CheckIcon","IconButton","onMouseDown","ArrowVerticalAnimated","pointingDown","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.js","sources":["../../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import clsx from \"clsx\";\nimport React, {\n ChangeEvent,\n FC,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { Density } from \"../../core/types.js\";\nimport { useAnimatedHeight } from \"../../hooks/useAnimatedHeight/useAnimatedHeight.js\";\nimport { useId } from \"../../hooks/useId/useId.js\";\nimport { useListNavigation } from \"../../hooks/useListNavigation/useListNavigation.js\";\nimport { ValuePair } from \"../../utilities/valuePair.js\";\nimport { ArrowVerticalAnimated } from \"../icon/icons/animated/ArrowVerticalAnimated.js\";\nimport { CheckIcon } from \"../icon/index.js\";\nimport { IconButton } from \"../icon-button/IconButton.js\";\nimport { InputGroup, InputGroupProps } from \"../input-group/InputGroup.js\";\nimport { LabelProps } from \"../input-group/Label.js\";\nimport { Tag } from \"../tag/Tag.js\";\nimport { Tooltip } from \"../tooltip/Tooltip.js\";\nimport { TooltipContent } from \"../tooltip/TooltipContent.js\";\nimport { TooltipTrigger } from \"../tooltip/TooltipTrigger.js\";\n\nexport type ComboboxValuePair = ValuePair & {\n tagLabel?: string;\n isMarked?: boolean;\n};\n\nexport function getComboboxValuePair(\n item: string | ComboboxValuePair,\n): ComboboxValuePair {\n return typeof item === \"string\" ? { value: item, label: item } : item;\n}\n\ninterface PartialChangeEvent\n extends Partial<Omit<ChangeEvent<HTMLElement>, \"target\">> {\n type: \"change\" | \"blur\";\n target: {\n name: string;\n value: string;\n selectedOptions: Array<ValuePair>;\n };\n}\n\ntype ChangeEventHandler = (event: PartialChangeEvent) => void;\n\ninterface ComboboxProps extends InputGroupProps {\n id?: string;\n placeholder?: string;\n labelProps?: Omit<\n LabelProps,\n \"children\" | \"density\" | \"htmlFor\" | \"standAlone\"\n >;\n items: Array<ValuePair>;\n noMatchingOption?: string;\n label: string;\n name: string;\n value?: Array<ValuePair>;\n density?: Density;\n width?: string;\n helpLabel?: string;\n errorLabel?: string;\n className?: string;\n invalid?: boolean;\n hasTagHover?: boolean;\n onChange: ChangeEventHandler;\n onBlur?: ChangeEventHandler;\n onFocus?: ChangeEventHandler;\n}\n\nexport const Combobox: FC<ComboboxProps> = ({\n id,\n placeholder,\n items,\n onChange,\n onFocus,\n onBlur,\n value,\n label,\n noMatchingOption,\n labelProps,\n helpLabel,\n errorLabel,\n width,\n density,\n name,\n className,\n invalid,\n hasTagHover,\n}) => {\n const listId = useId(id || \"jkl-combobox\", { generateSuffix: !id });\n const labelId = `${listId}_label`;\n const buttonId = `${listId}_button`;\n const inputId = `${listId}_search-input`;\n\n const [selectedValue, setSelectedValue] = useState<\n Array<ComboboxValuePair>\n >(value || []);\n const [isPointingDown, setIsPointingDown] = useState<boolean>(true);\n const [showMenu, setShowMenu] = useState<boolean>(false);\n const [searchValue, setSearchValue] = useState<string>(\"\");\n const [noResults, setNoResults] = useState(false);\n const [marked, setMarked] = useState<boolean>(false);\n\n const searchRef = useRef<HTMLInputElement>(null);\n const inputRef = useRef<HTMLDivElement>(null);\n const focusInsideRef = useRef(false);\n\n useEffect(() => {\n setSearchValue(\"\");\n if (showMenu && searchRef.current) {\n searchRef.current.focus();\n }\n }, [showMenu]);\n\n useEffect(() => {\n setSelectedValue((prev) => value || prev);\n }, [value]);\n\n // Funksjon for å stile valgt element\n const isSelected = (option: ValuePair) => {\n if (!selectedValue) {\n return false;\n } else {\n return selectedValue.some((value) => value.value === option.value);\n }\n };\n\n // Fjerne ett eller flere valg\n const removeOption = useCallback(\n (option: string) => {\n return selectedValue.filter((value) => value.value !== option);\n },\n [selectedValue],\n );\n\n const onTagRemove = useCallback(\n (\n e:\n | React.MouseEvent<HTMLButtonElement, globalThis.MouseEvent>\n | React.KeyboardEvent<HTMLInputElement>,\n option: string,\n ) => {\n let newValue = removeOption(option);\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n e.stopPropagation();\n\n if (newValue.length === 0) {\n setMarked(false);\n }\n },\n [removeOption, setSelectedValue, onChange, name, setMarked],\n );\n\n // Håndtere valgt verdi i listen\n const onItemClick = useCallback(\n (option: string) => {\n let newValue: Array<ValuePair>;\n\n if (selectedValue.some((value) => value.value === option)) {\n newValue = removeOption(option);\n } else {\n const item = items.find((i) => i.value === option);\n newValue = [...selectedValue, item as ValuePair];\n }\n searchRef.current?.focus();\n setSelectedValue(newValue);\n onChange({\n type: \"change\",\n target: { name, value: option, selectedOptions: newValue },\n });\n },\n [selectedValue, setSelectedValue, onChange, name, removeOption, items],\n );\n\n // Funksjon for søk\n const onSearch = (e: {\n target: { value: React.SetStateAction<string> };\n }) => {\n searchRef.current?.focus();\n setShowMenu(true);\n setSearchValue(e.target.value);\n };\n\n const options = useMemo(() => {\n if (!searchValue) {\n return items;\n }\n\n const filteredOptions = items.filter(\n (option) =>\n option.label.toLowerCase().indexOf(searchValue.toLowerCase()) >=\n 0,\n );\n\n setNoResults(filteredOptions.length === 0);\n\n return filteredOptions;\n }, [searchValue, items]);\n\n // Det første elementet i listen skal være aktivt fram til brukeren klikker på noe annet\n const [activeDescendant, setActiveDescendant] = useState<\n string | undefined\n >(options[0]?.value ? `${listId}-${options[0]?.value}` : undefined);\n\n // Håndtere arrow-state\n useEffect(() => {\n if (showMenu) {\n setIsPointingDown(false);\n } else {\n setIsPointingDown(true);\n }\n }, [showMenu]);\n\n // Lukk meny med ESC\n useEffect(() => {\n const handleEscape = (e: globalThis.KeyboardEvent) => {\n if (e.key === \"Escape\" && showMenu) {\n setShowMenu(false);\n }\n };\n if (typeof window !== \"undefined\") {\n window.addEventListener(\"keydown\", handleEscape);\n }\n return () => {\n if (typeof window !== \"undefined\" && showMenu) {\n window.removeEventListener(\"keydown\", handleEscape);\n }\n };\n }, [setShowMenu, showMenu]);\n\n // Fokushåndtering\n const handleFocusPlacement = useCallback((isOpen: boolean) => {\n if (isOpen) {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n } else {\n if (focusInsideRef.current && inputRef.current) {\n inputRef.current.focus();\n }\n }\n }, []);\n\n const handleFocus = useCallback(() => {\n if (!focusInsideRef.current) {\n if (onFocus) {\n onFocus({\n type: \"change\",\n target: {\n name,\n value: selectedValue?.[0].value || \"\",\n selectedOptions: selectedValue,\n },\n });\n }\n focusInsideRef.current = true;\n setShowMenu(true);\n }\n }, [onFocus, selectedValue, name]);\n\n const [dropdownRef] = useAnimatedHeight<HTMLDivElement>(showMenu, {\n onFirstVisible: handleFocusPlacement,\n onTransitionEnd: handleFocusPlacement,\n });\n\n useListNavigation({ ref: dropdownRef });\n\n const componentRootElementRef = useRef<HTMLDivElement>(null);\n\n const handleBlur = useCallback(\n (\n e: FocusEvent<\n HTMLDivElement | HTMLInputElement | HTMLButtonElement\n >,\n ) => {\n const componentRootElement = componentRootElementRef.current;\n const nextFocusIsInsideComponent =\n componentRootElement &&\n componentRootElement.contains(e.relatedTarget as Node);\n if (!nextFocusIsInsideComponent) {\n setSearchValue(\"\");\n\n if (onBlur) {\n onBlur({\n type: \"blur\",\n target: {\n name,\n value: selectedValue?.[0]?.value || \"\",\n selectedOptions: selectedValue,\n },\n });\n inputRef.current?.dispatchEvent(\n new Event(\"focusout\", { bubbles: true }),\n );\n }\n focusInsideRef.current = false;\n setShowMenu(false);\n }\n },\n [onBlur, name, selectedValue],\n );\n\n const handleMouseOver = useCallback((e: MouseEvent<HTMLButtonElement>) => {\n // Ved mouseOver på options flytter vi fokus til dem for å unngå \"dobbel fokus\"\n // der det ser ut som to forskjellige elementer er fokusert/hovered samtidig\n (e.target as HTMLButtonElement).focus({ preventScroll: true });\n }, []);\n\n // Tastaturnavigasjon\n const handleSearchOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"ArrowDown\") {\n e.preventDefault();\n e.stopPropagation();\n const listElement = dropdownRef.current;\n if (listElement) {\n listElement\n .querySelector<HTMLButtonElement>('[role=\"option\"]')\n ?.focus();\n }\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n e.stopPropagation();\n setShowMenu(false);\n }\n\n if ((e.metaKey && e.key === \"a\") || (e.ctrlKey && e.key === \"a\")) {\n e.preventDefault();\n e.stopPropagation();\n const updatedSelectedValue = selectedValue.map((item) => ({\n ...item,\n isMarked: true,\n }));\n setMarked(true);\n setSelectedValue(updatedSelectedValue);\n } else if (e.key === \"Backspace\") {\n e.stopPropagation();\n setMarked(false);\n\n // Sjekk om selectedValue er markert\n const selectedValueIsMarked = selectedValue.some(\n (item) => item.isMarked,\n );\n\n if (selectedValueIsMarked) {\n const updatedSelectedValue = selectedValue.filter(\n (item) => !item.isMarked,\n );\n setSelectedValue(updatedSelectedValue);\n setSearchValue(\"\");\n } else if (selectedValue.length > 0 && searchValue === \"\") {\n // Hvis ingen items er markert, fjern siste valgte item\n onTagRemove(\n e,\n selectedValue[selectedValue.length - 1].value,\n );\n }\n }\n },\n [selectedValue, searchValue, dropdownRef, onTagRemove],\n );\n\n const handleOptionOnKeyDown = useCallback(\n (e: KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === \"Tab\") {\n if (searchRef.current) {\n e.preventDefault();\n e.stopPropagation();\n\n if (e.shiftKey) {\n searchRef.current.focus();\n } else {\n setShowMenu(false);\n searchRef.current.focus();\n }\n }\n } else if (e.key === \"ArrowUp\") {\n if (dropdownRef.current && searchRef.current) {\n // Can't be based on index since the first item might be filtered out\n const firstVisible = dropdownRef.current.querySelector(\n '[role=\"option\"]:not([hidden])',\n );\n if (\n e.currentTarget.id === firstVisible?.id &&\n searchRef.current\n ) {\n searchRef.current.focus();\n }\n }\n }\n },\n [setShowMenu, dropdownRef],\n );\n\n const hasSelection = selectedValue.length >= 1;\n\n return (\n <InputGroup\n label={label}\n id={inputId}\n ref={componentRootElementRef}\n data-testid=\"jkl-combobox\"\n className={clsx(\"jkl-combobox\", className, {\n \"jkl-combobox--invalid\": !!errorLabel || invalid,\n \"jkl-combobox--menu-open\": showMenu,\n \"jkl-combobox--menu-closed\": !showMenu && hasSelection,\n })}\n labelProps={{\n id: labelId,\n ...labelProps,\n }}\n helpLabel={helpLabel}\n errorLabel={errorLabel}\n density={density}\n render={(inputProps) => (\n <div\n className={clsx(\"jkl-combobox__wrapper\", {\n \"jkl-combobox__wrapper--active-value\": hasSelection,\n })}\n style={{ width }}\n tabIndex={-1}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n <div\n className=\"jkl-combobox__tags\"\n data-testid=\"jkl-combobox__tags\"\n >\n {selectedValue\n .map(getComboboxValuePair)\n .map((option) => (\n <Tag\n key={option.value}\n className={`jkl-tag ${\n marked && \"jkl-tag__marked\"\n }`}\n data-testid=\"jkl-tag\"\n dismissAction={{\n onClick: (e) => {\n if (searchRef.current) {\n searchRef.current.focus();\n }\n onTagRemove(e, option.value);\n },\n onBlur: handleBlur,\n label: `Fjern ${option.value}`,\n }}\n >\n {hasTagHover ? (\n <Tooltip key={option.value}>\n <TooltipTrigger>\n {\" \"}\n <span\n aria-hidden=\"true\"\n data-testid=\"jkl-tag__content\"\n >\n {option.tagLabel\n ? option.tagLabel\n : option.label}\n </span>\n </TooltipTrigger>\n <TooltipContent>\n {option.label}\n </TooltipContent>\n </Tooltip>\n ) : (\n <span\n aria-hidden=\"true\"\n data-testid=\"jkl-tag__content\"\n >\n {option.tagLabel\n ? option.tagLabel\n : option.label}\n </span>\n )}\n </Tag>\n ))}\n <input\n {...inputProps}\n className=\"jkl-combobox__search-input\"\n onChange={onSearch}\n data-testid=\"jkl-combobox__search-input\"\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleSearchOnKeyDown}\n value={searchValue}\n ref={searchRef}\n aria-controls={listId}\n role=\"combobox\"\n aria-autocomplete=\"list\"\n aria-expanded={showMenu}\n placeholder={\n selectedValue.length > 0 ? \"\" : placeholder\n }\n autoComplete=\"off\"\n />\n </div>\n\n <div\n className=\"jkl-combobox__menu\"\n role=\"listbox\"\n ref={dropdownRef}\n id={listId}\n aria-labelledby={labelId}\n aria-multiselectable=\"true\"\n aria-activedescendant={activeDescendant}\n onFocus={handleFocus}\n onBlur={handleBlur}\n tabIndex={-1}\n >\n {options.map((option, i) => (\n <button\n key={`${listId}-${option.value}`}\n type=\"button\"\n id={`${listId}__${option.value}`}\n aria-selected={isSelected(option)}\n role=\"option\"\n value={option.value}\n onBlur={handleBlur}\n className={`jkl-combobox__option ${\n isSelected(option) &&\n \"jkl-combobox__option--selected\"\n }`}\n data-testid=\"jkl-combobox__option\"\n data-testautoid={`jkl-combobox__option-${i}`}\n onFocus={handleFocus}\n onKeyDown={handleOptionOnKeyDown}\n onClick={(e) => {\n setActiveDescendant(\n `${listId}__${option.value}`,\n ); // https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Roles/listbox_role#required_javascript_features\n e.stopPropagation();\n onItemClick(option.value);\n setSearchValue(\"\");\n }}\n onMouseOver={handleMouseOver}\n >\n {option.description ? (\n <span>\n {option.label}\n <span className=\"jkl-combobox__option-description\">\n {option.description}\n </span>\n </span>\n ) : (\n option.label\n )}\n {isSelected(option) ? (\n <span>\n <CheckIcon />{\" \"}\n </span>\n ) : null}\n </button>\n ))}\n {noResults && (\n <div className=\"jkl-combobox__no-option\">\n {noMatchingOption}\n </div>\n )}\n </div>\n <div className=\"jkl-combobox__actions\">\n <IconButton\n id={buttonId}\n onFocus={handleFocus}\n onBlur={handleBlur}\n className=\"jkl-combobox__button\"\n data-testid=\"jkl-combobox__button\"\n aria-label={`${\n selectedValue.map((value) => value.label) ||\n \"Velg\"\n },${label}`}\n aria-expanded={showMenu}\n aria-controls={listId}\n role=\"button\"\n onClick={() => setShowMenu(true)}\n onMouseDown={(e) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n >\n <ArrowVerticalAnimated\n pointingDown={isPointingDown}\n />\n </IconButton>\n </div>\n </div>\n )}\n />\n );\n};\nCombobox.displayName = \"Combobox\";\n"],"names":["getComboboxValuePair","item","value","label","Combobox","id","placeholder","items","onChange","onFocus","onBlur","noMatchingOption","labelProps","helpLabel","errorLabel","width","density","name","className","invalid","hasTagHover","listId","useId","generateSuffix","labelId","buttonId","inputId","selectedValue","setSelectedValue","useState","isPointingDown","setIsPointingDown","showMenu","setShowMenu","searchValue","setSearchValue","noResults","setNoResults","marked","setMarked","searchRef","useRef","inputRef","focusInsideRef","useEffect","current","focus","prev","isSelected","option","some","removeOption","useCallback","filter","onTagRemove","e","newValue","type","target","selectedOptions","stopPropagation","length","onItemClick","find","i","_a","onSearch","options","useMemo","filteredOptions","toLowerCase","indexOf","activeDescendant","setActiveDescendant","_b","handleEscape","key","window","addEventListener","removeEventListener","handleFocusPlacement","isOpen","handleFocus","dropdownRef","useAnimatedHeight","onFirstVisible","onTransitionEnd","useListNavigation","ref","componentRootElementRef","handleBlur","componentRootElement","contains","relatedTarget","dispatchEvent","Event","bubbles","handleMouseOver","preventScroll","handleSearchOnKeyDown","preventDefault","listElement","querySelector","metaKey","ctrlKey","updatedSelectedValue","map","isMarked","handleOptionOnKeyDown","shiftKey","firstVisible","currentTarget","hasSelection","jsx","InputGroup","clsx","render","inputProps","jsxs","style","tabIndex","children","Tag","dismissAction","onClick","Tooltip","TooltipTrigger","tagLabel","TooltipContent","onKeyDown","role","autoComplete","onMouseOver","description","CheckIcon","IconButton","onMouseDown","ArrowVerticalAnimated","pointingDown","displayName"],"mappings":"slEAiCO,SAASA,EACZC,GAEO,MAAgB,iBAATA,EAAoB,CAAEC,MAAOD,EAAME,MAAOF,GAASA,CACrE,CAsCO,MAAMG,EAA8B,EACvCC,GAAAA,EACAC,YAAAA,EACAC,MAAAA,EACAC,SAAAA,EACAC,QAAAA,EACAC,OAAAA,EACAR,MAAAA,EACAC,MAAAA,EACAQ,iBAAAA,EACAC,WAAAA,EACAC,UAAAA,EACAC,WAAAA,EACAC,MAAAA,EACAC,QAAAA,EACAC,KAAAA,EACAC,UAAAA,EACAC,QAAAA,EACAC,YAAAA,cAEM,MAAAC,EAASC,EAAMjB,GAAM,eAAgB,CAAEkB,gBAAiBlB,IACxDmB,EAAU,GAAGH,UACbI,EAAW,GAAGJ,WACdK,EAAU,GAAGL,kBAEZM,EAAeC,GAAoBC,EAExC3B,GAAS,KACJ4B,EAAgBC,GAAqBF,GAAkB,IACvDG,EAAUC,GAAeJ,GAAkB,IAC3CK,EAAaC,GAAkBN,EAAiB,KAChDO,EAAWC,GAAgBR,GAAS,IACpCS,GAAQC,IAAaV,GAAkB,GAExCW,GAAYC,EAAyB,MACrCC,GAAWD,EAAuB,MAClCE,GAAiBF,GAAO,GAE9BG,GAAU,KACNT,EAAe,IACXH,GAAYQ,GAAUK,SACtBL,GAAUK,QAAQC,UAEvB,CAACd,IAEJY,GAAU,KACWhB,GAACmB,GAAS7C,GAAS6C,GAAI,GACzC,CAAC7C,IAGE,MAAA8C,GAAcC,KACXtB,GAGMA,EAAcuB,MAAMhD,GAAUA,EAAMA,QAAU+C,EAAO/C,QAK9DiD,GAAeC,GAChBH,GACUtB,EAAc0B,QAAQnD,GAAUA,EAAMA,QAAU+C,KAE3D,CAACtB,IAGC2B,GAAcF,GAChB,CACIG,EAGAN,KAEIO,IAAAA,EAAWL,GAAaF,GAC5BrB,EAAiB4B,GACRhD,EAAA,CACLiD,KAAM,SACNC,OAAQ,CAAEzC,KAAAA,EAAMf,MAAO+C,EAAQU,gBAAiBH,KAEpDD,EAAEK,kBAEsB,IAApBJ,EAASK,QACTtB,IAAU,EAAK,GAGvB,CAACY,GAAcvB,EAAkBpB,EAAUS,EAAMsB,KAI/CuB,GAAcV,GACfH,UACOO,IAAAA,EAEJ,GAAI7B,EAAcuB,MAAMhD,GAAUA,EAAMA,QAAU+C,IAC9CO,EAAWL,GAAaF,OACrB,CACH,MAAMhD,EAAOM,EAAMwD,MAAMC,GAAMA,EAAE9D,QAAU+C,IAChCO,EAAA,IAAI7B,EAAe1B,EAClC,CACA,OAAAgE,EAAAzB,GAAUK,UAAVoB,EAAmBnB,QACnBlB,EAAiB4B,GACRhD,EAAA,CACLiD,KAAM,SACNC,OAAQ,CAAEzC,KAAAA,EAAMf,MAAO+C,EAAQU,gBAAiBH,IACnD,GAEL,CAAC7B,EAAeC,EAAkBpB,EAAUS,EAAMkC,GAAc5C,IAI9D2D,GAAYX,UAGd,OAAAU,EAAAzB,GAAUK,UAAVoB,EAAmBnB,QACnBb,GAAY,GACGE,EAAAoB,EAAEG,OAAOxD,MAAK,EAG3BiE,GAAUC,GAAQ,KACpB,IAAKlC,EACM3B,OAAAA,EAGX,MAAM8D,EAAkB9D,EAAM8C,QACzBJ,GACGA,EAAO9C,MAAMmE,cAAcC,QAAQrC,EAAYoC,gBAC/C,IAGK,OAAAjC,EAA2B,IAA3BgC,EAAgBR,QAEtBQ,CAAAA,GACR,CAACnC,EAAa3B,KAGViE,GAAkBC,IAAuB5C,EAE9C,OAAAoC,EAAAE,GAAQ,KAARF,EAAY/D,MAAQ,GAAGmB,KAAU,OAAAqD,EAAAP,GAAQ,SAAR,EAAAO,EAAYxE,aAAU,GAGzD0C,GAAU,KAEFb,GADAC,EACuB,GAI5B,CAACA,IAGJY,GAAU,KACA+B,MAAAA,EAAgBpB,IACJ,WAAVA,EAAEqB,KAAoB5C,GACtBC,GAAY,EAAK,EAGrB,cAAO4C,OAAW,KACXA,OAAAC,iBAAiB,UAAWH,GAEhC,YACQE,OAAW,KAAe7C,GAC1B6C,OAAAE,oBAAoB,UAAWJ,EAAY,CACtD,GAEL,CAAC1C,EAAaD,IAGXgD,MAAAA,GAAuB5B,GAAa6B,IAClCA,EACIzC,GAAUK,SACVL,GAAUK,QAAQC,QAGlBH,GAAeE,SAAWH,GAASG,SACnCH,GAASG,QAAQC,UAG1B,IAEGoC,GAAc9B,GAAY,KACvBT,GAAeE,UACZpC,GACQA,EAAA,CACJgD,KAAM,SACNC,OAAQ,CACJzC,KAAAA,EACAf,OAAO,MAAAyB,OAAAA,EAAAA,EAAgB,GAAGzB,QAAS,GACnCyD,gBAAiBhC,KAI7BgB,GAAeE,SAAU,EACzBZ,GAAY,GAAI,GAErB,CAACxB,EAASkB,EAAeV,KAErBkE,IAAeC,EAAkCpD,EAAU,CAC9DqD,eAAgBL,GAChBM,gBAAiBN,KAGHO,EAAA,CAAEC,IAAKL,KAEnB,MAAAM,GAA0BhD,EAAuB,MAEjDiD,GAAatC,GAEXG,YAIA,MAAMoC,EAAuBF,GAAwB5C,QAEjD8C,GACAA,EAAqBC,SAASrC,EAAEsC,iBAEhC1D,EAAe,IAEXzB,IACOA,EAAA,CACH+C,KAAM,OACNC,OAAQ,CACJzC,KAAAA,EACAf,OAAO,OAAA+D,EAAA,MAAAtC,OAAA,EAAAA,EAAgB,SAAhB,EAAAsC,EAAoB/D,QAAS,GACpCyD,gBAAiBhC,KAGzB,OAAA+C,EAAAhC,GAASG,UAAT6B,EAAkBoB,cACd,IAAIC,MAAM,WAAY,CAAEC,SAAS,MAGzCrD,GAAeE,SAAU,EACzBZ,GAAY,GAAK,GAGzB,CAACvB,EAAQO,EAAMU,IAGbsE,GAAkB7C,GAAaG,IAGhCA,EAAEG,OAA6BZ,MAAM,CAAEoD,eAAe,GAAM,GAC9D,IAGGC,GAAwB/C,GACzBG,UACOA,GAAU,cAAVA,EAAEqB,IAAqB,CACvBrB,EAAE6C,iBACF7C,EAAEK,kBACF,MAAMyC,EAAclB,GAAYtC,QAC5BwD,IAEK,OAAApC,EAAAoC,EAAAC,cAAiC,qBAAjCrC,EACCnB,QACV,KACiB,WAAVS,EAAEqB,MACTrB,EAAE6C,iBACF7C,EAAEK,kBACF3B,GAAY,IAGXsB,GAAAA,EAAEgD,SAAqB,MAAVhD,EAAEqB,KAAiBrB,EAAEiD,SAAqB,MAAVjD,EAAEqB,IAAc,CAC9DrB,EAAE6C,iBACF7C,EAAEK,kBACF,MAAM6C,EAAuB9E,EAAc+E,KAAKzG,IAAU,IACnDA,EACH0G,UAAU,MAEdpE,IAAU,GACVX,EAAiB6E,EAAoB,MAAA,GACpB,cAAVlD,EAAEqB,IAST,GARArB,EAAEK,kBACFrB,IAAU,GAGoBZ,EAAcuB,MACvCjD,GAASA,EAAK0G,WAGQ,CACvB,MAAMF,EAAuB9E,EAAc0B,QACtCpD,IAAUA,EAAK0G,WAEpB/E,EAAiB6E,GACjBtE,EAAe,GACR,MAAAR,EAAckC,OAAS,GAAqB,KAAhB3B,GAEnCoB,GACIC,EACA5B,EAAcA,EAAckC,OAAS,GAAG3D,MAAA,GAKxD,CAACyB,EAAeO,EAAaiD,GAAa7B,KAGxCsD,GAAwBxD,GACzBG,IACO,GAAU,QAAVA,EAAEqB,IACEpC,GAAUK,UACVU,EAAE6C,iBACF7C,EAAEK,kBAEEL,EAAEsD,UAGF5E,GAAY,GACZO,GAAUK,QAAQC,iBAGT,YAAVS,EAAEqB,KACLO,GAAYtC,SAAWL,GAAUK,QAAS,CAEpCiE,MAAAA,EAAe3B,GAAYtC,QAAQyD,cACrC,iCAGA/C,EAAEwD,cAAc1G,MAAO,MAAAyG,OAAA,EAAAA,EAAczG,KACrCmC,GAAUK,SAEVL,GAAUK,QAAQC,OAE1B,IAGR,CAACb,EAAakD,KAGZ6B,GAAerF,EAAckC,QAAU,EAGzC,OAAAoD,EAACC,EAAA,CACG/G,MAAAA,EACAE,GAAIqB,EACJ8D,IAAKC,GACL,cAAY,eACZvE,UAAWiG,EAAK,eAAgBjG,EAAW,CACvC,0BAA2BJ,GAAcK,EACzC,0BAA2Ba,EAC3B,6BAA8BA,GAAYgF,KAE9CpG,WAAY,CACRP,GAAImB,KACDZ,GAEPC,UAAAA,EACAC,WAAAA,EACAE,QAAAA,EACAoG,OAASC,GACLC,EAAC,MAAA,CACGpG,UAAWiG,EAAK,wBAAyB,CACrC,sCAAuCH,KAE3CO,MAAO,CAAExG,MAAAA,GACTyG,UAAU,EACV/G,QAASyE,GACTxE,OAAQgF,GAER+B,SAAA,CAAAH,EAAC,MAAA,CACGpG,UAAU,qBACV,cAAY,qBAEXuG,SAAA,CAAA9F,EACI+E,IAAI1G,GACJ0G,KAAKzD,GACFgE,EAACS,EAAA,CAEGxG,UAAW,WACPoB,IAAU,oBAEd,cAAY,UACZqF,cAAe,CACXC,QAAUrE,IACFf,GAAUK,SACVL,GAAUK,QAAQC,QAEVQ,GAAAC,EAAGN,EAAO/C,MAAK,EAE/BQ,OAAQgF,GACRvF,MAAO,SAAS8C,EAAO/C,SAG1BuH,SAAArG,IACIyG,EACG,CAAAJ,SAAA,CAAAH,EAACQ,EACI,CAAAL,SAAA,CAAA,IACDR,EAAC,OAAA,CACG,cAAY,OACZ,cAAY,mBAEXQ,SAAOxE,EAAA8E,SACF9E,EAAO8E,SACP9E,EAAO9C,WAGrB8G,EAACe,EACI,CAAAP,SAAAxE,EAAO9C,UAbF8C,EAAO/C,OAiBrB+G,EAAC,OAAA,CACG,cAAY,OACZ,cAAY,mBAEXQ,SAAOxE,EAAA8E,SACF9E,EAAO8E,SACP9E,EAAO9C,SAxChB8C,EAAO/C,SA6CxB+G,EAAC,QAAA,IACOI,EACJnG,UAAU,6BACVV,SAAU0D,GACV,cAAY,6BACZzD,QAASyE,GACTxE,OAAQgF,GACRuC,UAAW9B,GACXjG,MAAOgC,EACPsD,IAAKhD,GACL,gBAAenB,EACf6G,KAAK,WACL,oBAAkB,OAClB,gBAAelG,EACf1B,YACIqB,EAAckC,OAAS,EAAI,GAAKvD,EAEpC6H,aAAa,WAIrBb,EAAC,MAAA,CACGpG,UAAU,qBACVgH,KAAK,UACL1C,IAAKL,GACL9E,GAAIgB,EACJ,kBAAiBG,EACjB,uBAAqB,OACrB,wBAAuBgD,GACvB/D,QAASyE,GACTxE,OAAQgF,GACR8B,UAAU,EAETC,SAAA,CAAQtD,GAAAuC,KAAI,CAACzD,EAAQe,IAClBsD,EAAC,SAAA,CAEG7D,KAAK,SACLpD,GAAI,GAAGgB,MAAW4B,EAAO/C,QACzB,gBAAe8C,GAAWC,GAC1BiF,KAAK,SACLhI,MAAO+C,EAAO/C,MACdQ,OAAQgF,GACRxE,UAAW,wBACP8B,GAAWC,IACX,mCAEJ,cAAY,uBACZ,kBAAiB,wBAAwBe,IACzCvD,QAASyE,GACT+C,UAAWrB,GACXgB,QAAUrE,IACNkB,GACI,GAAGpD,MAAW4B,EAAO/C,SAEzBqD,EAAEK,kBACFE,GAAYb,EAAO/C,OACnBiC,EAAe,GAAE,EAErBiG,YAAanC,GAEZwB,SAAA,CAAOxE,EAAAoF,cACH,OACI,CAAAZ,SAAA,CAAOxE,EAAA9C,MACP8G,EAAA,OAAA,CAAK/F,UAAU,mCACXuG,WAAOY,iBAIhBpF,EAAO9C,MAEV6C,GAAWC,GACRqE,EAAC,OACG,CAAAG,SAAA,CAAAR,EAACqB,EAAU,IAAG,OAElB,OAvCC,GAAGjH,KAAU4B,EAAO/C,WA0ChCkC,GACG6E,EAAC,MAAI,CAAA/F,UAAU,0BACVuG,SACL9G,OAGRsG,EAAC,MAAI,CAAA/F,UAAU,wBACXuG,SAAAR,EAACsB,EAAA,CACGlI,GAAIoB,EACJhB,QAASyE,GACTxE,OAAQgF,GACRxE,UAAU,uBACV,cAAY,uBACZ,aAAY,GACRS,EAAc+E,KAAKxG,GAAUA,EAAMC,SACnC,UACAA,IACJ,gBAAe6B,EACf,gBAAeX,EACf6G,KAAK,SACLN,QAAS,IAAM3F,GAAY,GAC3BuG,YAAcjF,UACVA,EAAE6C,iBACF,OAAAnC,EAAAvB,GAASG,UAAToB,EAAkBnB,OAAA,EAGtB2E,SAAAR,EAACwB,EAAA,CACGC,aAAc5G,YAI9B,EAKhB1B,EAASuI,YAAc"}
@@ -1 +1 @@
1
- export { Combobox, getComboboxValuePair, type ComboboxValuePair } from './Combobox.js';
1
+ export { Combobox, getComboboxValuePair, type ComboboxValuePair, } from './Combobox.js';