@navikt/ds-react 5.13.0 → 5.14.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 (349) hide show
  1. package/_docs.json +206 -135
  2. package/cjs/accordion/AccordionHeader.js +2 -4
  3. package/cjs/button/Button.js +11 -12
  4. package/cjs/chips/Removable.js +3 -6
  5. package/cjs/copybutton/CopyButton.js +4 -5
  6. package/cjs/date/datepicker/DatePicker.js +4 -2
  7. package/cjs/date/datepicker/parts/WeekRow.js +2 -2
  8. package/cjs/date/monthpicker/MonthPicker.js +4 -3
  9. package/cjs/date/parts/DateWrapper.js +2 -2
  10. package/cjs/dropdown/Menu/GroupedList/GroupedItem.js +3 -6
  11. package/cjs/dropdown/Menu/List/Item.js +3 -6
  12. package/cjs/dropdown/Toggle.js +6 -5
  13. package/cjs/form/ConfirmationPanel.js +2 -2
  14. package/cjs/form/Textarea.js +2 -1
  15. package/cjs/form/checkbox/Checkbox.js +3 -2
  16. package/cjs/form/combobox/Combobox.js +2 -2
  17. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +3 -4
  18. package/cjs/form/combobox/Input/inputContext.js +2 -2
  19. package/cjs/form/combobox/SelectedOptions/selectedOptionsContext.js +2 -5
  20. package/cjs/form/error-summary/ErrorSummary.js +2 -2
  21. package/cjs/form/radio/Radio.js +3 -2
  22. package/cjs/form/radio/RadioGroup.js +2 -2
  23. package/cjs/form/search/Search.js +2 -1
  24. package/cjs/form/search/SearchButton.js +2 -4
  25. package/cjs/form/useFormField.js +2 -2
  26. package/cjs/guide-panel/Illustration.js +2 -2
  27. package/cjs/help-text/HelpText.js +5 -7
  28. package/cjs/help-text/HelpTextIcon.js +2 -2
  29. package/cjs/list/List.js +2 -2
  30. package/cjs/loader/Loader.js +2 -1
  31. package/cjs/modal/Modal.js +21 -18
  32. package/cjs/popover/Popover.js +6 -5
  33. package/cjs/read-more/ReadMore.js +2 -4
  34. package/cjs/stepper/Step.js +6 -6
  35. package/cjs/table/DataCell.js +2 -2
  36. package/cjs/table/ExpandableRow.js +9 -9
  37. package/cjs/table/HeaderCell.js +2 -1
  38. package/cjs/tabs/TabList.js +2 -1
  39. package/cjs/tag/Tag.js +4 -2
  40. package/cjs/timeline/Pin.js +2 -2
  41. package/cjs/timeline/period/ClickablePeriod.js +2 -2
  42. package/cjs/toggle-group/ToggleGroup.js +2 -2
  43. package/cjs/tooltip/Tooltip.js +6 -5
  44. package/cjs/util/Slot.js +2 -5
  45. package/cjs/util/TextareaAutoSize.js +7 -5
  46. package/cjs/util/composeEventHandlers.js +17 -0
  47. package/cjs/util/hooks/index.js +19 -0
  48. package/cjs/util/hooks/package.json +6 -0
  49. package/cjs/util/hooks/useClientLayoutEffect.js +7 -0
  50. package/cjs/util/hooks/useMergeRefs.js +37 -0
  51. package/cjs/util/{usePrevious.js → hooks/usePrevious.js} +2 -1
  52. package/cjs/util/index.js +7 -7
  53. package/cjs/util/types/index.js +2 -0
  54. package/cjs/util/types/package.json +6 -0
  55. package/esm/accordion/AccordionHeader.js +2 -4
  56. package/esm/accordion/AccordionHeader.js.map +1 -1
  57. package/esm/button/Button.d.ts +1 -1
  58. package/esm/button/Button.js +12 -13
  59. package/esm/button/Button.js.map +1 -1
  60. package/esm/chips/Chips.d.ts +1 -1
  61. package/esm/chips/Removable.js +3 -6
  62. package/esm/chips/Removable.js.map +1 -1
  63. package/esm/chips/Toggle.d.ts +1 -1
  64. package/esm/copybutton/CopyButton.js +4 -5
  65. package/esm/copybutton/CopyButton.js.map +1 -1
  66. package/esm/date/datepicker/DatePicker.js +5 -3
  67. package/esm/date/datepicker/DatePicker.js.map +1 -1
  68. package/esm/date/datepicker/parts/WeekRow.js +1 -1
  69. package/esm/date/datepicker/parts/WeekRow.js.map +1 -1
  70. package/esm/date/monthpicker/MonthPicker.js +4 -3
  71. package/esm/date/monthpicker/MonthPicker.js.map +1 -1
  72. package/esm/date/parts/DateWrapper.js +1 -1
  73. package/esm/date/parts/DateWrapper.js.map +1 -1
  74. package/esm/dropdown/Menu/GroupedList/GroupedItem.d.ts +1 -1
  75. package/esm/dropdown/Menu/GroupedList/GroupedItem.js +3 -6
  76. package/esm/dropdown/Menu/GroupedList/GroupedItem.js.map +1 -1
  77. package/esm/dropdown/Menu/GroupedList/index.d.ts +1 -1
  78. package/esm/dropdown/Menu/List/Item.d.ts +1 -1
  79. package/esm/dropdown/Menu/List/Item.js +3 -6
  80. package/esm/dropdown/Menu/List/Item.js.map +1 -1
  81. package/esm/dropdown/Menu/List/index.d.ts +1 -1
  82. package/esm/dropdown/Toggle.js +6 -5
  83. package/esm/dropdown/Toggle.js.map +1 -1
  84. package/esm/expansion-card/ExpansionCard.d.ts +1 -1
  85. package/esm/expansion-card/ExpansionCardTitle.d.ts +1 -1
  86. package/esm/form/ConfirmationPanel.js +1 -1
  87. package/esm/form/ConfirmationPanel.js.map +1 -1
  88. package/esm/form/Textarea.js +2 -1
  89. package/esm/form/Textarea.js.map +1 -1
  90. package/esm/form/checkbox/Checkbox.js +2 -1
  91. package/esm/form/checkbox/Checkbox.js.map +1 -1
  92. package/esm/form/combobox/Combobox.js +3 -3
  93. package/esm/form/combobox/Combobox.js.map +1 -1
  94. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +1 -2
  95. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  96. package/esm/form/combobox/Input/inputContext.js +1 -1
  97. package/esm/form/combobox/Input/inputContext.js.map +1 -1
  98. package/esm/form/combobox/SelectedOptions/selectedOptionsContext.js +1 -1
  99. package/esm/form/combobox/SelectedOptions/selectedOptionsContext.js.map +1 -1
  100. package/esm/form/error-summary/ErrorSummary.js +1 -1
  101. package/esm/form/error-summary/ErrorSummary.js.map +1 -1
  102. package/esm/form/error-summary/ErrorSummaryItem.d.ts +1 -1
  103. package/esm/form/radio/Radio.js +2 -1
  104. package/esm/form/radio/Radio.js.map +1 -1
  105. package/esm/form/radio/RadioGroup.js +1 -1
  106. package/esm/form/radio/RadioGroup.js.map +1 -1
  107. package/esm/form/search/Search.js +4 -3
  108. package/esm/form/search/Search.js.map +1 -1
  109. package/esm/form/search/SearchButton.js +2 -4
  110. package/esm/form/search/SearchButton.js.map +1 -1
  111. package/esm/form/useFormField.js +1 -1
  112. package/esm/form/useFormField.js.map +1 -1
  113. package/esm/guide-panel/Illustration.js +1 -1
  114. package/esm/guide-panel/Illustration.js.map +1 -1
  115. package/esm/help-text/HelpText.d.ts +0 -5
  116. package/esm/help-text/HelpText.js +6 -8
  117. package/esm/help-text/HelpText.js.map +1 -1
  118. package/esm/help-text/HelpTextIcon.js +1 -1
  119. package/esm/internal-header/InternalHeader.d.ts +1 -1
  120. package/esm/internal-header/InternalHeaderButton.d.ts +1 -1
  121. package/esm/internal-header/InternalHeaderTitle.d.ts +1 -1
  122. package/esm/internal-header/InternalHeaderUserButton.d.ts +1 -1
  123. package/esm/layout/box/Box.d.ts +1 -1
  124. package/esm/layout/page/parts/PageBlock.d.ts +1 -1
  125. package/esm/layout/stack/HStack.d.ts +1 -1
  126. package/esm/layout/stack/Stack.d.ts +1 -1
  127. package/esm/layout/stack/VStack.d.ts +1 -1
  128. package/esm/link/Link.d.ts +1 -1
  129. package/esm/link-panel/LinkPanel.d.ts +1 -1
  130. package/esm/link-panel/LinkPanelTitle.d.ts +1 -1
  131. package/esm/list/List.js +1 -1
  132. package/esm/loader/Loader.js +2 -1
  133. package/esm/loader/Loader.js.map +1 -1
  134. package/esm/modal/Modal.js +21 -18
  135. package/esm/modal/Modal.js.map +1 -1
  136. package/esm/modal/types.d.ts +1 -1
  137. package/esm/pagination/PaginationItem.d.ts +1 -1
  138. package/esm/panel/Panel.d.ts +1 -1
  139. package/esm/popover/Popover.d.ts +1 -1
  140. package/esm/popover/Popover.js +4 -3
  141. package/esm/popover/Popover.js.map +1 -1
  142. package/esm/read-more/ReadMore.js +2 -4
  143. package/esm/read-more/ReadMore.js.map +1 -1
  144. package/esm/stepper/Step.d.ts +1 -1
  145. package/esm/stepper/Step.js +6 -6
  146. package/esm/stepper/Step.js.map +1 -1
  147. package/esm/table/AnimateHeight.js.map +1 -0
  148. package/esm/table/DataCell.d.ts +4 -0
  149. package/esm/table/DataCell.js +2 -2
  150. package/esm/table/DataCell.js.map +1 -1
  151. package/esm/table/ExpandableRow.js +8 -8
  152. package/esm/table/ExpandableRow.js.map +1 -1
  153. package/esm/table/HeaderCell.d.ts +4 -0
  154. package/esm/table/HeaderCell.js +2 -1
  155. package/esm/table/HeaderCell.js.map +1 -1
  156. package/esm/tabs/Tab.d.ts +1 -1
  157. package/esm/tabs/TabList.js +3 -2
  158. package/esm/tabs/TabList.js.map +1 -1
  159. package/esm/tabs/Tabs.d.ts +1 -1
  160. package/esm/tag/Tag.d.ts +4 -0
  161. package/esm/tag/Tag.js +4 -2
  162. package/esm/tag/Tag.js.map +1 -1
  163. package/esm/timeline/Pin.js +3 -3
  164. package/esm/timeline/Pin.js.map +1 -1
  165. package/esm/timeline/period/ClickablePeriod.js +3 -3
  166. package/esm/timeline/period/ClickablePeriod.js.map +1 -1
  167. package/esm/toggle-group/ToggleGroup.js +1 -1
  168. package/esm/toggle-group/ToggleGroup.js.map +1 -1
  169. package/esm/tooltip/Tooltip.js +6 -5
  170. package/esm/tooltip/Tooltip.js.map +1 -1
  171. package/esm/typography/BodyLong.d.ts +1 -1
  172. package/esm/typography/BodyShort.d.ts +1 -1
  173. package/esm/typography/Detail.d.ts +1 -1
  174. package/esm/typography/ErrorMessage.d.ts +1 -1
  175. package/esm/typography/Heading.d.ts +1 -1
  176. package/esm/typography/Ingress.d.ts +1 -1
  177. package/esm/typography/Label.d.ts +1 -1
  178. package/esm/util/Slot.js +1 -1
  179. package/esm/util/Slot.js.map +1 -1
  180. package/esm/util/TextareaAutoSize.js +5 -3
  181. package/esm/util/TextareaAutoSize.js.map +1 -1
  182. package/esm/util/composeEventHandlers.d.ts +8 -0
  183. package/esm/util/composeEventHandlers.js +14 -0
  184. package/esm/util/composeEventHandlers.js.map +1 -0
  185. package/esm/util/hooks/index.d.ts +8 -0
  186. package/esm/util/hooks/index.js +9 -0
  187. package/esm/util/hooks/index.js.map +1 -0
  188. package/esm/util/hooks/useClientLayoutEffect.js +5 -0
  189. package/esm/util/hooks/useClientLayoutEffect.js.map +1 -0
  190. package/esm/util/{useEventListener.d.ts → hooks/useEventListener.d.ts} +1 -1
  191. package/esm/util/hooks/useEventListener.js.map +1 -0
  192. package/esm/util/hooks/useId.js.map +1 -0
  193. package/esm/util/hooks/useMedia.js.map +1 -0
  194. package/esm/util/hooks/useMergeRefs.d.ts +15 -0
  195. package/esm/util/hooks/useMergeRefs.js +30 -0
  196. package/esm/util/hooks/useMergeRefs.js.map +1 -0
  197. package/esm/util/hooks/usePrevious.d.ts +1 -0
  198. package/esm/util/{usePrevious.js → hooks/usePrevious.js} +1 -2
  199. package/esm/util/hooks/usePrevious.js.map +1 -0
  200. package/esm/util/index.d.ts +4 -5
  201. package/esm/util/index.js +3 -5
  202. package/esm/util/index.js.map +1 -1
  203. package/esm/util/types/OverridableComponent.js.map +1 -0
  204. package/esm/util/types/index.d.ts +1 -0
  205. package/esm/util/types/index.js +2 -0
  206. package/esm/util/types/index.js.map +1 -0
  207. package/package.json +3 -3
  208. package/src/accordion/AccordionHeader.tsx +2 -4
  209. package/src/accordion/AccordionItem.tsx +2 -2
  210. package/src/alert/alert.stories.tsx +1 -2
  211. package/src/button/Button.tsx +14 -19
  212. package/src/chips/Chips.tsx +1 -1
  213. package/src/chips/Removable.tsx +3 -4
  214. package/src/chips/Toggle.tsx +1 -1
  215. package/src/copybutton/CopyButton.tsx +4 -5
  216. package/src/copybutton/copy-button.stories.tsx +1 -1
  217. package/src/date/datepicker/DatePicker.tsx +5 -3
  218. package/src/date/datepicker/parts/WeekRow.tsx +1 -1
  219. package/src/date/monthpicker/MonthPicker.tsx +4 -3
  220. package/src/date/parts/DateWrapper.tsx +1 -1
  221. package/src/dropdown/Menu/GroupedList/GroupedItem.tsx +23 -23
  222. package/src/dropdown/Menu/GroupedList/index.tsx +1 -1
  223. package/src/dropdown/Menu/List/Item.tsx +23 -23
  224. package/src/dropdown/Menu/List/index.tsx +1 -1
  225. package/src/dropdown/Toggle.tsx +10 -6
  226. package/src/expansion-card/ExpansionCard.tsx +1 -1
  227. package/src/expansion-card/ExpansionCardTitle.tsx +1 -1
  228. package/src/form/ConfirmationPanel.tsx +1 -1
  229. package/src/form/Textarea.tsx +2 -1
  230. package/src/form/checkbox/Checkbox.tsx +2 -1
  231. package/src/form/combobox/Combobox.tsx +3 -6
  232. package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +1 -2
  233. package/src/form/combobox/Input/inputContext.tsx +1 -1
  234. package/src/form/combobox/SelectedOptions/selectedOptionsContext.tsx +1 -1
  235. package/src/form/combobox/combobox.stories.tsx +10 -11
  236. package/src/form/error-summary/ErrorSummary.tsx +1 -1
  237. package/src/form/error-summary/ErrorSummaryItem.tsx +1 -1
  238. package/src/form/radio/Radio.tsx +2 -1
  239. package/src/form/radio/RadioGroup.tsx +1 -1
  240. package/src/form/search/Search.tsx +3 -3
  241. package/src/form/search/SearchButton.tsx +2 -4
  242. package/src/form/useFormField.ts +1 -1
  243. package/src/guide-panel/Illustration.tsx +1 -1
  244. package/src/help-text/HelpText.tsx +7 -25
  245. package/src/help-text/HelpTextIcon.tsx +1 -1
  246. package/src/help-text/help-text.stories.tsx +58 -68
  247. package/src/internal-header/InternalHeader.tsx +1 -1
  248. package/src/internal-header/InternalHeaderButton.tsx +1 -1
  249. package/src/internal-header/InternalHeaderTitle.tsx +1 -1
  250. package/src/internal-header/InternalHeaderUserButton.tsx +1 -1
  251. package/src/layout/box/Box.tsx +1 -1
  252. package/src/layout/page/parts/PageBlock.tsx +1 -1
  253. package/src/layout/stack/HStack.tsx +1 -1
  254. package/src/layout/stack/Stack.tsx +1 -1
  255. package/src/layout/stack/VStack.tsx +1 -1
  256. package/src/link/Link.tsx +1 -1
  257. package/src/link/{link.stories.tsx → stories/link.stories.tsx} +2 -2
  258. package/src/link-panel/LinkPanel.tsx +1 -1
  259. package/src/link-panel/LinkPanelTitle.tsx +1 -1
  260. package/src/list/List.tsx +1 -1
  261. package/src/loader/Loader.tsx +2 -1
  262. package/src/modal/Modal.tsx +30 -30
  263. package/src/modal/types.ts +1 -1
  264. package/src/pagination/PaginationItem.tsx +1 -1
  265. package/src/panel/Panel.tsx +1 -1
  266. package/src/popover/Popover.tsx +4 -7
  267. package/src/read-more/ReadMore.tsx +2 -4
  268. package/src/stepper/Step.tsx +8 -5
  269. package/src/table/DataCell.tsx +6 -1
  270. package/src/table/ExpandableRow.tsx +11 -6
  271. package/src/table/HeaderCell.tsx +6 -1
  272. package/src/table/stories/table.stories.tsx +43 -29
  273. package/src/table/stories/tests/table.stories.tsx +2 -3
  274. package/src/tabs/Tab.tsx +1 -1
  275. package/src/tabs/TabList.tsx +4 -2
  276. package/src/tabs/Tabs.tsx +1 -1
  277. package/src/tag/Tag.tsx +9 -2
  278. package/src/tag/tag.stories.tsx +27 -1
  279. package/src/timeline/Pin.tsx +3 -6
  280. package/src/timeline/period/ClickablePeriod.tsx +3 -6
  281. package/src/toggle-group/ToggleGroup.tsx +1 -1
  282. package/src/tooltip/Tooltip.tsx +11 -22
  283. package/src/typography/BodyLong.tsx +1 -1
  284. package/src/typography/BodyShort.tsx +1 -1
  285. package/src/typography/Detail.tsx +1 -1
  286. package/src/typography/ErrorMessage.tsx +1 -1
  287. package/src/typography/Heading.tsx +1 -1
  288. package/src/typography/Ingress.tsx +1 -1
  289. package/src/typography/Label.tsx +1 -1
  290. package/src/typography/stories/bodylong.stories.tsx +1 -2
  291. package/src/typography/stories/bodyshort.stories.tsx +1 -2
  292. package/src/typography/stories/detail.stories.tsx +1 -2
  293. package/src/typography/stories/error-message.stories.tsx +1 -2
  294. package/src/typography/stories/heading.stories.tsx +1 -2
  295. package/src/typography/stories/ingress.stories.tsx +1 -2
  296. package/src/typography/stories/label.stories.tsx +1 -2
  297. package/src/util/Slot.tsx +1 -1
  298. package/src/util/TextareaAutoSize.tsx +7 -3
  299. package/src/util/__tests__/useMedia.test.tsx +1 -1
  300. package/src/util/composeEventHandlers.ts +19 -0
  301. package/src/util/hooks/index.ts +8 -0
  302. package/src/util/hooks/useCallbackRef.ts +1 -1
  303. package/src/util/hooks/useClientLayoutEffect.ts +5 -0
  304. package/src/util/hooks/useControllableState.ts +1 -1
  305. package/src/util/hooks/useMergeRefs.ts +32 -0
  306. package/src/util/{usePrevious.ts → hooks/usePrevious.ts} +1 -4
  307. package/src/util/index.ts +4 -5
  308. package/src/util/types/index.ts +1 -0
  309. package/cjs/util/RandomIcon.js +0 -38
  310. package/cjs/util/mergeRefs.js +0 -16
  311. package/cjs/util/useClientLayoutEffect.js +0 -10
  312. package/esm/util/AnimateHeight.js.map +0 -1
  313. package/esm/util/OverridableComponent.js.map +0 -1
  314. package/esm/util/RandomIcon.d.ts +0 -2
  315. package/esm/util/RandomIcon.js +0 -9
  316. package/esm/util/RandomIcon.js.map +0 -1
  317. package/esm/util/mergeRefs.d.ts +0 -2
  318. package/esm/util/mergeRefs.js +0 -14
  319. package/esm/util/mergeRefs.js.map +0 -1
  320. package/esm/util/useClientLayoutEffect.js +0 -8
  321. package/esm/util/useClientLayoutEffect.js.map +0 -1
  322. package/esm/util/useEventListener.js.map +0 -1
  323. package/esm/util/useId.js.map +0 -1
  324. package/esm/util/useMedia.js.map +0 -1
  325. package/esm/util/usePrevious.d.ts +0 -2
  326. package/esm/util/usePrevious.js.map +0 -1
  327. package/src/util/mergeRefs.tsx +0 -16
  328. package/src/util/useClientLayoutEffect.ts +0 -11
  329. /package/cjs/{util → table}/AnimateHeight.js +0 -0
  330. /package/cjs/util/{useEventListener.js → hooks/useEventListener.js} +0 -0
  331. /package/cjs/util/{useId.js → hooks/useId.js} +0 -0
  332. /package/cjs/util/{useMedia.js → hooks/useMedia.js} +0 -0
  333. /package/cjs/util/{OverridableComponent.js → types/OverridableComponent.js} +0 -0
  334. /package/esm/{util → table}/AnimateHeight.d.ts +0 -0
  335. /package/esm/{util → table}/AnimateHeight.js +0 -0
  336. /package/esm/util/{useClientLayoutEffect.d.ts → hooks/useClientLayoutEffect.d.ts} +0 -0
  337. /package/esm/util/{useEventListener.js → hooks/useEventListener.js} +0 -0
  338. /package/esm/util/{useId.d.ts → hooks/useId.d.ts} +0 -0
  339. /package/esm/util/{useId.js → hooks/useId.js} +0 -0
  340. /package/esm/util/{useMedia.d.ts → hooks/useMedia.d.ts} +0 -0
  341. /package/esm/util/{useMedia.js → hooks/useMedia.js} +0 -0
  342. /package/esm/util/{OverridableComponent.d.ts → types/OverridableComponent.d.ts} +0 -0
  343. /package/esm/util/{OverridableComponent.js → types/OverridableComponent.js} +0 -0
  344. /package/src/{util → link/stories}/RandomIcon.tsx +0 -0
  345. /package/src/{util → table}/AnimateHeight.tsx +0 -0
  346. /package/src/util/{useEventListener.ts → hooks/useEventListener.ts} +0 -0
  347. /package/src/util/{useId.ts → hooks/useId.ts} +0 -0
  348. /package/src/util/{useMedia.ts → hooks/useMedia.ts} +0 -0
  349. /package/src/util/{OverridableComponent.ts → types/OverridableComponent.ts} +0 -0
@@ -40,15 +40,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.ListItem = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
+ const composeEventHandlers_1 = require("../../../util/composeEventHandlers");
43
44
  const context_1 = require("../../context");
44
45
  exports.ListItem = (0, react_1.forwardRef)((_a, ref) => {
45
- var { as: Component = "button", className } = _a, rest = __rest(_a, ["as", "className"]);
46
+ var { as: Component = "button", className, onClick } = _a, rest = __rest(_a, ["as", "className", "onClick"]);
46
47
  const context = (0, react_1.useContext)(context_1.DropdownContext);
47
48
  return (react_1.default.createElement("li", { className: "navds-dropdown__list-item" },
48
- react_1.default.createElement(Component, Object.assign({}, rest, { value: rest.children, onClick: (event) => {
49
- var _a, _b;
50
- (_a = context === null || context === void 0 ? void 0 : context.onSelect) === null || _a === void 0 ? void 0 : _a.call(context, event);
51
- (_b = rest === null || rest === void 0 ? void 0 : rest.onClick) === null || _b === void 0 ? void 0 : _b.call(rest, event);
52
- }, ref: ref, className: (0, clsx_1.default)("navds-dropdown__item", "navds-body-short", "navds-body-short--small", className) }))));
49
+ react_1.default.createElement(Component, Object.assign({}, rest, { value: rest.children, onClick: (0, composeEventHandlers_1.composeEventHandlers)(onClick, context === null || context === void 0 ? void 0 : context.onSelect), ref: ref, className: (0, clsx_1.default)("navds-dropdown__item", "navds-body-short", "navds-body-short--small", className) }))));
53
50
  });
54
51
  exports.default = exports.ListItem;
@@ -40,6 +40,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.Toggle = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
+ const composeEventHandlers_1 = require("../util/composeEventHandlers");
43
44
  const context_1 = require("./context");
44
45
  exports.Toggle = (0, react_1.forwardRef)((_a, ref) => {
45
46
  var { className, onClick } = _a, rest = __rest(_a, ["className", "onClick"]);
@@ -49,6 +50,10 @@ exports.Toggle = (0, react_1.forwardRef)((_a, ref) => {
49
50
  return null;
50
51
  }
51
52
  const { setAnchorEl, handleToggle, isOpen } = context;
53
+ const handleClick = (e) => {
54
+ setAnchorEl(e.currentTarget);
55
+ handleToggle(!isOpen);
56
+ };
52
57
  return (react_1.default.createElement("button", Object.assign({}, rest, { ref: (el) => {
53
58
  setAnchorEl(el);
54
59
  if (typeof ref === "function") {
@@ -57,10 +62,6 @@ exports.Toggle = (0, react_1.forwardRef)((_a, ref) => {
57
62
  else if (ref != null) {
58
63
  ref.current = el;
59
64
  }
60
- }, onClick: (e) => {
61
- setAnchorEl(e.currentTarget);
62
- handleToggle(!isOpen);
63
- onClick && onClick(e);
64
- }, "aria-expanded": isOpen, className: (0, clsx_1.default)("navds-dropdown__toggle", className) })));
65
+ }, onClick: (0, composeEventHandlers_1.composeEventHandlers)(onClick, handleClick), "aria-expanded": isOpen, className: (0, clsx_1.default)("navds-dropdown__toggle", className) })));
65
66
  });
66
67
  exports.default = exports.Toggle;
@@ -41,7 +41,7 @@ exports.ConfirmationPanel = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
43
  const typography_1 = require("../typography");
44
- const util_1 = require("../util");
44
+ const hooks_1 = require("../util/hooks");
45
45
  const checkbox_1 = require("./checkbox");
46
46
  const useFormField_1 = require("./useFormField");
47
47
  /**
@@ -65,7 +65,7 @@ const useFormField_1 = require("./useFormField");
65
65
  exports.ConfirmationPanel = (0, react_1.forwardRef)((_a, ref) => {
66
66
  var { className, children, label } = _a, props = __rest(_a, ["className", "children", "label"]);
67
67
  const { errorId, showErrorMsg, hasError, size, inputProps } = (0, useFormField_1.useFormField)(props, "confirmation-panel");
68
- const id = (0, util_1.useId)();
68
+ const id = (0, hooks_1.useId)();
69
69
  return (react_1.default.createElement("div", { className: (0, clsx_1.default)("navds-confirmation-panel", "navds-form-field", className, {
70
70
  "navds-confirmation-panel--small": size === "small",
71
71
  "navds-confirmation-panel--error": hasError,
@@ -43,6 +43,7 @@ const react_1 = __importStar(require("react"));
43
43
  const typography_1 = require("../typography");
44
44
  const util_1 = require("../util");
45
45
  const TextareaAutoSize_1 = __importDefault(require("../util/TextareaAutoSize"));
46
+ const hooks_1 = require("../util/hooks");
46
47
  const ReadOnlyIcon_1 = require("./ReadOnlyIcon");
47
48
  const TextareaCounter_1 = __importDefault(require("./TextareaCounter"));
48
49
  const useFormField_1 = require("./useFormField");
@@ -61,7 +62,7 @@ exports.Textarea = (0, react_1.forwardRef)((props, ref) => {
61
62
  var _a, _b, _c;
62
63
  const { inputProps, errorId, showErrorMsg, hasError, size, inputDescriptionId, } = (0, useFormField_1.useFormField)(props, "textarea");
63
64
  const { label, className, description, maxLength, hideLabel = false, resize, UNSAFE_autoScrollbar, i18n, readOnly } = props, rest = __rest(props, ["label", "className", "description", "maxLength", "hideLabel", "resize", "UNSAFE_autoScrollbar", "i18n", "readOnly"]);
64
- const maxLengthId = (0, util_1.useId)();
65
+ const maxLengthId = (0, hooks_1.useId)();
65
66
  const hasMaxLength = maxLength !== undefined && maxLength > 0;
66
67
  const [controlledValue, setControlledValue] = (0, react_1.useState)((_a = props === null || props === void 0 ? void 0 : props.defaultValue) !== null && _a !== void 0 ? _a : "");
67
68
  const getMinRows = () => {
@@ -31,12 +31,13 @@ const clsx_1 = __importDefault(require("clsx"));
31
31
  const react_1 = __importStar(require("react"));
32
32
  const typography_1 = require("../../typography");
33
33
  const util_1 = require("../../util");
34
+ const hooks_1 = require("../../util/hooks");
34
35
  const ReadOnlyIcon_1 = require("../ReadOnlyIcon");
35
36
  const useCheckbox_1 = __importDefault(require("./useCheckbox"));
36
37
  exports.Checkbox = (0, react_1.forwardRef)((props, ref) => {
37
38
  const { inputProps, hasError, size, readOnly, nested } = (0, useCheckbox_1.default)(props);
38
- const labelId = (0, util_1.useId)();
39
- const descriptionId = (0, util_1.useId)();
39
+ const labelId = (0, hooks_1.useId)();
40
+ const descriptionId = (0, hooks_1.useId)();
40
41
  return (react_1.default.createElement("div", { className: (0, clsx_1.default)(props.className, "navds-checkbox", `navds-checkbox--${size}`, {
41
42
  "navds-checkbox--error": hasError,
42
43
  "navds-checkbox--disabled": inputProps.disabled,
@@ -41,7 +41,7 @@ exports.Combobox = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
43
  const typography_1 = require("../../typography");
44
- const util_1 = require("../../util");
44
+ const useMergeRefs_1 = require("../../util/hooks/useMergeRefs");
45
45
  const ClearButton_1 = __importDefault(require("./ClearButton"));
46
46
  const ComboboxWrapper_1 = __importDefault(require("./ComboboxWrapper"));
47
47
  const FilteredOptions_1 = __importDefault(require("./FilteredOptions/FilteredOptions"));
@@ -57,7 +57,7 @@ exports.Combobox = (0, react_1.forwardRef)((props, ref) => {
57
57
  const { activeDecendantId, toggleIsListOpen } = (0, filteredOptionsContext_1.useFilteredOptionsContext)();
58
58
  const { selectedOptions } = (0, selectedOptionsContext_1.useSelectedOptionsContext)();
59
59
  const { clearInput, error, errorId, focusInput, hasError, inputDescriptionId, inputProps, inputRef, value, showErrorMsg, size = "medium", } = (0, inputContext_1.useInputContext)();
60
- const mergedInputRef = (0, react_1.useMemo)(() => (0, util_1.mergeRefs)([inputRef, ref]), [inputRef, ref]);
60
+ const mergedInputRef = (0, useMergeRefs_1.useMergeRefs)(inputRef, ref);
61
61
  return (react_1.default.createElement(ComboboxWrapper_1.default, { className: className, hasError: hasError, inputProps: inputProps, inputSize: size, toggleIsListOpen: toggleIsListOpen, toggleListButtonRef: toggleListButtonRef },
62
62
  react_1.default.createElement(typography_1.Label, { htmlFor: inputProps.id, size: size, className: (0, clsx_1.default)("navds-form-field__label", {
63
63
  "navds-sr-only": hideLabel,
@@ -29,8 +29,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.useFilteredOptionsContext = exports.FilteredOptionsProvider = void 0;
30
30
  const clsx_1 = __importDefault(require("clsx"));
31
31
  const react_1 = __importStar(require("react"));
32
- const util_1 = require("../../../util");
33
- const usePrevious_1 = __importDefault(require("../../../util/usePrevious"));
32
+ const hooks_1 = require("../../../util/hooks");
34
33
  const inputContext_1 = require("../Input/inputContext");
35
34
  const customOptionsContext_1 = require("../customOptionsContext");
36
35
  const filtered_options_util_1 = __importDefault(require("./filtered-options-util"));
@@ -50,14 +49,14 @@ const FilteredOptionsProvider = ({ children, value: props, }) => {
50
49
  const opts = [...customOptions, ...options];
51
50
  return filtered_options_util_1.default.getMatchingValuesFromList(searchTerm, opts);
52
51
  }, [customOptions, externalFilteredOptions, options, searchTerm]);
53
- const previousSearchTerm = (0, usePrevious_1.default)(searchTerm);
52
+ const previousSearchTerm = (0, hooks_1.usePrevious)(searchTerm);
54
53
  const [isMouseLastUsedInputDevice, setIsMouseLastUsedInputDevice] = (0, react_1.useState)(false);
55
54
  const filteredOptionsMap = (0, react_1.useMemo)(() => options.reduce((map, _option) => (Object.assign(Object.assign({}, map), { [filtered_options_util_1.default.getOptionId(id, _option)]: _option })), {
56
55
  [filtered_options_util_1.default.getAddNewOptionId(id)]: allowNewValues
57
56
  ? value
58
57
  : undefined,
59
58
  }), [allowNewValues, id, options, value]);
60
- (0, util_1.useClientLayoutEffect)(() => {
59
+ (0, hooks_1.useClientLayoutEffect)(() => {
61
60
  if (shouldAutocomplete &&
62
61
  filtered_options_util_1.default.normalizeText(searchTerm) !== "" &&
63
62
  ((previousSearchTerm === null || previousSearchTerm === void 0 ? void 0 : previousSearchTerm.length) || 0) < searchTerm.length &&
@@ -25,7 +25,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.useInputContext = exports.InputContextProvider = void 0;
27
27
  const react_1 = __importStar(require("react"));
28
- const util_1 = require("../../../util");
28
+ const hooks_1 = require("../../../util/hooks");
29
29
  const useFormField_1 = require("../../useFormField");
30
30
  const InputContext = (0, react_1.createContext)({});
31
31
  const InputContextProvider = ({ children, value: props }) => {
@@ -61,7 +61,7 @@ const InputContextProvider = ({ children, value: props }) => {
61
61
  var _a, _b;
62
62
  (_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus) === null || _b === void 0 ? void 0 : _b.call(_a);
63
63
  }, []);
64
- (0, util_1.useClientLayoutEffect)(() => {
64
+ (0, hooks_1.useClientLayoutEffect)(() => {
65
65
  var _a, _b;
66
66
  if (shouldAutocomplete && inputRef && value !== searchTerm) {
67
67
  (_b = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.setSelectionRange) === null || _b === void 0 ? void 0 : _b.call(_a, searchTerm.length, value.length);
@@ -22,13 +22,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
22
22
  __setModuleDefault(result, mod);
23
23
  return result;
24
24
  };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
26
  exports.useSelectedOptionsContext = exports.SelectedOptionsProvider = void 0;
30
27
  const react_1 = __importStar(require("react"));
31
- const usePrevious_1 = __importDefault(require("../../../util/usePrevious"));
28
+ const hooks_1 = require("../../../util/hooks");
32
29
  const inputContext_1 = require("../Input/inputContext");
33
30
  const customOptionsContext_1 = require("../customOptionsContext");
34
31
  const SelectedOptionsContext = (0, react_1.createContext)({});
@@ -92,7 +89,7 @@ const SelectedOptionsProvider = ({ children, value, }) => {
92
89
  removeSelectedOption,
93
90
  selectedOptions,
94
91
  ]);
95
- const prevSelectedOptions = (0, usePrevious_1.default)(selectedOptions);
92
+ const prevSelectedOptions = (0, hooks_1.usePrevious)(selectedOptions);
96
93
  const selectedOptionsState = {
97
94
  addSelectedOption,
98
95
  isMultiSelect,
@@ -41,7 +41,7 @@ exports.ErrorSummary = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
43
  const typography_1 = require("../../typography");
44
- const util_1 = require("../../util");
44
+ const hooks_1 = require("../../util/hooks");
45
45
  const ErrorSummaryItem_1 = __importDefault(require("./ErrorSummaryItem"));
46
46
  /**
47
47
  * A component that displays a summary of errors.
@@ -63,7 +63,7 @@ const ErrorSummaryItem_1 = __importDefault(require("./ErrorSummaryItem"));
63
63
  */
64
64
  exports.ErrorSummary = (0, react_1.forwardRef)((_a, ref) => {
65
65
  var { children, className, size = "medium", headingTag = "h2", heading } = _a, rest = __rest(_a, ["children", "className", "size", "headingTag", "heading"]);
66
- const headingId = (0, util_1.useId)();
66
+ const headingId = (0, hooks_1.useId)();
67
67
  return (react_1.default.createElement("section", Object.assign({ ref: ref }, rest, { className: (0, clsx_1.default)(className, "navds-error-summary", `navds-error-summary--${size}`), tabIndex: -1, "aria-live": "polite", "aria-relevant": "all", "aria-labelledby": headingId }),
68
68
  react_1.default.createElement(typography_1.Heading, { className: "navds-error-summary__heading", as: headingTag, size: "small", id: headingId }, heading),
69
69
  react_1.default.createElement(typography_1.BodyShort, { as: "ul", size: size, className: "navds-error-summary__list" }, react_1.default.Children.map(children, (child) => {
@@ -31,11 +31,12 @@ const clsx_1 = __importDefault(require("clsx"));
31
31
  const react_1 = __importStar(require("react"));
32
32
  const typography_1 = require("../../typography");
33
33
  const util_1 = require("../../util");
34
+ const hooks_1 = require("../../util/hooks");
34
35
  const useRadio_1 = require("./useRadio");
35
36
  exports.Radio = (0, react_1.forwardRef)((props, ref) => {
36
37
  const { inputProps, size, hasError, readOnly } = (0, useRadio_1.useRadio)(props);
37
- const labelId = (0, util_1.useId)();
38
- const descriptionId = (0, util_1.useId)();
38
+ const labelId = (0, hooks_1.useId)();
39
+ const descriptionId = (0, hooks_1.useId)();
39
40
  return (react_1.default.createElement("div", { className: (0, clsx_1.default)(props.className, "navds-radio", `navds-radio--${size}`, {
40
41
  "navds-radio--error": hasError,
41
42
  "navds-radio--disabled": inputProps.disabled,
@@ -40,7 +40,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.RadioGroup = exports.RadioGroupContext = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
- const util_1 = require("../../util");
43
+ const hooks_1 = require("../../util/hooks");
44
44
  const Fieldset_1 = require("../Fieldset");
45
45
  exports.RadioGroupContext = react_1.default.createContext(null);
46
46
  /**
@@ -57,7 +57,7 @@ exports.RadioGroup = (0, react_1.forwardRef)((_a, ref) => {
57
57
  var _b, _c;
58
58
  var { children, className, name, defaultValue, value, onChange = () => { }, required, readOnly } = _a, rest = __rest(_a, ["children", "className", "name", "defaultValue", "value", "onChange", "required", "readOnly"]);
59
59
  const fieldset = (0, react_1.useContext)(Fieldset_1.FieldsetContext);
60
- const nameId = (0, util_1.useId)();
60
+ const nameId = (0, hooks_1.useId)();
61
61
  return (react_1.default.createElement(Fieldset_1.Fieldset, Object.assign({}, rest, { readOnly: readOnly, ref: ref, className: (0, clsx_1.default)(className, "navds-radio-group", `navds-radio-group--${(_c = (_b = rest.size) !== null && _b !== void 0 ? _b : fieldset === null || fieldset === void 0 ? void 0 : fieldset.size) !== null && _c !== void 0 ? _c : "medium"}`), nativeReadOnly: false }),
62
62
  react_1.default.createElement(exports.RadioGroupContext.Provider, { value: {
63
63
  name: name !== null && name !== void 0 ? name : `radioGroupName-${nameId}`,
@@ -43,6 +43,7 @@ const react_1 = __importStar(require("react"));
43
43
  const aksel_icons_1 = require("@navikt/aksel-icons");
44
44
  const typography_1 = require("../../typography");
45
45
  const util_1 = require("../../util");
46
+ const useMergeRefs_1 = require("../../util/hooks/useMergeRefs");
46
47
  const useFormField_1 = require("../useFormField");
47
48
  const SearchButton_1 = __importDefault(require("./SearchButton"));
48
49
  const context_1 = require("./context");
@@ -63,7 +64,7 @@ exports.Search = (0, react_1.forwardRef)((props, ref) => {
63
64
  const { inputProps, size = "medium", inputDescriptionId, errorId, showErrorMsg, hasError, } = (0, useFormField_1.useFormField)(props, "searchfield");
64
65
  const { className, hideLabel = true, label, description, value, clearButtonLabel, onClear, clearButton = true, children, variant = "primary", defaultValue, onChange, onSearchClick, htmlSize } = props, rest = __rest(props, ["className", "hideLabel", "label", "description", "value", "clearButtonLabel", "onClear", "clearButton", "children", "variant", "defaultValue", "onChange", "onSearchClick", "htmlSize"]);
65
66
  const searchRef = (0, react_1.useRef)(null);
66
- const mergedRef = (0, react_1.useMemo)(() => (0, util_1.mergeRefs)([searchRef, ref]), [ref]);
67
+ const mergedRef = (0, useMergeRefs_1.useMergeRefs)(searchRef, ref);
67
68
  const [internalValue, setInternalValue] = (0, react_1.useState)(defaultValue !== null && defaultValue !== void 0 ? defaultValue : "");
68
69
  const handleChange = (0, react_1.useCallback)((v) => {
69
70
  value === undefined && setInternalValue(v);
@@ -41,6 +41,7 @@ const clsx_1 = __importDefault(require("clsx"));
41
41
  const react_1 = __importStar(require("react"));
42
42
  const aksel_icons_1 = require("@navikt/aksel-icons");
43
43
  const button_1 = require("../../button");
44
+ const composeEventHandlers_1 = require("../../util/composeEventHandlers");
44
45
  const context_1 = require("./context");
45
46
  const SearchButton = (0, react_1.forwardRef)((_a, ref) => {
46
47
  var _b;
@@ -51,9 +52,6 @@ const SearchButton = (0, react_1.forwardRef)((_a, ref) => {
51
52
  return null;
52
53
  }
53
54
  const { size, variant, handleClick } = context;
54
- return (react_1.default.createElement(button_1.Button, Object.assign({ type: "submit" }, rest, { ref: ref, size: size, variant: variant === "secondary" ? "secondary" : "primary", className: (0, clsx_1.default)("navds-search__button-search", className), disabled: (_b = context === null || context === void 0 ? void 0 : context.disabled) !== null && _b !== void 0 ? _b : disabled, onClick: (e) => {
55
- handleClick();
56
- onClick === null || onClick === void 0 ? void 0 : onClick(e);
57
- }, icon: react_1.default.createElement(aksel_icons_1.MagnifyingGlassIcon, Object.assign({}, (children ? { "aria-hidden": true } : { title: "Søk" }))) }), children));
55
+ return (react_1.default.createElement(button_1.Button, Object.assign({ type: "submit" }, rest, { ref: ref, size: size, variant: variant === "secondary" ? "secondary" : "primary", className: (0, clsx_1.default)("navds-search__button-search", className), disabled: (_b = context === null || context === void 0 ? void 0 : context.disabled) !== null && _b !== void 0 ? _b : disabled, onClick: (0, composeEventHandlers_1.composeEventHandlers)(onClick, handleClick), icon: react_1.default.createElement(aksel_icons_1.MagnifyingGlassIcon, Object.assign({}, (children ? { "aria-hidden": true } : { title: "Søk" }))) }), children));
58
56
  });
59
57
  exports.default = SearchButton;
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.useFormField = void 0;
7
7
  const clsx_1 = __importDefault(require("clsx"));
8
8
  const react_1 = require("react");
9
- const util_1 = require("../util");
9
+ const hooks_1 = require("../util/hooks");
10
10
  const context_1 = require("./Fieldset/context");
11
11
  /**
12
12
  * Handles props and their state for various form-fields in context with Fieldset
@@ -15,7 +15,7 @@ const useFormField = (props, prefix) => {
15
15
  var _a, _b, _c;
16
16
  const { size, error, errorId: propErrorId } = props;
17
17
  const fieldset = (0, react_1.useContext)(context_1.FieldsetContext);
18
- const genId = (0, util_1.useId)();
18
+ const genId = (0, hooks_1.useId)();
19
19
  const id = (_a = props.id) !== null && _a !== void 0 ? _a : `${prefix}-${genId}`;
20
20
  const errorId = propErrorId !== null && propErrorId !== void 0 ? propErrorId : `${prefix}-error-${genId}`;
21
21
  const inputDescriptionId = `${prefix}-description-${genId}`;
@@ -16,10 +16,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.DefaultIllustration = void 0;
18
18
  const react_1 = __importDefault(require("react"));
19
- const util_1 = require("../util");
19
+ const hooks_1 = require("../util/hooks");
20
20
  const DefaultIllustration = (_a) => {
21
21
  var { title, titleId: _titleId } = _a, props = __rest(_a, ["title", "titleId"]);
22
- let titleId = (0, util_1.useId)();
22
+ let titleId = (0, hooks_1.useId)();
23
23
  titleId = title ? (_titleId ? _titleId : "title-" + titleId) : undefined;
24
24
  return (react_1.default.createElement("svg", Object.assign({ width: "56", height: "85", viewBox: "0 0 56 85", fill: "none", xmlns: "http://www.w3.org/2000/svg", "aria-label": "NAV veileder illustrasjon", focusable: false, role: "img", "aria-labelledby": titleId }, props),
25
25
  title ? react_1.default.createElement("title", { id: titleId }, title) : null,
@@ -41,7 +41,8 @@ exports.HelpText = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
43
  const popover_1 = require("../popover");
44
- const util_1 = require("../util");
44
+ const composeEventHandlers_1 = require("../util/composeEventHandlers");
45
+ const useMergeRefs_1 = require("../util/hooks/useMergeRefs");
45
46
  const HelpTextIcon_1 = require("./HelpTextIcon");
46
47
  /**
47
48
  * A component that displays a help text button with a popover.
@@ -57,15 +58,12 @@ const HelpTextIcon_1 = require("./HelpTextIcon");
57
58
  * ```
58
59
  */
59
60
  exports.HelpText = (0, react_1.forwardRef)((_a, ref) => {
60
- var { className, children, placement = "top", strategy = "absolute", title = "hjelp", onClick, wrapperClassName } = _a, rest = __rest(_a, ["className", "children", "placement", "strategy", "title", "onClick", "wrapperClassName"]);
61
+ var { className, children, placement, strategy = "absolute", title = "hjelp", onClick, wrapperClassName } = _a, rest = __rest(_a, ["className", "children", "placement", "strategy", "title", "onClick", "wrapperClassName"]);
61
62
  const buttonRef = (0, react_1.useRef)(null);
62
- const mergedRef = (0, react_1.useMemo)(() => (0, util_1.mergeRefs)([buttonRef, ref]), [ref]);
63
+ const mergedRef = (0, useMergeRefs_1.useMergeRefs)(buttonRef, ref);
63
64
  const [open, setOpen] = (0, react_1.useState)(false);
64
65
  return (react_1.default.createElement("div", { className: (0, clsx_1.default)("navds-help-text", wrapperClassName) },
65
- react_1.default.createElement("button", Object.assign({}, rest, { ref: mergedRef, onClick: (e) => {
66
- setOpen((x) => !x);
67
- onClick === null || onClick === void 0 ? void 0 : onClick(e);
68
- }, className: (0, clsx_1.default)(className, "navds-help-text__button"), type: "button", "aria-expanded": open }),
66
+ react_1.default.createElement("button", Object.assign({}, rest, { ref: mergedRef, onClick: (0, composeEventHandlers_1.composeEventHandlers)(onClick, () => setOpen((x) => x)), className: (0, clsx_1.default)(className, "navds-help-text__button"), type: "button", "aria-expanded": open }),
69
67
  react_1.default.createElement(HelpTextIcon_1.HelpTextIcon, { title: title }),
70
68
  react_1.default.createElement(HelpTextIcon_1.HelpTextIcon, { filled: true, title: title })),
71
69
  react_1.default.createElement(popover_1.Popover, { onClose: () => setOpen(false), className: "navds-help-text__popover", open: open, anchorEl: buttonRef.current, placement: placement, strategy: strategy, offset: 12 },
@@ -6,9 +6,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.HelpTextIcon = void 0;
7
7
  const clsx_1 = __importDefault(require("clsx"));
8
8
  const react_1 = __importDefault(require("react"));
9
- const useId_1 = require("../util/useId");
9
+ const hooks_1 = require("../util/hooks");
10
10
  const HelpTextIcon = ({ title, filled = false, }) => {
11
- let titleId = (0, useId_1.useId)();
11
+ let titleId = (0, hooks_1.useId)();
12
12
  titleId = title ? `title-${titleId}` : undefined;
13
13
  return (react_1.default.createElement("svg", { width: "1em", height: "1em", viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", focusable: false, role: "img", "aria-labelledby": titleId, className: (0, clsx_1.default)("navds-help-text__icon", {
14
14
  "navds-help-text__icon--filled": filled,
package/cjs/list/List.js CHANGED
@@ -41,13 +41,13 @@ exports.List = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
43
  const typography_1 = require("../typography");
44
- const useId_1 = require("../util/useId");
44
+ const hooks_1 = require("../util/hooks");
45
45
  const ListItem_1 = require("./ListItem");
46
46
  const context_1 = require("./context");
47
47
  exports.List = (0, react_1.forwardRef)((_a, ref) => {
48
48
  var _b;
49
49
  var { children, className, as: ListTag = "ul", title, description, headingTag = "h3", size } = _a, rest = __rest(_a, ["children", "className", "as", "title", "description", "headingTag", "size"]);
50
- const ariaId = (0, useId_1.useId)();
50
+ const ariaId = (0, hooks_1.useId)();
51
51
  const { isNested, size: _size } = (0, react_1.useContext)(context_1.ListContext);
52
52
  const listSize = (_b = size !== null && size !== void 0 ? size : _size) !== null && _b !== void 0 ? _b : "medium";
53
53
  return (react_1.default.createElement(context_1.ListContext.Provider, { value: {
@@ -41,6 +41,7 @@ exports.Loader = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
43
  const util_1 = require("../util");
44
+ const hooks_1 = require("../util/hooks");
44
45
  /**
45
46
  * A component that displays a loading spinner.
46
47
  *
@@ -54,7 +55,7 @@ const util_1 = require("../util");
54
55
  */
55
56
  exports.Loader = (0, react_1.forwardRef)((_a, ref) => {
56
57
  var { className, size = "medium", title = "venter...", transparent = false, variant = "neutral", id } = _a, rest = __rest(_a, ["className", "size", "title", "transparent", "variant", "id"]);
57
- const internalId = (0, util_1.useId)();
58
+ const internalId = (0, hooks_1.useId)();
58
59
  return (react_1.default.createElement("svg", Object.assign({ "aria-labelledby": id !== null && id !== void 0 ? id : `loader-${internalId}`, ref: ref, className: (0, clsx_1.default)("navds-loader", className, `navds-loader--${size}`, `navds-loader--${variant}`, {
59
60
  "navds-loader--transparent": transparent,
60
61
  }), focusable: "false", viewBox: "0 0 50 50", preserveAspectRatio: "xMidYMid" }, (0, util_1.omit)(rest, ["children"])),
@@ -45,7 +45,9 @@ const react_dom_1 = require("react-dom");
45
45
  const context_1 = require("../date/context");
46
46
  const provider_1 = require("../provider");
47
47
  const typography_1 = require("../typography");
48
- const util_1 = require("../util");
48
+ const composeEventHandlers_1 = require("../util/composeEventHandlers");
49
+ const hooks_1 = require("../util/hooks");
50
+ const useMergeRefs_1 = require("../util/hooks/useMergeRefs");
49
51
  const ModalBody_1 = __importDefault(require("./ModalBody"));
50
52
  const ModalContext_1 = require("./ModalContext");
51
53
  const ModalFooter_1 = __importDefault(require("./ModalFooter"));
@@ -102,8 +104,8 @@ exports.Modal = (0, react_2.forwardRef)((_a, ref) => {
102
104
  var _b, _c;
103
105
  var { header, children, open, onBeforeClose, onCancel, closeOnBackdropClick, width, portal, className, "aria-labelledby": ariaLabelledby, style, onClick } = _a, rest = __rest(_a, ["header", "children", "open", "onBeforeClose", "onCancel", "closeOnBackdropClick", "width", "portal", "className", "aria-labelledby", "style", "onClick"]);
104
106
  const modalRef = (0, react_2.useRef)(null);
105
- const mergedRef = (0, react_2.useMemo)(() => (0, util_1.mergeRefs)([modalRef, ref]), [ref]);
106
- const ariaLabelId = (0, util_1.useId)();
107
+ const mergedRef = (0, useMergeRefs_1.useMergeRefs)(modalRef, ref);
108
+ const ariaLabelId = (0, hooks_1.useId)();
107
109
  const rootElement = (_b = (0, provider_1.useProvider)()) === null || _b === void 0 ? void 0 : _b.rootElement;
108
110
  const portalNode = (0, react_1.useFloatingPortalNode)({ root: rootElement });
109
111
  const dateContext = (0, react_2.useContext)(context_1.DateContext);
@@ -146,28 +148,29 @@ exports.Modal = (0, react_2.forwardRef)((_a, ref) => {
146
148
  [`navds-modal--${width}`]: isWidthPreset,
147
149
  });
148
150
  const mergedStyle = Object.assign(Object.assign({}, style), (!isWidthPreset ? { width } : {}));
149
- const mergedOnCancel = (event) => {
150
- if (onBeforeClose && onBeforeClose() === false) {
151
- event.preventDefault();
151
+ /**
152
+ * @note `closeOnBackdropClick` has issues on polyfill when nesting modals (DatePicker)
153
+ */
154
+ const handleModalClick = (event) => {
155
+ if (closeOnBackdropClick &&
156
+ !dialog_polyfill_1.needPolyfill &&
157
+ event.target === modalRef.current &&
158
+ (!onBeforeClose || onBeforeClose() !== false)) {
159
+ modalRef.current.close();
152
160
  }
153
- else if (onCancel)
154
- onCancel(event);
155
161
  };
156
- const mergedOnClick = closeOnBackdropClick && !dialog_polyfill_1.needPolyfill // closeOnBackdropClick has issues on polyfill when nesting modals (DatePicker)
157
- ? (event) => {
158
- onClick && onClick(event);
159
- if (event.target === modalRef.current &&
160
- (!onBeforeClose || onBeforeClose() !== false)) {
161
- modalRef.current.close();
162
- }
163
- }
164
- : onClick;
162
+ /**
163
+ * @note onCancel fires when you press `Esc`
164
+ */
165
+ const handleModalCancel = (event) => {
166
+ onBeforeClose && onBeforeClose() === false && event.preventDefault();
167
+ };
165
168
  const mergedAriaLabelledBy = !ariaLabelledby && !rest["aria-label"] && header
166
169
  ? ariaLabelId
167
170
  : ariaLabelledby;
168
171
  const component = (
169
172
  // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
170
- react_2.default.createElement("dialog", Object.assign({}, rest, { ref: mergedRef, className: mergedClassName, style: mergedStyle, onCancel: mergedOnCancel, onClick: mergedOnClick, "aria-labelledby": mergedAriaLabelledBy }),
173
+ react_2.default.createElement("dialog", Object.assign({}, rest, { ref: mergedRef, className: mergedClassName, style: mergedStyle, onCancel: (0, composeEventHandlers_1.composeEventHandlers)(onCancel, handleModalCancel), onClick: (0, composeEventHandlers_1.composeEventHandlers)(onClick, handleModalClick), "aria-labelledby": mergedAriaLabelledBy }),
171
174
  react_2.default.createElement(ModalContext_1.ModalContext.Provider, { value: {
172
175
  closeHandler: (0, ModalUtils_1.getCloseHandler)(modalRef, header, onBeforeClose),
173
176
  ref: modalRef,
@@ -43,7 +43,8 @@ const clsx_1 = __importDefault(require("clsx"));
43
43
  const react_2 = __importStar(require("react"));
44
44
  const context_1 = require("../date/context");
45
45
  const ModalContext_1 = require("../modal/ModalContext");
46
- const util_1 = require("../util");
46
+ const hooks_1 = require("../util/hooks");
47
+ const useMergeRefs_1 = require("../util/hooks/useMergeRefs");
47
48
  const PopoverContent_1 = __importDefault(require("./PopoverContent"));
48
49
  /**
49
50
  * A component that displays a popover.
@@ -89,17 +90,17 @@ exports.Popover = (0, react_2.forwardRef)((_a, ref) => {
89
90
  (0, react_1.useClick)(context),
90
91
  (0, react_1.useDismiss)(context),
91
92
  ]);
92
- (0, util_1.useClientLayoutEffect)(() => {
93
+ (0, hooks_1.useClientLayoutEffect)(() => {
93
94
  refs.setReference(anchorEl);
94
95
  }, [anchorEl]);
95
- const floatingRef = (0, react_2.useMemo)(() => (0, util_1.mergeRefs)([refs.setFloating, ref]), [refs.setFloating, ref]);
96
- (0, util_1.useClientLayoutEffect)(() => {
96
+ const floatingRef = (0, useMergeRefs_1.useMergeRefs)(refs.setFloating, ref);
97
+ (0, hooks_1.useClientLayoutEffect)(() => {
97
98
  if (!refs.reference.current || !refs.floating.current || !open)
98
99
  return;
99
100
  const cleanup = (0, react_1.autoUpdate)(refs.reference.current, refs.floating.current, update);
100
101
  return () => cleanup();
101
102
  }, [refs.floating, refs.reference, update, open, anchorEl]);
102
- (0, util_1.useEventListener)("focusin", (0, react_2.useCallback)((e) => {
103
+ (0, hooks_1.useEventListener)("focusin", (0, react_2.useCallback)((e) => {
103
104
  if (e.target instanceof HTMLElement &&
104
105
  ![anchorEl, refs.floating.current].some((element) => element === null || element === void 0 ? void 0 : element.contains(e.target)) &&
105
106
  !e.target.contains(refs.floating.current)) {
@@ -42,6 +42,7 @@ const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
43
  const aksel_icons_1 = require("@navikt/aksel-icons");
44
44
  const typography_1 = require("../typography");
45
+ const composeEventHandlers_1 = require("../util/composeEventHandlers");
45
46
  const useControllableState_1 = require("../util/hooks/useControllableState");
46
47
  /**
47
48
  * ReadMore
@@ -70,10 +71,7 @@ exports.ReadMore = (0, react_1.forwardRef)((_a, ref) => {
70
71
  return (react_1.default.createElement("div", { className: (0, clsx_1.default)("navds-read-more", `navds-read-more--${size}`, className, { "navds-read-more--open": _open }) },
71
72
  react_1.default.createElement("button", Object.assign({}, rest, { ref: ref, type: "button", className: (0, clsx_1.default)("navds-read-more__button", "navds-body-short", {
72
73
  "navds-body-short--small": size === "small",
73
- }), onClick: (e) => {
74
- _setOpen((x) => !x);
75
- onClick === null || onClick === void 0 ? void 0 : onClick(e);
76
- }, "aria-expanded": _open }),
74
+ }), onClick: (0, composeEventHandlers_1.composeEventHandlers)(onClick, () => _setOpen((x) => !x)), "aria-expanded": _open }),
77
75
  react_1.default.createElement(aksel_icons_1.ChevronDownIcon, { className: "navds-read-more__expand-icon", "aria-hidden": true }),
78
76
  react_1.default.createElement("span", null, header)),
79
77
  react_1.default.createElement(typography_1.BodyLong, { as: "div", "aria-hidden": !_open, className: (0, clsx_1.default)("navds-read-more__content", {
@@ -41,11 +41,12 @@ exports.Step = void 0;
41
41
  const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
43
  const typography_1 = require("../typography");
44
+ const composeEventHandlers_1 = require("../util/composeEventHandlers");
44
45
  const context_1 = require("./context");
45
46
  const CompletedIcon = () => (react_1.default.createElement("svg", { width: "14", height: "10", viewBox: "0 0 14 10", fill: "none", xmlns: "http://www.w3.org/2000/svg", focusable: false, role: "img", "aria-hidden": true, "aria-label": "Fullf\u00F8rt" },
46
47
  react_1.default.createElement("path", { d: "M4.93563 6.41478L11.3755 0.404669C11.9796 -0.160351 12.9294 -0.130672 13.4959 0.47478C14.0624 1.08027 14.0299 2.03007 13.4249 2.59621L5.92151 9.59934C5.64138 9.85904 5.27598 10 4.90064 10C4.5069 10 4.12756 9.84621 3.83953 9.56111L1.33953 7.06111C0.75401 6.47558 0.75401 5.52542 1.33953 4.93989C1.92506 4.35437 2.87522 4.35437 3.46075 4.93989L4.93563 6.41478Z", fill: "currentColor" })));
47
48
  exports.Step = (0, react_1.forwardRef)((_a, ref) => {
48
- var { className, children, as: Component = "a", unsafe_index = 0, completed = false, interactive } = _a, rest = __rest(_a, ["className", "children", "as", "unsafe_index", "completed", "interactive"]);
49
+ var { className, children, as: Component = "a", unsafe_index = 0, completed = false, interactive, onClick } = _a, rest = __rest(_a, ["className", "children", "as", "unsafe_index", "completed", "interactive", "onClick"]);
49
50
  const context = (0, react_1.useContext)(context_1.StepperContext);
50
51
  if (context === null) {
51
52
  console.error("<Stepper.Step> has to be used within <Stepper>");
@@ -54,16 +55,15 @@ exports.Step = (0, react_1.forwardRef)((_a, ref) => {
54
55
  const { activeStep } = context;
55
56
  const isInteractive = interactive !== null && interactive !== void 0 ? interactive : context === null || context === void 0 ? void 0 : context.interactive;
56
57
  const Comp = isInteractive ? Component : "div";
58
+ const handleStepClick = () => {
59
+ isInteractive && context.onStepChange(unsafe_index + 1);
60
+ };
57
61
  return (react_1.default.createElement(Comp, Object.assign({}, rest, { "aria-current": activeStep === unsafe_index, ref: ref, className: (0, clsx_1.default)("navds-stepper__step", className, {
58
62
  "navds-stepper__step--active": activeStep === unsafe_index,
59
63
  "navds-stepper__step--behind": activeStep > unsafe_index,
60
64
  "navds-stepper__step--non-interactive": !isInteractive,
61
65
  "navds-stepper__step--completed": completed,
62
- }), onClick: (e) => {
63
- var _a;
64
- isInteractive && context.onStepChange(unsafe_index + 1);
65
- (_a = rest === null || rest === void 0 ? void 0 : rest.onClick) === null || _a === void 0 ? void 0 : _a.call(rest, e);
66
- } }),
66
+ }), onClick: (0, composeEventHandlers_1.composeEventHandlers)(onClick, handleStepClick) }),
67
67
  completed ? (react_1.default.createElement("span", { className: "navds-stepper__circle navds-stepper__circle--success" },
68
68
  react_1.default.createElement(CompletedIcon, null))) : (react_1.default.createElement(typography_1.Label, { className: "navds-stepper__circle", as: "span", "aria-hidden": "true" }, unsafe_index + 1)),
69
69
  react_1.default.createElement(typography_1.Label, { as: "span", className: "navds-stepper__content" }, children)));
@@ -42,9 +42,9 @@ const clsx_1 = __importDefault(require("clsx"));
42
42
  const react_1 = __importStar(require("react"));
43
43
  const typography_1 = require("../typography");
44
44
  exports.DataCell = (0, react_1.forwardRef)((_a, ref) => {
45
- var { className, children = "", align } = _a, rest = __rest(_a, ["className", "children", "align"]);
45
+ var { className, children = "", align, textSize } = _a, rest = __rest(_a, ["className", "children", "align", "textSize"]);
46
46
  return (react_1.default.createElement(typography_1.BodyShort, Object.assign({ as: "td", ref: ref, className: (0, clsx_1.default)("navds-table__data-cell", className, {
47
47
  [`navds-table__data-cell--align-${align}`]: align,
48
- }) }, rest), children));
48
+ }), size: textSize }, rest), children));
49
49
  });
50
50
  exports.default = exports.DataCell;