@navikt/ds-react 7.13.0 → 7.14.0-alpha.1

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 (291) hide show
  1. package/cjs/date/Date.Dialog.d.ts +18 -0
  2. package/cjs/date/Date.Dialog.js +67 -0
  3. package/cjs/date/Date.Dialog.js.map +1 -0
  4. package/cjs/date/Date.Input.d.ts +50 -0
  5. package/cjs/date/Date.Input.js +96 -0
  6. package/cjs/date/Date.Input.js.map +1 -0
  7. package/cjs/date/Date.locale.d.ts +44 -0
  8. package/cjs/date/Date.locale.js +57 -0
  9. package/cjs/date/Date.locale.js.map +1 -0
  10. package/cjs/date/Date.typeutils.d.ts +14 -0
  11. package/cjs/date/Date.typeutils.js +15 -0
  12. package/cjs/date/Date.typeutils.js.map +1 -0
  13. package/cjs/date/date-utils/calendar-range.d.ts +11 -0
  14. package/cjs/date/date-utils/calendar-range.js +30 -0
  15. package/cjs/date/date-utils/calendar-range.js.map +1 -0
  16. package/cjs/date/date-utils/check-dates.d.ts +8 -0
  17. package/cjs/date/date-utils/check-dates.js +20 -0
  18. package/cjs/date/date-utils/check-dates.js.map +1 -0
  19. package/cjs/date/date-utils/clamp-dates.d.ts +19 -0
  20. package/cjs/date/date-utils/clamp-dates.js +41 -0
  21. package/cjs/date/date-utils/clamp-dates.js.map +1 -0
  22. package/cjs/date/date-utils/dates-disabled.d.ts +1 -0
  23. package/cjs/date/date-utils/dates-disabled.js +29 -0
  24. package/cjs/date/date-utils/dates-disabled.js.map +1 -0
  25. package/cjs/date/date-utils/dropdown-options.d.ts +13 -0
  26. package/cjs/date/date-utils/dropdown-options.js +45 -0
  27. package/cjs/date/date-utils/dropdown-options.js.map +1 -0
  28. package/cjs/date/date-utils/format-date.d.ts +2 -0
  29. package/cjs/date/date-utils/format-date.js +13 -0
  30. package/cjs/date/date-utils/format-date.js.map +1 -0
  31. package/cjs/date/date-utils/index.d.ts +8 -0
  32. package/cjs/date/date-utils/index.js +27 -0
  33. package/cjs/date/date-utils/index.js.map +1 -0
  34. package/cjs/date/date-utils/is-match.d.ts +3 -0
  35. package/cjs/date/date-utils/is-match.js +61 -0
  36. package/cjs/date/date-utils/is-match.js.map +1 -0
  37. package/cjs/date/date-utils/parse-date.d.ts +4 -0
  38. package/cjs/date/date-utils/parse-date.js +87 -0
  39. package/cjs/date/date-utils/parse-date.js.map +1 -0
  40. package/cjs/date/datepicker/DatePicker.d.ts +3 -3
  41. package/cjs/date/datepicker/DatePicker.js +47 -63
  42. package/cjs/date/datepicker/DatePicker.js.map +1 -1
  43. package/cjs/date/datepicker/DatePicker.types.d.ts +108 -0
  44. package/cjs/date/datepicker/DatePicker.types.js +3 -0
  45. package/cjs/date/datepicker/DatePicker.types.js.map +1 -0
  46. package/cjs/date/datepicker/hooks/useDatepicker.d.ts +90 -0
  47. package/cjs/date/datepicker/hooks/useDatepicker.js +164 -0
  48. package/cjs/date/datepicker/hooks/useDatepicker.js.map +1 -0
  49. package/cjs/date/datepicker/hooks/useRangeDatepicker.d.ts +76 -0
  50. package/cjs/date/datepicker/hooks/useRangeDatepicker.js +322 -0
  51. package/cjs/date/datepicker/hooks/useRangeDatepicker.js.map +1 -0
  52. package/cjs/date/datepicker/index.d.ts +4 -3
  53. package/cjs/date/datepicker/index.js +8 -7
  54. package/cjs/date/datepicker/index.js.map +1 -1
  55. package/cjs/date/datepicker/parts/DatePicker.DayButton.d.ts +9 -0
  56. package/cjs/date/datepicker/parts/DatePicker.DayButton.js +70 -0
  57. package/cjs/date/datepicker/parts/DatePicker.DayButton.js.map +1 -0
  58. package/cjs/date/datepicker/parts/DatePicker.Months.d.ts +11 -0
  59. package/cjs/date/datepicker/parts/DatePicker.Months.js +84 -0
  60. package/cjs/date/datepicker/parts/DatePicker.Months.js.map +1 -0
  61. package/cjs/date/datepicker/parts/DatePicker.RDP.d.ts +15 -0
  62. package/cjs/date/datepicker/parts/DatePicker.RDP.js +103 -0
  63. package/cjs/date/datepicker/parts/DatePicker.RDP.js.map +1 -0
  64. package/cjs/date/datepicker/parts/DatePicker.Standalone.d.ts +18 -0
  65. package/cjs/date/datepicker/parts/DatePicker.Standalone.js +60 -0
  66. package/cjs/date/datepicker/parts/DatePicker.Standalone.js.map +1 -0
  67. package/cjs/date/datepicker/parts/DatePicker.WeekNumber.d.ts +9 -0
  68. package/cjs/date/datepicker/parts/DatePicker.WeekNumber.js +64 -0
  69. package/cjs/date/datepicker/parts/DatePicker.WeekNumber.js.map +1 -0
  70. package/cjs/date/datepicker/parts/DatePicker.WeekRow.d.ts +8 -0
  71. package/cjs/date/datepicker/parts/DatePicker.WeekRow.js +28 -0
  72. package/cjs/date/datepicker/parts/DatePicker.WeekRow.js.map +1 -0
  73. package/cjs/date/monthpicker/MonthPicker.context.d.ts +21 -0
  74. package/cjs/date/monthpicker/MonthPicker.context.js +48 -0
  75. package/cjs/date/monthpicker/MonthPicker.context.js.map +1 -0
  76. package/cjs/date/monthpicker/MonthPicker.d.ts +3 -3
  77. package/cjs/date/monthpicker/MonthPicker.js +34 -43
  78. package/cjs/date/monthpicker/MonthPicker.js.map +1 -1
  79. package/cjs/date/monthpicker/MonthPicker.types.d.ts +86 -0
  80. package/cjs/date/monthpicker/MonthPicker.types.js +3 -0
  81. package/cjs/date/monthpicker/MonthPicker.types.js.map +1 -0
  82. package/cjs/date/monthpicker/MonthPicker.util.d.ts +2 -0
  83. package/cjs/date/monthpicker/MonthPicker.util.js +156 -0
  84. package/cjs/date/monthpicker/MonthPicker.util.js.map +1 -0
  85. package/cjs/date/monthpicker/hooks/useMonthPicker.d.ts +85 -0
  86. package/cjs/date/monthpicker/hooks/useMonthPicker.js +179 -0
  87. package/cjs/date/monthpicker/hooks/useMonthPicker.js.map +1 -0
  88. package/cjs/date/monthpicker/index.d.ts +4 -4
  89. package/cjs/date/monthpicker/index.js +6 -6
  90. package/cjs/date/monthpicker/index.js.map +1 -1
  91. package/cjs/date/monthpicker/parts/MonthPicker.Button.d.ts +11 -0
  92. package/cjs/date/monthpicker/parts/MonthPicker.Button.js +82 -0
  93. package/cjs/date/monthpicker/parts/MonthPicker.Button.js.map +1 -0
  94. package/cjs/date/monthpicker/parts/MonthPicker.Caption.d.ts +3 -0
  95. package/cjs/date/monthpicker/parts/MonthPicker.Caption.js +52 -0
  96. package/cjs/date/monthpicker/parts/MonthPicker.Caption.js.map +1 -0
  97. package/cjs/date/monthpicker/parts/MonthPicker.Standalone.d.ts +10 -0
  98. package/cjs/date/monthpicker/parts/MonthPicker.Standalone.js +51 -0
  99. package/cjs/date/monthpicker/parts/MonthPicker.Standalone.js.map +1 -0
  100. package/cjs/date/monthpicker/parts/MonthPicker.Table.d.ts +3 -0
  101. package/cjs/date/monthpicker/parts/MonthPicker.Table.js +79 -0
  102. package/cjs/date/monthpicker/parts/MonthPicker.Table.js.map +1 -0
  103. package/cjs/form/combobox/Combobox.d.ts +1 -1
  104. package/cjs/form/combobox/Input/InputController.d.ts +1 -1
  105. package/cjs/modal/Modal.js +2 -2
  106. package/cjs/modal/Modal.js.map +1 -1
  107. package/cjs/popover/Popover.js +3 -3
  108. package/cjs/popover/Popover.js.map +1 -1
  109. package/cjs/tooltip/Tooltip.js +2 -5
  110. package/cjs/tooltip/Tooltip.js.map +1 -1
  111. package/esm/date/Date.Dialog.d.ts +18 -0
  112. package/esm/date/Date.Dialog.js +38 -0
  113. package/esm/date/Date.Dialog.js.map +1 -0
  114. package/esm/date/Date.Input.d.ts +50 -0
  115. package/esm/date/Date.Input.js +66 -0
  116. package/esm/date/Date.Input.js.map +1 -0
  117. package/esm/date/Date.locale.d.ts +44 -0
  118. package/esm/date/Date.locale.js +47 -0
  119. package/esm/date/Date.locale.js.map +1 -0
  120. package/esm/date/Date.typeutils.d.ts +14 -0
  121. package/esm/date/Date.typeutils.js +10 -0
  122. package/esm/date/Date.typeutils.js.map +1 -0
  123. package/esm/date/date-utils/calendar-range.d.ts +11 -0
  124. package/esm/date/date-utils/calendar-range.js +27 -0
  125. package/esm/date/date-utils/calendar-range.js.map +1 -0
  126. package/esm/date/date-utils/check-dates.d.ts +8 -0
  127. package/esm/date/date-utils/check-dates.js +14 -0
  128. package/esm/date/date-utils/check-dates.js.map +1 -0
  129. package/esm/date/date-utils/clamp-dates.d.ts +19 -0
  130. package/esm/date/date-utils/clamp-dates.js +37 -0
  131. package/esm/date/date-utils/clamp-dates.js.map +1 -0
  132. package/esm/date/date-utils/dates-disabled.d.ts +1 -0
  133. package/esm/date/date-utils/dates-disabled.js +25 -0
  134. package/esm/date/date-utils/dates-disabled.js.map +1 -0
  135. package/esm/date/date-utils/dropdown-options.d.ts +13 -0
  136. package/esm/date/date-utils/dropdown-options.js +41 -0
  137. package/esm/date/date-utils/dropdown-options.js.map +1 -0
  138. package/esm/date/date-utils/format-date.d.ts +2 -0
  139. package/esm/date/date-utils/format-date.js +9 -0
  140. package/esm/date/date-utils/format-date.js.map +1 -0
  141. package/esm/date/date-utils/index.d.ts +8 -0
  142. package/esm/date/date-utils/index.js +9 -0
  143. package/esm/date/date-utils/index.js.map +1 -0
  144. package/esm/date/date-utils/is-match.d.ts +3 -0
  145. package/esm/date/date-utils/is-match.js +57 -0
  146. package/esm/date/date-utils/is-match.js.map +1 -0
  147. package/esm/date/date-utils/parse-date.d.ts +4 -0
  148. package/esm/date/date-utils/parse-date.js +83 -0
  149. package/esm/date/date-utils/parse-date.js.map +1 -0
  150. package/esm/date/datepicker/DatePicker.d.ts +3 -3
  151. package/esm/date/datepicker/DatePicker.js +46 -62
  152. package/esm/date/datepicker/DatePicker.js.map +1 -1
  153. package/esm/date/datepicker/DatePicker.types.d.ts +108 -0
  154. package/esm/date/datepicker/DatePicker.types.js +2 -0
  155. package/esm/date/datepicker/DatePicker.types.js.map +1 -0
  156. package/esm/date/datepicker/hooks/useDatepicker.d.ts +90 -0
  157. package/esm/date/datepicker/hooks/useDatepicker.js +160 -0
  158. package/esm/date/datepicker/hooks/useDatepicker.js.map +1 -0
  159. package/esm/date/datepicker/hooks/useRangeDatepicker.d.ts +76 -0
  160. package/esm/date/datepicker/hooks/useRangeDatepicker.js +318 -0
  161. package/esm/date/datepicker/hooks/useRangeDatepicker.js.map +1 -0
  162. package/esm/date/datepicker/index.d.ts +4 -3
  163. package/esm/date/datepicker/index.js +4 -3
  164. package/esm/date/datepicker/index.js.map +1 -1
  165. package/esm/date/datepicker/parts/DatePicker.DayButton.d.ts +9 -0
  166. package/esm/date/datepicker/parts/DatePicker.DayButton.js +41 -0
  167. package/esm/date/datepicker/parts/DatePicker.DayButton.js.map +1 -0
  168. package/esm/date/datepicker/parts/DatePicker.Months.d.ts +11 -0
  169. package/esm/date/datepicker/parts/DatePicker.Months.js +58 -0
  170. package/esm/date/datepicker/parts/DatePicker.Months.js.map +1 -0
  171. package/esm/date/datepicker/parts/DatePicker.RDP.d.ts +15 -0
  172. package/esm/date/datepicker/parts/DatePicker.RDP.js +74 -0
  173. package/esm/date/datepicker/parts/DatePicker.RDP.js.map +1 -0
  174. package/esm/date/datepicker/parts/DatePicker.Standalone.d.ts +18 -0
  175. package/esm/date/datepicker/parts/DatePicker.Standalone.js +31 -0
  176. package/esm/date/datepicker/parts/DatePicker.Standalone.js.map +1 -0
  177. package/esm/date/datepicker/parts/DatePicker.WeekNumber.d.ts +9 -0
  178. package/esm/date/datepicker/parts/DatePicker.WeekNumber.js +35 -0
  179. package/esm/date/datepicker/parts/DatePicker.WeekNumber.js.map +1 -0
  180. package/esm/date/datepicker/parts/DatePicker.WeekRow.d.ts +8 -0
  181. package/esm/date/datepicker/parts/DatePicker.WeekRow.js +22 -0
  182. package/esm/date/datepicker/parts/DatePicker.WeekRow.js.map +1 -0
  183. package/esm/date/monthpicker/MonthPicker.context.d.ts +21 -0
  184. package/esm/date/monthpicker/MonthPicker.context.js +41 -0
  185. package/esm/date/monthpicker/MonthPicker.context.js.map +1 -0
  186. package/esm/date/monthpicker/MonthPicker.d.ts +3 -3
  187. package/esm/date/monthpicker/MonthPicker.js +31 -40
  188. package/esm/date/monthpicker/MonthPicker.js.map +1 -1
  189. package/esm/date/monthpicker/MonthPicker.types.d.ts +86 -0
  190. package/esm/date/monthpicker/MonthPicker.types.js +2 -0
  191. package/esm/date/monthpicker/MonthPicker.types.js.map +1 -0
  192. package/esm/date/monthpicker/MonthPicker.util.d.ts +2 -0
  193. package/esm/date/monthpicker/MonthPicker.util.js +152 -0
  194. package/esm/date/monthpicker/MonthPicker.util.js.map +1 -0
  195. package/esm/date/monthpicker/hooks/useMonthPicker.d.ts +85 -0
  196. package/esm/date/monthpicker/hooks/useMonthPicker.js +175 -0
  197. package/esm/date/monthpicker/hooks/useMonthPicker.js.map +1 -0
  198. package/esm/date/monthpicker/index.d.ts +4 -4
  199. package/esm/date/monthpicker/index.js +3 -3
  200. package/esm/date/monthpicker/index.js.map +1 -1
  201. package/esm/date/monthpicker/parts/MonthPicker.Button.d.ts +11 -0
  202. package/esm/date/monthpicker/parts/MonthPicker.Button.js +52 -0
  203. package/esm/date/monthpicker/parts/MonthPicker.Button.js.map +1 -0
  204. package/esm/date/monthpicker/parts/MonthPicker.Caption.d.ts +3 -0
  205. package/esm/date/monthpicker/parts/MonthPicker.Caption.js +46 -0
  206. package/esm/date/monthpicker/parts/MonthPicker.Caption.js.map +1 -0
  207. package/esm/date/monthpicker/parts/MonthPicker.Standalone.d.ts +10 -0
  208. package/esm/date/monthpicker/parts/MonthPicker.Standalone.js +22 -0
  209. package/esm/date/monthpicker/parts/MonthPicker.Standalone.js.map +1 -0
  210. package/esm/date/monthpicker/parts/MonthPicker.Table.d.ts +3 -0
  211. package/esm/date/monthpicker/parts/MonthPicker.Table.js +50 -0
  212. package/esm/date/monthpicker/parts/MonthPicker.Table.js.map +1 -0
  213. package/esm/form/combobox/Combobox.d.ts +1 -1
  214. package/esm/form/combobox/Input/InputController.d.ts +1 -1
  215. package/esm/modal/Modal.js +3 -3
  216. package/esm/modal/Modal.js.map +1 -1
  217. package/esm/popover/Popover.js +4 -4
  218. package/esm/popover/Popover.js.map +1 -1
  219. package/esm/tooltip/Tooltip.js +2 -5
  220. package/esm/tooltip/Tooltip.js.map +1 -1
  221. package/package.json +6 -7
  222. package/src/date/{parts/DateWrapper.tsx → Date.Dialog.tsx} +12 -9
  223. package/src/date/{parts/DateInput.tsx → Date.Input.tsx} +30 -5
  224. package/src/date/{utils/locale.ts → Date.locale.ts} +11 -2
  225. package/src/date/Date.typeutils.ts +32 -0
  226. package/src/date/date-utils/calendar-range.test.ts +54 -0
  227. package/src/date/date-utils/calendar-range.ts +46 -0
  228. package/src/date/date-utils/check-dates.test.ts +49 -0
  229. package/src/date/date-utils/check-dates.ts +28 -0
  230. package/src/date/date-utils/clamp-dates.test.ts +156 -0
  231. package/src/date/date-utils/clamp-dates.ts +63 -0
  232. package/src/date/{utils/__tests__ → date-utils}/dates-disabled.test.ts +1 -1
  233. package/src/date/{utils → date-utils}/dates-disabled.ts +1 -2
  234. package/src/date/date-utils/dropdown-options.test.ts +143 -0
  235. package/src/date/date-utils/dropdown-options.ts +79 -0
  236. package/src/date/{utils/__tests__ → date-utils}/format-dates.test.ts +2 -2
  237. package/src/date/date-utils/index.ts +16 -0
  238. package/src/date/{utils/__tests__ → date-utils}/is-match.test.ts +1 -1
  239. package/src/date/{utils → date-utils}/is-match.ts +2 -11
  240. package/src/date/{utils/__tests__ → date-utils}/parse-dates.test.ts +2 -1
  241. package/src/date/datepicker/DatePicker.tsx +67 -92
  242. package/src/date/datepicker/{types.ts → DatePicker.types.ts} +10 -4
  243. package/src/date/{hooks → datepicker/hooks}/useDatepicker.tsx +12 -13
  244. package/src/date/{hooks → datepicker/hooks}/useRangeDatepicker.test.tsx +1 -1
  245. package/src/date/{hooks → datepicker/hooks}/useRangeDatepicker.tsx +19 -19
  246. package/src/date/datepicker/index.ts +4 -5
  247. package/src/date/datepicker/parts/DatePicker.DayButton.tsx +56 -0
  248. package/src/date/datepicker/parts/DatePicker.Months.tsx +149 -0
  249. package/src/date/datepicker/parts/DatePicker.RDP.tsx +170 -0
  250. package/src/date/datepicker/parts/DatePicker.Standalone.tsx +93 -0
  251. package/src/date/datepicker/parts/DatePicker.WeekNumber.tsx +86 -0
  252. package/src/date/datepicker/parts/{WeekRow.tsx → DatePicker.WeekRow.tsx} +20 -21
  253. package/src/date/monthpicker/MonthPicker.context.tsx +103 -0
  254. package/src/date/monthpicker/MonthPicker.tsx +63 -68
  255. package/src/date/monthpicker/{types.ts → MonthPicker.types.ts} +1 -1
  256. package/src/date/{utils/navigation.ts → monthpicker/MonthPicker.util.ts} +2 -1
  257. package/src/date/{hooks → monthpicker/hooks}/useMonthPicker.tsx +14 -13
  258. package/src/date/monthpicker/index.ts +4 -4
  259. package/src/date/monthpicker/{MonthButton.tsx → parts/MonthPicker.Button.tsx} +21 -10
  260. package/src/date/monthpicker/{MonthCaption.tsx → parts/MonthPicker.Caption.tsx} +20 -21
  261. package/src/date/monthpicker/parts/MonthPicker.Standalone.tsx +86 -0
  262. package/src/date/monthpicker/{MonthSelector.tsx → parts/MonthPicker.Table.tsx} +7 -7
  263. package/src/modal/Modal.tsx +3 -3
  264. package/src/popover/Popover.tsx +4 -4
  265. package/src/tooltip/Tooltip.tsx +2 -6
  266. package/src/date/context/index.ts +0 -9
  267. package/src/date/context/useDateInputContext.tsx +0 -34
  268. package/src/date/context/useDateTranslationContext.ts +0 -9
  269. package/src/date/context/useSharedMonthContext.tsx +0 -68
  270. package/src/date/datepicker/DatePickerStandalone.tsx +0 -136
  271. package/src/date/datepicker/datepicker.test.tsx +0 -28
  272. package/src/date/datepicker/parts/Caption.tsx +0 -54
  273. package/src/date/datepicker/parts/DayButton.tsx +0 -32
  274. package/src/date/datepicker/parts/DropdownCaption.tsx +0 -110
  275. package/src/date/datepicker/parts/HeadRow.tsx +0 -56
  276. package/src/date/datepicker/parts/Row.tsx +0 -48
  277. package/src/date/datepicker/parts/TableHead.tsx +0 -17
  278. package/src/date/datepicker/parts/WeekNumber.tsx +0 -75
  279. package/src/date/hooks/index.ts +0 -6
  280. package/src/date/monthpicker/MonthPickerStandalone.tsx +0 -102
  281. package/src/date/utils/__tests__/check-dates.test.ts +0 -22
  282. package/src/date/utils/__tests__/get-dates.test.ts +0 -121
  283. package/src/date/utils/__tests__/get-initial-year.test.ts +0 -83
  284. package/src/date/utils/__tests__/get-month-weeks.test.ts +0 -116
  285. package/src/date/utils/check-dates.ts +0 -13
  286. package/src/date/utils/get-dates.ts +0 -60
  287. package/src/date/utils/get-initial-year.ts +0 -25
  288. package/src/date/utils/get-month-weeks.ts +0 -93
  289. package/src/date/utils/index.ts +0 -18
  290. /package/src/date/{utils → date-utils}/format-date.ts +0 -0
  291. /package/src/date/{utils → date-utils}/parse-date.ts +0 -0
@@ -1,136 +0,0 @@
1
- import cl from "clsx";
2
- import { isWeekend } from "date-fns";
3
- import React, { forwardRef } from "react";
4
- import { DateRange, DayPicker, isMatch } from "react-day-picker";
5
- import { omit } from "../../util";
6
- import { useDateLocale, useI18n } from "../../util/i18n/i18n.hooks";
7
- import { DateTranslationContextProvider } from "../context";
8
- import { getLocaleFromString, getTranslations } from "../utils";
9
- import Caption from "./parts/Caption";
10
- import DropdownCaption from "./parts/DropdownCaption";
11
- import { HeadRow } from "./parts/HeadRow";
12
- import Row from "./parts/Row";
13
- import TableHead from "./parts/TableHead";
14
- import WeekNumber from "./parts/WeekNumber";
15
- import {
16
- DatePickerDefaultProps,
17
- MultipleMode,
18
- RangeMode,
19
- SingleMode,
20
- } from "./types";
21
-
22
- interface DatePickerStandaloneDefaultProps
23
- extends Omit<
24
- DatePickerDefaultProps,
25
- "open" | "onClose" | "onOpenToggle" | "wrapperClassName" | "strategy"
26
- > {
27
- /**
28
- * Datepicker classname
29
- */
30
- className?: string;
31
- /**
32
- * If datepicker should be fixed to 6 weeks, regardless of actual weeks in month
33
- * @default true
34
- */
35
- fixedWeeks?: boolean;
36
- }
37
-
38
- type StandaloneConditionalModeProps = SingleMode | MultipleMode | RangeMode;
39
-
40
- export type DatePickerStandaloneProps = DatePickerStandaloneDefaultProps &
41
- StandaloneConditionalModeProps;
42
-
43
- export type DatePickerStandaloneType = React.ForwardRefExoticComponent<
44
- DatePickerStandaloneProps & React.RefAttributes<HTMLDivElement>
45
- >;
46
-
47
- export const DatePickerStandalone: DatePickerStandaloneType = forwardRef<
48
- HTMLDivElement,
49
- DatePickerStandaloneProps
50
- >(
51
- (
52
- {
53
- className,
54
- locale,
55
- translations,
56
- dropdownCaption,
57
- disabled = [],
58
- disableWeekends = false,
59
- showWeekNumber = false,
60
- selected,
61
- defaultSelected,
62
- onSelect,
63
- fixedWeeks = false,
64
- onWeekNumberClick,
65
- ...rest
66
- },
67
- ref,
68
- ) => {
69
- const translate = useI18n(
70
- "DatePicker",
71
- translations,
72
- getTranslations(locale),
73
- );
74
- const langProviderLocale = useDateLocale();
75
- const [selectedDates, setSelectedDates] = React.useState<
76
- Date | Date[] | DateRange | undefined
77
- >(defaultSelected);
78
-
79
- const mode = rest.mode ?? ("single" as any);
80
-
81
- /**
82
- * @param newSelected Date | Date[] | DateRange | undefined
83
- */
84
- const handleSelect = (newSelected) => {
85
- setSelectedDates(newSelected);
86
- onSelect?.(newSelected);
87
- };
88
-
89
- return (
90
- <div
91
- ref={ref}
92
- className={cl("navds-date__standalone-wrapper", className)}
93
- >
94
- <DateTranslationContextProvider translate={translate}>
95
- <DayPicker
96
- locale={locale ? getLocaleFromString(locale) : langProviderLocale}
97
- mode={mode}
98
- onSelect={handleSelect}
99
- selected={selected ?? selectedDates}
100
- components={{
101
- Caption: dropdownCaption ? DropdownCaption : Caption,
102
- Head: TableHead,
103
- HeadRow,
104
- WeekNumber,
105
- Row,
106
- }}
107
- className="navds-date"
108
- classNames={{ vhidden: "navds-sr-only" }}
109
- disabled={(day) => {
110
- return (
111
- (disableWeekends && isWeekend(day)) || isMatch(day, disabled)
112
- );
113
- }}
114
- weekStartsOn={1}
115
- initialFocus={false}
116
- modifiers={{
117
- weekend: (day) => disableWeekends && isWeekend(day),
118
- }}
119
- modifiersClassNames={{
120
- weekend: "rdp-day__weekend",
121
- }}
122
- showWeekNumber={showWeekNumber}
123
- onWeekNumberClick={
124
- mode === "multiple" ? onWeekNumberClick : undefined
125
- }
126
- fixedWeeks={fixedWeeks}
127
- showOutsideDays
128
- {...omit(rest, ["children", "id"])}
129
- />
130
- </DateTranslationContextProvider>
131
- </div>
132
- );
133
- },
134
- );
135
-
136
- export default DatePickerStandalone;
@@ -1,28 +0,0 @@
1
- import { render, screen } from "@testing-library/react";
2
- import userEvent from "@testing-library/user-event";
3
- import React from "react";
4
- import { describe, test } from "vitest";
5
- import { useDatepicker } from "../hooks";
6
- import DatePicker from "./DatePicker";
7
-
8
- const App = () => {
9
- const { datepickerProps, inputProps } = useDatepicker({
10
- fromDate: new Date("Aug 23 2019"),
11
- onDateChange: console.info,
12
- });
13
-
14
- return (
15
- <DatePicker {...datepickerProps}>
16
- <DatePicker.Input {...inputProps} label="Velg dato" />
17
- </DatePicker>
18
- );
19
- };
20
-
21
- describe("Render datepicker", () => {
22
- // eslint-disable-next-line @vitest/expect-expect
23
- test("Should not crash when e.target is window", async () => {
24
- render(<App />);
25
-
26
- await userEvent.click(screen.getByText("Velg dato"));
27
- });
28
- });
@@ -1,54 +0,0 @@
1
- import React from "react";
2
- import { CaptionProps, useDayPicker, useNavigation } from "react-day-picker";
3
- import { ArrowLeftIcon, ArrowRightIcon } from "@navikt/aksel-icons";
4
- import { Button } from "../../../button";
5
- import { Label } from "../../../typography";
6
- import { useDateTranslationContext } from "../../context";
7
- import WeekRow from "./WeekRow";
8
-
9
- /**
10
- * https://github.com/gpbl/react-day-picker/tree/main/src/components/Caption
11
- */
12
- export const DatePickerCaption = ({ displayMonth, id }: CaptionProps) => {
13
- const { goToMonth, nextMonth, previousMonth } = useNavigation();
14
- const {
15
- formatters: { formatCaption },
16
- locale,
17
- } = useDayPicker();
18
- const translate = useDateTranslationContext().translate;
19
-
20
- return (
21
- <>
22
- <div className="navds-date__caption">
23
- <Button
24
- variant="tertiary-neutral"
25
- disabled={!previousMonth}
26
- onClick={() => previousMonth && goToMonth(previousMonth)}
27
- icon={<ArrowLeftIcon title={translate("goToPreviousMonth")} />}
28
- className="navds-date__caption-button"
29
- type="button"
30
- />
31
- <Label
32
- as="span"
33
- aria-live="polite"
34
- aria-atomic="true"
35
- id={id}
36
- className="navds-date__caption-label"
37
- >
38
- {formatCaption(displayMonth, { locale })}
39
- </Label>
40
- <Button
41
- icon={<ArrowRightIcon title={translate("goToNextMonth")} />}
42
- onClick={() => nextMonth && goToMonth(nextMonth)}
43
- disabled={!nextMonth}
44
- variant="tertiary-neutral"
45
- className="navds-date__caption-button"
46
- type="button"
47
- />
48
- </div>
49
- <WeekRow displayMonth={displayMonth} />
50
- </>
51
- );
52
- };
53
-
54
- export default DatePickerCaption;
@@ -1,32 +0,0 @@
1
- import { format } from "date-fns";
2
- import React, { useRef } from "react";
3
- import { Button, DayProps, useDayPicker, useDayRender } from "react-day-picker";
4
-
5
- const DayButton = (props: DayProps) => {
6
- const buttonRef = useRef<HTMLButtonElement>(null);
7
- const dayRender = useDayRender(props.date, props.displayMonth, buttonRef);
8
- const { locale } = useDayPicker();
9
- const dateTime = format(props.date, "cccc d", { locale });
10
-
11
- if (dayRender.isHidden) {
12
- return <></>;
13
- }
14
- if (!dayRender.isButton) {
15
- return <div {...dayRender.divProps} />;
16
- }
17
-
18
- return (
19
- <Button
20
- name="day"
21
- ref={buttonRef}
22
- {...dayRender.buttonProps}
23
- role={undefined}
24
- aria-label={dateTime}
25
- aria-hidden={dayRender.activeModifiers.outside}
26
- aria-selected={undefined}
27
- aria-pressed={!!dayRender.activeModifiers.selected}
28
- />
29
- );
30
- };
31
-
32
- export default DayButton;
@@ -1,110 +0,0 @@
1
- import { max, min, setMonth, setYear, startOfMonth } from "date-fns";
2
- import React from "react";
3
- import { CaptionProps, useDayPicker, useNavigation } from "react-day-picker";
4
- import { ArrowLeftIcon, ArrowRightIcon } from "@navikt/aksel-icons";
5
- import { Button } from "../../../button";
6
- import { Select } from "../../../form/select";
7
- import { useDateTranslationContext } from "../../context";
8
- import { getMonths, getYears } from "../../utils";
9
- import WeekRow from "./WeekRow";
10
-
11
- /**
12
- * https://github.com/gpbl/react-day-picker/tree/main/src/components/CaptionDropdowns
13
- */
14
- export const DropdownCaption = ({ displayMonth, id }: CaptionProps) => {
15
- const { goToMonth, nextMonth, previousMonth } = useNavigation();
16
- const {
17
- fromDate,
18
- toDate,
19
- formatters: { formatYearCaption, formatMonthCaption, formatCaption },
20
- locale,
21
- } = useDayPicker();
22
- const translate = useDateTranslationContext().translate;
23
-
24
- if (!fromDate || !toDate) {
25
- console.warn("Using dropdownCaption required fromDate and toDate");
26
- return null;
27
- }
28
-
29
- const handleYearChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {
30
- const newMonth = setYear(
31
- startOfMonth(displayMonth),
32
- Number(e.target.value),
33
- );
34
- goToMonth(startOfMonth(min([max([newMonth, fromDate]), toDate])));
35
- };
36
-
37
- const handleMonthChange: React.ChangeEventHandler<HTMLSelectElement> = (e) =>
38
- goToMonth(setMonth(startOfMonth(displayMonth), Number(e.target.value)));
39
-
40
- const years = getYears(
41
- fromDate,
42
- toDate,
43
- displayMonth.getFullYear(),
44
- ).reverse();
45
- const months = getMonths(fromDate, toDate, displayMonth);
46
-
47
- return (
48
- <>
49
- <div className="navds-date__caption">
50
- <span
51
- aria-live="polite"
52
- aria-atomic="true"
53
- id={id}
54
- className="navds-sr-only"
55
- >
56
- {formatCaption(displayMonth, { locale })}
57
- </span>
58
- <Button
59
- variant="tertiary-neutral"
60
- disabled={!previousMonth}
61
- onClick={() => previousMonth && goToMonth(previousMonth)}
62
- icon={<ArrowLeftIcon title={translate("goToPreviousMonth")} />}
63
- className="navds-date__caption-button"
64
- type="button"
65
- />
66
-
67
- <div className="navds-date__caption">
68
- <Select
69
- label={translate("month")}
70
- hideLabel
71
- className="navds-date__caption__month"
72
- value={displayMonth.getMonth()}
73
- onChange={handleMonthChange}
74
- >
75
- {months.map((m) => (
76
- <option key={m.getMonth()} value={m.getMonth()}>
77
- {formatMonthCaption(m, { locale })}
78
- </option>
79
- ))}
80
- </Select>
81
- <Select
82
- label={translate("year")}
83
- hideLabel
84
- value={displayMonth.getFullYear()}
85
- onChange={handleYearChange}
86
- className="navds-date__caption__year"
87
- >
88
- {years.map((year) => (
89
- <option key={year.getFullYear()} value={year.getFullYear()}>
90
- {formatYearCaption(year, { locale })}
91
- </option>
92
- ))}
93
- </Select>
94
- </div>
95
-
96
- <Button
97
- variant="tertiary-neutral"
98
- icon={<ArrowRightIcon title={translate("goToNextMonth")} />}
99
- onClick={() => nextMonth && goToMonth(nextMonth)}
100
- disabled={!nextMonth}
101
- className="navds-date__caption-button"
102
- type="button"
103
- />
104
- </div>
105
- <WeekRow displayMonth={displayMonth} />
106
- </>
107
- );
108
- };
109
-
110
- export default DropdownCaption;
@@ -1,56 +0,0 @@
1
- import { Locale, addDays, startOfWeek } from "date-fns";
2
- import React from "react";
3
- import { useDayPicker } from "react-day-picker";
4
- import { Hide } from "../../../layout/responsive";
5
-
6
- /**
7
- * https://github.com/gpbl/react-day-picker/tree/main/src/components/HeadRow
8
- */
9
- export function HeadRow(): JSX.Element {
10
- const {
11
- classNames,
12
- styles,
13
- showWeekNumber,
14
- locale,
15
- formatters: { formatWeekdayName },
16
- labels: { labelWeekday },
17
- } = useDayPicker();
18
-
19
- const weekdays = getWeekdays(locale);
20
-
21
- return (
22
- <tr style={styles.head_row} className={classNames.head_row}>
23
- {showWeekNumber && (
24
- <Hide below="sm" asChild>
25
- <td style={styles.head_cell} className={classNames.head_cell}></td>
26
- </Hide>
27
- )}
28
- {weekdays.map((weekday, i) => (
29
- <th
30
- key={i}
31
- scope="col"
32
- className={classNames.head_cell}
33
- style={styles.head_cell}
34
- aria-label={labelWeekday(weekday, { locale })}
35
- >
36
- {formatWeekdayName(weekday, { locale })}
37
- </th>
38
- ))}
39
- </tr>
40
- );
41
- }
42
-
43
- /**
44
- * Generate a series of 7 days, starting from the week, to use for formatting
45
- * the weekday names (Monday, Tuesday, etc.).
46
- */
47
- export function getWeekdays(locale?: Locale): Date[] {
48
- const start = startOfWeek(new Date(), { locale, weekStartsOn: 1 });
49
-
50
- const days: Date[] = [];
51
- for (let i = 0; i < 7; i++) {
52
- const day = addDays(start, i);
53
- days.push(day);
54
- }
55
- return days;
56
- }
@@ -1,48 +0,0 @@
1
- import { getUnixTime } from "date-fns";
2
- import React from "react";
3
- import { useDayPicker } from "react-day-picker";
4
- import { Hide } from "../../../layout/responsive";
5
- import DayButton from "./DayButton";
6
- import WeekNumber from "./WeekNumber";
7
-
8
- /**
9
- * The props for the {@link Row} component.
10
- */
11
- export interface RowProps {
12
- /** The month where the row is displayed. */
13
- displayMonth: Date;
14
- /** The number of the week to render. */
15
- weekNumber: number;
16
- /** The days contained in the week. */
17
- dates: Date[];
18
- }
19
-
20
- /**
21
- * https://github.com/gpbl/react-day-picker/tree/main/src/components/Row
22
- */
23
- function Row(props: RowProps): JSX.Element {
24
- const { styles, classNames, showWeekNumber } = useDayPicker();
25
-
26
- return (
27
- <tr className={classNames.row} style={styles.row}>
28
- {showWeekNumber && (
29
- <Hide below="sm" asChild>
30
- <td className={classNames.cell} style={styles.cell}>
31
- <WeekNumber number={props.weekNumber} dates={props.dates} />
32
- </td>
33
- </Hide>
34
- )}
35
- {props.dates.map((date) => (
36
- <td
37
- className={classNames.cell}
38
- style={styles.cell}
39
- key={getUnixTime(date)}
40
- >
41
- <DayButton displayMonth={props.displayMonth} date={date} />
42
- </td>
43
- ))}
44
- </tr>
45
- );
46
- }
47
-
48
- export default Row;
@@ -1,17 +0,0 @@
1
- import React from "react";
2
- import { HeadRow, useDayPicker } from "react-day-picker";
3
-
4
- /**
5
- * https://github.com/gpbl/react-day-picker/tree/main/src/components/Head
6
- */
7
- function TableHead(): JSX.Element {
8
- const { classNames, styles, components } = useDayPicker();
9
- const HeadRowComponent = components?.HeadRow ?? HeadRow;
10
- return (
11
- <thead style={styles.head} className={classNames.head} aria-hidden>
12
- <HeadRowComponent />
13
- </thead>
14
- );
15
- }
16
-
17
- export default TableHead;
@@ -1,75 +0,0 @@
1
- /* https://github.com/gpbl/react-day-picker/blob/7f78cd5/src/components/WeekNumber/WeekNumber.tsx#L21 */
2
- import React from "react";
3
- import { Button as RDPButton, useDayPicker } from "react-day-picker";
4
- import { Button } from "../../../button";
5
- import { useThemeInternal } from "../../../theme/Theme";
6
- import { Detail } from "../../../typography";
7
- import { useDateTranslationContext } from "../../context";
8
-
9
- export interface WeekNumberProps {
10
- /** The number of the week. */
11
- number: number;
12
- /** The dates in the week. */
13
- dates: Date[];
14
- }
15
-
16
- /**
17
- * https://github.com/gpbl/react-day-picker/tree/main/src/components/WeekNumber
18
- */
19
- function WeekNumber({
20
- number: weekNumber,
21
- dates,
22
- }: WeekNumberProps): JSX.Element {
23
- const { onWeekNumberClick, styles, classNames } = useDayPicker();
24
- const themeContext = useThemeInternal(false);
25
- const translate = useDateTranslationContext().translate;
26
-
27
- if (!onWeekNumberClick) {
28
- return (
29
- <Detail
30
- as="span"
31
- textColor="subtle"
32
- className={classNames.weeknumber}
33
- style={styles.weeknumber}
34
- aria-label={translate("weekNumber", { week: weekNumber })}
35
- >
36
- {weekNumber}
37
- </Detail>
38
- );
39
- }
40
-
41
- if (themeContext) {
42
- return (
43
- <Button
44
- variant="secondary-neutral"
45
- size="small"
46
- name="week-number"
47
- aria-label={translate("selectWeekNumber", { week: weekNumber })}
48
- style={styles.weeknumber}
49
- className="navds-date__weeknumber"
50
- onClick={(event) => {
51
- onWeekNumberClick(weekNumber, dates, event);
52
- }}
53
- icon={
54
- <span className="navds-date__weeknumber-number">{weekNumber}</span>
55
- }
56
- />
57
- );
58
- }
59
-
60
- return (
61
- <RDPButton
62
- name="week-number"
63
- aria-label={translate("selectWeekNumber", { week: weekNumber })}
64
- style={styles.weeknumber}
65
- className={classNames.weeknumber}
66
- onClick={(event) => {
67
- onWeekNumberClick(weekNumber, dates, event);
68
- }}
69
- >
70
- {weekNumber}
71
- </RDPButton>
72
- );
73
- }
74
-
75
- export default WeekNumber;
@@ -1,6 +0,0 @@
1
- export { useDatepicker } from "./useDatepicker";
2
- export type { DateValidationT } from "./useDatepicker";
3
- export { useRangeDatepicker } from "./useRangeDatepicker";
4
- export type { RangeValidationT } from "./useRangeDatepicker";
5
- export { useMonthpicker } from "./useMonthPicker";
6
- export type { MonthValidationT } from "./useMonthPicker";
@@ -1,102 +0,0 @@
1
- import cl from "clsx";
2
- import React, { forwardRef, useState } from "react";
3
- import { DayPickerProvider } from "react-day-picker";
4
- import { useDateLocale, useI18n } from "../../util/i18n/i18n.hooks";
5
- import {
6
- DateTranslationContextProvider,
7
- SharedMonthProvider,
8
- } from "../context";
9
- import { getLocaleFromString, getTranslations } from "../utils";
10
- import MonthCaption from "./MonthCaption";
11
- import MonthSelector from "./MonthSelector";
12
- import { MonthPickerProps } from "./types";
13
-
14
- export interface MonthPickerStandaloneProps
15
- extends Omit<
16
- MonthPickerProps,
17
- "open" | "onClose" | "onOpenToggle" | "wrapperClassName" | "strategy"
18
- > {
19
- /**
20
- * Monthpicker classname
21
- */
22
- className?: string;
23
- }
24
-
25
- export type MonthPickerStandaloneType = React.ForwardRefExoticComponent<
26
- MonthPickerStandaloneProps & React.RefAttributes<HTMLDivElement>
27
- >;
28
-
29
- export const MonthPickerStandalone = forwardRef<
30
- HTMLDivElement,
31
- MonthPickerStandaloneProps
32
- >(
33
- (
34
- {
35
- dropdownCaption = false,
36
- fromDate,
37
- toDate,
38
- disabled = [],
39
- selected,
40
- className,
41
- locale,
42
- translations,
43
- onMonthSelect,
44
- defaultSelected,
45
- year,
46
- onYearChange,
47
- },
48
- ref,
49
- ) => {
50
- const translate = useI18n(
51
- "DatePicker",
52
- translations,
53
- getTranslations(locale),
54
- );
55
- const langProviderLocale = useDateLocale();
56
- const [selectedMonth, setSelectedMonth] = useState<Date | undefined>(
57
- defaultSelected,
58
- );
59
-
60
- const handleSelect = (month?: Date) => {
61
- setSelectedMonth(month);
62
- onMonthSelect?.(month);
63
- };
64
-
65
- if (dropdownCaption && (!fromDate || !toDate)) {
66
- console.warn("Using dropdownCaption required fromDate and toDate");
67
- return null;
68
- }
69
-
70
- return (
71
- <div ref={ref} className={cl("navds-date__wrapper", className)}>
72
- <DateTranslationContextProvider translate={translate}>
73
- <DayPickerProvider
74
- initialProps={{
75
- locale: locale ? getLocaleFromString(locale) : langProviderLocale,
76
- selected: selected ?? selectedMonth,
77
- toDate,
78
- fromDate,
79
- month: selected ?? selectedMonth,
80
- }}
81
- >
82
- <div className="navds-date rdp-month">
83
- <SharedMonthProvider
84
- dropdownCaption={dropdownCaption}
85
- disabled={disabled}
86
- selected={selected ?? selectedMonth}
87
- onSelect={handleSelect}
88
- year={year}
89
- onYearChange={onYearChange}
90
- >
91
- <MonthCaption />
92
- <MonthSelector />
93
- </SharedMonthProvider>
94
- </div>
95
- </DayPickerProvider>
96
- </DateTranslationContextProvider>
97
- </div>
98
- );
99
- },
100
- );
101
-
102
- export default MonthPickerStandalone;
@@ -1,22 +0,0 @@
1
- import { describe, expect, test } from "vitest";
2
- import { dateIsInCurrentMonth } from "..";
3
-
4
- const selectedDate = new Date("Feb 1 1994");
5
-
6
- describe("Returns if date is in current month", () => {
7
- test("Date should be within current month (true)", () => {
8
- expect(dateIsInCurrentMonth(new Date(), new Date())).toBeTruthy();
9
- });
10
-
11
- test("Date should not be within current month (false)", () => {
12
- expect(
13
- dateIsInCurrentMonth(new Date("Sep 2 2021"), selectedDate),
14
- ).toBeFalsy();
15
- expect(
16
- dateIsInCurrentMonth(new Date("Sep 1 2021"), selectedDate),
17
- ).toBeFalsy();
18
- expect(
19
- dateIsInCurrentMonth(new Date("Sep 30 2021"), selectedDate),
20
- ).toBeFalsy();
21
- });
22
- });