@navikt/ds-react 7.12.2 → 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 (310) 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/form/confirmation-panel/ConfirmationPanel.js +6 -1
  106. package/cjs/form/confirmation-panel/ConfirmationPanel.js.map +1 -1
  107. package/cjs/modal/Modal.js +2 -2
  108. package/cjs/modal/Modal.js.map +1 -1
  109. package/cjs/popover/Popover.js +3 -3
  110. package/cjs/popover/Popover.js.map +1 -1
  111. package/cjs/theme/Theme.d.ts +7 -1
  112. package/cjs/theme/Theme.js +24 -2
  113. package/cjs/theme/Theme.js.map +1 -1
  114. package/cjs/theme/index.d.ts +1 -1
  115. package/cjs/theme/index.js.map +1 -1
  116. package/cjs/tooltip/Tooltip.js +2 -5
  117. package/cjs/tooltip/Tooltip.js.map +1 -1
  118. package/esm/date/Date.Dialog.d.ts +18 -0
  119. package/esm/date/Date.Dialog.js +38 -0
  120. package/esm/date/Date.Dialog.js.map +1 -0
  121. package/esm/date/Date.Input.d.ts +50 -0
  122. package/esm/date/Date.Input.js +66 -0
  123. package/esm/date/Date.Input.js.map +1 -0
  124. package/esm/date/Date.locale.d.ts +44 -0
  125. package/esm/date/Date.locale.js +47 -0
  126. package/esm/date/Date.locale.js.map +1 -0
  127. package/esm/date/Date.typeutils.d.ts +14 -0
  128. package/esm/date/Date.typeutils.js +10 -0
  129. package/esm/date/Date.typeutils.js.map +1 -0
  130. package/esm/date/date-utils/calendar-range.d.ts +11 -0
  131. package/esm/date/date-utils/calendar-range.js +27 -0
  132. package/esm/date/date-utils/calendar-range.js.map +1 -0
  133. package/esm/date/date-utils/check-dates.d.ts +8 -0
  134. package/esm/date/date-utils/check-dates.js +14 -0
  135. package/esm/date/date-utils/check-dates.js.map +1 -0
  136. package/esm/date/date-utils/clamp-dates.d.ts +19 -0
  137. package/esm/date/date-utils/clamp-dates.js +37 -0
  138. package/esm/date/date-utils/clamp-dates.js.map +1 -0
  139. package/esm/date/date-utils/dates-disabled.d.ts +1 -0
  140. package/esm/date/date-utils/dates-disabled.js +25 -0
  141. package/esm/date/date-utils/dates-disabled.js.map +1 -0
  142. package/esm/date/date-utils/dropdown-options.d.ts +13 -0
  143. package/esm/date/date-utils/dropdown-options.js +41 -0
  144. package/esm/date/date-utils/dropdown-options.js.map +1 -0
  145. package/esm/date/date-utils/format-date.d.ts +2 -0
  146. package/esm/date/date-utils/format-date.js +9 -0
  147. package/esm/date/date-utils/format-date.js.map +1 -0
  148. package/esm/date/date-utils/index.d.ts +8 -0
  149. package/esm/date/date-utils/index.js +9 -0
  150. package/esm/date/date-utils/index.js.map +1 -0
  151. package/esm/date/date-utils/is-match.d.ts +3 -0
  152. package/esm/date/date-utils/is-match.js +57 -0
  153. package/esm/date/date-utils/is-match.js.map +1 -0
  154. package/esm/date/date-utils/parse-date.d.ts +4 -0
  155. package/esm/date/date-utils/parse-date.js +83 -0
  156. package/esm/date/date-utils/parse-date.js.map +1 -0
  157. package/esm/date/datepicker/DatePicker.d.ts +3 -3
  158. package/esm/date/datepicker/DatePicker.js +46 -62
  159. package/esm/date/datepicker/DatePicker.js.map +1 -1
  160. package/esm/date/datepicker/DatePicker.types.d.ts +108 -0
  161. package/esm/date/datepicker/DatePicker.types.js +2 -0
  162. package/esm/date/datepicker/DatePicker.types.js.map +1 -0
  163. package/esm/date/datepicker/hooks/useDatepicker.d.ts +90 -0
  164. package/esm/date/datepicker/hooks/useDatepicker.js +160 -0
  165. package/esm/date/datepicker/hooks/useDatepicker.js.map +1 -0
  166. package/esm/date/datepicker/hooks/useRangeDatepicker.d.ts +76 -0
  167. package/esm/date/datepicker/hooks/useRangeDatepicker.js +318 -0
  168. package/esm/date/datepicker/hooks/useRangeDatepicker.js.map +1 -0
  169. package/esm/date/datepicker/index.d.ts +4 -3
  170. package/esm/date/datepicker/index.js +4 -3
  171. package/esm/date/datepicker/index.js.map +1 -1
  172. package/esm/date/datepicker/parts/DatePicker.DayButton.d.ts +9 -0
  173. package/esm/date/datepicker/parts/DatePicker.DayButton.js +41 -0
  174. package/esm/date/datepicker/parts/DatePicker.DayButton.js.map +1 -0
  175. package/esm/date/datepicker/parts/DatePicker.Months.d.ts +11 -0
  176. package/esm/date/datepicker/parts/DatePicker.Months.js +58 -0
  177. package/esm/date/datepicker/parts/DatePicker.Months.js.map +1 -0
  178. package/esm/date/datepicker/parts/DatePicker.RDP.d.ts +15 -0
  179. package/esm/date/datepicker/parts/DatePicker.RDP.js +74 -0
  180. package/esm/date/datepicker/parts/DatePicker.RDP.js.map +1 -0
  181. package/esm/date/datepicker/parts/DatePicker.Standalone.d.ts +18 -0
  182. package/esm/date/datepicker/parts/DatePicker.Standalone.js +31 -0
  183. package/esm/date/datepicker/parts/DatePicker.Standalone.js.map +1 -0
  184. package/esm/date/datepicker/parts/DatePicker.WeekNumber.d.ts +9 -0
  185. package/esm/date/datepicker/parts/DatePicker.WeekNumber.js +35 -0
  186. package/esm/date/datepicker/parts/DatePicker.WeekNumber.js.map +1 -0
  187. package/esm/date/datepicker/parts/DatePicker.WeekRow.d.ts +8 -0
  188. package/esm/date/datepicker/parts/DatePicker.WeekRow.js +22 -0
  189. package/esm/date/datepicker/parts/DatePicker.WeekRow.js.map +1 -0
  190. package/esm/date/monthpicker/MonthPicker.context.d.ts +21 -0
  191. package/esm/date/monthpicker/MonthPicker.context.js +41 -0
  192. package/esm/date/monthpicker/MonthPicker.context.js.map +1 -0
  193. package/esm/date/monthpicker/MonthPicker.d.ts +3 -3
  194. package/esm/date/monthpicker/MonthPicker.js +31 -40
  195. package/esm/date/monthpicker/MonthPicker.js.map +1 -1
  196. package/esm/date/monthpicker/MonthPicker.types.d.ts +86 -0
  197. package/esm/date/monthpicker/MonthPicker.types.js +2 -0
  198. package/esm/date/monthpicker/MonthPicker.types.js.map +1 -0
  199. package/esm/date/monthpicker/MonthPicker.util.d.ts +2 -0
  200. package/esm/date/monthpicker/MonthPicker.util.js +152 -0
  201. package/esm/date/monthpicker/MonthPicker.util.js.map +1 -0
  202. package/esm/date/monthpicker/hooks/useMonthPicker.d.ts +85 -0
  203. package/esm/date/monthpicker/hooks/useMonthPicker.js +175 -0
  204. package/esm/date/monthpicker/hooks/useMonthPicker.js.map +1 -0
  205. package/esm/date/monthpicker/index.d.ts +4 -4
  206. package/esm/date/monthpicker/index.js +3 -3
  207. package/esm/date/monthpicker/index.js.map +1 -1
  208. package/esm/date/monthpicker/parts/MonthPicker.Button.d.ts +11 -0
  209. package/esm/date/monthpicker/parts/MonthPicker.Button.js +52 -0
  210. package/esm/date/monthpicker/parts/MonthPicker.Button.js.map +1 -0
  211. package/esm/date/monthpicker/parts/MonthPicker.Caption.d.ts +3 -0
  212. package/esm/date/monthpicker/parts/MonthPicker.Caption.js +46 -0
  213. package/esm/date/monthpicker/parts/MonthPicker.Caption.js.map +1 -0
  214. package/esm/date/monthpicker/parts/MonthPicker.Standalone.d.ts +10 -0
  215. package/esm/date/monthpicker/parts/MonthPicker.Standalone.js +22 -0
  216. package/esm/date/monthpicker/parts/MonthPicker.Standalone.js.map +1 -0
  217. package/esm/date/monthpicker/parts/MonthPicker.Table.d.ts +3 -0
  218. package/esm/date/monthpicker/parts/MonthPicker.Table.js +50 -0
  219. package/esm/date/monthpicker/parts/MonthPicker.Table.js.map +1 -0
  220. package/esm/form/combobox/Combobox.d.ts +1 -1
  221. package/esm/form/combobox/Input/InputController.d.ts +1 -1
  222. package/esm/form/confirmation-panel/ConfirmationPanel.js +6 -1
  223. package/esm/form/confirmation-panel/ConfirmationPanel.js.map +1 -1
  224. package/esm/modal/Modal.js +3 -3
  225. package/esm/modal/Modal.js.map +1 -1
  226. package/esm/popover/Popover.js +4 -4
  227. package/esm/popover/Popover.js.map +1 -1
  228. package/esm/theme/Theme.d.ts +7 -1
  229. package/esm/theme/Theme.js +22 -2
  230. package/esm/theme/Theme.js.map +1 -1
  231. package/esm/theme/index.d.ts +1 -1
  232. package/esm/theme/index.js.map +1 -1
  233. package/esm/tooltip/Tooltip.js +2 -5
  234. package/esm/tooltip/Tooltip.js.map +1 -1
  235. package/package.json +7 -8
  236. package/src/date/{parts/DateWrapper.tsx → Date.Dialog.tsx} +12 -9
  237. package/src/date/{parts/DateInput.tsx → Date.Input.tsx} +30 -5
  238. package/src/date/{utils/locale.ts → Date.locale.ts} +11 -2
  239. package/src/date/Date.typeutils.ts +32 -0
  240. package/src/date/date-utils/calendar-range.test.ts +54 -0
  241. package/src/date/date-utils/calendar-range.ts +46 -0
  242. package/src/date/date-utils/check-dates.test.ts +49 -0
  243. package/src/date/date-utils/check-dates.ts +28 -0
  244. package/src/date/date-utils/clamp-dates.test.ts +156 -0
  245. package/src/date/date-utils/clamp-dates.ts +63 -0
  246. package/src/date/{utils/__tests__ → date-utils}/dates-disabled.test.ts +1 -1
  247. package/src/date/{utils → date-utils}/dates-disabled.ts +1 -2
  248. package/src/date/date-utils/dropdown-options.test.ts +143 -0
  249. package/src/date/date-utils/dropdown-options.ts +79 -0
  250. package/src/date/{utils/__tests__ → date-utils}/format-dates.test.ts +2 -2
  251. package/src/date/date-utils/index.ts +16 -0
  252. package/src/date/{utils/__tests__ → date-utils}/is-match.test.ts +1 -1
  253. package/src/date/{utils → date-utils}/is-match.ts +2 -11
  254. package/src/date/{utils/__tests__ → date-utils}/parse-dates.test.ts +2 -1
  255. package/src/date/datepicker/DatePicker.tsx +67 -92
  256. package/src/date/datepicker/{types.ts → DatePicker.types.ts} +10 -4
  257. package/src/date/{hooks → datepicker/hooks}/useDatepicker.tsx +12 -13
  258. package/src/date/{hooks → datepicker/hooks}/useRangeDatepicker.test.tsx +1 -1
  259. package/src/date/{hooks → datepicker/hooks}/useRangeDatepicker.tsx +19 -19
  260. package/src/date/datepicker/index.ts +4 -5
  261. package/src/date/datepicker/parts/DatePicker.DayButton.tsx +56 -0
  262. package/src/date/datepicker/parts/DatePicker.Months.tsx +149 -0
  263. package/src/date/datepicker/parts/DatePicker.RDP.tsx +170 -0
  264. package/src/date/datepicker/parts/DatePicker.Standalone.tsx +93 -0
  265. package/src/date/datepicker/parts/DatePicker.WeekNumber.tsx +86 -0
  266. package/src/date/datepicker/parts/{WeekRow.tsx → DatePicker.WeekRow.tsx} +20 -21
  267. package/src/date/monthpicker/MonthPicker.context.tsx +103 -0
  268. package/src/date/monthpicker/MonthPicker.tsx +63 -68
  269. package/src/date/monthpicker/{types.ts → MonthPicker.types.ts} +1 -1
  270. package/src/date/{utils/navigation.ts → monthpicker/MonthPicker.util.ts} +2 -1
  271. package/src/date/{hooks → monthpicker/hooks}/useMonthPicker.tsx +14 -13
  272. package/src/date/monthpicker/index.ts +4 -4
  273. package/src/date/monthpicker/{MonthButton.tsx → parts/MonthPicker.Button.tsx} +21 -10
  274. package/src/date/monthpicker/{MonthCaption.tsx → parts/MonthPicker.Caption.tsx} +20 -21
  275. package/src/date/monthpicker/parts/MonthPicker.Standalone.tsx +86 -0
  276. package/src/date/monthpicker/{MonthSelector.tsx → parts/MonthPicker.Table.tsx} +7 -7
  277. package/src/form/confirmation-panel/ConfirmationPanel.tsx +7 -0
  278. package/src/modal/Modal.tsx +3 -3
  279. package/src/popover/Popover.tsx +4 -4
  280. package/src/react-css.d.ts +4 -0
  281. package/src/theme/RenameCSS.test.ts +80 -0
  282. package/src/theme/Theme.tsx +45 -8
  283. package/src/theme/index.ts +1 -1
  284. package/src/tooltip/Tooltip.tsx +2 -6
  285. package/src/date/context/index.ts +0 -9
  286. package/src/date/context/useDateInputContext.tsx +0 -34
  287. package/src/date/context/useDateTranslationContext.ts +0 -9
  288. package/src/date/context/useSharedMonthContext.tsx +0 -68
  289. package/src/date/datepicker/DatePickerStandalone.tsx +0 -136
  290. package/src/date/datepicker/datepicker.test.tsx +0 -28
  291. package/src/date/datepicker/parts/Caption.tsx +0 -54
  292. package/src/date/datepicker/parts/DayButton.tsx +0 -32
  293. package/src/date/datepicker/parts/DropdownCaption.tsx +0 -110
  294. package/src/date/datepicker/parts/HeadRow.tsx +0 -56
  295. package/src/date/datepicker/parts/Row.tsx +0 -48
  296. package/src/date/datepicker/parts/TableHead.tsx +0 -17
  297. package/src/date/datepicker/parts/WeekNumber.tsx +0 -75
  298. package/src/date/hooks/index.ts +0 -6
  299. package/src/date/monthpicker/MonthPickerStandalone.tsx +0 -102
  300. package/src/date/utils/__tests__/check-dates.test.ts +0 -22
  301. package/src/date/utils/__tests__/get-dates.test.ts +0 -121
  302. package/src/date/utils/__tests__/get-initial-year.test.ts +0 -83
  303. package/src/date/utils/__tests__/get-month-weeks.test.ts +0 -116
  304. package/src/date/utils/check-dates.ts +0 -13
  305. package/src/date/utils/get-dates.ts +0 -60
  306. package/src/date/utils/get-initial-year.ts +0 -25
  307. package/src/date/utils/get-month-weeks.ts +0 -93
  308. package/src/date/utils/index.ts +0 -18
  309. /package/src/date/{utils → date-utils}/format-date.ts +0 -0
  310. /package/src/date/{utils → date-utils}/parse-date.ts +0 -0
@@ -0,0 +1,18 @@
1
+ import React from "react";
2
+ import { DatePickerDefaultProps, MultipleMode, RangeMode, SingleMode } from "../DatePicker.types.js";
3
+ interface DatePickerStandaloneDefaultProps extends Omit<DatePickerDefaultProps, "open" | "onClose" | "onOpenToggle" | "wrapperClassName" | "strategy"> {
4
+ /**
5
+ * Datepicker classname
6
+ */
7
+ className?: string;
8
+ /**
9
+ * If datepicker should be fixed to 6 weeks, regardless of actual weeks in month
10
+ * @default true
11
+ */
12
+ fixedWeeks?: boolean;
13
+ }
14
+ type StandaloneConditionalModeProps = SingleMode | MultipleMode | RangeMode;
15
+ export type DatePickerStandaloneProps = DatePickerStandaloneDefaultProps & StandaloneConditionalModeProps;
16
+ export type DatePickerStandaloneType = React.ForwardRefExoticComponent<DatePickerStandaloneProps & React.RefAttributes<HTMLDivElement>>;
17
+ export declare const DatePickerStandalone: DatePickerStandaloneType;
18
+ export default DatePickerStandalone;
@@ -0,0 +1,31 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import cl from "clsx";
13
+ import React, { forwardRef } from "react";
14
+ import { useControllableState } from "../../../util/hooks/index.js";
15
+ import { useI18n } from "../../../util/i18n/i18n.hooks.js";
16
+ import { DateTranslationContextProvider, getTranslations, } from "../../Date.locale.js";
17
+ import { ReactDayPicker } from "./DatePicker.RDP.js";
18
+ export const DatePickerStandalone = forwardRef((_a, ref) => {
19
+ var { className, locale, translations, selected, defaultSelected, onSelect, mode } = _a, rest = __rest(_a, ["className", "locale", "translations", "selected", "defaultSelected", "onSelect", "mode"]);
20
+ const translate = useI18n("DatePicker", translations, getTranslations(locale));
21
+ const [value, setValue] = useControllableState({
22
+ defaultValue: defaultSelected,
23
+ value: selected,
24
+ onChange: (newValue) => onSelect === null || onSelect === void 0 ? void 0 : onSelect(newValue),
25
+ });
26
+ return (React.createElement(DateTranslationContextProvider, { translate: translate },
27
+ React.createElement("div", { ref: ref, className: cl("navds-date__standalone-wrapper", className) },
28
+ React.createElement(ReactDayPicker, Object.assign({}, rest, { locale: locale, handleSelect: setValue, selected: value, mode: mode })))));
29
+ });
30
+ export default DatePickerStandalone;
31
+ //# sourceMappingURL=DatePicker.Standalone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.Standalone.js","sourceRoot":"","sources":["../../../../src/date/datepicker/parts/DatePicker.Standalone.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,+BAA+B,CAAC;AACxD,OAAO,EACL,8BAA8B,EAC9B,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAO3B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA2BlD,MAAM,CAAC,MAAM,oBAAoB,GAA6B,UAAU,CAItE,CACE,EASC,EACD,GAAG,EACH,EAAE;QAXF,EACE,SAAS,EACT,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,IAAI,OAEL,EADI,IAAI,cART,0FASC,CADQ;IAIT,MAAM,SAAS,GAAG,OAAO,CACvB,YAAY,EACZ,YAAY,EACZ,eAAe,CAAC,MAAM,CAAC,CACxB,CAAC;IAEF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,oBAAoB,CAE5C;QACA,YAAY,EAAE,eAAe;QAC7B,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,QAAe,CAAC;KACpD,CAAC,CAAC;IAEH,OAAO,CACL,oBAAC,8BAA8B,IAAC,SAAS,EAAE,SAAS;QAClD,6BACE,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,EAAE,CAAC,gCAAgC,EAAE,SAAS,CAAC;YAE1D,oBAAC,cAAc,oBACT,IAAI,IACR,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,QAAQ,EACtB,QAAQ,EAAE,KAAY,EACtB,IAAI,EAAE,IAAW,IACjB,CACE,CACyB,CAClC,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { CalendarWeek } from "react-day-picker";
3
+ import { MultipleMode } from "../DatePicker.types.js";
4
+ declare const DatePickerWeekNumber: ({ week: { weekNumber, days }, onWeekNumberClick, className, style, showOnDesktop, }: {
5
+ week: CalendarWeek;
6
+ onWeekNumberClick: MultipleMode["onWeekNumberClick"];
7
+ showOnDesktop: boolean;
8
+ } & React.ThHTMLAttributes<HTMLTableCellElement>) => React.JSX.Element;
9
+ export { DatePickerWeekNumber };
@@ -0,0 +1,35 @@
1
+ import cl from "clsx";
2
+ import React, { useMemo } from "react";
3
+ import { useDayPicker } from "react-day-picker";
4
+ import { Button } from "../../../button/index.js";
5
+ import { Hide, Show } from "../../../layout/responsive/index.js";
6
+ import { Detail } from "../../../typography/index.js";
7
+ import { useDateTranslationContext } from "../../Date.locale.js";
8
+ const DatePickerWeekNumber = ({ week: { weekNumber, days }, onWeekNumberClick, className, style, showOnDesktop, }) => {
9
+ const translate = useDateTranslationContext().translate;
10
+ const { getModifiers } = useDayPicker();
11
+ const hideWeek = useMemo(() => {
12
+ if (days.filter((day) => {
13
+ const mods = getModifiers(day);
14
+ return !(mods.hidden || mods.outside || mods.disabled);
15
+ }).length === 0) {
16
+ return true;
17
+ }
18
+ return false;
19
+ }, [days, getModifiers]);
20
+ const DisplayMode = showOnDesktop ? Show : Hide;
21
+ if (!onWeekNumberClick || hideWeek) {
22
+ return (React.createElement(DisplayMode, { above: "sm", asChild: true },
23
+ React.createElement("td", { className: "rdp-cell" },
24
+ React.createElement(Detail, { as: "span", textColor: "subtle", className: className, style: style, "aria-label": translate("weekNumber", { week: weekNumber }) }, weekNumber))));
25
+ }
26
+ return (React.createElement(DisplayMode, { above: "sm", asChild: true },
27
+ React.createElement("td", { className: cl("rdp-cell", {
28
+ "navds-date__week-wrapper": !showOnDesktop,
29
+ }) },
30
+ React.createElement(Button, { variant: "secondary-neutral", size: "small", name: "week-number", "aria-label": translate("selectWeekNumber", { week: weekNumber }), style: style, className: cl("navds-date__weeknumber", "rdp-weeknumber"), onClick: () => {
31
+ onWeekNumberClick(weekNumber, days.map((day) => day.date));
32
+ }, icon: React.createElement("span", { className: "navds-date__weeknumber-number" }, weekNumber) }))));
33
+ };
34
+ export { DatePickerWeekNumber };
35
+ //# sourceMappingURL=DatePicker.WeekNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.WeekNumber.js","sourceRoot":"","sources":["../../../../src/date/datepicker/parts/DatePicker.WeekNumber.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,MAAM,CAAC;AACtB,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAgB,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAG9D,MAAM,oBAAoB,GAAG,CAAC,EAC5B,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAC1B,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,aAAa,GAKiC,EAAE,EAAE;IAClD,MAAM,SAAS,GAAG,yBAAyB,EAAE,CAAC,SAAS,CAAC;IAExD,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CAAC;IAExC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,IACE,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;YAClB,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC/B,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,EACf,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEzB,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAEhD,IAAI,CAAC,iBAAiB,IAAI,QAAQ,EAAE,CAAC;QACnC,OAAO,CACL,oBAAC,WAAW,IAAC,KAAK,EAAC,IAAI,EAAC,OAAO;YAC7B,4BAAI,SAAS,EAAC,UAAU;gBACtB,oBAAC,MAAM,IACL,EAAE,EAAC,MAAM,EACT,SAAS,EAAC,QAAQ,EAClB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,KAAK,gBACA,SAAS,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,IAExD,UAAU,CACJ,CACN,CACO,CACf,CAAC;IACJ,CAAC;IAED,OAAO,CACL,oBAAC,WAAW,IAAC,KAAK,EAAC,IAAI,EAAC,OAAO;QAC7B,4BACE,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE;gBACxB,0BAA0B,EAAE,CAAC,aAAa;aAC3C,CAAC;YAEF,oBAAC,MAAM,IACL,OAAO,EAAC,mBAAmB,EAC3B,IAAI,EAAC,OAAO,EACZ,IAAI,EAAC,aAAa,gBACN,SAAS,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAC/D,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,EAAE,CAAC,wBAAwB,EAAE,gBAAgB,CAAC,EACzD,OAAO,EAAE,GAAG,EAAE;oBACZ,iBAAiB,CACf,UAAU,EACV,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAC5B,CAAC;gBACJ,CAAC,EACD,IAAI,EACF,8BAAM,SAAS,EAAC,+BAA+B,IAAE,UAAU,CAAQ,GAErE,CACC,CACO,CACf,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ import React from "react";
2
+ import { CalendarWeek } from "react-day-picker";
3
+ import { MultipleMode } from "../DatePicker.types.js";
4
+ declare const DatePickerWeekRow: ({ onWeekNumberClick, weeks, }: {
5
+ onWeekNumberClick: MultipleMode["onWeekNumberClick"];
6
+ weeks?: CalendarWeek[];
7
+ }) => React.JSX.Element | null;
8
+ export { DatePickerWeekRow };
@@ -0,0 +1,22 @@
1
+ import React from "react";
2
+ import { Show } from "../../../layout/responsive/index.js";
3
+ import { Detail } from "../../../typography/index.js";
4
+ import { useId } from "../../../util/hooks/index.js";
5
+ import { useDateTranslationContext } from "../../Date.locale.js";
6
+ import { DatePickerWeekNumber } from "./DatePicker.WeekNumber.js";
7
+ const DatePickerWeekRow = ({ onWeekNumberClick, weeks, }) => {
8
+ const translate = useDateTranslationContext().translate;
9
+ const labelId = useId();
10
+ if (!onWeekNumberClick) {
11
+ return null;
12
+ }
13
+ return (React.createElement(Show, { below: "sm", asChild: true },
14
+ React.createElement("table", { className: "rdp-table", role: "grid" },
15
+ React.createElement("tbody", { className: "rdp-tbody" },
16
+ React.createElement("tr", { className: "rdp-row navds-date__week-row" },
17
+ React.createElement(Detail, { as: "th", weight: "semibold", className: "rdp-cell navds-date__week-cell" },
18
+ React.createElement("span", { className: "navds-date__week-wrapper", id: labelId }, translate("week"))), weeks === null || weeks === void 0 ? void 0 :
19
+ weeks.map((week) => (React.createElement(DatePickerWeekNumber, { key: week.weekNumber, week: week, onWeekNumberClick: onWeekNumberClick, showOnDesktop: false, className: "navds-date__week-wrapper" }))))))));
20
+ };
21
+ export { DatePickerWeekRow };
22
+ //# sourceMappingURL=DatePicker.WeekRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatePicker.WeekRow.js","sourceRoot":"","sources":["../../../../src/date/datepicker/parts/DatePicker.WeekRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,iBAAiB,GAAG,CAAC,EACzB,iBAAiB,EACjB,KAAK,GAIN,EAAE,EAAE;IACH,MAAM,SAAS,GAAG,yBAAyB,EAAE,CAAC,SAAS,CAAC;IACxD,MAAM,OAAO,GAAG,KAAK,EAAE,CAAC;IAExB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,oBAAC,IAAI,IAAC,KAAK,EAAC,IAAI,EAAC,OAAO;QACtB,+BAAO,SAAS,EAAC,WAAW,EAAC,IAAI,EAAC,MAAM;YACtC,+BAAO,SAAS,EAAC,WAAW;gBAC1B,4BAAI,SAAS,EAAC,8BAA8B;oBAC1C,oBAAC,MAAM,IACL,EAAE,EAAC,IAAI,EACP,MAAM,EAAC,UAAU,EACjB,SAAS,EAAC,gCAAgC;wBAE1C,8BAAM,SAAS,EAAC,0BAA0B,EAAC,EAAE,EAAE,OAAO,IACnD,SAAS,CAAC,MAAM,CAAC,CACb,CACA,EAER,KAAK,aAAL,KAAK;oBAAL,KAAK,CAAE,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACpB,oBAAC,oBAAoB,IACnB,GAAG,EAAE,IAAI,CAAC,UAAU,EACpB,IAAI,EAAE,IAAI,EACV,iBAAiB,EAAE,iBAAiB,EACpC,aAAa,EAAE,KAAK,EACpB,SAAS,EAAC,0BAA0B,GACpC,CACH,CAAC,CACC,CACC,CACF,CACH,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { Locale } from "date-fns";
2
+ import React from "react";
3
+ import { MonthPickerProps } from "./MonthPicker.types.js";
4
+ type MonthPickerProviderProps = Pick<MonthPickerProps, "dropdownCaption" | "disabled" | "selected" | "defaultSelected" | "onMonthSelect" | "year" | "onYearChange" | "fromDate" | "toDate"> & {
5
+ children: React.ReactNode;
6
+ locale: Locale;
7
+ };
8
+ type MonthPickerContextProps = {
9
+ caption: "label" | "dropdown";
10
+ year: Date;
11
+ onYearChange: (year: Date) => void;
12
+ selected: MonthPickerProps["selected"];
13
+ onMonthSelect: MonthPickerProps["onMonthSelect"];
14
+ disabled: NonNullable<MonthPickerProps["disabled"]>;
15
+ locale: Locale;
16
+ fromDate?: MonthPickerProps["fromDate"];
17
+ toDate?: MonthPickerProps["toDate"];
18
+ };
19
+ declare const useMonthPickerContext: <S extends boolean = true>(strict?: S) => S extends true ? MonthPickerContextProps : MonthPickerContextProps | undefined;
20
+ declare const MonthPickerProvider: ({ children, disabled, year, onYearChange, fromDate, toDate, selected, defaultSelected, onMonthSelect, dropdownCaption, locale, }: MonthPickerProviderProps) => React.JSX.Element;
21
+ export { MonthPickerProvider, useMonthPickerContext };
@@ -0,0 +1,41 @@
1
+ import { isSameYear } from "date-fns";
2
+ import React from "react";
3
+ import { createContext } from "../../util/create-context.js";
4
+ import { useControllableState } from "../../util/hooks/index.js";
5
+ import { clampDisplayYear } from "../date-utils/index.js";
6
+ const [MonthPickerContextProvider, useMonthPickerContext] = createContext({
7
+ name: "MonthPickerContext",
8
+ errorMessage: "useMonthPickerContext must be used within an MonthPickerContextProvider",
9
+ });
10
+ const MonthPickerProvider = ({ children, disabled = [], year, onYearChange, fromDate, toDate, selected, defaultSelected, onMonthSelect, dropdownCaption, locale, }) => {
11
+ var _a, _b;
12
+ /**
13
+ * Controlls current displayed year in MonthPicker
14
+ */
15
+ const [displayYear, setDisplayYear] = useControllableState({
16
+ defaultValue: (_b = clampDisplayYear({
17
+ month: (_a = year !== null && year !== void 0 ? year : selected) !== null && _a !== void 0 ? _a : defaultSelected,
18
+ start: fromDate,
19
+ end: toDate,
20
+ })) !== null && _b !== void 0 ? _b : new Date(),
21
+ value: year,
22
+ onChange: onYearChange,
23
+ });
24
+ /**
25
+ * Allows both controlled and uncontrolled use of MonthPicker
26
+ */
27
+ const [month, setMonth] = useControllableState({
28
+ defaultValue: defaultSelected,
29
+ value: selected,
30
+ onChange: onMonthSelect,
31
+ });
32
+ const handleDisplayYearUpdate = (newYear) => {
33
+ if (isSameYear(newYear, displayYear)) {
34
+ return;
35
+ }
36
+ setDisplayYear(newYear);
37
+ };
38
+ return (React.createElement(MonthPickerContextProvider, { caption: dropdownCaption && fromDate && toDate ? "dropdown" : "label", disabled: disabled, selected: month, onMonthSelect: setMonth, year: displayYear, onYearChange: handleDisplayYearUpdate, locale: locale, fromDate: fromDate, toDate: toDate }, children));
39
+ };
40
+ export { MonthPickerProvider, useMonthPickerContext };
41
+ //# sourceMappingURL=MonthPicker.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthPicker.context.js","sourceRoot":"","sources":["../../../src/date/monthpicker/MonthPicker.context.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA+BjD,MAAM,CAAC,0BAA0B,EAAE,qBAAqB,CAAC,GACvD,aAAa,CAA0B;IACrC,IAAI,EAAE,oBAAoB;IAC1B,YAAY,EACV,yEAAyE;CAC5E,CAAC,CAAC;AAEL,MAAM,mBAAmB,GAAG,CAAC,EAC3B,QAAQ,EACR,QAAQ,GAAG,EAAE,EACb,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,eAAe,EACf,aAAa,EACb,eAAe,EACf,MAAM,GACmB,EAAE,EAAE;;IAC7B;;OAEG;IACH,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,oBAAoB,CAAC;QACzD,YAAY,EACV,MAAA,gBAAgB,CAAC;YACf,KAAK,EAAE,MAAA,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,QAAQ,mCAAI,eAAe;YAC1C,KAAK,EAAE,QAAQ;YACf,GAAG,EAAE,MAAM;SACZ,CAAC,mCAAI,IAAI,IAAI,EAAE;QAClB,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC;IAEH;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,oBAAoB,CAAC;QAC7C,YAAY,EAAE,eAAe;QAC7B,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,aAAa;KACxB,CAAC,CAAC;IAEH,MAAM,uBAAuB,GAAG,CAAC,OAAa,EAAE,EAAE;QAChD,IAAI,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QACD,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,CACL,oBAAC,0BAA0B,IACzB,OAAO,EAAE,eAAe,IAAI,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,EACrE,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,KAAK,EACf,aAAa,EAAE,QAAQ,EACvB,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,uBAAuB,EACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,IAEb,QAAQ,CACkB,CAC9B,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import React from "react";
2
- import { MonthPickerInput } from "../parts/DateInput.js";
3
- import MonthPickerStandalone from "./MonthPickerStandalone.js";
4
- import { MonthPickerProps } from "./types.js";
2
+ import { MonthPickerInput } from "../Date.Input.js";
3
+ import { MonthPickerProps } from "./MonthPicker.types.js";
4
+ import { MonthPickerStandalone } from "./parts/MonthPicker.Standalone.js";
5
5
  interface MonthPickerComponent extends React.ForwardRefExoticComponent<MonthPickerProps> {
6
6
  /**
7
7
  * @example
@@ -1,16 +1,15 @@
1
1
  import cl from "clsx";
2
2
  import React, { forwardRef, useState } from "react";
3
- import { DayPickerProvider } from "react-day-picker";
4
- import { useId } from "../../util/hooks/index.js";
3
+ import { useControllableState, useId } from "../../util/hooks/index.js";
5
4
  import { useMergeRefs } from "../../util/hooks/useMergeRefs.js";
6
5
  import { useDateLocale, useI18n } from "../../util/i18n/i18n.hooks.js";
7
- import { DateInputContext, DateTranslationContextProvider, SharedMonthProvider, } from "../context/index.js";
8
- import { MonthPickerInput } from "../parts/DateInput.js";
9
- import { DateWrapper } from "../parts/DateWrapper.js";
10
- import { getLocaleFromString, getTranslations } from "../utils/index.js";
11
- import MonthCaption from "./MonthCaption.js";
12
- import MonthPickerStandalone from "./MonthPickerStandalone.js";
13
- import MonthSelector from "./MonthSelector.js";
6
+ import { DateDialog } from "../Date.Dialog.js";
7
+ import { DateInputContextProvider, MonthPickerInput } from "../Date.Input.js";
8
+ import { DateTranslationContextProvider, getLocaleFromString, getTranslations, } from "../Date.locale.js";
9
+ import { MonthPickerProvider } from "./MonthPicker.context.js";
10
+ import { MonthPickerCaption } from "./parts/MonthPicker.Caption.js";
11
+ import { MonthPickerStandalone } from "./parts/MonthPicker.Standalone.js";
12
+ import { MonthPickerTable } from "./parts/MonthPicker.Table.js";
14
13
  /**
15
14
  * A component that displays a month picker.
16
15
  *
@@ -37,50 +36,42 @@ export const MonthPicker = forwardRef(({ children, dropdownCaption = false, from
37
36
  const translate = useI18n("DatePicker", translations, getTranslations(locale));
38
37
  const langProviderLocale = useDateLocale();
39
38
  const ariaId = useId(id);
40
- const [open, setOpen] = useState(_open !== null && _open !== void 0 ? _open : false);
39
+ const [open, setOpen] = useControllableState({
40
+ defaultValue: false,
41
+ value: _open,
42
+ onChange: () => {
43
+ onOpenToggle === null || onOpenToggle === void 0 ? void 0 : onOpenToggle();
44
+ },
45
+ });
41
46
  /* We use state here to insure that anchor is defined if open is true on initial render */
42
47
  const [wrapperRef, setWrapperRef] = useState(null);
43
48
  const mergedRef = useMergeRefs(setWrapperRef, ref);
44
- const [selectedMonth, setSelectedMonth] = useState(defaultSelected);
45
49
  const handleSelect = (month) => {
46
- var _a;
47
- !onMonthSelect && setSelectedMonth(month);
48
50
  onMonthSelect === null || onMonthSelect === void 0 ? void 0 : onMonthSelect(month);
49
- month && ((_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false));
51
+ if (month) {
52
+ onClose === null || onClose === void 0 ? void 0 : onClose();
53
+ setOpen(false);
54
+ }
50
55
  };
51
56
  if (dropdownCaption && (!fromDate || !toDate)) {
52
57
  console.warn("Using dropdownCaption required fromDate and toDate");
53
58
  return null;
54
59
  }
55
60
  return (React.createElement(DateTranslationContextProvider, { translate: translate },
56
- React.createElement(DateInputContext.Provider, { value: {
57
- open: _open !== null && _open !== void 0 ? _open : open,
58
- onOpen: () => {
59
- setOpen((x) => !x);
60
- onOpenToggle === null || onOpenToggle === void 0 ? void 0 : onOpenToggle();
61
- },
62
- ariaId,
63
- defined: true,
64
- } },
65
- React.createElement("div", { ref: mergedRef, className: cl("navds-date__wrapper", wrapperClassName) },
66
- children,
67
- React.createElement(DateWrapper, { open: _open !== null && _open !== void 0 ? _open : open, anchor: wrapperRef, onClose: () => { var _a; return (_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false); }, locale: locale, translate: translate, variant: "month", popoverProps: {
68
- id: ariaId,
69
- strategy,
70
- } },
71
- React.createElement(DayPickerProvider, { initialProps: {
72
- locale: locale
73
- ? getLocaleFromString(locale)
74
- : langProviderLocale,
75
- selected: selected !== null && selected !== void 0 ? selected : selectedMonth,
76
- toDate,
77
- fromDate,
78
- month: selected !== null && selected !== void 0 ? selected : selectedMonth,
61
+ React.createElement(DateInputContextProvider, { open: open, onOpen: () => setOpen((x) => !x), ariaId: ariaId, defined: true },
62
+ React.createElement(MonthPickerProvider, { dropdownCaption: dropdownCaption, defaultSelected: defaultSelected, selected: selected, disabled: disabled, fromDate: fromDate, toDate: toDate, year: year, onYearChange: onYearChange, onMonthSelect: handleSelect, locale: locale ? getLocaleFromString(locale) : langProviderLocale },
63
+ React.createElement("div", { ref: mergedRef, className: cl("navds-date__wrapper", wrapperClassName) },
64
+ children,
65
+ React.createElement(DateDialog, { open: open, anchor: wrapperRef, onClose: () => {
66
+ onClose === null || onClose === void 0 ? void 0 : onClose();
67
+ open && setOpen(false);
68
+ }, locale: locale, translate: translate, variant: "month", popoverProps: {
69
+ id: ariaId,
70
+ strategy,
79
71
  } },
80
72
  React.createElement("div", { className: cl("rdp-month", className) },
81
- React.createElement(SharedMonthProvider, { dropdownCaption: dropdownCaption, disabled: disabled, selected: selected !== null && selected !== void 0 ? selected : selectedMonth, onSelect: handleSelect, year: year, onYearChange: onYearChange },
82
- React.createElement(MonthCaption, null),
83
- React.createElement(MonthSelector, null)))))))));
73
+ React.createElement(MonthPickerCaption, null),
74
+ React.createElement(MonthPickerTable, null))))))));
84
75
  });
85
76
  MonthPicker.Standalone = MonthPickerStandalone;
86
77
  MonthPicker.Input = MonthPickerInput;
@@ -1 +1 @@
1
- {"version":3,"file":"MonthPicker.js","sourceRoot":"","sources":["../../../src/date/monthpicker/MonthPicker.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonthPicker.js","sourceRoot":"","sources":["../../../src/date/monthpicker/MonthPicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import { ComponentTranslation } from "../../util/i18n/i18n.types.js";
2
+ import { Matcher } from "../Date.typeutils.js";
3
+ export interface MonthPickerProps extends React.HTMLAttributes<HTMLDivElement> {
4
+ /**
5
+ * Element monthpicker anchors to. Use <MonthPicker.Input /> for built-in toggle,
6
+ * or make your own with the open/onClose props
7
+ */
8
+ children?: React.ReactNode;
9
+ /**
10
+ * Classname for datepicker in popover
11
+ */
12
+ className?: string;
13
+ /**
14
+ * Classname for wrapper
15
+ */
16
+ wrapperClassName?: string;
17
+ /**
18
+ * The earliest month to start navigation.
19
+ */
20
+ fromDate?: Date;
21
+ /**
22
+ * The latest day to end navigation.
23
+ */
24
+ toDate?: Date;
25
+ /**
26
+ * Changes monthpicker locale
27
+ * @default "nb" (norsk bokmål)
28
+ * @deprecated Use `<Provider />`-component
29
+ */
30
+ locale?: "nb" | "nn" | "en";
31
+ /**
32
+ * i18n-API for customizing texts and labels.
33
+ *
34
+ * **NB: If you need to change the language, use [Provider](https://aksel.nav.no/komponenter/core/provider#84d7ea5ec517) instead.**
35
+ */
36
+ translations?: ComponentTranslation<"DatePicker">;
37
+ /**
38
+ * Display dropdown for choosing year. Needs `fromDate` + `toDate` to work.
39
+ * @default false
40
+ */
41
+ dropdownCaption?: boolean;
42
+ /**
43
+ * Apply the disabled modifier to the matching months. Uses a subset of React Day Picker Matcher type. https://react-day-picker.js.org/api/type-aliases/Matcher
44
+ */
45
+ disabled?: Matcher[];
46
+ /**
47
+ * Controlled selected-month
48
+ */
49
+ selected?: Date;
50
+ /**
51
+ * Default selected month.
52
+ */
53
+ defaultSelected?: Date;
54
+ /**
55
+ * Open state for user-controlled state. Component controlled by default
56
+ */
57
+ open?: boolean;
58
+ /**
59
+ * onClose callback for user-controlled state
60
+ */
61
+ onClose?: () => void;
62
+ /**
63
+ * onOpenToggle callback for user-controlled-state. Only called if `<MonthPicker.Input />` is used
64
+ */
65
+ onOpenToggle?: () => void;
66
+ /**
67
+ * Callback for user-controlled state
68
+ */
69
+ onMonthSelect?: (month?: Date) => void;
70
+ /**
71
+ * Used to set visible year programmatically. Component controlled by default
72
+ */
73
+ year?: Date;
74
+ /**
75
+ * Event fired when the user navigates between years.
76
+ */
77
+ onYearChange?: (y?: Date) => void;
78
+ /**
79
+ * **Avoid using if possible!**
80
+ *
81
+ * Changes what CSS position property to use
82
+ * You want to use "fixed" if parent wrapper has position relative, but you want popover to escape
83
+ * @default "absolute"
84
+ */
85
+ strategy?: "absolute" | "fixed";
86
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=MonthPicker.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthPicker.types.js","sourceRoot":"","sources":["../../../src/date/monthpicker/MonthPicker.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ import { Matcher } from "../Date.typeutils.js";
2
+ export declare const nextEnabled: (months: Date[], key: string, disabled: Matcher[], currentMonth: Date, setYearState: (date: Date) => void, yearState: Date, dropdownCaption: boolean, fromDate?: Date, toDate?: Date) => Date;
@@ -0,0 +1,152 @@
1
+ import { setYear } from "date-fns";
2
+ import { isMatch } from "../date-utils/index.js";
3
+ export const nextEnabled = (months, key, disabled, currentMonth, setYearState, yearState, dropdownCaption, fromDate, toDate) => {
4
+ const currentIndex = currentMonth.getMonth();
5
+ if (key === "Home") {
6
+ const nextDate = nextOnRow(currentIndex, months, yearState, disabled, "home");
7
+ if (nextDate) {
8
+ return nextDate;
9
+ }
10
+ }
11
+ if (key === "End") {
12
+ const nextDate = nextOnRow(currentIndex, months, yearState, disabled, "end");
13
+ if (nextDate) {
14
+ return nextDate;
15
+ }
16
+ }
17
+ if (key === "PageUp") {
18
+ if (!dropdownCaption ||
19
+ (fromDate && yearState.getFullYear() - 1 >= (fromDate === null || fromDate === void 0 ? void 0 : fromDate.getFullYear()))) {
20
+ setYearState(setYear(yearState, Number(yearState.getFullYear() - 1)));
21
+ }
22
+ }
23
+ if (key === "PageDown") {
24
+ if (!dropdownCaption ||
25
+ (toDate && yearState.getFullYear() + 1 <= (toDate === null || toDate === void 0 ? void 0 : toDate.getFullYear()))) {
26
+ setYearState(setYear(yearState, Number(yearState.getFullYear() + 1)));
27
+ }
28
+ }
29
+ if (key === "ArrowRight") {
30
+ const nextMonth = loopForward(currentIndex, months, yearState, setYearState, disabled, false, dropdownCaption, fromDate, toDate);
31
+ if (nextMonth) {
32
+ return setYear(months[nextMonth.index], nextMonth.year);
33
+ }
34
+ }
35
+ if (key === "ArrowLeft") {
36
+ const prevMonth = loopBack(currentIndex - 1, months, disabled, yearState, setYearState, false, dropdownCaption, fromDate, toDate);
37
+ if (prevMonth) {
38
+ return setYear(months[prevMonth.index], prevMonth.year);
39
+ }
40
+ }
41
+ if (key === "ArrowDown") {
42
+ if (months[currentIndex + 4] &&
43
+ !isMatch(setYear(months[currentIndex + 4], yearState.getFullYear()), disabled)) {
44
+ return setYear(months[currentIndex + 4], yearState.getFullYear());
45
+ }
46
+ const fallbackNext = loopForward(currentIndex, months, yearState, setYearState, disabled, true, dropdownCaption, fromDate, toDate);
47
+ if (fallbackNext &&
48
+ getRow(fallbackNext.index) !== getRow(currentIndex + 8)) {
49
+ return setYear(months[fallbackNext.index], fallbackNext.year);
50
+ }
51
+ }
52
+ if (key === "ArrowUp") {
53
+ if (months[currentIndex - 4] &&
54
+ !isMatch(setYear(months[currentIndex - 4], Number(yearState.getFullYear())), disabled))
55
+ return setYear(months[currentIndex - 4], Number(yearState.getFullYear()));
56
+ const fallbackPrev = loopBack(currentIndex, months, disabled, yearState, setYearState, true, dropdownCaption, fromDate, toDate);
57
+ if (fallbackPrev)
58
+ return setYear(months[fallbackPrev.index], fallbackPrev.year);
59
+ }
60
+ return currentMonth;
61
+ };
62
+ const loopBack = (currentIndex, months, disabled, yearState, setYearState, rowCheck, dropdownCaption, fromDate, toDate) => {
63
+ let currentYear = setYear(yearState, Number(yearState.getFullYear()));
64
+ for (let i = currentIndex; i >= -1; i--) {
65
+ if (i === -1) {
66
+ if (isOutOfRange(dropdownCaption, setYear(currentYear, Number(currentYear.getFullYear() - 1)), fromDate, toDate))
67
+ return;
68
+ currentYear = setYear(currentYear, Number(currentYear.getFullYear() - 1));
69
+ setYearState(currentYear);
70
+ i = 11;
71
+ }
72
+ const month = months[i];
73
+ const isDisabled = !isMatch(setYear(month, Number(currentYear.getFullYear())), disabled);
74
+ if (rowCheck) {
75
+ if (isDisabled && getRow(i) !== getRow(currentIndex)) {
76
+ return { index: i, year: Number(currentYear.getFullYear()) };
77
+ }
78
+ }
79
+ else {
80
+ if (isDisabled) {
81
+ return { index: i, year: Number(currentYear.getFullYear()) };
82
+ }
83
+ }
84
+ }
85
+ };
86
+ const loopForward = (currentIndex, months, yearState, setYearState, disabled, rowCheck, dropdownCaption, fromDate, toDate) => {
87
+ let currentYear = setYear(yearState, Number(yearState.getFullYear()));
88
+ for (let i = currentIndex + 1; i < months.length + 1; i++) {
89
+ if (i === 12) {
90
+ if (isOutOfRange(dropdownCaption, setYear(currentYear, Number(currentYear.getFullYear() + 1)), fromDate, toDate))
91
+ return;
92
+ currentYear = setYear(currentYear, Number(currentYear.getFullYear() + 1));
93
+ setYearState(currentYear);
94
+ i = 0;
95
+ }
96
+ const month = months[i];
97
+ const isDisabled = !isMatch(setYear(month, Number(currentYear.getFullYear())), disabled);
98
+ if (rowCheck) {
99
+ if (isDisabled && getRow(i) !== getRow(currentIndex)) {
100
+ return { index: i, year: Number(currentYear.getFullYear()) };
101
+ }
102
+ }
103
+ else {
104
+ if (isDisabled) {
105
+ return { index: i, year: Number(currentYear.getFullYear()) };
106
+ }
107
+ }
108
+ }
109
+ };
110
+ const getRow = (index) => {
111
+ if (index >= 0 && index <= 3)
112
+ return 1;
113
+ if (index >= 4 && index <= 7)
114
+ return 2;
115
+ return 3;
116
+ };
117
+ const isOutOfRange = (dropdownCaption, year, fromDate, toDate) => {
118
+ if (dropdownCaption &&
119
+ fromDate &&
120
+ toDate &&
121
+ (year.getFullYear() < (fromDate === null || fromDate === void 0 ? void 0 : fromDate.getFullYear()) ||
122
+ year.getFullYear() > (toDate === null || toDate === void 0 ? void 0 : toDate.getFullYear()))) {
123
+ return true;
124
+ }
125
+ return false;
126
+ };
127
+ const nextOnRow = (currentIndex, months, yearState, disabled, mode) => {
128
+ const row = getRow(currentIndex);
129
+ let monthsOfRow = [];
130
+ switch (row) {
131
+ case 1:
132
+ monthsOfRow = months.slice(0, 4);
133
+ break;
134
+ case 2:
135
+ monthsOfRow = months.slice(4, 8);
136
+ break;
137
+ case 3:
138
+ monthsOfRow = months.slice(8, 12);
139
+ break;
140
+ default:
141
+ break;
142
+ }
143
+ if (mode === "end")
144
+ monthsOfRow = monthsOfRow.reverse();
145
+ for (let i = 0; i < monthsOfRow.length; i++) {
146
+ const month = monthsOfRow[i];
147
+ if (!isMatch(setYear(month, Number(yearState.getFullYear())), disabled)) {
148
+ return setYear(month, Number(yearState.getFullYear()));
149
+ }
150
+ }
151
+ };
152
+ //# sourceMappingURL=MonthPicker.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonthPicker.util.js","sourceRoot":"","sources":["../../../src/date/monthpicker/MonthPicker.util.ts"],"names":[],"mappings":"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"}