@mantine/dates 7.17.6 → 7.17.8

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 (184) hide show
  1. package/cjs/components/DateInput/DateInput.cjs +8 -0
  2. package/cjs/components/DateInput/DateInput.cjs.map +1 -1
  3. package/cjs/components/DatePicker/DatePicker.module.css.cjs +7 -0
  4. package/cjs/components/DatePicker/DatePicker.module.css.cjs.map +1 -0
  5. package/cjs/components/DateTimePicker/get-min-max-time/get-min-max-time.cjs +21 -0
  6. package/cjs/components/DateTimePicker/get-min-max-time/get-min-max-time.cjs.map +1 -0
  7. package/cjs/components/SpinInput/SpinInput.cjs +116 -0
  8. package/cjs/components/SpinInput/SpinInput.cjs.map +1 -0
  9. package/cjs/components/TimeGrid/TimeGrid.cjs +104 -0
  10. package/cjs/components/TimeGrid/TimeGrid.cjs.map +1 -0
  11. package/cjs/components/TimeGrid/TimeGrid.context.cjs +12 -0
  12. package/cjs/components/TimeGrid/TimeGrid.context.cjs.map +1 -0
  13. package/cjs/components/TimeGrid/TimeGrid.module.css.cjs +7 -0
  14. package/cjs/components/TimeGrid/TimeGrid.module.css.cjs.map +1 -0
  15. package/cjs/components/TimeGrid/TimeGridControl.cjs +37 -0
  16. package/cjs/components/TimeGrid/TimeGridControl.cjs.map +1 -0
  17. package/cjs/components/TimeGrid/compare-time.cjs +15 -0
  18. package/cjs/components/TimeGrid/compare-time.cjs.map +1 -0
  19. package/cjs/components/TimeInput/TimeInput.cjs +2 -1
  20. package/cjs/components/TimeInput/TimeInput.cjs.map +1 -1
  21. package/cjs/components/TimePicker/AmPmInput/AmPmInput.cjs +106 -0
  22. package/cjs/components/TimePicker/AmPmInput/AmPmInput.cjs.map +1 -0
  23. package/cjs/components/TimePicker/TimeControlsList/AmPmControlsList.cjs +16 -0
  24. package/cjs/components/TimePicker/TimeControlsList/AmPmControlsList.cjs.map +1 -0
  25. package/cjs/components/TimePicker/TimeControlsList/TimeControl.cjs +27 -0
  26. package/cjs/components/TimePicker/TimeControlsList/TimeControl.cjs.map +1 -0
  27. package/cjs/components/TimePicker/TimeControlsList/TimeControlsList.cjs +54 -0
  28. package/cjs/components/TimePicker/TimeControlsList/TimeControlsList.cjs.map +1 -0
  29. package/cjs/components/TimePicker/TimePicker.cjs +381 -0
  30. package/cjs/components/TimePicker/TimePicker.cjs.map +1 -0
  31. package/cjs/components/TimePicker/TimePicker.context.cjs +12 -0
  32. package/cjs/components/TimePicker/TimePicker.context.cjs.map +1 -0
  33. package/cjs/components/TimePicker/TimePicker.module.css.cjs +7 -0
  34. package/cjs/components/TimePicker/TimePicker.module.css.cjs.map +1 -0
  35. package/cjs/components/TimePicker/TimePresets/TimePresetControl.cjs +31 -0
  36. package/cjs/components/TimePicker/TimePresets/TimePresetControl.cjs.map +1 -0
  37. package/cjs/components/TimePicker/TimePresets/TimePresetGroup.cjs +39 -0
  38. package/cjs/components/TimePicker/TimePresets/TimePresetGroup.cjs.map +1 -0
  39. package/cjs/components/TimePicker/TimePresets/TimePresets.cjs +73 -0
  40. package/cjs/components/TimePicker/TimePresets/TimePresets.cjs.map +1 -0
  41. package/cjs/components/TimePicker/use-time-picker.cjs +172 -0
  42. package/cjs/components/TimePicker/use-time-picker.cjs.map +1 -0
  43. package/cjs/components/TimePicker/utils/clamp-time/clamp-time.cjs +15 -0
  44. package/cjs/components/TimePicker/utils/clamp-time/clamp-time.cjs.map +1 -0
  45. package/cjs/components/TimePicker/utils/get-parsed-time/get-parsed-time.cjs +38 -0
  46. package/cjs/components/TimePicker/utils/get-parsed-time/get-parsed-time.cjs.map +1 -0
  47. package/cjs/components/TimePicker/utils/get-time-range/get-time-range.cjs +18 -0
  48. package/cjs/components/TimePicker/utils/get-time-range/get-time-range.cjs.map +1 -0
  49. package/cjs/components/TimePicker/utils/get-time-string/get-time-string.cjs +51 -0
  50. package/cjs/components/TimePicker/utils/get-time-string/get-time-string.cjs.map +1 -0
  51. package/cjs/components/TimePicker/utils/is-same-time/is-same-time.cjs +16 -0
  52. package/cjs/components/TimePicker/utils/is-same-time/is-same-time.cjs.map +1 -0
  53. package/cjs/components/TimePicker/utils/pad-time/pad-time.cjs +9 -0
  54. package/cjs/components/TimePicker/utils/pad-time/pad-time.cjs.map +1 -0
  55. package/cjs/components/TimePicker/utils/split-time-string/split-time-string.cjs +10 -0
  56. package/cjs/components/TimePicker/utils/split-time-string/split-time-string.cjs.map +1 -0
  57. package/cjs/components/TimePicker/utils/time-to-seconds/time-to-seconds.cjs +24 -0
  58. package/cjs/components/TimePicker/utils/time-to-seconds/time-to-seconds.cjs.map +1 -0
  59. package/cjs/components/TimeValue/TimeValue.cjs +18 -0
  60. package/cjs/components/TimeValue/TimeValue.cjs.map +1 -0
  61. package/cjs/components/TimeValue/get-formatted-time/get-formatted-time.cjs +31 -0
  62. package/cjs/components/TimeValue/get-formatted-time/get-formatted-time.cjs.map +1 -0
  63. package/cjs/utils/clamp-date/clamp-date.cjs +25 -0
  64. package/cjs/utils/clamp-date/clamp-date.cjs.map +1 -0
  65. package/cjs/utils/get-default-clamped-date/get-default-clamped-date.cjs +29 -0
  66. package/cjs/utils/get-default-clamped-date/get-default-clamped-date.cjs.map +1 -0
  67. package/cjs/utils/get-formatted-date/get-formatted-date.cjs +41 -0
  68. package/cjs/utils/get-formatted-date/get-formatted-date.cjs.map +1 -0
  69. package/cjs/utils/handle-control-key-down/handle-control-key-down.cjs +158 -0
  70. package/cjs/utils/handle-control-key-down/handle-control-key-down.cjs.map +1 -0
  71. package/cjs/utils/to-date-string/to-date-string.cjs +19 -0
  72. package/cjs/utils/to-date-string/to-date-string.cjs.map +1 -0
  73. package/esm/components/DateInput/DateInput.mjs +8 -0
  74. package/esm/components/DateInput/DateInput.mjs.map +1 -1
  75. package/esm/components/DatePicker/DatePicker.module.css.mjs +5 -0
  76. package/esm/components/DatePicker/DatePicker.module.css.mjs.map +1 -0
  77. package/esm/components/DateTimePicker/get-min-max-time/get-min-max-time.mjs +14 -0
  78. package/esm/components/DateTimePicker/get-min-max-time/get-min-max-time.mjs.map +1 -0
  79. package/esm/components/SpinInput/SpinInput.mjs +114 -0
  80. package/esm/components/SpinInput/SpinInput.mjs.map +1 -0
  81. package/esm/components/TimeGrid/TimeGrid.context.mjs +9 -0
  82. package/esm/components/TimeGrid/TimeGrid.context.mjs.map +1 -0
  83. package/esm/components/TimeGrid/TimeGrid.mjs +102 -0
  84. package/esm/components/TimeGrid/TimeGrid.mjs.map +1 -0
  85. package/esm/components/TimeGrid/TimeGrid.module.css.mjs +5 -0
  86. package/esm/components/TimeGrid/TimeGrid.module.css.mjs.map +1 -0
  87. package/esm/components/TimeGrid/TimeGridControl.mjs +31 -0
  88. package/esm/components/TimeGrid/TimeGridControl.mjs.map +1 -0
  89. package/esm/components/TimeGrid/compare-time.mjs +12 -0
  90. package/esm/components/TimeGrid/compare-time.mjs.map +1 -0
  91. package/esm/components/TimeInput/TimeInput.mjs +2 -1
  92. package/esm/components/TimeInput/TimeInput.mjs.map +1 -1
  93. package/esm/components/TimePicker/AmPmInput/AmPmInput.mjs +104 -0
  94. package/esm/components/TimePicker/AmPmInput/AmPmInput.mjs.map +1 -0
  95. package/esm/components/TimePicker/TimeControlsList/AmPmControlsList.mjs +14 -0
  96. package/esm/components/TimePicker/TimeControlsList/AmPmControlsList.mjs.map +1 -0
  97. package/esm/components/TimePicker/TimeControlsList/TimeControl.mjs +25 -0
  98. package/esm/components/TimePicker/TimeControlsList/TimeControl.mjs.map +1 -0
  99. package/esm/components/TimePicker/TimeControlsList/TimeControlsList.mjs +52 -0
  100. package/esm/components/TimePicker/TimeControlsList/TimeControlsList.mjs.map +1 -0
  101. package/esm/components/TimePicker/TimePicker.context.mjs +9 -0
  102. package/esm/components/TimePicker/TimePicker.context.mjs.map +1 -0
  103. package/esm/components/TimePicker/TimePicker.mjs +379 -0
  104. package/esm/components/TimePicker/TimePicker.mjs.map +1 -0
  105. package/esm/components/TimePicker/TimePicker.module.css.mjs +5 -0
  106. package/esm/components/TimePicker/TimePicker.module.css.mjs.map +1 -0
  107. package/esm/components/TimePicker/TimePresets/TimePresetControl.mjs +29 -0
  108. package/esm/components/TimePicker/TimePresets/TimePresetControl.mjs.map +1 -0
  109. package/esm/components/TimePicker/TimePresets/TimePresetGroup.mjs +37 -0
  110. package/esm/components/TimePicker/TimePresets/TimePresetGroup.mjs.map +1 -0
  111. package/esm/components/TimePicker/TimePresets/TimePresets.mjs +71 -0
  112. package/esm/components/TimePicker/TimePresets/TimePresets.mjs.map +1 -0
  113. package/esm/components/TimePicker/use-time-picker.mjs +170 -0
  114. package/esm/components/TimePicker/use-time-picker.mjs.map +1 -0
  115. package/esm/components/TimePicker/utils/clamp-time/clamp-time.mjs +13 -0
  116. package/esm/components/TimePicker/utils/clamp-time/clamp-time.mjs.map +1 -0
  117. package/esm/components/TimePicker/utils/get-parsed-time/get-parsed-time.mjs +35 -0
  118. package/esm/components/TimePicker/utils/get-parsed-time/get-parsed-time.mjs.map +1 -0
  119. package/esm/components/TimePicker/utils/get-time-range/get-time-range.mjs +16 -0
  120. package/esm/components/TimePicker/utils/get-time-range/get-time-range.mjs.map +1 -0
  121. package/esm/components/TimePicker/utils/get-time-string/get-time-string.mjs +49 -0
  122. package/esm/components/TimePicker/utils/get-time-string/get-time-string.mjs.map +1 -0
  123. package/esm/components/TimePicker/utils/is-same-time/is-same-time.mjs +14 -0
  124. package/esm/components/TimePicker/utils/is-same-time/is-same-time.mjs.map +1 -0
  125. package/esm/components/TimePicker/utils/pad-time/pad-time.mjs +7 -0
  126. package/esm/components/TimePicker/utils/pad-time/pad-time.mjs.map +1 -0
  127. package/esm/components/TimePicker/utils/split-time-string/split-time-string.mjs +8 -0
  128. package/esm/components/TimePicker/utils/split-time-string/split-time-string.mjs.map +1 -0
  129. package/esm/components/TimePicker/utils/time-to-seconds/time-to-seconds.mjs +21 -0
  130. package/esm/components/TimePicker/utils/time-to-seconds/time-to-seconds.mjs.map +1 -0
  131. package/esm/components/TimeValue/TimeValue.mjs +16 -0
  132. package/esm/components/TimeValue/TimeValue.mjs.map +1 -0
  133. package/esm/components/TimeValue/get-formatted-time/get-formatted-time.mjs +29 -0
  134. package/esm/components/TimeValue/get-formatted-time/get-formatted-time.mjs.map +1 -0
  135. package/esm/utils/clamp-date/clamp-date.mjs +19 -0
  136. package/esm/utils/clamp-date/clamp-date.mjs.map +1 -0
  137. package/esm/utils/get-default-clamped-date/get-default-clamped-date.mjs +23 -0
  138. package/esm/utils/get-default-clamped-date/get-default-clamped-date.mjs.map +1 -0
  139. package/esm/utils/get-formatted-date/get-formatted-date.mjs +34 -0
  140. package/esm/utils/get-formatted-date/get-formatted-date.mjs.map +1 -0
  141. package/esm/utils/handle-control-key-down/handle-control-key-down.mjs +156 -0
  142. package/esm/utils/handle-control-key-down/handle-control-key-down.mjs.map +1 -0
  143. package/esm/utils/to-date-string/to-date-string.mjs +12 -0
  144. package/esm/utils/to-date-string/to-date-string.mjs.map +1 -0
  145. package/lib/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.d.ts +1 -1
  146. package/lib/components/DateInputMask/DateInputMask.d.ts +63 -0
  147. package/lib/components/DateInputMask/use-date-input-mask.d.ts +1 -0
  148. package/lib/components/DateTimePicker/get-min-max-time/get-min-max-time.d.ts +12 -0
  149. package/lib/components/SpinInput/SpinInput.d.ts +12 -0
  150. package/lib/components/SpinInput/index.d.ts +1 -0
  151. package/lib/components/TimeGrid/TimeGrid.context.d.ts +10 -0
  152. package/lib/components/TimeGrid/TimeGrid.d.ts +52 -0
  153. package/lib/components/TimeGrid/TimeGridControl.d.ts +10 -0
  154. package/lib/components/TimeGrid/compare-time.d.ts +2 -0
  155. package/lib/components/TimeGrid/index.d.ts +3 -0
  156. package/lib/components/TimePicker/AmPmInput/AmPmInput.d.ts +14 -0
  157. package/lib/components/TimePicker/TimeControlsList/AmPmControlsList.d.ts +13 -0
  158. package/lib/components/TimePicker/TimeControlsList/TimeControl.d.ts +10 -0
  159. package/lib/components/TimePicker/TimeControlsList/TimeControlsList.d.ts +12 -0
  160. package/lib/components/TimePicker/TimePicker.context.d.ts +12 -0
  161. package/lib/components/TimePicker/TimePicker.d.ts +98 -0
  162. package/lib/components/TimePicker/TimePicker.types.d.ts +22 -0
  163. package/lib/components/TimePicker/TimePresets/TimePresetControl.d.ts +14 -0
  164. package/lib/components/TimePicker/TimePresets/TimePresetGroup.d.ts +14 -0
  165. package/lib/components/TimePicker/TimePresets/TimePresets.d.ts +14 -0
  166. package/lib/components/TimePicker/index.d.ts +4 -0
  167. package/lib/components/TimePicker/use-time-picker.d.ts +40 -0
  168. package/lib/components/TimePicker/utils/clamp-time/clamp-time.d.ts +6 -0
  169. package/lib/components/TimePicker/utils/get-parsed-time/get-parsed-time.d.ts +35 -0
  170. package/lib/components/TimePicker/utils/get-time-range/get-time-range.d.ts +7 -0
  171. package/lib/components/TimePicker/utils/get-time-string/get-time-string.d.ts +15 -0
  172. package/lib/components/TimePicker/utils/is-same-time/is-same-time.d.ts +7 -0
  173. package/lib/components/TimePicker/utils/pad-time/pad-time.d.ts +1 -0
  174. package/lib/components/TimePicker/utils/split-time-string/split-time-string.d.ts +5 -0
  175. package/lib/components/TimePicker/utils/time-to-seconds/time-to-seconds.d.ts +7 -0
  176. package/lib/components/TimeValue/TimeValue.d.ts +15 -0
  177. package/lib/components/TimeValue/get-formatted-time/get-formatted-time.d.ts +8 -0
  178. package/lib/components/TimeValue/index.d.ts +2 -0
  179. package/lib/utils/clamp-date/clamp-date.d.ts +2 -0
  180. package/lib/utils/get-default-clamped-date/get-default-clamped-date.d.ts +7 -0
  181. package/lib/utils/get-formatted-date/get-formatted-date.d.ts +15 -0
  182. package/lib/utils/handle-control-key-down/handle-control-key-down.d.ts +11 -0
  183. package/lib/utils/to-date-string/to-date-string.d.ts +4 -0
  184. package/package.json +3 -3
@@ -0,0 +1,19 @@
1
+ 'use client';
2
+ import dayjs from 'dayjs';
3
+ import { toDateTimeString } from '../to-date-string/to-date-string.mjs';
4
+
5
+ function clampDate(minDate, maxDate, date) {
6
+ if (!minDate && !maxDate) {
7
+ return toDateTimeString(date);
8
+ }
9
+ if (minDate && dayjs(date).isBefore(minDate)) {
10
+ return toDateTimeString(minDate);
11
+ }
12
+ if (maxDate && dayjs(date).isAfter(maxDate)) {
13
+ return toDateTimeString(maxDate);
14
+ }
15
+ return toDateTimeString(date);
16
+ }
17
+
18
+ export { clampDate };
19
+ //# sourceMappingURL=clamp-date.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clamp-date.mjs","sources":["../../../src/utils/clamp-date/clamp-date.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { DateStringValue } from '../../types';\nimport { toDateTimeString } from '../to-date-string/to-date-string';\n\nexport function clampDate(\n minDate: DateStringValue | Date | undefined,\n maxDate: DateStringValue | Date | undefined,\n date: DateStringValue | Date\n): DateStringValue {\n if (!minDate && !maxDate) {\n return toDateTimeString(date)!;\n }\n\n if (minDate && dayjs(date).isBefore(minDate)) {\n return toDateTimeString(minDate)!;\n }\n\n if (maxDate && dayjs(date).isAfter(maxDate)) {\n return toDateTimeString(maxDate)!;\n }\n\n return toDateTimeString(date)!;\n}\n"],"names":[],"mappings":";;;;AAIgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,SAAA,CACd,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,EAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CACA,IACiB,CAAA,CAAA,CAAA;AACjB,CAAA,CAAI,IAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAC,OAAS,CAAA,CAAA,CAAA;AACxB,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA;AAG9B,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA;AAGjC,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;AAC3C,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA;AAGjC,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAiB,CAAA,CAAA,CAAA,CAAI,CAAA,CAAA;AAC9B,CAAA;;"}
@@ -0,0 +1,23 @@
1
+ 'use client';
2
+ import dayjs from 'dayjs';
3
+ import { toDateString } from '../to-date-string/to-date-string.mjs';
4
+
5
+ function getDefaultClampedDate({
6
+ minDate,
7
+ maxDate
8
+ }) {
9
+ const today = dayjs();
10
+ if (!minDate && !maxDate) {
11
+ return toDateString(today);
12
+ }
13
+ if (minDate && dayjs(today).isBefore(minDate)) {
14
+ return toDateString(minDate);
15
+ }
16
+ if (maxDate && dayjs(today).isAfter(maxDate)) {
17
+ return toDateString(maxDate);
18
+ }
19
+ return toDateString(today);
20
+ }
21
+
22
+ export { getDefaultClampedDate };
23
+ //# sourceMappingURL=get-default-clamped-date.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-default-clamped-date.mjs","sources":["../../../src/utils/get-default-clamped-date/get-default-clamped-date.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { DateStringValue } from '../../types';\nimport { toDateString } from '../to-date-string/to-date-string';\n\ninterface GetDefaultClampedDate {\n minDate: DateStringValue | Date | undefined;\n maxDate: DateStringValue | Date | undefined;\n}\n\nexport function getDefaultClampedDate({\n minDate,\n maxDate,\n}: GetDefaultClampedDate): DateStringValue {\n const today = dayjs();\n\n if (!minDate && !maxDate) {\n return toDateString(today)!;\n }\n\n if (minDate && dayjs(today).isBefore(minDate)) {\n return toDateString(minDate)!;\n }\n\n if (maxDate && dayjs(today).isAfter(maxDate)) {\n return toDateString(maxDate)!;\n }\n\n return toDateString(today)!;\n}\n"],"names":[],"mappings":";;;;AASO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,qBAAsB,CAAA,CAAA;AAAA,CAAA,CACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA,CACA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,CAA2C,CAAA,CAAA,CAAA;AACzC,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA;AAEpB,CAAA,CAAI,IAAA,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAA,CAAA,CAAA,CAAA,CAAC,OAAS,CAAA,CAAA,CAAA;AACxB,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA;AAG3B,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;AAC7C,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA;AAG7B,CAAA,CAAA,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAA,CAAA,CAAA;AAC5C,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAA,CAAA;AAAA,CAAA,CAAA,CAAA;AAG7B,CAAA,CAAA,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EAAa,CAAA,CAAA,CAAA,CAAA,CAAK,CAAA,CAAA;AAC3B,CAAA;;"}
@@ -0,0 +1,34 @@
1
+ 'use client';
2
+ import dayjs from 'dayjs';
3
+
4
+ function defaultDateFormatter({
5
+ type,
6
+ date,
7
+ locale,
8
+ format,
9
+ labelSeparator
10
+ }) {
11
+ const formatDate = (value) => dayjs(value).locale(locale).format(format);
12
+ if (type === "default") {
13
+ return date === null ? "" : formatDate(date);
14
+ }
15
+ if (type === "multiple") {
16
+ return date.map(formatDate).join(", ");
17
+ }
18
+ if (type === "range" && Array.isArray(date)) {
19
+ if (date[0] && date[1]) {
20
+ return `${formatDate(date[0])} ${labelSeparator} ${formatDate(date[1])}`;
21
+ }
22
+ if (date[0]) {
23
+ return `${formatDate(date[0])} ${labelSeparator} `;
24
+ }
25
+ return "";
26
+ }
27
+ return "";
28
+ }
29
+ function getFormattedDate({ formatter, ...others }) {
30
+ return (formatter || defaultDateFormatter)(others);
31
+ }
32
+
33
+ export { defaultDateFormatter, getFormattedDate };
34
+ //# sourceMappingURL=get-formatted-date.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-formatted-date.mjs","sources":["../../../src/utils/get-formatted-date/get-formatted-date.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { DatePickerType, DatePickerValue, DateStringValue } from '../../types';\n\ninterface DateFormatterInput {\n type: DatePickerType;\n date: DatePickerValue<DatePickerType>;\n locale: string;\n format: string;\n labelSeparator: string;\n}\n\nexport type DateFormatter = (input: DateFormatterInput) => string;\n\nexport function defaultDateFormatter({\n type,\n date,\n locale,\n format,\n labelSeparator,\n}: DateFormatterInput) {\n const formatDate = (value: DateStringValue | Date) => dayjs(value).locale(locale).format(format);\n\n if (type === 'default') {\n return date === null ? '' : formatDate(date as DateStringValue);\n }\n\n if (type === 'multiple') {\n return (date as DateStringValue[]).map(formatDate).join(', ');\n }\n\n if (type === 'range' && Array.isArray(date)) {\n if (date[0] && date[1]) {\n return `${formatDate(date[0])} ${labelSeparator} ${formatDate(date[1])}`;\n }\n\n if (date[0]) {\n return `${formatDate(date[0])} ${labelSeparator} `;\n }\n\n return '';\n }\n\n return '';\n}\n\ninterface GetFormattedDateInput extends DateFormatterInput {\n formatter?: DateFormatter;\n}\n\nexport function getFormattedDate({ formatter, ...others }: GetFormattedDateInput) {\n return (formatter || defaultDateFormatter)(others);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ 'use client';
2
+ function getNextIndex({ direction, levelIndex, rowIndex, cellIndex, size }) {
3
+ switch (direction) {
4
+ case "up":
5
+ if (levelIndex === 0 && rowIndex === 0) {
6
+ return null;
7
+ }
8
+ if (rowIndex === 0) {
9
+ return {
10
+ levelIndex: levelIndex - 1,
11
+ rowIndex: cellIndex <= size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1 ? size[levelIndex - 1].length - 1 : size[levelIndex - 1].length - 2,
12
+ cellIndex
13
+ };
14
+ }
15
+ return {
16
+ levelIndex,
17
+ rowIndex: rowIndex - 1,
18
+ cellIndex
19
+ };
20
+ case "down":
21
+ if (rowIndex === size[levelIndex].length - 1) {
22
+ return {
23
+ levelIndex: levelIndex + 1,
24
+ rowIndex: 0,
25
+ cellIndex
26
+ };
27
+ }
28
+ if (rowIndex === size[levelIndex].length - 2 && cellIndex >= size[levelIndex][size[levelIndex].length - 1]) {
29
+ return {
30
+ levelIndex: levelIndex + 1,
31
+ rowIndex: 0,
32
+ cellIndex
33
+ };
34
+ }
35
+ return {
36
+ levelIndex,
37
+ rowIndex: rowIndex + 1,
38
+ cellIndex
39
+ };
40
+ case "left":
41
+ if (levelIndex === 0 && rowIndex === 0 && cellIndex === 0) {
42
+ return null;
43
+ }
44
+ if (rowIndex === 0 && cellIndex === 0) {
45
+ return {
46
+ levelIndex: levelIndex - 1,
47
+ rowIndex: size[levelIndex - 1].length - 1,
48
+ cellIndex: size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1
49
+ };
50
+ }
51
+ if (cellIndex === 0) {
52
+ return {
53
+ levelIndex,
54
+ rowIndex: rowIndex - 1,
55
+ cellIndex: size[levelIndex][rowIndex - 1] - 1
56
+ };
57
+ }
58
+ return {
59
+ levelIndex,
60
+ rowIndex,
61
+ cellIndex: cellIndex - 1
62
+ };
63
+ case "right":
64
+ if (rowIndex === size[levelIndex].length - 1 && cellIndex === size[levelIndex][rowIndex] - 1) {
65
+ return {
66
+ levelIndex: levelIndex + 1,
67
+ rowIndex: 0,
68
+ cellIndex: 0
69
+ };
70
+ }
71
+ if (cellIndex === size[levelIndex][rowIndex] - 1) {
72
+ return {
73
+ levelIndex,
74
+ rowIndex: rowIndex + 1,
75
+ cellIndex: 0
76
+ };
77
+ }
78
+ return {
79
+ levelIndex,
80
+ rowIndex,
81
+ cellIndex: cellIndex + 1
82
+ };
83
+ default:
84
+ return { levelIndex, rowIndex, cellIndex };
85
+ }
86
+ }
87
+ function focusOnNextFocusableControl({
88
+ controlsRef,
89
+ direction,
90
+ levelIndex,
91
+ rowIndex,
92
+ cellIndex,
93
+ size
94
+ }) {
95
+ const nextIndex = getNextIndex({ direction, size, rowIndex, cellIndex, levelIndex });
96
+ if (!nextIndex) {
97
+ return;
98
+ }
99
+ const controlToFocus = controlsRef.current?.[nextIndex.levelIndex]?.[nextIndex.rowIndex]?.[nextIndex.cellIndex];
100
+ if (!controlToFocus) {
101
+ return;
102
+ }
103
+ if (controlToFocus.disabled || controlToFocus.getAttribute("data-hidden") || controlToFocus.getAttribute("data-outside")) {
104
+ focusOnNextFocusableControl({
105
+ controlsRef,
106
+ direction,
107
+ levelIndex: nextIndex.levelIndex,
108
+ cellIndex: nextIndex.cellIndex,
109
+ rowIndex: nextIndex.rowIndex,
110
+ size
111
+ });
112
+ } else {
113
+ controlToFocus.focus();
114
+ }
115
+ }
116
+ function getDirection(key) {
117
+ switch (key) {
118
+ case "ArrowDown":
119
+ return "down";
120
+ case "ArrowUp":
121
+ return "up";
122
+ case "ArrowRight":
123
+ return "right";
124
+ case "ArrowLeft":
125
+ return "left";
126
+ default:
127
+ return null;
128
+ }
129
+ }
130
+ function getControlsSize(controlsRef) {
131
+ return controlsRef.current?.map((column) => column.map((row) => row.length));
132
+ }
133
+ function handleControlKeyDown({
134
+ controlsRef,
135
+ levelIndex,
136
+ rowIndex,
137
+ cellIndex,
138
+ event
139
+ }) {
140
+ const direction = getDirection(event.key);
141
+ if (direction) {
142
+ event.preventDefault();
143
+ const size = getControlsSize(controlsRef);
144
+ focusOnNextFocusableControl({
145
+ controlsRef,
146
+ direction,
147
+ levelIndex,
148
+ rowIndex,
149
+ cellIndex,
150
+ size
151
+ });
152
+ }
153
+ }
154
+
155
+ export { handleControlKeyDown };
156
+ //# sourceMappingURL=handle-control-key-down.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle-control-key-down.mjs","sources":["../../../src/utils/handle-control-key-down/handle-control-key-down.ts"],"sourcesContent":["import { RefObject } from 'react';\n\ntype ControlsRef = RefObject<HTMLButtonElement[][][]>;\ntype Direction = 'up' | 'down' | 'left' | 'right';\n\ntype NextIndexInput = Omit<ShiftFocusInput, 'controlsRef'>;\n\nfunction getNextIndex({ direction, levelIndex, rowIndex, cellIndex, size }: NextIndexInput) {\n switch (direction) {\n case 'up':\n if (levelIndex === 0 && rowIndex === 0) {\n return null;\n }\n if (rowIndex === 0) {\n return {\n levelIndex: levelIndex - 1,\n rowIndex:\n cellIndex <= size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1\n ? size[levelIndex - 1].length - 1\n : size[levelIndex - 1].length - 2,\n cellIndex,\n };\n }\n return {\n levelIndex,\n rowIndex: rowIndex - 1,\n cellIndex,\n };\n\n case 'down':\n if (rowIndex === size[levelIndex].length - 1) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex,\n };\n }\n if (\n rowIndex === size[levelIndex].length - 2 &&\n cellIndex >= size[levelIndex][size[levelIndex].length - 1]\n ) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex,\n };\n }\n return {\n levelIndex,\n rowIndex: rowIndex + 1,\n cellIndex,\n };\n\n case 'left':\n if (levelIndex === 0 && rowIndex === 0 && cellIndex === 0) {\n return null;\n }\n if (rowIndex === 0 && cellIndex === 0) {\n return {\n levelIndex: levelIndex - 1,\n rowIndex: size[levelIndex - 1].length - 1,\n cellIndex: size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1,\n };\n }\n if (cellIndex === 0) {\n return {\n levelIndex,\n rowIndex: rowIndex - 1,\n cellIndex: size[levelIndex][rowIndex - 1] - 1,\n };\n }\n return {\n levelIndex,\n rowIndex,\n cellIndex: cellIndex - 1,\n };\n\n case 'right':\n if (\n rowIndex === size[levelIndex].length - 1 &&\n cellIndex === size[levelIndex][rowIndex] - 1\n ) {\n return {\n levelIndex: levelIndex + 1,\n rowIndex: 0,\n cellIndex: 0,\n };\n }\n if (cellIndex === size[levelIndex][rowIndex] - 1) {\n return {\n levelIndex,\n rowIndex: rowIndex + 1,\n cellIndex: 0,\n };\n }\n return {\n levelIndex,\n rowIndex,\n cellIndex: cellIndex + 1,\n };\n\n default:\n return { levelIndex, rowIndex, cellIndex };\n }\n}\n\ninterface ShiftFocusInput {\n controlsRef: ControlsRef;\n direction: Direction;\n levelIndex: number;\n rowIndex: number;\n cellIndex: number;\n size: number[][];\n}\n\nfunction focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex,\n rowIndex,\n cellIndex,\n size,\n}: ShiftFocusInput) {\n const nextIndex = getNextIndex({ direction, size, rowIndex, cellIndex, levelIndex });\n\n if (!nextIndex) {\n return;\n }\n\n const controlToFocus =\n controlsRef.current?.[nextIndex.levelIndex]?.[nextIndex.rowIndex]?.[nextIndex.cellIndex];\n\n if (!controlToFocus) {\n return;\n }\n\n if (\n controlToFocus.disabled ||\n controlToFocus.getAttribute('data-hidden') ||\n controlToFocus.getAttribute('data-outside')\n ) {\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex: nextIndex.levelIndex,\n cellIndex: nextIndex.cellIndex,\n rowIndex: nextIndex.rowIndex,\n size,\n });\n } else {\n controlToFocus.focus();\n }\n}\n\nfunction getDirection(key: KeyboardEvent['key']): Direction {\n switch (key) {\n case 'ArrowDown':\n return 'down';\n case 'ArrowUp':\n return 'up';\n case 'ArrowRight':\n return 'right';\n case 'ArrowLeft':\n return 'left';\n default:\n return null!;\n }\n}\n\nfunction getControlsSize(controlsRef: ControlsRef) {\n return controlsRef.current?.map((column) => column.map((row) => row.length));\n}\n\ninterface HandleControlKeyDownInput {\n controlsRef: ControlsRef;\n levelIndex: number;\n rowIndex: number;\n cellIndex: number;\n event: React.KeyboardEvent<HTMLButtonElement>;\n}\n\nexport function handleControlKeyDown({\n controlsRef,\n levelIndex,\n rowIndex,\n cellIndex,\n event,\n}: HandleControlKeyDownInput) {\n const direction = getDirection(event.key);\n\n if (direction) {\n event.preventDefault();\n\n const size = getControlsSize(controlsRef)!;\n\n focusOnNextFocusableControl({\n controlsRef,\n direction,\n levelIndex,\n rowIndex,\n cellIndex,\n size,\n });\n }\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ 'use client';
2
+ import dayjs from 'dayjs';
3
+
4
+ function toDateString(value) {
5
+ return value == null || value === "" ? value : dayjs(value).format("YYYY-MM-DD");
6
+ }
7
+ function toDateTimeString(value) {
8
+ return value == null || value === "" ? value : dayjs(value).format("YYYY-MM-DD HH:mm:ss");
9
+ }
10
+
11
+ export { toDateString, toDateTimeString };
12
+ //# sourceMappingURL=to-date-string.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-date-string.mjs","sources":["../../../src/utils/to-date-string/to-date-string.ts"],"sourcesContent":["import dayjs, { Dayjs } from 'dayjs';\nimport { DateStringValue } from '../../types';\n\nexport function toDateString(\n value: string | number | Date | Dayjs | undefined | null\n): DateStringValue | undefined | null {\n return value == null || value === '' ? value : dayjs(value).format('YYYY-MM-DD');\n}\n\nexport function toDateTimeString(\n value: string | number | Date | Dayjs | undefined | null\n): DateStringValue | undefined | null {\n return value == null || value === '' ? value : dayjs(value).format('YYYY-MM-DD HH:mm:ss');\n}\n"],"names":[],"mappings":";;;AAGO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACd,CAAA,CAAA,CAAA,CAAA,CACoC,CAAA,CAAA,CAAA;AACpC,CAAA,CAAO,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,KAAA,CAAA,CAAA,CAAA,CAAA,CAAK,MAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,YAAY,CAAA,CAAA;AACjF,CAAA;AAEO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,EACd,CAAA,CAAA,CAAA,CAAA,CACoC,CAAA,CAAA,CAAA;AACpC,CAAA,CAAO,OAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,KAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,KAAA,CAAA,CAAA,CAAA,CAAA,CAAK,MAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAA,CAAK,CAAA,CAAA,CAAA,CAAA,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,qBAAqB,CAAA,CAAA;AAC1F,CAAA;;"}
@@ -52,5 +52,5 @@ export declare function pickCalendarProps<T extends Record<string, any>>(props:
52
52
  maxDate: any;
53
53
  locale: any;
54
54
  };
55
- others: Omit<T, "date" | "locale" | "minDate" | "maxDate" | "firstDayOfWeek" | "weekendDays" | "renderDay" | "highlightToday" | "weekdayFormat" | "withWeekNumbers" | "getDayProps" | "excludeDate" | "hideOutsideDates" | "hideWeekdays" | "getDayAriaLabel" | "withCellSpacing" | "yearsListFormat" | "getYearControlProps" | "monthsListFormat" | "getMonthControlProps" | "nextIcon" | "previousIcon" | "nextLabel" | "previousLabel" | "decadeLabelFormat" | "yearLabelFormat" | "monthLabelFormat" | "numberOfColumns" | "level" | "allowSingleDateInRange" | "allowDeselect" | "defaultLevel" | "onLevelChange" | "onYearSelect" | "onMonthSelect" | "onYearMouseEnter" | "onMonthMouseEnter" | "maxLevel" | "minLevel" | "__updateDateOnYearSelect" | "__updateDateOnMonthSelect" | "defaultDate" | "onDateChange" | "columnsToScroll" | "ariaLabels" | "onNextDecade" | "onPreviousDecade" | "onNextYear" | "onPreviousYear" | "onNextMonth" | "onPreviousMonth">;
55
+ others: Omit<T, "date" | "locale" | "defaultDate" | "__updateDateOnYearSelect" | "__updateDateOnMonthSelect" | "onDateChange" | "numberOfColumns" | "columnsToScroll" | "ariaLabels" | "nextLabel" | "previousLabel" | "onNextDecade" | "onPreviousDecade" | "onNextYear" | "onPreviousYear" | "onNextMonth" | "onPreviousMonth" | "onYearMouseEnter" | "onMonthMouseEnter" | "nextIcon" | "previousIcon" | "decadeLabelFormat" | "yearsListFormat" | "getYearControlProps" | "withCellSpacing" | "minDate" | "maxDate" | "yearLabelFormat" | "monthsListFormat" | "getMonthControlProps" | "monthLabelFormat" | "firstDayOfWeek" | "weekdayFormat" | "weekendDays" | "getDayProps" | "excludeDate" | "renderDay" | "hideOutsideDates" | "hideWeekdays" | "getDayAriaLabel" | "highlightToday" | "withWeekNumbers" | "defaultLevel" | "level" | "onLevelChange" | "onYearSelect" | "onMonthSelect" | "maxLevel" | "allowDeselect" | "allowSingleDateInRange" | "minLevel">;
56
56
  };
@@ -0,0 +1,63 @@
1
+ import { BoxProps, CloseButtonProps, DataAttributes, ElementProps, Factory, PopoverProps, StylesApiProps } from '@mantine/core';
2
+ export type DateInputMaskStylesNames = 'fieldsRoot';
3
+ export type DateInputMaskVariant = string;
4
+ export interface DateInputMaskProps extends BoxProps, StylesApiProps<DateInputMaskFactory>, ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {
5
+ /** Controlled component value */
6
+ value?: Date | null;
7
+ /** Uncontrolled component default value */
8
+ defaultValue?: Date | null;
9
+ /** Called when the value changes */
10
+ onChange?: (value: Date | null) => void;
11
+ /** Determines whether the clear button should be displayed, `false` by default */
12
+ clearable?: boolean;
13
+ /** Called once when one of the inputs is focused, not called when focused is shifted between hours, minutes, seconds and am/pm inputs */
14
+ onFocus?: (event: React.FocusEvent<HTMLInputElement>) => void;
15
+ /** Called once when the focus is no longer on any of the inputs */
16
+ onBlur?: (event: React.FocusEvent<HTMLDivElement>) => void;
17
+ /** If set, the value cannot be updated */
18
+ readOnly?: boolean;
19
+ /** If set, the component becomes disabled */
20
+ disabled?: boolean;
21
+ /** `name` prop passed down to the hidden input */
22
+ name?: string;
23
+ /** `form` prop passed down to the hidden input */
24
+ form?: string;
25
+ /** Props passed down to the hidden input */
26
+ hiddenInputProps?: React.ComponentPropsWithoutRef<'input'> & DataAttributes;
27
+ /** `aria-label` of days input */
28
+ daysInputLabel?: string;
29
+ /** `aria-label` of months input */
30
+ monthsInputLabel?: string;
31
+ /** `aria-label` of years input */
32
+ yearsInputLabel?: string;
33
+ /** Determines whether the dropdown with calendar should be visible when the input has focus, `false` by default */
34
+ withDropdown?: boolean;
35
+ /** Props passed down to `Popover` component */
36
+ popoverProps?: PopoverProps;
37
+ /** Props passed down to clear button */
38
+ clearButtonProps?: CloseButtonProps & ElementProps<'button'> & DataAttributes;
39
+ /** Props passed down to days input */
40
+ daysInputProps?: React.ComponentPropsWithoutRef<'input'> & DataAttributes;
41
+ /** Props passed down to months input */
42
+ monthsInputProps?: React.ComponentPropsWithoutRef<'input'> & DataAttributes;
43
+ /** Props passed down to years input */
44
+ yearsInputProps?: React.ComponentPropsWithoutRef<'input'> & DataAttributes;
45
+ /** A ref object to get node reference of the days input */
46
+ daysRef?: React.Ref<HTMLInputElement>;
47
+ /** A ref object to get node reference of the months input */
48
+ monthsRef?: React.Ref<HTMLInputElement>;
49
+ /** A ref object to get node reference of the years input */
50
+ yearsRef?: React.Ref<HTMLInputElement>;
51
+ }
52
+ export type DateInputMaskFactory = Factory<{
53
+ props: DateInputMaskProps;
54
+ ref: HTMLDivElement;
55
+ stylesNames: DateInputMaskStylesNames;
56
+ variant: DateInputMaskVariant;
57
+ }>;
58
+ export declare const DateInputMask: import("@mantine/core").MantineComponent<{
59
+ props: DateInputMaskProps;
60
+ ref: HTMLDivElement;
61
+ stylesNames: DateInputMaskStylesNames;
62
+ variant: DateInputMaskVariant;
63
+ }>;
@@ -0,0 +1 @@
1
+ export declare function useDateInputMask(): void;
@@ -0,0 +1,12 @@
1
+ import { DateStringValue } from '../../../types';
2
+ interface GetMinTimeInput {
3
+ minDate: DateStringValue | Date | undefined;
4
+ value: DateStringValue | null;
5
+ }
6
+ export declare function getMinTime({ minDate, value }: GetMinTimeInput): string | undefined;
7
+ interface GetMaxTimeInput {
8
+ maxDate: DateStringValue | Date | undefined;
9
+ value: DateStringValue | null;
10
+ }
11
+ export declare function getMaxTime({ maxDate, value }: GetMaxTimeInput): string | undefined;
12
+ export {};
@@ -0,0 +1,12 @@
1
+ interface SpinInputProps extends Omit<React.ComponentPropsWithoutRef<'input'>, 'onChange' | 'value'> {
2
+ value: number | null;
3
+ min: number;
4
+ max: number;
5
+ onChange: (value: number | null) => void;
6
+ focusable: boolean;
7
+ step: number;
8
+ onNextInput?: () => void;
9
+ onPreviousInput?: () => void;
10
+ }
11
+ export declare const SpinInput: import("react").ForwardRefExoticComponent<SpinInputProps & import("react").RefAttributes<HTMLInputElement>>;
12
+ export {};
@@ -0,0 +1 @@
1
+ export { SpinInput } from './SpinInput';
@@ -0,0 +1,10 @@
1
+ import { GetStylesApi } from '@mantine/core';
2
+ import type { TimeGridFactory } from './TimeGrid';
3
+ interface TimeGridContextValue {
4
+ getStyles: GetStylesApi<TimeGridFactory>;
5
+ }
6
+ export declare const TimeGridProvider: ({ children, value }: {
7
+ value: TimeGridContextValue;
8
+ children: React.ReactNode;
9
+ }) => import("react/jsx-runtime").JSX.Element, useTimeGridContext: () => TimeGridContextValue;
10
+ export {};
@@ -0,0 +1,52 @@
1
+ import { BoxProps, DataAttributes, ElementProps, Factory, MantineRadius, MantineSize, SimpleGridProps, StylesApiProps } from '@mantine/core';
2
+ import type { TimePickerAmPmLabels, TimePickerFormat } from '../TimePicker';
3
+ export type TimeGridStylesNames = 'root' | 'control' | 'simpleGrid';
4
+ export type TimeGridCssVariables = {
5
+ root: '--time-grid-fz' | '--time-grid-radius';
6
+ };
7
+ export interface TimeGridProps extends BoxProps, StylesApiProps<TimeGridFactory>, ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {
8
+ /** Time data in 24h format to be displayed in the grid, for example `['10:00', '18:30', '22:00']`. Time values must be unique. */
9
+ data: string[];
10
+ /** Controlled component value */
11
+ value?: string | null;
12
+ /** Uncontrolled component default value */
13
+ defaultValue?: string | null;
14
+ /** Called when value changes */
15
+ onChange?: (value: string | null) => void;
16
+ /** Determines whether the value can be deselected when the current active option is clicked or activated with keyboard, `false` by default */
17
+ allowDeselect?: boolean;
18
+ /** Time format displayed in the grid, `'24h'` by default */
19
+ format?: TimePickerFormat;
20
+ /** Determines whether the seconds part should be displayed, `false` by default */
21
+ withSeconds?: boolean;
22
+ /** Labels used for am/pm values, `{ am: 'AM', pm: 'PM' }` by default */
23
+ amPmLabels?: TimePickerAmPmLabels;
24
+ /** Props passed down to the underlying `SimpleGrid` component, `{ cols: 3, spacing: 'xs' }` by default */
25
+ simpleGridProps?: SimpleGridProps;
26
+ /** A function to pass props down to control based on the time value */
27
+ getControlProps?: (time: string) => React.ComponentPropsWithoutRef<'button'> & DataAttributes;
28
+ /** Key of `theme.radius` or any valid CSS value to set `border-radius`, `theme.defaultRadius` by default */
29
+ radius?: MantineRadius;
30
+ /** Control `font-size` of controls, key of `theme.fontSizes` or any valid CSS value, `'sm'` by default */
31
+ size?: MantineSize;
32
+ /** All controls before this time are disabled */
33
+ minTime?: string;
34
+ /** All controls after this time are disabled */
35
+ maxTime?: string;
36
+ /** Array of time values to disable */
37
+ disableTime?: string[] | ((time: string) => boolean);
38
+ /** If set, all controls are disabled */
39
+ disabled?: boolean;
40
+ }
41
+ export type TimeGridFactory = Factory<{
42
+ props: TimeGridProps;
43
+ ref: HTMLDivElement;
44
+ stylesNames: TimeGridStylesNames;
45
+ vars: TimeGridCssVariables;
46
+ }>;
47
+ export declare const TimeGrid: import("@mantine/core").MantineComponent<{
48
+ props: TimeGridProps;
49
+ ref: HTMLDivElement;
50
+ stylesNames: TimeGridStylesNames;
51
+ vars: TimeGridCssVariables;
52
+ }>;
@@ -0,0 +1,10 @@
1
+ import type { TimePickerAmPmLabels, TimePickerFormat } from '../TimePicker';
2
+ interface TimeGridControlProps extends React.ComponentPropsWithoutRef<'button'> {
3
+ time: string;
4
+ active: boolean;
5
+ format: TimePickerFormat;
6
+ amPmLabels: TimePickerAmPmLabels;
7
+ withSeconds: boolean | undefined;
8
+ }
9
+ export declare function TimeGridControl({ time, active, className, amPmLabels, format, withSeconds, ...others }: TimeGridControlProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
@@ -0,0 +1,2 @@
1
+ export declare function isTimeBefore(value: string, compareTo: string): boolean;
2
+ export declare function isTimeAfter(value: string, compareTo: string): boolean;
@@ -0,0 +1,3 @@
1
+ export { TimeGrid } from './TimeGrid';
2
+ export { isTimeBefore, isTimeAfter } from './compare-time';
3
+ export type { TimeGridCssVariables, TimeGridFactory, TimeGridProps, TimeGridStylesNames, } from './TimeGrid';
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ interface AmPmInputProps extends Omit<React.ComponentPropsWithoutRef<'select'>, 'value' | 'onChange'> {
3
+ labels: {
4
+ am: string;
5
+ pm: string;
6
+ };
7
+ value: string | null;
8
+ inputType: 'select' | 'input';
9
+ onChange: (value: string | null) => void;
10
+ readOnly?: boolean;
11
+ onPreviousInput?: () => void;
12
+ }
13
+ export declare const AmPmInput: React.ForwardRefExoticComponent<AmPmInputProps & React.RefAttributes<HTMLSelectElement>>;
14
+ export {};
@@ -0,0 +1,13 @@
1
+ interface AmPmControlsListProps {
2
+ value: string | null;
3
+ onSelect: (value: string) => void;
4
+ labels: {
5
+ am: string;
6
+ pm: string;
7
+ };
8
+ }
9
+ export declare function AmPmControlsList({ labels, value, onSelect }: AmPmControlsListProps): import("react/jsx-runtime").JSX.Element;
10
+ export declare namespace AmPmControlsList {
11
+ var displayName: string;
12
+ }
13
+ export {};
@@ -0,0 +1,10 @@
1
+ interface TimeControlProps {
2
+ value: number | string;
3
+ active: boolean;
4
+ onSelect: (value: any) => void;
5
+ }
6
+ export declare function TimeControl({ value, active, onSelect }: TimeControlProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare namespace TimeControl {
8
+ var displayName: string;
9
+ }
10
+ export {};
@@ -0,0 +1,12 @@
1
+ interface TimeControlsListProps {
2
+ min: number;
3
+ max: number;
4
+ step: number;
5
+ value: number | null;
6
+ onSelect: (value: number) => void;
7
+ }
8
+ export declare function TimeControlsList({ min, max, step, value, onSelect }: TimeControlsListProps): import("react/jsx-runtime").JSX.Element;
9
+ export declare namespace TimeControlsList {
10
+ var displayName: string;
11
+ }
12
+ export {};
@@ -0,0 +1,12 @@
1
+ import { GetStylesApi, ScrollAreaProps } from '@mantine/core';
2
+ import type { TimePickerFactory } from './TimePicker';
3
+ interface TimePickerContext {
4
+ getStyles: GetStylesApi<TimePickerFactory>;
5
+ maxDropdownContentHeight: number;
6
+ scrollAreaProps: ScrollAreaProps | undefined;
7
+ }
8
+ export declare const TimePickerProvider: ({ children, value }: {
9
+ value: TimePickerContext;
10
+ children: React.ReactNode;
11
+ }) => import("react/jsx-runtime").JSX.Element, useTimePickerContext: () => TimePickerContext;
12
+ export {};