@navikt/ds-react 5.12.4 → 5.13.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 (521) hide show
  1. package/_docs.json +79 -3
  2. package/cjs/accordion/Accordion.js +2 -2
  3. package/cjs/accordion/AccordionHeader.js +1 -1
  4. package/cjs/accordion/AccordionItem.js +11 -14
  5. package/cjs/alert/Alert.js +2 -2
  6. package/cjs/chat/Bubble.js +1 -1
  7. package/cjs/chat/Chat.js +2 -2
  8. package/cjs/chips/Chips.js +1 -1
  9. package/cjs/chips/Removable.js +1 -1
  10. package/cjs/copybutton/CopyButton.js +2 -2
  11. package/cjs/date/datepicker/parts/Caption.js +2 -2
  12. package/cjs/date/datepicker/parts/DropdownCaption.js +1 -1
  13. package/cjs/date/datepicker/parts/HeadRow.js +1 -1
  14. package/cjs/date/datepicker/parts/Row.js +2 -2
  15. package/cjs/date/monthpicker/MonthCaption.js +7 -7
  16. package/cjs/date/parts/DateInput.js +1 -1
  17. package/cjs/date/utils/check-dates.js +1 -1
  18. package/cjs/date/utils/is-match.js +2 -2
  19. package/cjs/date/utils/parse-date.js +1 -1
  20. package/cjs/dropdown/Dropdown.js +10 -12
  21. package/cjs/dropdown/Menu/Divider.js +1 -1
  22. package/cjs/dropdown/Menu/GroupedList/GroupedHeading.js +1 -1
  23. package/cjs/expansion-card/ExpansionCardHeader.js +1 -1
  24. package/cjs/form/ReadOnlyIcon.js +1 -1
  25. package/cjs/form/Select.js +1 -1
  26. package/cjs/form/combobox/Combobox.js +6 -6
  27. package/cjs/form/combobox/ComboboxProvider.js +2 -2
  28. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +4 -4
  29. package/cjs/form/combobox/FilteredOptions/filteredOptionsContext.js +4 -4
  30. package/cjs/form/combobox/Input/Input.js +4 -4
  31. package/cjs/form/combobox/SelectedOptions/SelectedOptions.js +1 -1
  32. package/cjs/form/error-summary/ErrorSummary.js +2 -2
  33. package/cjs/form/error-summary/ErrorSummaryItem.js +1 -1
  34. package/cjs/form/search/Search.js +1 -1
  35. package/cjs/form/search/SearchButton.js +1 -1
  36. package/cjs/grid/Cell.js +1 -1
  37. package/cjs/grid/Grid.js +1 -1
  38. package/cjs/guide-panel/GuidePanel.js +1 -1
  39. package/cjs/internal-header/InternalHeaderButton.js +1 -1
  40. package/cjs/internal-header/InternalHeaderTitle.js +1 -1
  41. package/cjs/internal-header/InternalHeaderUser.js +1 -1
  42. package/cjs/internal-header/InternalHeaderUserButton.js +1 -1
  43. package/cjs/layout/bleed/Bleed.js +1 -1
  44. package/cjs/layout/content-container/ContentContainer.js +1 -1
  45. package/cjs/layout/grid/HGrid.js +1 -1
  46. package/cjs/layout/page/parts/PageBlock.js +1 -1
  47. package/cjs/layout/sidemal-test/AvatarPanel.js +1 -1
  48. package/cjs/layout/sidemal-test/Content.js +3 -3
  49. package/cjs/layout/sidemal-test/Filter.js +1 -1
  50. package/cjs/layout/sidemal-test/Intro.js +1 -1
  51. package/cjs/link-panel/LinkPanel.js +3 -3
  52. package/cjs/link-panel/LinkPanelDescription.js +1 -1
  53. package/cjs/link-panel/LinkPanelTitle.js +1 -1
  54. package/cjs/modal/ModalBody.js +1 -1
  55. package/cjs/modal/ModalFooter.js +1 -1
  56. package/cjs/modal/ModalHeader.js +1 -1
  57. package/cjs/pagination/PaginationItem.js +1 -1
  58. package/cjs/panel/Panel.js +1 -1
  59. package/cjs/popover/PopoverContent.js +1 -1
  60. package/cjs/read-more/ReadMore.js +12 -10
  61. package/cjs/skeleton/Skeleton.js +1 -1
  62. package/cjs/table/Body.js +1 -1
  63. package/cjs/table/ColumnHeader.js +1 -1
  64. package/cjs/table/DataCell.js +1 -1
  65. package/cjs/table/ExpandableRow.js +14 -13
  66. package/cjs/table/Header.js +1 -1
  67. package/cjs/table/Row.js +1 -1
  68. package/cjs/tabs/TabList.js +1 -1
  69. package/cjs/tabs/Tabs.js +1 -1
  70. package/cjs/tag/Tag.js +1 -1
  71. package/cjs/timeline/AxisLabels.js +1 -1
  72. package/cjs/timeline/TimelineRow.js +2 -2
  73. package/cjs/timeline/hooks/useTimelineRows.js +5 -3
  74. package/cjs/timeline/utils/timeline.js +1 -1
  75. package/cjs/timeline/zoom/ZoomButton.js +1 -1
  76. package/cjs/toggle-group/ToggleGroup.js +1 -1
  77. package/cjs/tooltip/Tooltip.js +12 -7
  78. package/cjs/typography/BodyLong.js +1 -1
  79. package/cjs/typography/ErrorMessage.js +1 -1
  80. package/cjs/typography/Ingress.js +1 -1
  81. package/cjs/util/RandomIcon.js +1 -1
  82. package/cjs/util/hooks/useCallbackRef.js +18 -0
  83. package/cjs/util/hooks/useControllableState.js +25 -0
  84. package/esm/accordion/Accordion.d.ts +1 -1
  85. package/esm/accordion/Accordion.js +2 -2
  86. package/esm/accordion/Accordion.js.map +1 -1
  87. package/esm/accordion/AccordionHeader.js +1 -1
  88. package/esm/accordion/AccordionHeader.js.map +1 -1
  89. package/esm/accordion/AccordionItem.d.ts +4 -0
  90. package/esm/accordion/AccordionItem.js +12 -15
  91. package/esm/accordion/AccordionItem.js.map +1 -1
  92. package/esm/alert/Alert.js +2 -2
  93. package/esm/alert/Alert.js.map +1 -1
  94. package/esm/chat/Bubble.js +1 -1
  95. package/esm/chat/Bubble.js.map +1 -1
  96. package/esm/chat/Chat.js +2 -2
  97. package/esm/chat/Chat.js.map +1 -1
  98. package/esm/chips/Chips.d.ts +2 -2
  99. package/esm/chips/Chips.js +1 -1
  100. package/esm/chips/Chips.js.map +1 -1
  101. package/esm/chips/Removable.js +1 -1
  102. package/esm/chips/Removable.js.map +1 -1
  103. package/esm/copybutton/CopyButton.js +2 -2
  104. package/esm/copybutton/CopyButton.js.map +1 -1
  105. package/esm/date/context/useSharedMonthContext.js.map +1 -1
  106. package/esm/date/datepicker/parts/Caption.js +2 -2
  107. package/esm/date/datepicker/parts/Caption.js.map +1 -1
  108. package/esm/date/datepicker/parts/DropdownCaption.js +1 -1
  109. package/esm/date/datepicker/parts/DropdownCaption.js.map +1 -1
  110. package/esm/date/datepicker/parts/HeadRow.js +1 -1
  111. package/esm/date/datepicker/parts/HeadRow.js.map +1 -1
  112. package/esm/date/datepicker/parts/Row.js +3 -3
  113. package/esm/date/datepicker/parts/Row.js.map +1 -1
  114. package/esm/date/monthpicker/MonthCaption.js +7 -7
  115. package/esm/date/monthpicker/MonthCaption.js.map +1 -1
  116. package/esm/date/parts/DateInput.js +1 -1
  117. package/esm/date/parts/DateInput.js.map +1 -1
  118. package/esm/date/utils/check-dates.js +1 -1
  119. package/esm/date/utils/check-dates.js.map +1 -1
  120. package/esm/date/utils/get-month-weeks.js.map +1 -1
  121. package/esm/date/utils/is-match.js +2 -2
  122. package/esm/date/utils/is-match.js.map +1 -1
  123. package/esm/date/utils/navigation.js.map +1 -1
  124. package/esm/date/utils/parse-date.js +1 -1
  125. package/esm/date/utils/parse-date.js.map +1 -1
  126. package/esm/dropdown/Dropdown.d.ts +4 -0
  127. package/esm/dropdown/Dropdown.js +10 -12
  128. package/esm/dropdown/Dropdown.js.map +1 -1
  129. package/esm/dropdown/Menu/Divider.js +1 -1
  130. package/esm/dropdown/Menu/Divider.js.map +1 -1
  131. package/esm/dropdown/Menu/GroupedList/GroupedHeading.js +1 -1
  132. package/esm/dropdown/Menu/GroupedList/GroupedHeading.js.map +1 -1
  133. package/esm/expansion-card/ExpansionCardHeader.js +1 -1
  134. package/esm/expansion-card/ExpansionCardHeader.js.map +1 -1
  135. package/esm/form/Fieldset/useFieldset.d.ts +1 -1
  136. package/esm/form/ReadOnlyIcon.js +1 -1
  137. package/esm/form/ReadOnlyIcon.js.map +1 -1
  138. package/esm/form/Select.js +1 -1
  139. package/esm/form/Select.js.map +1 -1
  140. package/esm/form/Switch.js.map +1 -1
  141. package/esm/form/TextField.js.map +1 -1
  142. package/esm/form/checkbox/useCheckbox.d.ts +1 -1
  143. package/esm/form/combobox/Combobox.d.ts +1 -1
  144. package/esm/form/combobox/Combobox.js +6 -6
  145. package/esm/form/combobox/Combobox.js.map +1 -1
  146. package/esm/form/combobox/ComboboxProvider.js +2 -2
  147. package/esm/form/combobox/ComboboxProvider.js.map +1 -1
  148. package/esm/form/combobox/FilteredOptions/FilteredOptions.js +4 -4
  149. package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  150. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.d.ts +1 -1
  151. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js +4 -4
  152. package/esm/form/combobox/FilteredOptions/filteredOptionsContext.js.map +1 -1
  153. package/esm/form/combobox/Input/Input.js +4 -4
  154. package/esm/form/combobox/Input/Input.js.map +1 -1
  155. package/esm/form/combobox/SelectedOptions/SelectedOptions.js +1 -1
  156. package/esm/form/combobox/SelectedOptions/SelectedOptions.js.map +1 -1
  157. package/esm/form/combobox/ToggleListButton.js +1 -1
  158. package/esm/form/combobox/ToggleListButton.js.map +1 -1
  159. package/esm/form/combobox/customOptionsContext.js +1 -1
  160. package/esm/form/combobox/customOptionsContext.js.map +1 -1
  161. package/esm/form/error-summary/ErrorSummary.js +3 -3
  162. package/esm/form/error-summary/ErrorSummary.js.map +1 -1
  163. package/esm/form/error-summary/ErrorSummaryItem.js +1 -1
  164. package/esm/form/error-summary/ErrorSummaryItem.js.map +1 -1
  165. package/esm/form/radio/useRadio.d.ts +1 -1
  166. package/esm/form/search/Search.js +1 -1
  167. package/esm/form/search/Search.js.map +1 -1
  168. package/esm/form/search/SearchButton.js +1 -1
  169. package/esm/form/search/SearchButton.js.map +1 -1
  170. package/esm/grid/Cell.js +1 -1
  171. package/esm/grid/Cell.js.map +1 -1
  172. package/esm/grid/Grid.js +1 -1
  173. package/esm/grid/Grid.js.map +1 -1
  174. package/esm/guide-panel/GuidePanel.js +1 -1
  175. package/esm/guide-panel/GuidePanel.js.map +1 -1
  176. package/esm/internal-header/InternalHeader.js.map +1 -1
  177. package/esm/internal-header/InternalHeaderButton.js +1 -1
  178. package/esm/internal-header/InternalHeaderButton.js.map +1 -1
  179. package/esm/internal-header/InternalHeaderTitle.js +1 -1
  180. package/esm/internal-header/InternalHeaderTitle.js.map +1 -1
  181. package/esm/internal-header/InternalHeaderUser.js +1 -1
  182. package/esm/internal-header/InternalHeaderUser.js.map +1 -1
  183. package/esm/internal-header/InternalHeaderUserButton.js +1 -1
  184. package/esm/internal-header/InternalHeaderUserButton.js.map +1 -1
  185. package/esm/layout/bleed/Bleed.js +1 -1
  186. package/esm/layout/bleed/Bleed.js.map +1 -1
  187. package/esm/layout/box/Box.d.ts +1 -1
  188. package/esm/layout/content-container/ContentContainer.js +1 -1
  189. package/esm/layout/content-container/ContentContainer.js.map +1 -1
  190. package/esm/layout/grid/HGrid.js +1 -1
  191. package/esm/layout/grid/HGrid.js.map +1 -1
  192. package/esm/layout/page/Page.d.ts +2 -2
  193. package/esm/layout/page/Page.js.map +1 -1
  194. package/esm/layout/page/parts/PageBlock.d.ts +6 -5
  195. package/esm/layout/page/parts/PageBlock.js +1 -1
  196. package/esm/layout/page/parts/PageBlock.js.map +1 -1
  197. package/esm/layout/responsive/Responsive.js.map +1 -1
  198. package/esm/layout/sidemal-test/AvatarPanel.js +1 -1
  199. package/esm/layout/sidemal-test/AvatarPanel.js.map +1 -1
  200. package/esm/layout/sidemal-test/Content.js +4 -4
  201. package/esm/layout/sidemal-test/Content.js.map +1 -1
  202. package/esm/layout/sidemal-test/Filter.js +1 -1
  203. package/esm/layout/sidemal-test/Filter.js.map +1 -1
  204. package/esm/layout/sidemal-test/Header.js +1 -1
  205. package/esm/layout/sidemal-test/Header.js.map +1 -1
  206. package/esm/layout/sidemal-test/Intro.js +2 -2
  207. package/esm/layout/sidemal-test/Intro.js.map +1 -1
  208. package/esm/layout/sidemal-test/content-box/ContentBox.js.map +1 -1
  209. package/esm/layout/stack/HStack.js.map +1 -1
  210. package/esm/layout/stack/Stack.js.map +1 -1
  211. package/esm/layout/stack/VStack.js.map +1 -1
  212. package/esm/layout/utilities/types.d.ts +2 -2
  213. package/esm/link-panel/LinkPanel.d.ts +2 -2
  214. package/esm/link-panel/LinkPanel.js +3 -3
  215. package/esm/link-panel/LinkPanel.js.map +1 -1
  216. package/esm/link-panel/LinkPanelDescription.js +1 -1
  217. package/esm/link-panel/LinkPanelDescription.js.map +1 -1
  218. package/esm/link-panel/LinkPanelTitle.js +1 -1
  219. package/esm/link-panel/LinkPanelTitle.js.map +1 -1
  220. package/esm/loader/Loader.js.map +1 -1
  221. package/esm/modal/ModalBody.js +1 -1
  222. package/esm/modal/ModalBody.js.map +1 -1
  223. package/esm/modal/ModalFooter.js +1 -1
  224. package/esm/modal/ModalFooter.js.map +1 -1
  225. package/esm/modal/ModalHeader.js +1 -1
  226. package/esm/modal/ModalHeader.js.map +1 -1
  227. package/esm/pagination/Pagination.js.map +1 -1
  228. package/esm/pagination/PaginationItem.js +1 -1
  229. package/esm/pagination/PaginationItem.js.map +1 -1
  230. package/esm/panel/Panel.js +1 -1
  231. package/esm/panel/Panel.js.map +1 -1
  232. package/esm/popover/Popover.js.map +1 -1
  233. package/esm/popover/PopoverContent.js +1 -1
  234. package/esm/popover/PopoverContent.js.map +1 -1
  235. package/esm/read-more/ReadMore.d.ts +4 -0
  236. package/esm/read-more/ReadMore.js +13 -11
  237. package/esm/read-more/ReadMore.js.map +1 -1
  238. package/esm/skeleton/Skeleton.js +1 -1
  239. package/esm/skeleton/Skeleton.js.map +1 -1
  240. package/esm/table/Body.js +1 -1
  241. package/esm/table/Body.js.map +1 -1
  242. package/esm/table/ColumnHeader.js +1 -1
  243. package/esm/table/ColumnHeader.js.map +1 -1
  244. package/esm/table/DataCell.js +1 -1
  245. package/esm/table/DataCell.js.map +1 -1
  246. package/esm/table/ExpandableRow.js +15 -14
  247. package/esm/table/ExpandableRow.js.map +1 -1
  248. package/esm/table/Header.js +1 -1
  249. package/esm/table/Header.js.map +1 -1
  250. package/esm/table/Row.js +1 -1
  251. package/esm/table/Row.js.map +1 -1
  252. package/esm/tabs/TabList.js +1 -1
  253. package/esm/tabs/TabList.js.map +1 -1
  254. package/esm/tabs/Tabs.js +1 -1
  255. package/esm/tabs/Tabs.js.map +1 -1
  256. package/esm/tag/Tag.js +1 -1
  257. package/esm/tag/Tag.js.map +1 -1
  258. package/esm/timeline/AxisLabels.js +1 -1
  259. package/esm/timeline/AxisLabels.js.map +1 -1
  260. package/esm/timeline/TimelineRow.js +2 -2
  261. package/esm/timeline/TimelineRow.js.map +1 -1
  262. package/esm/timeline/hooks/useTimelineRows.js +5 -3
  263. package/esm/timeline/hooks/useTimelineRows.js.map +1 -1
  264. package/esm/timeline/utils/timeline.js +1 -1
  265. package/esm/timeline/utils/timeline.js.map +1 -1
  266. package/esm/timeline/zoom/ZoomButton.js +1 -1
  267. package/esm/timeline/zoom/ZoomButton.js.map +1 -1
  268. package/esm/toggle-group/ToggleGroup.js +1 -1
  269. package/esm/toggle-group/ToggleGroup.js.map +1 -1
  270. package/esm/tooltip/Tooltip.d.ts +4 -0
  271. package/esm/tooltip/Tooltip.js +13 -8
  272. package/esm/tooltip/Tooltip.js.map +1 -1
  273. package/esm/typography/BodyLong.js +1 -1
  274. package/esm/typography/BodyLong.js.map +1 -1
  275. package/esm/typography/ErrorMessage.js +1 -1
  276. package/esm/typography/ErrorMessage.js.map +1 -1
  277. package/esm/typography/Ingress.js +1 -1
  278. package/esm/typography/Ingress.js.map +1 -1
  279. package/esm/util/RandomIcon.js +1 -1
  280. package/esm/util/RandomIcon.js.map +1 -1
  281. package/esm/util/hooks/useCallbackRef.d.ts +7 -0
  282. package/esm/util/hooks/useCallbackRef.js +15 -0
  283. package/esm/util/hooks/useCallbackRef.js.map +1 -0
  284. package/esm/util/hooks/useControllableState.d.ts +9 -0
  285. package/esm/util/hooks/useControllableState.js +22 -0
  286. package/esm/util/hooks/useControllableState.js.map +1 -0
  287. package/esm/util/mergeRefs.js.map +1 -1
  288. package/package.json +3 -3
  289. package/src/accordion/Accordion.tsx +5 -5
  290. package/src/accordion/AccordionContent.tsx +3 -3
  291. package/src/accordion/AccordionHeader.tsx +3 -3
  292. package/src/accordion/AccordionItem.tsx +21 -21
  293. package/src/accordion/accordion.stories.tsx +8 -5
  294. package/src/alert/Alert.tsx +8 -8
  295. package/src/alert/alert.stories.tsx +7 -7
  296. package/src/button/Button.tsx +4 -4
  297. package/src/button/button.stories.tsx +1 -1
  298. package/src/chat/Bubble.tsx +4 -4
  299. package/src/chat/Chat.tsx +5 -5
  300. package/src/chat/chat.stories.tsx +1 -1
  301. package/src/chips/Chips.tsx +4 -4
  302. package/src/chips/Removable.tsx +4 -4
  303. package/src/chips/Toggle.tsx +3 -3
  304. package/src/chips/chips.stories.tsx +5 -5
  305. package/src/copybutton/CopyButton.tsx +6 -6
  306. package/src/copybutton/copy-button.stories.tsx +3 -3
  307. package/src/date/context/useSharedMonthContext.tsx +1 -1
  308. package/src/date/datepicker/DatePicker.tsx +2 -2
  309. package/src/date/datepicker/DatePickerStandalone.tsx +2 -2
  310. package/src/date/datepicker/datepicker.stories.tsx +2 -2
  311. package/src/date/datepicker/parts/Caption.tsx +2 -3
  312. package/src/date/datepicker/parts/DropdownCaption.tsx +2 -2
  313. package/src/date/datepicker/parts/HeadRow.tsx +1 -1
  314. package/src/date/datepicker/parts/Row.tsx +3 -3
  315. package/src/date/hooks/useDatepicker.tsx +7 -7
  316. package/src/date/hooks/useMonthPicker.tsx +7 -7
  317. package/src/date/hooks/useRangeDatepicker.test.tsx +2 -2
  318. package/src/date/hooks/useRangeDatepicker.tsx +28 -28
  319. package/src/date/monthpicker/MonthButton.tsx +1 -1
  320. package/src/date/monthpicker/MonthCaption.tsx +7 -7
  321. package/src/date/monthpicker/MonthPicker.tsx +3 -3
  322. package/src/date/monthpicker/MonthPickerStandalone.tsx +3 -3
  323. package/src/date/monthpicker/MonthSelector.tsx +1 -1
  324. package/src/date/parts/DateInput.tsx +6 -6
  325. package/src/date/utils/__tests__/check-dates.test.ts +3 -3
  326. package/src/date/utils/__tests__/format-dates.test.ts +7 -7
  327. package/src/date/utils/__tests__/get-initial-year.test.ts +14 -14
  328. package/src/date/utils/__tests__/get-month-weeks.test.ts +0 -1
  329. package/src/date/utils/__tests__/is-match.test.ts +4 -4
  330. package/src/date/utils/__tests__/parse-dates.test.ts +2 -2
  331. package/src/date/utils/check-dates.ts +2 -2
  332. package/src/date/utils/dates-disabled.ts +1 -1
  333. package/src/date/utils/format-date.ts +1 -1
  334. package/src/date/utils/get-dates.ts +1 -1
  335. package/src/date/utils/get-month-weeks.ts +6 -6
  336. package/src/date/utils/is-match.ts +2 -3
  337. package/src/date/utils/labels.ts +1 -1
  338. package/src/date/utils/navigation.ts +18 -18
  339. package/src/date/utils/parse-date.ts +8 -8
  340. package/src/dropdown/Dropdown.tsx +14 -11
  341. package/src/dropdown/Menu/Divider.tsx +1 -1
  342. package/src/dropdown/Menu/GroupedList/GroupedHeading.tsx +2 -2
  343. package/src/dropdown/Menu/GroupedList/GroupedItem.tsx +1 -1
  344. package/src/dropdown/Menu/GroupedList/index.tsx +1 -1
  345. package/src/dropdown/Menu/List/Item.tsx +1 -1
  346. package/src/dropdown/Menu/index.tsx +1 -1
  347. package/src/dropdown/dropdown.stories.tsx +1 -1
  348. package/src/expansion-card/ExpansionCard.tsx +3 -3
  349. package/src/expansion-card/ExpansionCardContent.tsx +1 -1
  350. package/src/expansion-card/ExpansionCardDescription.tsx +1 -1
  351. package/src/expansion-card/ExpansionCardHeader.tsx +2 -2
  352. package/src/expansion-card/ExpansionCardTitle.tsx +2 -2
  353. package/src/expansion-card/expansion-card.stories.tsx +1 -1
  354. package/src/form/ConfirmationPanel.test.tsx +1 -1
  355. package/src/form/ConfirmationPanel.tsx +2 -2
  356. package/src/form/Fieldset/Fieldset.tsx +2 -2
  357. package/src/form/ReadOnlyIcon.tsx +1 -1
  358. package/src/form/Select.tsx +6 -6
  359. package/src/form/Switch.tsx +4 -4
  360. package/src/form/TextField.tsx +4 -4
  361. package/src/form/Textarea.tsx +4 -4
  362. package/src/form/checkbox/Checkbox.test.tsx +8 -8
  363. package/src/form/checkbox/Checkbox.tsx +3 -3
  364. package/src/form/checkbox/CheckboxGroup.tsx +4 -4
  365. package/src/form/checkbox/useCheckbox.ts +3 -3
  366. package/src/form/combobox/Combobox.tsx +8 -8
  367. package/src/form/combobox/ComboboxProvider.tsx +3 -3
  368. package/src/form/combobox/ComboboxWrapper.tsx +1 -1
  369. package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +6 -6
  370. package/src/form/combobox/FilteredOptions/filteredOptionsContext.tsx +18 -18
  371. package/src/form/combobox/FilteredOptions/useVirtualFocus.ts +5 -5
  372. package/src/form/combobox/Input/Input.tsx +13 -13
  373. package/src/form/combobox/Input/inputContext.tsx +6 -6
  374. package/src/form/combobox/SelectedOptions/SelectedOptions.tsx +1 -1
  375. package/src/form/combobox/SelectedOptions/selectedOptionsContext.tsx +9 -9
  376. package/src/form/combobox/ToggleListButton.tsx +1 -2
  377. package/src/form/combobox/combobox.stories.tsx +8 -8
  378. package/src/form/combobox/combobox.test.tsx +14 -12
  379. package/src/form/combobox/customOptionsContext.tsx +6 -6
  380. package/src/form/combobox/types.ts +2 -2
  381. package/src/form/error-summary/ErrorSummary.tsx +6 -6
  382. package/src/form/error-summary/ErrorSummaryItem.tsx +2 -2
  383. package/src/form/error-summary/error-summary.stories.tsx +2 -1
  384. package/src/form/radio/Radio.test.tsx +1 -1
  385. package/src/form/radio/Radio.tsx +1 -1
  386. package/src/form/radio/RadioGroup.tsx +3 -3
  387. package/src/form/radio/useRadio.ts +1 -1
  388. package/src/form/search/Search.tsx +6 -6
  389. package/src/form/search/SearchButton.tsx +2 -2
  390. package/src/form/search/search.stories.tsx +1 -1
  391. package/src/form/stories/fieldset.stories.tsx +3 -2
  392. package/src/form/stories/select.stories.tsx +2 -1
  393. package/src/form/stories/text-field.stories.tsx +2 -1
  394. package/src/form/useFormField.ts +3 -3
  395. package/src/grid/Cell.tsx +3 -3
  396. package/src/grid/Grid.tsx +2 -2
  397. package/src/grid/grid.stories.tsx +1 -1
  398. package/src/guide-panel/GuidePanel.tsx +2 -2
  399. package/src/guide-panel/guidepanel.stories.tsx +1 -1
  400. package/src/help-text/HelpText.tsx +2 -2
  401. package/src/internal-header/InternalHeader.tsx +1 -1
  402. package/src/internal-header/InternalHeaderButton.tsx +1 -1
  403. package/src/internal-header/InternalHeaderTitle.tsx +1 -1
  404. package/src/internal-header/InternalHeaderUser.tsx +1 -1
  405. package/src/internal-header/InternalHeaderUserButton.tsx +1 -1
  406. package/src/internal-header/header.stories.tsx +3 -3
  407. package/src/layout/bleed/Bleed.tsx +7 -7
  408. package/src/layout/box/Box.stories.tsx +4 -4
  409. package/src/layout/box/Box.tsx +7 -7
  410. package/src/layout/content-container/ContentContainer.tsx +1 -1
  411. package/src/layout/grid/HGrid.tsx +4 -4
  412. package/src/layout/page/Page.stories.tsx +1 -1
  413. package/src/layout/page/Page.tsx +4 -4
  414. package/src/layout/page/parts/PageBlock.tsx +8 -7
  415. package/src/layout/responsive/Responsive.tsx +6 -6
  416. package/src/layout/responsive/hide.stories.tsx +1 -1
  417. package/src/layout/responsive/show.stories.tsx +1 -1
  418. package/src/layout/sidemal-test/AvatarPanel.tsx +1 -1
  419. package/src/layout/sidemal-test/Content.tsx +4 -4
  420. package/src/layout/sidemal-test/Filter.tsx +1 -1
  421. package/src/layout/sidemal-test/Header.tsx +1 -1
  422. package/src/layout/sidemal-test/Intro.tsx +2 -2
  423. package/src/layout/sidemal-test/content-box/ContentBox.tsx +6 -6
  424. package/src/layout/sidemal-test/navno-sidemal.stories.tsx +1 -1
  425. package/src/layout/stack/HStack.tsx +1 -1
  426. package/src/layout/stack/Stack.tsx +3 -3
  427. package/src/layout/stack/VStack.tsx +1 -1
  428. package/src/layout/stack/stack.stories.tsx +2 -2
  429. package/src/layout/utilities/css.ts +6 -6
  430. package/src/layout/utilities/types.ts +2 -2
  431. package/src/link/Link.tsx +2 -2
  432. package/src/link/link.stories.tsx +1 -1
  433. package/src/link-panel/LinkPanel.tsx +6 -7
  434. package/src/link-panel/LinkPanelDescription.tsx +1 -1
  435. package/src/link-panel/LinkPanelTitle.tsx +2 -2
  436. package/src/list/List.tsx +2 -2
  437. package/src/list/ListItem.tsx +2 -2
  438. package/src/list/list.stories.tsx +2 -2
  439. package/src/loader/Loader.tsx +4 -4
  440. package/src/loader/loader.stories.tsx +1 -0
  441. package/src/modal/Modal.test.tsx +4 -4
  442. package/src/modal/Modal.tsx +2 -2
  443. package/src/modal/ModalBody.tsx +2 -2
  444. package/src/modal/ModalFooter.tsx +2 -2
  445. package/src/modal/ModalHeader.tsx +2 -2
  446. package/src/modal/ModalUtils.ts +2 -2
  447. package/src/modal/dialog-polyfill.ts +16 -16
  448. package/src/pagination/Pagination.tsx +5 -6
  449. package/src/pagination/PaginationItem.tsx +3 -3
  450. package/src/pagination/steps.test.ts +8 -8
  451. package/src/panel/Panel.tsx +3 -3
  452. package/src/panel/panel.stories.tsx +2 -1
  453. package/src/popover/Popover.test.tsx +7 -7
  454. package/src/popover/Popover.tsx +8 -8
  455. package/src/popover/PopoverContent.tsx +2 -2
  456. package/src/provider/Provider.tsx +1 -1
  457. package/src/read-more/ReadMore.tsx +19 -13
  458. package/src/read-more/readmore.stories.tsx +4 -0
  459. package/src/skeleton/Skeleton.tsx +4 -4
  460. package/src/stepper/Step.tsx +2 -2
  461. package/src/stepper/Stepper.tsx +3 -3
  462. package/src/table/Body.tsx +1 -1
  463. package/src/table/ColumnHeader.tsx +2 -2
  464. package/src/table/DataCell.tsx +2 -2
  465. package/src/table/ExpandableRow.tsx +19 -17
  466. package/src/table/Header.tsx +1 -1
  467. package/src/table/HeaderCell.tsx +1 -1
  468. package/src/table/Row.tsx +2 -2
  469. package/src/table/Table.tsx +2 -2
  470. package/src/table/stories/table-async.stories.tsx +4 -4
  471. package/src/table/stories/table.stories.tsx +1 -1
  472. package/src/tabs/Tab.tsx +3 -3
  473. package/src/tabs/TabList.tsx +4 -4
  474. package/src/tabs/TabPanel.tsx +1 -1
  475. package/src/tabs/Tabs.stories.tsx +1 -1
  476. package/src/tabs/Tabs.tsx +4 -4
  477. package/src/tag/Tag.tsx +3 -3
  478. package/src/tag/tag.stories.tsx +1 -1
  479. package/src/timeline/AxisLabels.tsx +9 -9
  480. package/src/timeline/Pin.tsx +2 -2
  481. package/src/timeline/Timeline.tsx +7 -7
  482. package/src/timeline/TimelineRow.tsx +5 -5
  483. package/src/timeline/hooks/useTimelineContext.tsx +1 -1
  484. package/src/timeline/hooks/useTimelineRows.ts +18 -19
  485. package/src/timeline/period/ClickablePeriod.tsx +4 -4
  486. package/src/timeline/period/NonClickablePeriod.tsx +1 -1
  487. package/src/timeline/period/index.tsx +1 -1
  488. package/src/timeline/timeline.stories.tsx +2 -2
  489. package/src/timeline/utils/calc.ts +2 -2
  490. package/src/timeline/utils/filter.ts +2 -2
  491. package/src/timeline/utils/period.ts +2 -2
  492. package/src/timeline/utils/timeline.ts +1 -1
  493. package/src/timeline/zoom/ZoomButton.tsx +3 -3
  494. package/src/timeline/zoom/index.tsx +1 -1
  495. package/src/toggle-group/ToggleGroup.stories.tsx +2 -2
  496. package/src/toggle-group/ToggleGroup.tsx +5 -5
  497. package/src/toggle-group/ToggleItem.tsx +1 -1
  498. package/src/toggle-group/context.ts +1 -1
  499. package/src/tooltip/Tooltip.test.tsx +10 -10
  500. package/src/tooltip/Tooltip.tsx +20 -11
  501. package/src/tooltip/tooltip.stories.tsx +1 -1
  502. package/src/typography/BodyLong.tsx +4 -4
  503. package/src/typography/BodyShort.tsx +3 -3
  504. package/src/typography/Detail.tsx +3 -3
  505. package/src/typography/ErrorMessage.tsx +3 -3
  506. package/src/typography/Heading.tsx +3 -3
  507. package/src/typography/Ingress.tsx +1 -1
  508. package/src/typography/Label.tsx +3 -3
  509. package/src/typography/stories/heading.stories.tsx +1 -2
  510. package/src/util/AnimateHeight.tsx +1 -1
  511. package/src/util/OverridableComponent.ts +1 -1
  512. package/src/util/RandomIcon.tsx +1 -1
  513. package/src/util/Slot.tsx +3 -3
  514. package/src/util/TextareaAutoSize.tsx +4 -4
  515. package/src/util/__tests__/Slot.test.tsx +11 -11
  516. package/src/util/hooks/useCallbackRef.ts +20 -0
  517. package/src/util/hooks/useControllableState.ts +40 -0
  518. package/src/util/mergeRefs.tsx +2 -1
  519. package/src/util/omit.ts +1 -1
  520. package/src/util/useEventListener.ts +1 -1
  521. package/src/util/useMedia.ts +1 -1
@@ -1,6 +1,6 @@
1
- import { ChevronDownIcon } from "@navikt/aksel-icons";
2
1
  import cl from "clsx";
3
- import React, { forwardRef, SelectHTMLAttributes } from "react";
2
+ import React, { SelectHTMLAttributes, forwardRef } from "react";
3
+ import { ChevronDownIcon } from "@navikt/aksel-icons";
4
4
  import { BodyShort, ErrorMessage, Label } from "../typography";
5
5
  import { omit } from "../util";
6
6
  import { ReadOnlyIcon } from "./ReadOnlyIcon";
@@ -83,7 +83,7 @@ export const Select = forwardRef<HTMLSelectElement, SelectProps>(
83
83
  if (
84
84
  readOnly &&
85
85
  ["ArrowDown", "ArrowUp", "ArrowRight", "ArrowLeft", " "].includes(
86
- evt.key
86
+ evt.key,
87
87
  )
88
88
  ) {
89
89
  evt.preventDefault();
@@ -102,7 +102,7 @@ export const Select = forwardRef<HTMLSelectElement, SelectProps>(
102
102
  "navds-form-field--readonly": readOnly,
103
103
  "navds-select--error": hasError,
104
104
  "navds-select--readonly": readOnly,
105
- }
105
+ },
106
106
  )}
107
107
  >
108
108
  <Label
@@ -136,7 +136,7 @@ export const Select = forwardRef<HTMLSelectElement, SelectProps>(
136
136
  className={cl(
137
137
  "navds-select__input",
138
138
  "navds-body-short",
139
- `navds-body-short--${size ?? "medium"}`
139
+ `navds-body-short--${size ?? "medium"}`,
140
140
  )}
141
141
  size={htmlSize}
142
142
  >
@@ -156,7 +156,7 @@ export const Select = forwardRef<HTMLSelectElement, SelectProps>(
156
156
  </div>
157
157
  </div>
158
158
  );
159
- }
159
+ },
160
160
  );
161
161
 
162
162
  export default Select;
@@ -1,7 +1,7 @@
1
1
  import cl from "clsx";
2
2
  import React, {
3
- forwardRef,
4
3
  InputHTMLAttributes,
4
+ forwardRef,
5
5
  useEffect,
6
6
  useState,
7
7
  } from "react";
@@ -86,7 +86,7 @@ export const Switch = forwardRef<HTMLInputElement, SwitchProps>(
86
86
  } = props;
87
87
 
88
88
  const [checked, setChecked] = useState(
89
- defaultChecked ?? checkedProp ?? false
89
+ defaultChecked ?? checkedProp ?? false,
90
90
  );
91
91
 
92
92
  useEffect(() => {
@@ -104,7 +104,7 @@ export const Switch = forwardRef<HTMLInputElement, SwitchProps>(
104
104
  "navds-switch--loading": loading,
105
105
  "navds-switch--disabled": inputProps.disabled ?? loading,
106
106
  "navds-switch--readonly": readOnly,
107
- }
107
+ },
108
108
  )}
109
109
  >
110
110
  <input
@@ -168,7 +168,7 @@ export const Switch = forwardRef<HTMLInputElement, SwitchProps>(
168
168
  </label>
169
169
  </div>
170
170
  );
171
- }
171
+ },
172
172
  );
173
173
 
174
174
  export default Switch;
@@ -1,5 +1,5 @@
1
1
  import cl from "clsx";
2
- import React, { forwardRef, InputHTMLAttributes } from "react";
2
+ import React, { InputHTMLAttributes, forwardRef } from "react";
3
3
  import { BodyShort, ErrorMessage, Label } from "../typography";
4
4
  import { omit } from "../util";
5
5
  import { ReadOnlyIcon } from "./ReadOnlyIcon";
@@ -81,7 +81,7 @@ export const TextField = forwardRef<HTMLInputElement, TextFieldProps>(
81
81
  "navds-form-field--disabled": !!inputProps.disabled,
82
82
  "navds-form-field--readonly": readOnly,
83
83
  "navds-text-field--readonly": readOnly,
84
- }
84
+ },
85
85
  )}
86
86
  >
87
87
  <Label
@@ -116,7 +116,7 @@ export const TextField = forwardRef<HTMLInputElement, TextFieldProps>(
116
116
  className={cl(
117
117
  "navds-text-field__input",
118
118
  "navds-body-short",
119
- `navds-body-short--${size ?? "medium"}`
119
+ `navds-body-short--${size ?? "medium"}`,
120
120
  )}
121
121
  size={htmlSize}
122
122
  />
@@ -132,7 +132,7 @@ export const TextField = forwardRef<HTMLInputElement, TextFieldProps>(
132
132
  </div>
133
133
  </div>
134
134
  );
135
- }
135
+ },
136
136
  );
137
137
 
138
138
  export default TextField;
@@ -102,7 +102,7 @@ export const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(
102
102
  const hasMaxLength = maxLength !== undefined && maxLength > 0;
103
103
 
104
104
  const [controlledValue, setControlledValue] = useState<string>(
105
- props?.defaultValue ?? ""
105
+ props?.defaultValue ?? "",
106
106
  );
107
107
 
108
108
  const getMinRows = () => {
@@ -131,7 +131,7 @@ export const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(
131
131
  "navds-textarea--autoscrollbar": UNSAFE_autoScrollbar,
132
132
  [`navds-textarea--resize-${resize === true ? "both" : resize}`]:
133
133
  resize,
134
- }
134
+ },
135
135
  )}
136
136
  >
137
137
  <Label
@@ -172,7 +172,7 @@ export const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(
172
172
  className={cl(
173
173
  "navds-textarea__input",
174
174
  "navds-body-short",
175
- `navds-body-short--${size ?? "medium"}`
175
+ `navds-body-short--${size ?? "medium"}`,
176
176
  )}
177
177
  {...(describedBy ? { "aria-describedby": describedBy } : {})}
178
178
  />
@@ -202,7 +202,7 @@ export const Textarea = forwardRef<HTMLTextAreaElement, TextareaProps>(
202
202
  </div>
203
203
  </div>
204
204
  );
205
- }
205
+ },
206
206
  );
207
207
 
208
208
  export default Textarea;
@@ -16,7 +16,7 @@ test("checkbox group chains onChange calls", async () => {
16
16
  <Checkbox onChange={onChange} value={value}>
17
17
  {label}
18
18
  </Checkbox>
19
- </CheckboxGroup>
19
+ </CheckboxGroup>,
20
20
  );
21
21
 
22
22
  fireEvent.click(screen.getByLabelText(label));
@@ -42,11 +42,11 @@ describe("Checkbox handles controlled-state correctly", () => {
42
42
  fireEvent.click(screen.getByLabelText("label2"));
43
43
 
44
44
  expect((screen.getByLabelText("label1") as HTMLInputElement).checked).toBe(
45
- true
45
+ true,
46
46
  );
47
47
 
48
48
  expect((screen.getByLabelText("label2") as HTMLInputElement).checked).toBe(
49
- true
49
+ true,
50
50
  );
51
51
  });
52
52
 
@@ -57,7 +57,7 @@ describe("Checkbox handles controlled-state correctly", () => {
57
57
  <CheckboxComponent
58
58
  onChange={onGroupChange}
59
59
  value={["value1", "value2"]}
60
- />
60
+ />,
61
61
  );
62
62
 
63
63
  fireEvent.click(screen.getByLabelText("label1"));
@@ -71,19 +71,19 @@ describe("Checkbox handles controlled-state correctly", () => {
71
71
  const { rerender } = render(<CheckboxComponent value={[]} />);
72
72
 
73
73
  expect((screen.getByLabelText("label1") as HTMLInputElement).checked).toBe(
74
- false
74
+ false,
75
75
  );
76
76
  expect((screen.getByLabelText("label2") as HTMLInputElement).checked).toBe(
77
- false
77
+ false,
78
78
  );
79
79
 
80
80
  rerender(<CheckboxComponent value={["value1", "value2"]} />);
81
81
 
82
82
  expect((screen.getByLabelText("label1") as HTMLInputElement).checked).toBe(
83
- true
83
+ true,
84
84
  );
85
85
  expect((screen.getByLabelText("label2") as HTMLInputElement).checked).toBe(
86
- true
86
+ true,
87
87
  );
88
88
  });
89
89
  });
@@ -23,7 +23,7 @@ export const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(
23
23
  "navds-checkbox--error": hasError,
24
24
  "navds-checkbox--disabled": inputProps.disabled,
25
25
  "navds-checkbox--readonly": readOnly,
26
- }
26
+ },
27
27
  )}
28
28
  >
29
29
  <input
@@ -57,7 +57,7 @@ export const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(
57
57
  !!props["aria-labelledby"] && props["aria-labelledby"],
58
58
  {
59
59
  [descriptionId]: props.description,
60
- }
60
+ },
61
61
  )}
62
62
  />
63
63
  <label htmlFor={inputProps.id} className="navds-checkbox__label">
@@ -110,7 +110,7 @@ export const Checkbox = forwardRef<HTMLInputElement, CheckboxProps>(
110
110
  </label>
111
111
  </div>
112
112
  );
113
- }
113
+ },
114
114
  );
115
115
 
116
116
  export default Checkbox;
@@ -9,7 +9,7 @@ export interface CheckboxGroupState {
9
9
  }
10
10
 
11
11
  export const CheckboxGroupContext = createContext<CheckboxGroupState | null>(
12
- null
12
+ null,
13
13
  );
14
14
 
15
15
  export interface CheckboxGroupProps
@@ -56,7 +56,7 @@ export const CheckboxGroup = forwardRef<
56
56
  >(
57
57
  (
58
58
  { value, defaultValue, onChange = () => {}, children, className, ...rest },
59
- ref
59
+ ref,
60
60
  ) => {
61
61
  const fieldset = useContext(FieldsetContext);
62
62
 
@@ -79,7 +79,7 @@ export const CheckboxGroup = forwardRef<
79
79
  className={cl(
80
80
  className,
81
81
  "navds-checkbox-group",
82
- `navds-checkbox-group--${rest.size ?? fieldset?.size ?? "medium"}`
82
+ `navds-checkbox-group--${rest.size ?? fieldset?.size ?? "medium"}`,
83
83
  )}
84
84
  nativeReadOnly={false}
85
85
  >
@@ -94,7 +94,7 @@ export const CheckboxGroup = forwardRef<
94
94
  </CheckboxGroupContext.Provider>
95
95
  </Fieldset>
96
96
  );
97
- }
97
+ },
98
98
  );
99
99
 
100
100
  export default CheckboxGroup;
@@ -12,18 +12,18 @@ const useCheckbox = (props: CheckboxProps) => {
12
12
 
13
13
  const { inputProps, readOnly, ...rest } = useFormField(
14
14
  omit(props, ["description", "children"]),
15
- "checkbox"
15
+ "checkbox",
16
16
  );
17
17
 
18
18
  if (checkboxGroup) {
19
19
  if (props.checked) {
20
20
  console.warn(
21
- "`checked` is unsupported on <Checkbox> elements within a <CheckboxGroup>. Please set a `value` or `defaultValue` on <CheckboxGroup> instead."
21
+ "`checked` is unsupported on <Checkbox> elements within a <CheckboxGroup>. Please set a `value` or `defaultValue` on <CheckboxGroup> instead.",
22
22
  );
23
23
  }
24
24
  if (props.value === undefined) {
25
25
  console.warn(
26
- "A <Checkbox> element within a <CheckboxGroup> requires a `value` property."
26
+ "A <Checkbox> element within a <CheckboxGroup> requires a `value` property.",
27
27
  );
28
28
  }
29
29
  }
@@ -1,17 +1,17 @@
1
1
  import cl from "clsx";
2
2
  import React, { forwardRef, useMemo, useRef } from "react";
3
+ import { BodyShort, ErrorMessage, Label } from "../../typography";
4
+ import { mergeRefs } from "../../util";
3
5
  import ClearButton from "./ClearButton";
6
+ import ComboboxWrapper from "./ComboboxWrapper";
4
7
  import FilteredOptions from "./FilteredOptions/FilteredOptions";
5
8
  import { useFilteredOptionsContext } from "./FilteredOptions/filteredOptionsContext";
9
+ import Input from "./Input/Input";
10
+ import { useInputContext } from "./Input/inputContext";
6
11
  import SelectedOptions from "./SelectedOptions/SelectedOptions";
12
+ import { useSelectedOptionsContext } from "./SelectedOptions/selectedOptionsContext";
7
13
  import ToggleListButton from "./ToggleListButton";
8
14
  import { ComboboxProps } from "./types";
9
- import { useSelectedOptionsContext } from "./SelectedOptions/selectedOptionsContext";
10
- import ComboboxWrapper from "./ComboboxWrapper";
11
- import { useInputContext } from "./Input/inputContext";
12
- import Input from "./Input/Input";
13
- import { mergeRefs } from "../../util";
14
- import { BodyShort, ErrorMessage, Label } from "../../typography";
15
15
 
16
16
  export const Combobox = forwardRef<
17
17
  HTMLInputElement,
@@ -52,7 +52,7 @@ export const Combobox = forwardRef<
52
52
 
53
53
  const mergedInputRef = useMemo(
54
54
  () => mergeRefs([inputRef, ref]),
55
- [inputRef, ref]
55
+ [inputRef, ref],
56
56
  );
57
57
 
58
58
  return (
@@ -93,7 +93,7 @@ export const Combobox = forwardRef<
93
93
  {
94
94
  "navds-combobox__wrapper-inner--virtually-unfocused":
95
95
  activeDecendantId !== null,
96
- }
96
+ },
97
97
  )}
98
98
  onClick={focusInput}
99
99
  >
@@ -1,9 +1,9 @@
1
1
  import React, { forwardRef } from "react";
2
2
  import Combobox from "./Combobox";
3
3
  import { FilteredOptionsProvider } from "./FilteredOptions/filteredOptionsContext";
4
- import { CustomOptionsProvider } from "./customOptionsContext";
5
- import { SelectedOptionsProvider } from "./SelectedOptions/selectedOptionsContext";
6
4
  import { InputContextProvider } from "./Input/inputContext";
5
+ import { SelectedOptionsProvider } from "./SelectedOptions/selectedOptionsContext";
6
+ import { CustomOptionsProvider } from "./customOptionsContext";
7
7
  import { ComboboxProps } from "./types";
8
8
 
9
9
  /**
@@ -92,7 +92,7 @@ const ComboboxProvider = forwardRef<HTMLInputElement, ComboboxProps>(
92
92
  </CustomOptionsProvider>
93
93
  </InputContextProvider>
94
94
  );
95
- }
95
+ },
96
96
  );
97
97
 
98
98
  export default ComboboxProvider;
@@ -53,7 +53,7 @@ const ComboboxWrapper = ({
53
53
  "navds-combobox--error": hasError,
54
54
  "navds-combobox--disabled": !!inputProps.disabled,
55
55
  "navds-combobox--focused": hasFocusWithin,
56
- }
56
+ },
57
57
  )}
58
58
  onFocus={onFocusInsideWrapper}
59
59
  onBlur={onBlurWrapper}
@@ -1,12 +1,12 @@
1
- import React from "react";
2
1
  import cl from "clsx";
2
+ import React from "react";
3
3
  import { CheckmarkIcon, PlusIcon } from "@navikt/aksel-icons";
4
- import { useFilteredOptionsContext } from "./filteredOptionsContext";
5
- import { useSelectedOptionsContext } from "../SelectedOptions/selectedOptionsContext";
6
- import { useInputContext } from "../Input/inputContext";
7
4
  import { Loader } from "../../../loader";
8
5
  import { BodyShort, Label } from "../../../typography";
6
+ import { useInputContext } from "../Input/inputContext";
7
+ import { useSelectedOptionsContext } from "../SelectedOptions/selectedOptionsContext";
9
8
  import filteredOptionsUtil from "./filtered-options-util";
9
+ import { useFilteredOptionsContext } from "./filteredOptionsContext";
10
10
 
11
11
  const FilteredOptions = () => {
12
12
  const {
@@ -60,7 +60,7 @@ const FilteredOptions = () => {
60
60
  activeDecendantId !== filteredOptionsUtil.getAddNewOptionId(id)
61
61
  ) {
62
62
  virtualFocus.moveFocusToElement(
63
- filteredOptionsUtil.getAddNewOptionId(id)
63
+ filteredOptionsUtil.getAddNewOptionId(id),
64
64
  );
65
65
  setIsMouseLastUsedInputDevice(true);
66
66
  }
@@ -114,7 +114,7 @@ const FilteredOptions = () => {
114
114
  activeDecendantId !== filteredOptionsUtil.getOptionId(id, option)
115
115
  ) {
116
116
  virtualFocus.moveFocusToElement(
117
- filteredOptionsUtil.getOptionId(id, option)
117
+ filteredOptionsUtil.getOptionId(id, option),
118
118
  );
119
119
  setIsMouseLastUsedInputDevice(true);
120
120
  }
@@ -1,19 +1,19 @@
1
+ import cl from "clsx";
1
2
  import React, {
2
- useState,
3
- useMemo,
3
+ SetStateAction,
4
4
  createContext,
5
- useContext,
6
5
  useCallback,
7
- SetStateAction,
6
+ useContext,
7
+ useMemo,
8
+ useState,
8
9
  } from "react";
9
- import cl from "clsx";
10
- import { useCustomOptionsContext } from "../customOptionsContext";
11
- import { useInputContext } from "../Input/inputContext";
12
- import usePrevious from "../../../util/usePrevious";
13
10
  import { useClientLayoutEffect } from "../../../util";
11
+ import usePrevious from "../../../util/usePrevious";
12
+ import { useInputContext } from "../Input/inputContext";
13
+ import { useCustomOptionsContext } from "../customOptionsContext";
14
+ import { ComboboxProps } from "../types";
14
15
  import filteredOptionsUtils from "./filtered-options-util";
15
16
  import useVirtualFocus, { VirtualFocusType } from "./useVirtualFocus";
16
- import { ComboboxProps } from "../types";
17
17
 
18
18
  type FilteredOptionsProps = {
19
19
  children: any;
@@ -46,7 +46,7 @@ type FilteredOptionsContextType = {
46
46
  virtualFocus: VirtualFocusType;
47
47
  };
48
48
  const FilteredOptionsContext = createContext<FilteredOptionsContextType>(
49
- {} as FilteredOptionsContextType
49
+ {} as FilteredOptionsContextType,
50
50
  );
51
51
 
52
52
  export const FilteredOptionsProvider = ({
@@ -99,9 +99,9 @@ export const FilteredOptionsProvider = ({
99
99
  [filteredOptionsUtils.getAddNewOptionId(id)]: allowNewValues
100
100
  ? value
101
101
  : undefined,
102
- }
102
+ },
103
103
  ),
104
- [allowNewValues, id, options, value]
104
+ [allowNewValues, id, options, value],
105
105
  );
106
106
 
107
107
  useClientLayoutEffect(() => {
@@ -112,7 +112,7 @@ export const FilteredOptionsProvider = ({
112
112
  filteredOptions.length > 0
113
113
  ) {
114
114
  setValue(
115
- `${searchTerm}${filteredOptions[0].substring(searchTerm.length)}`
115
+ `${searchTerm}${filteredOptions[0].substring(searchTerm.length)}`,
116
116
  );
117
117
  setSearchTerm(searchTerm);
118
118
  }
@@ -134,14 +134,14 @@ export const FilteredOptionsProvider = ({
134
134
  virtualFocus.moveFocusToTop();
135
135
  setInternalListOpen((oldState) => newState ?? !oldState);
136
136
  },
137
- [virtualFocus]
137
+ [virtualFocus],
138
138
  );
139
139
 
140
140
  const isValueNew = useMemo(
141
141
  () =>
142
142
  Boolean(value) &&
143
143
  !filteredOptionsMap[filteredOptionsUtils.getOptionId(id, value)],
144
- [filteredOptionsMap, id, value]
144
+ [filteredOptionsMap, id, value],
145
145
  );
146
146
 
147
147
  const ariaDescribedBy = useMemo(() => {
@@ -169,12 +169,12 @@ export const FilteredOptionsProvider = ({
169
169
  const currentOption = useMemo(
170
170
  () =>
171
171
  filteredOptionsMap[virtualFocus.activeElement?.getAttribute("id") || -1],
172
- [filteredOptionsMap, virtualFocus]
172
+ [filteredOptionsMap, virtualFocus],
173
173
  );
174
174
 
175
175
  const activeDecendantId = useMemo(
176
176
  () => virtualFocus.activeElement?.getAttribute("id") || undefined,
177
- [virtualFocus.activeElement]
177
+ [virtualFocus.activeElement],
178
178
  );
179
179
 
180
180
  const filteredOptionsState = {
@@ -205,7 +205,7 @@ export const useFilteredOptionsContext = () => {
205
205
  const context = useContext(FilteredOptionsContext);
206
206
  if (!context) {
207
207
  throw new Error(
208
- "useFilteredOptionsContext must be used within a FilteredOptionsProvider"
208
+ "useFilteredOptionsContext must be used within a FilteredOptionsProvider",
209
209
  );
210
210
  }
211
211
  return context;
@@ -14,7 +14,7 @@ export type VirtualFocusType = {
14
14
  };
15
15
 
16
16
  const useVirtualFocus = (
17
- containerRef: HTMLElement | null
17
+ containerRef: HTMLElement | null,
18
18
  ): VirtualFocusType => {
19
19
  const [index, setIndex] = useState(-1);
20
20
 
@@ -22,7 +22,7 @@ const useVirtualFocus = (
22
22
  ? Array.prototype.slice.call(containerRef?.children)
23
23
  : [];
24
24
  const elementsAbleToReceiveFocus = listOfAllChildren.filter(
25
- (child) => child.getAttribute("data-no-focus") !== "true"
25
+ (child) => child.getAttribute("data-no-focus") !== "true",
26
26
  );
27
27
 
28
28
  const activeElement = elementsAbleToReceiveFocus[index];
@@ -34,7 +34,7 @@ const useVirtualFocus = (
34
34
  const scrollToOption = (newIndex: number) => {
35
35
  const indexOfElementToScrollTo = Math.min(
36
36
  Math.max(newIndex, 0),
37
- containerRef?.children.length || 0
37
+ containerRef?.children.length || 0,
38
38
  );
39
39
  if (containerRef?.children[indexOfElementToScrollTo]) {
40
40
  const child = containerRef.children[indexOfElementToScrollTo];
@@ -53,14 +53,14 @@ const useVirtualFocus = (
53
53
  const moveFocusUp = () => _moveFocusAndScrollTo(Math.max(index - 1, -1));
54
54
  const moveFocusDown = () =>
55
55
  _moveFocusAndScrollTo(
56
- Math.min(index + 1, elementsAbleToReceiveFocus.length - 1)
56
+ Math.min(index + 1, elementsAbleToReceiveFocus.length - 1),
57
57
  );
58
58
  const moveFocusToTop = () => _moveFocusAndScrollTo(-1);
59
59
  const moveFocusToBottom = () =>
60
60
  _moveFocusAndScrollTo(elementsAbleToReceiveFocus.length - 1);
61
61
  const moveFocusToElement = (id: string) => {
62
62
  const thisElement = elementsAbleToReceiveFocus.find(
63
- (_element) => _element.getAttribute("id") === id
63
+ (_element) => _element.getAttribute("id") === id,
64
64
  );
65
65
  const indexOfElement = thisElement
66
66
  ? elementsAbleToReceiveFocus.indexOf(thisElement)
@@ -1,15 +1,15 @@
1
- import { omit } from "../../../util";
1
+ import cl from "clsx";
2
2
  import React, {
3
- useCallback,
4
- forwardRef,
5
- InputHTMLAttributes,
6
3
  ChangeEvent,
4
+ InputHTMLAttributes,
5
+ forwardRef,
6
+ useCallback,
7
7
  } from "react";
8
- import cl from "clsx";
9
- import { useSelectedOptionsContext } from "../SelectedOptions/selectedOptionsContext";
8
+ import { omit } from "../../../util";
9
+ import filteredOptionsUtil from "../FilteredOptions/filtered-options-util";
10
10
  import { useFilteredOptionsContext } from "../FilteredOptions/filteredOptionsContext";
11
+ import { useSelectedOptionsContext } from "../SelectedOptions/selectedOptionsContext";
11
12
  import { useInputContext } from "./inputContext";
12
- import filteredOptionsUtil from "../FilteredOptions/filtered-options-util";
13
13
 
14
14
  interface InputProps
15
15
  extends Omit<InputHTMLAttributes<HTMLInputElement>, "value"> {
@@ -45,7 +45,7 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
45
45
  (event: React.KeyboardEvent) => {
46
46
  const isTextInSelectedOptions = (text: string) => {
47
47
  return selectedOptions.find(
48
- (item) => item.toLocaleLowerCase() === text.toLocaleLowerCase()
48
+ (item) => item.toLocaleLowerCase() === text.toLocaleLowerCase(),
49
49
  );
50
50
  };
51
51
 
@@ -86,7 +86,7 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
86
86
  toggleIsListOpen,
87
87
  toggleOption,
88
88
  value,
89
- ]
89
+ ],
90
90
  );
91
91
 
92
92
  const handleKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {
@@ -151,7 +151,7 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
151
151
  setIsMouseLastUsedInputDevice,
152
152
  toggleIsListOpen,
153
153
  virtualFocus,
154
- ]
154
+ ],
155
155
  );
156
156
 
157
157
  const onChangeHandler = useCallback(
@@ -165,7 +165,7 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
165
165
  virtualFocus.moveFocusToTop();
166
166
  onChange(event);
167
167
  },
168
- [filteredOptions.length, virtualFocus, onChange, toggleIsListOpen]
168
+ [filteredOptions.length, virtualFocus, onChange, toggleIsListOpen],
169
169
  );
170
170
 
171
171
  return (
@@ -190,11 +190,11 @@ const Input = forwardRef<HTMLInputElement, InputProps>(
190
190
  inputClassName,
191
191
  "navds-combobox__input",
192
192
  "navds-body-short",
193
- `navds-body-short--${size}`
193
+ `navds-body-short--${size}`,
194
194
  )}
195
195
  />
196
196
  );
197
- }
197
+ },
198
198
  );
199
199
 
200
200
  export default Input;
@@ -49,14 +49,14 @@ export const InputContextProvider = ({ children, value: props }) => {
49
49
  id: externalId,
50
50
  size,
51
51
  },
52
- "comboboxfield"
52
+ "comboboxfield",
53
53
  );
54
54
  const inputRef = useRef<HTMLInputElement | null>(null);
55
55
  const [internalValue, setInternalValue] = useState<string>(defaultValue);
56
56
 
57
57
  const value = useMemo(
58
58
  () => String(externalValue ?? internalValue),
59
- [externalValue, internalValue]
59
+ [externalValue, internalValue],
60
60
  );
61
61
 
62
62
  const [searchTerm, setSearchTerm] = useState(value);
@@ -68,14 +68,14 @@ export const InputContextProvider = ({ children, value: props }) => {
68
68
  externalOnChange?.(event);
69
69
  setSearchTerm(newValue);
70
70
  },
71
- [externalValue, externalOnChange]
71
+ [externalValue, externalOnChange],
72
72
  );
73
73
 
74
74
  const setValue = useCallback(
75
75
  (text) => {
76
76
  setInternalValue(text);
77
77
  },
78
- [setInternalValue]
78
+ [setInternalValue],
79
79
  );
80
80
 
81
81
  const clearInput = useCallback(
@@ -85,7 +85,7 @@ export const InputContextProvider = ({ children, value: props }) => {
85
85
  setValue("");
86
86
  setSearchTerm("");
87
87
  },
88
- [externalOnChange, onClear, setValue]
88
+ [externalOnChange, onClear, setValue],
89
89
  );
90
90
 
91
91
  const focusInput = useCallback(() => {
@@ -123,7 +123,7 @@ export const useInputContext = () => {
123
123
  const context = useContext(InputContext);
124
124
  if (!context) {
125
125
  throw new Error(
126
- "useInputContext must be used within an InputContextProvider"
126
+ "useInputContext must be used within an InputContextProvider",
127
127
  );
128
128
  }
129
129
  return context;
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
2
  import { Chips } from "../../../chips";
3
- import { useSelectedOptionsContext } from "./selectedOptionsContext";
4
3
  import { useInputContext } from "../Input/inputContext";
4
+ import { useSelectedOptionsContext } from "./selectedOptionsContext";
5
5
 
6
6
  interface SelectedOptionsProps {
7
7
  selectedOptions?: string[];