@navikt/ds-react 5.6.4 → 5.7.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 (473) hide show
  1. package/_docs.json +297 -257
  2. package/cjs/accordion/AccordionContent.js +2 -2
  3. package/cjs/accordion/AccordionHeader.js +2 -2
  4. package/cjs/alert/Alert.js +2 -2
  5. package/cjs/button/Button.js +6 -5
  6. package/cjs/copybutton/CopyButton.js +8 -7
  7. package/cjs/date/DateInput.js +6 -5
  8. package/cjs/date/datepicker/DatePicker.js +6 -5
  9. package/cjs/date/datepicker/DatePickerStandalone.js +6 -6
  10. package/cjs/date/datepicker/parts/Caption.js +5 -4
  11. package/cjs/date/datepicker/parts/DropdownCaption.js +7 -6
  12. package/cjs/date/datepicker/parts/WeekRow.js +1 -1
  13. package/cjs/date/datepicker/types.js +2 -0
  14. package/cjs/date/monthpicker/MonthCaption.js +5 -4
  15. package/cjs/date/monthpicker/MonthPicker.js +4 -3
  16. package/cjs/date/monthpicker/MonthSelector.js +2 -2
  17. package/cjs/date/monthpicker/types.js +2 -0
  18. package/cjs/date/utils/parse-date.js +7 -7
  19. package/cjs/dropdown/Dropdown.js +4 -4
  20. package/cjs/dropdown/Menu/GroupedList/GroupedItem.js +2 -2
  21. package/cjs/dropdown/Menu/List/Item.js +3 -3
  22. package/cjs/dropdown/Menu/index.js +2 -2
  23. package/cjs/dropdown/Toggle.js +3 -3
  24. package/cjs/dropdown/context.js +5 -0
  25. package/cjs/expansion-card/ExpansionCard.js +3 -7
  26. package/cjs/expansion-card/ExpansionCardContent.js +4 -4
  27. package/cjs/expansion-card/ExpansionCardDescription.js +5 -5
  28. package/cjs/expansion-card/ExpansionCardHeader.js +3 -3
  29. package/cjs/expansion-card/ExpansionCardTitle.js +1 -1
  30. package/cjs/expansion-card/context.js +9 -0
  31. package/cjs/form/ConfirmationPanel.js +8 -6
  32. package/cjs/form/Fieldset/Fieldset.js +11 -10
  33. package/cjs/form/Fieldset/context.js +5 -0
  34. package/cjs/form/Fieldset/index.js +2 -1
  35. package/cjs/form/Select.js +8 -7
  36. package/cjs/form/Switch.js +7 -5
  37. package/cjs/form/TextField.js +6 -5
  38. package/cjs/form/Textarea.js +8 -7
  39. package/cjs/form/checkbox/Checkbox.js +1 -1
  40. package/cjs/form/checkbox/CheckboxGroup.js +4 -4
  41. package/cjs/form/checkbox/types.js +2 -0
  42. package/cjs/form/checkbox/useCheckbox.js +2 -2
  43. package/cjs/form/combobox/Combobox.js +6 -5
  44. package/cjs/form/combobox/FilteredOptions/FilteredOptions.js +6 -5
  45. package/cjs/form/combobox/Input/Input.js +2 -2
  46. package/cjs/form/combobox/SelectedOptions/SelectedOptions.js +3 -3
  47. package/cjs/form/error-summary/ErrorSummary.js +3 -3
  48. package/cjs/form/radio/RadioGroup.js +6 -6
  49. package/cjs/form/radio/types.js +2 -0
  50. package/cjs/form/radio/useRadio.js +2 -2
  51. package/cjs/form/search/Search.js +10 -9
  52. package/cjs/form/search/SearchButton.js +5 -5
  53. package/cjs/form/search/context.js +5 -0
  54. package/cjs/form/useFormField.js +5 -5
  55. package/cjs/guide-panel/Illustration.js +2 -2
  56. package/cjs/help-text/HelpText.js +5 -4
  57. package/cjs/link-panel/LinkPanel.js +2 -2
  58. package/cjs/link-panel/LinkPanelDescription.js +2 -2
  59. package/cjs/list/List.js +4 -8
  60. package/cjs/list/ListItem.js +2 -2
  61. package/cjs/list/context.js +9 -0
  62. package/cjs/list/types.js +2 -0
  63. package/cjs/loader/Loader.js +4 -4
  64. package/cjs/modal/Modal.js +24 -22
  65. package/cjs/modal/types.js +2 -0
  66. package/cjs/pagination/Pagination.js +5 -5
  67. package/cjs/pagination/PaginationItem.js +2 -2
  68. package/cjs/popover/Popover.js +4 -5
  69. package/cjs/stepper/Step.js +5 -5
  70. package/cjs/stepper/Stepper.js +4 -4
  71. package/cjs/stepper/context.js +5 -0
  72. package/cjs/table/ColumnHeader.js +3 -3
  73. package/cjs/table/DataCell.js +2 -2
  74. package/cjs/table/ExpandableRow.js +2 -2
  75. package/cjs/table/Table.js +7 -7
  76. package/cjs/table/context.js +5 -0
  77. package/cjs/table/types.js +2 -0
  78. package/cjs/tabs/Tab.js +4 -4
  79. package/cjs/tabs/TabList.js +5 -5
  80. package/cjs/tabs/Tabs.js +3 -3
  81. package/cjs/tabs/context.js +5 -0
  82. package/cjs/tag/Tag.js +2 -2
  83. package/cjs/timeline/period/NonClickablePeriod.js +1 -1
  84. package/cjs/timeline/period/types.js +2 -0
  85. package/cjs/toggle-group/ToggleGroup.js +7 -6
  86. package/cjs/toggle-group/ToggleItem.js +4 -4
  87. package/cjs/toggle-group/context.js +5 -0
  88. package/cjs/tooltip/Tooltip.js +4 -3
  89. package/cjs/util/TextareaAutoSize.js +4 -4
  90. package/cjs/util/index.js +7 -38
  91. package/cjs/util/omit.js +7 -0
  92. package/cjs/util/useClientLayoutEffect.js +10 -0
  93. package/cjs/util/useEventListener.js +17 -0
  94. package/esm/accordion/AccordionContent.js +1 -1
  95. package/esm/accordion/AccordionContent.js.map +1 -1
  96. package/esm/accordion/AccordionHeader.js +1 -1
  97. package/esm/accordion/AccordionHeader.js.map +1 -1
  98. package/esm/alert/Alert.js +1 -1
  99. package/esm/alert/Alert.js.map +1 -1
  100. package/esm/button/Button.d.ts +1 -1
  101. package/esm/button/Button.js +4 -3
  102. package/esm/button/Button.js.map +1 -1
  103. package/esm/chips/Chips.d.ts +1 -1
  104. package/esm/chips/Toggle.d.ts +1 -1
  105. package/esm/copybutton/CopyButton.d.ts +7 -7
  106. package/esm/copybutton/CopyButton.js +7 -6
  107. package/esm/copybutton/CopyButton.js.map +1 -1
  108. package/esm/date/DateInput.js +2 -1
  109. package/esm/date/DateInput.js.map +1 -1
  110. package/esm/date/datepicker/DatePicker.d.ts +5 -105
  111. package/esm/date/datepicker/DatePicker.js +4 -3
  112. package/esm/date/datepicker/DatePicker.js.map +1 -1
  113. package/esm/date/datepicker/DatePickerStandalone.d.ts +1 -1
  114. package/esm/date/datepicker/DatePickerStandalone.js +5 -5
  115. package/esm/date/datepicker/DatePickerStandalone.js.map +1 -1
  116. package/esm/date/datepicker/parts/Caption.js +2 -1
  117. package/esm/date/datepicker/parts/Caption.js.map +1 -1
  118. package/esm/date/datepicker/parts/DropdownCaption.js +3 -2
  119. package/esm/date/datepicker/parts/DropdownCaption.js.map +1 -1
  120. package/esm/date/datepicker/parts/WeekRow.js +1 -1
  121. package/esm/date/datepicker/parts/WeekRow.js.map +1 -1
  122. package/esm/date/datepicker/types.d.ts +102 -0
  123. package/esm/date/datepicker/types.js +2 -0
  124. package/esm/date/datepicker/types.js.map +1 -0
  125. package/esm/date/hooks/useMonthPicker.d.ts +1 -1
  126. package/esm/date/index.d.ts +4 -3
  127. package/esm/date/index.js +1 -1
  128. package/esm/date/index.js.map +1 -1
  129. package/esm/date/monthpicker/MonthCaption.js +2 -1
  130. package/esm/date/monthpicker/MonthCaption.js.map +1 -1
  131. package/esm/date/monthpicker/MonthPicker.d.ts +5 -86
  132. package/esm/date/monthpicker/MonthPicker.js +3 -2
  133. package/esm/date/monthpicker/MonthPicker.js.map +1 -1
  134. package/esm/date/monthpicker/MonthPickerStandalone.d.ts +1 -1
  135. package/esm/date/monthpicker/MonthPickerStandalone.js.map +1 -1
  136. package/esm/date/monthpicker/MonthSelector.js +1 -1
  137. package/esm/date/monthpicker/MonthSelector.js.map +1 -1
  138. package/esm/date/monthpicker/types.d.ts +83 -0
  139. package/esm/date/monthpicker/types.js +2 -0
  140. package/esm/date/monthpicker/types.js.map +1 -0
  141. package/esm/date/utils/parse-date.js +1 -1
  142. package/esm/date/utils/parse-date.js.map +1 -1
  143. package/esm/dropdown/Dropdown.d.ts +1 -9
  144. package/esm/dropdown/Dropdown.js +3 -3
  145. package/esm/dropdown/Dropdown.js.map +1 -1
  146. package/esm/dropdown/Menu/GroupedList/GroupedItem.d.ts +1 -1
  147. package/esm/dropdown/Menu/GroupedList/GroupedItem.js +1 -1
  148. package/esm/dropdown/Menu/GroupedList/GroupedItem.js.map +1 -1
  149. package/esm/dropdown/Menu/GroupedList/index.d.ts +1 -1
  150. package/esm/dropdown/Menu/List/Item.d.ts +1 -1
  151. package/esm/dropdown/Menu/List/Item.js +2 -2
  152. package/esm/dropdown/Menu/List/Item.js.map +1 -1
  153. package/esm/dropdown/Menu/List/index.d.ts +1 -1
  154. package/esm/dropdown/Menu/index.js +1 -1
  155. package/esm/dropdown/Menu/index.js.map +1 -1
  156. package/esm/dropdown/Toggle.js +2 -2
  157. package/esm/dropdown/Toggle.js.map +1 -1
  158. package/esm/dropdown/context.d.ts +9 -0
  159. package/esm/dropdown/context.js +3 -0
  160. package/esm/dropdown/context.js.map +1 -0
  161. package/esm/expansion-card/ExpansionCard.d.ts +1 -7
  162. package/esm/expansion-card/ExpansionCard.js +2 -6
  163. package/esm/expansion-card/ExpansionCard.js.map +1 -1
  164. package/esm/expansion-card/ExpansionCardContent.js +2 -2
  165. package/esm/expansion-card/ExpansionCardContent.js.map +1 -1
  166. package/esm/expansion-card/ExpansionCardDescription.js +3 -3
  167. package/esm/expansion-card/ExpansionCardDescription.js.map +1 -1
  168. package/esm/expansion-card/ExpansionCardHeader.js +2 -2
  169. package/esm/expansion-card/ExpansionCardHeader.js.map +1 -1
  170. package/esm/expansion-card/ExpansionCardTitle.d.ts +1 -1
  171. package/esm/expansion-card/ExpansionCardTitle.js +1 -1
  172. package/esm/expansion-card/ExpansionCardTitle.js.map +1 -1
  173. package/esm/expansion-card/context.d.ts +7 -0
  174. package/esm/expansion-card/context.js +7 -0
  175. package/esm/expansion-card/context.js.map +1 -0
  176. package/esm/form/ConfirmationPanel.d.ts +1 -1
  177. package/esm/form/ConfirmationPanel.js +4 -2
  178. package/esm/form/ConfirmationPanel.js.map +1 -1
  179. package/esm/form/Fieldset/Fieldset.d.ts +0 -23
  180. package/esm/form/Fieldset/Fieldset.js +4 -3
  181. package/esm/form/Fieldset/Fieldset.js.map +1 -1
  182. package/esm/form/Fieldset/context.d.ts +24 -0
  183. package/esm/form/Fieldset/context.js +3 -0
  184. package/esm/form/Fieldset/context.js.map +1 -0
  185. package/esm/form/Fieldset/index.d.ts +2 -1
  186. package/esm/form/Fieldset/index.js +2 -1
  187. package/esm/form/Fieldset/index.js.map +1 -1
  188. package/esm/form/Select.js +4 -3
  189. package/esm/form/Select.js.map +1 -1
  190. package/esm/form/Switch.js +3 -1
  191. package/esm/form/Switch.js.map +1 -1
  192. package/esm/form/TextField.js +2 -1
  193. package/esm/form/TextField.js.map +1 -1
  194. package/esm/form/Textarea.js +2 -1
  195. package/esm/form/Textarea.js.map +1 -1
  196. package/esm/form/checkbox/Checkbox.d.ts +2 -34
  197. package/esm/form/checkbox/Checkbox.js +1 -1
  198. package/esm/form/checkbox/Checkbox.js.map +1 -1
  199. package/esm/form/checkbox/CheckboxGroup.d.ts +1 -1
  200. package/esm/form/checkbox/CheckboxGroup.js +2 -2
  201. package/esm/form/checkbox/CheckboxGroup.js.map +1 -1
  202. package/esm/form/checkbox/index.d.ts +2 -1
  203. package/esm/form/checkbox/index.js.map +1 -1
  204. package/esm/form/checkbox/types.d.ts +34 -0
  205. package/esm/form/checkbox/types.js +2 -0
  206. package/esm/form/checkbox/types.js.map +1 -0
  207. package/esm/form/checkbox/useCheckbox.d.ts +1 -1
  208. package/esm/form/checkbox/useCheckbox.js +1 -1
  209. package/esm/form/checkbox/useCheckbox.js.map +1 -1
  210. package/esm/form/combobox/Combobox.d.ts +1 -1
  211. package/esm/form/combobox/Combobox.js +2 -1
  212. package/esm/form/combobox/Combobox.js.map +1 -1
  213. package/esm/form/combobox/FilteredOptions/FilteredOptions.js +2 -1
  214. package/esm/form/combobox/FilteredOptions/FilteredOptions.js.map +1 -1
  215. package/esm/form/combobox/Input/Input.js +1 -1
  216. package/esm/form/combobox/Input/Input.js.map +1 -1
  217. package/esm/form/combobox/SelectedOptions/SelectedOptions.js +1 -1
  218. package/esm/form/combobox/SelectedOptions/SelectedOptions.js.map +1 -1
  219. package/esm/form/error-summary/ErrorSummary.js +1 -1
  220. package/esm/form/error-summary/ErrorSummary.js.map +1 -1
  221. package/esm/form/error-summary/ErrorSummaryItem.d.ts +1 -1
  222. package/esm/form/radio/Radio.d.ts +2 -16
  223. package/esm/form/radio/Radio.js.map +1 -1
  224. package/esm/form/radio/RadioGroup.d.ts +1 -1
  225. package/esm/form/radio/RadioGroup.js +3 -3
  226. package/esm/form/radio/RadioGroup.js.map +1 -1
  227. package/esm/form/radio/index.d.ts +2 -1
  228. package/esm/form/radio/index.js.map +1 -1
  229. package/esm/form/radio/types.d.ts +16 -0
  230. package/esm/form/radio/types.js +2 -0
  231. package/esm/form/radio/types.js.map +1 -0
  232. package/esm/form/radio/useRadio.d.ts +1 -1
  233. package/esm/form/radio/useRadio.js +1 -1
  234. package/esm/form/radio/useRadio.js.map +1 -1
  235. package/esm/form/search/Search.d.ts +0 -7
  236. package/esm/form/search/Search.js +4 -3
  237. package/esm/form/search/Search.js.map +1 -1
  238. package/esm/form/search/SearchButton.d.ts +1 -1
  239. package/esm/form/search/SearchButton.js +3 -3
  240. package/esm/form/search/SearchButton.js.map +1 -1
  241. package/esm/form/search/context.d.ts +8 -0
  242. package/esm/form/search/context.js +3 -0
  243. package/esm/form/search/context.js.map +1 -0
  244. package/esm/form/useFormField.js +3 -3
  245. package/esm/form/useFormField.js.map +1 -1
  246. package/esm/guide-panel/Illustration.js +1 -1
  247. package/esm/guide-panel/Illustration.js.map +1 -1
  248. package/esm/help-text/HelpText.d.ts +1 -1
  249. package/esm/help-text/HelpText.js +2 -1
  250. package/esm/help-text/HelpText.js.map +1 -1
  251. package/esm/link-panel/LinkPanel.d.ts +1 -1
  252. package/esm/link-panel/LinkPanel.js +1 -1
  253. package/esm/link-panel/LinkPanel.js.map +1 -1
  254. package/esm/link-panel/LinkPanelDescription.js +1 -1
  255. package/esm/link-panel/LinkPanelDescription.js.map +1 -1
  256. package/esm/list/List.d.ts +4 -35
  257. package/esm/list/List.js +2 -6
  258. package/esm/list/List.js.map +1 -1
  259. package/esm/list/ListItem.js +1 -1
  260. package/esm/list/ListItem.js.map +1 -1
  261. package/esm/list/context.d.ts +9 -0
  262. package/esm/list/context.js +7 -0
  263. package/esm/list/context.js.map +1 -0
  264. package/esm/list/index.d.ts +1 -1
  265. package/esm/list/types.d.ts +27 -0
  266. package/esm/list/types.js +2 -0
  267. package/esm/list/types.js.map +1 -0
  268. package/esm/loader/Loader.js +2 -2
  269. package/esm/loader/Loader.js.map +1 -1
  270. package/esm/modal/Modal.d.ts +2 -64
  271. package/esm/modal/Modal.js +8 -6
  272. package/esm/modal/Modal.js.map +1 -1
  273. package/esm/modal/ModalUtils.d.ts +1 -1
  274. package/esm/modal/index.d.ts +3 -2
  275. package/esm/modal/index.js.map +1 -1
  276. package/esm/modal/types.d.ts +64 -0
  277. package/esm/modal/types.js +2 -0
  278. package/esm/modal/types.js.map +1 -0
  279. package/esm/pagination/Pagination.js +1 -1
  280. package/esm/pagination/Pagination.js.map +1 -1
  281. package/esm/pagination/PaginationItem.d.ts +2 -1
  282. package/esm/pagination/PaginationItem.js +1 -1
  283. package/esm/pagination/PaginationItem.js.map +1 -1
  284. package/esm/popover/Popover.d.ts +5 -0
  285. package/esm/popover/Popover.js +5 -6
  286. package/esm/popover/Popover.js.map +1 -1
  287. package/esm/stepper/Step.d.ts +1 -1
  288. package/esm/stepper/Step.js +2 -2
  289. package/esm/stepper/Step.js.map +1 -1
  290. package/esm/stepper/Stepper.d.ts +2 -11
  291. package/esm/stepper/Stepper.js +2 -2
  292. package/esm/stepper/Stepper.js.map +1 -1
  293. package/esm/stepper/context.d.ts +10 -0
  294. package/esm/stepper/context.js +3 -0
  295. package/esm/stepper/context.js.map +1 -0
  296. package/esm/table/ColumnHeader.js +2 -2
  297. package/esm/table/ColumnHeader.js.map +1 -1
  298. package/esm/table/DataCell.js +1 -1
  299. package/esm/table/DataCell.js.map +1 -1
  300. package/esm/table/ExpandableRow.js +1 -1
  301. package/esm/table/ExpandableRow.js.map +1 -1
  302. package/esm/table/Table.d.ts +15 -23
  303. package/esm/table/Table.js +5 -5
  304. package/esm/table/Table.js.map +1 -1
  305. package/esm/table/context.d.ts +7 -0
  306. package/esm/table/context.js +3 -0
  307. package/esm/table/context.js.map +1 -0
  308. package/esm/table/index.d.ts +2 -1
  309. package/esm/table/index.js.map +1 -1
  310. package/esm/table/types.d.ts +4 -0
  311. package/esm/table/types.js +2 -0
  312. package/esm/table/types.js.map +1 -0
  313. package/esm/tabs/Tab.d.ts +1 -1
  314. package/esm/tabs/Tab.js +2 -2
  315. package/esm/tabs/Tab.js.map +1 -1
  316. package/esm/tabs/TabList.js +2 -2
  317. package/esm/tabs/TabList.js.map +1 -1
  318. package/esm/tabs/Tabs.d.ts +0 -6
  319. package/esm/tabs/Tabs.js +2 -2
  320. package/esm/tabs/Tabs.js.map +1 -1
  321. package/esm/tabs/context.d.ts +8 -0
  322. package/esm/tabs/context.js +3 -0
  323. package/esm/tabs/context.js.map +1 -0
  324. package/esm/tabs/index.d.ts +1 -1
  325. package/esm/tabs/index.js.map +1 -1
  326. package/esm/tag/Tag.js +1 -1
  327. package/esm/tag/Tag.js.map +1 -1
  328. package/esm/timeline/period/ClickablePeriod.d.ts +1 -1
  329. package/esm/timeline/period/NonClickablePeriod.d.ts +1 -1
  330. package/esm/timeline/period/NonClickablePeriod.js +1 -1
  331. package/esm/timeline/period/NonClickablePeriod.js.map +1 -1
  332. package/esm/timeline/period/index.d.ts +0 -13
  333. package/esm/timeline/period/index.js.map +1 -1
  334. package/esm/timeline/period/types.d.ts +14 -0
  335. package/esm/timeline/period/types.js +2 -0
  336. package/esm/timeline/period/types.js.map +1 -0
  337. package/esm/toggle-group/ToggleGroup.d.ts +0 -4
  338. package/esm/toggle-group/ToggleGroup.js +4 -3
  339. package/esm/toggle-group/ToggleGroup.js.map +1 -1
  340. package/esm/toggle-group/ToggleItem.js +3 -3
  341. package/esm/toggle-group/ToggleItem.js.map +1 -1
  342. package/esm/toggle-group/context.d.ts +6 -0
  343. package/esm/toggle-group/context.js +3 -0
  344. package/esm/toggle-group/context.js.map +1 -0
  345. package/esm/tooltip/Tooltip.js +2 -1
  346. package/esm/tooltip/Tooltip.js.map +1 -1
  347. package/esm/util/TextareaAutoSize.js +1 -1
  348. package/esm/util/TextareaAutoSize.js.map +1 -1
  349. package/esm/util/index.d.ts +5 -11
  350. package/esm/util/index.js +5 -33
  351. package/esm/util/index.js.map +1 -1
  352. package/esm/util/omit.d.ts +1 -0
  353. package/esm/util/omit.js +4 -0
  354. package/esm/util/omit.js.map +1 -0
  355. package/esm/util/useClientLayoutEffect.d.ts +2 -0
  356. package/esm/util/useClientLayoutEffect.js +8 -0
  357. package/esm/util/useClientLayoutEffect.js.map +1 -0
  358. package/esm/util/useEventListener.d.ts +5 -0
  359. package/esm/util/useEventListener.js +14 -0
  360. package/esm/util/useEventListener.js.map +1 -0
  361. package/package.json +3 -3
  362. package/src/accordion/AccordionContent.tsx +1 -1
  363. package/src/accordion/AccordionHeader.tsx +1 -1
  364. package/src/alert/Alert.tsx +1 -1
  365. package/src/button/Button.tsx +9 -3
  366. package/src/chips/Chips.tsx +1 -1
  367. package/src/chips/Toggle.tsx +1 -1
  368. package/src/copybutton/CopyButton.tsx +28 -29
  369. package/src/copybutton/copy-button.stories.tsx +24 -22
  370. package/src/date/DateInput.tsx +2 -1
  371. package/src/date/datepicker/DatePicker.tsx +9 -124
  372. package/src/date/datepicker/DatePickerStandalone.tsx +9 -9
  373. package/src/date/datepicker/parts/Caption.tsx +3 -1
  374. package/src/date/datepicker/parts/DropdownCaption.tsx +3 -2
  375. package/src/date/datepicker/parts/WeekRow.tsx +1 -1
  376. package/src/date/datepicker/types.ts +109 -0
  377. package/src/date/hooks/useMonthPicker.tsx +1 -1
  378. package/src/date/index.ts +5 -7
  379. package/src/date/monthpicker/MonthCaption.tsx +2 -1
  380. package/src/date/monthpicker/MonthPicker.tsx +9 -92
  381. package/src/date/monthpicker/MonthPickerStandalone.tsx +1 -1
  382. package/src/date/monthpicker/MonthSelector.tsx +1 -1
  383. package/src/date/monthpicker/types.ts +83 -0
  384. package/src/date/utils/parse-date.ts +1 -1
  385. package/src/dropdown/Dropdown.tsx +3 -12
  386. package/src/dropdown/Menu/GroupedList/GroupedItem.tsx +2 -2
  387. package/src/dropdown/Menu/GroupedList/index.tsx +1 -1
  388. package/src/dropdown/Menu/List/Item.tsx +3 -3
  389. package/src/dropdown/Menu/List/index.tsx +1 -1
  390. package/src/dropdown/Menu/index.tsx +1 -1
  391. package/src/dropdown/Toggle.tsx +2 -2
  392. package/src/dropdown/context.ts +11 -0
  393. package/src/expansion-card/ExpansionCard.tsx +3 -14
  394. package/src/expansion-card/ExpansionCardContent.tsx +2 -2
  395. package/src/expansion-card/ExpansionCardDescription.tsx +3 -3
  396. package/src/expansion-card/ExpansionCardHeader.tsx +2 -2
  397. package/src/expansion-card/ExpansionCardTitle.tsx +2 -2
  398. package/src/expansion-card/context.ts +13 -0
  399. package/src/form/ConfirmationPanel.tsx +4 -2
  400. package/src/form/Fieldset/Fieldset.tsx +4 -29
  401. package/src/form/Fieldset/context.ts +26 -0
  402. package/src/form/Fieldset/index.ts +2 -5
  403. package/src/form/Select.tsx +4 -4
  404. package/src/form/Switch.tsx +3 -1
  405. package/src/form/TextField.tsx +2 -1
  406. package/src/form/Textarea.tsx +2 -1
  407. package/src/form/checkbox/Checkbox.tsx +3 -38
  408. package/src/form/checkbox/CheckboxGroup.tsx +2 -2
  409. package/src/form/checkbox/index.ts +2 -1
  410. package/src/form/checkbox/types.ts +37 -0
  411. package/src/form/checkbox/useCheckbox.ts +2 -1
  412. package/src/form/combobox/Combobox.tsx +2 -1
  413. package/src/form/combobox/FilteredOptions/FilteredOptions.tsx +2 -1
  414. package/src/form/combobox/Input/Input.tsx +1 -1
  415. package/src/form/combobox/SelectedOptions/SelectedOptions.tsx +1 -1
  416. package/src/form/error-summary/ErrorSummary.tsx +1 -1
  417. package/src/form/error-summary/ErrorSummaryItem.tsx +1 -1
  418. package/src/form/radio/Radio.tsx +2 -19
  419. package/src/form/radio/RadioGroup.tsx +3 -3
  420. package/src/form/radio/index.ts +2 -1
  421. package/src/form/radio/types.ts +19 -0
  422. package/src/form/radio/useRadio.ts +2 -2
  423. package/src/form/search/Search.tsx +5 -14
  424. package/src/form/search/SearchButton.tsx +3 -3
  425. package/src/form/search/context.ts +10 -0
  426. package/src/form/useFormField.ts +3 -3
  427. package/src/guide-panel/Illustration.tsx +1 -1
  428. package/src/help-text/HelpText.tsx +2 -1
  429. package/src/link-panel/LinkPanel.tsx +2 -1
  430. package/src/link-panel/LinkPanelDescription.tsx +1 -1
  431. package/src/list/List.tsx +8 -45
  432. package/src/list/ListItem.tsx +1 -1
  433. package/src/list/context.ts +14 -0
  434. package/src/list/index.ts +1 -1
  435. package/src/list/types.ts +26 -0
  436. package/src/loader/Loader.tsx +2 -2
  437. package/src/modal/Modal.tsx +9 -71
  438. package/src/modal/ModalUtils.ts +1 -1
  439. package/src/modal/index.ts +3 -2
  440. package/src/modal/types.ts +64 -0
  441. package/src/pagination/Pagination.tsx +1 -1
  442. package/src/pagination/PaginationItem.tsx +2 -1
  443. package/src/popover/Popover.tsx +10 -5
  444. package/src/stepper/Step.tsx +3 -2
  445. package/src/stepper/Stepper.tsx +3 -13
  446. package/src/stepper/context.ts +11 -0
  447. package/src/table/ColumnHeader.tsx +3 -3
  448. package/src/table/DataCell.tsx +1 -1
  449. package/src/table/ExpandableRow.tsx +1 -1
  450. package/src/table/Table.tsx +17 -27
  451. package/src/table/context.ts +9 -0
  452. package/src/table/index.ts +2 -1
  453. package/src/table/types.ts +4 -0
  454. package/src/tabs/Tab.tsx +3 -2
  455. package/src/tabs/TabList.tsx +2 -2
  456. package/src/tabs/Tabs.tsx +2 -9
  457. package/src/tabs/context.ts +9 -0
  458. package/src/tabs/index.ts +1 -1
  459. package/src/tag/Tag.tsx +1 -1
  460. package/src/timeline/period/ClickablePeriod.tsx +1 -1
  461. package/src/timeline/period/NonClickablePeriod.tsx +2 -2
  462. package/src/timeline/period/index.tsx +0 -14
  463. package/src/timeline/period/types.ts +13 -0
  464. package/src/timeline/utils/filter.ts +1 -1
  465. package/src/toggle-group/ToggleGroup.tsx +4 -15
  466. package/src/toggle-group/ToggleItem.tsx +3 -3
  467. package/src/toggle-group/context.ts +9 -0
  468. package/src/tooltip/Tooltip.tsx +2 -1
  469. package/src/util/TextareaAutoSize.tsx +1 -1
  470. package/src/util/index.ts +5 -70
  471. package/src/util/omit.ts +10 -0
  472. package/src/util/useClientLayoutEffect.ts +11 -0
  473. package/src/util/useEventListener.ts +32 -0
@@ -1,6 +1,6 @@
1
1
  import cl from "clsx";
2
2
  import React, { forwardRef, useContext } from "react";
3
- import { Heading } from "../typography/Heading";
3
+ import { Heading } from "../typography";
4
4
  import { AccordionContext } from "./AccordionContext";
5
5
  import { AccordionItemContext } from "./AccordionItem";
6
6
  import { ChevronDownIcon } from "@navikt/aksel-icons";
@@ -7,7 +7,7 @@ import {
7
7
  } from "@navikt/aksel-icons";
8
8
  import cl from "clsx";
9
9
  import React, { forwardRef } from "react";
10
- import { BodyLong } from "../typography/BodyLong";
10
+ import { BodyLong } from "../typography";
11
11
  import { Button } from "../button";
12
12
 
13
13
  export interface AlertProps extends React.HTMLAttributes<HTMLDivElement> {
@@ -1,7 +1,13 @@
1
- import React, { useRef, useState, forwardRef, useMemo } from "react";
2
1
  import cl from "clsx";
3
- import { OverridableComponent, Loader, mergeRefs, Label } from "../";
4
- import { omit, useClientLayoutEffect } from "../util";
2
+ import React, { forwardRef, useMemo, useRef, useState } from "react";
3
+ import { Loader } from "../loader";
4
+ import { Label } from "../typography";
5
+ import {
6
+ mergeRefs,
7
+ OverridableComponent,
8
+ omit,
9
+ useClientLayoutEffect,
10
+ } from "../util";
5
11
 
6
12
  export interface ButtonProps
7
13
  extends React.ButtonHTMLAttributes<HTMLButtonElement> {
@@ -2,7 +2,7 @@ import cl from "clsx";
2
2
  import React, { forwardRef, HTMLAttributes } from "react";
3
3
  import ToggleChips, { ToggleChipsProps } from "./Toggle";
4
4
  import RemovableChips, { RemovableChipsProps } from "./Removable";
5
- import { OverridableComponent } from "../util/OverridableComponent";
5
+ import { OverridableComponent } from "../util";
6
6
 
7
7
  export interface ChipsProps extends HTMLAttributes<HTMLUListElement> {
8
8
  children: React.ReactNode;
@@ -1,6 +1,6 @@
1
1
  import cl from "clsx";
2
2
  import React, { forwardRef } from "react";
3
- import { OverridableComponent } from "../util/OverridableComponent";
3
+ import { OverridableComponent } from "../util";
4
4
 
5
5
  export interface ToggleChipsProps
6
6
  extends React.ButtonHTMLAttributes<HTMLButtonElement> {
@@ -8,13 +8,13 @@ import React, {
8
8
  useState,
9
9
  } from "react";
10
10
  import copy from "../util/copy";
11
- import Label from "../typography/Label";
11
+ import { Label } from "../typography";
12
12
 
13
13
  export interface CopyButtonProps
14
14
  extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, "children"> {
15
15
  /**
16
+ * 'xsmall' should only be used in tables
16
17
  * @default "medium"
17
- * xsmall should only be used in tables/
18
18
  */
19
19
  size?: "medium" | "small" | "xsmall";
20
20
  /**
@@ -30,12 +30,12 @@ export interface CopyButtonProps
30
30
  */
31
31
  text?: string;
32
32
  /**
33
- * Text shown when button is clicked
34
- * Only set if used with 'text'-prop
33
+ * Text shown when button is clicked.
34
+ * Only set if used with `text`-prop.
35
35
  */
36
36
  activeText?: string;
37
37
  /**
38
- * Callback when 'copied'-state is active
38
+ * Callback when 'copied'-state is active
39
39
  */
40
40
  onActiveChange?: (state: boolean) => void;
41
41
  /**
@@ -54,17 +54,17 @@ export interface CopyButtonProps
54
54
  */
55
55
  activeDuration?: number;
56
56
  /**
57
- * * accessible label for icon (ignored if text is set)
57
+ * Accessible label for icon (ignored if text is set)
58
58
  * @default 'Kopier'
59
59
  */
60
60
  title?: string;
61
61
  /**
62
- * accessible label for icon in active-state (ignored if text is set)
62
+ * Accessible label for icon in active-state (ignored if text is set)
63
63
  * @default 'Kopiert'
64
64
  */
65
65
  activeTitle?: string;
66
66
  /**
67
- * Icon position in Button
67
+ * Icon position in button
68
68
  * @default "left"
69
69
  */
70
70
  iconPosition?: "left" | "right";
@@ -125,24 +125,23 @@ export const CopyButton = forwardRef<HTMLButtonElement, CopyButtonProps>(
125
125
  }, activeDuration);
126
126
  };
127
127
 
128
- const CopyIcon = () => {
129
- return active ? (
130
- <span className="navds-copybutton__icon">
131
- {activeIcon ?? (
132
- <CheckmarkIcon
133
- aria-hidden={!!text}
134
- title={text ? undefined : activeTitle}
135
- />
136
- )}
137
- </span>
138
- ) : (
139
- <span className="navds-copybutton__icon">
140
- {icon ?? (
141
- <FilesIcon aria-hidden={!!text} title={text ? undefined : title} />
142
- )}
143
- </span>
144
- );
145
- };
128
+ const copyIcon = (
129
+ <span className="navds-copybutton__icon">
130
+ {active
131
+ ? activeIcon ?? (
132
+ <CheckmarkIcon
133
+ aria-hidden={!!text}
134
+ title={text ? undefined : activeTitle}
135
+ />
136
+ )
137
+ : icon ?? (
138
+ <FilesIcon
139
+ aria-hidden={!!text}
140
+ title={text ? undefined : title}
141
+ />
142
+ )}
143
+ </span>
144
+ );
146
145
 
147
146
  return (
148
147
  <button
@@ -157,14 +156,14 @@ export const CopyButton = forwardRef<HTMLButtonElement, CopyButtonProps>(
157
156
  `navds-copybutton--${variant}`,
158
157
  {
159
158
  "navds-copybutton--icon-only": !text,
159
+ "navds-copybutton--icon-right": iconPosition === "right",
160
160
  "navds-copybutton--active": active,
161
161
  }
162
162
  )}
163
163
  onClick={handleClick}
164
164
  >
165
165
  <span className="navds-copybutton__content">
166
- {iconPosition === "left" && <CopyIcon />}
167
-
166
+ {iconPosition === "left" && copyIcon}
168
167
  {text &&
169
168
  (active ? (
170
169
  <Label
@@ -183,7 +182,7 @@ export const CopyButton = forwardRef<HTMLButtonElement, CopyButtonProps>(
183
182
  {text}
184
183
  </Label>
185
184
  ))}
186
- {iconPosition === "right" && <CopyIcon />}
185
+ {iconPosition === "right" && copyIcon}
187
186
  </span>
188
187
  </button>
189
188
  );
@@ -1,38 +1,40 @@
1
- import { LinkIcon, ThumbUpIcon } from "@navikt/aksel-icons";
2
- import { userEvent, within } from "@storybook/testing-library";
3
1
  import React from "react";
4
- import { CopyButton } from ".";
2
+ import { userEvent, within } from "@storybook/testing-library";
3
+ import { Meta, StoryObj } from "@storybook/react";
4
+ import { LinkIcon, ThumbUpIcon } from "@navikt/aksel-icons";
5
5
  import { Tooltip } from "../tooltip";
6
+ import { CopyButton } from ".";
6
7
 
7
- export default {
8
+ const meta: Meta<typeof CopyButton> = {
8
9
  title: "ds-react/CopyButton",
9
10
  component: CopyButton,
11
+ };
12
+ export default meta;
13
+
14
+ type Story = StoryObj<typeof CopyButton>;
15
+
16
+ export const Default: Story = {
17
+ render: (props) => <CopyButton {...props} />,
10
18
  argTypes: {
11
19
  size: {
12
- defaultValue: "medium",
13
20
  control: { type: "radio" },
14
- options: ["small", "medium", "xsmall"],
21
+ options: ["medium", "small", "xsmall"],
15
22
  },
16
23
  variant: {
17
- defaultValue: undefined,
18
24
  control: { type: "radio" },
19
25
  options: ["neutral", "action"],
20
26
  },
21
27
  },
22
- };
23
-
24
- export const Default = {
25
- render: (args) => <CopyButton {...args} />,
26
28
  args: {
27
29
  size: "medium",
28
- duration: 2000,
30
+ activeDuration: 2000,
29
31
  copyText: "3.14",
30
32
  text: "",
31
33
  activeText: "",
32
34
  },
33
35
  };
34
36
 
35
- export const Interaction = {
37
+ export const Interaction: Story = {
36
38
  render: () => (
37
39
  <CopyButton
38
40
  copyText="3.14"
@@ -50,7 +52,7 @@ export const Interaction = {
50
52
  },
51
53
  };
52
54
 
53
- export const Variants = {
55
+ export const Variants: Story = {
54
56
  render: () => (
55
57
  <div className="colgap">
56
58
  <CopyButton copyText="3.14" variant="action" text="Kopier" />
@@ -60,7 +62,7 @@ export const Variants = {
60
62
  ),
61
63
  };
62
64
 
63
- export const IconPosition = {
65
+ export const IconPosition: Story = {
64
66
  render: () => (
65
67
  <div className="colgap">
66
68
  <CopyButton copyText="3.14" iconPosition="left" text="Kopier" />
@@ -70,7 +72,7 @@ export const IconPosition = {
70
72
  ),
71
73
  };
72
74
 
73
- export const Sizes = {
75
+ export const Sizes: Story = {
74
76
  render: () => (
75
77
  <div className="colgap">
76
78
  <div className="rowgap">
@@ -115,7 +117,7 @@ export const Sizes = {
115
117
  ),
116
118
  };
117
119
 
118
- export const Texts = {
120
+ export const Texts: Story = {
119
121
  render: () => (
120
122
  <div className="colgap">
121
123
  <div>
@@ -145,7 +147,7 @@ export const Texts = {
145
147
  ),
146
148
  };
147
149
 
148
- export const Icons = {
150
+ export const Icons: Story = {
149
151
  render: () => (
150
152
  <div className="rowgap">
151
153
  <div>
@@ -175,7 +177,7 @@ export const Icons = {
175
177
  ),
176
178
  };
177
179
 
178
- export const InlineDemo = {
180
+ export const InlineDemo: Story = {
179
181
  render: () => (
180
182
  <div style={{ display: "flex", gap: "0.5rem", alignItems: "center" }}>
181
183
  <CopyButton size="small" copyText="3.14" /> Kopier dette feltet
@@ -183,7 +185,7 @@ export const InlineDemo = {
183
185
  ),
184
186
  };
185
187
 
186
- export const WithTooltip = {
188
+ export const WithTooltip: Story = {
187
189
  render: () => {
188
190
  return (
189
191
  <div>
@@ -195,11 +197,11 @@ export const WithTooltip = {
195
197
  },
196
198
  };
197
199
 
198
- export const Duration = {
200
+ export const Duration: Story = {
199
201
  render: () => <CopyButton copyText="3.14" activeDuration={300} />,
200
202
  };
201
203
 
202
- export const Disabled = {
204
+ export const Disabled: Story = {
203
205
  render: () => (
204
206
  <div className="colgap">
205
207
  <CopyButton copyText="3.14" disabled />
@@ -1,10 +1,11 @@
1
1
  import { CalendarIcon } from "@navikt/aksel-icons";
2
2
  import cl from "clsx";
3
3
  import React, { forwardRef, InputHTMLAttributes } from "react";
4
- import { BodyShort, ErrorMessage, Label, omit } from "..";
5
4
  import { FormFieldProps, useFormField } from "../form/useFormField";
6
5
  import { useDateInputContext } from "./context";
7
6
  import { ReadOnlyIcon } from "../form/ReadOnlyIcon";
7
+ import { BodyShort, ErrorMessage, Label } from "../typography";
8
+ import { omit } from "../util";
8
9
 
9
10
  export interface DateInputProps
10
11
  extends FormFieldProps,
@@ -1,20 +1,13 @@
1
1
  import cl from "clsx";
2
2
  import isWeekend from "date-fns/isWeekend";
3
3
  import React, { forwardRef, useRef, useState } from "react";
4
- import {
5
- DateRange,
6
- DayPicker,
7
- DayPickerBase,
8
- Matcher,
9
- isMatch,
10
- } from "react-day-picker";
11
- import { Popover, omit, useId } from "../..";
12
- import { DateInputProps, DatePickerInput } from "../DateInput";
4
+ import { DateRange, DayPicker, isMatch } from "react-day-picker";
5
+ import { Popover } from "../../popover";
6
+ import { omit, useId } from "../../util";
7
+ import { DatePickerInput } from "../DateInput";
13
8
  import { DateContext } from "../context";
14
9
  import { getLocaleFromString, labels } from "../utils";
15
- import DatePickerStandalone, {
16
- DatePickerStandaloneType,
17
- } from "./DatePickerStandalone";
10
+ import DatePickerStandalone from "./DatePickerStandalone";
18
11
  import Caption from "./parts/Caption";
19
12
  import DayButton from "./parts/DayButton";
20
13
  import DropdownCaption from "./parts/DropdownCaption";
@@ -22,114 +15,7 @@ import { HeadRow } from "./parts/HeadRow";
22
15
  import Row from "./parts/Row";
23
16
  import TableHead from "./parts/TableHead";
24
17
  import WeekNumber from "./parts/WeekNumber";
25
-
26
- export type SingleMode = {
27
- mode?: "single";
28
- onSelect?: (val?: Date) => void;
29
- selected?: Date;
30
- defaultSelected?: Date;
31
- onWeekNumberClick?: never;
32
- };
33
-
34
- export type MultipleMode = {
35
- mode: "multiple";
36
- onSelect?: (val?: Date[]) => void;
37
- selected?: Date[];
38
- defaultSelected?: Date[];
39
- min?: number;
40
- max?: number;
41
- /**
42
- * Allows selecting a week at a time. Only used with mode="multiple".
43
- */
44
- onWeekNumberClick?: DayPickerBase["onWeekNumberClick"];
45
- };
46
-
47
- export type RangeMode = {
48
- mode: "range";
49
- onSelect?: (val?: DateRange) => void;
50
- selected?: DateRange;
51
- defaultSelected?: DateRange;
52
- min?: number;
53
- max?: number;
54
- onWeekNumberClick?: never;
55
- };
56
-
57
- type ConditionalModeProps = SingleMode | MultipleMode | RangeMode;
58
-
59
- //github.com/gpbl/react-day-picker/blob/50b6dba/packages/react-day-picker/src/types/DayPickerBase.ts#L139
60
- export interface DatePickerDefaultProps
61
- extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect">,
62
- Pick<DayPickerBase, "month" | "onMonthChange" | "today" | "onDayClick"> {
63
- /**
64
- * Element datepicker anchors to. Use <DatePicker.Input /> for built-in toggle, or make your own with the open/onClose props
65
- */
66
- children?: React.ReactNode;
67
- /**
68
- * Classname for datepicker in popover
69
- */
70
- className?: string;
71
- /**
72
- * Classname for wrapper
73
- */
74
- wrapperClassName?: string;
75
- /**
76
- * Changes datepicker locale
77
- * @default "nb" (norsk bokmål)
78
- */
79
- locale?: "nb" | "nn" | "en";
80
- /**
81
- * The earliest day to start navigation.
82
- */
83
- fromDate?: Date;
84
- /**
85
- * The latests day to end navigation.
86
- */
87
- toDate?: Date;
88
- /**
89
- * Display dropdown for choosing the month and the year. Needs `fromDate` + `toDate` to work.
90
- * @default false
91
- */
92
- dropdownCaption?: boolean;
93
- /**
94
- * Apply the disabled modifier to the matching days.
95
- * https://react-day-picker.js.org/api/types/Matcher
96
- */
97
- disabled?: Matcher[];
98
- /**
99
- * Disable saturday and sunday.
100
- * @default false
101
- */
102
- disableWeekends?: boolean;
103
- /**
104
- * Shows week numbers in left-column. Use with caution, takes up valuable screenspace for small screens.
105
- * @default false
106
- */
107
- showWeekNumber?: boolean;
108
- /**
109
- * Open state for user-controlled state. Component controlled by default
110
- */
111
- open?: boolean;
112
- /**
113
- * onClose callback for user-controlled state
114
- */
115
- onClose?: () => void;
116
- /**
117
- * onOpenToggle callback for user-controlled state. Only called if `<DatePicker.Input />` is used
118
- */
119
- onOpenToggle?: () => void;
120
- /**
121
- * Avoid using if possible!
122
- * Changes what CSS position property to use.
123
- * You want to use "fixed" if parent wrapper has position relative, but you want popover to escape
124
- * @default See Popover
125
- */
126
- strategy?: "absolute" | "fixed";
127
- /**
128
- * Bubbles Escape keydown-event up trough DOM-tree. This is set to false by default to prevent closing components like Modal on Escape
129
- * @default false
130
- */
131
- bubbleEscape?: boolean;
132
- }
18
+ import { ConditionalModeProps, DatePickerDefaultProps } from "./types";
133
19
 
134
20
  export type DatePickerProps = DatePickerDefaultProps & ConditionalModeProps;
135
21
 
@@ -145,14 +31,12 @@ interface DatePickerComponent
145
31
  * />
146
32
  * ```
147
33
  */
148
- Standalone: DatePickerStandaloneType;
34
+ Standalone: typeof DatePickerStandalone;
149
35
  /**
150
36
  * Custom TextField for DatePicker
151
37
  * @see 🏷️ {@link DateInputProps}
152
38
  */
153
- Input: React.ForwardRefExoticComponent<
154
- DateInputProps & React.RefAttributes<HTMLInputElement>
155
- >;
39
+ Input: typeof DatePickerInput;
156
40
  }
157
41
 
158
42
  /**
@@ -257,6 +141,7 @@ export const DatePicker = forwardRef<HTMLDivElement, DatePickerProps>(
257
141
  strategy={strategy}
258
142
  className="navds-date__popover"
259
143
  bubbleEscape={bubbleEscape}
144
+ flip={false}
260
145
  >
261
146
  <DayPicker
262
147
  locale={getLocaleFromString(locale)}
@@ -2,21 +2,21 @@ import cl from "clsx";
2
2
  import isWeekend from "date-fns/isWeekend";
3
3
  import React, { forwardRef } from "react";
4
4
  import { DateRange, DayPicker, isMatch } from "react-day-picker";
5
- import { omit } from "../..";
5
+ import { omit } from "../../util";
6
6
  import { getLocaleFromString, labels } from "../utils";
7
+ import Caption from "./parts/Caption";
8
+ import DayButton from "./parts/DayButton";
9
+ import DropdownCaption from "./parts/DropdownCaption";
10
+ import { HeadRow } from "./parts/HeadRow";
11
+ import Row from "./parts/Row";
12
+ import TableHead from "./parts/TableHead";
13
+ import WeekNumber from "./parts/WeekNumber";
7
14
  import {
8
15
  DatePickerDefaultProps,
9
16
  MultipleMode,
10
17
  RangeMode,
11
18
  SingleMode,
12
- } from "./DatePicker";
13
- import TableHead from "./parts/TableHead";
14
- import WeekNumber from "./parts/WeekNumber";
15
- import Caption from "./parts/Caption";
16
- import DropdownCaption from "./parts/DropdownCaption";
17
- import Row from "./parts/Row";
18
- import { HeadRow } from "./parts/HeadRow";
19
- import DayButton from "./parts/DayButton";
19
+ } from "./types";
20
20
 
21
21
  interface DatePickerStandaloneDefaultProps
22
22
  extends Omit<
@@ -1,8 +1,10 @@
1
1
  import { ArrowLeftIcon, ArrowRightIcon } from "@navikt/aksel-icons";
2
2
  import React from "react";
3
3
  import { CaptionProps, useDayPicker, useNavigation } from "react-day-picker";
4
- import { Button, Label } from "../../..";
4
+
5
5
  import WeekRow from "./WeekRow";
6
+ import { Button } from "../../../button";
7
+ import { Label } from "../../../typography";
6
8
 
7
9
  /**
8
10
  * https://github.com/gpbl/react-day-picker/tree/main/src/components/Caption
@@ -1,13 +1,14 @@
1
1
  import { ArrowLeftIcon, ArrowRightIcon } from "@navikt/aksel-icons";
2
+ import { max, min } from "date-fns";
2
3
  import setMonth from "date-fns/setMonth";
3
4
  import setYear from "date-fns/setYear";
4
5
  import startOfMonth from "date-fns/startOfMonth";
5
6
  import React from "react";
6
7
  import { CaptionProps, useDayPicker, useNavigation } from "react-day-picker";
7
- import { Button, Select } from "../../..";
8
+ import { Button } from "../../../button";
9
+ import { Select } from "../../../form/Select";
8
10
  import { getMonths, getYears } from "../../utils/get-dates";
9
11
  import { labelMonthDropdown, labelYearDropdown } from "../../utils/labels";
10
- import { max, min } from "date-fns";
11
12
  import WeekRow from "./WeekRow";
12
13
 
13
14
  /**
@@ -2,10 +2,10 @@ import React from "react";
2
2
  import { useDayPicker } from "react-day-picker";
3
3
  import { Show } from "../../../layout/responsive";
4
4
  import { Detail } from "../../../typography";
5
+ import { useId } from "../../../util";
5
6
  import { getMonthWeeks } from "../../utils/get-month-weeks";
6
7
  import { labelWeek } from "../../utils/labels";
7
8
  import WeekNumber from "./WeekNumber";
8
- import { useId } from "../../../util";
9
9
 
10
10
  const WeekRow = ({ displayMonth }: { displayMonth: Date }) => {
11
11
  const { locale, fixedWeeks, onWeekNumberClick } = useDayPicker();
@@ -0,0 +1,109 @@
1
+ import { DateRange, DayPickerBase, Matcher } from "react-day-picker";
2
+
3
+ export type SingleMode = {
4
+ mode?: "single";
5
+ onSelect?: (val?: Date) => void;
6
+ selected?: Date;
7
+ defaultSelected?: Date;
8
+ onWeekNumberClick?: never;
9
+ };
10
+
11
+ export type MultipleMode = {
12
+ mode: "multiple";
13
+ onSelect?: (val?: Date[]) => void;
14
+ selected?: Date[];
15
+ defaultSelected?: Date[];
16
+ min?: number;
17
+ max?: number;
18
+ /**
19
+ * Allows selecting a week at a time. Only used with mode="multiple".
20
+ */
21
+ onWeekNumberClick?: DayPickerBase["onWeekNumberClick"];
22
+ };
23
+
24
+ export type RangeMode = {
25
+ mode: "range";
26
+ onSelect?: (val?: DateRange) => void;
27
+ selected?: DateRange;
28
+ defaultSelected?: DateRange;
29
+ min?: number;
30
+ max?: number;
31
+ onWeekNumberClick?: never;
32
+ };
33
+
34
+ export type ConditionalModeProps = SingleMode | MultipleMode | RangeMode;
35
+
36
+ //github.com/gpbl/react-day-picker/blob/50b6dba/packages/react-day-picker/src/types/DayPickerBase.ts#L139
37
+ export interface DatePickerDefaultProps
38
+ extends Omit<React.HTMLAttributes<HTMLDivElement>, "onSelect">,
39
+ Pick<DayPickerBase, "month" | "onMonthChange" | "today" | "onDayClick"> {
40
+ /**
41
+ * Element datepicker anchors to. Use <DatePicker.Input /> for built-in toggle, or make your own with the open/onClose props
42
+ */
43
+ children?: React.ReactNode;
44
+ /**
45
+ * Classname for datepicker in popover
46
+ */
47
+ className?: string;
48
+ /**
49
+ * Classname for wrapper
50
+ */
51
+ wrapperClassName?: string;
52
+ /**
53
+ * Changes datepicker locale
54
+ * @default "nb" (norsk bokmål)
55
+ */
56
+ locale?: "nb" | "nn" | "en";
57
+ /**
58
+ * The earliest day to start navigation.
59
+ */
60
+ fromDate?: Date;
61
+ /**
62
+ * The latests day to end navigation.
63
+ */
64
+ toDate?: Date;
65
+ /**
66
+ * Display dropdown for choosing the month and the year. Needs `fromDate` + `toDate` to work.
67
+ * @default false
68
+ */
69
+ dropdownCaption?: boolean;
70
+ /**
71
+ * Apply the disabled modifier to the matching days.
72
+ * https://react-day-picker.js.org/api/types/Matcher
73
+ */
74
+ disabled?: Matcher[];
75
+ /**
76
+ * Disable saturday and sunday.
77
+ * @default false
78
+ */
79
+ disableWeekends?: boolean;
80
+ /**
81
+ * Shows week numbers in left-column. Use with caution, takes up valuable screenspace for small screens.
82
+ * @default false
83
+ */
84
+ showWeekNumber?: boolean;
85
+ /**
86
+ * Open state for user-controlled state. Component controlled by default
87
+ */
88
+ open?: boolean;
89
+ /**
90
+ * onClose callback for user-controlled state
91
+ */
92
+ onClose?: () => void;
93
+ /**
94
+ * onOpenToggle callback for user-controlled state. Only called if `<DatePicker.Input />` is used
95
+ */
96
+ onOpenToggle?: () => void;
97
+ /**
98
+ * Avoid using if possible!
99
+ * Changes what CSS position property to use.
100
+ * You want to use "fixed" if parent wrapper has position relative, but you want popover to escape
101
+ * @default See Popover
102
+ */
103
+ strategy?: "absolute" | "fixed";
104
+ /**
105
+ * Bubbles Escape keydown-event up trough DOM-tree. This is set to false by default to prevent closing components like Modal on Escape
106
+ * @default false
107
+ */
108
+ bubbleEscape?: boolean;
109
+ }
@@ -1,6 +1,6 @@
1
1
  import React, { useCallback, useMemo, useRef, useState } from "react";
2
2
  import { DateInputProps } from "../DateInput";
3
- import { MonthPickerProps } from "../monthpicker/MonthPicker";
3
+ import { MonthPickerProps } from "../monthpicker/types";
4
4
  import {
5
5
  formatDateForInput,
6
6
  getLocaleFromString,