@mantine/dates 3.1.9 → 3.2.3

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 (120) hide show
  1. package/README.md +2 -2
  2. package/cjs/components/Calendar/Calendar.js +68 -39
  3. package/cjs/components/Calendar/Calendar.js.map +1 -1
  4. package/cjs/components/Calendar/CalendarHeader/CalendarHeader.js +24 -6
  5. package/cjs/components/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
  6. package/cjs/components/Calendar/CalendarLabel/CalendarLabel.js +4 -1
  7. package/cjs/components/Calendar/CalendarLabel/CalendarLabel.js.map +1 -1
  8. package/cjs/components/Calendar/CalendarWrapper/CalendarWrapper.js +5 -3
  9. package/cjs/components/Calendar/CalendarWrapper/CalendarWrapper.js.map +1 -1
  10. package/cjs/components/Calendar/get-disabled-state/get-disabled-state.js +2 -2
  11. package/cjs/components/Calendar/get-disabled-state/get-disabled-state.js.map +1 -1
  12. package/cjs/components/DatePicker/DatePicker.js +89 -17
  13. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  14. package/cjs/components/DatePickerBase/DatePickerBase.js +67 -24
  15. package/cjs/components/DatePickerBase/DatePickerBase.js.map +1 -1
  16. package/cjs/components/DatePickerBase/DatePickerBase.styles.js +5 -2
  17. package/cjs/components/DatePickerBase/DatePickerBase.styles.js.map +1 -1
  18. package/cjs/components/DateRangePicker/DateRangePicker.js +23 -9
  19. package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
  20. package/cjs/components/Month/Day/Day.styles.js +6 -6
  21. package/cjs/components/Month/Day/Day.styles.js.map +1 -1
  22. package/cjs/components/Month/Month.js +14 -6
  23. package/cjs/components/Month/Month.js.map +1 -1
  24. package/cjs/components/Month/Month.styles.js +1 -1
  25. package/cjs/components/Month/Month.styles.js.map +1 -1
  26. package/cjs/components/RangeCalendar/RangeCalendar.js +78 -49
  27. package/cjs/components/RangeCalendar/RangeCalendar.js.map +1 -1
  28. package/cjs/components/TimeInput/TimeInput.styles.js +3 -3
  29. package/cjs/components/TimeInput/TimeInput.styles.js.map +1 -1
  30. package/cjs/components/TimeRangeInput/TimeRangeInput.styles.js +5 -5
  31. package/cjs/components/TimeRangeInput/TimeRangeInput.styles.js.map +1 -1
  32. package/cjs/utils/get-end-of-week/get-end-of-week.js +5 -3
  33. package/cjs/utils/get-end-of-week/get-end-of-week.js.map +1 -1
  34. package/cjs/utils/get-month-days/get-month-days.js +3 -3
  35. package/cjs/utils/get-month-days/get-month-days.js.map +1 -1
  36. package/cjs/utils/get-start-of-week/get-start-of-week.js +5 -3
  37. package/cjs/utils/get-start-of-week/get-start-of-week.js.map +1 -1
  38. package/cjs/utils/get-weekdays-names/get-weekdays-names.js +2 -2
  39. package/cjs/utils/get-weekdays-names/get-weekdays-names.js.map +1 -1
  40. package/esm/components/Calendar/Calendar.js +68 -39
  41. package/esm/components/Calendar/Calendar.js.map +1 -1
  42. package/esm/components/Calendar/CalendarHeader/CalendarHeader.js +25 -7
  43. package/esm/components/Calendar/CalendarHeader/CalendarHeader.js.map +1 -1
  44. package/esm/components/Calendar/CalendarLabel/CalendarLabel.js +4 -1
  45. package/esm/components/Calendar/CalendarLabel/CalendarLabel.js.map +1 -1
  46. package/esm/components/Calendar/CalendarWrapper/CalendarWrapper.js +6 -4
  47. package/esm/components/Calendar/CalendarWrapper/CalendarWrapper.js.map +1 -1
  48. package/esm/components/Calendar/get-disabled-state/get-disabled-state.js +2 -2
  49. package/esm/components/Calendar/get-disabled-state/get-disabled-state.js.map +1 -1
  50. package/esm/components/DatePicker/DatePicker.js +89 -17
  51. package/esm/components/DatePicker/DatePicker.js.map +1 -1
  52. package/esm/components/DatePickerBase/DatePickerBase.js +68 -25
  53. package/esm/components/DatePickerBase/DatePickerBase.js.map +1 -1
  54. package/esm/components/DatePickerBase/DatePickerBase.styles.js +6 -3
  55. package/esm/components/DatePickerBase/DatePickerBase.styles.js.map +1 -1
  56. package/esm/components/DateRangePicker/DateRangePicker.js +22 -8
  57. package/esm/components/DateRangePicker/DateRangePicker.js.map +1 -1
  58. package/esm/components/Month/Day/Day.styles.js +7 -7
  59. package/esm/components/Month/Day/Day.styles.js.map +1 -1
  60. package/esm/components/Month/Month.js +14 -6
  61. package/esm/components/Month/Month.js.map +1 -1
  62. package/esm/components/Month/Month.styles.js +2 -2
  63. package/esm/components/Month/Month.styles.js.map +1 -1
  64. package/esm/components/RangeCalendar/RangeCalendar.js +79 -50
  65. package/esm/components/RangeCalendar/RangeCalendar.js.map +1 -1
  66. package/esm/components/TimeInput/TimeInput.styles.js +4 -4
  67. package/esm/components/TimeInput/TimeInput.styles.js.map +1 -1
  68. package/esm/components/TimeRangeInput/TimeRangeInput.styles.js +6 -6
  69. package/esm/components/TimeRangeInput/TimeRangeInput.styles.js.map +1 -1
  70. package/esm/utils/get-end-of-week/get-end-of-week.js +5 -3
  71. package/esm/utils/get-end-of-week/get-end-of-week.js.map +1 -1
  72. package/esm/utils/get-month-days/get-month-days.js +3 -3
  73. package/esm/utils/get-month-days/get-month-days.js.map +1 -1
  74. package/esm/utils/get-start-of-week/get-start-of-week.js +5 -3
  75. package/esm/utils/get-start-of-week/get-start-of-week.js.map +1 -1
  76. package/esm/utils/get-weekdays-names/get-weekdays-names.js +2 -2
  77. package/esm/utils/get-weekdays-names/get-weekdays-names.js.map +1 -1
  78. package/lib/components/Calendar/Calendar.d.ts +5 -0
  79. package/lib/components/Calendar/Calendar.d.ts.map +1 -1
  80. package/lib/components/Calendar/CalendarHeader/CalendarHeader.d.ts +3 -1
  81. package/lib/components/Calendar/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  82. package/lib/components/Calendar/CalendarLabel/CalendarLabel.d.ts +2 -1
  83. package/lib/components/Calendar/CalendarLabel/CalendarLabel.d.ts.map +1 -1
  84. package/lib/components/Calendar/CalendarLabel/CalendarLabel.styles.d.ts +1 -0
  85. package/lib/components/Calendar/CalendarLabel/CalendarLabel.styles.d.ts.map +1 -1
  86. package/lib/components/Calendar/CalendarWrapper/CalendarWrapper.d.ts +1 -0
  87. package/lib/components/Calendar/CalendarWrapper/CalendarWrapper.d.ts.map +1 -1
  88. package/lib/components/Calendar/get-disabled-state/get-disabled-state.d.ts +3 -1
  89. package/lib/components/Calendar/get-disabled-state/get-disabled-state.d.ts.map +1 -1
  90. package/lib/components/DatePicker/DatePicker.d.ts +8 -1
  91. package/lib/components/DatePicker/DatePicker.d.ts.map +1 -1
  92. package/lib/components/DatePickerBase/DatePickerBase.d.ts +7 -3
  93. package/lib/components/DatePickerBase/DatePickerBase.d.ts.map +1 -1
  94. package/lib/components/DatePickerBase/DatePickerBase.styles.d.ts +3 -2
  95. package/lib/components/DatePickerBase/DatePickerBase.styles.d.ts.map +1 -1
  96. package/lib/components/DateRangePicker/DateRangePicker.d.ts +5 -0
  97. package/lib/components/DateRangePicker/DateRangePicker.d.ts.map +1 -1
  98. package/lib/components/Month/Day/Day.styles.d.ts +1 -0
  99. package/lib/components/Month/Day/Day.styles.d.ts.map +1 -1
  100. package/lib/components/Month/Month.d.ts +8 -1
  101. package/lib/components/Month/Month.d.ts.map +1 -1
  102. package/lib/components/Month/Month.styles.d.ts +1 -0
  103. package/lib/components/Month/Month.styles.d.ts.map +1 -1
  104. package/lib/components/RangeCalendar/RangeCalendar.d.ts +3 -0
  105. package/lib/components/RangeCalendar/RangeCalendar.d.ts.map +1 -1
  106. package/lib/components/TimeInput/TimeInput.styles.d.ts +1 -0
  107. package/lib/components/TimeInput/TimeInput.styles.d.ts.map +1 -1
  108. package/lib/components/TimeRangeInput/TimeRangeInput.styles.d.ts +3 -2
  109. package/lib/components/TimeRangeInput/TimeRangeInput.styles.d.ts.map +1 -1
  110. package/lib/types.d.ts +2 -0
  111. package/lib/types.d.ts.map +1 -0
  112. package/lib/utils/get-end-of-week/get-end-of-week.d.ts +2 -1
  113. package/lib/utils/get-end-of-week/get-end-of-week.d.ts.map +1 -1
  114. package/lib/utils/get-month-days/get-month-days.d.ts +2 -1
  115. package/lib/utils/get-month-days/get-month-days.d.ts.map +1 -1
  116. package/lib/utils/get-start-of-week/get-start-of-week.d.ts +2 -1
  117. package/lib/utils/get-start-of-week/get-start-of-week.d.ts.map +1 -1
  118. package/lib/utils/get-weekdays-names/get-weekdays-names.d.ts +2 -1
  119. package/lib/utils/get-weekdays-names/get-weekdays-names.d.ts.map +1 -1
  120. package/package.json +3 -3
@@ -1,5 +1,6 @@
1
1
  import React, { forwardRef } from 'react';
2
2
  import dayjs from 'dayjs';
3
+ import { Group } from '@mantine/core';
3
4
  import { useUncontrolled } from '@mantine/hooks';
4
5
  import { Month } from '../Month/Month.js';
5
6
  import { CalendarHeader } from './CalendarHeader/CalendarHeader.js';
@@ -59,7 +60,10 @@ const Calendar = forwardRef((_a, ref) => {
59
60
  size = "sm",
60
61
  __staticSelector = "Calendar",
61
62
  monthLabel,
62
- yearLabel
63
+ yearLabel,
64
+ preventFocus,
65
+ firstDayOfWeek = "monday",
66
+ amountOfMonths = 1
63
67
  } = _b, others = __objRest(_b, [
64
68
  "classNames",
65
69
  "styles",
@@ -84,7 +88,10 @@ const Calendar = forwardRef((_a, ref) => {
84
88
  "size",
85
89
  "__staticSelector",
86
90
  "monthLabel",
87
- "yearLabel"
91
+ "yearLabel",
92
+ "preventFocus",
93
+ "firstDayOfWeek",
94
+ "amountOfMonths"
88
95
  ]);
89
96
  const [_month, setMonth] = useUncontrolled({
90
97
  value: month,
@@ -94,46 +101,68 @@ const Calendar = forwardRef((_a, ref) => {
94
101
  rule: (val) => val instanceof Date
95
102
  });
96
103
  const disabledState = getDisabledState({ month: _month, minDate, maxDate });
104
+ const hasMultipleMonths = amountOfMonths > 1;
105
+ const dayStyles = (date, modifiers) => {
106
+ const initialStyles = typeof dayStyle === "function" ? dayStyle(date, modifiers) : null;
107
+ const outsideStyles = modifiers.outside && amountOfMonths > 1 ? { display: "none" } : null;
108
+ return __spreadValues(__spreadValues({}, initialStyles), outsideStyles);
109
+ };
97
110
  return /* @__PURE__ */ React.createElement(CalendarWrapper, __spreadValues({
98
111
  size,
99
112
  fullWidth,
100
- ref
101
- }, others), /* @__PURE__ */ React.createElement(CalendarHeader, {
102
- size,
103
- nextMonthLabel,
104
- previousMonthLabel,
105
- previousMonthDisabled: disabledState.previousDisabled,
106
- nextMonthDisabled: disabledState.nextDisabled,
107
- onPreviousMonth: () => setMonth(dayjs(_month).subtract(1, "month").toDate()),
108
- onNextMonth: () => setMonth(dayjs(_month).add(1, "month").toDate()),
109
- classNames,
110
- styles,
111
- locale,
112
- withSelect,
113
- yearsRange,
114
- month: _month,
115
- setMonth,
116
- labelFormat,
117
- __staticSelector,
118
- monthLabel,
119
- yearLabel
120
- }), /* @__PURE__ */ React.createElement(Month, {
121
- month: _month,
122
- value,
123
- onChange,
124
- dayClassName,
125
- dayStyle,
126
- disableOutsideEvents,
127
- minDate,
128
- maxDate,
129
- excludeDate,
130
- classNames,
131
- styles,
132
- fullWidth,
133
- size,
134
- locale,
135
- __staticSelector
136
- }));
113
+ ref,
114
+ amountOfMonths
115
+ }, others), /* @__PURE__ */ React.createElement(Group, {
116
+ noWrap: true,
117
+ style: { alignItems: "flex-start" }
118
+ }, Array(amountOfMonths).fill(0).map((_, monthIndex) => {
119
+ const isFirstMonth = monthIndex === 0;
120
+ const isLastMonth = monthIndex === amountOfMonths - 1;
121
+ const monthToRender = isFirstMonth ? _month : dayjs(_month).add(monthIndex, "month").toDate();
122
+ const hiddenMonth = isFirstMonth ? "next" : isLastMonth ? "prev" : "both";
123
+ return /* @__PURE__ */ React.createElement("div", {
124
+ key: `month-${monthIndex}`
125
+ }, /* @__PURE__ */ React.createElement(CalendarHeader, {
126
+ size,
127
+ nextMonthLabel,
128
+ previousMonthLabel,
129
+ previousMonthDisabled: disabledState.previousDisabled,
130
+ nextMonthDisabled: disabledState.nextDisabled,
131
+ onPreviousMonth: () => setMonth(dayjs(_month).subtract(1, "month").toDate()),
132
+ onNextMonth: () => setMonth(dayjs(_month).add(1, "month").toDate()),
133
+ classNames,
134
+ styles,
135
+ locale,
136
+ withSelect,
137
+ yearsRange,
138
+ month: monthToRender,
139
+ setMonth,
140
+ labelFormat,
141
+ hiddenMonth: hasMultipleMonths ? hiddenMonth : void 0,
142
+ __staticSelector: isFirstMonth ? __staticSelector : `${__staticSelector}-month-${monthIndex}`,
143
+ monthLabel,
144
+ yearLabel,
145
+ preventFocus
146
+ }), /* @__PURE__ */ React.createElement(Month, {
147
+ month: monthToRender,
148
+ value,
149
+ onChange,
150
+ dayClassName,
151
+ disableOutsideEvents,
152
+ minDate,
153
+ maxDate,
154
+ excludeDate,
155
+ classNames,
156
+ styles,
157
+ fullWidth,
158
+ preventFocus,
159
+ size,
160
+ locale,
161
+ firstDayOfWeek,
162
+ __staticSelector,
163
+ dayStyle: dayStyles
164
+ }));
165
+ })));
137
166
  });
138
167
  Calendar.displayName = "@mantine/dates/Calendar";
139
168
 
@@ -1 +1 @@
1
- {"version":3,"file":"Calendar.js","sources":["../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport dayjs from 'dayjs';\nimport { DefaultProps } from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { Month, MonthSettings, MonthStylesNames } from '../Month/Month';\nimport { CalendarLabelStylesNames } from './CalendarLabel/CalendarLabel';\nimport { CalendarHeader } from './CalendarHeader/CalendarHeader';\nimport { CalendarWrapper } from './CalendarWrapper/CalendarWrapper';\nimport { getDisabledState } from './get-disabled-state/get-disabled-state';\n\nexport interface CalendarSettings extends MonthSettings {\n /** aria-label for next month arrow button */\n nextMonthLabel?: string;\n\n /** aria-label for previous month arrow button */\n previousMonthLabel?: string;\n\n /** aria-label for month select */\n monthLabel?: string;\n\n /** aria-label for year select */\n yearLabel?: string;\n\n /** Locale used for all labels formatting */\n locale?: string;\n\n /** Initial selected month */\n initialMonth?: Date | null;\n\n /** dayjs label format */\n labelFormat?: string;\n\n /** Replace calendar label with month and year selects */\n withSelect?: boolean;\n\n /** Years range for year select */\n yearsRange?: { from: number; to: number };\n}\n\nexport type CalendarStylesNames = Exclude<MonthStylesNames, 'root'> | CalendarLabelStylesNames;\n\nexport interface CalendarProps\n extends DefaultProps<CalendarStylesNames>,\n CalendarSettings,\n Omit<React.ComponentPropsWithoutRef<'div'>, 'value' | 'onChange'> {\n /** Current month */\n month?: Date;\n\n /** Selected date */\n value?: Date;\n\n /** Called when selected date changes */\n onChange?(value: Date): void;\n\n /** Called when month changes */\n onMonthChange?(value: Date): void;\n\n /** Static css selector base */\n __staticSelector?: string;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n classNames,\n styles,\n locale = 'en',\n nextMonthLabel,\n previousMonthLabel,\n initialMonth,\n month,\n onMonthChange,\n value,\n onChange,\n labelFormat = 'MMMM YYYY',\n withSelect = false,\n yearsRange = { from: 2020, to: 2030 },\n dayClassName,\n dayStyle,\n disableOutsideEvents,\n minDate,\n maxDate,\n excludeDate,\n fullWidth = false,\n size = 'sm',\n __staticSelector = 'Calendar',\n monthLabel,\n yearLabel,\n ...others\n }: CalendarProps,\n ref\n ) => {\n const [_month, setMonth] = useUncontrolled({\n value: month,\n defaultValue: initialMonth,\n finalValue: new Date(),\n onChange: onMonthChange,\n rule: (val) => val instanceof Date,\n });\n\n const disabledState = getDisabledState({ month: _month, minDate, maxDate });\n\n return (\n <CalendarWrapper size={size} fullWidth={fullWidth} ref={ref} {...others}>\n <CalendarHeader\n size={size}\n nextMonthLabel={nextMonthLabel}\n previousMonthLabel={previousMonthLabel}\n previousMonthDisabled={disabledState.previousDisabled}\n nextMonthDisabled={disabledState.nextDisabled}\n onPreviousMonth={() => setMonth(dayjs(_month).subtract(1, 'month').toDate())}\n onNextMonth={() => setMonth(dayjs(_month).add(1, 'month').toDate())}\n classNames={classNames}\n styles={styles}\n locale={locale}\n withSelect={withSelect}\n yearsRange={yearsRange}\n month={_month}\n setMonth={setMonth}\n labelFormat={labelFormat}\n __staticSelector={__staticSelector}\n monthLabel={monthLabel}\n yearLabel={yearLabel}\n />\n\n <Month\n month={_month}\n value={value}\n onChange={onChange}\n dayClassName={dayClassName}\n dayStyle={dayStyle}\n disableOutsideEvents={disableOutsideEvents}\n minDate={minDate}\n maxDate={maxDate}\n excludeDate={excludeDate}\n classNames={classNames}\n styles={styles}\n fullWidth={fullWidth}\n size={size}\n locale={locale}\n __staticSelector={__staticSelector}\n />\n </CalendarWrapper>\n );\n }\n);\n\nCalendar.displayName = '@mantine/dates/Calendar';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Calendar.js","sources":["../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport dayjs from 'dayjs';\nimport { DefaultProps, Group } from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { FirstDayOfWeek } from '../../types';\nimport { Month, MonthSettings, MonthStylesNames } from '../Month/Month';\nimport { DayModifiers } from '../Month/get-day-props/get-day-props';\nimport { CalendarLabelStylesNames } from './CalendarLabel/CalendarLabel';\nimport { CalendarHeader } from './CalendarHeader/CalendarHeader';\nimport { CalendarWrapper } from './CalendarWrapper/CalendarWrapper';\nimport { getDisabledState } from './get-disabled-state/get-disabled-state';\n\nexport interface CalendarSettings extends MonthSettings {\n /** aria-label for next month arrow button */\n nextMonthLabel?: string;\n\n /** aria-label for previous month arrow button */\n previousMonthLabel?: string;\n\n /** aria-label for month select */\n monthLabel?: string;\n\n /** aria-label for year select */\n yearLabel?: string;\n\n /** Locale used for all labels formatting */\n locale?: string;\n\n /** Initial selected month */\n initialMonth?: Date | null;\n\n /** dayjs label format */\n labelFormat?: string;\n\n /** Replace calendar label with month and year selects */\n withSelect?: boolean;\n\n /** Years range for year select */\n yearsRange?: { from: number; to: number };\n\n /** Set first day of the week */\n firstDayOfWeek?: FirstDayOfWeek;\n\n /** Amount of displayed months */\n amountOfMonths?: number;\n}\n\nexport type CalendarStylesNames = Exclude<MonthStylesNames, 'root'> | CalendarLabelStylesNames;\n\nexport interface CalendarProps\n extends DefaultProps<CalendarStylesNames>,\n CalendarSettings,\n Omit<React.ComponentPropsWithoutRef<'div'>, 'value' | 'onChange'> {\n /** Current month */\n month?: Date;\n\n /** Selected date */\n value?: Date;\n\n /** Called when selected date changes */\n onChange?(value: Date): void;\n\n /** Called when month changes */\n onMonthChange?(value: Date): void;\n\n /** Static css selector base */\n __staticSelector?: string;\n}\n\nexport const Calendar = forwardRef<HTMLDivElement, CalendarProps>(\n (\n {\n classNames,\n styles,\n locale = 'en',\n nextMonthLabel,\n previousMonthLabel,\n initialMonth,\n month,\n onMonthChange,\n value,\n onChange,\n labelFormat = 'MMMM YYYY',\n withSelect = false,\n yearsRange = { from: 2020, to: 2030 },\n dayClassName,\n dayStyle,\n disableOutsideEvents,\n minDate,\n maxDate,\n excludeDate,\n fullWidth = false,\n size = 'sm',\n __staticSelector = 'Calendar',\n monthLabel,\n yearLabel,\n preventFocus,\n firstDayOfWeek = 'monday',\n amountOfMonths = 1,\n ...others\n }: CalendarProps,\n ref\n ) => {\n const [_month, setMonth] = useUncontrolled({\n value: month,\n defaultValue: initialMonth,\n finalValue: new Date(),\n onChange: onMonthChange,\n rule: (val) => val instanceof Date,\n });\n\n const disabledState = getDisabledState({ month: _month, minDate, maxDate });\n const hasMultipleMonths = amountOfMonths > 1;\n\n const dayStyles = (date: Date, modifiers: DayModifiers) => {\n const initialStyles = typeof dayStyle === 'function' ? dayStyle(date, modifiers) : null;\n const outsideStyles = modifiers.outside && amountOfMonths > 1 ? { display: 'none' } : null;\n return { ...initialStyles, ...outsideStyles };\n };\n\n return (\n <CalendarWrapper\n size={size}\n fullWidth={fullWidth}\n ref={ref}\n amountOfMonths={amountOfMonths}\n {...others}\n >\n <Group noWrap style={{ alignItems: 'flex-start' }}>\n {Array(amountOfMonths)\n .fill(0)\n .map((_, monthIndex) => {\n const isFirstMonth = monthIndex === 0;\n const isLastMonth = monthIndex === amountOfMonths - 1;\n const monthToRender = isFirstMonth\n ? _month\n : dayjs(_month).add(monthIndex, 'month').toDate();\n const hiddenMonth = isFirstMonth ? 'next' : isLastMonth ? 'prev' : 'both';\n\n return (\n <div key={`month-${monthIndex}`}>\n <CalendarHeader\n size={size}\n nextMonthLabel={nextMonthLabel}\n previousMonthLabel={previousMonthLabel}\n previousMonthDisabled={disabledState.previousDisabled}\n nextMonthDisabled={disabledState.nextDisabled}\n onPreviousMonth={() => setMonth(dayjs(_month).subtract(1, 'month').toDate())}\n onNextMonth={() => setMonth(dayjs(_month).add(1, 'month').toDate())}\n classNames={classNames}\n styles={styles}\n locale={locale}\n withSelect={withSelect}\n yearsRange={yearsRange}\n month={monthToRender}\n setMonth={setMonth}\n labelFormat={labelFormat}\n hiddenMonth={hasMultipleMonths ? hiddenMonth : undefined}\n __staticSelector={\n isFirstMonth ? __staticSelector : `${__staticSelector}-month-${monthIndex}`\n }\n monthLabel={monthLabel}\n yearLabel={yearLabel}\n preventFocus={preventFocus}\n />\n\n <Month\n month={monthToRender}\n value={value}\n onChange={onChange}\n dayClassName={dayClassName}\n disableOutsideEvents={disableOutsideEvents}\n minDate={minDate}\n maxDate={maxDate}\n excludeDate={excludeDate}\n classNames={classNames}\n styles={styles}\n fullWidth={fullWidth}\n preventFocus={preventFocus}\n size={size}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n __staticSelector={__staticSelector}\n dayStyle={dayStyles}\n />\n </div>\n );\n })}\n </Group>\n </CalendarWrapper>\n );\n }\n);\n\nCalendar.displayName = '@mantine/dates/Calendar';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { useMantineTheme, getSizeValue, Group, ActionIcon } from '@mantine/core';
2
+ import { useMantineTheme, Group, ActionIcon } from '@mantine/core';
3
3
  import { ArrowIcon } from '../ArrowIcon.js';
4
4
  import { CalendarLabel } from '../CalendarLabel/CalendarLabel.js';
5
5
  import { sizes } from '../../Month/Day/Day.styles.js';
@@ -29,11 +29,20 @@ function CalendarHeader({
29
29
  labelFormat,
30
30
  __staticSelector,
31
31
  monthLabel,
32
- yearLabel
32
+ yearLabel,
33
+ preventFocus = false,
34
+ hiddenMonth
33
35
  }) {
34
36
  const theme = useMantineTheme();
35
- const iconSize = getSizeValue({ size, sizes: iconSizes });
36
- const iconButtonSize = getSizeValue({ size, sizes: sizes });
37
+ const iconSize = theme.fn.size({ size, sizes: iconSizes });
38
+ const iconButtonSize = theme.fn.size({ size, sizes: sizes });
39
+ const controlStyles = {
40
+ "&:disabled": {
41
+ backgroundColor: "transparent",
42
+ borderColor: "transparent",
43
+ opacity: 0.4
44
+ }
45
+ };
37
46
  return /* @__PURE__ */ React.createElement(Group, {
38
47
  position: "apart",
39
48
  noWrap: true,
@@ -41,9 +50,13 @@ function CalendarHeader({
41
50
  }, /* @__PURE__ */ React.createElement(ActionIcon, {
42
51
  "aria-label": previousMonthLabel,
43
52
  onClick: onPreviousMonth,
53
+ onMouseDown: (event) => preventFocus && event.preventDefault(),
54
+ tabIndex: preventFocus ? -1 : 0,
44
55
  disabled: previousMonthDisabled,
45
56
  size: iconButtonSize,
46
- "data-mantine-stop-propagation": true
57
+ style: { visibility: ["prev", "both"].includes(hiddenMonth) ? "hidden" : "visible" },
58
+ "data-mantine-stop-propagation": true,
59
+ sx: controlStyles
47
60
  }, /* @__PURE__ */ React.createElement(ArrowIcon, {
48
61
  direction: "left",
49
62
  width: iconSize,
@@ -60,13 +73,18 @@ function CalendarHeader({
60
73
  size,
61
74
  __staticSelector,
62
75
  monthLabel,
63
- yearLabel
76
+ yearLabel,
77
+ preventFocus
64
78
  }), /* @__PURE__ */ React.createElement(ActionIcon, {
65
79
  "aria-label": nextMonthLabel,
66
80
  onClick: onNextMonth,
81
+ tabIndex: preventFocus ? -1 : 0,
82
+ onMouseDown: (event) => preventFocus && event.preventDefault(),
67
83
  disabled: nextMonthDisabled,
68
84
  size: iconButtonSize,
69
- "data-mantine-stop-propagation": true
85
+ style: { visibility: ["next", "both"].includes(hiddenMonth) ? "hidden" : "visible" },
86
+ "data-mantine-stop-propagation": true,
87
+ sx: controlStyles
70
88
  }, /* @__PURE__ */ React.createElement(ArrowIcon, {
71
89
  direction: "right",
72
90
  width: iconSize,
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarHeader.js","sources":["../../../../src/components/Calendar/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Group,\n ActionIcon,\n getSizeValue,\n DefaultProps,\n MantineSize,\n useMantineTheme,\n} from '@mantine/core';\nimport { ArrowIcon } from '../ArrowIcon';\nimport { CalendarLabel } from '../CalendarLabel/CalendarLabel';\nimport { sizes as DAY_SIZES } from '../../Month/Day/Day.styles';\n\nconst iconSizes = {\n xs: 10,\n sm: 12,\n md: 14,\n lg: 18,\n xl: 20,\n};\n\ninterface CalendarHeaderProps extends DefaultProps {\n classNames: Record<string, any>;\n styles: Record<string, any>;\n size: MantineSize;\n nextMonthLabel: string;\n previousMonthLabel: string;\n previousMonthDisabled: boolean;\n nextMonthDisabled: boolean;\n onPreviousMonth(): void;\n onNextMonth(): void;\n locale: string;\n withSelect: boolean;\n yearsRange: { from: number; to: number };\n month: Date;\n setMonth(date: Date): void;\n labelFormat: string;\n __staticSelector: string;\n monthLabel?: string;\n yearLabel?: string;\n}\n\nexport function CalendarHeader({\n size,\n nextMonthLabel,\n previousMonthLabel,\n previousMonthDisabled,\n nextMonthDisabled,\n onPreviousMonth,\n onNextMonth,\n classNames,\n styles,\n locale,\n withSelect,\n yearsRange,\n month,\n setMonth,\n labelFormat,\n __staticSelector,\n monthLabel,\n yearLabel,\n}: CalendarHeaderProps) {\n const theme = useMantineTheme();\n const iconSize = getSizeValue({ size, sizes: iconSizes });\n const iconButtonSize = getSizeValue({ size, sizes: DAY_SIZES });\n\n return (\n <Group position=\"apart\" noWrap style={{ marginBottom: theme.spacing.xs / 2 }}>\n <ActionIcon\n aria-label={previousMonthLabel}\n onClick={onPreviousMonth}\n disabled={previousMonthDisabled}\n size={iconButtonSize}\n data-mantine-stop-propagation\n >\n <ArrowIcon direction=\"left\" width={iconSize} height={iconSize} />\n </ActionIcon>\n\n <CalendarLabel\n locale={locale}\n classNames={classNames}\n styles={styles}\n withSelect={withSelect}\n yearsRange={yearsRange}\n value={month}\n onChange={setMonth}\n labelFormat={labelFormat}\n size={size}\n __staticSelector={__staticSelector}\n monthLabel={monthLabel}\n yearLabel={yearLabel}\n />\n\n <ActionIcon\n aria-label={nextMonthLabel}\n onClick={onNextMonth}\n disabled={nextMonthDisabled}\n size={iconButtonSize}\n data-mantine-stop-propagation\n >\n <ArrowIcon direction=\"right\" width={iconSize} height={iconSize} />\n </ActionIcon>\n </Group>\n );\n}\n\nCalendarHeader.displayName = '@mantine/dates/CalendarHeader';\n"],"names":["DAY_SIZES"],"mappings":";;;;;;AAUA,MAAM,SAAS,GAAG;AAClB,EAAE,EAAE,EAAE,EAAE;AACR,EAAE,EAAE,EAAE,EAAE;AACR,EAAE,EAAE,EAAE,EAAE;AACR,EAAE,EAAE,EAAE,EAAE;AACR,EAAE,EAAE,EAAE,EAAE;AACR,CAAC,CAAC;AACK,SAAS,cAAc,CAAC;AAC/B,EAAE,IAAI;AACN,EAAE,cAAc;AAChB,EAAE,kBAAkB;AACpB,EAAE,qBAAqB;AACvB,EAAE,iBAAiB;AACnB,EAAE,eAAe;AACjB,EAAE,WAAW;AACb,EAAE,UAAU;AACZ,EAAE,MAAM;AACR,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,UAAU;AACZ,EAAE,KAAK;AACP,EAAE,QAAQ;AACV,EAAE,WAAW;AACb,EAAE,gBAAgB;AAClB,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,CAAC,EAAE;AACH,EAAE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;AAClC,EAAE,MAAM,QAAQ,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5D,EAAE,MAAM,cAAc,GAAG,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAEA,KAAS,EAAE,CAAC,CAAC;AAClE,EAAE,uBAAuB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;AACpD,IAAI,QAAQ,EAAE,OAAO;AACrB,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,KAAK,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,EAAE;AACjD,GAAG,kBAAkB,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE;AACrD,IAAI,YAAY,EAAE,kBAAkB;AACpC,IAAI,OAAO,EAAE,eAAe;AAC5B,IAAI,QAAQ,EAAE,qBAAqB;AACnC,IAAI,IAAI,EAAE,cAAc;AACxB,IAAI,+BAA+B,EAAE,IAAI;AACzC,GAAG,kBAAkB,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE;AACpD,IAAI,SAAS,EAAE,MAAM;AACrB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,GAAG,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE;AAC1D,IAAI,MAAM;AACV,IAAI,UAAU;AACd,IAAI,MAAM;AACV,IAAI,UAAU;AACd,IAAI,UAAU;AACd,IAAI,KAAK,EAAE,KAAK;AAChB,IAAI,QAAQ,EAAE,QAAQ;AACtB,IAAI,WAAW;AACf,IAAI,IAAI;AACR,IAAI,gBAAgB;AACpB,IAAI,UAAU;AACd,IAAI,SAAS;AACb,GAAG,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,UAAU,EAAE;AACtD,IAAI,YAAY,EAAE,cAAc;AAChC,IAAI,OAAO,EAAE,WAAW;AACxB,IAAI,QAAQ,EAAE,iBAAiB;AAC/B,IAAI,IAAI,EAAE,cAAc;AACxB,IAAI,+BAA+B,EAAE,IAAI;AACzC,GAAG,kBAAkB,KAAK,CAAC,aAAa,CAAC,SAAS,EAAE;AACpD,IAAI,SAAS,EAAE,OAAO;AACtB,IAAI,KAAK,EAAE,QAAQ;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,GAAG,CAAC,CAAC,CAAC,CAAC;AACP,CAAC;AACD,cAAc,CAAC,WAAW,GAAG,+BAA+B;;;;"}
1
+ {"version":3,"file":"CalendarHeader.js","sources":["../../../../src/components/Calendar/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { Group, ActionIcon, DefaultProps, MantineSize, useMantineTheme } from '@mantine/core';\nimport { ArrowIcon } from '../ArrowIcon';\nimport { CalendarLabel } from '../CalendarLabel/CalendarLabel';\nimport { sizes as DAY_SIZES } from '../../Month/Day/Day.styles';\n\nconst iconSizes = {\n xs: 10,\n sm: 12,\n md: 14,\n lg: 18,\n xl: 20,\n};\n\ninterface CalendarHeaderProps extends DefaultProps {\n classNames: Record<string, any>;\n styles: Record<string, any>;\n size: MantineSize;\n nextMonthLabel: string;\n previousMonthLabel: string;\n previousMonthDisabled: boolean;\n nextMonthDisabled: boolean;\n onPreviousMonth(): void;\n onNextMonth(): void;\n locale: string;\n withSelect: boolean;\n yearsRange: { from: number; to: number };\n month: Date;\n setMonth(date: Date): void;\n labelFormat: string;\n __staticSelector: string;\n monthLabel?: string;\n yearLabel?: string;\n preventFocus?: boolean;\n hiddenMonth?: 'next' | 'prev' | 'both';\n}\n\nexport function CalendarHeader({\n size,\n nextMonthLabel,\n previousMonthLabel,\n previousMonthDisabled,\n nextMonthDisabled,\n onPreviousMonth,\n onNextMonth,\n classNames,\n styles,\n locale,\n withSelect,\n yearsRange,\n month,\n setMonth,\n labelFormat,\n __staticSelector,\n monthLabel,\n yearLabel,\n preventFocus = false,\n hiddenMonth,\n}: CalendarHeaderProps) {\n const theme = useMantineTheme();\n const iconSize = theme.fn.size({ size, sizes: iconSizes });\n const iconButtonSize = theme.fn.size({ size, sizes: DAY_SIZES });\n const controlStyles = {\n '&:disabled': {\n backgroundColor: 'transparent',\n borderColor: 'transparent',\n opacity: 0.4,\n },\n };\n\n return (\n <Group position=\"apart\" noWrap style={{ marginBottom: theme.spacing.xs / 2 }}>\n <ActionIcon<'button'>\n aria-label={previousMonthLabel}\n onClick={onPreviousMonth}\n onMouseDown={(event) => preventFocus && event.preventDefault()}\n tabIndex={preventFocus ? -1 : 0}\n disabled={previousMonthDisabled}\n size={iconButtonSize}\n style={{ visibility: ['prev', 'both'].includes(hiddenMonth) ? 'hidden' : 'visible' }}\n data-mantine-stop-propagation\n sx={controlStyles}\n >\n <ArrowIcon direction=\"left\" width={iconSize} height={iconSize} />\n </ActionIcon>\n\n <CalendarLabel\n locale={locale}\n classNames={classNames}\n styles={styles}\n withSelect={withSelect}\n yearsRange={yearsRange}\n value={month}\n onChange={setMonth}\n labelFormat={labelFormat}\n size={size}\n __staticSelector={__staticSelector}\n monthLabel={monthLabel}\n yearLabel={yearLabel}\n preventFocus={preventFocus}\n />\n\n <ActionIcon<'button'>\n aria-label={nextMonthLabel}\n onClick={onNextMonth}\n tabIndex={preventFocus ? -1 : 0}\n onMouseDown={(event) => preventFocus && event.preventDefault()}\n disabled={nextMonthDisabled}\n size={iconButtonSize}\n style={{ visibility: ['next', 'both'].includes(hiddenMonth) ? 'hidden' : 'visible' }}\n data-mantine-stop-propagation\n sx={controlStyles}\n >\n <ArrowIcon direction=\"right\" width={iconSize} height={iconSize} />\n </ActionIcon>\n </Group>\n );\n}\n\nCalendarHeader.displayName = '@mantine/dates/CalendarHeader';\n"],"names":["DAY_SIZES"],"mappings":"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"}
@@ -18,7 +18,8 @@ function CalendarLabel({
18
18
  size,
19
19
  __staticSelector,
20
20
  monthLabel,
21
- yearLabel
21
+ yearLabel,
22
+ preventFocus
22
23
  }) {
23
24
  const selectSize = size === "lg" || size === "xl" ? "md" : "xs";
24
25
  const { classes } = useStyles(null, { classNames, styles, name: __staticSelector });
@@ -31,6 +32,7 @@ function CalendarLabel({
31
32
  className: classes.calendarSelect,
32
33
  size: selectSize,
33
34
  value: value.getMonth(),
35
+ onMouseDown: (event) => preventFocus && event.preventDefault(),
34
36
  onChange: (event) => onChange(dayjs(value).set("month", parseInt(event.currentTarget.value, 10)).toDate()),
35
37
  data: getMonthsNames(locale).map((month, index) => ({
36
38
  label: upperFirst(month),
@@ -41,6 +43,7 @@ function CalendarLabel({
41
43
  className: classes.calendarSelect,
42
44
  size: selectSize,
43
45
  value: value.getFullYear(),
46
+ onMouseDown: (event) => preventFocus && event.preventDefault(),
44
47
  onChange: (event) => onChange(dayjs(value).set("year", parseInt(event.currentTarget.value, 10)).toDate()),
45
48
  data: getYearsRange(yearsRange).map((year) => ({
46
49
  label: year.toString(),
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarLabel.js","sources":["../../../../src/components/Calendar/CalendarLabel/CalendarLabel.tsx"],"sourcesContent":["import React from 'react';\nimport dayjs from 'dayjs';\nimport { DefaultProps, NativeSelect, Group, Text, MantineSize, ClassNames } from '@mantine/core';\nimport { upperFirst } from '@mantine/hooks';\nimport { getMonthsNames, getYearsRange } from '../../../utils';\nimport useStyles from './CalendarLabel.styles';\n\nexport type CalendarLabelStylesNames = ClassNames<typeof useStyles>;\n\ninterface CalendarLabelProps extends DefaultProps<CalendarLabelStylesNames> {\n locale: string;\n withSelect: boolean;\n yearsRange: { from: number; to: number };\n value: Date;\n onChange(value: Date): void;\n labelFormat: string;\n __staticSelector: string;\n size: MantineSize;\n monthLabel?: string;\n yearLabel?: string;\n}\n\nexport function CalendarLabel({\n locale,\n classNames,\n styles,\n withSelect,\n yearsRange,\n value,\n labelFormat,\n onChange,\n size,\n __staticSelector,\n monthLabel,\n yearLabel,\n}: CalendarLabelProps) {\n const selectSize = size === 'lg' || size === 'xl' ? 'md' : 'xs';\n const { classes } = useStyles(null, { classNames, styles, name: __staticSelector });\n\n return withSelect ? (\n <Group spacing={5} noWrap className={classes.calendarSelectGroup}>\n <NativeSelect\n aria-label={monthLabel}\n className={classes.calendarSelect}\n size={selectSize}\n value={value.getMonth()}\n onChange={(event) =>\n onChange(dayjs(value).set('month', parseInt(event.currentTarget.value, 10)).toDate())\n }\n data={getMonthsNames(locale).map((month, index) => ({\n label: upperFirst(month),\n value: index.toString(),\n }))}\n />\n\n <NativeSelect\n aria-label={yearLabel}\n className={classes.calendarSelect}\n size={selectSize}\n value={value.getFullYear()}\n onChange={(event) =>\n onChange(dayjs(value).set('year', parseInt(event.currentTarget.value, 10)).toDate())\n }\n data={getYearsRange(yearsRange).map((year) => ({\n label: year.toString(),\n value: year.toString(),\n }))}\n />\n </Group>\n ) : (\n <Text className={classes.calendarLabel} size={size}>\n {upperFirst(dayjs(value).locale(locale).format(labelFormat))}\n </Text>\n );\n}\n\nCalendarLabel.displayName = '@mantine/dates/CalendarLabel';\n"],"names":[],"mappings":";;;;;;;;AAMO,SAAS,aAAa,CAAC;AAC9B,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,MAAM;AACR,EAAE,UAAU;AACZ,EAAE,UAAU;AACZ,EAAE,KAAK;AACP,EAAE,WAAW;AACb,EAAE,QAAQ;AACV,EAAE,IAAI;AACN,EAAE,gBAAgB;AAClB,EAAE,UAAU;AACZ,EAAE,SAAS;AACX,CAAC,EAAE;AACH,EAAE,MAAM,UAAU,GAAG,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAClE,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACtF,EAAE,OAAO,UAAU,mBAAmB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE;AACjE,IAAI,OAAO,EAAE,CAAC;AACd,IAAI,MAAM,EAAE,IAAI;AAChB,IAAI,SAAS,EAAE,OAAO,CAAC,mBAAmB;AAC1C,GAAG,kBAAkB,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE;AACvD,IAAI,YAAY,EAAE,UAAU;AAC5B,IAAI,SAAS,EAAE,OAAO,CAAC,cAAc;AACrC,IAAI,IAAI,EAAE,UAAU;AACpB,IAAI,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;AAC3B,IAAI,QAAQ,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9G,IAAI,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,MAAM;AACxD,MAAM,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC;AAC9B,MAAM,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE;AAC7B,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,YAAY,EAAE;AACxD,IAAI,YAAY,EAAE,SAAS;AAC3B,IAAI,SAAS,EAAE,OAAO,CAAC,cAAc;AACrC,IAAI,IAAI,EAAE,UAAU;AACpB,IAAI,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE;AAC9B,IAAI,QAAQ,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAC7G,IAAI,IAAI,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,MAAM;AACnD,MAAM,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC5B,MAAM,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC5B,KAAK,CAAC,CAAC;AACP,GAAG,CAAC,CAAC,mBAAmB,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE;AAClD,IAAI,SAAS,EAAE,OAAO,CAAC,aAAa;AACpC,IAAI,IAAI;AACR,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AACD,aAAa,CAAC,WAAW,GAAG,8BAA8B;;;;"}
1
+ {"version":3,"file":"CalendarLabel.js","sources":["../../../../src/components/Calendar/CalendarLabel/CalendarLabel.tsx"],"sourcesContent":["import React from 'react';\nimport dayjs from 'dayjs';\nimport { DefaultProps, NativeSelect, Group, Text, MantineSize, ClassNames } from '@mantine/core';\nimport { upperFirst } from '@mantine/hooks';\nimport { getMonthsNames, getYearsRange } from '../../../utils';\nimport useStyles from './CalendarLabel.styles';\n\nexport type CalendarLabelStylesNames = ClassNames<typeof useStyles>;\n\ninterface CalendarLabelProps extends DefaultProps<CalendarLabelStylesNames> {\n locale: string;\n withSelect: boolean;\n yearsRange: { from: number; to: number };\n value: Date;\n onChange(value: Date): void;\n labelFormat: string;\n __staticSelector: string;\n size: MantineSize;\n monthLabel?: string;\n yearLabel?: string;\n preventFocus?: boolean;\n}\n\nexport function CalendarLabel({\n locale,\n classNames,\n styles,\n withSelect,\n yearsRange,\n value,\n labelFormat,\n onChange,\n size,\n __staticSelector,\n monthLabel,\n yearLabel,\n preventFocus,\n}: CalendarLabelProps) {\n const selectSize = size === 'lg' || size === 'xl' ? 'md' : 'xs';\n const { classes } = useStyles(null, { classNames, styles, name: __staticSelector });\n\n return withSelect ? (\n <Group spacing={5} noWrap className={classes.calendarSelectGroup}>\n <NativeSelect\n aria-label={monthLabel}\n className={classes.calendarSelect}\n size={selectSize}\n value={value.getMonth()}\n onMouseDown={(event) => preventFocus && event.preventDefault()}\n onChange={(event) =>\n onChange(dayjs(value).set('month', parseInt(event.currentTarget.value, 10)).toDate())\n }\n data={getMonthsNames(locale).map((month, index) => ({\n label: upperFirst(month),\n value: index.toString(),\n }))}\n />\n\n <NativeSelect\n aria-label={yearLabel}\n className={classes.calendarSelect}\n size={selectSize}\n value={value.getFullYear()}\n onMouseDown={(event) => preventFocus && event.preventDefault()}\n onChange={(event) =>\n onChange(dayjs(value).set('year', parseInt(event.currentTarget.value, 10)).toDate())\n }\n data={getYearsRange(yearsRange).map((year) => ({\n label: year.toString(),\n value: year.toString(),\n }))}\n />\n </Group>\n ) : (\n <Text className={classes.calendarLabel} size={size}>\n {upperFirst(dayjs(value).locale(locale).format(labelFormat))}\n </Text>\n );\n}\n\nCalendarLabel.displayName = '@mantine/dates/CalendarLabel';\n"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import React, { forwardRef } from 'react';
2
- import { useExtractedMargins, useSx, getSizeValue } from '@mantine/core';
2
+ import { useExtractedMargins, useSx } from '@mantine/core';
3
3
  import { sizes } from '../../Month/Day/Day.styles.js';
4
4
 
5
5
  var __defProp = Object.defineProperty;
@@ -31,14 +31,16 @@ var __objRest = (source, exclude) => {
31
31
  return target;
32
32
  };
33
33
  const CalendarWrapper = forwardRef((_a, ref) => {
34
- var _b = _a, { size, fullWidth, style, sx, className } = _b, others = __objRest(_b, ["size", "fullWidth", "style", "sx", "className"]);
34
+ var _b = _a, { size, fullWidth, amountOfMonths = 1, style, sx, className } = _b, others = __objRest(_b, ["size", "fullWidth", "amountOfMonths", "style", "sx", "className"]);
35
35
  const { mergedStyles, rest } = useExtractedMargins({ others, style });
36
- const { sxClassName } = useSx({ sx, className });
36
+ const { sxClassName, theme } = useSx({ sx, className });
37
+ const _maxWidth = theme.fn.size({ size, sizes: sizes }) * 7;
38
+ const maxWidth = amountOfMonths > 1 ? _maxWidth * amountOfMonths + (amountOfMonths - 1) * 16 : _maxWidth;
37
39
  return /* @__PURE__ */ React.createElement("div", __spreadValues({
38
40
  ref,
39
41
  className: sxClassName,
40
42
  style: __spreadValues({
41
- maxWidth: fullWidth ? "100%" : getSizeValue({ size, sizes: sizes }) * 7
43
+ maxWidth: fullWidth ? "100%" : maxWidth
42
44
  }, mergedStyles)
43
45
  }, rest));
44
46
  });
@@ -1 +1 @@
1
- {"version":3,"file":"CalendarWrapper.js","sources":["../../../../src/components/Calendar/CalendarWrapper/CalendarWrapper.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { MantineSize, getSizeValue, useExtractedMargins, useSx, DefaultProps } from '@mantine/core';\nimport { sizes as DAY_SIZES } from '../../Month/Day/Day.styles';\n\ninterface CalendarWrapperProps extends DefaultProps, React.ComponentPropsWithoutRef<'div'> {\n size: MantineSize;\n fullWidth: boolean;\n}\n\nexport const CalendarWrapper = forwardRef<HTMLDivElement, CalendarWrapperProps>(\n ({ size, fullWidth, style, sx, className, ...others }: CalendarWrapperProps, ref) => {\n const { mergedStyles, rest } = useExtractedMargins({ others, style });\n const { sxClassName } = useSx({ sx, className });\n return (\n <div\n ref={ref}\n className={sxClassName}\n style={{\n maxWidth: fullWidth ? '100%' : getSizeValue({ size, sizes: DAY_SIZES }) * 7,\n ...mergedStyles,\n }}\n {...rest}\n />\n );\n }\n);\n\nCalendarWrapper.displayName = '@mantine/dates/CalendarWrapper';\n"],"names":["DAY_SIZES"],"mappings":"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"}
1
+ {"version":3,"file":"CalendarWrapper.js","sources":["../../../../src/components/Calendar/CalendarWrapper/CalendarWrapper.tsx"],"sourcesContent":["import React, { forwardRef } from 'react';\nimport { MantineSize, useExtractedMargins, useSx, DefaultProps } from '@mantine/core';\nimport { sizes as DAY_SIZES } from '../../Month/Day/Day.styles';\n\ninterface CalendarWrapperProps extends DefaultProps, React.ComponentPropsWithoutRef<'div'> {\n size: MantineSize;\n fullWidth: boolean;\n amountOfMonths?: number;\n}\n\nexport const CalendarWrapper = forwardRef<HTMLDivElement, CalendarWrapperProps>(\n (\n { size, fullWidth, amountOfMonths = 1, style, sx, className, ...others }: CalendarWrapperProps,\n ref\n ) => {\n const { mergedStyles, rest } = useExtractedMargins({ others, style });\n const { sxClassName, theme } = useSx({ sx, className });\n const _maxWidth = theme.fn.size({ size, sizes: DAY_SIZES }) * 7;\n const maxWidth =\n amountOfMonths > 1 ? _maxWidth * amountOfMonths + (amountOfMonths - 1) * 16 : _maxWidth;\n\n return (\n <div\n ref={ref}\n className={sxClassName}\n style={{\n maxWidth: fullWidth ? '100%' : maxWidth,\n ...mergedStyles,\n }}\n {...rest}\n />\n );\n }\n);\n\nCalendarWrapper.displayName = '@mantine/dates/CalendarWrapper';\n"],"names":["DAY_SIZES"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import dayjs from 'dayjs';
2
2
 
3
- function getDisabledState({ maxDate, minDate, month }) {
4
- const nextDisabled = maxDate instanceof Date && dayjs(month).endOf("month").isAfter(dayjs(maxDate).endOf("day").subtract(1, "minute"));
3
+ function getDisabledState({ maxDate, minDate, month, amountOfMonths }) {
4
+ const nextDisabled = maxDate instanceof Date && dayjs(month).add(amountOfMonths - 1, "month").endOf("month").isAfter(dayjs(maxDate).endOf("day").subtract(1, "minute"));
5
5
  const previousDisabled = minDate instanceof Date && dayjs(month).startOf("month").isBefore(dayjs(minDate).startOf("day").add(1, "minute"));
6
6
  return { nextDisabled, previousDisabled };
7
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"get-disabled-state.js","sources":["../../../../src/components/Calendar/get-disabled-state/get-disabled-state.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\ninterface GetDisabledState {\n /** Current selected month */\n month: Date;\n\n /** Min and max possible dates */\n minDate: Date;\n maxDate: Date;\n}\n\nexport function getDisabledState({ maxDate, minDate, month }: GetDisabledState) {\n const nextDisabled =\n maxDate instanceof Date &&\n dayjs(month).endOf('month').isAfter(dayjs(maxDate).endOf('day').subtract(1, 'minute'));\n const previousDisabled =\n minDate instanceof Date &&\n dayjs(month).startOf('month').isBefore(dayjs(minDate).startOf('day').add(1, 'minute'));\n\n return { nextDisabled, previousDisabled };\n}\n"],"names":[],"mappings":";;AACO,SAAS,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;AAC9D,EAAE,MAAM,YAAY,GAAG,OAAO,YAAY,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AACzI,EAAE,MAAM,gBAAgB,GAAG,OAAO,YAAY,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7I,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAC5C;;;;"}
1
+ {"version":3,"file":"get-disabled-state.js","sources":["../../../../src/components/Calendar/get-disabled-state/get-disabled-state.ts"],"sourcesContent":["import dayjs from 'dayjs';\n\ninterface GetDisabledState {\n /** Current selected month */\n month: Date;\n\n /** Min and max possible dates */\n minDate: Date;\n maxDate: Date;\n\n /** Amount of rendered months */\n amountOfMonths?: number;\n}\n\nexport function getDisabledState({ maxDate, minDate, month, amountOfMonths }: GetDisabledState) {\n const nextDisabled =\n maxDate instanceof Date &&\n dayjs(month)\n .add(amountOfMonths - 1, 'month')\n .endOf('month')\n .isAfter(dayjs(maxDate).endOf('day').subtract(1, 'minute'));\n const previousDisabled =\n minDate instanceof Date &&\n dayjs(month).startOf('month').isBefore(dayjs(minDate).startOf('day').add(1, 'minute'));\n\n return { nextDisabled, previousDisabled };\n}\n"],"names":[],"mappings":";;AACO,SAAS,gBAAgB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE;AAC9E,EAAE,MAAM,YAAY,GAAG,OAAO,YAAY,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1K,EAAE,MAAM,gBAAgB,GAAG,OAAO,YAAY,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC7I,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAC5C;;;;"}
@@ -1,6 +1,7 @@
1
- import React, { forwardRef, useState, useRef } from 'react';
2
- import { useUncontrolled, useMergedRef, upperFirst } from '@mantine/hooks';
3
1
  import dayjs from 'dayjs';
2
+ import React, { forwardRef, useState, useRef, useEffect } from 'react';
3
+ import { useUncontrolled, upperFirst, useMergedRef } from '@mantine/hooks';
4
+ import { useMantineTheme } from '@mantine/core';
4
5
  import { Calendar } from '../Calendar/Calendar.js';
5
6
  import { DatePickerBase } from '../DatePickerBase/DatePickerBase.js';
6
7
 
@@ -41,7 +42,7 @@ const DatePicker = forwardRef((_a, ref) => {
41
42
  styles,
42
43
  shadow = "sm",
43
44
  locale = "en",
44
- inputFormat = "MMMM D, YYYY",
45
+ inputFormat,
45
46
  transitionDuration = 200,
46
47
  transitionTimingFunction,
47
48
  nextMonthLabel,
@@ -63,7 +64,14 @@ const DatePicker = forwardRef((_a, ref) => {
63
64
  dropdownType = "popover",
64
65
  clearable = true,
65
66
  disabled = false,
66
- clearButtonLabel
67
+ clearButtonLabel,
68
+ fixOnBlur = true,
69
+ allowFreeInput,
70
+ dateParser,
71
+ firstDayOfWeek = "monday",
72
+ onFocus,
73
+ onBlur,
74
+ amountOfMonths
67
75
  } = _b, others = __objRest(_b, [
68
76
  "value",
69
77
  "onChange",
@@ -94,11 +102,22 @@ const DatePicker = forwardRef((_a, ref) => {
94
102
  "dropdownType",
95
103
  "clearable",
96
104
  "disabled",
97
- "clearButtonLabel"
105
+ "clearButtonLabel",
106
+ "fixOnBlur",
107
+ "allowFreeInput",
108
+ "dateParser",
109
+ "firstDayOfWeek",
110
+ "onFocus",
111
+ "onBlur",
112
+ "amountOfMonths"
98
113
  ]);
114
+ const theme = useMantineTheme();
115
+ const dateFormat = inputFormat || theme.dateFormat;
99
116
  const [dropdownOpened, setDropdownOpened] = useState(initiallyOpened);
117
+ const [calendarMonth, setCalendarMonth] = useState(initialMonth || new Date());
100
118
  const calendarSize = size === "lg" || size === "xl" ? "md" : "sm";
101
119
  const inputRef = useRef();
120
+ const [lastValidValue, setLastValidValue] = useState(defaultValue != null ? defaultValue : null);
102
121
  const [_value, setValue] = useUncontrolled({
103
122
  value,
104
123
  defaultValue,
@@ -106,16 +125,64 @@ const DatePicker = forwardRef((_a, ref) => {
106
125
  onChange,
107
126
  rule: (val) => val === null || val instanceof Date
108
127
  });
128
+ const [focused, setFocused] = useState(false);
129
+ const [inputState, setInputState] = useState(_value instanceof Date ? upperFirst(dayjs(_value).locale(locale).format(dateFormat)) : "");
130
+ useEffect(() => {
131
+ if (value === null && !focused) {
132
+ setInputState("");
133
+ }
134
+ if (value instanceof Date && !focused) {
135
+ setInputState(dayjs(value).locale(locale).format(dateFormat));
136
+ }
137
+ }, [value, focused]);
109
138
  const handleValueChange = (date) => {
110
139
  setValue(date);
140
+ setInputState(upperFirst(dayjs(date).locale(locale).format(dateFormat)));
111
141
  closeCalendarOnChange && setDropdownOpened(false);
142
+ window.setTimeout(() => {
143
+ var _a2;
144
+ return (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
145
+ }, 0);
112
146
  };
113
147
  const handleClear = () => {
114
148
  var _a2;
115
149
  setValue(null);
150
+ setLastValidValue(null);
151
+ setInputState("");
152
+ setDropdownOpened(true);
116
153
  (_a2 = inputRef.current) == null ? void 0 : _a2.focus();
117
154
  };
118
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(DatePickerBase, __spreadValues({
155
+ const parseDate = (date) => dateParser ? dateParser(date) : dayjs(date, dateFormat, locale).toDate();
156
+ const handleInputBlur = (event) => {
157
+ typeof onBlur === "function" && onBlur(event);
158
+ setFocused(false);
159
+ const date = typeof _value === "string" ? parseDate(_value) : _value;
160
+ if (dayjs(date).isValid()) {
161
+ setValue(date);
162
+ setLastValidValue(date);
163
+ setInputState(upperFirst(dayjs(date).locale(locale).format(dateFormat)));
164
+ } else if (fixOnBlur) {
165
+ setValue(lastValidValue);
166
+ }
167
+ };
168
+ const handleInputFocus = (event) => {
169
+ typeof onFocus === "function" && onFocus(event);
170
+ setFocused(true);
171
+ };
172
+ const handleChange = (event) => {
173
+ setDropdownOpened(true);
174
+ const date = parseDate(event.target.value);
175
+ if (dayjs(date).isValid()) {
176
+ setValue(date);
177
+ setLastValidValue(date);
178
+ setInputState(event.target.value);
179
+ setCalendarMonth(date);
180
+ } else {
181
+ setInputState(event.target.value);
182
+ }
183
+ };
184
+ return /* @__PURE__ */ React.createElement(DatePickerBase, __spreadValues({
185
+ allowFreeInput,
119
186
  dropdownOpened,
120
187
  setDropdownOpened,
121
188
  shadow,
@@ -124,8 +191,12 @@ const DatePicker = forwardRef((_a, ref) => {
124
191
  size,
125
192
  styles,
126
193
  classNames,
127
- inputLabel: _value instanceof Date ? upperFirst(dayjs(_value).locale(locale).format(inputFormat)) : null,
128
- __staticSelector: "date-picker",
194
+ onChange: handleChange,
195
+ onBlur: handleInputBlur,
196
+ onFocus: handleInputFocus,
197
+ name,
198
+ inputLabel: inputState,
199
+ __staticSelector: "DatePicker",
129
200
  dropdownType,
130
201
  clearable: clearable && !!_value && !disabled,
131
202
  clearButtonLabel,
@@ -137,11 +208,13 @@ const DatePicker = forwardRef((_a, ref) => {
137
208
  locale,
138
209
  nextMonthLabel,
139
210
  previousMonthLabel,
140
- initialMonth: _value instanceof Date ? _value : initialMonth,
141
- value: _value,
211
+ month: allowFreeInput ? calendarMonth : void 0,
212
+ initialMonth: initialMonth || (_value instanceof Date ? _value : new Date()),
213
+ onMonthChange: setCalendarMonth,
214
+ value: _value instanceof Date ? _value : dayjs(_value).toDate(),
142
215
  onChange: handleValueChange,
143
216
  labelFormat,
144
- withSelect,
217
+ withSelect: withSelect && !allowFreeInput,
145
218
  yearsRange,
146
219
  dayClassName,
147
220
  dayStyle,
@@ -149,13 +222,12 @@ const DatePicker = forwardRef((_a, ref) => {
149
222
  minDate,
150
223
  maxDate,
151
224
  excludeDate,
152
- __staticSelector: "date-picker",
225
+ __staticSelector: "DatePicker",
153
226
  fullWidth: dropdownType === "modal",
154
- size: dropdownType === "modal" ? "lg" : calendarSize
155
- })), /* @__PURE__ */ React.createElement("input", {
156
- type: "hidden",
157
- name,
158
- value: _value instanceof Date ? _value.toISOString() : ""
227
+ size: dropdownType === "modal" ? "lg" : calendarSize,
228
+ firstDayOfWeek,
229
+ preventFocus: allowFreeInput,
230
+ amountOfMonths
159
231
  }));
160
232
  });
161
233
  DatePicker.displayName = "@mantine/dates/DatePicker";