@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
@@ -29,17 +29,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.MonthPicker = void 0;
30
30
  const clsx_1 = __importDefault(require("clsx"));
31
31
  const react_1 = __importStar(require("react"));
32
- const react_day_picker_1 = require("react-day-picker");
33
32
  const hooks_1 = require("../../util/hooks");
34
33
  const useMergeRefs_1 = require("../../util/hooks/useMergeRefs");
35
34
  const i18n_hooks_1 = require("../../util/i18n/i18n.hooks");
36
- const context_1 = require("../context");
37
- const DateInput_1 = require("../parts/DateInput");
38
- const DateWrapper_1 = require("../parts/DateWrapper");
39
- const utils_1 = require("../utils");
40
- const MonthCaption_1 = __importDefault(require("./MonthCaption"));
41
- const MonthPickerStandalone_1 = __importDefault(require("./MonthPickerStandalone"));
42
- const MonthSelector_1 = __importDefault(require("./MonthSelector"));
35
+ const Date_Dialog_1 = require("../Date.Dialog");
36
+ const Date_Input_1 = require("../Date.Input");
37
+ const Date_locale_1 = require("../Date.locale");
38
+ const MonthPicker_context_1 = require("./MonthPicker.context");
39
+ const MonthPicker_Caption_1 = require("./parts/MonthPicker.Caption");
40
+ const MonthPicker_Standalone_1 = require("./parts/MonthPicker.Standalone");
41
+ const MonthPicker_Table_1 = require("./parts/MonthPicker.Table");
43
42
  /**
44
43
  * A component that displays a month picker.
45
44
  *
@@ -63,55 +62,47 @@ const MonthSelector_1 = __importDefault(require("./MonthSelector"));
63
62
  * ```
64
63
  */
65
64
  exports.MonthPicker = (0, react_1.forwardRef)(({ children, dropdownCaption = false, fromDate, toDate, disabled = [], selected, open: _open, id, onClose, onOpenToggle, locale, translations, onMonthSelect, className, wrapperClassName, defaultSelected, year, onYearChange, strategy = "absolute", }, ref) => {
66
- const translate = (0, i18n_hooks_1.useI18n)("DatePicker", translations, (0, utils_1.getTranslations)(locale));
65
+ const translate = (0, i18n_hooks_1.useI18n)("DatePicker", translations, (0, Date_locale_1.getTranslations)(locale));
67
66
  const langProviderLocale = (0, i18n_hooks_1.useDateLocale)();
68
67
  const ariaId = (0, hooks_1.useId)(id);
69
- const [open, setOpen] = (0, react_1.useState)(_open !== null && _open !== void 0 ? _open : false);
68
+ const [open, setOpen] = (0, hooks_1.useControllableState)({
69
+ defaultValue: false,
70
+ value: _open,
71
+ onChange: () => {
72
+ onOpenToggle === null || onOpenToggle === void 0 ? void 0 : onOpenToggle();
73
+ },
74
+ });
70
75
  /* We use state here to insure that anchor is defined if open is true on initial render */
71
76
  const [wrapperRef, setWrapperRef] = (0, react_1.useState)(null);
72
77
  const mergedRef = (0, useMergeRefs_1.useMergeRefs)(setWrapperRef, ref);
73
- const [selectedMonth, setSelectedMonth] = (0, react_1.useState)(defaultSelected);
74
78
  const handleSelect = (month) => {
75
- var _a;
76
- !onMonthSelect && setSelectedMonth(month);
77
79
  onMonthSelect === null || onMonthSelect === void 0 ? void 0 : onMonthSelect(month);
78
- month && ((_a = onClose === null || onClose === void 0 ? void 0 : onClose()) !== null && _a !== void 0 ? _a : setOpen(false));
80
+ if (month) {
81
+ onClose === null || onClose === void 0 ? void 0 : onClose();
82
+ setOpen(false);
83
+ }
79
84
  };
80
85
  if (dropdownCaption && (!fromDate || !toDate)) {
81
86
  console.warn("Using dropdownCaption required fromDate and toDate");
82
87
  return null;
83
88
  }
84
- return (react_1.default.createElement(context_1.DateTranslationContextProvider, { translate: translate },
85
- react_1.default.createElement(context_1.DateInputContext.Provider, { value: {
86
- open: _open !== null && _open !== void 0 ? _open : open,
87
- onOpen: () => {
88
- setOpen((x) => !x);
89
- onOpenToggle === null || onOpenToggle === void 0 ? void 0 : onOpenToggle();
90
- },
91
- ariaId,
92
- defined: true,
93
- } },
94
- react_1.default.createElement("div", { ref: mergedRef, className: (0, clsx_1.default)("navds-date__wrapper", wrapperClassName) },
95
- children,
96
- react_1.default.createElement(DateWrapper_1.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: {
97
- id: ariaId,
98
- strategy,
99
- } },
100
- react_1.default.createElement(react_day_picker_1.DayPickerProvider, { initialProps: {
101
- locale: locale
102
- ? (0, utils_1.getLocaleFromString)(locale)
103
- : langProviderLocale,
104
- selected: selected !== null && selected !== void 0 ? selected : selectedMonth,
105
- toDate,
106
- fromDate,
107
- month: selected !== null && selected !== void 0 ? selected : selectedMonth,
89
+ return (react_1.default.createElement(Date_locale_1.DateTranslationContextProvider, { translate: translate },
90
+ react_1.default.createElement(Date_Input_1.DateInputContextProvider, { open: open, onOpen: () => setOpen((x) => !x), ariaId: ariaId, defined: true },
91
+ react_1.default.createElement(MonthPicker_context_1.MonthPickerProvider, { dropdownCaption: dropdownCaption, defaultSelected: defaultSelected, selected: selected, disabled: disabled, fromDate: fromDate, toDate: toDate, year: year, onYearChange: onYearChange, onMonthSelect: handleSelect, locale: locale ? (0, Date_locale_1.getLocaleFromString)(locale) : langProviderLocale },
92
+ react_1.default.createElement("div", { ref: mergedRef, className: (0, clsx_1.default)("navds-date__wrapper", wrapperClassName) },
93
+ children,
94
+ react_1.default.createElement(Date_Dialog_1.DateDialog, { open: open, anchor: wrapperRef, onClose: () => {
95
+ onClose === null || onClose === void 0 ? void 0 : onClose();
96
+ open && setOpen(false);
97
+ }, locale: locale, translate: translate, variant: "month", popoverProps: {
98
+ id: ariaId,
99
+ strategy,
108
100
  } },
109
101
  react_1.default.createElement("div", { className: (0, clsx_1.default)("rdp-month", className) },
110
- react_1.default.createElement(context_1.SharedMonthProvider, { dropdownCaption: dropdownCaption, disabled: disabled, selected: selected !== null && selected !== void 0 ? selected : selectedMonth, onSelect: handleSelect, year: year, onYearChange: onYearChange },
111
- react_1.default.createElement(MonthCaption_1.default, null),
112
- react_1.default.createElement(MonthSelector_1.default, null)))))))));
102
+ react_1.default.createElement(MonthPicker_Caption_1.MonthPickerCaption, null),
103
+ react_1.default.createElement(MonthPicker_Table_1.MonthPickerTable, null))))))));
113
104
  });
114
- exports.MonthPicker.Standalone = MonthPickerStandalone_1.default;
115
- exports.MonthPicker.Input = DateInput_1.MonthPickerInput;
105
+ exports.MonthPicker.Standalone = MonthPicker_Standalone_1.MonthPickerStandalone;
106
+ exports.MonthPicker.Input = Date_Input_1.MonthPickerInput;
116
107
  exports.default = exports.MonthPicker;
117
108
  //# sourceMappingURL=MonthPicker.js.map
@@ -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";
2
+ import { Matcher } from "../Date.typeutils";
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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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";
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,156 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nextEnabled = void 0;
4
+ const date_fns_1 = require("date-fns");
5
+ const date_utils_1 = require("../date-utils");
6
+ const nextEnabled = (months, key, disabled, currentMonth, setYearState, yearState, dropdownCaption, fromDate, toDate) => {
7
+ const currentIndex = currentMonth.getMonth();
8
+ if (key === "Home") {
9
+ const nextDate = nextOnRow(currentIndex, months, yearState, disabled, "home");
10
+ if (nextDate) {
11
+ return nextDate;
12
+ }
13
+ }
14
+ if (key === "End") {
15
+ const nextDate = nextOnRow(currentIndex, months, yearState, disabled, "end");
16
+ if (nextDate) {
17
+ return nextDate;
18
+ }
19
+ }
20
+ if (key === "PageUp") {
21
+ if (!dropdownCaption ||
22
+ (fromDate && yearState.getFullYear() - 1 >= (fromDate === null || fromDate === void 0 ? void 0 : fromDate.getFullYear()))) {
23
+ setYearState((0, date_fns_1.setYear)(yearState, Number(yearState.getFullYear() - 1)));
24
+ }
25
+ }
26
+ if (key === "PageDown") {
27
+ if (!dropdownCaption ||
28
+ (toDate && yearState.getFullYear() + 1 <= (toDate === null || toDate === void 0 ? void 0 : toDate.getFullYear()))) {
29
+ setYearState((0, date_fns_1.setYear)(yearState, Number(yearState.getFullYear() + 1)));
30
+ }
31
+ }
32
+ if (key === "ArrowRight") {
33
+ const nextMonth = loopForward(currentIndex, months, yearState, setYearState, disabled, false, dropdownCaption, fromDate, toDate);
34
+ if (nextMonth) {
35
+ return (0, date_fns_1.setYear)(months[nextMonth.index], nextMonth.year);
36
+ }
37
+ }
38
+ if (key === "ArrowLeft") {
39
+ const prevMonth = loopBack(currentIndex - 1, months, disabled, yearState, setYearState, false, dropdownCaption, fromDate, toDate);
40
+ if (prevMonth) {
41
+ return (0, date_fns_1.setYear)(months[prevMonth.index], prevMonth.year);
42
+ }
43
+ }
44
+ if (key === "ArrowDown") {
45
+ if (months[currentIndex + 4] &&
46
+ !(0, date_utils_1.isMatch)((0, date_fns_1.setYear)(months[currentIndex + 4], yearState.getFullYear()), disabled)) {
47
+ return (0, date_fns_1.setYear)(months[currentIndex + 4], yearState.getFullYear());
48
+ }
49
+ const fallbackNext = loopForward(currentIndex, months, yearState, setYearState, disabled, true, dropdownCaption, fromDate, toDate);
50
+ if (fallbackNext &&
51
+ getRow(fallbackNext.index) !== getRow(currentIndex + 8)) {
52
+ return (0, date_fns_1.setYear)(months[fallbackNext.index], fallbackNext.year);
53
+ }
54
+ }
55
+ if (key === "ArrowUp") {
56
+ if (months[currentIndex - 4] &&
57
+ !(0, date_utils_1.isMatch)((0, date_fns_1.setYear)(months[currentIndex - 4], Number(yearState.getFullYear())), disabled))
58
+ return (0, date_fns_1.setYear)(months[currentIndex - 4], Number(yearState.getFullYear()));
59
+ const fallbackPrev = loopBack(currentIndex, months, disabled, yearState, setYearState, true, dropdownCaption, fromDate, toDate);
60
+ if (fallbackPrev)
61
+ return (0, date_fns_1.setYear)(months[fallbackPrev.index], fallbackPrev.year);
62
+ }
63
+ return currentMonth;
64
+ };
65
+ exports.nextEnabled = nextEnabled;
66
+ const loopBack = (currentIndex, months, disabled, yearState, setYearState, rowCheck, dropdownCaption, fromDate, toDate) => {
67
+ let currentYear = (0, date_fns_1.setYear)(yearState, Number(yearState.getFullYear()));
68
+ for (let i = currentIndex; i >= -1; i--) {
69
+ if (i === -1) {
70
+ if (isOutOfRange(dropdownCaption, (0, date_fns_1.setYear)(currentYear, Number(currentYear.getFullYear() - 1)), fromDate, toDate))
71
+ return;
72
+ currentYear = (0, date_fns_1.setYear)(currentYear, Number(currentYear.getFullYear() - 1));
73
+ setYearState(currentYear);
74
+ i = 11;
75
+ }
76
+ const month = months[i];
77
+ const isDisabled = !(0, date_utils_1.isMatch)((0, date_fns_1.setYear)(month, Number(currentYear.getFullYear())), disabled);
78
+ if (rowCheck) {
79
+ if (isDisabled && getRow(i) !== getRow(currentIndex)) {
80
+ return { index: i, year: Number(currentYear.getFullYear()) };
81
+ }
82
+ }
83
+ else {
84
+ if (isDisabled) {
85
+ return { index: i, year: Number(currentYear.getFullYear()) };
86
+ }
87
+ }
88
+ }
89
+ };
90
+ const loopForward = (currentIndex, months, yearState, setYearState, disabled, rowCheck, dropdownCaption, fromDate, toDate) => {
91
+ let currentYear = (0, date_fns_1.setYear)(yearState, Number(yearState.getFullYear()));
92
+ for (let i = currentIndex + 1; i < months.length + 1; i++) {
93
+ if (i === 12) {
94
+ if (isOutOfRange(dropdownCaption, (0, date_fns_1.setYear)(currentYear, Number(currentYear.getFullYear() + 1)), fromDate, toDate))
95
+ return;
96
+ currentYear = (0, date_fns_1.setYear)(currentYear, Number(currentYear.getFullYear() + 1));
97
+ setYearState(currentYear);
98
+ i = 0;
99
+ }
100
+ const month = months[i];
101
+ const isDisabled = !(0, date_utils_1.isMatch)((0, date_fns_1.setYear)(month, Number(currentYear.getFullYear())), disabled);
102
+ if (rowCheck) {
103
+ if (isDisabled && getRow(i) !== getRow(currentIndex)) {
104
+ return { index: i, year: Number(currentYear.getFullYear()) };
105
+ }
106
+ }
107
+ else {
108
+ if (isDisabled) {
109
+ return { index: i, year: Number(currentYear.getFullYear()) };
110
+ }
111
+ }
112
+ }
113
+ };
114
+ const getRow = (index) => {
115
+ if (index >= 0 && index <= 3)
116
+ return 1;
117
+ if (index >= 4 && index <= 7)
118
+ return 2;
119
+ return 3;
120
+ };
121
+ const isOutOfRange = (dropdownCaption, year, fromDate, toDate) => {
122
+ if (dropdownCaption &&
123
+ fromDate &&
124
+ toDate &&
125
+ (year.getFullYear() < (fromDate === null || fromDate === void 0 ? void 0 : fromDate.getFullYear()) ||
126
+ year.getFullYear() > (toDate === null || toDate === void 0 ? void 0 : toDate.getFullYear()))) {
127
+ return true;
128
+ }
129
+ return false;
130
+ };
131
+ const nextOnRow = (currentIndex, months, yearState, disabled, mode) => {
132
+ const row = getRow(currentIndex);
133
+ let monthsOfRow = [];
134
+ switch (row) {
135
+ case 1:
136
+ monthsOfRow = months.slice(0, 4);
137
+ break;
138
+ case 2:
139
+ monthsOfRow = months.slice(4, 8);
140
+ break;
141
+ case 3:
142
+ monthsOfRow = months.slice(8, 12);
143
+ break;
144
+ default:
145
+ break;
146
+ }
147
+ if (mode === "end")
148
+ monthsOfRow = monthsOfRow.reverse();
149
+ for (let i = 0; i < monthsOfRow.length; i++) {
150
+ const month = monthsOfRow[i];
151
+ if (!(0, date_utils_1.isMatch)((0, date_fns_1.setYear)(month, Number(yearState.getFullYear())), disabled)) {
152
+ return (0, date_fns_1.setYear)(month, Number(yearState.getFullYear()));
153
+ }
154
+ }
155
+ };
156
+ //# 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":";;;AAAA,uCAAmC;AAEnC,8CAAwC;AAEjC,MAAM,WAAW,GAAG,CACzB,MAAc,EACd,GAAW,EACX,QAAmB,EACnB,YAAkB,EAClB,YAAkC,EAClC,SAAe,EACf,eAAwB,EACxB,QAAe,EACf,MAAa,EACP,EAAE;IACR,MAAM,YAAY,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;IAE7C,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACnB,MAAM,QAAQ,GAAG,SAAS,CACxB,YAAY,EACZ,MAAM,EACN,SAAS,EACT,QAAQ,EACR,MAAM,CACP,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,SAAS,CACxB,YAAY,EACZ,MAAM,EACN,SAAS,EACT,QAAQ,EACR,KAAK,CACN,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,IACE,CAAC,eAAe;YAChB,CAAC,QAAQ,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,KAAI,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,EAAE,CAAA,CAAC,EACpE,CAAC;YACD,YAAY,CAAC,IAAA,kBAAO,EAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;QACvB,IACE,CAAC,eAAe;YAChB,CAAC,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,KAAI,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,EAAE,CAAA,CAAC,EAChE,CAAC;YACD,YAAY,CAAC,IAAA,kBAAO,EAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;IACD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;QACzB,MAAM,SAAS,GAAG,WAAW,CAC3B,YAAY,EACZ,MAAM,EACN,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,eAAe,EACf,QAAQ,EACR,MAAM,CACP,CAAC;QACF,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAA,kBAAO,EAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACxB,MAAM,SAAS,GAAG,QAAQ,CACxB,YAAY,GAAG,CAAC,EAChB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,KAAK,EACL,eAAe,EACf,QAAQ,EACR,MAAM,CACP,CAAC;QACF,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,IAAA,kBAAO,EAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACxB,IACE,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;YACxB,CAAC,IAAA,oBAAO,EACN,IAAA,kBAAO,EAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,EAC1D,QAAQ,CACT,EACD,CAAC;YACD,OAAO,IAAA,kBAAO,EAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,YAAY,GAAG,WAAW,CAC9B,YAAY,EACZ,MAAM,EACN,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,MAAM,CACP,CAAC;QAEF,IACE,YAAY;YACZ,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,EACvD,CAAC;YACD,OAAO,IAAA,kBAAO,EAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,IACE,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC;YACxB,CAAC,IAAA,oBAAO,EACN,IAAA,kBAAO,EAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAClE,QAAQ,CACT;YAED,OAAO,IAAA,kBAAO,EAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC5E,MAAM,YAAY,GAAG,QAAQ,CAC3B,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,IAAI,EACJ,eAAe,EACf,QAAQ,EACR,MAAM,CACP,CAAC;QACF,IAAI,YAAY;YACd,OAAO,IAAA,kBAAO,EAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AA5IW,QAAA,WAAW,eA4ItB;AAEF,MAAM,QAAQ,GAAG,CACf,YAAoB,EACpB,MAAc,EACd,QAAmB,EACnB,SAAe,EACf,YAAkC,EAClC,QAAiB,EACjB,eAAwB,EACxB,QAAe,EACf,MAAa,EACgC,EAAE;IAC/C,IAAI,WAAW,GAAG,IAAA,kBAAO,EAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtE,KAAK,IAAI,CAAC,GAAG,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACb,IACE,YAAY,CACV,eAAe,EACf,IAAA,kBAAO,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAC3D,QAAQ,EACR,MAAM,CACP;gBAED,OAAO;YACT,WAAW,GAAG,IAAA,kBAAO,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1E,YAAY,CAAC,WAAW,CAAC,CAAC;YAC1B,CAAC,GAAG,EAAE,CAAC;QACT,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,UAAU,GAAG,CAAC,IAAA,oBAAO,EACzB,IAAA,kBAAO,EAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,EACjD,QAAQ,CACT,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAClB,YAAoB,EACpB,MAAc,EACd,SAAe,EACf,YAAkC,EAClC,QAAmB,EACnB,QAAiB,EACjB,eAAwB,EACxB,QAAe,EACf,MAAa,EACgC,EAAE;IAC/C,IAAI,WAAW,GAAG,IAAA,kBAAO,EAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtE,KAAK,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1D,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;YACb,IACE,YAAY,CACV,eAAe,EACf,IAAA,kBAAO,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,EAC3D,QAAQ,EACR,MAAM,CACP;gBAED,OAAO;YACT,WAAW,GAAG,IAAA,kBAAO,EAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1E,YAAY,CAAC,WAAW,CAAC,CAAC;YAC1B,CAAC,GAAG,CAAC,CAAC;QACR,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,UAAU,GAAG,CAAC,IAAA,oBAAO,EACzB,IAAA,kBAAO,EAAC,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,EACjD,QAAQ,CACT,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,UAAU,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrD,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE;IACvC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACvC,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CACnB,eAAwB,EACxB,IAAU,EACV,QAAe,EACf,MAAa,EACJ,EAAE;IACX,IACE,eAAe;QACf,QAAQ;QACR,MAAM;QACN,CAAC,IAAI,CAAC,WAAW,EAAE,IAAG,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,EAAE,CAAA;YAC3C,IAAI,CAAC,WAAW,EAAE,IAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,EAAE,CAAA,CAAC,EAC7C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,CAChB,YAAoB,EACpB,MAAc,EACd,SAAe,EACf,QAAmB,EACnB,IAAoB,EACpB,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACjC,IAAI,WAAW,GAAW,EAAE,CAAC;IAE7B,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,CAAC;YACJ,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,CAAC;YACJ,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,MAAM;QACR,KAAK,CAAC;YACJ,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAClC,MAAM;QACR;YACE,MAAM;IACV,CAAC;IAED,IAAI,IAAI,KAAK,KAAK;QAAE,WAAW,GAAG,WAAW,CAAC,OAAO,EAAE,CAAC;IAExD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,CAAC,IAAA,oBAAO,EAAC,IAAA,kBAAO,EAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC;YACxE,OAAO,IAAA,kBAAO,EAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;AACH,CAAC,CAAC"}
@@ -0,0 +1,85 @@
1
+ import React from "react";
2
+ import { DateInputProps } from "../../Date.Input";
3
+ import { MonthPickerProps } from "../MonthPicker.types";
4
+ export interface UseMonthPickerOptions extends Pick<MonthPickerProps, "locale" | "fromDate" | "toDate" | "disabled" | "defaultSelected"> {
5
+ /**
6
+ * Make Date-selection required
7
+ */
8
+ required?: boolean;
9
+ /**
10
+ * Callback for month-change
11
+ */
12
+ onMonthChange?: (date?: Date) => void;
13
+ /**
14
+ * Input-format
15
+ * @default "MMMM yyyy"
16
+ */
17
+ inputFormat?: string;
18
+ /**
19
+ * validation-callback
20
+ */
21
+ onValidate?: (val: MonthValidationT) => void;
22
+ /**
23
+ * Default shown year
24
+ */
25
+ defaultYear?: Date;
26
+ /**
27
+ * Allows input of with `yy` year format.
28
+ *
29
+ * Decision between 20th and 21st century is based on before(todays year - 80) ? 21st : 20th.
30
+ * In 2024 this equals to 1944 - 2043
31
+ * @default true
32
+ */
33
+ allowTwoDigitYear?: boolean;
34
+ }
35
+ interface UseMonthPickerValue {
36
+ /**
37
+ * Use: <MonthPicker {...monthpickerProps} />
38
+ */
39
+ monthpickerProps: MonthPickerProps;
40
+ /**
41
+ * Use: <MonthPicker.Input {...inputProps} />
42
+ */
43
+ inputProps: Pick<DateInputProps, "onChange" | "onFocus" | "value"> & {
44
+ /**
45
+ * @private
46
+ */
47
+ setAnchorRef: React.Dispatch<React.SetStateAction<HTMLButtonElement | null>>;
48
+ };
49
+ /**
50
+ * Currently selected Date
51
+ * Up to user to validate value and extract month
52
+ */
53
+ selectedMonth?: Date;
54
+ /**
55
+ * Manually set selected month if needed
56
+ */
57
+ setSelected: (date?: Date) => void;
58
+ /**
59
+ * Resets all states
60
+ */
61
+ reset: () => void;
62
+ }
63
+ export type MonthValidationT = {
64
+ isDisabled: boolean;
65
+ isEmpty: boolean;
66
+ isInvalid: boolean;
67
+ isValidMonth: boolean;
68
+ isBefore: boolean;
69
+ isAfter: boolean;
70
+ };
71
+ /**
72
+ *
73
+ * @see 🏷️ {@link UseMonthPickerOptions}
74
+ * @see 🏷️ {@link UseMonthPickerValue}
75
+ * @see 🏷️ {@link MonthValidationT}
76
+ * @example
77
+ * const { monthpickerProps, inputProps } = useMonthpicker({
78
+ * fromDate: new Date("Aug 23 2019"),
79
+ * toDate: new Date("Feb 23 2024"),
80
+ * onMonthChange: console.log,
81
+ * onValidate: console.log,
82
+ * });
83
+ */
84
+ export declare const useMonthpicker: (opt?: UseMonthPickerOptions) => UseMonthPickerValue;
85
+ export {};