@helsenorge/designsystem-react 15.0.0-beta.1 → 15.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (712) hide show
  1. package/lib/AnchorLink.js.map +1 -1
  2. package/lib/AsChildSlot.js.map +1 -1
  3. package/lib/Avatar.js.map +1 -1
  4. package/lib/Badge.js.map +1 -1
  5. package/lib/Button.js.map +1 -1
  6. package/lib/CHANGELOG.md +33 -0
  7. package/lib/Checkbox.js +25 -48
  8. package/lib/Checkbox.js.map +1 -1
  9. package/lib/Checkbox2.js +69 -0
  10. package/lib/Checkbox2.js.map +1 -0
  11. package/lib/CheckboxMarker.js +64 -0
  12. package/lib/CheckboxMarker.js.map +1 -0
  13. package/lib/Chip.js.map +1 -1
  14. package/lib/Close.js.map +1 -1
  15. package/lib/DictionaryTrigger.js.map +1 -1
  16. package/lib/Drawer.js.map +1 -1
  17. package/lib/DrawerNavigation.js.map +1 -1
  18. package/lib/Duolist.js.map +1 -1
  19. package/lib/ElementHeader.js.map +1 -1
  20. package/lib/ElementHeaderText.js.map +1 -1
  21. package/lib/ErrorBoundary.js.map +1 -1
  22. package/lib/ErrorWrapper.js.map +1 -1
  23. package/lib/Expander.js.map +1 -1
  24. package/lib/FilterButton.js.map +1 -1
  25. package/lib/FilterButtonAndChipsWrapper.js.map +1 -1
  26. package/lib/FilterDrawer.js +20 -10
  27. package/lib/FilterDrawer.js.map +1 -1
  28. package/lib/FilterLinkList.js.map +1 -1
  29. package/lib/FilterOverviewLinkList.js.map +1 -1
  30. package/lib/FilterOverviewSearch.js.map +1 -1
  31. package/lib/FilterResultCountAndSortWrapper.js.map +1 -1
  32. package/lib/FilterSearch.js.map +1 -1
  33. package/lib/FilterSort.js.map +1 -1
  34. package/lib/FilterStateWrapper.js.map +1 -1
  35. package/lib/FormFieldTag.js.map +1 -1
  36. package/lib/FormGroup.js +5 -5
  37. package/lib/FormGroup.js.map +1 -1
  38. package/lib/FormLayout.js.map +1 -1
  39. package/lib/HelpDetails.js.map +1 -1
  40. package/lib/HelpTriggerIcon.js.map +1 -1
  41. package/lib/HelpTriggerStandalone.js.map +1 -1
  42. package/lib/HighlightPanel.js.map +1 -1
  43. package/lib/Highlighter.js.map +1 -1
  44. package/lib/HorizontalScroll.js.map +1 -1
  45. package/lib/Icon.js.map +1 -1
  46. package/lib/Illustration.js +1 -1
  47. package/lib/Illustration.js.map +1 -1
  48. package/lib/InfoTeaser.js.map +1 -1
  49. package/lib/Input.js.map +1 -1
  50. package/lib/LazyIcon.js +1 -1
  51. package/lib/LazyIcon.js.map +1 -1
  52. package/lib/LazyIllustration.js +6 -2
  53. package/lib/LazyIllustration.js.map +1 -1
  54. package/lib/LinkList.js.map +1 -1
  55. package/lib/List.js.map +1 -1
  56. package/lib/ListEditMode.js.map +1 -1
  57. package/lib/LoaderSpinner.js +61 -0
  58. package/lib/LoaderSpinner.js.map +1 -0
  59. package/lib/MaxCharacters.js.map +1 -1
  60. package/lib/NotificationBadge.js.map +1 -1
  61. package/lib/PanelTitle.js.map +1 -1
  62. package/lib/PopOver.js.map +1 -1
  63. package/lib/Radio.js +74 -0
  64. package/lib/Radio.js.map +1 -0
  65. package/lib/RadioButton.js +84 -0
  66. package/lib/RadioButton.js.map +1 -0
  67. package/lib/RadioMarker.js +35 -0
  68. package/lib/RadioMarker.js.map +1 -0
  69. package/lib/Select.js.map +1 -1
  70. package/lib/SingleSelectItem.js.map +1 -1
  71. package/lib/Slider.js.map +1 -1
  72. package/lib/Spacer.js.map +1 -1
  73. package/lib/StatusDot.js.map +1 -1
  74. package/lib/StatusDotList.js.map +1 -1
  75. package/lib/StepButtons.js.map +1 -1
  76. package/lib/TabList.js.map +1 -1
  77. package/lib/TabPanel.js.map +1 -1
  78. package/lib/TableBody.js +3 -3
  79. package/lib/TableBody.js.map +1 -1
  80. package/lib/TableCell.js +2 -2
  81. package/lib/TableCell.js.map +1 -1
  82. package/lib/TableExpandedRow.js +4 -4
  83. package/lib/TableExpandedRow.js.map +1 -1
  84. package/lib/TableExpanderCell.js +2 -2
  85. package/lib/TableExpanderCell.js.map +1 -1
  86. package/lib/TableHead.js +7 -7
  87. package/lib/TableHead.js.map +1 -1
  88. package/lib/TableHeadCell.js +5 -5
  89. package/lib/TableHeadCell.js.map +1 -1
  90. package/lib/TableRow.js +6 -6
  91. package/lib/TableRow.js.map +1 -1
  92. package/lib/Textarea.js.map +1 -1
  93. package/lib/Title.js.map +1 -1
  94. package/lib/Toast.js.map +1 -1
  95. package/lib/VisualCheckbox.js +79 -0
  96. package/lib/VisualCheckbox.js.map +1 -0
  97. package/lib/VisualRadio.js +64 -0
  98. package/lib/VisualRadio.js.map +1 -0
  99. package/lib/__mocks__/IntersectionObserver.js.map +1 -1
  100. package/lib/__mocks__/MutationObserver.js.map +1 -1
  101. package/lib/__mocks__/ResizeObserver.js.map +1 -1
  102. package/lib/__mocks__/matchMedia.js +3 -2
  103. package/lib/__mocks__/matchMedia.js.map +1 -1
  104. package/lib/__mocks__/useLayoutEvent.js.map +1 -1
  105. package/lib/__mocks__/useOutsideEvent.js.map +1 -1
  106. package/lib/__mocks__/usePseudoClasses.js.map +1 -1
  107. package/lib/__mocks__/useSize.js.map +1 -1
  108. package/lib/__mocks__/uuid.js.map +1 -1
  109. package/lib/components/ArticleTeaser/index.js.map +1 -1
  110. package/lib/components/Checkbox/CheckboxMarker/CheckboxMarker.d.ts +20 -0
  111. package/lib/components/Checkbox/CheckboxMarker/styles.module.scss +309 -0
  112. package/lib/components/Checkbox/CheckboxMarker/styles.module.scss.d.ts +25 -0
  113. package/lib/components/Checkbox/styles.module.scss +9 -269
  114. package/lib/components/Checkbox/styles.module.scss.d.ts +1 -17
  115. package/lib/components/Dropdown/index.js.map +1 -1
  116. package/lib/components/DropdownOld/index.js.map +1 -1
  117. package/lib/components/EmptyState/index.js.map +1 -1
  118. package/lib/components/ExpanderHierarchy/index.js.map +1 -1
  119. package/lib/components/ExpanderList/index.js.map +1 -1
  120. package/lib/components/EyebrowHeader/index.js.map +1 -1
  121. package/lib/components/FavoriteButton/index.js.map +1 -1
  122. package/lib/components/Filter/FilterDrawer/FilterDrawer.d.ts +4 -2
  123. package/lib/components/Filter/FilterDrawer/styles.module.scss +7 -0
  124. package/lib/components/Filter/FilterDrawer/styles.module.scss.d.ts +1 -0
  125. package/lib/components/Filter/LoaderSpinner/LoaderSpinner.d.ts +9 -0
  126. package/lib/components/Filter/LoaderSpinner/index.d.ts +3 -0
  127. package/lib/components/Filter/LoaderSpinner/index.js +7 -0
  128. package/lib/components/Filter/LoaderSpinner/index.js.map +1 -0
  129. package/lib/components/Filter/LoaderSpinner/styles.module.scss +27 -0
  130. package/lib/components/Filter/LoaderSpinner/styles.module.scss.d.ts +11 -0
  131. package/lib/components/Filter/index.d.ts +2 -0
  132. package/lib/components/Filter/index.js +2 -1
  133. package/lib/components/Filter/index.js.map +1 -1
  134. package/lib/components/HelpBubble/index.js.map +1 -1
  135. package/lib/components/HelpDrawer/index.js.map +1 -1
  136. package/lib/components/HelpExpanderInline/index.js.map +1 -1
  137. package/lib/components/HelpExpanderStandalone/index.js.map +1 -1
  138. package/lib/components/HelpPanel/index.js.map +1 -1
  139. package/lib/components/HelpTeaser/index.js.map +1 -1
  140. package/lib/components/HelpTooltip/index.js.map +1 -1
  141. package/lib/components/HelpTriggerInline/index.js.map +1 -1
  142. package/lib/components/Icons/ActiveMonitoring.js.map +1 -1
  143. package/lib/components/Icons/AcupunctureBack.js.map +1 -1
  144. package/lib/components/Icons/AdditionalIconInformation.js.map +1 -1
  145. package/lib/components/Icons/AlarmClock.js.map +1 -1
  146. package/lib/components/Icons/AlertSignFill.js.map +1 -1
  147. package/lib/components/Icons/AlertSignStroke.js.map +1 -1
  148. package/lib/components/Icons/Amputation.js.map +1 -1
  149. package/lib/components/Icons/Anxiety.js.map +1 -1
  150. package/lib/components/Icons/Apple.js.map +1 -1
  151. package/lib/components/Icons/Archive.js.map +1 -1
  152. package/lib/components/Icons/ArmFlexing.js.map +1 -1
  153. package/lib/components/Icons/ArrowDown.js.map +1 -1
  154. package/lib/components/Icons/ArrowLeft.js.map +1 -1
  155. package/lib/components/Icons/ArrowRight.js.map +1 -1
  156. package/lib/components/Icons/ArrowUp.js.map +1 -1
  157. package/lib/components/Icons/ArrowUpRight.js.map +1 -1
  158. package/lib/components/Icons/Attachment.js.map +1 -1
  159. package/lib/components/Icons/Atv.js.map +1 -1
  160. package/lib/components/Icons/Avatar.js.map +1 -1
  161. package/lib/components/Icons/AwakePersonOnPillow.js.map +1 -1
  162. package/lib/components/Icons/Baby.js.map +1 -1
  163. package/lib/components/Icons/BandAid.js.map +1 -1
  164. package/lib/components/Icons/BeerAndPills.js.map +1 -1
  165. package/lib/components/Icons/Bell.js.map +1 -1
  166. package/lib/components/Icons/Bike.js.map +1 -1
  167. package/lib/components/Icons/BirthControl.js.map +1 -1
  168. package/lib/components/Icons/BirthdayCake.js.map +1 -1
  169. package/lib/components/Icons/Boat.js.map +1 -1
  170. package/lib/components/Icons/Body.js.map +1 -1
  171. package/lib/components/Icons/Braille.js.map +1 -1
  172. package/lib/components/Icons/Brain.js.map +1 -1
  173. package/lib/components/Icons/BreastReconstruction.js.map +1 -1
  174. package/lib/components/Icons/BreastRemoval.js.map +1 -1
  175. package/lib/components/Icons/Breasts.js.map +1 -1
  176. package/lib/components/Icons/BrokenHeart.js.map +1 -1
  177. package/lib/components/Icons/BrokenPuzzle.js.map +1 -1
  178. package/lib/components/Icons/Bus.js.map +1 -1
  179. package/lib/components/Icons/Calendar.js.map +1 -1
  180. package/lib/components/Icons/CalendarChange.js.map +1 -1
  181. package/lib/components/Icons/CalendarCheck.js.map +1 -1
  182. package/lib/components/Icons/CalendarEvent.js.map +1 -1
  183. package/lib/components/Icons/CalendarSave.js.map +1 -1
  184. package/lib/components/Icons/Cancer.js.map +1 -1
  185. package/lib/components/Icons/Candle.js.map +1 -1
  186. package/lib/components/Icons/Car.js.map +1 -1
  187. package/lib/components/Icons/Carton.js.map +1 -1
  188. package/lib/components/Icons/Change.js.map +1 -1
  189. package/lib/components/Icons/Check.js.map +1 -1
  190. package/lib/components/Icons/CheckFill.js.map +1 -1
  191. package/lib/components/Icons/CheckOutline.js.map +1 -1
  192. package/lib/components/Icons/Chest.js.map +1 -1
  193. package/lib/components/Icons/ChevronDown.js.map +1 -1
  194. package/lib/components/Icons/ChevronLeft.js.map +1 -1
  195. package/lib/components/Icons/ChevronRight.js.map +1 -1
  196. package/lib/components/Icons/ChevronUp.js.map +1 -1
  197. package/lib/components/Icons/ChevronsDown.js.map +1 -1
  198. package/lib/components/Icons/ChevronsUp.js.map +1 -1
  199. package/lib/components/Icons/ChildPlaying.js.map +1 -1
  200. package/lib/components/Icons/Cigarette.js.map +1 -1
  201. package/lib/components/Icons/Coins.js.map +1 -1
  202. package/lib/components/Icons/Contacts.js.map +1 -1
  203. package/lib/components/Icons/Copy.js.map +1 -1
  204. package/lib/components/Icons/CoronaCertificate.js.map +1 -1
  205. package/lib/components/Icons/Coronavirus.js.map +1 -1
  206. package/lib/components/Icons/Cough.js.map +1 -1
  207. package/lib/components/Icons/CreditCard.js.map +1 -1
  208. package/lib/components/Icons/CriticalHealthInfo.js.map +1 -1
  209. package/lib/components/Icons/Cross.js.map +1 -1
  210. package/lib/components/Icons/DataExchange.js.map +1 -1
  211. package/lib/components/Icons/DataReceived.js.map +1 -1
  212. package/lib/components/Icons/DataSent.js.map +1 -1
  213. package/lib/components/Icons/Depression.js.map +1 -1
  214. package/lib/components/Icons/DigestiveSystem.js.map +1 -1
  215. package/lib/components/Icons/Dizzy.js.map +1 -1
  216. package/lib/components/Icons/Documents.js.map +1 -1
  217. package/lib/components/Icons/Dog.js.map +1 -1
  218. package/lib/components/Icons/DonorCard.js.map +1 -1
  219. package/lib/components/Icons/DotAttachment.js.map +1 -1
  220. package/lib/components/Icons/DotCheckmark.js.map +1 -1
  221. package/lib/components/Icons/DotCircleArrows.js.map +1 -1
  222. package/lib/components/Icons/DotDot.js.map +1 -1
  223. package/lib/components/Icons/DotExclamationMark.js.map +1 -1
  224. package/lib/components/Icons/DotFill.js.map +1 -1
  225. package/lib/components/Icons/DotGroup.js.map +1 -1
  226. package/lib/components/Icons/DotHalfDisc.js.map +1 -1
  227. package/lib/components/Icons/DotInfo.js.map +1 -1
  228. package/lib/components/Icons/DotLogin.js.map +1 -1
  229. package/lib/components/Icons/DotLookingGlass.js.map +1 -1
  230. package/lib/components/Icons/DotNoAccess.js.map +1 -1
  231. package/lib/components/Icons/DotNoEye.js.map +1 -1
  232. package/lib/components/Icons/DotOutline.js.map +1 -1
  233. package/lib/components/Icons/DotPencil.js.map +1 -1
  234. package/lib/components/Icons/DotQuestionMark.js.map +1 -1
  235. package/lib/components/Icons/DotTriangle.js.map +1 -1
  236. package/lib/components/Icons/DotX.js.map +1 -1
  237. package/lib/components/Icons/Download.js.map +1 -1
  238. package/lib/components/Icons/Draft.js.map +1 -1
  239. package/lib/components/Icons/Drag.js.map +1 -1
  240. package/lib/components/Icons/EChat.js.map +1 -1
  241. package/lib/components/Icons/Ear.js.map +1 -1
  242. package/lib/components/Icons/EarDeaf.js.map +1 -1
  243. package/lib/components/Icons/EarHearingAid.js.map +1 -1
  244. package/lib/components/Icons/EarNoseThroat.js.map +1 -1
  245. package/lib/components/Icons/EarVolume.js.map +1 -1
  246. package/lib/components/Icons/Edit.js.map +1 -1
  247. package/lib/components/Icons/ElderlyPerson.js.map +1 -1
  248. package/lib/components/Icons/Embolization.js.map +1 -1
  249. package/lib/components/Icons/EmergencyCall.js.map +1 -1
  250. package/lib/components/Icons/EmoticonAnnoyed.js.map +1 -1
  251. package/lib/components/Icons/EmoticonDelighted.js.map +1 -1
  252. package/lib/components/Icons/EmoticonDisappointed.js.map +1 -1
  253. package/lib/components/Icons/EmoticonHappy.js.map +1 -1
  254. package/lib/components/Icons/EmoticonMeh.js.map +1 -1
  255. package/lib/components/Icons/EmptyBox.js.map +1 -1
  256. package/lib/components/Icons/EnterFullScreen.js.map +1 -1
  257. package/lib/components/Icons/Envelope.js.map +1 -1
  258. package/lib/components/Icons/Epilepsy.js.map +1 -1
  259. package/lib/components/Icons/Eraser.js.map +1 -1
  260. package/lib/components/Icons/ErrorSignFill.js.map +1 -1
  261. package/lib/components/Icons/ErrorSignStroke.js.map +1 -1
  262. package/lib/components/Icons/EuropeanHealthCard.js.map +1 -1
  263. package/lib/components/Icons/ExitFullScreen.js.map +1 -1
  264. package/lib/components/Icons/Eye.js.map +1 -1
  265. package/lib/components/Icons/Facebook.js.map +1 -1
  266. package/lib/components/Icons/FallingLeaf.js.map +1 -1
  267. package/lib/components/Icons/Feedback.js.map +1 -1
  268. package/lib/components/Icons/Female.js.map +1 -1
  269. package/lib/components/Icons/FemaleDoctor.js.map +1 -1
  270. package/lib/components/Icons/Ferry.js.map +1 -1
  271. package/lib/components/Icons/File.js.map +1 -1
  272. package/lib/components/Icons/Filter.js +12 -12
  273. package/lib/components/Icons/Filter.js.map +1 -1
  274. package/lib/components/Icons/FingerBleed.js.map +1 -1
  275. package/lib/components/Icons/FirstAidKit.js.map +1 -1
  276. package/lib/components/Icons/Fish.js.map +1 -1
  277. package/lib/components/Icons/FloppyDisk.js.map +1 -1
  278. package/lib/components/Icons/Football.js.map +1 -1
  279. package/lib/components/Icons/Form.js.map +1 -1
  280. package/lib/components/Icons/Forward.js.map +1 -1
  281. package/lib/components/Icons/Gallery.js.map +1 -1
  282. package/lib/components/Icons/Garden.js.map +1 -1
  283. package/lib/components/Icons/GasCan.js.map +1 -1
  284. package/lib/components/Icons/GenderIdentity.js.map +1 -1
  285. package/lib/components/Icons/GlassWater.js.map +1 -1
  286. package/lib/components/Icons/Glasses.js.map +1 -1
  287. package/lib/components/Icons/Globe.js.map +1 -1
  288. package/lib/components/Icons/Grain.js.map +1 -1
  289. package/lib/components/Icons/Graph.js.map +1 -1
  290. package/lib/components/Icons/Group.js.map +1 -1
  291. package/lib/components/Icons/GroupTwins.js.map +1 -1
  292. package/lib/components/Icons/HTMLFile.js.map +1 -1
  293. package/lib/components/Icons/HandWaving.js.map +1 -1
  294. package/lib/components/Icons/HandWithDisease.js.map +1 -1
  295. package/lib/components/Icons/HandsAndHeart.js.map +1 -1
  296. package/lib/components/Icons/HealthClinic.js.map +1 -1
  297. package/lib/components/Icons/HealthMeasurements.js.map +1 -1
  298. package/lib/components/Icons/HealthWarning.js.map +1 -1
  299. package/lib/components/Icons/HealthcarePerson.js.map +1 -1
  300. package/lib/components/Icons/HealthcarePersonell.js.map +1 -1
  301. package/lib/components/Icons/HearingProtection.js.map +1 -1
  302. package/lib/components/Icons/Heart.js.map +1 -1
  303. package/lib/components/Icons/HeartHands.js.map +1 -1
  304. package/lib/components/Icons/HelpSign.js.map +1 -1
  305. package/lib/components/Icons/HelpingHand.js.map +1 -1
  306. package/lib/components/Icons/Hemodialysis.js.map +1 -1
  307. package/lib/components/Icons/Hiker.js.map +1 -1
  308. package/lib/components/Icons/Hipprosthesis.js.map +1 -1
  309. package/lib/components/Icons/History.js.map +1 -1
  310. package/lib/components/Icons/HivAndAids.js.map +1 -1
  311. package/lib/components/Icons/Home.js.map +1 -1
  312. package/lib/components/Icons/HomeFill.js.map +1 -1
  313. package/lib/components/Icons/Hormone.js.map +1 -1
  314. package/lib/components/Icons/Hospital.js.map +1 -1
  315. package/lib/components/Icons/Hourglass.js.map +1 -1
  316. package/lib/components/Icons/IconNames.js.map +1 -1
  317. package/lib/components/Icons/ImgFile.js.map +1 -1
  318. package/lib/components/Icons/Inbox.js.map +1 -1
  319. package/lib/components/Icons/InfoSignFill.js.map +1 -1
  320. package/lib/components/Icons/InfoSignStroke.js.map +1 -1
  321. package/lib/components/Icons/Instagram.js.map +1 -1
  322. package/lib/components/Icons/Intravenous.js.map +1 -1
  323. package/lib/components/Icons/JointPain.js.map +1 -1
  324. package/lib/components/Icons/Journal.js.map +1 -1
  325. package/lib/components/Icons/JpgFile.js.map +1 -1
  326. package/lib/components/Icons/Kidney.js.map +1 -1
  327. package/lib/components/Icons/KitchenScale.js.map +1 -1
  328. package/lib/components/Icons/Kjernejournal.js.map +1 -1
  329. package/lib/components/Icons/Laboratory.js.map +1 -1
  330. package/lib/components/Icons/LaptopBlog.js.map +1 -1
  331. package/lib/components/Icons/LawBook.js.map +1 -1
  332. package/lib/components/Icons/LegalDocument.js.map +1 -1
  333. package/lib/components/Icons/LightBulb.js.map +1 -1
  334. package/lib/components/Icons/List.js.map +1 -1
  335. package/lib/components/Icons/Location.js.map +1 -1
  336. package/lib/components/Icons/LocationFill.js.map +1 -1
  337. package/lib/components/Icons/Lock.js.map +1 -1
  338. package/lib/components/Icons/Login.js.map +1 -1
  339. package/lib/components/Icons/Logout.js.map +1 -1
  340. package/lib/components/Icons/Lungs.js.map +1 -1
  341. package/lib/components/Icons/Makeup.js.map +1 -1
  342. package/lib/components/Icons/MaleDoctor.js.map +1 -1
  343. package/lib/components/Icons/MaleDoctorAndPerson.js.map +1 -1
  344. package/lib/components/Icons/MaleDoctorCompact.js.map +1 -1
  345. package/lib/components/Icons/MaleDoctorCompactFill.js.map +1 -1
  346. package/lib/components/Icons/MaleGenitalia.js.map +1 -1
  347. package/lib/components/Icons/MeasuringTape.js.map +1 -1
  348. package/lib/components/Icons/Medicine.js.map +1 -1
  349. package/lib/components/Icons/MedicineWarning.js.map +1 -1
  350. package/lib/components/Icons/MentalHealthAdult.js.map +1 -1
  351. package/lib/components/Icons/MentalHealthChild.js.map +1 -1
  352. package/lib/components/Icons/Menu.js.map +1 -1
  353. package/lib/components/Icons/Microscope.js.map +1 -1
  354. package/lib/components/Icons/Minus.js.map +1 -1
  355. package/lib/components/Icons/Mirror.js.map +1 -1
  356. package/lib/components/Icons/MobilePhone.js.map +1 -1
  357. package/lib/components/Icons/MotherHoldingBaby.js.map +1 -1
  358. package/lib/components/Icons/MuscleBack.js.map +1 -1
  359. package/lib/components/Icons/MuscleLeg.js.map +1 -1
  360. package/lib/components/Icons/Mushroom.js.map +1 -1
  361. package/lib/components/Icons/Music.js.map +1 -1
  362. package/lib/components/Icons/MusselsAndSalt.js.map +1 -1
  363. package/lib/components/Icons/NoAccess.js.map +1 -1
  364. package/lib/components/Icons/NoEye.js.map +1 -1
  365. package/lib/components/Icons/NoFilter.js.map +1 -1
  366. package/lib/components/Icons/Notepad.js.map +1 -1
  367. package/lib/components/Icons/Osteotomy.js.map +1 -1
  368. package/lib/components/Icons/PaintRoller.js.map +1 -1
  369. package/lib/components/Icons/PaperPlane.js.map +1 -1
  370. package/lib/components/Icons/PatientAndPerson.js.map +1 -1
  371. package/lib/components/Icons/Pause.js.map +1 -1
  372. package/lib/components/Icons/PdfFile.js.map +1 -1
  373. package/lib/components/Icons/Pencil.js.map +1 -1
  374. package/lib/components/Icons/PeopleTalking.js.map +1 -1
  375. package/lib/components/Icons/Peritonealdialysis.js.map +1 -1
  376. package/lib/components/Icons/Person.js.map +1 -1
  377. package/lib/components/Icons/PersonAndPatient.js.map +1 -1
  378. package/lib/components/Icons/PersonCancel.js.map +1 -1
  379. package/lib/components/Icons/PersonInXRayMachine.js.map +1 -1
  380. package/lib/components/Icons/PersonOverweight.js.map +1 -1
  381. package/lib/components/Icons/PersonRelaxing.js.map +1 -1
  382. package/lib/components/Icons/PersonWithBrain.js.map +1 -1
  383. package/lib/components/Icons/PersonWithBrokenArm.js.map +1 -1
  384. package/lib/components/Icons/PersonWithCrutches.js.map +1 -1
  385. package/lib/components/Icons/PersonWithJaw.js.map +1 -1
  386. package/lib/components/Icons/PersonWithMagnifyingGlass.js.map +1 -1
  387. package/lib/components/Icons/PersonWithSenses.js.map +1 -1
  388. package/lib/components/Icons/PersonWorking.js.map +1 -1
  389. package/lib/components/Icons/PersonalPlan.js.map +1 -1
  390. package/lib/components/Icons/PizzaSlice.js.map +1 -1
  391. package/lib/components/Icons/Plane.js.map +1 -1
  392. package/lib/components/Icons/Plant.js.map +1 -1
  393. package/lib/components/Icons/PlateKnifeFork.js.map +1 -1
  394. package/lib/components/Icons/Play.js.map +1 -1
  395. package/lib/components/Icons/PlusLarge.js.map +1 -1
  396. package/lib/components/Icons/PlusSmall.js.map +1 -1
  397. package/lib/components/Icons/PngFile.js.map +1 -1
  398. package/lib/components/Icons/Podcast.js.map +1 -1
  399. package/lib/components/Icons/PoisonInformation.js.map +1 -1
  400. package/lib/components/Icons/Pregnant.js.map +1 -1
  401. package/lib/components/Icons/Printer.js.map +1 -1
  402. package/lib/components/Icons/Psychosis.js.map +1 -1
  403. package/lib/components/Icons/Publication.js.map +1 -1
  404. package/lib/components/Icons/Puzzle.js.map +1 -1
  405. package/lib/components/Icons/QrCode.js.map +1 -1
  406. package/lib/components/Icons/Quarrel.js.map +1 -1
  407. package/lib/components/Icons/RadioTherapy.js.map +1 -1
  408. package/lib/components/Icons/RadioactiveTreatment.js.map +1 -1
  409. package/lib/components/Icons/Radioiodine.js.map +1 -1
  410. package/lib/components/Icons/Receipt.js.map +1 -1
  411. package/lib/components/Icons/Receptionist.js.map +1 -1
  412. package/lib/components/Icons/Recovery.js.map +1 -1
  413. package/lib/components/Icons/Referral.js.map +1 -1
  414. package/lib/components/Icons/Refresh.js.map +1 -1
  415. package/lib/components/Icons/Refund.js.map +1 -1
  416. package/lib/components/Icons/Reminder.js.map +1 -1
  417. package/lib/components/Icons/Reply.js.map +1 -1
  418. package/lib/components/Icons/Rocket.js.map +1 -1
  419. package/lib/components/Icons/RtfFile.js.map +1 -1
  420. package/lib/components/Icons/STDs.js.map +1 -1
  421. package/lib/components/Icons/Save.js.map +1 -1
  422. package/lib/components/Icons/Scale.js.map +1 -1
  423. package/lib/components/Icons/ScreenReader.js.map +1 -1
  424. package/lib/components/Icons/Search.js +4 -4
  425. package/lib/components/Icons/Search.js.map +1 -1
  426. package/lib/components/Icons/SectionSign.js.map +1 -1
  427. package/lib/components/Icons/Settings.js.map +1 -1
  428. package/lib/components/Icons/SettingsFill.js.map +1 -1
  429. package/lib/components/Icons/Sexualorientation.js.map +1 -1
  430. package/lib/components/Icons/ShakingHand.js.map +1 -1
  431. package/lib/components/Icons/Share.js.map +1 -1
  432. package/lib/components/Icons/SharedHealthData.js.map +1 -1
  433. package/lib/components/Icons/SharedHealthMeasurements.js.map +1 -1
  434. package/lib/components/Icons/Shield.js.map +1 -1
  435. package/lib/components/Icons/ShuntOperation.js.map +1 -1
  436. package/lib/components/Icons/Skeleton.js.map +1 -1
  437. package/lib/components/Icons/Skin.js.map +1 -1
  438. package/lib/components/Icons/Snake.js.map +1 -1
  439. package/lib/components/Icons/Snapchat.js.map +1 -1
  440. package/lib/components/Icons/Sort.js +12 -12
  441. package/lib/components/Icons/Sort.js.map +1 -1
  442. package/lib/components/Icons/SortDown.js.map +1 -1
  443. package/lib/components/Icons/SortUp.js.map +1 -1
  444. package/lib/components/Icons/SpeechBubble.js.map +1 -1
  445. package/lib/components/Icons/Spray.js.map +1 -1
  446. package/lib/components/Icons/StarFill.js.map +1 -1
  447. package/lib/components/Icons/StarStroke.js.map +1 -1
  448. package/lib/components/Icons/StickyNote.js.map +1 -1
  449. package/lib/components/Icons/StickyNotes.js.map +1 -1
  450. package/lib/components/Icons/Stopwatch.js.map +1 -1
  451. package/lib/components/Icons/Sun.js.map +1 -1
  452. package/lib/components/Icons/SupportingPerson.js.map +1 -1
  453. package/lib/components/Icons/Surgery.js.map +1 -1
  454. package/lib/components/Icons/Sweets.js.map +1 -1
  455. package/lib/components/Icons/Syringe.js.map +1 -1
  456. package/lib/components/Icons/Taxi.js.map +1 -1
  457. package/lib/components/Icons/TeddyBear.js.map +1 -1
  458. package/lib/components/Icons/Teenagers.js.map +1 -1
  459. package/lib/components/Icons/ThinkingAboutBaby.js.map +1 -1
  460. package/lib/components/Icons/Ticket.js.map +1 -1
  461. package/lib/components/Icons/TimePassing.js.map +1 -1
  462. package/lib/components/Icons/Toddler.js.map +1 -1
  463. package/lib/components/Icons/Tombstone.js.map +1 -1
  464. package/lib/components/Icons/Toolbox.js.map +1 -1
  465. package/lib/components/Icons/Tooth.js.map +1 -1
  466. package/lib/components/Icons/TotalKneeProsthesis.js.map +1 -1
  467. package/lib/components/Icons/Train.js.map +1 -1
  468. package/lib/components/Icons/Transplantation.js.map +1 -1
  469. package/lib/components/Icons/TrashCan.js.map +1 -1
  470. package/lib/components/Icons/TravelRoute.js.map +1 -1
  471. package/lib/components/Icons/TreatmentAids.js.map +1 -1
  472. package/lib/components/Icons/TriangleX.js.map +1 -1
  473. package/lib/components/Icons/Twitter.js.map +1 -1
  474. package/lib/components/Icons/Undo.js.map +1 -1
  475. package/lib/components/Icons/UniProsthesis.js.map +1 -1
  476. package/lib/components/Icons/Upload.js.map +1 -1
  477. package/lib/components/Icons/UserOrganization.js.map +1 -1
  478. package/lib/components/Icons/Vaccine.js.map +1 -1
  479. package/lib/components/Icons/VerticalDots.js.map +1 -1
  480. package/lib/components/Icons/VideoCamera.js.map +1 -1
  481. package/lib/components/Icons/VideoChat.js.map +1 -1
  482. package/lib/components/Icons/Wallet.js.map +1 -1
  483. package/lib/components/Icons/Watch.js.map +1 -1
  484. package/lib/components/Icons/Website.js.map +1 -1
  485. package/lib/components/Icons/Wheelchair.js.map +1 -1
  486. package/lib/components/Icons/WheelchairActive.js.map +1 -1
  487. package/lib/components/Icons/Window.js.map +1 -1
  488. package/lib/components/Icons/WordDocument.js.map +1 -1
  489. package/lib/components/Icons/WorkSuitcase.js.map +1 -1
  490. package/lib/components/Icons/X.js.map +1 -1
  491. package/lib/components/Icons/XOutline.js.map +1 -1
  492. package/lib/components/Icons/XmlFile.js.map +1 -1
  493. package/lib/components/Icons/YouTube.js.map +1 -1
  494. package/lib/components/Icons/Zoom.js.map +1 -1
  495. package/lib/components/Icons/ZoomInLeft.js.map +1 -1
  496. package/lib/components/Icons/ZoomOutLeft.js.map +1 -1
  497. package/lib/components/Illustration/index.js +1 -1
  498. package/lib/components/Illustrations/BabyMobile.js +1 -1
  499. package/lib/components/Illustrations/BabyMobile.js.map +1 -1
  500. package/lib/components/Illustrations/BabyMobileMedium.js +1 -1
  501. package/lib/components/Illustrations/BabyMobileMedium.js.map +1 -1
  502. package/lib/components/Illustrations/Child.js +1 -1
  503. package/lib/components/Illustrations/Child.js.map +1 -1
  504. package/lib/components/Illustrations/ChildMedium.js +1 -1
  505. package/lib/components/Illustrations/ChildMedium.js.map +1 -1
  506. package/lib/components/Illustrations/Doctor.js +1 -1
  507. package/lib/components/Illustrations/Doctor.js.map +1 -1
  508. package/lib/components/Illustrations/DoctorMedium.js.map +1 -1
  509. package/lib/components/Illustrations/DoctorSmall.js.map +1 -1
  510. package/lib/components/Illustrations/EyeContact.d.ts +8 -0
  511. package/lib/components/Illustrations/EyeContact.js +17 -0
  512. package/lib/components/Illustrations/EyeContact.js.map +1 -0
  513. package/lib/components/Illustrations/EyeContactMedium.d.ts +3 -0
  514. package/lib/components/Illustrations/EyeContactMedium.js +80 -0
  515. package/lib/components/Illustrations/EyeContactMedium.js.map +1 -0
  516. package/lib/components/Illustrations/FacialRecognitionFingerprint.js +1 -1
  517. package/lib/components/Illustrations/FacialRecognitionFingerprint.js.map +1 -1
  518. package/lib/components/Illustrations/FacialRecognitionFingerprintMedium.js +1 -1
  519. package/lib/components/Illustrations/FacialRecognitionFingerprintMedium.js.map +1 -1
  520. package/lib/components/Illustrations/GiveBabyFood.js +1 -1
  521. package/lib/components/Illustrations/GiveBabyFood.js.map +1 -1
  522. package/lib/components/Illustrations/GiveBabyFoodMedium.js +1 -1
  523. package/lib/components/Illustrations/GiveBabyFoodMedium.js.map +1 -1
  524. package/lib/components/Illustrations/HealthcarePersonnel.js +1 -1
  525. package/lib/components/Illustrations/HealthcarePersonnel.js.map +1 -1
  526. package/lib/components/Illustrations/HealthcarePersonnelMedium.js.map +1 -1
  527. package/lib/components/Illustrations/HealthcarePersonnelSmall.js.map +1 -1
  528. package/lib/components/Illustrations/IllustrationNames.d.ts +1 -1
  529. package/lib/components/Illustrations/IllustrationNames.js +4 -0
  530. package/lib/components/Illustrations/IllustrationNames.js.map +1 -1
  531. package/lib/components/Illustrations/ReadLetters.js +1 -1
  532. package/lib/components/Illustrations/ReadLetters.js.map +1 -1
  533. package/lib/components/Illustrations/ReadLettersMedium.js +1 -1
  534. package/lib/components/Illustrations/ReadLettersMedium.js.map +1 -1
  535. package/lib/components/Illustrations/SkinToSkin.d.ts +8 -0
  536. package/lib/components/Illustrations/SkinToSkin.js +17 -0
  537. package/lib/components/Illustrations/SkinToSkin.js.map +1 -0
  538. package/lib/components/Illustrations/SkinToSkinMedium.d.ts +3 -0
  539. package/lib/components/Illustrations/SkinToSkinMedium.js +107 -0
  540. package/lib/components/Illustrations/SkinToSkinMedium.js.map +1 -0
  541. package/lib/components/Illustrations/Stork.js +1 -1
  542. package/lib/components/Illustrations/Stork.js.map +1 -1
  543. package/lib/components/Illustrations/StorkMedium.js +1 -1
  544. package/lib/components/Illustrations/StorkMedium.js.map +1 -1
  545. package/lib/components/Illustrations/Stroller.js +1 -1
  546. package/lib/components/Illustrations/Stroller.js.map +1 -1
  547. package/lib/components/Illustrations/StrollerMedium.js +1 -1
  548. package/lib/components/Illustrations/StrollerMedium.js.map +1 -1
  549. package/lib/components/Illustrations/Support2.js +1 -1
  550. package/lib/components/Illustrations/Support2.js.map +1 -1
  551. package/lib/components/Illustrations/Support2Medium.js +1 -1
  552. package/lib/components/Illustrations/Support2Medium.js.map +1 -1
  553. package/lib/components/Illustrations/Thinking.js +1 -1
  554. package/lib/components/Illustrations/Thinking.js.map +1 -1
  555. package/lib/components/Illustrations/ThinkingMedium.js +1 -1
  556. package/lib/components/Illustrations/ThinkingMedium.js.map +1 -1
  557. package/lib/components/Loader/index.js.map +1 -1
  558. package/lib/components/Logo/index.js.map +1 -1
  559. package/lib/components/Modal/index.js.map +1 -1
  560. package/lib/components/NotificationPanel/index.js.map +1 -1
  561. package/lib/components/Panel/index.js +1 -1
  562. package/lib/components/Panel/index.js.map +1 -1
  563. package/lib/components/PanelList/index.js +1 -1
  564. package/lib/components/PanelList/index.js.map +1 -1
  565. package/lib/components/PopMenu/index.js.map +1 -1
  566. package/lib/components/Portal/index.js.map +1 -1
  567. package/lib/components/Progressbar/index.js.map +1 -1
  568. package/lib/components/PromoPanel/index.js.map +1 -1
  569. package/lib/components/RadioButton/RadioMarker/RadioMarker.d.ts +20 -0
  570. package/lib/components/RadioButton/RadioMarker/styles.module.scss +288 -0
  571. package/lib/components/RadioButton/RadioMarker/styles.module.scss.d.ts +20 -0
  572. package/lib/components/RadioButton/index.d.ts +0 -1
  573. package/lib/components/RadioButton/index.js +2 -2
  574. package/lib/components/RadioButton/index.js.map +1 -1
  575. package/lib/components/RadioButton/styles.module.scss +13 -275
  576. package/lib/components/RadioButton/styles.module.scss.d.ts +2 -12
  577. package/lib/components/ServiceMessage/index.js.map +1 -1
  578. package/lib/components/SharingStatus/index.js.map +1 -1
  579. package/lib/components/Step/index.js.map +1 -1
  580. package/lib/components/Stepper/index.js +1 -5
  581. package/lib/components/Stepper/index.js.map +1 -1
  582. package/lib/components/StickyNote/index.js.map +1 -1
  583. package/lib/components/Table/index.js +3 -3
  584. package/lib/components/Table/index.js.map +1 -1
  585. package/lib/components/Tabs/index.js.map +1 -1
  586. package/lib/components/Tag/index.js.map +1 -1
  587. package/lib/components/TagList/index.js.map +1 -1
  588. package/lib/components/Tile/index.js.map +1 -1
  589. package/lib/components/ToastList/index.js.map +1 -1
  590. package/lib/components/Toggle/index.js.map +1 -1
  591. package/lib/components/Validation/index.js.map +1 -1
  592. package/lib/components/VisualCheckboxCloud/Checkbox/Checkbox.d.ts +21 -0
  593. package/lib/components/VisualCheckboxCloud/Checkbox/index.d.ts +3 -0
  594. package/lib/components/VisualCheckboxCloud/Checkbox/index.js +7 -0
  595. package/lib/components/VisualCheckboxCloud/Checkbox/index.js.map +1 -0
  596. package/lib/components/VisualCheckboxCloud/Checkbox/styles.module.scss +10 -0
  597. package/lib/components/VisualCheckboxCloud/Checkbox/styles.module.scss.d.ts +15 -0
  598. package/lib/components/VisualCheckboxCloud/VisualCheckboxCloud.d.ts +29 -0
  599. package/lib/components/VisualCheckboxCloud/index.d.ts +3 -0
  600. package/lib/components/VisualCheckboxCloud/index.js +42 -0
  601. package/lib/components/VisualCheckboxCloud/index.js.map +1 -0
  602. package/lib/components/VisualCheckboxCloud/styles.module.scss +6 -0
  603. package/lib/components/VisualCheckboxCloud/styles.module.scss.d.ts +9 -0
  604. package/lib/components/VisualCheckboxGroup/VisualCheckbox/VisualCheckbox.d.ts +26 -0
  605. package/lib/components/VisualCheckboxGroup/VisualCheckbox/VisualContent.d.ts +10 -0
  606. package/lib/components/VisualCheckboxGroup/VisualCheckbox/index.d.ts +3 -0
  607. package/lib/components/VisualCheckboxGroup/VisualCheckbox/index.js +7 -0
  608. package/lib/components/VisualCheckboxGroup/VisualCheckbox/index.js.map +1 -0
  609. package/lib/components/VisualCheckboxGroup/VisualCheckbox/styles.module.scss +7 -0
  610. package/lib/components/VisualCheckboxGroup/VisualCheckbox/styles.module.scss.d.ts +18 -0
  611. package/lib/components/VisualCheckboxGroup/VisualCheckboxGroup.d.ts +33 -0
  612. package/lib/components/VisualCheckboxGroup/index.d.ts +3 -0
  613. package/lib/components/VisualCheckboxGroup/index.js +47 -0
  614. package/lib/components/VisualCheckboxGroup/index.js.map +1 -0
  615. package/lib/components/VisualCheckboxGroup/styles.module.scss +6 -0
  616. package/lib/components/VisualCheckboxGroup/styles.module.scss.d.ts +10 -0
  617. package/lib/components/VisualRadioCloud/Radio/Radio.d.ts +23 -0
  618. package/lib/components/VisualRadioCloud/Radio/index.d.ts +3 -0
  619. package/lib/components/VisualRadioCloud/Radio/index.js +7 -0
  620. package/lib/components/VisualRadioCloud/Radio/index.js.map +1 -0
  621. package/lib/components/VisualRadioCloud/Radio/styles.module.scss +7 -0
  622. package/lib/components/VisualRadioCloud/Radio/styles.module.scss.d.ts +15 -0
  623. package/lib/components/VisualRadioCloud/VisualRadioCloud.d.ts +39 -0
  624. package/lib/components/VisualRadioCloud/index.d.ts +3 -0
  625. package/lib/components/VisualRadioCloud/index.js +62 -0
  626. package/lib/components/VisualRadioCloud/index.js.map +1 -0
  627. package/lib/components/VisualRadioCloud/styles.module.scss +6 -0
  628. package/lib/components/VisualRadioCloud/styles.module.scss.d.ts +9 -0
  629. package/lib/components/VisualRadioGroup/VisualRadio/VisualContent.d.ts +10 -0
  630. package/lib/components/VisualRadioGroup/VisualRadio/VisualRadio.d.ts +26 -0
  631. package/lib/components/VisualRadioGroup/VisualRadio/index.d.ts +3 -0
  632. package/lib/components/VisualRadioGroup/VisualRadio/index.js +7 -0
  633. package/lib/components/VisualRadioGroup/VisualRadio/index.js.map +1 -0
  634. package/lib/components/VisualRadioGroup/VisualRadio/styles.module.scss +7 -0
  635. package/lib/components/VisualRadioGroup/VisualRadio/styles.module.scss.d.ts +18 -0
  636. package/lib/components/VisualRadioGroup/VisualRadioGroup.d.ts +39 -0
  637. package/lib/components/VisualRadioGroup/index.d.ts +3 -0
  638. package/lib/components/VisualRadioGroup/index.js +67 -0
  639. package/lib/components/VisualRadioGroup/index.js.map +1 -0
  640. package/lib/components/VisualRadioGroup/styles.module.scss +6 -0
  641. package/lib/components/VisualRadioGroup/styles.module.scss.d.ts +10 -0
  642. package/lib/constants.js.map +1 -1
  643. package/lib/constants2.js +6 -6
  644. package/lib/constants2.js.map +1 -1
  645. package/lib/floating-ui.react.js +30 -30
  646. package/lib/floating-ui.react.js.map +1 -1
  647. package/lib/getFilterChips.js.map +1 -1
  648. package/lib/hoc/withBreakpoint/withBreakpoint.js.map +1 -1
  649. package/lib/hooks/useBreakpoint.js.map +1 -1
  650. package/lib/hooks/useElementList.js.map +1 -1
  651. package/lib/hooks/useEventListenerState.js.map +1 -1
  652. package/lib/hooks/useExpand.js.map +1 -1
  653. package/lib/hooks/useFocusToggle.js.map +1 -1
  654. package/lib/hooks/useFocusTrap.js.map +1 -1
  655. package/lib/hooks/useFocusableElements.js.map +1 -1
  656. package/lib/hooks/useIcons.js.map +1 -1
  657. package/lib/hooks/useIdWithFallback.js.map +1 -1
  658. package/lib/hooks/useIntersectionObserver.js.map +1 -1
  659. package/lib/hooks/useInterval.js.map +1 -1
  660. package/lib/hooks/useIsMobileBreakpoint.js.map +1 -1
  661. package/lib/hooks/useIsServerSide.js.map +1 -1
  662. package/lib/hooks/useIsVisible.js.map +1 -1
  663. package/lib/hooks/useKeyboardEvent.js.map +1 -1
  664. package/lib/hooks/useLanguage.js.map +1 -1
  665. package/lib/hooks/useLayoutEvent.js.map +1 -1
  666. package/lib/hooks/useOutsideEvent.js.map +1 -1
  667. package/lib/hooks/usePrevious.js.map +1 -1
  668. package/lib/hooks/usePseudoClasses.js.map +1 -1
  669. package/lib/hooks/useResizeObserver.js.map +1 -1
  670. package/lib/hooks/useReturnFocusOnUnmount.js.map +1 -1
  671. package/lib/hooks/useRovingFocus.js.map +1 -1
  672. package/lib/hooks/useSize.js.map +1 -1
  673. package/lib/hooks/useToggle.js.map +1 -1
  674. package/lib/hooks/usestopPropagation.js.map +1 -1
  675. package/lib/resourceHelper.js +12 -8
  676. package/lib/resourceHelper.js.map +1 -1
  677. package/lib/resources/HN.Designsystem.Filter.en-GB.json.d.ts +6 -4
  678. package/lib/resources/HN.Designsystem.Filter.nb-NO.json.d.ts +6 -4
  679. package/lib/resources/Resources.d.ts +11 -3
  680. package/lib/scss/_visual-form.scss +357 -0
  681. package/lib/theme/currys/color.js.map +1 -1
  682. package/lib/theme/currys/spacing.js.map +1 -1
  683. package/lib/theme/grid.js.map +1 -1
  684. package/lib/theme/index.js.map +1 -1
  685. package/lib/theme/palette.js.map +1 -1
  686. package/lib/theme/spacers.js.map +1 -1
  687. package/lib/utils/accessibility.js.map +1 -1
  688. package/lib/utils/component.js.map +1 -1
  689. package/lib/utils/debounce.js.map +1 -1
  690. package/lib/utils/deepContains.js.map +1 -1
  691. package/lib/utils/device.js.map +1 -1
  692. package/lib/utils/focus.js.map +1 -1
  693. package/lib/utils/language.js.map +1 -1
  694. package/lib/utils/mobile.js.map +1 -1
  695. package/lib/utils/refs.js.map +1 -1
  696. package/lib/utils/resource.js.map +1 -1
  697. package/lib/utils/scroll.js.map +1 -1
  698. package/lib/utils/viewport.js.map +1 -1
  699. package/lib/utils.js.map +1 -1
  700. package/lib/utils2.js.map +1 -1
  701. package/lib/utils3.js +11 -100
  702. package/lib/utils3.js.map +1 -1
  703. package/lib/utils4.js +31 -12
  704. package/lib/utils4.js.map +1 -1
  705. package/lib/utils5.js +112 -31
  706. package/lib/utils5.js.map +1 -1
  707. package/lib/uuid.js.map +1 -1
  708. package/package.json +115 -1
  709. package/scss/_visual-form.scss +357 -0
  710. package/lib/components/RadioButton/utils.d.ts +0 -2
  711. package/lib/utils6.js +0 -115
  712. package/lib/utils6.js.map +0 -1
@@ -5,87 +5,6 @@
5
5
  @use '../../scss/screen-reader' as *;
6
6
  @use '../../scss/breakpoints' as breakpoints;
7
7
 
8
- @mixin dashed-dotted-border() {
9
- box-shadow: none;
10
-
11
- --dot-size: 2px;
12
- --dash-length: 5px;
13
- --gap-length: 2px;
14
- --corner-gap: 2px;
15
-
16
- background-image:
17
- // Square dots at corners
18
- linear-gradient(palette.$neutral600, palette.$neutral600),
19
- linear-gradient(palette.$neutral600, palette.$neutral600),
20
- linear-gradient(palette.$neutral600, palette.$neutral600),
21
- linear-gradient(palette.$neutral600, palette.$neutral600),
22
- // Dashed lines
23
- repeating-linear-gradient(
24
- 0deg,
25
- palette.$neutral600,
26
- palette.$neutral600 var(--dash-length),
27
- transparent var(--dash-length),
28
- transparent calc(var(--dash-length) + var(--gap-length))
29
- ),
30
- repeating-linear-gradient(
31
- 90deg,
32
- palette.$neutral600,
33
- palette.$neutral600 var(--dash-length),
34
- transparent var(--dash-length),
35
- transparent calc(var(--dash-length) + var(--gap-length))
36
- ),
37
- repeating-linear-gradient(
38
- 180deg,
39
- palette.$neutral600,
40
- palette.$neutral600 var(--dash-length),
41
- transparent var(--dash-length),
42
- transparent calc(var(--dash-length) + var(--gap-length))
43
- ),
44
- repeating-linear-gradient(
45
- 270deg,
46
- palette.$neutral600,
47
- palette.$neutral600 var(--dash-length),
48
- transparent var(--dash-length),
49
- transparent calc(var(--dash-length) + var(--gap-length))
50
- );
51
- background-size:
52
- // Top-left dot
53
- var(--dot-size) var(--dot-size),
54
- // Top-right dot
55
- var(--dot-size) var(--dot-size),
56
- // Bottom-right dot
57
- var(--dot-size) var(--dot-size),
58
- // Bottom-left dot
59
- var(--dot-size) var(--dot-size),
60
- // Left border
61
- 2px calc(100% - var(--dot-size) * 2 - var(--corner-gap) * 2),
62
- // Top border
63
- calc(100% - var(--dot-size) * 2 - var(--corner-gap) * 2) 2px,
64
- // Right border
65
- 2px calc(100% - var(--dot-size) * 2 - var(--corner-gap) * 2),
66
- // Bottom border
67
- calc(100% - var(--dot-size) * 2 - var(--corner-gap) * 2) 2px;
68
- background-position:
69
- // Top-left dot
70
- 0 0,
71
- // Top-right dot
72
- 100% 0,
73
- // Bottom-right dot
74
- 100% 100%,
75
- // Bottom-left dot
76
- 0 100%,
77
- // Left border
78
- 0 calc(var(--dot-size) + var(--corner-gap)),
79
- // Top border
80
- calc(var(--dot-size) + var(--corner-gap)) 0,
81
- // Right border
82
- 100% calc(var(--dot-size) + var(--corner-gap)),
83
- // Bottom border
84
- calc(var(--dot-size) + var(--corner-gap)) 100%;
85
- background-repeat: no-repeat;
86
- }
87
-
88
- $checkbox-icon-size: 1.625rem;
89
8
  $padding-clickable-area-top-bottom: 7px;
90
9
  $padding-clickable-area-left: 8px;
91
10
 
@@ -117,9 +36,11 @@ $padding-clickable-area-left: 8px;
117
36
  &--checked {
118
37
  color: palette.$white;
119
38
  }
39
+
120
40
  &--checked#{&}--invalid {
121
41
  color: palette.$black;
122
42
  }
43
+
123
44
  &--checked#{&}--disabled {
124
45
  color: palette.$neutral700;
125
46
  }
@@ -135,7 +56,7 @@ $padding-clickable-area-left: 8px;
135
56
  }
136
57
 
137
58
  &--disabled {
138
- cursor: default;
59
+ cursor: not-allowed;
139
60
  }
140
61
 
141
62
  &__large {
@@ -150,6 +71,7 @@ $padding-clickable-area-left: 8px;
150
71
  background-color: palette.$neutral100;
151
72
  }
152
73
  }
74
+
153
75
  &--on-white#{&}--focus {
154
76
  color: palette.$neutral500;
155
77
  }
@@ -174,6 +96,7 @@ $padding-clickable-area-left: 8px;
174
96
  background-color: palette.$blueberry100;
175
97
  }
176
98
  }
99
+
177
100
  &--on-blueberry#{&}--focus {
178
101
  color: palette.$blueberry500;
179
102
  background-color: palette.$white;
@@ -186,6 +109,7 @@ $padding-clickable-area-left: 8px;
186
109
  background-color: palette.$cherry100;
187
110
  }
188
111
  }
112
+
189
113
  &--on-invalid#{&}--focus {
190
114
  color: palette.$cherry400;
191
115
  background-color: palette.$white;
@@ -206,6 +130,7 @@ $padding-clickable-area-left: 8px;
206
130
  background-color: palette.$blueberry600;
207
131
  }
208
132
  }
133
+
209
134
  &--checked#{&}--focus {
210
135
  color: palette.$blueberry900;
211
136
  background-color: palette.$blueberry500;
@@ -260,193 +185,8 @@ $padding-clickable-area-left: 8px;
260
185
  .checkbox {
261
186
  @include sr-only;
262
187
 
263
- &__icon-wrapper {
264
- display: flex;
265
- justify-content: center;
266
- align-items: center;
267
- margin: spacers.getSpacer(4xs) spacers.getSpacer(s) spacers.getSpacer(4xs) spacers.getSpacer(4xs);
268
- height: $checkbox-icon-size;
269
- width: $checkbox-icon-size;
270
- min-height: $checkbox-icon-size;
271
- min-width: $checkbox-icon-size;
272
- box-shadow: 0 0 0 spacers.getSpacer(4xs);
273
-
274
- // Vi overstyrer farger satt ved high-contrast mode i nettleser/os
275
- @media (forced-colors: active) {
276
- forced-color-adjust: none;
277
- background-color: #000 !important;
278
- color: #fff !important;
279
- }
280
-
281
- :hover > & {
282
- box-shadow: 0 0 0 spacers.getSpacer(3xs);
283
- }
284
-
285
- &--on-white,
286
- &--on-grey {
287
- color: palette.$neutral700;
288
-
289
- :hover > & {
290
- background-color: palette.$neutral100;
291
- }
292
- }
293
-
294
- &--on-blueberry {
295
- color: palette.$blueberry500;
296
-
297
- :hover > & {
298
- background-color: palette.$blueberry100;
299
- }
300
- }
301
-
302
- &--on-invalid {
303
- color: palette.$cherry500;
304
-
305
- :hover > & {
306
- background-color: palette.$cherry100;
307
- }
308
- }
309
-
310
- &--on-dark {
311
- color: palette.$neutral200;
312
-
313
- :hover > & {
314
- background-color: #ffffff1a;
315
- }
316
- }
317
-
318
- &__regular {
319
- &--checked {
320
- background-color: palette.$blueberry500;
321
- color: palette.$blueberry500;
322
- box-shadow: 0 0 0 spacers.getSpacer(4xs);
323
-
324
- :hover > & {
325
- background-color: palette.$blueberry600;
326
- color: palette.$blueberry600;
327
- box-shadow: 0 0 0 spacers.getSpacer(4xs);
328
- }
329
- }
330
- &--checked#{&}--invalid {
331
- background-color: palette.$cherry500;
332
- color: palette.$cherry500;
333
- box-shadow: 0 0 0 spacers.getSpacer(4xs);
334
-
335
- :hover > & {
336
- background-color: palette.$cherry600;
337
- color: palette.$cherry600;
338
- box-shadow: 0 0 0 spacers.getSpacer(4xs);
339
- }
340
- }
341
- &--checked#{&}--on-dark {
342
- background-color: palette.$blueberry50;
343
- color: palette.$blueberry50;
344
- box-shadow: 0 0 0 spacers.getSpacer(4xs);
345
-
346
- :hover > & {
347
- background-color: palette.$blueberry200;
348
- color: palette.$blueberry200;
349
- box-shadow: 0 0 0 spacers.getSpacer(4xs);
350
- }
351
- }
352
- }
353
-
354
- &__large {
355
- &--checked {
356
- background-color: palette.$blueberry50;
357
- box-shadow: none;
358
-
359
- :hover > & {
360
- background-color: palette.$blueberry200;
361
- box-shadow: none;
362
- }
363
- }
364
- &--checked#{&}--invalid {
365
- background-color: palette.$cherry500;
366
-
367
- :hover > & {
368
- background-color: palette.$cherry600;
369
- }
370
- }
371
- &--checked#{&}--disabled {
372
- color: palette.$neutral600;
373
- background-color: transparent;
374
-
375
- :hover > & {
376
- background-color: transparent;
377
- }
378
- }
379
- }
380
-
381
- &--disabled,
382
- &--disabled#{&}--invalid,
383
- &--disabled#{&}--on-dark {
384
- @include dashed-dotted-border;
385
-
386
- background-color: transparent;
387
-
388
- :hover > & {
389
- box-shadow: none;
390
- background-color: transparent;
391
- }
392
- }
393
- }
394
-
395
- &__icon {
396
- position: relative;
397
- top: 0.1rem;
398
- right: 0.05rem;
399
-
400
- // Vi overstyrer farger satt ved high-contrast mode i nettleser/os
401
- @media (forced-colors: active) {
402
- forced-color-adjust: none;
403
- fill: #fff;
404
- }
405
- }
406
-
407
- &:focus {
408
- /* stylelint-disable-next-line */
409
- & + .checkbox__icon-wrapper {
410
- box-shadow: 0 0 0 spacers.getSpacer(3xs);
411
- color: palette.$black;
412
-
413
- &__regular--checked {
414
- border: 1px solid var(--color-action-border-ondark-focus);
415
-
416
- & + .checkbox__icon-wrapper__regular--on-dark {
417
- border: 1px solid var(--color-action-border-onlight-focus);
418
- }
419
- }
420
-
421
- &--on-dark {
422
- color: palette.$white;
423
- border: 1px solid var(--color-action-border-onlight-focus);
424
- }
425
-
426
- &--invalid {
427
- color: palette.$black;
428
- }
429
-
430
- &__large {
431
- &--checked {
432
- background-color: palette.$blueberry200;
433
- box-shadow: 0 0 0 spacers.getSpacer(3xs);
434
- color: palette.$white;
435
- border: 1px solid var(--color-action-border-onlight-focus);
436
-
437
- // komboklasser fungerer ikke i nested struktur
438
- &--invalid {
439
- background-color: palette.$cherry500;
440
- color: palette.$black;
441
- border: 1px solid var(--color-action-border-ondark-focus);
442
- }
443
-
444
- &--disabled {
445
- color: palette.$neutral700;
446
- }
447
- }
448
- }
449
- }
188
+ &__marker-wrapper {
189
+ margin-right: spacers.getSpacer(s);
450
190
  }
451
191
 
452
192
  &:focus-visible {
@@ -1,22 +1,6 @@
1
1
  export type Styles = {
2
2
  checkbox: string;
3
- checkbox__icon: string;
4
- 'checkbox__icon-wrapper': string;
5
- 'checkbox__icon-wrapper__large--checked': string;
6
- 'checkbox__icon-wrapper__large--checked--disabled': string;
7
- 'checkbox__icon-wrapper__large--checked--invalid': string;
8
- 'checkbox__icon-wrapper__large--disabled': string;
9
- 'checkbox__icon-wrapper__large--invalid': string;
10
- 'checkbox__icon-wrapper__regular--checked': string;
11
- 'checkbox__icon-wrapper__regular--invalid': string;
12
- 'checkbox__icon-wrapper__regular--on-dark': string;
13
- 'checkbox__icon-wrapper--disabled': string;
14
- 'checkbox__icon-wrapper--invalid': string;
15
- 'checkbox__icon-wrapper--on-blueberry': string;
16
- 'checkbox__icon-wrapper--on-dark': string;
17
- 'checkbox__icon-wrapper--on-grey': string;
18
- 'checkbox__icon-wrapper--on-invalid': string;
19
- 'checkbox__icon-wrapper--on-white': string;
3
+ 'checkbox__marker-wrapper': string;
20
4
  'checkbox-afterlabelchildren-wrapper': string;
21
5
  'checkbox-errors': string;
22
6
  'checkbox-label': string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Dropdown/resourceHelper.ts","../../../src/components/Dropdown/SingleSelect/SingleSelect.tsx","../../../src/components/Dropdown/Dropdown.tsx","../../../src/components/Dropdown/index.ts"],"sourcesContent":["import type { HNDesignsystemDropdown } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.Dropdown.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.Dropdown.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemDropdown => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import React from 'react';\n\nimport { SingleSelectContext } from './utils';\n\nexport type SingleSelectContextType = {\n name?: string;\n disabled?: boolean;\n required?: boolean;\n value?: string;\n onValueChange?: (newValue: string, e?: React.SyntheticEvent) => void;\n};\n\nexport interface SingleSelectProps {\n name?: string;\n disabled?: boolean;\n defaultValue?: string;\n onValueChange?: (newValue: string, e?: React.SyntheticEvent) => void;\n children: React.ReactNode;\n}\n\nexport const SingleSelect: React.FC<SingleSelectProps> = ({ name, disabled, defaultValue, onValueChange, children }) => {\n const [selected, setSelected] = React.useState<string | undefined>(defaultValue);\n\n const context = React.useMemo<SingleSelectContextType>(\n () => ({\n name,\n disabled,\n value: selected,\n onValueChange: (v, e): void => {\n setSelected(v);\n onValueChange?.(v, e);\n },\n }),\n [name, disabled, selected, onValueChange]\n );\n\n return <SingleSelectContext.Provider value={context}>{children}</SingleSelectContext.Provider>;\n};\n","import type { ComponentType } from 'react';\nimport React, { useEffect, useRef, useId } from 'react';\n\nimport { autoUpdate, offset, shift, size, useFloating, flip } from '@floating-ui/react';\nimport classNames from 'classnames';\nimport { clamp } from 'motion/react';\n\nimport type { SingleSelectItemProps } from './SingleSelect/SingleSelectItem';\nimport type { HNDesignsystemDropdown } from '../../resources/Resources';\nimport type { CheckboxProps } from '../Checkbox';\nimport type { SvgIcon } from '../Icon';\nimport type { IconName } from '../Icons/IconNames';\nimport type { LabelProps } from '../Label';\n\nimport {\n AnalyticsId,\n IconSize,\n KeyboardEventKey,\n LanguageLocales,\n ZIndex,\n usePseudoClasses,\n useKeyboardEvent,\n useOutsideEvent,\n useToggle,\n} from '../..';\nimport { getResources } from './resourceHelper';\nimport { SingleSelectItem } from './SingleSelect/SingleSelectItem';\nimport { useIsMobileBreakpoint } from '../../hooks/useIsMobileBreakpoint';\nimport { useLanguage } from '../../hooks/useLanguage';\nimport { isComponent } from '../../utils/component';\nimport { mergeRefs } from '../../utils/refs';\nimport Button from '../Button';\nimport Checkbox from '../Checkbox';\nimport Icon from '../Icon';\nimport ChevronDown from '../Icons/ChevronDown';\nimport ChevronUp from '../Icons/ChevronUp';\nimport PlusSmall from '../Icons/PlusSmall';\nimport Label from '../Label';\nimport LazyIcon from '../LazyIcon';\nimport { SingleSelect } from './SingleSelect/SingleSelect';\n\nimport styles from './styles.module.scss';\n\ntype DropdownVariants = 'fill' | 'transparent' | 'borderless';\n\nexport interface DropdownProps {\n /** Text on the trigger button that opens the dropdown */\n triggerText: string;\n /** Sets the dropdown content */\n children: React.ReactNode;\n /** Minimum width for the dropdown in pixels. Does not affect trigger button. */\n dropdownMinWidth?: number;\n /** Minimum width for the trigger in pixels. Does not apply for borderless variant */\n triggerMinWidth?: number;\n /** Disables rendring of the close button in the list */\n noCloseButton?: boolean;\n /** Called when dropdown is open/closed */\n onToggle?: (isOpen: boolean) => void;\n /** Whether the dropdown is open or not */\n open?: boolean;\n /** Makes the dropdown disabled */\n disabled?: boolean;\n /** Sets the data-testid attribute on the dropdown button */\n testId?: string;\n /** Overrides the default z-index of the DropDownContent */\n zIndex?: number;\n /** Resources for component */\n resources?: Partial<HNDesignsystemDropdown>;\n /** Adds an icon to the trigger */\n svgIcon?: SvgIcon | IconName;\n /** Sets the visual variant of the Dropdown */\n variant?: DropdownVariants;\n}\n\nexport const DropdownBase: React.FC<DropdownProps> = props => {\n const {\n triggerText,\n noCloseButton = false,\n onToggle,\n dropdownMinWidth,\n triggerMinWidth,\n open = false,\n children,\n testId,\n disabled,\n zIndex = ZIndex.PopOver,\n resources,\n svgIcon,\n variant = 'fill',\n } = props;\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n const optionsRef = useRef<HTMLUListElement>(null);\n const childrenRefList = useRef(React.Children.map(children, () => React.createRef<HTMLElement>()));\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const { isHovered } = usePseudoClasses<HTMLButtonElement | null>(buttonRef);\n const openedByKeyboard = useRef<boolean>(false);\n const { value: isOpen, toggleValue: toggleIsOpen } = useToggle(!disabled && open, onToggle);\n const isMobile = useIsMobileBreakpoint();\n const triggerActualMinWidth = variant !== 'borderless' && typeof triggerMinWidth != 'undefined' ? `${triggerMinWidth}px` : 'auto';\n const triggerMinWidthLimit = isMobile ? 96 : 112;\n const dropdownFloatingPadding = 15;\n const maxWidth = isMobile ? 384 : 400;\n const maxHeight = isMobile ? 384 : 464;\n const toggleTextId = useId();\n const optionIdPrefix = useId();\n const contentId = useId();\n const leftIconProps = {\n className: styles['dropdown__left-icon'],\n size: IconSize.XSmall,\n isHovered: !disabled && isHovered,\n };\n\n const isSingleSelect = React.Children.toArray(children).every(\n child => React.isValidElement(child) && isComponent<SingleSelectItemProps>(child, SingleSelectItem)\n );\n const isMultiSelect = React.Children.toArray(children).every(\n child => React.isValidElement(child) && isComponent<CheckboxProps>(child, Checkbox)\n );\n\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n const defaultResources = getResources(language);\n const mergedResources: HNDesignsystemDropdown = {\n ...defaultResources,\n ...resources,\n };\n\n const toggleClasses = classNames(styles.dropdown__toggle, {\n [styles['dropdown__toggle--open']]: isOpen && !disabled,\n [styles['dropdown__toggle--with-icon']]: typeof svgIcon !== 'undefined',\n [styles['dropdown__toggle--transparent']]: variant === 'transparent',\n [styles['dropdown__toggle--borderless']]: variant === 'borderless',\n });\n const contentClasses = classNames(styles.dropdown__content, isOpen && styles['dropdown__content--open']);\n const listItemClasses = classNames(styles['dropdown__list-item'], { [styles['dropdown__list-item--single-select']]: isSingleSelect });\n\n const { refs, floatingStyles } = useFloating({\n strategy: 'fixed',\n placement: 'bottom-start',\n middleware: [\n offset(8),\n // Hvis det ikke er plass på høyre side flipper vi dropdownlisten fra bottom-start til bottom-end\n flip({ mainAxis: false, fallbackPlacements: ['bottom-end'], padding: dropdownFloatingPadding }),\n // Shift fungerer som en fallback for flip og unngår at availableWidth ikke oppdaterer seg ved skjermbreddeendring\n shift({ padding: dropdownFloatingPadding }),\n // Hvis det ikke er plass på noen av sidene krymper vi bredden på listen med size\n size({\n padding: dropdownFloatingPadding,\n apply({ availableWidth, availableHeight, elements, rects }) {\n const triggerW = rects.reference.width;\n const minProp = typeof dropdownMinWidth !== 'undefined' ? clamp(0, maxWidth, dropdownMinWidth) : 0;\n const targetW = Math.max(triggerW, minProp);\n\n Object.assign(elements.floating.style, {\n maxWidth: `${Math.min(targetW, availableWidth)}px`,\n maxHeight: `${Math.min(maxHeight, availableHeight)}px`,\n overflowY: 'auto',\n overflowX: 'hidden',\n });\n },\n }),\n ],\n whileElementsMounted: isOpen ? autoUpdate : undefined,\n });\n\n const handleOpen = (isKeyboard: boolean): void => {\n openedByKeyboard.current = isKeyboard;\n toggleIsOpen();\n };\n\n const handleClose = (): void => {\n if (!isOpen) return;\n\n toggleIsOpen();\n buttonRef.current?.focus();\n };\n\n useEffect(() => {\n if (isOpen && openedByKeyboard.current) {\n const firstEnabled = childrenRefList.current?.find(r => r.current && !r.current.hasAttribute('disabled'));\n firstEnabled?.current?.focus();\n openedByKeyboard.current = false;\n }\n }, [isOpen]);\n\n const focusByIndex = (nextIndex: number): void => {\n childrenRefList.current?.[nextIndex]?.current?.focus();\n };\n\n const isListNavKey = (key: string): boolean =>\n key === KeyboardEventKey.ArrowDown || key === KeyboardEventKey.ArrowUp || key === KeyboardEventKey.Home || key === KeyboardEventKey.End;\n\n const handleKeyboardNavigation = (event: KeyboardEvent): void => {\n if (!childrenRefList.current) return;\n\n const key = event.key as KeyboardEventKey;\n\n if (key === KeyboardEventKey.Escape) {\n if (isOpen) {\n event.preventDefault();\n handleClose();\n }\n return;\n }\n\n if (!isOpen) {\n if (isListNavKey(key)) {\n event.preventDefault();\n handleOpen(true);\n }\n return;\n }\n\n if (!isListNavKey(key)) {\n return;\n }\n\n const index = childrenRefList.current.findIndex(x => x.current === (event.target as HTMLElement));\n let nextIndex = index;\n\n if (key === KeyboardEventKey.Home) {\n nextIndex = 0;\n } else if (key === KeyboardEventKey.End) {\n nextIndex = childrenRefList.current.length - 1;\n } else if (key === KeyboardEventKey.ArrowDown && index < childrenRefList.current.length - 1) {\n nextIndex = index + 1;\n } else if (key === KeyboardEventKey.ArrowUp && index > 0) {\n nextIndex = index - 1;\n }\n\n if (nextIndex !== -1) {\n event.preventDefault();\n focusByIndex(nextIndex);\n }\n };\n\n useKeyboardEvent(dropdownRef, handleKeyboardNavigation, [\n KeyboardEventKey.ArrowDown,\n KeyboardEventKey.ArrowUp,\n KeyboardEventKey.End,\n KeyboardEventKey.Enter,\n KeyboardEventKey.Escape,\n KeyboardEventKey.Home,\n KeyboardEventKey.Space,\n ]);\n\n useOutsideEvent(dropdownRef, () => isOpen && handleClose());\n\n const renderChildren = React.Children.map(children, (child, index) => {\n const element = child as React.ReactElement<{ ref?: React.Ref<HTMLElement | null> }>;\n\n return (\n <li className={listItemClasses} id={`${optionIdPrefix}-${index}`}>\n {React.isValidElement(element) && childrenRefList.current && childrenRefList.current[index]\n ? ((): React.ReactElement => {\n if (isMultiSelect && isComponent<CheckboxProps>(element, Checkbox)) {\n const label = element.props.label;\n if (React.isValidElement(label) && isComponent<LabelProps>(label, Label)) {\n return React.cloneElement(element, {\n ref: mergeRefs([element.props.ref, childrenRefList.current[index]]),\n label: React.cloneElement(label, {\n labelClassName: classNames((label.props as LabelProps)?.labelClassName, styles['dropdown__multiselect-item']),\n }),\n });\n }\n }\n\n return React.cloneElement(child as React.ReactElement<Record<string, unknown>>, {\n ref: mergeRefs([element.props.ref, childrenRefList.current[index]]),\n });\n })()\n : child}\n </li>\n );\n });\n\n return (\n <div className={styles.dropdown} ref={dropdownRef}>\n <button\n type=\"button\"\n onClick={(): false | void => handleOpen(false)}\n className={toggleClasses}\n ref={mergeRefs([buttonRef, refs.setReference])}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Dropdown}\n disabled={disabled}\n aria-labelledby={toggleTextId}\n aria-haspopup={true}\n aria-controls={contentId}\n aria-expanded={isOpen}\n style={{\n width: triggerActualMinWidth,\n maxWidth: '100%',\n minWidth: `${triggerMinWidthLimit}px`,\n }}\n >\n {svgIcon && (\n <>\n {typeof svgIcon === 'string' ? (\n <LazyIcon {...leftIconProps} iconName={svgIcon} />\n ) : (\n <Icon {...leftIconProps} svgIcon={svgIcon} />\n )}\n </>\n )}\n <span id={toggleTextId} className={styles.dropdown__toggle__text}>\n {triggerText}\n </span>\n <Icon\n svgIcon={!isSingleSelect ? PlusSmall : isOpen ? ChevronUp : ChevronDown}\n className={styles['dropdown__right-icon']}\n isHovered={!disabled && isHovered}\n size={IconSize.XSmall}\n />\n </button>\n <div\n key={dropdownMinWidth ?? 'auto'}\n id={contentId}\n className={contentClasses}\n ref={refs.setFloating}\n style={{\n ...floatingStyles,\n zIndex: zIndex,\n }}\n >\n <ul className={styles.dropdown__options} role=\"group\" aria-labelledby={toggleTextId} tabIndex={-1} ref={optionsRef}>\n {isSingleSelect && <SingleSelect onValueChange={() => handleClose()}>{renderChildren}</SingleSelect>}\n {isMultiSelect && renderChildren}\n </ul>\n {!isSingleSelect && !noCloseButton && (\n <div className={styles.dropdown__close}>\n <Button onClick={handleClose}>{mergedResources.closeText}</Button>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport interface DropdownCompound extends React.FC<DropdownProps> {\n SingleSelectItem: ComponentType<SingleSelectItemProps>;\n}\nconst Dropdown = DropdownBase as DropdownCompound;\nDropdown.SingleSelectItem = SingleSelectItem;\nDropdownBase.displayName = 'Dropdown';\n\nexport default Dropdown;\n","import Dropdown from './Dropdown';\nexport * from './Dropdown';\nexport default Dropdown;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/Dropdown/resourceHelper.ts","../../../src/components/Dropdown/SingleSelect/SingleSelect.tsx","../../../src/components/Dropdown/Dropdown.tsx","../../../src/components/Dropdown/index.ts"],"sourcesContent":["import type { HNDesignsystemDropdown } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.Dropdown.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.Dropdown.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemDropdown => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import React from 'react';\n\nimport { SingleSelectContext } from './utils';\n\nexport type SingleSelectContextType = {\n name?: string;\n disabled?: boolean;\n required?: boolean;\n value?: string;\n onValueChange?: (newValue: string, e?: React.SyntheticEvent) => void;\n};\n\nexport interface SingleSelectProps {\n name?: string;\n disabled?: boolean;\n defaultValue?: string;\n onValueChange?: (newValue: string, e?: React.SyntheticEvent) => void;\n children: React.ReactNode;\n}\n\nexport const SingleSelect: React.FC<SingleSelectProps> = ({ name, disabled, defaultValue, onValueChange, children }) => {\n const [selected, setSelected] = React.useState<string | undefined>(defaultValue);\n\n const context = React.useMemo<SingleSelectContextType>(\n () => ({\n name,\n disabled,\n value: selected,\n onValueChange: (v, e): void => {\n setSelected(v);\n onValueChange?.(v, e);\n },\n }),\n [name, disabled, selected, onValueChange]\n );\n\n return <SingleSelectContext.Provider value={context}>{children}</SingleSelectContext.Provider>;\n};\n","import type { ComponentType } from 'react';\nimport React, { useEffect, useRef, useId } from 'react';\n\nimport { autoUpdate, offset, shift, size, useFloating, flip } from '@floating-ui/react';\nimport classNames from 'classnames';\nimport { clamp } from 'motion/react';\n\nimport type { SingleSelectItemProps } from './SingleSelect/SingleSelectItem';\nimport type { HNDesignsystemDropdown } from '../../resources/Resources';\nimport type { CheckboxProps } from '../Checkbox';\nimport type { SvgIcon } from '../Icon';\nimport type { IconName } from '../Icons/IconNames';\nimport type { LabelProps } from '../Label';\n\nimport {\n AnalyticsId,\n IconSize,\n KeyboardEventKey,\n LanguageLocales,\n ZIndex,\n usePseudoClasses,\n useKeyboardEvent,\n useOutsideEvent,\n useToggle,\n} from '../..';\nimport { getResources } from './resourceHelper';\nimport { SingleSelectItem } from './SingleSelect/SingleSelectItem';\nimport { useIsMobileBreakpoint } from '../../hooks/useIsMobileBreakpoint';\nimport { useLanguage } from '../../hooks/useLanguage';\nimport { isComponent } from '../../utils/component';\nimport { mergeRefs } from '../../utils/refs';\nimport Button from '../Button';\nimport Checkbox from '../Checkbox';\nimport Icon from '../Icon';\nimport ChevronDown from '../Icons/ChevronDown';\nimport ChevronUp from '../Icons/ChevronUp';\nimport PlusSmall from '../Icons/PlusSmall';\nimport Label from '../Label';\nimport LazyIcon from '../LazyIcon';\nimport { SingleSelect } from './SingleSelect/SingleSelect';\n\nimport styles from './styles.module.scss';\n\ntype DropdownVariants = 'fill' | 'transparent' | 'borderless';\n\nexport interface DropdownProps {\n /** Text on the trigger button that opens the dropdown */\n triggerText: string;\n /** Sets the dropdown content */\n children: React.ReactNode;\n /** Minimum width for the dropdown in pixels. Does not affect trigger button. */\n dropdownMinWidth?: number;\n /** Minimum width for the trigger in pixels. Does not apply for borderless variant */\n triggerMinWidth?: number;\n /** Disables rendring of the close button in the list */\n noCloseButton?: boolean;\n /** Called when dropdown is open/closed */\n onToggle?: (isOpen: boolean) => void;\n /** Whether the dropdown is open or not */\n open?: boolean;\n /** Makes the dropdown disabled */\n disabled?: boolean;\n /** Sets the data-testid attribute on the dropdown button */\n testId?: string;\n /** Overrides the default z-index of the DropDownContent */\n zIndex?: number;\n /** Resources for component */\n resources?: Partial<HNDesignsystemDropdown>;\n /** Adds an icon to the trigger */\n svgIcon?: SvgIcon | IconName;\n /** Sets the visual variant of the Dropdown */\n variant?: DropdownVariants;\n}\n\nexport const DropdownBase: React.FC<DropdownProps> = props => {\n const {\n triggerText,\n noCloseButton = false,\n onToggle,\n dropdownMinWidth,\n triggerMinWidth,\n open = false,\n children,\n testId,\n disabled,\n zIndex = ZIndex.PopOver,\n resources,\n svgIcon,\n variant = 'fill',\n } = props;\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n const optionsRef = useRef<HTMLUListElement>(null);\n const childrenRefList = useRef(React.Children.map(children, () => React.createRef<HTMLElement>()));\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const { isHovered } = usePseudoClasses<HTMLButtonElement | null>(buttonRef);\n const openedByKeyboard = useRef<boolean>(false);\n const { value: isOpen, toggleValue: toggleIsOpen } = useToggle(!disabled && open, onToggle);\n const isMobile = useIsMobileBreakpoint();\n const triggerActualMinWidth = variant !== 'borderless' && typeof triggerMinWidth != 'undefined' ? `${triggerMinWidth}px` : 'auto';\n const triggerMinWidthLimit = isMobile ? 96 : 112;\n const dropdownFloatingPadding = 15;\n const maxWidth = isMobile ? 384 : 400;\n const maxHeight = isMobile ? 384 : 464;\n const toggleTextId = useId();\n const optionIdPrefix = useId();\n const contentId = useId();\n const leftIconProps = {\n className: styles['dropdown__left-icon'],\n size: IconSize.XSmall,\n isHovered: !disabled && isHovered,\n };\n\n const isSingleSelect = React.Children.toArray(children).every(\n child => React.isValidElement(child) && isComponent<SingleSelectItemProps>(child, SingleSelectItem)\n );\n const isMultiSelect = React.Children.toArray(children).every(\n child => React.isValidElement(child) && isComponent<CheckboxProps>(child, Checkbox)\n );\n\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n const defaultResources = getResources(language);\n const mergedResources: HNDesignsystemDropdown = {\n ...defaultResources,\n ...resources,\n };\n\n const toggleClasses = classNames(styles.dropdown__toggle, {\n [styles['dropdown__toggle--open']]: isOpen && !disabled,\n [styles['dropdown__toggle--with-icon']]: typeof svgIcon !== 'undefined',\n [styles['dropdown__toggle--transparent']]: variant === 'transparent',\n [styles['dropdown__toggle--borderless']]: variant === 'borderless',\n });\n const contentClasses = classNames(styles.dropdown__content, isOpen && styles['dropdown__content--open']);\n const listItemClasses = classNames(styles['dropdown__list-item'], { [styles['dropdown__list-item--single-select']]: isSingleSelect });\n\n const { refs, floatingStyles } = useFloating({\n strategy: 'fixed',\n placement: 'bottom-start',\n middleware: [\n offset(8),\n // Hvis det ikke er plass på høyre side flipper vi dropdownlisten fra bottom-start til bottom-end\n flip({ mainAxis: false, fallbackPlacements: ['bottom-end'], padding: dropdownFloatingPadding }),\n // Shift fungerer som en fallback for flip og unngår at availableWidth ikke oppdaterer seg ved skjermbreddeendring\n shift({ padding: dropdownFloatingPadding }),\n // Hvis det ikke er plass på noen av sidene krymper vi bredden på listen med size\n size({\n padding: dropdownFloatingPadding,\n apply({ availableWidth, availableHeight, elements, rects }) {\n const triggerW = rects.reference.width;\n const minProp = typeof dropdownMinWidth !== 'undefined' ? clamp(0, maxWidth, dropdownMinWidth) : 0;\n const targetW = Math.max(triggerW, minProp);\n\n Object.assign(elements.floating.style, {\n maxWidth: `${Math.min(targetW, availableWidth)}px`,\n maxHeight: `${Math.min(maxHeight, availableHeight)}px`,\n overflowY: 'auto',\n overflowX: 'hidden',\n });\n },\n }),\n ],\n whileElementsMounted: isOpen ? autoUpdate : undefined,\n });\n\n const handleOpen = (isKeyboard: boolean): void => {\n openedByKeyboard.current = isKeyboard;\n toggleIsOpen();\n };\n\n const handleClose = (): void => {\n if (!isOpen) return;\n\n toggleIsOpen();\n buttonRef.current?.focus();\n };\n\n useEffect(() => {\n if (isOpen && openedByKeyboard.current) {\n const firstEnabled = childrenRefList.current?.find(r => r.current && !r.current.hasAttribute('disabled'));\n firstEnabled?.current?.focus();\n openedByKeyboard.current = false;\n }\n }, [isOpen]);\n\n const focusByIndex = (nextIndex: number): void => {\n childrenRefList.current?.[nextIndex]?.current?.focus();\n };\n\n const isListNavKey = (key: string): boolean =>\n key === KeyboardEventKey.ArrowDown || key === KeyboardEventKey.ArrowUp || key === KeyboardEventKey.Home || key === KeyboardEventKey.End;\n\n const handleKeyboardNavigation = (event: KeyboardEvent): void => {\n if (!childrenRefList.current) return;\n\n const key = event.key as KeyboardEventKey;\n\n if (key === KeyboardEventKey.Escape) {\n if (isOpen) {\n event.preventDefault();\n handleClose();\n }\n return;\n }\n\n if (!isOpen) {\n if (isListNavKey(key)) {\n event.preventDefault();\n handleOpen(true);\n }\n return;\n }\n\n if (!isListNavKey(key)) {\n return;\n }\n\n const index = childrenRefList.current.findIndex(x => x.current === (event.target as HTMLElement));\n let nextIndex = index;\n\n if (key === KeyboardEventKey.Home) {\n nextIndex = 0;\n } else if (key === KeyboardEventKey.End) {\n nextIndex = childrenRefList.current.length - 1;\n } else if (key === KeyboardEventKey.ArrowDown && index < childrenRefList.current.length - 1) {\n nextIndex = index + 1;\n } else if (key === KeyboardEventKey.ArrowUp && index > 0) {\n nextIndex = index - 1;\n }\n\n if (nextIndex !== -1) {\n event.preventDefault();\n focusByIndex(nextIndex);\n }\n };\n\n useKeyboardEvent(dropdownRef, handleKeyboardNavigation, [\n KeyboardEventKey.ArrowDown,\n KeyboardEventKey.ArrowUp,\n KeyboardEventKey.End,\n KeyboardEventKey.Enter,\n KeyboardEventKey.Escape,\n KeyboardEventKey.Home,\n KeyboardEventKey.Space,\n ]);\n\n useOutsideEvent(dropdownRef, () => isOpen && handleClose());\n\n const renderChildren = React.Children.map(children, (child, index) => {\n const element = child as React.ReactElement<{ ref?: React.Ref<HTMLElement | null> }>;\n\n return (\n <li className={listItemClasses} id={`${optionIdPrefix}-${index}`}>\n {React.isValidElement(element) && childrenRefList.current && childrenRefList.current[index]\n ? ((): React.ReactElement => {\n if (isMultiSelect && isComponent<CheckboxProps>(element, Checkbox)) {\n const label = element.props.label;\n if (React.isValidElement(label) && isComponent<LabelProps>(label, Label)) {\n return React.cloneElement(element, {\n ref: mergeRefs([element.props.ref, childrenRefList.current[index]]),\n label: React.cloneElement(label, {\n labelClassName: classNames((label.props as LabelProps)?.labelClassName, styles['dropdown__multiselect-item']),\n }),\n });\n }\n }\n\n return React.cloneElement(child as React.ReactElement<Record<string, unknown>>, {\n ref: mergeRefs([element.props.ref, childrenRefList.current[index]]),\n });\n })()\n : child}\n </li>\n );\n });\n\n return (\n <div className={styles.dropdown} ref={dropdownRef}>\n <button\n type=\"button\"\n onClick={(): false | void => handleOpen(false)}\n className={toggleClasses}\n ref={mergeRefs([buttonRef, refs.setReference])}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Dropdown}\n disabled={disabled}\n aria-labelledby={toggleTextId}\n aria-haspopup={true}\n aria-controls={contentId}\n aria-expanded={isOpen}\n style={{\n width: triggerActualMinWidth,\n maxWidth: '100%',\n minWidth: `${triggerMinWidthLimit}px`,\n }}\n >\n {svgIcon && (\n <>\n {typeof svgIcon === 'string' ? (\n <LazyIcon {...leftIconProps} iconName={svgIcon} />\n ) : (\n <Icon {...leftIconProps} svgIcon={svgIcon} />\n )}\n </>\n )}\n <span id={toggleTextId} className={styles.dropdown__toggle__text}>\n {triggerText}\n </span>\n <Icon\n svgIcon={!isSingleSelect ? PlusSmall : isOpen ? ChevronUp : ChevronDown}\n className={styles['dropdown__right-icon']}\n isHovered={!disabled && isHovered}\n size={IconSize.XSmall}\n />\n </button>\n <div\n key={dropdownMinWidth ?? 'auto'}\n id={contentId}\n className={contentClasses}\n ref={refs.setFloating}\n style={{\n ...floatingStyles,\n zIndex: zIndex,\n }}\n >\n <ul className={styles.dropdown__options} role=\"group\" aria-labelledby={toggleTextId} tabIndex={-1} ref={optionsRef}>\n {isSingleSelect && <SingleSelect onValueChange={() => handleClose()}>{renderChildren}</SingleSelect>}\n {isMultiSelect && renderChildren}\n </ul>\n {!isSingleSelect && !noCloseButton && (\n <div className={styles.dropdown__close}>\n <Button onClick={handleClose}>{mergedResources.closeText}</Button>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport interface DropdownCompound extends React.FC<DropdownProps> {\n SingleSelectItem: ComponentType<SingleSelectItemProps>;\n}\nconst Dropdown = DropdownBase as DropdownCompound;\nDropdown.SingleSelectItem = SingleSelectItem;\nDropdownBase.displayName = 'Dropdown';\n\nexport default Dropdown;\n","import Dropdown from './Dropdown';\nexport * from './Dropdown';\nexport default Dropdown;\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/DropdownOld/constants.ts","../../../src/components/DropdownOld/resourceHelper.ts","../../../src/components/DropdownOld/DropdownOld.tsx","../../../src/components/DropdownOld/index.ts"],"sourcesContent":["export enum DropdownOldOnColor {\n onwhite = 'onwhite',\n ongrey = 'ongrey',\n onblueberry = 'onblueberry',\n oncherry = 'oncherry',\n}\n","import type { HNDesignsystemDropdown } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.Dropdown.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.Dropdown.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemDropdown => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import React, { useEffect, useRef, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { HNDesignsystemDropdown } from '../../resources/Resources';\n\nimport { DropdownOldOnColor } from './constants';\nimport {\n AnalyticsId,\n IconSize,\n KeyboardEventKey,\n LanguageLocales,\n ZIndex,\n theme,\n usePseudoClasses,\n useKeyboardEvent,\n useOutsideEvent,\n useToggle,\n} from '../..';\nimport { getResources } from './resourceHelper';\nimport { useLanguage } from '../../hooks/useLanguage';\nimport { mergeRefs } from '../../utils/refs';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport PlusSmall from '../Icons/PlusSmall';\n\nimport styles from './styles.module.scss';\n\nexport interface DropdownOldProps {\n /** Label for dropdown. Visible for screen readers */\n label: string;\n /** Text on the trigger button that opens the dropdown */\n placeholder: string;\n /** Sets the dropdown content */\n children: React.ReactNode;\n /** @deprecated Close button text */\n closeText?: string;\n /** Minimum width for the dropdown in pixels. Does not affect trigger button */\n dropdownMinWidth?: number;\n /** No close button */\n noCloseButton?: boolean;\n /** Called when dropdown is open/closed */\n onToggle?: (isOpen: boolean) => void;\n /** Whether the dropdown is open or not */\n open?: boolean;\n /** Changes the visuals of the dropdown */\n onColor?: keyof typeof DropdownOldOnColor;\n /** Makes the background of the trigger transparent */\n transparent?: boolean;\n /** Makes the width of the full component adjust to its parent */\n fluid?: boolean;\n /** Makes the dropdown disabled */\n disabled?: boolean;\n /** Sets the data-testid attribute on the dropdown button */\n testId?: string;\n /** Overrides the default z-index of the DropDownContent */\n zIndex?: number;\n /** Resources for component */\n resources?: Partial<HNDesignsystemDropdown>;\n}\n\nconst DropdownOld: React.FC<DropdownOldProps> = props => {\n const {\n label,\n placeholder,\n noCloseButton = false,\n onToggle,\n dropdownMinWidth,\n open = false,\n children,\n onColor = DropdownOldOnColor.onwhite,\n transparent = false,\n fluid = false,\n testId,\n disabled,\n zIndex = ZIndex.PopOver,\n resources,\n } = props;\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n const optionsRef = useRef<HTMLUListElement>(null);\n const { refObject: buttonRef, isHovered } = usePseudoClasses<HTMLButtonElement>();\n const openedByKeyboard = useRef<boolean>(false);\n const { value: isOpen, toggleValue: toggleIsOpen } = useToggle(!disabled && open, onToggle);\n const inputRefList = useRef(React.Children.map(children, () => React.createRef<HTMLElement>()));\n const labelId = useId();\n const toggleLabelId = useId();\n const optionIdPrefix = useId();\n const contentId = useId();\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n const defaultResources = getResources(language);\n\n const mergedResources: HNDesignsystemDropdown = {\n ...defaultResources,\n ...resources,\n closeText: props.closeText ?? resources?.closeText ?? defaultResources.closeText,\n };\n\n const handleOpen = (isKeyboard: boolean): void => {\n openedByKeyboard.current = isKeyboard;\n toggleIsOpen();\n };\n\n const handleClose = (): void => {\n toggleIsOpen();\n buttonRef.current?.focus();\n };\n\n useEffect(() => {\n if (isOpen && openedByKeyboard.current) {\n const firstEnabled = inputRefList.current?.find(r => r.current && !r.current.hasAttribute('disabled'));\n firstEnabled?.current?.focus();\n openedByKeyboard.current = false;\n }\n }, [isOpen]);\n\n const handleKeyboardNavigation = (event: KeyboardEvent): void => {\n if (!inputRefList.current) {\n return;\n }\n\n if (event.key === KeyboardEventKey.Escape) {\n if (isOpen) handleClose();\n return;\n }\n\n if (!isOpen) {\n handleOpen(true);\n event.preventDefault();\n return;\n }\n\n const index = inputRefList.current.findIndex(x => x.current === event.target);\n let nextIndex = index;\n\n if (event.key === KeyboardEventKey.Home) {\n nextIndex = 0;\n } else if (event.key === KeyboardEventKey.End) {\n nextIndex = inputRefList.current.length - 1;\n } else if (event.key === KeyboardEventKey.ArrowDown && index < inputRefList.current.length - 1) {\n nextIndex = index + 1;\n } else if (event.key === KeyboardEventKey.ArrowUp && index > 0) {\n nextIndex = index - 1;\n } else if (event.key === KeyboardEventKey.Enter && index !== -1) {\n nextIndex = index;\n }\n\n if (nextIndex !== -1 && event.key !== KeyboardEventKey.Space) {\n event.preventDefault();\n\n inputRefList.current[nextIndex].current?.focus();\n }\n };\n\n useKeyboardEvent(dropdownRef, handleKeyboardNavigation, [\n KeyboardEventKey.ArrowDown,\n KeyboardEventKey.ArrowUp,\n KeyboardEventKey.End,\n KeyboardEventKey.Enter,\n KeyboardEventKey.Escape,\n KeyboardEventKey.Home,\n KeyboardEventKey.Space,\n ]);\n\n useOutsideEvent(dropdownRef, () => isOpen && handleClose());\n\n const toggleClasses = classNames(\n styles.dropdown__toggle,\n !disabled && {\n [styles['dropdown__toggle--on-white']]: onColor === DropdownOldOnColor.onwhite,\n [styles['dropdown__toggle--on-grey']]: onColor === DropdownOldOnColor.ongrey,\n [styles['dropdown__toggle--on-blueberry']]: onColor === DropdownOldOnColor.onblueberry,\n [styles['dropdown__toggle--on-cherry']]: onColor === DropdownOldOnColor.oncherry,\n [styles['dropdown__toggle--transparent']]: transparent,\n [styles['dropdown__toggle--fluid']]: fluid,\n [styles['dropdown__toggle--open']]: isOpen,\n }\n );\n\n const contentClasses = classNames(styles.dropdown__content, isOpen && styles['dropdown__content--open']);\n\n const renderChildren = React.Children.map(children, (child, index) => {\n const element = child as React.ReactElement<{ children?: React.ReactNode; ref?: React.Ref<HTMLElement | null> }>;\n\n return (\n <li className={styles.dropdown__input} id={`${optionIdPrefix}-${index}`}>\n {React.isValidElement(element) && inputRefList.current && inputRefList.current[index]\n ? React.cloneElement(element, {\n ref: mergeRefs([element.props.ref, inputRefList.current[index]]),\n })\n : child}\n </li>\n );\n });\n\n return (\n <div className={styles.dropdown} ref={dropdownRef}>\n <span id={labelId} className={styles.dropdown__label}>\n {label}\n </span>\n <button\n type=\"button\"\n onClick={(): false | void => handleOpen(false)}\n className={toggleClasses}\n ref={buttonRef}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Dropdown}\n disabled={disabled}\n aria-labelledby={toggleLabelId}\n aria-haspopup={true}\n aria-controls={contentId}\n aria-expanded={isOpen}\n >\n <span id={toggleLabelId} className={styles.dropdown__toggle__label}>\n {placeholder}\n </span>\n <Icon\n color={disabled ? theme.palette.neutral700 : theme.palette.blueberry600}\n svgIcon={PlusSmall}\n className={styles.dropdown__icon}\n isHovered={!disabled && isHovered}\n size={IconSize.XSmall}\n />\n </button>\n <div\n id={contentId}\n className={contentClasses}\n style={{ width: fluid ? '100%' : `auto`, minWidth: dropdownMinWidth ?? 'auto', zIndex: zIndex }}\n >\n <ul className={styles.dropdown__options} role=\"group\" aria-labelledby={labelId} tabIndex={-1} ref={optionsRef}>\n {renderChildren}\n </ul>\n {!noCloseButton && (\n <div className={styles.dropdown__close}>\n <Button onClick={handleClose}>{mergedResources.closeText}</Button>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default DropdownOld;\n","import DropdownOld from './DropdownOld';\nexport { DropdownOldOnColor } from './constants';\nexport * from './DropdownOld';\nexport default DropdownOld;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../src/components/DropdownOld/constants.ts","../../../src/components/DropdownOld/resourceHelper.ts","../../../src/components/DropdownOld/DropdownOld.tsx","../../../src/components/DropdownOld/index.ts"],"sourcesContent":["export enum DropdownOldOnColor {\n onwhite = 'onwhite',\n ongrey = 'ongrey',\n onblueberry = 'onblueberry',\n oncherry = 'oncherry',\n}\n","import type { HNDesignsystemDropdown } from '../../resources/Resources';\n\nimport { LanguageLocales } from '../../constants';\nimport enGB from '../../resources/HN.Designsystem.Dropdown.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.Dropdown.nb-NO.json';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemDropdown => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import React, { useEffect, useRef, useId } from 'react';\n\nimport classNames from 'classnames';\n\nimport type { HNDesignsystemDropdown } from '../../resources/Resources';\n\nimport { DropdownOldOnColor } from './constants';\nimport {\n AnalyticsId,\n IconSize,\n KeyboardEventKey,\n LanguageLocales,\n ZIndex,\n theme,\n usePseudoClasses,\n useKeyboardEvent,\n useOutsideEvent,\n useToggle,\n} from '../..';\nimport { getResources } from './resourceHelper';\nimport { useLanguage } from '../../hooks/useLanguage';\nimport { mergeRefs } from '../../utils/refs';\nimport Button from '../Button';\nimport Icon from '../Icon';\nimport PlusSmall from '../Icons/PlusSmall';\n\nimport styles from './styles.module.scss';\n\nexport interface DropdownOldProps {\n /** Label for dropdown. Visible for screen readers */\n label: string;\n /** Text on the trigger button that opens the dropdown */\n placeholder: string;\n /** Sets the dropdown content */\n children: React.ReactNode;\n /** @deprecated Close button text */\n closeText?: string;\n /** Minimum width for the dropdown in pixels. Does not affect trigger button */\n dropdownMinWidth?: number;\n /** No close button */\n noCloseButton?: boolean;\n /** Called when dropdown is open/closed */\n onToggle?: (isOpen: boolean) => void;\n /** Whether the dropdown is open or not */\n open?: boolean;\n /** Changes the visuals of the dropdown */\n onColor?: keyof typeof DropdownOldOnColor;\n /** Makes the background of the trigger transparent */\n transparent?: boolean;\n /** Makes the width of the full component adjust to its parent */\n fluid?: boolean;\n /** Makes the dropdown disabled */\n disabled?: boolean;\n /** Sets the data-testid attribute on the dropdown button */\n testId?: string;\n /** Overrides the default z-index of the DropDownContent */\n zIndex?: number;\n /** Resources for component */\n resources?: Partial<HNDesignsystemDropdown>;\n}\n\nconst DropdownOld: React.FC<DropdownOldProps> = props => {\n const {\n label,\n placeholder,\n noCloseButton = false,\n onToggle,\n dropdownMinWidth,\n open = false,\n children,\n onColor = DropdownOldOnColor.onwhite,\n transparent = false,\n fluid = false,\n testId,\n disabled,\n zIndex = ZIndex.PopOver,\n resources,\n } = props;\n\n const dropdownRef = useRef<HTMLDivElement>(null);\n const optionsRef = useRef<HTMLUListElement>(null);\n const { refObject: buttonRef, isHovered } = usePseudoClasses<HTMLButtonElement>();\n const openedByKeyboard = useRef<boolean>(false);\n const { value: isOpen, toggleValue: toggleIsOpen } = useToggle(!disabled && open, onToggle);\n const inputRefList = useRef(React.Children.map(children, () => React.createRef<HTMLElement>()));\n const labelId = useId();\n const toggleLabelId = useId();\n const optionIdPrefix = useId();\n const contentId = useId();\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n const defaultResources = getResources(language);\n\n const mergedResources: HNDesignsystemDropdown = {\n ...defaultResources,\n ...resources,\n closeText: props.closeText ?? resources?.closeText ?? defaultResources.closeText,\n };\n\n const handleOpen = (isKeyboard: boolean): void => {\n openedByKeyboard.current = isKeyboard;\n toggleIsOpen();\n };\n\n const handleClose = (): void => {\n toggleIsOpen();\n buttonRef.current?.focus();\n };\n\n useEffect(() => {\n if (isOpen && openedByKeyboard.current) {\n const firstEnabled = inputRefList.current?.find(r => r.current && !r.current.hasAttribute('disabled'));\n firstEnabled?.current?.focus();\n openedByKeyboard.current = false;\n }\n }, [isOpen]);\n\n const handleKeyboardNavigation = (event: KeyboardEvent): void => {\n if (!inputRefList.current) {\n return;\n }\n\n if (event.key === KeyboardEventKey.Escape) {\n if (isOpen) handleClose();\n return;\n }\n\n if (!isOpen) {\n handleOpen(true);\n event.preventDefault();\n return;\n }\n\n const index = inputRefList.current.findIndex(x => x.current === event.target);\n let nextIndex = index;\n\n if (event.key === KeyboardEventKey.Home) {\n nextIndex = 0;\n } else if (event.key === KeyboardEventKey.End) {\n nextIndex = inputRefList.current.length - 1;\n } else if (event.key === KeyboardEventKey.ArrowDown && index < inputRefList.current.length - 1) {\n nextIndex = index + 1;\n } else if (event.key === KeyboardEventKey.ArrowUp && index > 0) {\n nextIndex = index - 1;\n } else if (event.key === KeyboardEventKey.Enter && index !== -1) {\n nextIndex = index;\n }\n\n if (nextIndex !== -1 && event.key !== KeyboardEventKey.Space) {\n event.preventDefault();\n\n inputRefList.current[nextIndex].current?.focus();\n }\n };\n\n useKeyboardEvent(dropdownRef, handleKeyboardNavigation, [\n KeyboardEventKey.ArrowDown,\n KeyboardEventKey.ArrowUp,\n KeyboardEventKey.End,\n KeyboardEventKey.Enter,\n KeyboardEventKey.Escape,\n KeyboardEventKey.Home,\n KeyboardEventKey.Space,\n ]);\n\n useOutsideEvent(dropdownRef, () => isOpen && handleClose());\n\n const toggleClasses = classNames(\n styles.dropdown__toggle,\n !disabled && {\n [styles['dropdown__toggle--on-white']]: onColor === DropdownOldOnColor.onwhite,\n [styles['dropdown__toggle--on-grey']]: onColor === DropdownOldOnColor.ongrey,\n [styles['dropdown__toggle--on-blueberry']]: onColor === DropdownOldOnColor.onblueberry,\n [styles['dropdown__toggle--on-cherry']]: onColor === DropdownOldOnColor.oncherry,\n [styles['dropdown__toggle--transparent']]: transparent,\n [styles['dropdown__toggle--fluid']]: fluid,\n [styles['dropdown__toggle--open']]: isOpen,\n }\n );\n\n const contentClasses = classNames(styles.dropdown__content, isOpen && styles['dropdown__content--open']);\n\n const renderChildren = React.Children.map(children, (child, index) => {\n const element = child as React.ReactElement<{ children?: React.ReactNode; ref?: React.Ref<HTMLElement | null> }>;\n\n return (\n <li className={styles.dropdown__input} id={`${optionIdPrefix}-${index}`}>\n {React.isValidElement(element) && inputRefList.current && inputRefList.current[index]\n ? React.cloneElement(element, {\n ref: mergeRefs([element.props.ref, inputRefList.current[index]]),\n })\n : child}\n </li>\n );\n });\n\n return (\n <div className={styles.dropdown} ref={dropdownRef}>\n <span id={labelId} className={styles.dropdown__label}>\n {label}\n </span>\n <button\n type=\"button\"\n onClick={(): false | void => handleOpen(false)}\n className={toggleClasses}\n ref={buttonRef}\n data-testid={testId}\n data-analyticsid={AnalyticsId.Dropdown}\n disabled={disabled}\n aria-labelledby={toggleLabelId}\n aria-haspopup={true}\n aria-controls={contentId}\n aria-expanded={isOpen}\n >\n <span id={toggleLabelId} className={styles.dropdown__toggle__label}>\n {placeholder}\n </span>\n <Icon\n color={disabled ? theme.palette.neutral700 : theme.palette.blueberry600}\n svgIcon={PlusSmall}\n className={styles.dropdown__icon}\n isHovered={!disabled && isHovered}\n size={IconSize.XSmall}\n />\n </button>\n <div\n id={contentId}\n className={contentClasses}\n style={{ width: fluid ? '100%' : `auto`, minWidth: dropdownMinWidth ?? 'auto', zIndex: zIndex }}\n >\n <ul className={styles.dropdown__options} role=\"group\" aria-labelledby={labelId} tabIndex={-1} ref={optionsRef}>\n {renderChildren}\n </ul>\n {!noCloseButton && (\n <div className={styles.dropdown__close}>\n <Button onClick={handleClose}>{mergedResources.closeText}</Button>\n </div>\n )}\n </div>\n </div>\n );\n};\n\nexport default DropdownOld;\n","import DropdownOld from './DropdownOld';\nexport { DropdownOldOnColor } from './constants';\nexport * from './DropdownOld';\nexport default DropdownOld;\n"],"mappings":"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"}