@mantine/dates 9.0.0 → 9.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/components/Calendar/Calendar.cjs.map +1 -1
- package/cjs/components/CalendarHeader/CalendarHeader.cjs.map +1 -1
- package/cjs/components/DateInput/DateInput.cjs.map +1 -1
- package/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
- package/cjs/components/DatePickerInput/DatePickerInput.cjs +1 -0
- package/cjs/components/DatePickerInput/DatePickerInput.cjs.map +1 -1
- package/cjs/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
- package/cjs/components/DatesProvider/DatesProvider.cjs.map +1 -1
- package/cjs/components/Day/Day.cjs.map +1 -1
- package/cjs/components/MiniCalendar/MiniCalendar.cjs.map +1 -1
- package/cjs/components/Month/Month.cjs.map +1 -1
- package/cjs/components/MonthPicker/MonthPicker.cjs.map +1 -1
- package/cjs/components/MonthPickerInput/MonthPickerInput.cjs +1 -0
- package/cjs/components/MonthPickerInput/MonthPickerInput.cjs.map +1 -1
- package/cjs/components/TimeGrid/TimeGrid.cjs.map +1 -1
- package/cjs/components/TimeInput/TimeInput.cjs +1 -1
- package/cjs/components/TimeInput/TimeInput.cjs.map +1 -1
- package/cjs/components/TimePicker/TimePicker.cjs.map +1 -1
- package/cjs/components/YearPicker/YearPicker.cjs.map +1 -1
- package/cjs/components/YearPickerInput/YearPickerInput.cjs +1 -0
- package/cjs/components/YearPickerInput/YearPickerInput.cjs.map +1 -1
- package/esm/components/Calendar/Calendar.mjs.map +1 -1
- package/esm/components/CalendarHeader/CalendarHeader.mjs.map +1 -1
- package/esm/components/DateInput/DateInput.mjs.map +1 -1
- package/esm/components/DatePicker/DatePicker.mjs.map +1 -1
- package/esm/components/DatePickerInput/DatePickerInput.mjs +1 -0
- package/esm/components/DatePickerInput/DatePickerInput.mjs.map +1 -1
- package/esm/components/DateTimePicker/DateTimePicker.mjs.map +1 -1
- package/esm/components/DatesProvider/DatesProvider.mjs.map +1 -1
- package/esm/components/Day/Day.mjs.map +1 -1
- package/esm/components/MiniCalendar/MiniCalendar.mjs.map +1 -1
- package/esm/components/Month/Month.mjs.map +1 -1
- package/esm/components/MonthPicker/MonthPicker.mjs.map +1 -1
- package/esm/components/MonthPickerInput/MonthPickerInput.mjs +1 -0
- package/esm/components/MonthPickerInput/MonthPickerInput.mjs.map +1 -1
- package/esm/components/TimeGrid/TimeGrid.mjs.map +1 -1
- package/esm/components/TimeInput/TimeInput.mjs +1 -1
- package/esm/components/TimeInput/TimeInput.mjs.map +1 -1
- package/esm/components/TimePicker/TimePicker.mjs.map +1 -1
- package/esm/components/YearPicker/YearPicker.mjs.map +1 -1
- package/esm/components/YearPickerInput/YearPickerInput.mjs +1 -0
- package/esm/components/YearPickerInput/YearPickerInput.mjs.map +1 -1
- package/lib/components/Calendar/Calendar.d.ts +8 -0
- package/lib/components/Calendar/index.d.ts +0 -8
- package/lib/components/CalendarHeader/CalendarHeader.d.ts +7 -0
- package/lib/components/CalendarHeader/index.d.ts +0 -7
- package/lib/components/DateInput/DateInput.d.ts +5 -0
- package/lib/components/DateInput/index.d.ts +0 -5
- package/lib/components/DatePicker/DatePicker.d.ts +8 -0
- package/lib/components/DatePicker/index.d.ts +0 -9
- package/lib/components/DatePickerInput/DatePickerInput.d.ts +5 -0
- package/lib/components/DatePickerInput/index.d.ts +0 -5
- package/lib/components/DateTimePicker/DateTimePicker.d.ts +5 -0
- package/lib/components/DateTimePicker/index.d.ts +0 -5
- package/lib/components/DatesProvider/DatesProvider.d.ts +4 -0
- package/lib/components/DatesProvider/index.d.ts +0 -4
- package/lib/components/Day/Day.d.ts +6 -0
- package/lib/components/Day/index.d.ts +0 -6
- package/lib/components/MiniCalendar/MiniCalendar.d.ts +6 -0
- package/lib/components/MiniCalendar/index.d.ts +0 -6
- package/lib/components/Month/Month.d.ts +6 -0
- package/lib/components/Month/index.d.ts +0 -6
- package/lib/components/MonthPicker/MonthPicker.d.ts +5 -0
- package/lib/components/MonthPicker/index.d.ts +0 -6
- package/lib/components/MonthPickerInput/MonthPickerInput.d.ts +5 -0
- package/lib/components/MonthPickerInput/index.d.ts +0 -6
- package/lib/components/TimeGrid/TimeGrid.d.ts +6 -0
- package/lib/components/TimeGrid/index.d.ts +0 -6
- package/lib/components/TimeInput/TimeInput.d.ts +4 -0
- package/lib/components/TimeInput/index.d.ts +0 -4
- package/lib/components/TimePicker/TimePicker.d.ts +10 -0
- package/lib/components/TimePicker/index.d.ts +0 -10
- package/lib/components/YearPicker/YearPicker.d.ts +6 -0
- package/lib/components/YearPicker/index.d.ts +0 -7
- package/lib/components/YearPickerInput/YearPickerInput.d.ts +5 -0
- package/lib/components/YearPickerInput/index.d.ts +0 -6
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Calendar.cjs","names":["clampLevel","useUncontrolledDates","toDateString","Box","MonthLevelGroup","YearLevelGroup","DecadeLevelGroup"],"sources":["../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useEffect, useImperativeHandle, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n ElementProps,\n Factory,\n factory,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n} from '@mantine/core';\nimport { useMergedRef, useUncontrolled } from '@mantine/hooks';\nimport { useUncontrolledDates } from '../../hooks';\nimport { CalendarLevel, DateStringValue } from '../../types';\nimport { toDateString } from '../../utils';\nimport { DecadeLevelSettings } from '../DecadeLevel';\nimport { DecadeLevelGroup, DecadeLevelGroupStylesNames } from '../DecadeLevelGroup';\nimport { MonthLevelSettings } from '../MonthLevel';\nimport { MonthLevelGroup, MonthLevelGroupStylesNames } from '../MonthLevelGroup';\nimport { YearLevelSettings } from '../YearLevel';\nimport { YearLevelGroup, YearLevelGroupStylesNames } from '../YearLevelGroup';\nimport { clampLevel } from './clamp-level/clamp-level';\n\nexport type CalendarStylesNames =\n | MonthLevelGroupStylesNames\n | YearLevelGroupStylesNames\n | DecadeLevelGroupStylesNames;\n\nexport interface CalendarAriaLabels {\n monthLevelControl?: string;\n yearLevelControl?: string;\n\n nextMonth?: string;\n previousMonth?: string;\n\n nextYear?: string;\n previousYear?: string;\n\n nextDecade?: string;\n previousDecade?: string;\n}\n\ntype OmittedSettings =\n | 'onNext'\n | 'onPrevious'\n | 'onLevelClick'\n | 'withNext'\n | 'withPrevious'\n | 'nextDisabled'\n | 'previousDisabled'\n | 'hasNextLevel';\n\nexport interface CalendarSettings\n extends\n Omit<DecadeLevelSettings, OmittedSettings>,\n Omit<YearLevelSettings, OmittedSettings>,\n Omit<MonthLevelSettings, OmittedSettings> {\n /** Initial displayed level in uncontrolled mode */\n defaultLevel?: CalendarLevel;\n\n /** Current displayed level displayed in controlled mode */\n level?: CalendarLevel;\n\n /** Called when level changes */\n onLevelChange?: (level: CalendarLevel) => void;\n\n /** Called when user selects year */\n onYearSelect?: (date: DateStringValue) => void;\n\n /** Called when user selects month */\n onMonthSelect?: (date: DateStringValue) => void;\n\n /** Called when mouse enters year control */\n onYearMouseEnter?: (event: React.MouseEvent<HTMLButtonElement>, date: DateStringValue) => void;\n\n /** Called when mouse enters month control */\n onMonthMouseEnter?: (event: React.MouseEvent<HTMLButtonElement>, date: DateStringValue) => void;\n}\n\nexport interface CalendarBaseProps {\n __staticSelector?: string;\n\n /** Prevents focus shift when buttons are clicked */\n __preventFocus?: boolean;\n\n /** Determines whether date should be updated when year control is clicked */\n __updateDateOnYearSelect?: boolean;\n\n /** Determines whether date should be updated when month control is clicked */\n __updateDateOnMonthSelect?: boolean;\n\n /** Assigns function to set date to the given ref */\n __setDateRef?: React.RefObject<((date: DateStringValue) => void) | null>;\n\n /** Assigns function to set level to the given ref */\n __setLevelRef?: React.RefObject<((level: CalendarLevel) => void) | null>;\n\n /** Initial displayed date in uncontrolled mode */\n defaultDate?: DateStringValue | Date;\n\n /** Displayed date in controlled mode */\n date?: DateStringValue | Date;\n\n /** Called when date changes */\n onDateChange?: (date: DateStringValue) => void;\n\n /** Number of columns displayed next to each other @default 1 */\n numberOfColumns?: number;\n\n /** Number of columns to scroll with next/prev buttons, same as `numberOfColumns` if not set explicitly */\n columnsToScroll?: number;\n\n /** `aria-label` attributes for controls on different levels */\n ariaLabels?: CalendarAriaLabels;\n\n /** Next button `aria-label` */\n nextLabel?: string;\n\n /** Previous button `aria-label` */\n previousLabel?: string;\n\n /** Determines whether the calendar should take the full width of its container @default false */\n fullWidth?: boolean;\n\n /** Called when the next decade button is clicked */\n onNextDecade?: (date: DateStringValue) => void;\n\n /** Called when the previous decade button is clicked */\n onPreviousDecade?: (date: DateStringValue) => void;\n\n /** Called when the next year button is clicked */\n onNextYear?: (date: DateStringValue) => void;\n\n /** Called when the previous year button is clicked */\n onPreviousYear?: (date: DateStringValue) => void;\n\n /** Called when the next month button is clicked */\n onNextMonth?: (date: DateStringValue) => void;\n\n /** Called when the previous month button is clicked */\n onPreviousMonth?: (date: DateStringValue) => void;\n}\n\nexport interface CalendarProps\n extends\n BoxProps,\n CalendarSettings,\n CalendarBaseProps,\n StylesApiProps<CalendarFactory>,\n ElementProps<'div'> {\n /** Max level that user can go up to (decade, year, month) @default 'decade' */\n maxLevel?: CalendarLevel;\n\n /** Min level that user can go down to (decade, year, month) @default 'month' */\n minLevel?: CalendarLevel;\n\n /** Determines whether days should be static, static days can be used to display month if it is not expected that user will interact with the component in any way */\n static?: boolean;\n\n /** Enable enhanced keyboard navigation (Ctrl/Cmd + Arrow keys for year navigation, Ctrl/Cmd + Shift + Arrow keys for decade navigation, Y key to open year view) */\n enableKeyboardNavigation?: boolean;\n}\n\nexport type CalendarFactory = Factory<{\n props: CalendarProps;\n ref: HTMLDivElement;\n stylesNames: CalendarStylesNames;\n}>;\n\nconst defaultProps = {\n maxLevel: 'decade',\n minLevel: 'month',\n __updateDateOnYearSelect: true,\n __updateDateOnMonthSelect: true,\n enableKeyboardNavigation: true,\n} satisfies Partial<CalendarProps>;\n\nexport const Calendar = factory<CalendarFactory>((_props) => {\n const props = useProps('Calendar', defaultProps, _props);\n const {\n // CalendarLevel props\n vars,\n maxLevel,\n minLevel,\n defaultLevel,\n level,\n onLevelChange,\n date,\n defaultDate,\n onDateChange,\n numberOfColumns,\n columnsToScroll,\n ariaLabels,\n nextLabel,\n previousLabel,\n onYearSelect,\n onMonthSelect,\n onYearMouseEnter,\n onMonthMouseEnter,\n headerControlsOrder,\n __updateDateOnYearSelect,\n __updateDateOnMonthSelect,\n __setDateRef,\n __setLevelRef,\n\n // MonthLevelGroup props\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n monthLabelFormat,\n nextIcon,\n previousIcon,\n __onDayClick,\n __onDayMouseEnter,\n withCellSpacing,\n highlightToday,\n withWeekNumbers,\n\n // YearLevelGroup props\n monthsListFormat,\n getMonthControlProps,\n yearLabelFormat,\n\n // DecadeLevelGroup props\n yearsListFormat,\n getYearControlProps,\n decadeLabelFormat,\n\n // Other props\n classNames,\n styles,\n unstyled,\n minDate,\n maxDate,\n locale,\n __staticSelector,\n size,\n __preventFocus,\n __stopPropagation,\n onNextDecade,\n onPreviousDecade,\n onNextYear,\n onPreviousYear,\n onNextMonth,\n onPreviousMonth,\n static: isStatic,\n enableKeyboardNavigation,\n fullWidth,\n attributes,\n ref,\n ...others\n } = props;\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<CalendarFactory>({\n classNames,\n styles,\n props,\n });\n\n const [_level, setLevel] = useUncontrolled({\n value: level ? clampLevel(level, minLevel, maxLevel) : undefined,\n defaultValue: defaultLevel ? clampLevel(defaultLevel, minLevel, maxLevel) : undefined,\n finalValue: clampLevel(undefined, minLevel, maxLevel),\n onChange: onLevelChange,\n });\n\n const [_date, setDate] = useUncontrolledDates({\n type: 'default',\n value: toDateString(date),\n defaultValue: toDateString(defaultDate),\n onChange: onDateChange as any,\n });\n\n useImperativeHandle(__setDateRef, () => (date: DateStringValue) => {\n setDate(date);\n });\n\n useImperativeHandle(__setLevelRef, () => (level: CalendarLevel) => {\n setLevel(level);\n });\n\n const stylesApiProps = {\n __staticSelector: __staticSelector || 'Calendar',\n styles: resolvedStyles,\n classNames: resolvedClassNames,\n unstyled,\n size,\n attributes,\n };\n\n const _columnsToScroll = columnsToScroll || numberOfColumns || 1;\n\n const fallbackDateRef = useRef<DateStringValue | null>(null);\n if (fallbackDateRef.current === null) {\n const now = new Date();\n fallbackDateRef.current = (\n minDate && dayjs(now).isAfter(minDate) ? minDate : dayjs(now).format('YYYY-MM-DD')\n ) as DateStringValue;\n }\n const currentDate = _date || fallbackDateRef.current;\n\n const handleNextMonth = () => {\n const nextDate = dayjs(currentDate).add(_columnsToScroll, 'month').format('YYYY-MM-DD');\n onNextMonth?.(nextDate);\n setDate(nextDate);\n };\n\n const handlePreviousMonth = () => {\n const nextDate = dayjs(currentDate).subtract(_columnsToScroll, 'month').format('YYYY-MM-DD');\n onPreviousMonth?.(nextDate);\n setDate(nextDate);\n };\n\n const handleNextYear = () => {\n const nextDate = dayjs(currentDate).add(_columnsToScroll, 'year').format('YYYY-MM-DD');\n onNextYear?.(nextDate);\n setDate(nextDate);\n };\n\n const handlePreviousYear = () => {\n const nextDate = dayjs(currentDate).subtract(_columnsToScroll, 'year').format('YYYY-MM-DD');\n onPreviousYear?.(nextDate);\n setDate(nextDate);\n };\n\n const handleNextDecade = () => {\n const nextDate = dayjs(currentDate)\n .add(10 * _columnsToScroll, 'year')\n .format('YYYY-MM-DD');\n onNextDecade?.(nextDate);\n setDate(nextDate);\n };\n\n const handlePreviousDecade = () => {\n const nextDate = dayjs(currentDate)\n .subtract(10 * _columnsToScroll, 'year')\n .format('YYYY-MM-DD');\n onPreviousDecade?.(nextDate);\n setDate(nextDate);\n };\n\n const calendarRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!enableKeyboardNavigation || isStatic) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!calendarRef.current?.contains(document.activeElement)) {\n return;\n }\n\n const isCtrlOrCmd = event.ctrlKey || event.metaKey;\n const isShift = event.shiftKey;\n\n switch (event.key) {\n case 'ArrowUp':\n if (isCtrlOrCmd && isShift) {\n event.preventDefault();\n handlePreviousDecade();\n } else if (isCtrlOrCmd) {\n event.preventDefault();\n handlePreviousYear();\n }\n break;\n\n case 'ArrowDown':\n if (isCtrlOrCmd && isShift) {\n event.preventDefault();\n handleNextDecade();\n } else if (isCtrlOrCmd) {\n event.preventDefault();\n handleNextYear();\n }\n break;\n\n case 'y':\n case 'Y':\n if (_level === 'month') {\n event.preventDefault();\n setLevel('year');\n }\n break;\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n enableKeyboardNavigation,\n isStatic,\n _level,\n handleNextYear,\n handlePreviousYear,\n handleNextDecade,\n handlePreviousDecade,\n ]);\n\n return (\n <Box\n ref={useMergedRef(calendarRef, ref)}\n size={size}\n data-calendar\n data-full-width={fullWidth || undefined}\n {...others}\n >\n {_level === 'month' && (\n <MonthLevelGroup\n month={currentDate}\n minDate={minDate}\n maxDate={maxDate}\n firstDayOfWeek={firstDayOfWeek}\n weekdayFormat={weekdayFormat}\n weekendDays={weekendDays}\n getDayProps={getDayProps}\n excludeDate={excludeDate}\n renderDay={renderDay}\n hideOutsideDates={hideOutsideDates}\n hideWeekdays={hideWeekdays}\n getDayAriaLabel={getDayAriaLabel}\n onNext={handleNextMonth}\n onPrevious={handlePreviousMonth}\n hasNextLevel={maxLevel !== 'month'}\n onLevelClick={() => setLevel('year')}\n numberOfColumns={numberOfColumns}\n locale={locale}\n levelControlAriaLabel={ariaLabels?.monthLevelControl}\n nextLabel={ariaLabels?.nextMonth ?? nextLabel}\n nextIcon={nextIcon}\n previousLabel={ariaLabels?.previousMonth ?? previousLabel}\n previousIcon={previousIcon}\n monthLabelFormat={monthLabelFormat}\n __onDayClick={__onDayClick}\n __onDayMouseEnter={__onDayMouseEnter}\n __preventFocus={__preventFocus}\n __stopPropagation={__stopPropagation}\n static={isStatic}\n withCellSpacing={withCellSpacing}\n highlightToday={highlightToday}\n withWeekNumbers={withWeekNumbers}\n headerControlsOrder={headerControlsOrder}\n fullWidth={fullWidth}\n {...stylesApiProps}\n />\n )}\n\n {_level === 'year' && (\n <YearLevelGroup\n year={currentDate}\n numberOfColumns={numberOfColumns}\n minDate={minDate}\n maxDate={maxDate}\n monthsListFormat={monthsListFormat}\n getMonthControlProps={getMonthControlProps}\n locale={locale}\n onNext={handleNextYear}\n onPrevious={handlePreviousYear}\n hasNextLevel={maxLevel !== 'month' && maxLevel !== 'year'}\n onLevelClick={() => setLevel('decade')}\n levelControlAriaLabel={ariaLabels?.yearLevelControl}\n nextLabel={ariaLabels?.nextYear ?? nextLabel}\n nextIcon={nextIcon}\n previousLabel={ariaLabels?.previousYear ?? previousLabel}\n previousIcon={previousIcon}\n yearLabelFormat={yearLabelFormat}\n __onControlMouseEnter={onMonthMouseEnter}\n __onControlClick={(_event, payload) => {\n __updateDateOnMonthSelect && setDate(payload);\n setLevel(clampLevel('month', minLevel, maxLevel));\n onMonthSelect?.(payload);\n }}\n __preventFocus={__preventFocus}\n __stopPropagation={__stopPropagation}\n withCellSpacing={withCellSpacing}\n headerControlsOrder={headerControlsOrder}\n fullWidth={fullWidth}\n {...stylesApiProps}\n />\n )}\n\n {_level === 'decade' && (\n <DecadeLevelGroup\n decade={currentDate}\n minDate={minDate}\n maxDate={maxDate}\n yearsListFormat={yearsListFormat}\n getYearControlProps={getYearControlProps}\n locale={locale}\n onNext={handleNextDecade}\n onPrevious={handlePreviousDecade}\n numberOfColumns={numberOfColumns}\n nextLabel={ariaLabels?.nextDecade ?? nextLabel}\n nextIcon={nextIcon}\n previousLabel={ariaLabels?.previousDecade ?? previousLabel}\n previousIcon={previousIcon}\n decadeLabelFormat={decadeLabelFormat}\n __onControlMouseEnter={onYearMouseEnter}\n __onControlClick={(_event, payload) => {\n __updateDateOnYearSelect && setDate(payload);\n setLevel(clampLevel('year', minLevel, maxLevel));\n onYearSelect?.(payload);\n }}\n __preventFocus={__preventFocus}\n __stopPropagation={__stopPropagation}\n withCellSpacing={withCellSpacing}\n headerControlsOrder={headerControlsOrder}\n fullWidth={fullWidth}\n {...stylesApiProps}\n />\n )}\n </Box>\n );\n});\n\nCalendar.classes = {\n ...DecadeLevelGroup.classes,\n ...YearLevelGroup.classes,\n ...MonthLevelGroup.classes,\n};\nCalendar.displayName = '@mantine/dates/Calendar';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Calendar.cjs","names":["clampLevel","useUncontrolledDates","toDateString","Box","MonthLevelGroup","YearLevelGroup","DecadeLevelGroup"],"sources":["../../../src/components/Calendar/Calendar.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useEffect, useImperativeHandle, useRef } from 'react';\nimport {\n Box,\n BoxProps,\n ElementProps,\n Factory,\n factory,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n} from '@mantine/core';\nimport { useMergedRef, useUncontrolled } from '@mantine/hooks';\nimport { useUncontrolledDates } from '../../hooks';\nimport { CalendarLevel, DateStringValue } from '../../types';\nimport { toDateString } from '../../utils';\nimport { DecadeLevelSettings } from '../DecadeLevel';\nimport { DecadeLevelGroup, DecadeLevelGroupStylesNames } from '../DecadeLevelGroup';\nimport { MonthLevelSettings } from '../MonthLevel';\nimport { MonthLevelGroup, MonthLevelGroupStylesNames } from '../MonthLevelGroup';\nimport { YearLevelSettings } from '../YearLevel';\nimport { YearLevelGroup, YearLevelGroupStylesNames } from '../YearLevelGroup';\nimport { clampLevel } from './clamp-level/clamp-level';\n\nexport type CalendarStylesNames =\n | MonthLevelGroupStylesNames\n | YearLevelGroupStylesNames\n | DecadeLevelGroupStylesNames;\n\nexport interface CalendarAriaLabels {\n monthLevelControl?: string;\n yearLevelControl?: string;\n\n nextMonth?: string;\n previousMonth?: string;\n\n nextYear?: string;\n previousYear?: string;\n\n nextDecade?: string;\n previousDecade?: string;\n}\n\ntype OmittedSettings =\n | 'onNext'\n | 'onPrevious'\n | 'onLevelClick'\n | 'withNext'\n | 'withPrevious'\n | 'nextDisabled'\n | 'previousDisabled'\n | 'hasNextLevel';\n\nexport interface CalendarSettings\n extends\n Omit<DecadeLevelSettings, OmittedSettings>,\n Omit<YearLevelSettings, OmittedSettings>,\n Omit<MonthLevelSettings, OmittedSettings> {\n /** Initial displayed level in uncontrolled mode */\n defaultLevel?: CalendarLevel;\n\n /** Current displayed level displayed in controlled mode */\n level?: CalendarLevel;\n\n /** Called when level changes */\n onLevelChange?: (level: CalendarLevel) => void;\n\n /** Called when user selects year */\n onYearSelect?: (date: DateStringValue) => void;\n\n /** Called when user selects month */\n onMonthSelect?: (date: DateStringValue) => void;\n\n /** Called when mouse enters year control */\n onYearMouseEnter?: (event: React.MouseEvent<HTMLButtonElement>, date: DateStringValue) => void;\n\n /** Called when mouse enters month control */\n onMonthMouseEnter?: (event: React.MouseEvent<HTMLButtonElement>, date: DateStringValue) => void;\n}\n\nexport interface CalendarBaseProps {\n __staticSelector?: string;\n\n /** Prevents focus shift when buttons are clicked */\n __preventFocus?: boolean;\n\n /** Determines whether date should be updated when year control is clicked */\n __updateDateOnYearSelect?: boolean;\n\n /** Determines whether date should be updated when month control is clicked */\n __updateDateOnMonthSelect?: boolean;\n\n /** Assigns function to set date to the given ref */\n __setDateRef?: React.RefObject<((date: DateStringValue) => void) | null>;\n\n /** Assigns function to set level to the given ref */\n __setLevelRef?: React.RefObject<((level: CalendarLevel) => void) | null>;\n\n /** Initial displayed date in uncontrolled mode */\n defaultDate?: DateStringValue | Date;\n\n /** Displayed date in controlled mode */\n date?: DateStringValue | Date;\n\n /** Called when date changes */\n onDateChange?: (date: DateStringValue) => void;\n\n /** Number of columns displayed next to each other @default 1 */\n numberOfColumns?: number;\n\n /** Number of columns to scroll with next/prev buttons, same as `numberOfColumns` if not set explicitly */\n columnsToScroll?: number;\n\n /** `aria-label` attributes for controls on different levels */\n ariaLabels?: CalendarAriaLabels;\n\n /** Next button `aria-label` */\n nextLabel?: string;\n\n /** Previous button `aria-label` */\n previousLabel?: string;\n\n /** Determines whether the calendar should take the full width of its container @default false */\n fullWidth?: boolean;\n\n /** Called when the next decade button is clicked */\n onNextDecade?: (date: DateStringValue) => void;\n\n /** Called when the previous decade button is clicked */\n onPreviousDecade?: (date: DateStringValue) => void;\n\n /** Called when the next year button is clicked */\n onNextYear?: (date: DateStringValue) => void;\n\n /** Called when the previous year button is clicked */\n onPreviousYear?: (date: DateStringValue) => void;\n\n /** Called when the next month button is clicked */\n onNextMonth?: (date: DateStringValue) => void;\n\n /** Called when the previous month button is clicked */\n onPreviousMonth?: (date: DateStringValue) => void;\n}\n\nexport interface CalendarProps\n extends\n BoxProps,\n CalendarSettings,\n CalendarBaseProps,\n StylesApiProps<CalendarFactory>,\n ElementProps<'div'> {\n /** Max level that user can go up to (decade, year, month) @default 'decade' */\n maxLevel?: CalendarLevel;\n\n /** Min level that user can go down to (decade, year, month) @default 'month' */\n minLevel?: CalendarLevel;\n\n /** Determines whether days should be static, static days can be used to display month if it is not expected that user will interact with the component in any way */\n static?: boolean;\n\n /** Enable enhanced keyboard navigation (Ctrl/Cmd + Arrow keys for year navigation, Ctrl/Cmd + Shift + Arrow keys for decade navigation, Y key to open year view) */\n enableKeyboardNavigation?: boolean;\n}\n\nexport type CalendarFactory = Factory<{\n props: CalendarProps;\n ref: HTMLDivElement;\n stylesNames: CalendarStylesNames;\n}>;\n\nconst defaultProps = {\n maxLevel: 'decade',\n minLevel: 'month',\n __updateDateOnYearSelect: true,\n __updateDateOnMonthSelect: true,\n enableKeyboardNavigation: true,\n} satisfies Partial<CalendarProps>;\n\nexport const Calendar = factory<CalendarFactory>((_props) => {\n const props = useProps('Calendar', defaultProps, _props);\n const {\n // CalendarLevel props\n vars,\n maxLevel,\n minLevel,\n defaultLevel,\n level,\n onLevelChange,\n date,\n defaultDate,\n onDateChange,\n numberOfColumns,\n columnsToScroll,\n ariaLabels,\n nextLabel,\n previousLabel,\n onYearSelect,\n onMonthSelect,\n onYearMouseEnter,\n onMonthMouseEnter,\n headerControlsOrder,\n __updateDateOnYearSelect,\n __updateDateOnMonthSelect,\n __setDateRef,\n __setLevelRef,\n\n // MonthLevelGroup props\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n monthLabelFormat,\n nextIcon,\n previousIcon,\n __onDayClick,\n __onDayMouseEnter,\n withCellSpacing,\n highlightToday,\n withWeekNumbers,\n\n // YearLevelGroup props\n monthsListFormat,\n getMonthControlProps,\n yearLabelFormat,\n\n // DecadeLevelGroup props\n yearsListFormat,\n getYearControlProps,\n decadeLabelFormat,\n\n // Other props\n classNames,\n styles,\n unstyled,\n minDate,\n maxDate,\n locale,\n __staticSelector,\n size,\n __preventFocus,\n __stopPropagation,\n onNextDecade,\n onPreviousDecade,\n onNextYear,\n onPreviousYear,\n onNextMonth,\n onPreviousMonth,\n static: isStatic,\n enableKeyboardNavigation,\n fullWidth,\n attributes,\n ref,\n ...others\n } = props;\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<CalendarFactory>({\n classNames,\n styles,\n props,\n });\n\n const [_level, setLevel] = useUncontrolled({\n value: level ? clampLevel(level, minLevel, maxLevel) : undefined,\n defaultValue: defaultLevel ? clampLevel(defaultLevel, minLevel, maxLevel) : undefined,\n finalValue: clampLevel(undefined, minLevel, maxLevel),\n onChange: onLevelChange,\n });\n\n const [_date, setDate] = useUncontrolledDates({\n type: 'default',\n value: toDateString(date),\n defaultValue: toDateString(defaultDate),\n onChange: onDateChange as any,\n });\n\n useImperativeHandle(__setDateRef, () => (date: DateStringValue) => {\n setDate(date);\n });\n\n useImperativeHandle(__setLevelRef, () => (level: CalendarLevel) => {\n setLevel(level);\n });\n\n const stylesApiProps = {\n __staticSelector: __staticSelector || 'Calendar',\n styles: resolvedStyles,\n classNames: resolvedClassNames,\n unstyled,\n size,\n attributes,\n };\n\n const _columnsToScroll = columnsToScroll || numberOfColumns || 1;\n\n const fallbackDateRef = useRef<DateStringValue | null>(null);\n if (fallbackDateRef.current === null) {\n const now = new Date();\n fallbackDateRef.current = (\n minDate && dayjs(now).isAfter(minDate) ? minDate : dayjs(now).format('YYYY-MM-DD')\n ) as DateStringValue;\n }\n const currentDate = _date || fallbackDateRef.current;\n\n const handleNextMonth = () => {\n const nextDate = dayjs(currentDate).add(_columnsToScroll, 'month').format('YYYY-MM-DD');\n onNextMonth?.(nextDate);\n setDate(nextDate);\n };\n\n const handlePreviousMonth = () => {\n const nextDate = dayjs(currentDate).subtract(_columnsToScroll, 'month').format('YYYY-MM-DD');\n onPreviousMonth?.(nextDate);\n setDate(nextDate);\n };\n\n const handleNextYear = () => {\n const nextDate = dayjs(currentDate).add(_columnsToScroll, 'year').format('YYYY-MM-DD');\n onNextYear?.(nextDate);\n setDate(nextDate);\n };\n\n const handlePreviousYear = () => {\n const nextDate = dayjs(currentDate).subtract(_columnsToScroll, 'year').format('YYYY-MM-DD');\n onPreviousYear?.(nextDate);\n setDate(nextDate);\n };\n\n const handleNextDecade = () => {\n const nextDate = dayjs(currentDate)\n .add(10 * _columnsToScroll, 'year')\n .format('YYYY-MM-DD');\n onNextDecade?.(nextDate);\n setDate(nextDate);\n };\n\n const handlePreviousDecade = () => {\n const nextDate = dayjs(currentDate)\n .subtract(10 * _columnsToScroll, 'year')\n .format('YYYY-MM-DD');\n onPreviousDecade?.(nextDate);\n setDate(nextDate);\n };\n\n const calendarRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!enableKeyboardNavigation || isStatic) {\n return;\n }\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (!calendarRef.current?.contains(document.activeElement)) {\n return;\n }\n\n const isCtrlOrCmd = event.ctrlKey || event.metaKey;\n const isShift = event.shiftKey;\n\n switch (event.key) {\n case 'ArrowUp':\n if (isCtrlOrCmd && isShift) {\n event.preventDefault();\n handlePreviousDecade();\n } else if (isCtrlOrCmd) {\n event.preventDefault();\n handlePreviousYear();\n }\n break;\n\n case 'ArrowDown':\n if (isCtrlOrCmd && isShift) {\n event.preventDefault();\n handleNextDecade();\n } else if (isCtrlOrCmd) {\n event.preventDefault();\n handleNextYear();\n }\n break;\n\n case 'y':\n case 'Y':\n if (_level === 'month') {\n event.preventDefault();\n setLevel('year');\n }\n break;\n }\n };\n\n document.addEventListener('keydown', handleKeyDown);\n\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [\n enableKeyboardNavigation,\n isStatic,\n _level,\n handleNextYear,\n handlePreviousYear,\n handleNextDecade,\n handlePreviousDecade,\n ]);\n\n return (\n <Box\n ref={useMergedRef(calendarRef, ref)}\n size={size}\n data-calendar\n data-full-width={fullWidth || undefined}\n {...others}\n >\n {_level === 'month' && (\n <MonthLevelGroup\n month={currentDate}\n minDate={minDate}\n maxDate={maxDate}\n firstDayOfWeek={firstDayOfWeek}\n weekdayFormat={weekdayFormat}\n weekendDays={weekendDays}\n getDayProps={getDayProps}\n excludeDate={excludeDate}\n renderDay={renderDay}\n hideOutsideDates={hideOutsideDates}\n hideWeekdays={hideWeekdays}\n getDayAriaLabel={getDayAriaLabel}\n onNext={handleNextMonth}\n onPrevious={handlePreviousMonth}\n hasNextLevel={maxLevel !== 'month'}\n onLevelClick={() => setLevel('year')}\n numberOfColumns={numberOfColumns}\n locale={locale}\n levelControlAriaLabel={ariaLabels?.monthLevelControl}\n nextLabel={ariaLabels?.nextMonth ?? nextLabel}\n nextIcon={nextIcon}\n previousLabel={ariaLabels?.previousMonth ?? previousLabel}\n previousIcon={previousIcon}\n monthLabelFormat={monthLabelFormat}\n __onDayClick={__onDayClick}\n __onDayMouseEnter={__onDayMouseEnter}\n __preventFocus={__preventFocus}\n __stopPropagation={__stopPropagation}\n static={isStatic}\n withCellSpacing={withCellSpacing}\n highlightToday={highlightToday}\n withWeekNumbers={withWeekNumbers}\n headerControlsOrder={headerControlsOrder}\n fullWidth={fullWidth}\n {...stylesApiProps}\n />\n )}\n\n {_level === 'year' && (\n <YearLevelGroup\n year={currentDate}\n numberOfColumns={numberOfColumns}\n minDate={minDate}\n maxDate={maxDate}\n monthsListFormat={monthsListFormat}\n getMonthControlProps={getMonthControlProps}\n locale={locale}\n onNext={handleNextYear}\n onPrevious={handlePreviousYear}\n hasNextLevel={maxLevel !== 'month' && maxLevel !== 'year'}\n onLevelClick={() => setLevel('decade')}\n levelControlAriaLabel={ariaLabels?.yearLevelControl}\n nextLabel={ariaLabels?.nextYear ?? nextLabel}\n nextIcon={nextIcon}\n previousLabel={ariaLabels?.previousYear ?? previousLabel}\n previousIcon={previousIcon}\n yearLabelFormat={yearLabelFormat}\n __onControlMouseEnter={onMonthMouseEnter}\n __onControlClick={(_event, payload) => {\n __updateDateOnMonthSelect && setDate(payload);\n setLevel(clampLevel('month', minLevel, maxLevel));\n onMonthSelect?.(payload);\n }}\n __preventFocus={__preventFocus}\n __stopPropagation={__stopPropagation}\n withCellSpacing={withCellSpacing}\n headerControlsOrder={headerControlsOrder}\n fullWidth={fullWidth}\n {...stylesApiProps}\n />\n )}\n\n {_level === 'decade' && (\n <DecadeLevelGroup\n decade={currentDate}\n minDate={minDate}\n maxDate={maxDate}\n yearsListFormat={yearsListFormat}\n getYearControlProps={getYearControlProps}\n locale={locale}\n onNext={handleNextDecade}\n onPrevious={handlePreviousDecade}\n numberOfColumns={numberOfColumns}\n nextLabel={ariaLabels?.nextDecade ?? nextLabel}\n nextIcon={nextIcon}\n previousLabel={ariaLabels?.previousDecade ?? previousLabel}\n previousIcon={previousIcon}\n decadeLabelFormat={decadeLabelFormat}\n __onControlMouseEnter={onYearMouseEnter}\n __onControlClick={(_event, payload) => {\n __updateDateOnYearSelect && setDate(payload);\n setLevel(clampLevel('year', minLevel, maxLevel));\n onYearSelect?.(payload);\n }}\n __preventFocus={__preventFocus}\n __stopPropagation={__stopPropagation}\n withCellSpacing={withCellSpacing}\n headerControlsOrder={headerControlsOrder}\n fullWidth={fullWidth}\n {...stylesApiProps}\n />\n )}\n </Box>\n );\n});\n\nCalendar.classes = {\n ...DecadeLevelGroup.classes,\n ...YearLevelGroup.classes,\n ...MonthLevelGroup.classes,\n};\nCalendar.displayName = '@mantine/dates/Calendar';\n\nexport namespace Calendar {\n export type Props = CalendarProps;\n export type StylesNames = CalendarStylesNames;\n export type AriaLabels = CalendarAriaLabels;\n export type Settings = CalendarSettings;\n export type BaseProps = CalendarBaseProps;\n export type Factory = CalendarFactory;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarHeader.cjs","names":["UnstyledButton","AccordionChevron","Box","classes"],"sources":["../../../src/components/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["import {\n AccordionChevron,\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getFontSize,\n getSize,\n MantineSize,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport classes from './CalendarHeader.module.css';\n\nexport type CalendarHeaderStylesNames =\n | 'calendarHeader'\n | 'calendarHeaderControl'\n | 'calendarHeaderLevel'\n | 'calendarHeaderControlIcon';\nexport type CalendarHeaderCssVariables = {\n calendarHeader: '--dch-control-size' | '--dch-fz';\n};\n\nexport interface CalendarHeaderSettings {\n __preventFocus?: boolean;\n\n /** Determines whether propagation for `Escape` key should be stopped */\n __stopPropagation?: boolean;\n\n /** Change next icon */\n nextIcon?: React.ReactNode;\n\n /** Change previous icon */\n previousIcon?: React.ReactNode;\n\n /** Next button `aria-label` */\n nextLabel?: string;\n\n /** Previous button `aria-label` */\n previousLabel?: string;\n\n /** Called when the next button is clicked */\n onNext?: () => void;\n\n /** Called when the previous button is clicked */\n onPrevious?: () => void;\n\n /** Called when the level button is clicked */\n onLevelClick?: () => void;\n\n /** Disables next control */\n nextDisabled?: boolean;\n\n /** Disables previous control */\n previousDisabled?: boolean;\n\n /** Determines whether next level button should be enabled @default true */\n hasNextLevel?: boolean;\n\n /** Determines whether next control should be rendered @default true */\n withNext?: boolean;\n\n /** Determines whether previous control should be rendered @default true */\n withPrevious?: boolean;\n\n /** Component size */\n size?: MantineSize;\n\n /** Controls order @default ['previous', 'level', 'next'] */\n headerControlsOrder?: ('previous' | 'next' | 'level')[];\n\n /** Determines whether the header should take the full width of its container @default false */\n fullWidth?: boolean;\n}\n\nexport interface CalendarHeaderProps\n extends\n BoxProps,\n CalendarHeaderSettings,\n StylesApiProps<CalendarHeaderFactory>,\n ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Label displayed between next and previous buttons */\n label: React.ReactNode;\n\n /** Level control `aria-label` */\n levelControlAriaLabel?: string;\n}\n\nexport type CalendarHeaderFactory = Factory<{\n props: CalendarHeaderProps;\n ref: HTMLDivElement;\n stylesNames: CalendarHeaderStylesNames;\n vars: CalendarHeaderCssVariables;\n}>;\n\nconst defaultProps = {\n hasNextLevel: true,\n withNext: true,\n withPrevious: true,\n headerControlsOrder: ['previous', 'level', 'next'],\n} satisfies Partial<CalendarHeaderProps>;\n\nconst varsResolver = createVarsResolver<CalendarHeaderFactory>((_, { size }) => ({\n calendarHeader: {\n '--dch-control-size': getSize(size, 'dch-control-size'),\n '--dch-fz': getFontSize(size),\n },\n}));\n\nexport const CalendarHeader = factory<CalendarHeaderFactory>((_props) => {\n const props = useProps('CalendarHeader', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n label,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n levelControlAriaLabel,\n withNext,\n withPrevious,\n headerControlsOrder,\n fullWidth,\n __staticSelector,\n __preventFocus,\n __stopPropagation,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<CalendarHeaderFactory>({\n name: __staticSelector || 'CalendarHeader',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'calendarHeader',\n });\n\n const preventFocus = __preventFocus\n ? (event: React.MouseEvent<HTMLElement>) => event.preventDefault()\n : undefined;\n\n const previousControl = withPrevious && (\n <UnstyledButton\n {...getStyles('calendarHeaderControl')}\n key=\"previous\"\n data-direction=\"previous\"\n aria-label={previousLabel}\n onClick={onPrevious}\n unstyled={unstyled}\n onMouseDown={preventFocus}\n disabled={previousDisabled}\n data-disabled={previousDisabled || undefined}\n tabIndex={__preventFocus || previousDisabled ? -1 : 0}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n >\n {previousIcon || (\n <AccordionChevron\n {...getStyles('calendarHeaderControlIcon')}\n data-direction=\"previous\"\n size=\"45%\"\n />\n )}\n </UnstyledButton>\n );\n\n const levelControl = (\n <UnstyledButton\n component={hasNextLevel ? 'button' : 'div'}\n {...getStyles('calendarHeaderLevel')}\n key=\"level\"\n onClick={hasNextLevel ? onLevelClick : undefined}\n unstyled={unstyled}\n onMouseDown={hasNextLevel ? preventFocus : undefined}\n disabled={!hasNextLevel}\n data-static={!hasNextLevel || undefined}\n aria-label={levelControlAriaLabel}\n tabIndex={__preventFocus || !hasNextLevel ? -1 : 0}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n >\n {label}\n </UnstyledButton>\n );\n\n const nextControl = withNext && (\n <UnstyledButton\n {...getStyles('calendarHeaderControl')}\n key=\"next\"\n data-direction=\"next\"\n aria-label={nextLabel}\n onClick={onNext}\n unstyled={unstyled}\n onMouseDown={preventFocus}\n disabled={nextDisabled}\n data-disabled={nextDisabled || undefined}\n tabIndex={__preventFocus || nextDisabled ? -1 : 0}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n >\n {nextIcon || (\n <AccordionChevron\n {...getStyles('calendarHeaderControlIcon')}\n data-direction=\"next\"\n size=\"45%\"\n />\n )}\n </UnstyledButton>\n );\n\n const controls = headerControlsOrder.map((control) => {\n if (control === 'previous') {\n return previousControl;\n }\n if (control === 'level') {\n return levelControl;\n }\n if (control === 'next') {\n return nextControl;\n }\n return null;\n });\n\n return (\n <Box {...getStyles('calendarHeader')} data-full-width={fullWidth || undefined} {...others}>\n {controls}\n </Box>\n );\n});\n\nCalendarHeader.classes = classes;\nCalendarHeader.varsResolver = varsResolver;\nCalendarHeader.displayName = '@mantine/dates/CalendarHeader';\n"],"mappings":";;;;;;;AAqGA,MAAM,eAAe;CACnB,cAAc;CACd,UAAU;CACV,cAAc;CACd,qBAAqB;EAAC;EAAY;EAAS;EAAO;CACnD;AAED,MAAM,gBAAA,GAAA,cAAA,qBAA0D,GAAG,EAAE,YAAY,EAC/E,gBAAgB;CACd,uBAAA,GAAA,cAAA,SAA8B,MAAM,mBAAmB;CACvD,aAAA,GAAA,cAAA,aAAwB,KAAK;CAC9B,EACF,EAAE;AAEH,MAAa,kBAAA,GAAA,cAAA,UAAiD,WAAW;CACvE,MAAM,SAAA,GAAA,cAAA,UAAiB,kBAAkB,cAAc,OAAO;CAC9D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,UACA,cACA,WACA,eACA,QACA,YACA,cACA,OACA,cACA,kBACA,cACA,uBACA,UACA,cACA,qBACA,WACA,kBACA,gBACA,mBACA,YACA,GAAG,WACD;CAEJ,MAAM,aAAA,GAAA,cAAA,WAA6C;EACjD,MAAM,oBAAoB;EAC1B,SAAA,8BAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACf,CAAC;CAEF,MAAM,eAAe,kBAChB,UAAyC,MAAM,gBAAgB,GAChE,KAAA;CAEJ,MAAM,kBAAkB,gBACtB,iBAAA,GAAA,MAAA,eAACA,cAAAA,gBAAD;EACE,GAAI,UAAU,wBAAwB;EACtC,KAAI;EACJ,kBAAe;EACf,cAAY;EACZ,SAAS;EACC;EACV,aAAa;EACb,UAAU;EACV,iBAAe,oBAAoB,KAAA;EACnC,UAAU,kBAAkB,mBAAmB,KAAK;EACpD,iCAA+B,qBAAqB,KAAA;EASrC,EAPd,gBACC,iBAAA,GAAA,kBAAA,KAACC,cAAAA,kBAAD;EACE,GAAI,UAAU,4BAA4B;EAC1C,kBAAe;EACf,MAAK;EACL,CAAA,CAEW;CAGnB,MAAM,eACJ,iBAAA,GAAA,MAAA,eAACD,cAAAA,gBAAD;EACE,WAAW,eAAe,WAAW;EACrC,GAAI,UAAU,sBAAsB;EACpC,KAAI;EACJ,SAAS,eAAe,eAAe,KAAA;EAC7B;EACV,aAAa,eAAe,eAAe,KAAA;EAC3C,UAAU,CAAC;EACX,eAAa,CAAC,gBAAgB,KAAA;EAC9B,cAAY;EACZ,UAAU,kBAAkB,CAAC,eAAe,KAAK;EACjD,iCAA+B,qBAAqB,KAAA;EAGrC,EADd,MACc;CAGnB,MAAM,cAAc,YAClB,iBAAA,GAAA,MAAA,eAACA,cAAAA,gBAAD;EACE,GAAI,UAAU,wBAAwB;EACtC,KAAI;EACJ,kBAAe;EACf,cAAY;EACZ,SAAS;EACC;EACV,aAAa;EACb,UAAU;EACV,iBAAe,gBAAgB,KAAA;EAC/B,UAAU,kBAAkB,eAAe,KAAK;EAChD,iCAA+B,qBAAqB,KAAA;EASrC,EAPd,YACC,iBAAA,GAAA,kBAAA,KAACC,cAAAA,kBAAD;EACE,GAAI,UAAU,4BAA4B;EAC1C,kBAAe;EACf,MAAK;EACL,CAAA,CAEW;CAGnB,MAAM,WAAW,oBAAoB,KAAK,YAAY;AACpD,MAAI,YAAY,WACd,QAAO;AAET,MAAI,YAAY,QACd,QAAO;AAET,MAAI,YAAY,OACd,QAAO;AAET,SAAO;GACP;AAEF,QACE,iBAAA,GAAA,kBAAA,KAACC,cAAAA,KAAD;EAAK,GAAI,UAAU,iBAAiB;EAAE,mBAAiB,aAAa,KAAA;EAAW,GAAI;YAChF;EACG,CAAA;EAER;AAEF,eAAe,UAAUC,8BAAAA;AACzB,eAAe,eAAe;AAC9B,eAAe,cAAc"}
|
|
1
|
+
{"version":3,"file":"CalendarHeader.cjs","names":["UnstyledButton","AccordionChevron","Box","classes"],"sources":["../../../src/components/CalendarHeader/CalendarHeader.tsx"],"sourcesContent":["import {\n AccordionChevron,\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getFontSize,\n getSize,\n MantineSize,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport classes from './CalendarHeader.module.css';\n\nexport type CalendarHeaderStylesNames =\n | 'calendarHeader'\n | 'calendarHeaderControl'\n | 'calendarHeaderLevel'\n | 'calendarHeaderControlIcon';\nexport type CalendarHeaderCssVariables = {\n calendarHeader: '--dch-control-size' | '--dch-fz';\n};\n\nexport interface CalendarHeaderSettings {\n __preventFocus?: boolean;\n\n /** Determines whether propagation for `Escape` key should be stopped */\n __stopPropagation?: boolean;\n\n /** Change next icon */\n nextIcon?: React.ReactNode;\n\n /** Change previous icon */\n previousIcon?: React.ReactNode;\n\n /** Next button `aria-label` */\n nextLabel?: string;\n\n /** Previous button `aria-label` */\n previousLabel?: string;\n\n /** Called when the next button is clicked */\n onNext?: () => void;\n\n /** Called when the previous button is clicked */\n onPrevious?: () => void;\n\n /** Called when the level button is clicked */\n onLevelClick?: () => void;\n\n /** Disables next control */\n nextDisabled?: boolean;\n\n /** Disables previous control */\n previousDisabled?: boolean;\n\n /** Determines whether next level button should be enabled @default true */\n hasNextLevel?: boolean;\n\n /** Determines whether next control should be rendered @default true */\n withNext?: boolean;\n\n /** Determines whether previous control should be rendered @default true */\n withPrevious?: boolean;\n\n /** Component size */\n size?: MantineSize;\n\n /** Controls order @default ['previous', 'level', 'next'] */\n headerControlsOrder?: ('previous' | 'next' | 'level')[];\n\n /** Determines whether the header should take the full width of its container @default false */\n fullWidth?: boolean;\n}\n\nexport interface CalendarHeaderProps\n extends\n BoxProps,\n CalendarHeaderSettings,\n StylesApiProps<CalendarHeaderFactory>,\n ElementProps<'div'> {\n __staticSelector?: string;\n\n /** Label displayed between next and previous buttons */\n label: React.ReactNode;\n\n /** Level control `aria-label` */\n levelControlAriaLabel?: string;\n}\n\nexport type CalendarHeaderFactory = Factory<{\n props: CalendarHeaderProps;\n ref: HTMLDivElement;\n stylesNames: CalendarHeaderStylesNames;\n vars: CalendarHeaderCssVariables;\n}>;\n\nconst defaultProps = {\n hasNextLevel: true,\n withNext: true,\n withPrevious: true,\n headerControlsOrder: ['previous', 'level', 'next'],\n} satisfies Partial<CalendarHeaderProps>;\n\nconst varsResolver = createVarsResolver<CalendarHeaderFactory>((_, { size }) => ({\n calendarHeader: {\n '--dch-control-size': getSize(size, 'dch-control-size'),\n '--dch-fz': getFontSize(size),\n },\n}));\n\nexport const CalendarHeader = factory<CalendarHeaderFactory>((_props) => {\n const props = useProps('CalendarHeader', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n label,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n levelControlAriaLabel,\n withNext,\n withPrevious,\n headerControlsOrder,\n fullWidth,\n __staticSelector,\n __preventFocus,\n __stopPropagation,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<CalendarHeaderFactory>({\n name: __staticSelector || 'CalendarHeader',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'calendarHeader',\n });\n\n const preventFocus = __preventFocus\n ? (event: React.MouseEvent<HTMLElement>) => event.preventDefault()\n : undefined;\n\n const previousControl = withPrevious && (\n <UnstyledButton\n {...getStyles('calendarHeaderControl')}\n key=\"previous\"\n data-direction=\"previous\"\n aria-label={previousLabel}\n onClick={onPrevious}\n unstyled={unstyled}\n onMouseDown={preventFocus}\n disabled={previousDisabled}\n data-disabled={previousDisabled || undefined}\n tabIndex={__preventFocus || previousDisabled ? -1 : 0}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n >\n {previousIcon || (\n <AccordionChevron\n {...getStyles('calendarHeaderControlIcon')}\n data-direction=\"previous\"\n size=\"45%\"\n />\n )}\n </UnstyledButton>\n );\n\n const levelControl = (\n <UnstyledButton\n component={hasNextLevel ? 'button' : 'div'}\n {...getStyles('calendarHeaderLevel')}\n key=\"level\"\n onClick={hasNextLevel ? onLevelClick : undefined}\n unstyled={unstyled}\n onMouseDown={hasNextLevel ? preventFocus : undefined}\n disabled={!hasNextLevel}\n data-static={!hasNextLevel || undefined}\n aria-label={levelControlAriaLabel}\n tabIndex={__preventFocus || !hasNextLevel ? -1 : 0}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n >\n {label}\n </UnstyledButton>\n );\n\n const nextControl = withNext && (\n <UnstyledButton\n {...getStyles('calendarHeaderControl')}\n key=\"next\"\n data-direction=\"next\"\n aria-label={nextLabel}\n onClick={onNext}\n unstyled={unstyled}\n onMouseDown={preventFocus}\n disabled={nextDisabled}\n data-disabled={nextDisabled || undefined}\n tabIndex={__preventFocus || nextDisabled ? -1 : 0}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n >\n {nextIcon || (\n <AccordionChevron\n {...getStyles('calendarHeaderControlIcon')}\n data-direction=\"next\"\n size=\"45%\"\n />\n )}\n </UnstyledButton>\n );\n\n const controls = headerControlsOrder.map((control) => {\n if (control === 'previous') {\n return previousControl;\n }\n if (control === 'level') {\n return levelControl;\n }\n if (control === 'next') {\n return nextControl;\n }\n return null;\n });\n\n return (\n <Box {...getStyles('calendarHeader')} data-full-width={fullWidth || undefined} {...others}>\n {controls}\n </Box>\n );\n});\n\nCalendarHeader.classes = classes;\nCalendarHeader.varsResolver = varsResolver;\nCalendarHeader.displayName = '@mantine/dates/CalendarHeader';\n\nexport namespace CalendarHeader {\n export type Props = CalendarHeaderProps;\n export type StylesNames = CalendarHeaderStylesNames;\n export type CssVariables = CalendarHeaderCssVariables;\n export type Settings = CalendarHeaderSettings;\n export type Factory = CalendarHeaderFactory;\n}\n"],"mappings":";;;;;;;AAqGA,MAAM,eAAe;CACnB,cAAc;CACd,UAAU;CACV,cAAc;CACd,qBAAqB;EAAC;EAAY;EAAS;EAAO;CACnD;AAED,MAAM,gBAAA,GAAA,cAAA,qBAA0D,GAAG,EAAE,YAAY,EAC/E,gBAAgB;CACd,uBAAA,GAAA,cAAA,SAA8B,MAAM,mBAAmB;CACvD,aAAA,GAAA,cAAA,aAAwB,KAAK;CAC9B,EACF,EAAE;AAEH,MAAa,kBAAA,GAAA,cAAA,UAAiD,WAAW;CACvE,MAAM,SAAA,GAAA,cAAA,UAAiB,kBAAkB,cAAc,OAAO;CAC9D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,UACA,cACA,WACA,eACA,QACA,YACA,cACA,OACA,cACA,kBACA,cACA,uBACA,UACA,cACA,qBACA,WACA,kBACA,gBACA,mBACA,YACA,GAAG,WACD;CAEJ,MAAM,aAAA,GAAA,cAAA,WAA6C;EACjD,MAAM,oBAAoB;EAC1B,SAAA,8BAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,cAAc;EACf,CAAC;CAEF,MAAM,eAAe,kBAChB,UAAyC,MAAM,gBAAgB,GAChE,KAAA;CAEJ,MAAM,kBAAkB,gBACtB,iBAAA,GAAA,MAAA,eAACA,cAAAA,gBAAD;EACE,GAAI,UAAU,wBAAwB;EACtC,KAAI;EACJ,kBAAe;EACf,cAAY;EACZ,SAAS;EACC;EACV,aAAa;EACb,UAAU;EACV,iBAAe,oBAAoB,KAAA;EACnC,UAAU,kBAAkB,mBAAmB,KAAK;EACpD,iCAA+B,qBAAqB,KAAA;EASrC,EAPd,gBACC,iBAAA,GAAA,kBAAA,KAACC,cAAAA,kBAAD;EACE,GAAI,UAAU,4BAA4B;EAC1C,kBAAe;EACf,MAAK;EACL,CAAA,CAEW;CAGnB,MAAM,eACJ,iBAAA,GAAA,MAAA,eAACD,cAAAA,gBAAD;EACE,WAAW,eAAe,WAAW;EACrC,GAAI,UAAU,sBAAsB;EACpC,KAAI;EACJ,SAAS,eAAe,eAAe,KAAA;EAC7B;EACV,aAAa,eAAe,eAAe,KAAA;EAC3C,UAAU,CAAC;EACX,eAAa,CAAC,gBAAgB,KAAA;EAC9B,cAAY;EACZ,UAAU,kBAAkB,CAAC,eAAe,KAAK;EACjD,iCAA+B,qBAAqB,KAAA;EAGrC,EADd,MACc;CAGnB,MAAM,cAAc,YAClB,iBAAA,GAAA,MAAA,eAACA,cAAAA,gBAAD;EACE,GAAI,UAAU,wBAAwB;EACtC,KAAI;EACJ,kBAAe;EACf,cAAY;EACZ,SAAS;EACC;EACV,aAAa;EACb,UAAU;EACV,iBAAe,gBAAgB,KAAA;EAC/B,UAAU,kBAAkB,eAAe,KAAK;EAChD,iCAA+B,qBAAqB,KAAA;EASrC,EAPd,YACC,iBAAA,GAAA,kBAAA,KAACC,cAAAA,kBAAD;EACE,GAAI,UAAU,4BAA4B;EAC1C,kBAAe;EACf,MAAK;EACL,CAAA,CAEW;CAGnB,MAAM,WAAW,oBAAoB,KAAK,YAAY;AACpD,MAAI,YAAY,WACd,QAAO;AAET,MAAI,YAAY,QACd,QAAO;AAET,MAAI,YAAY,OACd,QAAO;AAET,SAAO;GACP;AAEF,QACE,iBAAA,GAAA,kBAAA,KAACC,cAAAA,KAAD;EAAK,GAAI,UAAU,iBAAiB;EAAE,mBAAiB,aAAa,KAAA;EAAW,GAAI;YAChF;EACG,CAAA;EAER;AAEF,eAAe,UAAUC,8BAAAA;AACzB,eAAe,eAAe;AAC9B,eAAe,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateInput.cjs","names":["pickCalendarProps","useDatesContext","dateStringParser","useUncontrolledDates","isDateValid","Input","Popover","Calendar","isSameMonth","HiddenDatesInput"],"sources":["../../../src/components/DateInput/DateInput.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useEffect, useRef, useState } from 'react';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n BoxProps,\n ClearSectionMode,\n ElementProps,\n factory,\n Factory,\n Input,\n InputVariant,\n MantineSize,\n Popover,\n PopoverProps,\n StylesApiProps,\n useInputProps,\n} from '@mantine/core';\nimport { useClickOutside, useDidUpdate } from '@mantine/hooks';\nimport { useUncontrolledDates } from '../../hooks';\nimport { CalendarLevel, DateStringValue, DateValue } from '../../types';\nimport { Calendar, CalendarBaseProps, CalendarStylesNames, pickCalendarProps } from '../Calendar';\nimport { useDatesContext } from '../DatesProvider';\nimport { DecadeLevelSettings } from '../DecadeLevel';\nimport { HiddenDatesInput } from '../HiddenDatesInput';\nimport { isSameMonth } from '../Month';\nimport { MonthLevelSettings } from '../MonthLevel';\nimport { YearLevelSettings } from '../YearLevel';\nimport { dateStringParser } from './date-string-parser/date-string-parser';\nimport { isDateValid } from './is-date-valid/is-date-valid';\n\nexport type DateInputStylesNames = __InputStylesNames | CalendarStylesNames;\n\nexport interface DateInputProps\n extends\n BoxProps,\n Omit<__BaseInputProps, 'size'>,\n CalendarBaseProps,\n DecadeLevelSettings,\n YearLevelSettings,\n MonthLevelSettings,\n StylesApiProps<DateInputFactory>,\n ElementProps<'input', 'size' | 'value' | 'defaultValue' | 'onChange'> {\n /** A function to parse user input and convert it to date string value */\n dateParser?: (value: string) => DateStringValue | Date | null;\n\n /** Controlled component value */\n value?: DateValue | Date;\n\n /** Uncontrolled component default value */\n defaultValue?: DateValue | Date;\n\n /** Called when value changes */\n onChange?: (value: DateStringValue | null) => void;\n\n /** Props passed down to the `Popover` component */\n popoverProps?: Partial<Omit<PopoverProps, 'children'>>;\n\n /** If set, clear button is displayed in the `rightSection` when the component has value. Ignored if `rightSection` prop is set. @default false */\n clearable?: boolean;\n\n /** Determines how the clear button and rightSection are rendered @default 'both' */\n clearSectionMode?: ClearSectionMode;\n\n /** Props passed down to the clear button */\n clearButtonProps?: React.ComponentProps<'button'>;\n\n /** `dayjs` format to display input value, `\"MMMM D, YYYY\"` by default */\n valueFormat?: string;\n\n /** If set to `true`, the time part of the value is preserved. Set this to `true` when `valueFormat` includes time (e.g. `\"YYYY-MM-DD HH:mm\"`). @default false */\n withTime?: boolean;\n\n /** If set to `false`, invalid user input is preserved and is not corrected on blur */\n fixOnBlur?: boolean;\n\n /** If set, the value can be deselected by deleting everything from the input or by clicking the selected date in the dropdown. By default, `true` if `clearable` prop is set, `false` otherwise. */\n allowDeselect?: boolean;\n\n /** Max level that user can go up to @default 'decade' */\n maxLevel?: CalendarLevel;\n\n /** Initial displayed level (uncontrolled) */\n defaultLevel?: CalendarLevel;\n\n /** Current displayed level (controlled) */\n level?: CalendarLevel;\n\n /** Called when the level changes */\n onLevelChange?: (level: CalendarLevel) => void;\n}\n\nexport type DateInputFactory = Factory<{\n props: DateInputProps;\n ref: HTMLInputElement;\n stylesNames: DateInputStylesNames;\n variant: InputVariant;\n}>;\n\nconst defaultProps = {\n valueFormat: 'MMMM D, YYYY',\n fixOnBlur: true,\n size: 'sm',\n} satisfies Partial<DateInputProps>;\n\nexport const DateInput = factory<DateInputFactory>((_props) => {\n const props = useInputProps('DateInput', defaultProps, _props);\n const {\n inputProps,\n wrapperProps,\n value,\n defaultValue,\n onChange,\n clearable,\n clearSectionMode,\n clearButtonProps,\n popoverProps,\n getDayProps,\n locale,\n valueFormat,\n withTime,\n dateParser,\n minDate,\n maxDate,\n fixOnBlur,\n onFocus,\n onBlur,\n onClick,\n onKeyDown,\n readOnly,\n name,\n form,\n rightSection,\n unstyled,\n classNames,\n styles,\n allowDeselect,\n date,\n defaultDate,\n onDateChange,\n getMonthControlProps,\n getYearControlProps,\n disabled,\n ...rest\n } = props;\n\n const _wrapperRef = useRef<HTMLDivElement>(null);\n const _dropdownRef = useRef<HTMLDivElement>(null);\n const [dropdownOpened, setDropdownOpened] = useState(false);\n const { calendarProps, others } = pickCalendarProps(rest);\n const ctx = useDatesContext();\n const defaultDateParser = (val: string): DateStringValue | null => {\n const parsedDate = dayjs(val, valueFormat, ctx.getLocale(locale)).toDate();\n return Number.isNaN(parsedDate.getTime())\n ? dateStringParser(val)\n : dayjs(parsedDate).format(withTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');\n };\n\n const _dateParser = dateParser || defaultDateParser;\n const _allowDeselect = allowDeselect !== undefined ? allowDeselect : clearable;\n\n const formatValue = (val: DateStringValue) =>\n val ? dayjs(val).locale(ctx.getLocale(locale)).format(valueFormat) : '';\n\n const [_value, setValue, controlled] = useUncontrolledDates({\n type: 'default',\n value,\n defaultValue,\n onChange,\n withTime,\n });\n\n const [_date, setDate] = useUncontrolledDates({\n type: 'default',\n value: date,\n defaultValue: defaultValue || defaultDate,\n onChange: onDateChange as any,\n });\n\n useEffect(() => {\n if (controlled && value !== null) {\n setDate(value);\n }\n }, [controlled, value]);\n\n const [inputValue, setInputValue] = useState(formatValue(_value));\n\n useEffect(() => {\n setInputValue(formatValue(_value));\n }, [ctx.getLocale(locale)]);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const val = event.currentTarget.value;\n setInputValue(val);\n setDropdownOpened(true);\n\n if (val.trim() === '' && (allowDeselect || clearable)) {\n setValue(null);\n } else {\n const dateValue = _dateParser(val);\n if (dateValue && isDateValid({ date: dateValue, minDate, maxDate })) {\n setValue(dateValue);\n setDate(dateValue);\n }\n }\n };\n\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n setDropdownOpened(false);\n fixOnBlur && setInputValue(formatValue(_value));\n };\n\n const handleInputFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n onFocus?.(event);\n setDropdownOpened(true);\n };\n\n const handleInputClick = (event: React.MouseEvent<HTMLInputElement>) => {\n onClick?.(event);\n setDropdownOpened(true);\n };\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape') {\n setDropdownOpened(false);\n }\n onKeyDown?.(event);\n };\n\n const _getDayProps = (day: DateStringValue) => ({\n ...getDayProps?.(day),\n selected: dayjs(_value).isSame(day, 'day'),\n onClick: (event: any) => {\n getDayProps?.(day).onClick?.(event);\n\n const val = _allowDeselect ? (dayjs(_value).isSame(day, 'day') ? null : day) : day;\n setValue(val);\n !controlled && val && setInputValue(formatValue(val));\n setDropdownOpened(false);\n },\n });\n\n const clearButton = (\n <Input.ClearButton\n onClick={() => {\n setValue(null);\n !controlled && setInputValue('');\n setDropdownOpened(false);\n }}\n unstyled={unstyled}\n {...clearButtonProps}\n />\n );\n\n const _clearable = clearable && !!_value && !readOnly && !disabled;\n\n useDidUpdate(() => {\n _value !== undefined && !dropdownOpened && setInputValue(formatValue(_value));\n }, [_value]);\n\n useClickOutside(() => setDropdownOpened(false), undefined, [\n _wrapperRef.current,\n _dropdownRef.current,\n ]);\n\n return (\n <>\n <Input.Wrapper {...wrapperProps} __staticSelector=\"DateInput\" ref={_wrapperRef}>\n <Popover\n opened={dropdownOpened}\n trapFocus={false}\n position=\"bottom-start\"\n disabled={readOnly || disabled}\n withRoles={false}\n unstyled={unstyled}\n {...popoverProps}\n >\n <Popover.Target>\n <Input\n data-dates-input\n data-read-only={readOnly || undefined}\n autoComplete=\"off\"\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n onClick={handleInputClick}\n onKeyDown={handleInputKeyDown}\n readOnly={readOnly}\n rightSection={rightSection}\n __clearSection={clearButton}\n __clearable={_clearable}\n __clearSectionMode={clearSectionMode}\n {...inputProps}\n {...others}\n disabled={disabled}\n __staticSelector=\"DateInput\"\n />\n </Popover.Target>\n <Popover.Dropdown\n onMouseDown={(event) => event.preventDefault()}\n data-dates-dropdown\n ref={_dropdownRef}\n >\n <Calendar\n __staticSelector=\"DateInput\"\n {...calendarProps}\n classNames={classNames}\n styles={styles}\n unstyled={unstyled}\n __preventFocus\n minDate={minDate}\n maxDate={maxDate}\n locale={locale}\n getDayProps={_getDayProps}\n size={inputProps.size as MantineSize}\n date={_date}\n onDateChange={setDate}\n getMonthControlProps={(date) => ({\n selected: typeof _value === 'string' ? isSameMonth(date, _value) : false,\n ...getMonthControlProps?.(date),\n })}\n getYearControlProps={(date) => ({\n selected: typeof _value === 'string' ? dayjs(date).isSame(_value, 'year') : false,\n ...getYearControlProps?.(date),\n })}\n attributes={wrapperProps.attributes}\n />\n </Popover.Dropdown>\n </Popover>\n </Input.Wrapper>\n <HiddenDatesInput name={name} form={form} value={_value} type=\"default\" withTime={withTime} />\n </>\n );\n});\n\nDateInput.classes = { ...Input.classes, ...Calendar.classes };\nDateInput.displayName = '@mantine/dates/DateInput';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateInput.cjs","names":["pickCalendarProps","useDatesContext","dateStringParser","useUncontrolledDates","isDateValid","Input","Popover","Calendar","isSameMonth","HiddenDatesInput"],"sources":["../../../src/components/DateInput/DateInput.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useEffect, useRef, useState } from 'react';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n BoxProps,\n ClearSectionMode,\n ElementProps,\n factory,\n Factory,\n Input,\n InputVariant,\n MantineSize,\n Popover,\n PopoverProps,\n StylesApiProps,\n useInputProps,\n} from '@mantine/core';\nimport { useClickOutside, useDidUpdate } from '@mantine/hooks';\nimport { useUncontrolledDates } from '../../hooks';\nimport { CalendarLevel, DateStringValue, DateValue } from '../../types';\nimport { Calendar, CalendarBaseProps, CalendarStylesNames, pickCalendarProps } from '../Calendar';\nimport { useDatesContext } from '../DatesProvider';\nimport { DecadeLevelSettings } from '../DecadeLevel';\nimport { HiddenDatesInput } from '../HiddenDatesInput';\nimport { isSameMonth } from '../Month';\nimport { MonthLevelSettings } from '../MonthLevel';\nimport { YearLevelSettings } from '../YearLevel';\nimport { dateStringParser } from './date-string-parser/date-string-parser';\nimport { isDateValid } from './is-date-valid/is-date-valid';\n\nexport type DateInputStylesNames = __InputStylesNames | CalendarStylesNames;\n\nexport interface DateInputProps\n extends\n BoxProps,\n Omit<__BaseInputProps, 'size'>,\n CalendarBaseProps,\n DecadeLevelSettings,\n YearLevelSettings,\n MonthLevelSettings,\n StylesApiProps<DateInputFactory>,\n ElementProps<'input', 'size' | 'value' | 'defaultValue' | 'onChange'> {\n /** A function to parse user input and convert it to date string value */\n dateParser?: (value: string) => DateStringValue | Date | null;\n\n /** Controlled component value */\n value?: DateValue | Date;\n\n /** Uncontrolled component default value */\n defaultValue?: DateValue | Date;\n\n /** Called when value changes */\n onChange?: (value: DateStringValue | null) => void;\n\n /** Props passed down to the `Popover` component */\n popoverProps?: Partial<Omit<PopoverProps, 'children'>>;\n\n /** If set, clear button is displayed in the `rightSection` when the component has value. Ignored if `rightSection` prop is set. @default false */\n clearable?: boolean;\n\n /** Determines how the clear button and rightSection are rendered @default 'both' */\n clearSectionMode?: ClearSectionMode;\n\n /** Props passed down to the clear button */\n clearButtonProps?: React.ComponentProps<'button'>;\n\n /** `dayjs` format to display input value, `\"MMMM D, YYYY\"` by default */\n valueFormat?: string;\n\n /** If set to `true`, the time part of the value is preserved. Set this to `true` when `valueFormat` includes time (e.g. `\"YYYY-MM-DD HH:mm\"`). @default false */\n withTime?: boolean;\n\n /** If set to `false`, invalid user input is preserved and is not corrected on blur */\n fixOnBlur?: boolean;\n\n /** If set, the value can be deselected by deleting everything from the input or by clicking the selected date in the dropdown. By default, `true` if `clearable` prop is set, `false` otherwise. */\n allowDeselect?: boolean;\n\n /** Max level that user can go up to @default 'decade' */\n maxLevel?: CalendarLevel;\n\n /** Initial displayed level (uncontrolled) */\n defaultLevel?: CalendarLevel;\n\n /** Current displayed level (controlled) */\n level?: CalendarLevel;\n\n /** Called when the level changes */\n onLevelChange?: (level: CalendarLevel) => void;\n}\n\nexport type DateInputFactory = Factory<{\n props: DateInputProps;\n ref: HTMLInputElement;\n stylesNames: DateInputStylesNames;\n variant: InputVariant;\n}>;\n\nconst defaultProps = {\n valueFormat: 'MMMM D, YYYY',\n fixOnBlur: true,\n size: 'sm',\n} satisfies Partial<DateInputProps>;\n\nexport const DateInput = factory<DateInputFactory>((_props) => {\n const props = useInputProps('DateInput', defaultProps, _props);\n const {\n inputProps,\n wrapperProps,\n value,\n defaultValue,\n onChange,\n clearable,\n clearSectionMode,\n clearButtonProps,\n popoverProps,\n getDayProps,\n locale,\n valueFormat,\n withTime,\n dateParser,\n minDate,\n maxDate,\n fixOnBlur,\n onFocus,\n onBlur,\n onClick,\n onKeyDown,\n readOnly,\n name,\n form,\n rightSection,\n unstyled,\n classNames,\n styles,\n allowDeselect,\n date,\n defaultDate,\n onDateChange,\n getMonthControlProps,\n getYearControlProps,\n disabled,\n ...rest\n } = props;\n\n const _wrapperRef = useRef<HTMLDivElement>(null);\n const _dropdownRef = useRef<HTMLDivElement>(null);\n const [dropdownOpened, setDropdownOpened] = useState(false);\n const { calendarProps, others } = pickCalendarProps(rest);\n const ctx = useDatesContext();\n const defaultDateParser = (val: string): DateStringValue | null => {\n const parsedDate = dayjs(val, valueFormat, ctx.getLocale(locale)).toDate();\n return Number.isNaN(parsedDate.getTime())\n ? dateStringParser(val)\n : dayjs(parsedDate).format(withTime ? 'YYYY-MM-DD HH:mm:ss' : 'YYYY-MM-DD');\n };\n\n const _dateParser = dateParser || defaultDateParser;\n const _allowDeselect = allowDeselect !== undefined ? allowDeselect : clearable;\n\n const formatValue = (val: DateStringValue) =>\n val ? dayjs(val).locale(ctx.getLocale(locale)).format(valueFormat) : '';\n\n const [_value, setValue, controlled] = useUncontrolledDates({\n type: 'default',\n value,\n defaultValue,\n onChange,\n withTime,\n });\n\n const [_date, setDate] = useUncontrolledDates({\n type: 'default',\n value: date,\n defaultValue: defaultValue || defaultDate,\n onChange: onDateChange as any,\n });\n\n useEffect(() => {\n if (controlled && value !== null) {\n setDate(value);\n }\n }, [controlled, value]);\n\n const [inputValue, setInputValue] = useState(formatValue(_value));\n\n useEffect(() => {\n setInputValue(formatValue(_value));\n }, [ctx.getLocale(locale)]);\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const val = event.currentTarget.value;\n setInputValue(val);\n setDropdownOpened(true);\n\n if (val.trim() === '' && (allowDeselect || clearable)) {\n setValue(null);\n } else {\n const dateValue = _dateParser(val);\n if (dateValue && isDateValid({ date: dateValue, minDate, maxDate })) {\n setValue(dateValue);\n setDate(dateValue);\n }\n }\n };\n\n const handleInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n onBlur?.(event);\n setDropdownOpened(false);\n fixOnBlur && setInputValue(formatValue(_value));\n };\n\n const handleInputFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n onFocus?.(event);\n setDropdownOpened(true);\n };\n\n const handleInputClick = (event: React.MouseEvent<HTMLInputElement>) => {\n onClick?.(event);\n setDropdownOpened(true);\n };\n\n const handleInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Escape') {\n setDropdownOpened(false);\n }\n onKeyDown?.(event);\n };\n\n const _getDayProps = (day: DateStringValue) => ({\n ...getDayProps?.(day),\n selected: dayjs(_value).isSame(day, 'day'),\n onClick: (event: any) => {\n getDayProps?.(day).onClick?.(event);\n\n const val = _allowDeselect ? (dayjs(_value).isSame(day, 'day') ? null : day) : day;\n setValue(val);\n !controlled && val && setInputValue(formatValue(val));\n setDropdownOpened(false);\n },\n });\n\n const clearButton = (\n <Input.ClearButton\n onClick={() => {\n setValue(null);\n !controlled && setInputValue('');\n setDropdownOpened(false);\n }}\n unstyled={unstyled}\n {...clearButtonProps}\n />\n );\n\n const _clearable = clearable && !!_value && !readOnly && !disabled;\n\n useDidUpdate(() => {\n _value !== undefined && !dropdownOpened && setInputValue(formatValue(_value));\n }, [_value]);\n\n useClickOutside(() => setDropdownOpened(false), undefined, [\n _wrapperRef.current,\n _dropdownRef.current,\n ]);\n\n return (\n <>\n <Input.Wrapper {...wrapperProps} __staticSelector=\"DateInput\" ref={_wrapperRef}>\n <Popover\n opened={dropdownOpened}\n trapFocus={false}\n position=\"bottom-start\"\n disabled={readOnly || disabled}\n withRoles={false}\n unstyled={unstyled}\n {...popoverProps}\n >\n <Popover.Target>\n <Input\n data-dates-input\n data-read-only={readOnly || undefined}\n autoComplete=\"off\"\n value={inputValue}\n onChange={handleInputChange}\n onBlur={handleInputBlur}\n onFocus={handleInputFocus}\n onClick={handleInputClick}\n onKeyDown={handleInputKeyDown}\n readOnly={readOnly}\n rightSection={rightSection}\n __clearSection={clearButton}\n __clearable={_clearable}\n __clearSectionMode={clearSectionMode}\n {...inputProps}\n {...others}\n disabled={disabled}\n __staticSelector=\"DateInput\"\n />\n </Popover.Target>\n <Popover.Dropdown\n onMouseDown={(event) => event.preventDefault()}\n data-dates-dropdown\n ref={_dropdownRef}\n >\n <Calendar\n __staticSelector=\"DateInput\"\n {...calendarProps}\n classNames={classNames}\n styles={styles}\n unstyled={unstyled}\n __preventFocus\n minDate={minDate}\n maxDate={maxDate}\n locale={locale}\n getDayProps={_getDayProps}\n size={inputProps.size as MantineSize}\n date={_date}\n onDateChange={setDate}\n getMonthControlProps={(date) => ({\n selected: typeof _value === 'string' ? isSameMonth(date, _value) : false,\n ...getMonthControlProps?.(date),\n })}\n getYearControlProps={(date) => ({\n selected: typeof _value === 'string' ? dayjs(date).isSame(_value, 'year') : false,\n ...getYearControlProps?.(date),\n })}\n attributes={wrapperProps.attributes}\n />\n </Popover.Dropdown>\n </Popover>\n </Input.Wrapper>\n <HiddenDatesInput name={name} form={form} value={_value} type=\"default\" withTime={withTime} />\n </>\n );\n});\n\nDateInput.classes = { ...Input.classes, ...Calendar.classes };\nDateInput.displayName = '@mantine/dates/DateInput';\n\nexport namespace DateInput {\n export type Props = DateInputProps;\n export type StylesNames = DateInputStylesNames;\n export type Factory = DateInputFactory;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePicker.cjs","names":["pickCalendarProps","useDatesState","Calendar","isSameMonth","UnstyledButton","Box"],"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useRef } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getFontSize,\n MantineComponentStaticProperties,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '@mantine/core';\nimport { useDatesState } from '../../hooks';\nimport {\n CalendarLevel,\n DatePickerType,\n DateStringValue,\n DateValue,\n PickerBaseProps,\n} from '../../types';\nimport {\n Calendar,\n CalendarBaseProps,\n CalendarProps,\n CalendarSettings,\n CalendarStylesNames,\n pickCalendarProps,\n} from '../Calendar';\nimport { DecadeLevelBaseSettings } from '../DecadeLevel';\nimport { isSameMonth } from '../Month';\nimport { MonthLevelBaseSettings } from '../MonthLevel';\nimport { YearLevelBaseSettings } from '../YearLevel';\nimport classes from './DatePicker.module.css';\n\nexport interface DatePickerPreset<Type extends DatePickerType> {\n value: Type extends 'range'\n ? [DateStringValue | null, DateStringValue | null]\n : Type extends 'multiple'\n ? DateStringValue[]\n : DateStringValue | null;\n label: React.ReactNode;\n}\n\nexport type DatePickerCssVariables = {\n datePickerRoot: '--preset-font-size';\n};\n\nexport type DatePickerStylesNames =\n | CalendarStylesNames\n | 'presetsList'\n | 'presetButton'\n | 'datePickerRoot';\n\nexport interface DatePickerBaseProps<Type extends DatePickerType = 'default'>\n extends\n PickerBaseProps<Type>,\n DecadeLevelBaseSettings,\n YearLevelBaseSettings,\n MonthLevelBaseSettings,\n CalendarBaseProps,\n Omit<CalendarSettings, 'hasNextLevel'>,\n Pick<CalendarProps, 'enableKeyboardNavigation'> {\n maxLevel?: CalendarLevel;\n\n /** Initial displayed level (uncontrolled) */\n defaultLevel?: CalendarLevel;\n\n /** Current displayed level (controlled) */\n level?: CalendarLevel;\n\n /** Called when level changes */\n onLevelChange?: (level: CalendarLevel) => void;\n\n /** Predefined values to pick from */\n presets?: DatePickerPreset<Type>[];\n\n /** If defined, called with preset value, suppresses `onChange` call */\n __onPresetSelect?: (\n preset: Type extends 'range'\n ? [DateStringValue | null, DateStringValue | null]\n : DateStringValue | null\n ) => void;\n}\n\nexport interface DatePickerProps<Type extends DatePickerType = 'default'>\n extends\n BoxProps,\n DatePickerBaseProps<Type>,\n StylesApiProps<DatePickerFactory>,\n ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {}\n\nexport type DatePickerFactory = Factory<{\n props: DatePickerProps;\n ref: HTMLDivElement;\n stylesNames: DatePickerStylesNames;\n vars: DatePickerCssVariables;\n}>;\n\nconst varsResolver = createVarsResolver<DatePickerFactory>((_, { size }) => ({\n datePickerRoot: {\n '--preset-font-size': getFontSize(size),\n },\n}));\n\nconst defaultProps = {\n type: 'default',\n defaultLevel: 'month',\n numberOfColumns: 1,\n size: 'sm',\n} satisfies Partial<DatePickerProps>;\n\ntype DatePickerComponent = (<Type extends DatePickerType = 'default'>(\n props: DatePickerProps<Type> & { ref?: React.Ref<HTMLDivElement> }\n) => React.JSX.Element) & {\n displayName?: string;\n} & MantineComponentStaticProperties<DatePickerFactory>;\n\nexport const DatePicker: DatePickerComponent = factory<DatePickerFactory>((_props) => {\n const props = useProps('DatePicker', defaultProps, _props);\n const {\n allowDeselect,\n allowSingleDateInRange,\n value,\n defaultValue,\n onChange,\n onMouseLeave,\n classNames,\n styles,\n __staticSelector,\n __onDayClick,\n __onDayMouseEnter,\n __onPresetSelect,\n __stopPropagation,\n presets,\n className,\n style,\n unstyled,\n size,\n vars,\n attributes,\n ...rest\n } = props;\n\n const { calendarProps, others } = pickCalendarProps(rest);\n const setDateRef = useRef<((date: DateValue) => void) | null>(null);\n const setLevelRef = useRef<((level: CalendarLevel) => void) | null>(null);\n\n const getStyles = useStyles<DatePickerFactory>({\n name: __staticSelector || 'DatePicker',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n rootSelector: presets ? 'datePickerRoot' : undefined,\n varsResolver,\n vars,\n });\n\n const { onDateChange, onRootMouseLeave, onHoveredDateChange, getControlProps, _value, setValue } =\n useDatesState({\n type: others.type as any,\n level: 'day',\n allowDeselect,\n allowSingleDateInRange,\n value,\n defaultValue,\n onChange: onChange as any,\n onMouseLeave,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<DatePickerFactory>({\n classNames,\n styles,\n props,\n });\n\n const calendar = (\n <Calendar\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n __staticSelector={__staticSelector || 'DatePicker'}\n onMouseLeave={onRootMouseLeave}\n size={size}\n {...calendarProps}\n {...(!presets ? others : {})}\n __stopPropagation={__stopPropagation}\n __setDateRef={setDateRef}\n __setLevelRef={setLevelRef}\n minLevel={calendarProps.minLevel || 'month'}\n __onDayMouseEnter={(_event, date) => {\n onHoveredDateChange(date);\n __onDayMouseEnter?.(_event, date);\n }}\n __onDayClick={(_event, date) => {\n onDateChange(date);\n __onDayClick?.(_event, date);\n }}\n getDayProps={(date) => ({\n ...getControlProps(date),\n ...calendarProps.getDayProps?.(date),\n })}\n getMonthControlProps={(date) => ({\n selected: typeof _value === 'string' ? isSameMonth(date, _value) : false,\n ...calendarProps.getMonthControlProps?.(date),\n })}\n getYearControlProps={(date) => ({\n selected: typeof _value === 'string' ? dayjs(date).isSame(_value, 'year') : false,\n ...calendarProps.getYearControlProps?.(date),\n })}\n hideOutsideDates={calendarProps.hideOutsideDates ?? calendarProps.numberOfColumns !== 1}\n attributes={attributes}\n {...(!presets ? { className, style } : {})}\n />\n );\n\n if (!presets) {\n return calendar;\n }\n\n const handlePresetSelect = (\n val: DateStringValue | null | [DateStringValue | null, DateStringValue | null]\n ) => {\n const _val = Array.isArray(val) ? val[0] : val;\n if (_val !== undefined) {\n setDateRef.current?.(_val);\n setLevelRef.current?.('month');\n __onPresetSelect ? __onPresetSelect(_val) : setValue(val);\n }\n };\n\n const presetButtons = presets.map((preset, index) => (\n <UnstyledButton\n key={index}\n {...getStyles('presetButton')}\n onClick={() => handlePresetSelect(preset.value)}\n onMouseDown={(event) => event.preventDefault()}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n >\n {preset.label}\n </UnstyledButton>\n ));\n\n return (\n <Box {...getStyles('datePickerRoot')} size={size} {...others}>\n <div {...getStyles('presetsList')}>{presetButtons}</div>\n {calendar}\n </Box>\n );\n}) as any;\n\nDatePicker.classes = Calendar.classes;\nDatePicker.varsResolver = varsResolver;\nDatePicker.displayName = '@mantine/dates/DatePicker';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DatePicker.cjs","names":["pickCalendarProps","useDatesState","Calendar","isSameMonth","UnstyledButton","Box"],"sources":["../../../src/components/DatePicker/DatePicker.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useRef } from 'react';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getFontSize,\n MantineComponentStaticProperties,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '@mantine/core';\nimport { useDatesState } from '../../hooks';\nimport {\n CalendarLevel,\n DatePickerType,\n DateStringValue,\n DateValue,\n PickerBaseProps,\n} from '../../types';\nimport {\n Calendar,\n CalendarBaseProps,\n CalendarProps,\n CalendarSettings,\n CalendarStylesNames,\n pickCalendarProps,\n} from '../Calendar';\nimport { DecadeLevelBaseSettings } from '../DecadeLevel';\nimport { isSameMonth } from '../Month';\nimport { MonthLevelBaseSettings } from '../MonthLevel';\nimport { YearLevelBaseSettings } from '../YearLevel';\nimport classes from './DatePicker.module.css';\n\nexport interface DatePickerPreset<Type extends DatePickerType> {\n value: Type extends 'range'\n ? [DateStringValue | null, DateStringValue | null]\n : Type extends 'multiple'\n ? DateStringValue[]\n : DateStringValue | null;\n label: React.ReactNode;\n}\n\nexport type DatePickerCssVariables = {\n datePickerRoot: '--preset-font-size';\n};\n\nexport type DatePickerStylesNames =\n | CalendarStylesNames\n | 'presetsList'\n | 'presetButton'\n | 'datePickerRoot';\n\nexport interface DatePickerBaseProps<Type extends DatePickerType = 'default'>\n extends\n PickerBaseProps<Type>,\n DecadeLevelBaseSettings,\n YearLevelBaseSettings,\n MonthLevelBaseSettings,\n CalendarBaseProps,\n Omit<CalendarSettings, 'hasNextLevel'>,\n Pick<CalendarProps, 'enableKeyboardNavigation'> {\n maxLevel?: CalendarLevel;\n\n /** Initial displayed level (uncontrolled) */\n defaultLevel?: CalendarLevel;\n\n /** Current displayed level (controlled) */\n level?: CalendarLevel;\n\n /** Called when level changes */\n onLevelChange?: (level: CalendarLevel) => void;\n\n /** Predefined values to pick from */\n presets?: DatePickerPreset<Type>[];\n\n /** If defined, called with preset value, suppresses `onChange` call */\n __onPresetSelect?: (\n preset: Type extends 'range'\n ? [DateStringValue | null, DateStringValue | null]\n : DateStringValue | null\n ) => void;\n}\n\nexport interface DatePickerProps<Type extends DatePickerType = 'default'>\n extends\n BoxProps,\n DatePickerBaseProps<Type>,\n StylesApiProps<DatePickerFactory>,\n ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {}\n\nexport type DatePickerFactory = Factory<{\n props: DatePickerProps;\n ref: HTMLDivElement;\n stylesNames: DatePickerStylesNames;\n vars: DatePickerCssVariables;\n}>;\n\nconst varsResolver = createVarsResolver<DatePickerFactory>((_, { size }) => ({\n datePickerRoot: {\n '--preset-font-size': getFontSize(size),\n },\n}));\n\nconst defaultProps = {\n type: 'default',\n defaultLevel: 'month',\n numberOfColumns: 1,\n size: 'sm',\n} satisfies Partial<DatePickerProps>;\n\ntype DatePickerComponent = (<Type extends DatePickerType = 'default'>(\n props: DatePickerProps<Type> & { ref?: React.Ref<HTMLDivElement> }\n) => React.JSX.Element) & {\n displayName?: string;\n} & MantineComponentStaticProperties<DatePickerFactory>;\n\nexport const DatePicker: DatePickerComponent = factory<DatePickerFactory>((_props) => {\n const props = useProps('DatePicker', defaultProps, _props);\n const {\n allowDeselect,\n allowSingleDateInRange,\n value,\n defaultValue,\n onChange,\n onMouseLeave,\n classNames,\n styles,\n __staticSelector,\n __onDayClick,\n __onDayMouseEnter,\n __onPresetSelect,\n __stopPropagation,\n presets,\n className,\n style,\n unstyled,\n size,\n vars,\n attributes,\n ...rest\n } = props;\n\n const { calendarProps, others } = pickCalendarProps(rest);\n const setDateRef = useRef<((date: DateValue) => void) | null>(null);\n const setLevelRef = useRef<((level: CalendarLevel) => void) | null>(null);\n\n const getStyles = useStyles<DatePickerFactory>({\n name: __staticSelector || 'DatePicker',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n rootSelector: presets ? 'datePickerRoot' : undefined,\n varsResolver,\n vars,\n });\n\n const { onDateChange, onRootMouseLeave, onHoveredDateChange, getControlProps, _value, setValue } =\n useDatesState({\n type: others.type as any,\n level: 'day',\n allowDeselect,\n allowSingleDateInRange,\n value,\n defaultValue,\n onChange: onChange as any,\n onMouseLeave,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<DatePickerFactory>({\n classNames,\n styles,\n props,\n });\n\n const calendar = (\n <Calendar\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n __staticSelector={__staticSelector || 'DatePicker'}\n onMouseLeave={onRootMouseLeave}\n size={size}\n {...calendarProps}\n {...(!presets ? others : {})}\n __stopPropagation={__stopPropagation}\n __setDateRef={setDateRef}\n __setLevelRef={setLevelRef}\n minLevel={calendarProps.minLevel || 'month'}\n __onDayMouseEnter={(_event, date) => {\n onHoveredDateChange(date);\n __onDayMouseEnter?.(_event, date);\n }}\n __onDayClick={(_event, date) => {\n onDateChange(date);\n __onDayClick?.(_event, date);\n }}\n getDayProps={(date) => ({\n ...getControlProps(date),\n ...calendarProps.getDayProps?.(date),\n })}\n getMonthControlProps={(date) => ({\n selected: typeof _value === 'string' ? isSameMonth(date, _value) : false,\n ...calendarProps.getMonthControlProps?.(date),\n })}\n getYearControlProps={(date) => ({\n selected: typeof _value === 'string' ? dayjs(date).isSame(_value, 'year') : false,\n ...calendarProps.getYearControlProps?.(date),\n })}\n hideOutsideDates={calendarProps.hideOutsideDates ?? calendarProps.numberOfColumns !== 1}\n attributes={attributes}\n {...(!presets ? { className, style } : {})}\n />\n );\n\n if (!presets) {\n return calendar;\n }\n\n const handlePresetSelect = (\n val: DateStringValue | null | [DateStringValue | null, DateStringValue | null]\n ) => {\n const _val = Array.isArray(val) ? val[0] : val;\n if (_val !== undefined) {\n setDateRef.current?.(_val);\n setLevelRef.current?.('month');\n __onPresetSelect ? __onPresetSelect(_val) : setValue(val);\n }\n };\n\n const presetButtons = presets.map((preset, index) => (\n <UnstyledButton\n key={index}\n {...getStyles('presetButton')}\n onClick={() => handlePresetSelect(preset.value)}\n onMouseDown={(event) => event.preventDefault()}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n >\n {preset.label}\n </UnstyledButton>\n ));\n\n return (\n <Box {...getStyles('datePickerRoot')} size={size} {...others}>\n <div {...getStyles('presetsList')}>{presetButtons}</div>\n {calendar}\n </Box>\n );\n}) as any;\n\nDatePicker.classes = Calendar.classes;\nDatePicker.varsResolver = varsResolver;\nDatePicker.displayName = '@mantine/dates/DatePicker';\n\nexport namespace DatePicker {\n export type Props<Type extends DatePickerType> = DatePickerProps<Type>;\n export type BaseProps = DatePickerBaseProps;\n export type StylesNames = DatePickerStylesNames;\n export type Factory = DatePickerFactory;\n export type Preset<Type extends DatePickerType> = DatePickerPreset<Type>;\n export type CssVariables = DatePickerCssVariables;\n}\n"],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ let _mantine_core = require("@mantine/core");
|
|
|
10
10
|
//#region packages/@mantine/dates/src/components/DatePickerInput/DatePickerInput.tsx
|
|
11
11
|
const defaultProps = {
|
|
12
12
|
type: "default",
|
|
13
|
+
size: "sm",
|
|
13
14
|
valueFormat: "MMMM D, YYYY",
|
|
14
15
|
closeOnChange: true,
|
|
15
16
|
sortDates: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatePickerInput.cjs","names":["pickCalendarProps","useDatesInput","PickerInputBase","DatePicker","getDefaultClampedDate"],"sources":["../../../src/components/DatePickerInput/DatePickerInput.tsx"],"sourcesContent":["import {\n __InputStylesNames,\n BoxProps,\n factory,\n Factory,\n InputVariant,\n MantineComponentStaticProperties,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n} from '@mantine/core';\nimport { useDatesInput } from '../../hooks';\nimport { DatePickerType } from '../../types';\nimport { getDefaultClampedDate } from '../../utils';\nimport { pickCalendarProps } from '../Calendar';\nimport { DatePicker, DatePickerBaseProps, DatePickerStylesNames } from '../DatePicker';\nimport { DateInputSharedProps, PickerInputBase } from '../PickerInputBase';\n\nexport type DatePickerInputStylesNames = __InputStylesNames | 'placeholder' | DatePickerStylesNames;\n\nexport interface DatePickerInputProps<Type extends DatePickerType = 'default'>\n extends\n BoxProps,\n DateInputSharedProps,\n DatePickerBaseProps<Type>,\n StylesApiProps<DatePickerInputFactory> {\n /** `dayjs` format for input value @default \"MMMM D, YYYY\" */\n valueFormat?: string;\n}\n\nexport type DatePickerInputFactory = Factory<{\n props: DatePickerInputProps;\n ref: HTMLButtonElement;\n stylesNames: DatePickerInputStylesNames;\n variant: InputVariant;\n}>;\n\nconst defaultProps = {\n type: 'default',\n valueFormat: 'MMMM D, YYYY',\n closeOnChange: true,\n sortDates: true,\n dropdownType: 'popover',\n} satisfies Partial<DatePickerInputProps>;\n\ntype DatePickerInputComponent = (<Type extends DatePickerType = 'default'>(\n props: DatePickerInputProps<Type> & { ref?: React.Ref<HTMLButtonElement> }\n) => React.JSX.Element) & {\n displayName?: string;\n} & MantineComponentStaticProperties<DatePickerInputFactory>;\n\nexport const DatePickerInput: DatePickerInputComponent = factory<DatePickerInputFactory>(\n (_props) => {\n const props = useProps('DatePickerInput', defaultProps, _props);\n const {\n type,\n value,\n defaultValue,\n onChange,\n valueFormat,\n labelSeparator,\n locale,\n classNames,\n styles,\n unstyled,\n closeOnChange,\n size,\n variant,\n dropdownType,\n sortDates,\n minDate,\n maxDate,\n vars,\n defaultDate,\n valueFormatter,\n presets,\n attributes,\n ...rest\n } = props;\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<DatePickerInputFactory>({\n classNames,\n styles,\n props,\n });\n\n const { calendarProps, others } = pickCalendarProps(rest);\n\n const {\n _value,\n setValue,\n formattedValue,\n dropdownHandlers,\n dropdownOpened,\n onClear,\n shouldClear,\n } = useDatesInput({\n type: type as any,\n value,\n defaultValue,\n onChange: onChange as any,\n locale,\n format: valueFormat,\n labelSeparator,\n closeOnChange,\n sortDates,\n valueFormatter,\n });\n\n const _defaultDate = Array.isArray(_value) ? _value[0] || defaultDate : _value || defaultDate;\n\n return (\n <PickerInputBase\n formattedValue={formattedValue}\n dropdownOpened={dropdownOpened}\n dropdownHandlers={dropdownHandlers}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n onClear={onClear}\n shouldClear={shouldClear}\n value={_value}\n size={size}\n variant={variant}\n dropdownType={dropdownType}\n {...others}\n type={type as any}\n __staticSelector=\"DatePickerInput\"\n attributes={attributes}\n >\n <DatePicker\n {...calendarProps}\n size={size}\n variant={variant}\n type={type}\n value={_value}\n defaultDate={_defaultDate || getDefaultClampedDate({ maxDate, minDate })}\n onChange={setValue}\n locale={locale}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n __staticSelector=\"DatePickerInput\"\n __stopPropagation={dropdownType === 'popover'}\n minDate={minDate}\n maxDate={maxDate}\n presets={presets}\n attributes={attributes}\n />\n </PickerInputBase>\n );\n }\n) as any;\n\nDatePickerInput.classes = { ...PickerInputBase.classes, ...DatePicker.classes };\nDatePickerInput.displayName = '@mantine/dates/DatePickerInput';\n"],"mappings":";;;;;;;;;;AAqCA,MAAM,eAAe;CACnB,MAAM;CACN,aAAa;CACb,eAAe;CACf,WAAW;CACX,cAAc;CACf;AAQD,MAAa,mBAAA,GAAA,cAAA,UACV,WAAW;CACV,MAAM,SAAA,GAAA,cAAA,UAAiB,mBAAmB,cAAc,OAAO;CAC/D,MAAM,EACJ,MACA,OACA,cACA,UACA,aACA,gBACA,QACA,YACA,QACA,UACA,eACA,MACA,SACA,cACA,WACA,SACA,SACA,MACA,aACA,gBACA,SACA,YACA,GAAG,SACD;CAEJ,MAAM,EAAE,oBAAoB,oBAAA,GAAA,cAAA,sBAAgE;EAC1F;EACA;EACA;EACD,CAAC;CAEF,MAAM,EAAE,eAAe,WAAWA,mCAAAA,kBAAkB,KAAK;CAEzD,MAAM,EACJ,QACA,UACA,gBACA,kBACA,gBACA,SACA,gBACEC,wBAAAA,cAAc;EACV;EACN;EACA;EACU;EACV;EACA,QAAQ;EACR;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,eAAe,MAAM,QAAQ,OAAO,GAAG,OAAO,MAAM,cAAc,UAAU;AAElF,QACE,iBAAA,GAAA,kBAAA,KAACC,wBAAAA,iBAAD;EACkB;EACA;EACE;EAClB,YAAY;EACZ,QAAQ;EACE;EACD;EACI;EACb,OAAO;EACD;EACG;EACK;EACd,GAAI;EACE;EACN,kBAAiB;EACL;YAEZ,iBAAA,GAAA,kBAAA,KAACC,mBAAAA,YAAD;GACE,GAAI;GACE;GACG;GACH;GACN,OAAO;GACP,aAAa,gBAAgBC,iCAAAA,sBAAsB;IAAE;IAAS;IAAS,CAAC;GACxE,UAAU;GACF;GACR,YAAY;GACZ,QAAQ;GACE;GACV,kBAAiB;GACjB,mBAAmB,iBAAiB;GAC3B;GACA;GACA;GACG;GACZ,CAAA;EACc,CAAA;EAGvB;AAED,gBAAgB,UAAU;CAAE,GAAGF,wBAAAA,gBAAgB;CAAS,GAAGC,mBAAAA,WAAW;CAAS;AAC/E,gBAAgB,cAAc"}
|
|
1
|
+
{"version":3,"file":"DatePickerInput.cjs","names":["pickCalendarProps","useDatesInput","PickerInputBase","DatePicker","getDefaultClampedDate"],"sources":["../../../src/components/DatePickerInput/DatePickerInput.tsx"],"sourcesContent":["import {\n __InputStylesNames,\n BoxProps,\n factory,\n Factory,\n InputVariant,\n MantineComponentStaticProperties,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n} from '@mantine/core';\nimport { useDatesInput } from '../../hooks';\nimport { DatePickerType } from '../../types';\nimport { getDefaultClampedDate } from '../../utils';\nimport { pickCalendarProps } from '../Calendar';\nimport { DatePicker, DatePickerBaseProps, DatePickerStylesNames } from '../DatePicker';\nimport { DateInputSharedProps, PickerInputBase } from '../PickerInputBase';\n\nexport type DatePickerInputStylesNames = __InputStylesNames | 'placeholder' | DatePickerStylesNames;\n\nexport interface DatePickerInputProps<Type extends DatePickerType = 'default'>\n extends\n BoxProps,\n DateInputSharedProps,\n DatePickerBaseProps<Type>,\n StylesApiProps<DatePickerInputFactory> {\n /** `dayjs` format for input value @default \"MMMM D, YYYY\" */\n valueFormat?: string;\n}\n\nexport type DatePickerInputFactory = Factory<{\n props: DatePickerInputProps;\n ref: HTMLButtonElement;\n stylesNames: DatePickerInputStylesNames;\n variant: InputVariant;\n}>;\n\nconst defaultProps = {\n type: 'default',\n size: 'sm',\n valueFormat: 'MMMM D, YYYY',\n closeOnChange: true,\n sortDates: true,\n dropdownType: 'popover',\n} satisfies Partial<DatePickerInputProps>;\n\ntype DatePickerInputComponent = (<Type extends DatePickerType = 'default'>(\n props: DatePickerInputProps<Type> & { ref?: React.Ref<HTMLButtonElement> }\n) => React.JSX.Element) & {\n displayName?: string;\n} & MantineComponentStaticProperties<DatePickerInputFactory>;\n\nexport const DatePickerInput: DatePickerInputComponent = factory<DatePickerInputFactory>(\n (_props) => {\n const props = useProps('DatePickerInput', defaultProps, _props);\n const {\n type,\n value,\n defaultValue,\n onChange,\n valueFormat,\n labelSeparator,\n locale,\n classNames,\n styles,\n unstyled,\n closeOnChange,\n size,\n variant,\n dropdownType,\n sortDates,\n minDate,\n maxDate,\n vars,\n defaultDate,\n valueFormatter,\n presets,\n attributes,\n ...rest\n } = props;\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<DatePickerInputFactory>({\n classNames,\n styles,\n props,\n });\n\n const { calendarProps, others } = pickCalendarProps(rest);\n\n const {\n _value,\n setValue,\n formattedValue,\n dropdownHandlers,\n dropdownOpened,\n onClear,\n shouldClear,\n } = useDatesInput({\n type: type as any,\n value,\n defaultValue,\n onChange: onChange as any,\n locale,\n format: valueFormat,\n labelSeparator,\n closeOnChange,\n sortDates,\n valueFormatter,\n });\n\n const _defaultDate = Array.isArray(_value) ? _value[0] || defaultDate : _value || defaultDate;\n\n return (\n <PickerInputBase\n formattedValue={formattedValue}\n dropdownOpened={dropdownOpened}\n dropdownHandlers={dropdownHandlers}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n onClear={onClear}\n shouldClear={shouldClear}\n value={_value}\n size={size}\n variant={variant}\n dropdownType={dropdownType}\n {...others}\n type={type as any}\n __staticSelector=\"DatePickerInput\"\n attributes={attributes}\n >\n <DatePicker\n {...calendarProps}\n size={size}\n variant={variant}\n type={type}\n value={_value}\n defaultDate={_defaultDate || getDefaultClampedDate({ maxDate, minDate })}\n onChange={setValue}\n locale={locale}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n __staticSelector=\"DatePickerInput\"\n __stopPropagation={dropdownType === 'popover'}\n minDate={minDate}\n maxDate={maxDate}\n presets={presets}\n attributes={attributes}\n />\n </PickerInputBase>\n );\n }\n) as any;\n\nDatePickerInput.classes = { ...PickerInputBase.classes, ...DatePicker.classes };\nDatePickerInput.displayName = '@mantine/dates/DatePickerInput';\n\nexport namespace DatePickerInput {\n export type Props = DatePickerInputProps;\n export type StylesNames = DatePickerInputStylesNames;\n export type Factory = DatePickerInputFactory;\n}\n"],"mappings":";;;;;;;;;;AAqCA,MAAM,eAAe;CACnB,MAAM;CACN,MAAM;CACN,aAAa;CACb,eAAe;CACf,WAAW;CACX,cAAc;CACf;AAQD,MAAa,mBAAA,GAAA,cAAA,UACV,WAAW;CACV,MAAM,SAAA,GAAA,cAAA,UAAiB,mBAAmB,cAAc,OAAO;CAC/D,MAAM,EACJ,MACA,OACA,cACA,UACA,aACA,gBACA,QACA,YACA,QACA,UACA,eACA,MACA,SACA,cACA,WACA,SACA,SACA,MACA,aACA,gBACA,SACA,YACA,GAAG,SACD;CAEJ,MAAM,EAAE,oBAAoB,oBAAA,GAAA,cAAA,sBAAgE;EAC1F;EACA;EACA;EACD,CAAC;CAEF,MAAM,EAAE,eAAe,WAAWA,mCAAAA,kBAAkB,KAAK;CAEzD,MAAM,EACJ,QACA,UACA,gBACA,kBACA,gBACA,SACA,gBACEC,wBAAAA,cAAc;EACV;EACN;EACA;EACU;EACV;EACA,QAAQ;EACR;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,eAAe,MAAM,QAAQ,OAAO,GAAG,OAAO,MAAM,cAAc,UAAU;AAElF,QACE,iBAAA,GAAA,kBAAA,KAACC,wBAAAA,iBAAD;EACkB;EACA;EACE;EAClB,YAAY;EACZ,QAAQ;EACE;EACD;EACI;EACb,OAAO;EACD;EACG;EACK;EACd,GAAI;EACE;EACN,kBAAiB;EACL;YAEZ,iBAAA,GAAA,kBAAA,KAACC,mBAAAA,YAAD;GACE,GAAI;GACE;GACG;GACH;GACN,OAAO;GACP,aAAa,gBAAgBC,iCAAAA,sBAAsB;IAAE;IAAS;IAAS,CAAC;GACxE,UAAU;GACF;GACR,YAAY;GACZ,QAAQ;GACE;GACV,kBAAiB;GACjB,mBAAmB,iBAAiB;GAC3B;GACA;GACA;GACG;GACZ,CAAA;EACc,CAAA;EAGvB;AAED,gBAAgB,UAAU;CAAE,GAAGF,wBAAAA,gBAAgB;CAAS,GAAGC,mBAAAA,WAAW;CAAS;AAC/E,gBAAgB,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DateTimePicker.cjs","names":["pickCalendarProps","useDatesContext","useUncontrolledDates","assignTime","clampDate","PickerInputBase","DatePicker","getDefaultClampedDate","TimePicker","getMinTime","getMaxTime","ActionIcon","CheckIcon","classes"],"sources":["../../../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useRef, useState } from 'react';\nimport {\n ActionIcon,\n ActionIconProps,\n BoxProps,\n CheckIcon,\n factory,\n Factory,\n InputVariant,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '@mantine/core';\nimport { useDidUpdate, useDisclosure, useMergedRef } from '@mantine/hooks';\nimport { useUncontrolledDates } from '../../hooks';\nimport { CalendarLevel, DateStringValue, DateValue } from '../../types';\nimport { assignTime, clampDate, getDefaultClampedDate } from '../../utils';\nimport {\n CalendarBaseProps,\n CalendarSettings,\n CalendarStylesNames,\n pickCalendarProps,\n} from '../Calendar';\nimport { DatePicker, DatePickerPreset } from '../DatePicker';\nimport { useDatesContext } from '../DatesProvider';\nimport {\n DateInputSharedProps,\n PickerInputBase,\n PickerInputBaseStylesNames,\n} from '../PickerInputBase';\nimport { TimePicker, TimePickerProps } from '../TimePicker/TimePicker';\nimport { getMaxTime, getMinTime } from './get-min-max-time/get-min-max-time';\nimport classes from './DateTimePicker.module.css';\n\nexport type DateTimePickerStylesNames =\n | 'timeWrapper'\n | 'timeInput'\n | 'submitButton'\n | 'placeholder'\n | PickerInputBaseStylesNames\n | CalendarStylesNames;\n\nexport interface DateTimePickerProps\n extends\n BoxProps,\n Omit<\n DateInputSharedProps,\n 'classNames' | 'styles' | 'closeOnChange' | 'size' | 'valueFormatter'\n >,\n CalendarBaseProps,\n Omit<CalendarSettings, 'onYearMouseEnter' | 'onMonthMouseEnter' | 'hasNextLevel'>,\n StylesApiProps<DateTimePickerFactory> {\n /** `dayjs` format for input value @default \"DD/MM/YYYY HH:mm\" */\n valueFormat?: string;\n\n /** Controlled component value */\n value?: DateValue;\n\n /** Uncontrolled component default value */\n defaultValue?: DateValue;\n\n /** Called when value changes */\n onChange?: (value: DateStringValue | null) => void;\n\n /** Default time value in HH:mm` or `HH:mm:ss` format. Assigned to time when date is selected. */\n defaultTimeValue?: string;\n\n /** Props passed down to `TimePicker` component */\n timePickerProps?: Omit<TimePickerProps, 'defaultValue' | 'value'>;\n\n /** Props passed down to the submit button */\n submitButtonProps?: ActionIconProps & React.ComponentProps<'button'>;\n\n /** Determines whether the seconds input should be displayed @default false */\n withSeconds?: boolean;\n\n /** Max level that user can go up to @default 'decade' */\n maxLevel?: CalendarLevel;\n\n /** Presets values */\n presets?: DatePickerPreset<'default'>[];\n}\n\nexport type DateTimePickerFactory = Factory<{\n props: DateTimePickerProps;\n ref: HTMLButtonElement;\n stylesNames: DateTimePickerStylesNames;\n variant: InputVariant;\n}>;\n\nconst defaultProps = {\n dropdownType: 'popover',\n size: 'sm',\n} satisfies Partial<DateTimePickerProps>;\n\nexport const DateTimePicker = factory<DateTimePickerFactory>((_props) => {\n const props = useProps('DateTimePicker', defaultProps, _props);\n const {\n value,\n defaultValue,\n onChange,\n valueFormat,\n locale,\n classNames,\n styles,\n unstyled,\n timePickerProps,\n submitButtonProps,\n withSeconds,\n level,\n defaultLevel,\n size,\n variant,\n dropdownType,\n vars,\n minDate,\n maxDate,\n defaultDate,\n defaultTimeValue,\n presets,\n attributes,\n onDropdownClose,\n ...rest\n } = props;\n\n const getStyles = useStyles<DateTimePickerFactory>({\n name: 'DateTimePicker',\n classes,\n props,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<DateTimePickerFactory>({\n classNames,\n styles,\n props,\n });\n\n const _valueFormat = valueFormat || (withSeconds ? 'DD/MM/YYYY HH:mm:ss' : 'DD/MM/YYYY HH:mm');\n\n const timePickerRef = useRef<HTMLInputElement>(null);\n const timePickerRefMerged = useMergedRef(timePickerRef, timePickerProps?.hoursRef);\n\n const {\n calendarProps: { allowSingleDateInRange, ...calendarProps },\n others,\n } = pickCalendarProps(rest);\n\n const ctx = useDatesContext();\n const [_value, setValue] = useUncontrolledDates({\n type: 'default',\n value,\n defaultValue,\n onChange,\n withTime: true,\n });\n\n const _defaultDate = defaultDate || _value;\n\n const formatTime = (dateValue: DateStringValue) =>\n dateValue ? dayjs(dateValue).format(withSeconds ? 'HH:mm:ss' : 'HH:mm') : '';\n\n const [timeValue, setTimeValue] = useState(defaultTimeValue || formatTime(_value));\n const [currentLevel, setCurrentLevel] = useState(level || defaultLevel || 'month');\n\n const [dropdownOpened, dropdownHandlers] = useDisclosure(false);\n const formattedValue = _value\n ? dayjs(_value).locale(ctx.getLocale(locale)).format(_valueFormat)\n : '';\n\n const handleTimeChange = (timeString: string) => {\n timePickerProps?.onChange?.(timeString);\n setTimeValue(timeString);\n\n if (timeString) {\n setValue(assignTime(_value, timeString));\n }\n };\n\n const handleDateChange = (date: DateValue) => {\n if (date) {\n setValue(assignTime(clampDate(minDate, maxDate, date), timeValue || defaultTimeValue || ''));\n }\n timePickerRef.current?.focus();\n };\n\n const handleTimeInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n dropdownHandlers.close();\n }\n };\n\n useDidUpdate(() => {\n if (!dropdownOpened) {\n setTimeValue(formatTime(_value));\n }\n }, [_value, dropdownOpened]);\n\n useDidUpdate(() => {\n if (dropdownOpened) {\n setCurrentLevel('month');\n }\n }, [dropdownOpened]);\n\n const __stopPropagation = dropdownType === 'popover';\n\n const handleDropdownClose = () => {\n const clamped = clampDate(minDate, maxDate, _value);\n if (_value && _value !== clamped) {\n setValue(clampDate(minDate, maxDate, _value));\n }\n onDropdownClose?.();\n };\n\n return (\n <PickerInputBase\n formattedValue={formattedValue}\n dropdownOpened={!rest.disabled ? dropdownOpened : false}\n dropdownHandlers={dropdownHandlers}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n onClear={() => setValue(null)}\n shouldClear={!!_value}\n value={_value}\n size={size}\n variant={variant}\n dropdownType={dropdownType}\n {...others}\n type=\"default\"\n __staticSelector=\"DateTimePicker\"\n onDropdownClose={handleDropdownClose}\n withTime\n attributes={attributes}\n >\n <DatePicker\n {...calendarProps}\n maxDate={maxDate}\n minDate={minDate}\n size={size}\n variant={variant}\n type=\"default\"\n value={_value}\n defaultDate={_defaultDate || getDefaultClampedDate({ maxDate, minDate })}\n onChange={handleDateChange}\n locale={locale}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n __staticSelector=\"DateTimePicker\"\n __stopPropagation={__stopPropagation}\n level={level}\n defaultLevel={defaultLevel}\n onLevelChange={(_level) => {\n setCurrentLevel(_level);\n calendarProps.onLevelChange?.(_level);\n }}\n presets={presets}\n __onPresetSelect={(val) => {\n setValue(val);\n val && setTimeValue(formatTime(val));\n }}\n attributes={attributes}\n />\n\n {currentLevel === 'month' && (\n <div {...getStyles('timeWrapper')}>\n <TimePicker\n value={timeValue}\n withSeconds={withSeconds}\n unstyled={unstyled}\n min={getMinTime({ minDate, value: _value })}\n max={getMaxTime({ maxDate, value: _value })}\n {...timePickerProps}\n {...getStyles('timeInput', {\n className: timePickerProps?.className,\n style: timePickerProps?.style,\n })}\n onChange={handleTimeChange}\n onKeyDown={handleTimeInputKeyDown}\n size={size}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n hoursRef={timePickerRefMerged}\n attributes={attributes}\n />\n\n <ActionIcon\n variant=\"default\"\n size={`input-${size || 'sm'}`}\n {...getStyles('submitButton', {\n className: submitButtonProps?.className,\n style: submitButtonProps?.style,\n })}\n unstyled={unstyled}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n // eslint-disable-next-line react/no-children-prop\n children={<CheckIcon size=\"30%\" />}\n {...submitButtonProps}\n onClick={(event) => {\n submitButtonProps?.onClick?.(event);\n dropdownHandlers.close();\n handleDropdownClose();\n }}\n />\n </div>\n )}\n </PickerInputBase>\n );\n});\n\nDateTimePicker.classes = { ...classes, ...PickerInputBase.classes, ...DatePicker.classes };\nDateTimePicker.displayName = '@mantine/dates/DateTimePicker';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DateTimePicker.cjs","names":["pickCalendarProps","useDatesContext","useUncontrolledDates","assignTime","clampDate","PickerInputBase","DatePicker","getDefaultClampedDate","TimePicker","getMinTime","getMaxTime","ActionIcon","CheckIcon","classes"],"sources":["../../../src/components/DateTimePicker/DateTimePicker.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport { useRef, useState } from 'react';\nimport {\n ActionIcon,\n ActionIconProps,\n BoxProps,\n CheckIcon,\n factory,\n Factory,\n InputVariant,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '@mantine/core';\nimport { useDidUpdate, useDisclosure, useMergedRef } from '@mantine/hooks';\nimport { useUncontrolledDates } from '../../hooks';\nimport { CalendarLevel, DateStringValue, DateValue } from '../../types';\nimport { assignTime, clampDate, getDefaultClampedDate } from '../../utils';\nimport {\n CalendarBaseProps,\n CalendarSettings,\n CalendarStylesNames,\n pickCalendarProps,\n} from '../Calendar';\nimport { DatePicker, DatePickerPreset } from '../DatePicker';\nimport { useDatesContext } from '../DatesProvider';\nimport {\n DateInputSharedProps,\n PickerInputBase,\n PickerInputBaseStylesNames,\n} from '../PickerInputBase';\nimport { TimePicker, TimePickerProps } from '../TimePicker/TimePicker';\nimport { getMaxTime, getMinTime } from './get-min-max-time/get-min-max-time';\nimport classes from './DateTimePicker.module.css';\n\nexport type DateTimePickerStylesNames =\n | 'timeWrapper'\n | 'timeInput'\n | 'submitButton'\n | 'placeholder'\n | PickerInputBaseStylesNames\n | CalendarStylesNames;\n\nexport interface DateTimePickerProps\n extends\n BoxProps,\n Omit<\n DateInputSharedProps,\n 'classNames' | 'styles' | 'closeOnChange' | 'size' | 'valueFormatter'\n >,\n CalendarBaseProps,\n Omit<CalendarSettings, 'onYearMouseEnter' | 'onMonthMouseEnter' | 'hasNextLevel'>,\n StylesApiProps<DateTimePickerFactory> {\n /** `dayjs` format for input value @default \"DD/MM/YYYY HH:mm\" */\n valueFormat?: string;\n\n /** Controlled component value */\n value?: DateValue;\n\n /** Uncontrolled component default value */\n defaultValue?: DateValue;\n\n /** Called when value changes */\n onChange?: (value: DateStringValue | null) => void;\n\n /** Default time value in HH:mm` or `HH:mm:ss` format. Assigned to time when date is selected. */\n defaultTimeValue?: string;\n\n /** Props passed down to `TimePicker` component */\n timePickerProps?: Omit<TimePickerProps, 'defaultValue' | 'value'>;\n\n /** Props passed down to the submit button */\n submitButtonProps?: ActionIconProps & React.ComponentProps<'button'>;\n\n /** Determines whether the seconds input should be displayed @default false */\n withSeconds?: boolean;\n\n /** Max level that user can go up to @default 'decade' */\n maxLevel?: CalendarLevel;\n\n /** Presets values */\n presets?: DatePickerPreset<'default'>[];\n}\n\nexport type DateTimePickerFactory = Factory<{\n props: DateTimePickerProps;\n ref: HTMLButtonElement;\n stylesNames: DateTimePickerStylesNames;\n variant: InputVariant;\n}>;\n\nconst defaultProps = {\n dropdownType: 'popover',\n size: 'sm',\n} satisfies Partial<DateTimePickerProps>;\n\nexport const DateTimePicker = factory<DateTimePickerFactory>((_props) => {\n const props = useProps('DateTimePicker', defaultProps, _props);\n const {\n value,\n defaultValue,\n onChange,\n valueFormat,\n locale,\n classNames,\n styles,\n unstyled,\n timePickerProps,\n submitButtonProps,\n withSeconds,\n level,\n defaultLevel,\n size,\n variant,\n dropdownType,\n vars,\n minDate,\n maxDate,\n defaultDate,\n defaultTimeValue,\n presets,\n attributes,\n onDropdownClose,\n ...rest\n } = props;\n\n const getStyles = useStyles<DateTimePickerFactory>({\n name: 'DateTimePicker',\n classes,\n props,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<DateTimePickerFactory>({\n classNames,\n styles,\n props,\n });\n\n const _valueFormat = valueFormat || (withSeconds ? 'DD/MM/YYYY HH:mm:ss' : 'DD/MM/YYYY HH:mm');\n\n const timePickerRef = useRef<HTMLInputElement>(null);\n const timePickerRefMerged = useMergedRef(timePickerRef, timePickerProps?.hoursRef);\n\n const {\n calendarProps: { allowSingleDateInRange, ...calendarProps },\n others,\n } = pickCalendarProps(rest);\n\n const ctx = useDatesContext();\n const [_value, setValue] = useUncontrolledDates({\n type: 'default',\n value,\n defaultValue,\n onChange,\n withTime: true,\n });\n\n const _defaultDate = defaultDate || _value;\n\n const formatTime = (dateValue: DateStringValue) =>\n dateValue ? dayjs(dateValue).format(withSeconds ? 'HH:mm:ss' : 'HH:mm') : '';\n\n const [timeValue, setTimeValue] = useState(defaultTimeValue || formatTime(_value));\n const [currentLevel, setCurrentLevel] = useState(level || defaultLevel || 'month');\n\n const [dropdownOpened, dropdownHandlers] = useDisclosure(false);\n const formattedValue = _value\n ? dayjs(_value).locale(ctx.getLocale(locale)).format(_valueFormat)\n : '';\n\n const handleTimeChange = (timeString: string) => {\n timePickerProps?.onChange?.(timeString);\n setTimeValue(timeString);\n\n if (timeString) {\n setValue(assignTime(_value, timeString));\n }\n };\n\n const handleDateChange = (date: DateValue) => {\n if (date) {\n setValue(assignTime(clampDate(minDate, maxDate, date), timeValue || defaultTimeValue || ''));\n }\n timePickerRef.current?.focus();\n };\n\n const handleTimeInputKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n dropdownHandlers.close();\n }\n };\n\n useDidUpdate(() => {\n if (!dropdownOpened) {\n setTimeValue(formatTime(_value));\n }\n }, [_value, dropdownOpened]);\n\n useDidUpdate(() => {\n if (dropdownOpened) {\n setCurrentLevel('month');\n }\n }, [dropdownOpened]);\n\n const __stopPropagation = dropdownType === 'popover';\n\n const handleDropdownClose = () => {\n const clamped = clampDate(minDate, maxDate, _value);\n if (_value && _value !== clamped) {\n setValue(clampDate(minDate, maxDate, _value));\n }\n onDropdownClose?.();\n };\n\n return (\n <PickerInputBase\n formattedValue={formattedValue}\n dropdownOpened={!rest.disabled ? dropdownOpened : false}\n dropdownHandlers={dropdownHandlers}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n onClear={() => setValue(null)}\n shouldClear={!!_value}\n value={_value}\n size={size}\n variant={variant}\n dropdownType={dropdownType}\n {...others}\n type=\"default\"\n __staticSelector=\"DateTimePicker\"\n onDropdownClose={handleDropdownClose}\n withTime\n attributes={attributes}\n >\n <DatePicker\n {...calendarProps}\n maxDate={maxDate}\n minDate={minDate}\n size={size}\n variant={variant}\n type=\"default\"\n value={_value}\n defaultDate={_defaultDate || getDefaultClampedDate({ maxDate, minDate })}\n onChange={handleDateChange}\n locale={locale}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n __staticSelector=\"DateTimePicker\"\n __stopPropagation={__stopPropagation}\n level={level}\n defaultLevel={defaultLevel}\n onLevelChange={(_level) => {\n setCurrentLevel(_level);\n calendarProps.onLevelChange?.(_level);\n }}\n presets={presets}\n __onPresetSelect={(val) => {\n setValue(val);\n val && setTimeValue(formatTime(val));\n }}\n attributes={attributes}\n />\n\n {currentLevel === 'month' && (\n <div {...getStyles('timeWrapper')}>\n <TimePicker\n value={timeValue}\n withSeconds={withSeconds}\n unstyled={unstyled}\n min={getMinTime({ minDate, value: _value })}\n max={getMaxTime({ maxDate, value: _value })}\n {...timePickerProps}\n {...getStyles('timeInput', {\n className: timePickerProps?.className,\n style: timePickerProps?.style,\n })}\n onChange={handleTimeChange}\n onKeyDown={handleTimeInputKeyDown}\n size={size}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n hoursRef={timePickerRefMerged}\n attributes={attributes}\n />\n\n <ActionIcon\n variant=\"default\"\n size={`input-${size || 'sm'}`}\n {...getStyles('submitButton', {\n className: submitButtonProps?.className,\n style: submitButtonProps?.style,\n })}\n unstyled={unstyled}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n // oxlint-disable-next-line react/no-children-prop\n children={<CheckIcon size=\"30%\" />}\n {...submitButtonProps}\n onClick={(event) => {\n submitButtonProps?.onClick?.(event);\n dropdownHandlers.close();\n handleDropdownClose();\n }}\n />\n </div>\n )}\n </PickerInputBase>\n );\n});\n\nDateTimePicker.classes = { ...classes, ...PickerInputBase.classes, ...DatePicker.classes };\nDateTimePicker.displayName = '@mantine/dates/DateTimePicker';\n\nexport namespace DateTimePicker {\n export type Props = DateTimePickerProps;\n export type StylesNames = DateTimePickerStylesNames;\n export type Factory = DateTimePickerFactory;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DatesProvider.cjs","names":[],"sources":["../../../src/components/DatesProvider/DatesProvider.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport { DayOfWeek } from '../../types';\n\nexport interface DatesProviderValue {\n locale: string;\n firstDayOfWeek: DayOfWeek;\n weekendDays: DayOfWeek[];\n labelSeparator: string;\n consistentWeeks: boolean;\n}\n\nexport type DatesProviderSettings = Partial<DatesProviderValue>;\n\nexport const DATES_PROVIDER_DEFAULT_SETTINGS: DatesProviderValue = {\n locale: 'en',\n firstDayOfWeek: 1,\n weekendDays: [0, 6],\n labelSeparator: '–',\n consistentWeeks: false,\n};\n\nexport const DatesProviderContext = createContext(DATES_PROVIDER_DEFAULT_SETTINGS);\n\nexport interface DatesProviderProps {\n settings: DatesProviderSettings;\n children?: React.ReactNode;\n}\n\nexport function DatesProvider({ settings, children }: DatesProviderProps) {\n return (\n <DatesProviderContext value={{ ...DATES_PROVIDER_DEFAULT_SETTINGS, ...settings }}>\n {children}\n </DatesProviderContext>\n );\n}\n"],"mappings":";;;;;AAaA,MAAa,kCAAsD;CACjE,QAAQ;CACR,gBAAgB;CAChB,aAAa,CAAC,GAAG,EAAE;CACnB,gBAAgB;CAChB,iBAAiB;CAClB;AAED,MAAa,wBAAA,GAAA,MAAA,eAAqC,gCAAgC;AAOlF,SAAgB,cAAc,EAAE,UAAU,YAAgC;AACxE,QACE,iBAAA,GAAA,kBAAA,KAAC,sBAAD;EAAsB,OAAO;GAAE,GAAG;GAAiC,GAAG;GAAU;EAC7E;EACoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"DatesProvider.cjs","names":[],"sources":["../../../src/components/DatesProvider/DatesProvider.tsx"],"sourcesContent":["import { createContext } from 'react';\nimport { DayOfWeek } from '../../types';\n\nexport interface DatesProviderValue {\n locale: string;\n firstDayOfWeek: DayOfWeek;\n weekendDays: DayOfWeek[];\n labelSeparator: string;\n consistentWeeks: boolean;\n}\n\nexport type DatesProviderSettings = Partial<DatesProviderValue>;\n\nexport const DATES_PROVIDER_DEFAULT_SETTINGS: DatesProviderValue = {\n locale: 'en',\n firstDayOfWeek: 1,\n weekendDays: [0, 6],\n labelSeparator: '–',\n consistentWeeks: false,\n};\n\nexport const DatesProviderContext = createContext(DATES_PROVIDER_DEFAULT_SETTINGS);\n\nexport interface DatesProviderProps {\n settings: DatesProviderSettings;\n children?: React.ReactNode;\n}\n\nexport function DatesProvider({ settings, children }: DatesProviderProps) {\n return (\n <DatesProviderContext value={{ ...DATES_PROVIDER_DEFAULT_SETTINGS, ...settings }}>\n {children}\n </DatesProviderContext>\n );\n}\n\nexport namespace DatesProvider {\n export type Props = DatesProviderProps;\n export type Settings = DatesProviderSettings;\n}\n"],"mappings":";;;;;AAaA,MAAa,kCAAsD;CACjE,QAAQ;CACR,gBAAgB;CAChB,aAAa,CAAC,GAAG,EAAE;CACnB,gBAAgB;CAChB,iBAAiB;CAClB;AAED,MAAa,wBAAA,GAAA,MAAA,eAAqC,gCAAgC;AAOlF,SAAgB,cAAc,EAAE,UAAU,YAAgC;AACxE,QACE,iBAAA,GAAA,kBAAA,KAAC,sBAAD;EAAsB,OAAO;GAAE,GAAG;GAAiC,GAAG;GAAU;EAC7E;EACoB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Day.cjs","names":["UnstyledButton","classes"],"sources":["../../../src/components/Day/Day.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport {\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getSize,\n MantineSize,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { DateStringValue } from '../../types';\nimport classes from './Day.module.css';\n\nexport type RenderDay = (date: DateStringValue) => React.ReactNode;\n\nexport type DayStylesNames = 'day';\nexport type DayCssVariables = {\n day: '--day-size';\n};\n\nexport interface DayProps extends BoxProps, StylesApiProps<DayFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Determines which element is used as root, `'button'` by default, `'div'` if static prop is set */\n static?: boolean;\n\n /** Date that is displayed in `YYYY-MM-DD` format */\n date: DateStringValue;\n\n /** Control width and height of the day @default 'sm' */\n size?: MantineSize;\n\n /** Determines whether the day is considered to be a weekend @default false */\n weekend?: boolean;\n\n /** Determines whether the day is outside of the current month @default false */\n outside?: boolean;\n\n /** Determines whether the day is selected @default false */\n selected?: boolean;\n\n /** Determines whether the day should not be displayed @default false */\n hidden?: boolean;\n\n /** Determines whether the day is selected in range @default false */\n inRange?: boolean;\n\n /** Determines whether the day is first in range selection @default false */\n firstInRange?: boolean;\n\n /** Determines whether the day is last in range selection @default false */\n lastInRange?: boolean;\n\n /** Controls day value rendering */\n renderDay?: RenderDay;\n\n /** Determines whether today should be highlighted with a border @default false */\n highlightToday?: boolean;\n\n /** Determines whether the day should take the full width of its cell @default false */\n fullWidth?: boolean;\n}\n\nexport type DayFactory = Factory<{\n props: DayProps;\n ref: HTMLButtonElement;\n stylesNames: DayStylesNames;\n vars: DayCssVariables;\n}>;\n\nconst varsResolver = createVarsResolver<DayFactory>((_, { size }) => ({\n day: {\n '--day-size': getSize(size, 'day-size'),\n },\n}));\n\nexport const Day = factory<DayFactory>((_props) => {\n const props = useProps('Day', null, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n date,\n disabled,\n __staticSelector,\n weekend,\n outside,\n selected,\n renderDay,\n inRange,\n firstInRange,\n lastInRange,\n hidden,\n static: isStatic,\n highlightToday,\n fullWidth,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<DayFactory>({\n name: __staticSelector || 'Day',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'day',\n });\n\n return (\n <UnstyledButton<any>\n {...getStyles('day', { style: hidden ? { display: 'none' } : undefined })}\n component={isStatic ? 'div' : 'button'}\n disabled={disabled}\n data-today={dayjs(date).isSame(new Date(), 'day') || undefined}\n data-hidden={hidden || undefined}\n data-highlight-today={highlightToday || undefined}\n data-disabled={disabled || undefined}\n data-weekend={(!disabled && !outside && weekend) || undefined}\n data-outside={(!disabled && outside) || undefined}\n data-selected={(!disabled && selected) || undefined}\n data-in-range={(inRange && !disabled) || undefined}\n data-first-in-range={(firstInRange && !disabled) || undefined}\n data-last-in-range={(lastInRange && !disabled) || undefined}\n data-static={isStatic || undefined}\n data-full-width={fullWidth || undefined}\n unstyled={unstyled}\n {...others}\n >\n {renderDay?.(date) || dayjs(date).date()}\n </UnstyledButton>\n );\n});\n\nDay.classes = classes;\nDay.varsResolver = varsResolver;\nDay.displayName = '@mantine/dates/Day';\n"],"mappings":";;;;;;;;AA0EA,MAAM,gBAAA,GAAA,cAAA,qBAA+C,GAAG,EAAE,YAAY,EACpE,KAAK,EACH,eAAA,GAAA,cAAA,SAAsB,MAAM,WAAW,EACxC,EACF,EAAE;AAEH,MAAa,OAAA,GAAA,cAAA,UAA2B,WAAW;CACjD,MAAM,SAAA,GAAA,cAAA,UAAiB,OAAO,MAAM,OAAO;CAC3C,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,UACA,kBACA,SACA,SACA,UACA,WACA,SACA,cACA,aACA,QACA,QAAQ,UACR,gBACA,WACA,YACA,GAAG,WACD;AAiBJ,QACE,iBAAA,GAAA,kBAAA,KAACA,cAAAA,gBAAD;EACE,IAAA,GAAA,cAAA,WAjBoC;GACtC,MAAM,oBAAoB;GAC1B,SAAA,mBAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,cAAc;GACf,CAAC,CAIgB,OAAO,EAAE,OAAO,SAAS,EAAE,SAAS,QAAQ,GAAG,KAAA,GAAW,CAAC;EACzE,WAAW,WAAW,QAAQ;EACpB;EACV,eAAA,GAAA,MAAA,SAAkB,KAAK,CAAC,uBAAO,IAAI,MAAM,EAAE,MAAM,IAAI,KAAA;EACrD,eAAa,UAAU,KAAA;EACvB,wBAAsB,kBAAkB,KAAA;EACxC,iBAAe,YAAY,KAAA;EAC3B,gBAAe,CAAC,YAAY,CAAC,WAAW,WAAY,KAAA;EACpD,gBAAe,CAAC,YAAY,WAAY,KAAA;EACxC,iBAAgB,CAAC,YAAY,YAAa,KAAA;EAC1C,iBAAgB,WAAW,CAAC,YAAa,KAAA;EACzC,uBAAsB,gBAAgB,CAAC,YAAa,KAAA;EACpD,sBAAqB,eAAe,CAAC,YAAa,KAAA;EAClD,eAAa,YAAY,KAAA;EACzB,mBAAiB,aAAa,KAAA;EACpB;EACV,GAAI;YAEH,YAAY,KAAK,KAAA,GAAA,MAAA,SAAU,KAAK,CAAC,MAAM;EACzB,CAAA;EAEnB;AAEF,IAAI,UAAUC,mBAAAA;AACd,IAAI,eAAe;AACnB,IAAI,cAAc"}
|
|
1
|
+
{"version":3,"file":"Day.cjs","names":["UnstyledButton","classes"],"sources":["../../../src/components/Day/Day.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport {\n BoxProps,\n createVarsResolver,\n ElementProps,\n factory,\n Factory,\n getSize,\n MantineSize,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { DateStringValue } from '../../types';\nimport classes from './Day.module.css';\n\nexport type RenderDay = (date: DateStringValue) => React.ReactNode;\n\nexport type DayStylesNames = 'day';\nexport type DayCssVariables = {\n day: '--day-size';\n};\n\nexport interface DayProps extends BoxProps, StylesApiProps<DayFactory>, ElementProps<'button'> {\n __staticSelector?: string;\n\n /** Determines which element is used as root, `'button'` by default, `'div'` if static prop is set */\n static?: boolean;\n\n /** Date that is displayed in `YYYY-MM-DD` format */\n date: DateStringValue;\n\n /** Control width and height of the day @default 'sm' */\n size?: MantineSize;\n\n /** Determines whether the day is considered to be a weekend @default false */\n weekend?: boolean;\n\n /** Determines whether the day is outside of the current month @default false */\n outside?: boolean;\n\n /** Determines whether the day is selected @default false */\n selected?: boolean;\n\n /** Determines whether the day should not be displayed @default false */\n hidden?: boolean;\n\n /** Determines whether the day is selected in range @default false */\n inRange?: boolean;\n\n /** Determines whether the day is first in range selection @default false */\n firstInRange?: boolean;\n\n /** Determines whether the day is last in range selection @default false */\n lastInRange?: boolean;\n\n /** Controls day value rendering */\n renderDay?: RenderDay;\n\n /** Determines whether today should be highlighted with a border @default false */\n highlightToday?: boolean;\n\n /** Determines whether the day should take the full width of its cell @default false */\n fullWidth?: boolean;\n}\n\nexport type DayFactory = Factory<{\n props: DayProps;\n ref: HTMLButtonElement;\n stylesNames: DayStylesNames;\n vars: DayCssVariables;\n}>;\n\nconst varsResolver = createVarsResolver<DayFactory>((_, { size }) => ({\n day: {\n '--day-size': getSize(size, 'day-size'),\n },\n}));\n\nexport const Day = factory<DayFactory>((_props) => {\n const props = useProps('Day', null, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n date,\n disabled,\n __staticSelector,\n weekend,\n outside,\n selected,\n renderDay,\n inRange,\n firstInRange,\n lastInRange,\n hidden,\n static: isStatic,\n highlightToday,\n fullWidth,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<DayFactory>({\n name: __staticSelector || 'Day',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'day',\n });\n\n return (\n <UnstyledButton<any>\n {...getStyles('day', { style: hidden ? { display: 'none' } : undefined })}\n component={isStatic ? 'div' : 'button'}\n disabled={disabled}\n data-today={dayjs(date).isSame(new Date(), 'day') || undefined}\n data-hidden={hidden || undefined}\n data-highlight-today={highlightToday || undefined}\n data-disabled={disabled || undefined}\n data-weekend={(!disabled && !outside && weekend) || undefined}\n data-outside={(!disabled && outside) || undefined}\n data-selected={(!disabled && selected) || undefined}\n data-in-range={(inRange && !disabled) || undefined}\n data-first-in-range={(firstInRange && !disabled) || undefined}\n data-last-in-range={(lastInRange && !disabled) || undefined}\n data-static={isStatic || undefined}\n data-full-width={fullWidth || undefined}\n unstyled={unstyled}\n {...others}\n >\n {renderDay?.(date) || dayjs(date).date()}\n </UnstyledButton>\n );\n});\n\nDay.classes = classes;\nDay.varsResolver = varsResolver;\nDay.displayName = '@mantine/dates/Day';\n\nexport namespace Day {\n export type Props = DayProps;\n export type StylesNames = DayStylesNames;\n export type Factory = DayFactory;\n export type CssVariables = DayCssVariables;\n}\n"],"mappings":";;;;;;;;AA0EA,MAAM,gBAAA,GAAA,cAAA,qBAA+C,GAAG,EAAE,YAAY,EACpE,KAAK,EACH,eAAA,GAAA,cAAA,SAAsB,MAAM,WAAW,EACxC,EACF,EAAE;AAEH,MAAa,OAAA,GAAA,cAAA,UAA2B,WAAW;CACjD,MAAM,SAAA,GAAA,cAAA,UAAiB,OAAO,MAAM,OAAO;CAC3C,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,UACA,kBACA,SACA,SACA,UACA,WACA,SACA,cACA,aACA,QACA,QAAQ,UACR,gBACA,WACA,YACA,GAAG,WACD;AAiBJ,QACE,iBAAA,GAAA,kBAAA,KAACA,cAAAA,gBAAD;EACE,IAAA,GAAA,cAAA,WAjBoC;GACtC,MAAM,oBAAoB;GAC1B,SAAA,mBAAA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,cAAc;GACf,CAAC,CAIgB,OAAO,EAAE,OAAO,SAAS,EAAE,SAAS,QAAQ,GAAG,KAAA,GAAW,CAAC;EACzE,WAAW,WAAW,QAAQ;EACpB;EACV,eAAA,GAAA,MAAA,SAAkB,KAAK,CAAC,uBAAO,IAAI,MAAM,EAAE,MAAM,IAAI,KAAA;EACrD,eAAa,UAAU,KAAA;EACvB,wBAAsB,kBAAkB,KAAA;EACxC,iBAAe,YAAY,KAAA;EAC3B,gBAAe,CAAC,YAAY,CAAC,WAAW,WAAY,KAAA;EACpD,gBAAe,CAAC,YAAY,WAAY,KAAA;EACxC,iBAAgB,CAAC,YAAY,YAAa,KAAA;EAC1C,iBAAgB,WAAW,CAAC,YAAa,KAAA;EACzC,uBAAsB,gBAAgB,CAAC,YAAa,KAAA;EACpD,sBAAqB,eAAe,CAAC,YAAa,KAAA;EAClD,eAAa,YAAY,KAAA;EACzB,mBAAiB,aAAa,KAAA;EACpB;EACV,GAAI;YAEH,YAAY,KAAK,KAAA,GAAA,MAAA,SAAU,KAAK,CAAC,MAAM;EACzB,CAAA;EAEnB;AAEF,IAAI,UAAUC,mBAAAA;AACd,IAAI,eAAe;AACnB,IAAI,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniCalendar.cjs","names":["useDatesContext","toDateString","UnstyledButton","Box","AccordionChevron","classes"],"sources":["../../../src/components/MiniCalendar/MiniCalendar.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport {\n AccordionChevron,\n Box,\n BoxProps,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n factory,\n Factory,\n getSize,\n MantineSize,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { toDateString } from '../../utils';\nimport { useDatesContext } from '../DatesProvider';\nimport classes from './MiniCalendar.module.css';\n\nexport type MiniCalendarStylesNames =\n | 'root'\n | 'control'\n | 'days'\n | 'day'\n | 'dayMonth'\n | 'dayNumber';\n\nexport type MiniCalendarCssVariables = {\n root: '--mini-calendar-font-size';\n};\n\nexport interface MiniCalendarProps\n extends BoxProps, StylesApiProps<MiniCalendarFactory>, ElementProps<'div', 'onChange'> {\n /** Controlled component date value, start date of the interval */\n date?: Date | string;\n\n /** Uncontrolled component default value, start date of the interval */\n defaultDate?: Date | string;\n\n /** Called with date in `YYYY-MM-DD` format when date internal changes */\n onDateChange?: (date: string) => void;\n\n /** Selected date, controlled value */\n value?: Date | string | null;\n\n /** Called with date in `YYYY-MM-DD` format when date changes */\n onChange?: (date: string) => void;\n\n /** Maximum date that can be selected, date object or date string in `YYYY-MM-DD` format */\n maxDate?: Date | string;\n\n /** Minimum date that can be selected, date object or date string in `YYYY-MM-DD` format */\n minDate?: Date | string;\n\n /** Number of days to display in the calendar @default 7 */\n numberOfDays?: number;\n\n /** Dayjs format string for month label @default MMM */\n monthLabelFormat?: string;\n\n /** Called when the next button is clicked */\n onNext?: () => void;\n\n /** Called when the previous button is clicked */\n onPrevious?: () => void;\n\n /** Props passed down to the day component */\n getDayProps?: (date: string) => Record<string, any>;\n\n /** Component size @default 'sm' */\n size?: MantineSize;\n\n /** Props passed to previous control button */\n previousControlProps?: React.ComponentProps<'button'> & DataAttributes;\n\n /** Props passed to next control button */\n nextControlProps?: React.ComponentProps<'button'> & DataAttributes;\n\n /** dayjs locale used for formatting */\n locale?: string;\n}\n\nexport type MiniCalendarFactory = Factory<{\n props: MiniCalendarProps;\n ref: HTMLDivElement;\n stylesNames: MiniCalendarStylesNames;\n vars: MiniCalendarCssVariables;\n}>;\n\nconst defaultProps = {\n size: 'sm',\n numberOfDays: 7,\n monthLabelFormat: 'MMM',\n} satisfies Partial<MiniCalendarProps>;\n\nconst varsResolver = createVarsResolver<MiniCalendarFactory>((_theme, { size }) => ({\n root: {\n '--mini-calendar-font-size': getSize(size, 'mantine-font-size'),\n },\n}));\n\nexport const MiniCalendar = factory<MiniCalendarFactory>((_props) => {\n const props = useProps('MiniCalendar', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n date,\n defaultDate,\n onDateChange,\n value,\n onChange,\n onNext,\n onPrevious,\n getDayProps,\n numberOfDays,\n size,\n minDate,\n maxDate,\n monthLabelFormat,\n nextControlProps,\n previousControlProps,\n locale,\n ...others\n } = props;\n\n const getStyles = useStyles<MiniCalendarFactory>({\n name: 'MiniCalendar',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n attributes,\n });\n\n const ctx = useDatesContext();\n const _locale = ctx.getLocale(locale);\n\n const [_date, setDate] = useUncontrolled({\n value: toDateString(date),\n defaultValue: toDateString(defaultDate),\n finalValue: toDateString(value) || dayjs().format('YYYY-MM-DD'),\n onChange: onDateChange,\n });\n\n const handleNext = () => {\n onNext?.();\n const nextDate = dayjs(_date).add(numberOfDays, 'days');\n setDate(toDateString(nextDate));\n };\n\n const handlePrevious = () => {\n onPrevious?.();\n const previousDate = dayjs(_date).subtract(numberOfDays, 'days');\n setDate(toDateString(previousDate));\n };\n\n const previousDisabled = minDate\n ? dayjs(_date).subtract(1, 'days').isBefore(dayjs(minDate))\n : false;\n\n const nextDisabled = maxDate\n ? dayjs(_date).add(numberOfDays, 'days').isAfter(dayjs(maxDate))\n : false;\n\n const range = Array(numberOfDays)\n .fill(0)\n .map((_, index) => dayjs(_date).add(index, 'days'))\n .map((date) => {\n const disabled =\n (minDate && date.isBefore(dayjs(minDate), 'day')) ||\n (maxDate && date.isAfter(dayjs(maxDate), 'day')) ||\n false;\n\n const dayProps = getDayProps?.(toDateString(date));\n\n return (\n <UnstyledButton\n key={date.toString()}\n disabled={disabled}\n aria-label={date.format('YYYY-MM-DD')}\n data-disabled={disabled || undefined}\n data-selected={value && dayjs(date).isSame(value, 'day') ? true : undefined}\n {...dayProps}\n onClick={(event) => {\n dayProps?.onClick?.(event);\n onChange?.(toDateString(date));\n }}\n {...getStyles('day', {\n active: !disabled,\n className: dayProps?.className,\n style: dayProps?.style,\n })}\n >\n <span {...getStyles('dayMonth')}>{date.locale(_locale).format(monthLabelFormat)}</span>\n <span {...getStyles('dayNumber')}>{date.date()}</span>\n </UnstyledButton>\n );\n });\n\n return (\n <Box size={size} {...getStyles('root')} {...others}>\n <UnstyledButton\n size={size}\n onClick={handlePrevious}\n disabled={previousDisabled}\n data-disabled={previousDisabled || undefined}\n data-direction=\"previous\"\n {...previousControlProps}\n {...getStyles('control', {\n active: !previousDisabled,\n className: previousControlProps?.className,\n style: previousControlProps?.style,\n })}\n >\n {previousControlProps?.children || <AccordionChevron data-chevron size={size} />}\n </UnstyledButton>\n\n <div {...getStyles('days')}>{range}</div>\n\n <UnstyledButton\n size={size}\n onClick={handleNext}\n disabled={nextDisabled}\n data-disabled={nextDisabled || undefined}\n data-direction=\"next\"\n {...nextControlProps}\n {...getStyles('control', {\n active: !nextDisabled,\n className: nextControlProps?.className,\n style: nextControlProps?.style,\n })}\n >\n {nextControlProps?.children || <AccordionChevron data-chevron size={size} />}\n </UnstyledButton>\n </Box>\n );\n});\n\nMiniCalendar.displayName = '@mantine/dates/MiniCalendar';\nMiniCalendar.classes = classes;\nMiniCalendar.varsResolver = varsResolver;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MiniCalendar.cjs","names":["useDatesContext","toDateString","UnstyledButton","Box","AccordionChevron","classes"],"sources":["../../../src/components/MiniCalendar/MiniCalendar.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport {\n AccordionChevron,\n Box,\n BoxProps,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n factory,\n Factory,\n getSize,\n MantineSize,\n StylesApiProps,\n UnstyledButton,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport { toDateString } from '../../utils';\nimport { useDatesContext } from '../DatesProvider';\nimport classes from './MiniCalendar.module.css';\n\nexport type MiniCalendarStylesNames =\n | 'root'\n | 'control'\n | 'days'\n | 'day'\n | 'dayMonth'\n | 'dayNumber';\n\nexport type MiniCalendarCssVariables = {\n root: '--mini-calendar-font-size';\n};\n\nexport interface MiniCalendarProps\n extends BoxProps, StylesApiProps<MiniCalendarFactory>, ElementProps<'div', 'onChange'> {\n /** Controlled component date value, start date of the interval */\n date?: Date | string;\n\n /** Uncontrolled component default value, start date of the interval */\n defaultDate?: Date | string;\n\n /** Called with date in `YYYY-MM-DD` format when date internal changes */\n onDateChange?: (date: string) => void;\n\n /** Selected date, controlled value */\n value?: Date | string | null;\n\n /** Called with date in `YYYY-MM-DD` format when date changes */\n onChange?: (date: string) => void;\n\n /** Maximum date that can be selected, date object or date string in `YYYY-MM-DD` format */\n maxDate?: Date | string;\n\n /** Minimum date that can be selected, date object or date string in `YYYY-MM-DD` format */\n minDate?: Date | string;\n\n /** Number of days to display in the calendar @default 7 */\n numberOfDays?: number;\n\n /** Dayjs format string for month label @default MMM */\n monthLabelFormat?: string;\n\n /** Called when the next button is clicked */\n onNext?: () => void;\n\n /** Called when the previous button is clicked */\n onPrevious?: () => void;\n\n /** Props passed down to the day component */\n getDayProps?: (date: string) => Record<string, any>;\n\n /** Component size @default 'sm' */\n size?: MantineSize;\n\n /** Props passed to previous control button */\n previousControlProps?: React.ComponentProps<'button'> & DataAttributes;\n\n /** Props passed to next control button */\n nextControlProps?: React.ComponentProps<'button'> & DataAttributes;\n\n /** dayjs locale used for formatting */\n locale?: string;\n}\n\nexport type MiniCalendarFactory = Factory<{\n props: MiniCalendarProps;\n ref: HTMLDivElement;\n stylesNames: MiniCalendarStylesNames;\n vars: MiniCalendarCssVariables;\n}>;\n\nconst defaultProps = {\n size: 'sm',\n numberOfDays: 7,\n monthLabelFormat: 'MMM',\n} satisfies Partial<MiniCalendarProps>;\n\nconst varsResolver = createVarsResolver<MiniCalendarFactory>((_theme, { size }) => ({\n root: {\n '--mini-calendar-font-size': getSize(size, 'mantine-font-size'),\n },\n}));\n\nexport const MiniCalendar = factory<MiniCalendarFactory>((_props) => {\n const props = useProps('MiniCalendar', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n attributes,\n date,\n defaultDate,\n onDateChange,\n value,\n onChange,\n onNext,\n onPrevious,\n getDayProps,\n numberOfDays,\n size,\n minDate,\n maxDate,\n monthLabelFormat,\n nextControlProps,\n previousControlProps,\n locale,\n ...others\n } = props;\n\n const getStyles = useStyles<MiniCalendarFactory>({\n name: 'MiniCalendar',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n vars,\n varsResolver,\n attributes,\n });\n\n const ctx = useDatesContext();\n const _locale = ctx.getLocale(locale);\n\n const [_date, setDate] = useUncontrolled({\n value: toDateString(date),\n defaultValue: toDateString(defaultDate),\n finalValue: toDateString(value) || dayjs().format('YYYY-MM-DD'),\n onChange: onDateChange,\n });\n\n const handleNext = () => {\n onNext?.();\n const nextDate = dayjs(_date).add(numberOfDays, 'days');\n setDate(toDateString(nextDate));\n };\n\n const handlePrevious = () => {\n onPrevious?.();\n const previousDate = dayjs(_date).subtract(numberOfDays, 'days');\n setDate(toDateString(previousDate));\n };\n\n const previousDisabled = minDate\n ? dayjs(_date).subtract(1, 'days').isBefore(dayjs(minDate))\n : false;\n\n const nextDisabled = maxDate\n ? dayjs(_date).add(numberOfDays, 'days').isAfter(dayjs(maxDate))\n : false;\n\n const range = Array(numberOfDays)\n .fill(0)\n .map((_, index) => dayjs(_date).add(index, 'days'))\n .map((date) => {\n const disabled =\n (minDate && date.isBefore(dayjs(minDate), 'day')) ||\n (maxDate && date.isAfter(dayjs(maxDate), 'day')) ||\n false;\n\n const dayProps = getDayProps?.(toDateString(date));\n\n return (\n <UnstyledButton\n key={date.toString()}\n disabled={disabled}\n aria-label={date.format('YYYY-MM-DD')}\n data-disabled={disabled || undefined}\n data-selected={value && dayjs(date).isSame(value, 'day') ? true : undefined}\n {...dayProps}\n onClick={(event) => {\n dayProps?.onClick?.(event);\n onChange?.(toDateString(date));\n }}\n {...getStyles('day', {\n active: !disabled,\n className: dayProps?.className,\n style: dayProps?.style,\n })}\n >\n <span {...getStyles('dayMonth')}>{date.locale(_locale).format(monthLabelFormat)}</span>\n <span {...getStyles('dayNumber')}>{date.date()}</span>\n </UnstyledButton>\n );\n });\n\n return (\n <Box size={size} {...getStyles('root')} {...others}>\n <UnstyledButton\n size={size}\n onClick={handlePrevious}\n disabled={previousDisabled}\n data-disabled={previousDisabled || undefined}\n data-direction=\"previous\"\n {...previousControlProps}\n {...getStyles('control', {\n active: !previousDisabled,\n className: previousControlProps?.className,\n style: previousControlProps?.style,\n })}\n >\n {previousControlProps?.children || <AccordionChevron data-chevron size={size} />}\n </UnstyledButton>\n\n <div {...getStyles('days')}>{range}</div>\n\n <UnstyledButton\n size={size}\n onClick={handleNext}\n disabled={nextDisabled}\n data-disabled={nextDisabled || undefined}\n data-direction=\"next\"\n {...nextControlProps}\n {...getStyles('control', {\n active: !nextDisabled,\n className: nextControlProps?.className,\n style: nextControlProps?.style,\n })}\n >\n {nextControlProps?.children || <AccordionChevron data-chevron size={size} />}\n </UnstyledButton>\n </Box>\n );\n});\n\nMiniCalendar.displayName = '@mantine/dates/MiniCalendar';\nMiniCalendar.classes = classes;\nMiniCalendar.varsResolver = varsResolver;\n\nexport namespace MiniCalendar {\n export type Props = MiniCalendarProps;\n export type StylesNames = MiniCalendarStylesNames;\n export type Factory = MiniCalendarFactory;\n export type CssVariables = MiniCalendarCssVariables;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Month.cjs","names":["useDatesContext","getMonthDays","getDateInTabOrder","toDateString","isSameMonth","Day","isBeforeMaxDate","isAfterMinDate","getWeekNumber","Box","WeekdaysRow","classes"],"sources":["../../../src/components/Month/Month.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n factory,\n Factory,\n getFontSize,\n getSize,\n MantineSize,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '@mantine/core';\nimport { ControlKeydownPayload, DateLabelFormat, DateStringValue, DayOfWeek } from '../../types';\nimport { toDateString } from '../../utils';\nimport { useDatesContext } from '../DatesProvider';\nimport { Day, DayProps, DayStylesNames, RenderDay } from '../Day';\nimport { WeekdaysRow } from '../WeekdaysRow';\nimport { getDateInTabOrder } from './get-date-in-tab-order/get-date-in-tab-order';\nimport { getMonthDays } from './get-month-days/get-month-days';\nimport { getWeekNumber } from './get-week-number/get-week-number';\nimport { isAfterMinDate } from './is-after-min-date/is-after-min-date';\nimport { isBeforeMaxDate } from './is-before-max-date/is-before-max-date';\nimport { isSameMonth } from './is-same-month/is-same-month';\nimport classes from './Month.module.css';\n\nexport type MonthStylesNames =\n | 'month'\n | 'weekday'\n | 'weekdaysRow'\n | 'monthRow'\n | 'month'\n | 'monthThead'\n | 'monthTbody'\n | 'monthCell'\n | 'weekNumber'\n | DayStylesNames;\n\nexport type MonthCssVariables = {\n weekNumber: '--wn-fz' | '--wn-size';\n};\n\nexport interface MonthSettings {\n /** Determines whether propagation for `Escape` key should be stopped */\n __stopPropagation?: boolean;\n\n /** Prevents focus shift when buttons are clicked */\n __preventFocus?: boolean;\n\n /** Called when day is clicked with click event and date */\n __onDayClick?: (event: React.MouseEvent<HTMLButtonElement>, date: DateStringValue) => void;\n\n /** Called when mouse enters day */\n __onDayMouseEnter?: (event: React.MouseEvent<HTMLButtonElement>, date: DateStringValue) => void;\n\n /** Called when any keydown event is registered on day, used for arrows navigation */\n __onDayKeyDown?: (\n event: React.KeyboardEvent<HTMLButtonElement>,\n payload: ControlKeydownPayload\n ) => void;\n\n /** Assigns ref of every day based on its position in the table, used for arrows navigation */\n __getDayRef?: (rowIndex: number, cellIndex: number, node: HTMLButtonElement) => void;\n\n /** `dayjs` locale, the default value is defined by `DatesProvider` */\n locale?: string;\n\n /** Number 0-6, where 0 – Sunday and 6 – Saturday. @default 1 – Monday */\n firstDayOfWeek?: DayOfWeek;\n\n /** `dayjs` format for weekdays names @default 'dd' */\n weekdayFormat?: DateLabelFormat;\n\n /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday. The default value is defined by `DatesProvider`. */\n weekendDays?: DayOfWeek[];\n\n /** Passes props down to `Day` components */\n getDayProps?: (\n date: DateStringValue\n ) => Omit<Partial<DayProps>, 'classNames' | 'styles' | 'vars'> & DataAttributes;\n\n /** Callback function to determine whether the day should be disabled */\n excludeDate?: (date: DateStringValue) => boolean;\n\n /** Minimum possible date, in `YYYY-MM-DD` format */\n minDate?: DateStringValue | Date;\n\n /** Maximum possible date, in `YYYY-MM-DD` format */\n maxDate?: DateStringValue | Date;\n\n /** Controls day value rendering */\n renderDay?: RenderDay;\n\n /** Determines whether outside dates should be hidden @default false */\n hideOutsideDates?: boolean;\n\n /** Determines whether weekdays row should be hidden @default false */\n hideWeekdays?: boolean;\n\n /** Assigns `aria-label` to `Day` components based on date */\n getDayAriaLabel?: (date: DateStringValue) => string;\n\n /** Controls size */\n size?: MantineSize;\n\n /** Determines whether controls should be separated by space @default true */\n withCellSpacing?: boolean;\n\n /** Determines whether today should be highlighted with a border @default false */\n highlightToday?: boolean;\n\n /** Determines whether week numbers should be displayed @default false */\n withWeekNumbers?: boolean;\n\n /** Determines whether the month should take the full width of its container @default false */\n fullWidth?: boolean;\n}\n\nexport interface MonthProps\n extends BoxProps, MonthSettings, StylesApiProps<MonthFactory>, ElementProps<'table'> {\n __staticSelector?: string;\n\n /** Month to display, value `YYYY-MM-DD` */\n month: DateStringValue;\n\n /** Determines whether days should be static, static days can be used to display month if it is not expected that user will interact with the component in any way */\n static?: boolean;\n}\n\nexport type MonthFactory = Factory<{\n props: MonthProps;\n ref: HTMLTableElement;\n stylesNames: MonthStylesNames;\n vars: MonthCssVariables;\n}>;\n\nconst defaultProps = {\n withCellSpacing: true,\n} satisfies Partial<MonthProps>;\n\nconst varsResolver = createVarsResolver<MonthFactory>((_, { size }) => ({\n weekNumber: {\n '--wn-fz': getFontSize(size),\n '--wn-size': getSize(size, 'wn-size'),\n },\n}));\n\nexport const Month = factory<MonthFactory>((_props) => {\n const props = useProps('Month', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n __staticSelector,\n locale,\n firstDayOfWeek,\n weekdayFormat,\n month,\n weekendDays,\n getDayProps,\n excludeDate,\n minDate,\n maxDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n static: isStatic,\n __getDayRef,\n __onDayKeyDown,\n __onDayClick,\n __onDayMouseEnter,\n __preventFocus,\n __stopPropagation,\n withCellSpacing,\n size,\n highlightToday,\n withWeekNumbers,\n fullWidth,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<MonthFactory>({\n name: __staticSelector || 'Month',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'month',\n });\n\n const ctx = useDatesContext();\n const dates = getMonthDays({\n month,\n firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek),\n consistentWeeks: ctx.consistentWeeks,\n });\n\n const dateInTabOrder = getDateInTabOrder({\n dates,\n minDate: toDateString(minDate) as DateStringValue,\n maxDate: toDateString(maxDate) as DateStringValue,\n getDayProps,\n excludeDate,\n hideOutsideDates,\n month,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<MonthFactory>({\n classNames,\n styles,\n props,\n });\n\n const rows = dates.map((row, rowIndex) => {\n const cells = row.map((date, cellIndex) => {\n const outside = !isSameMonth(date, month);\n const ariaLabel =\n getDayAriaLabel?.(date) ||\n dayjs(date)\n .locale(locale || ctx.locale)\n .format('D MMMM YYYY');\n const dayProps = getDayProps?.(date);\n const isDateInTabOrder = dayjs(date).isSame(dateInTabOrder, 'date');\n\n return (\n <td\n key={date.toString()}\n {...getStyles('monthCell')}\n data-with-spacing={withCellSpacing || undefined}\n >\n <Day\n __staticSelector={__staticSelector || 'Month'}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n attributes={attributes}\n unstyled={unstyled}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n highlightToday={highlightToday}\n renderDay={renderDay}\n date={date}\n size={size}\n weekend={ctx.getWeekendDays(weekendDays).includes(dayjs(date).get('day') as DayOfWeek)}\n outside={outside}\n hidden={hideOutsideDates ? outside : false}\n aria-label={ariaLabel}\n static={isStatic}\n fullWidth={fullWidth}\n disabled={\n excludeDate?.(date) ||\n !isBeforeMaxDate(date, toDateString(maxDate)!) ||\n !isAfterMinDate(date, toDateString(minDate)!)\n }\n ref={(node) => {\n if (node) {\n __getDayRef?.(rowIndex, cellIndex, node!);\n }\n }}\n {...dayProps}\n onKeyDown={(event) => {\n dayProps?.onKeyDown?.(event);\n __onDayKeyDown?.(event, { rowIndex, cellIndex, date });\n }}\n onMouseEnter={(event) => {\n dayProps?.onMouseEnter?.(event);\n __onDayMouseEnter?.(event, date);\n }}\n onClick={(event) => {\n dayProps?.onClick?.(event);\n\n __onDayClick?.(event, date);\n }}\n onMouseDown={(event) => {\n dayProps?.onMouseDown?.(event);\n __preventFocus && event.preventDefault();\n }}\n tabIndex={__preventFocus || !isDateInTabOrder ? -1 : 0}\n />\n </td>\n );\n });\n\n return (\n <tr key={rowIndex} {...getStyles('monthRow')}>\n {withWeekNumbers && <td {...getStyles('weekNumber')}>{getWeekNumber(row)}</td>}\n {cells}\n </tr>\n );\n });\n\n return (\n <Box\n component=\"table\"\n {...getStyles('month')}\n size={size}\n data-full-width={fullWidth || undefined}\n {...others}\n >\n {!hideWeekdays && (\n <thead {...getStyles('monthThead')}>\n <WeekdaysRow\n __staticSelector={__staticSelector || 'Month'}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n weekdayFormat={weekdayFormat}\n withWeekNumbers={withWeekNumbers}\n size={size}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n attributes={attributes}\n />\n </thead>\n )}\n <tbody {...getStyles('monthTbody')}>{rows}</tbody>\n </Box>\n );\n});\n\nMonth.classes = classes;\nMonth.varsResolver = varsResolver;\nMonth.displayName = '@mantine/dates/Month';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Month.cjs","names":["useDatesContext","getMonthDays","getDateInTabOrder","toDateString","isSameMonth","Day","isBeforeMaxDate","isAfterMinDate","getWeekNumber","Box","WeekdaysRow","classes"],"sources":["../../../src/components/Month/Month.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport {\n Box,\n BoxProps,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n factory,\n Factory,\n getFontSize,\n getSize,\n MantineSize,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n useStyles,\n} from '@mantine/core';\nimport { ControlKeydownPayload, DateLabelFormat, DateStringValue, DayOfWeek } from '../../types';\nimport { toDateString } from '../../utils';\nimport { useDatesContext } from '../DatesProvider';\nimport { Day, DayProps, DayStylesNames, RenderDay } from '../Day';\nimport { WeekdaysRow } from '../WeekdaysRow';\nimport { getDateInTabOrder } from './get-date-in-tab-order/get-date-in-tab-order';\nimport { getMonthDays } from './get-month-days/get-month-days';\nimport { getWeekNumber } from './get-week-number/get-week-number';\nimport { isAfterMinDate } from './is-after-min-date/is-after-min-date';\nimport { isBeforeMaxDate } from './is-before-max-date/is-before-max-date';\nimport { isSameMonth } from './is-same-month/is-same-month';\nimport classes from './Month.module.css';\n\nexport type MonthStylesNames =\n | 'month'\n | 'weekday'\n | 'weekdaysRow'\n | 'monthRow'\n | 'month'\n | 'monthThead'\n | 'monthTbody'\n | 'monthCell'\n | 'weekNumber'\n | DayStylesNames;\n\nexport type MonthCssVariables = {\n weekNumber: '--wn-fz' | '--wn-size';\n};\n\nexport interface MonthSettings {\n /** Determines whether propagation for `Escape` key should be stopped */\n __stopPropagation?: boolean;\n\n /** Prevents focus shift when buttons are clicked */\n __preventFocus?: boolean;\n\n /** Called when day is clicked with click event and date */\n __onDayClick?: (event: React.MouseEvent<HTMLButtonElement>, date: DateStringValue) => void;\n\n /** Called when mouse enters day */\n __onDayMouseEnter?: (event: React.MouseEvent<HTMLButtonElement>, date: DateStringValue) => void;\n\n /** Called when any keydown event is registered on day, used for arrows navigation */\n __onDayKeyDown?: (\n event: React.KeyboardEvent<HTMLButtonElement>,\n payload: ControlKeydownPayload\n ) => void;\n\n /** Assigns ref of every day based on its position in the table, used for arrows navigation */\n __getDayRef?: (rowIndex: number, cellIndex: number, node: HTMLButtonElement) => void;\n\n /** `dayjs` locale, the default value is defined by `DatesProvider` */\n locale?: string;\n\n /** Number 0-6, where 0 – Sunday and 6 – Saturday. @default 1 – Monday */\n firstDayOfWeek?: DayOfWeek;\n\n /** `dayjs` format for weekdays names @default 'dd' */\n weekdayFormat?: DateLabelFormat;\n\n /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday. The default value is defined by `DatesProvider`. */\n weekendDays?: DayOfWeek[];\n\n /** Passes props down to `Day` components */\n getDayProps?: (\n date: DateStringValue\n ) => Omit<Partial<DayProps>, 'classNames' | 'styles' | 'vars'> & DataAttributes;\n\n /** Callback function to determine whether the day should be disabled */\n excludeDate?: (date: DateStringValue) => boolean;\n\n /** Minimum possible date, in `YYYY-MM-DD` format */\n minDate?: DateStringValue | Date;\n\n /** Maximum possible date, in `YYYY-MM-DD` format */\n maxDate?: DateStringValue | Date;\n\n /** Controls day value rendering */\n renderDay?: RenderDay;\n\n /** Determines whether outside dates should be hidden @default false */\n hideOutsideDates?: boolean;\n\n /** Determines whether weekdays row should be hidden @default false */\n hideWeekdays?: boolean;\n\n /** Assigns `aria-label` to `Day` components based on date */\n getDayAriaLabel?: (date: DateStringValue) => string;\n\n /** Controls size */\n size?: MantineSize;\n\n /** Determines whether controls should be separated by space @default true */\n withCellSpacing?: boolean;\n\n /** Determines whether today should be highlighted with a border @default false */\n highlightToday?: boolean;\n\n /** Determines whether week numbers should be displayed @default false */\n withWeekNumbers?: boolean;\n\n /** Determines whether the month should take the full width of its container @default false */\n fullWidth?: boolean;\n}\n\nexport interface MonthProps\n extends BoxProps, MonthSettings, StylesApiProps<MonthFactory>, ElementProps<'table'> {\n __staticSelector?: string;\n\n /** Month to display, value `YYYY-MM-DD` */\n month: DateStringValue;\n\n /** Determines whether days should be static, static days can be used to display month if it is not expected that user will interact with the component in any way */\n static?: boolean;\n}\n\nexport type MonthFactory = Factory<{\n props: MonthProps;\n ref: HTMLTableElement;\n stylesNames: MonthStylesNames;\n vars: MonthCssVariables;\n}>;\n\nconst defaultProps = {\n withCellSpacing: true,\n} satisfies Partial<MonthProps>;\n\nconst varsResolver = createVarsResolver<MonthFactory>((_, { size }) => ({\n weekNumber: {\n '--wn-fz': getFontSize(size),\n '--wn-size': getSize(size, 'wn-size'),\n },\n}));\n\nexport const Month = factory<MonthFactory>((_props) => {\n const props = useProps('Month', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n __staticSelector,\n locale,\n firstDayOfWeek,\n weekdayFormat,\n month,\n weekendDays,\n getDayProps,\n excludeDate,\n minDate,\n maxDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n static: isStatic,\n __getDayRef,\n __onDayKeyDown,\n __onDayClick,\n __onDayMouseEnter,\n __preventFocus,\n __stopPropagation,\n withCellSpacing,\n size,\n highlightToday,\n withWeekNumbers,\n fullWidth,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<MonthFactory>({\n name: __staticSelector || 'Month',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n rootSelector: 'month',\n });\n\n const ctx = useDatesContext();\n const dates = getMonthDays({\n month,\n firstDayOfWeek: ctx.getFirstDayOfWeek(firstDayOfWeek),\n consistentWeeks: ctx.consistentWeeks,\n });\n\n const dateInTabOrder = getDateInTabOrder({\n dates,\n minDate: toDateString(minDate) as DateStringValue,\n maxDate: toDateString(maxDate) as DateStringValue,\n getDayProps,\n excludeDate,\n hideOutsideDates,\n month,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<MonthFactory>({\n classNames,\n styles,\n props,\n });\n\n const rows = dates.map((row, rowIndex) => {\n const cells = row.map((date, cellIndex) => {\n const outside = !isSameMonth(date, month);\n const ariaLabel =\n getDayAriaLabel?.(date) ||\n dayjs(date)\n .locale(locale || ctx.locale)\n .format('D MMMM YYYY');\n const dayProps = getDayProps?.(date);\n const isDateInTabOrder = dayjs(date).isSame(dateInTabOrder, 'date');\n\n return (\n <td\n key={date.toString()}\n {...getStyles('monthCell')}\n data-with-spacing={withCellSpacing || undefined}\n >\n <Day\n __staticSelector={__staticSelector || 'Month'}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n attributes={attributes}\n unstyled={unstyled}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n highlightToday={highlightToday}\n renderDay={renderDay}\n date={date}\n size={size}\n weekend={ctx.getWeekendDays(weekendDays).includes(dayjs(date).get('day') as DayOfWeek)}\n outside={outside}\n hidden={hideOutsideDates ? outside : false}\n aria-label={ariaLabel}\n static={isStatic}\n fullWidth={fullWidth}\n disabled={\n excludeDate?.(date) ||\n !isBeforeMaxDate(date, toDateString(maxDate)!) ||\n !isAfterMinDate(date, toDateString(minDate)!)\n }\n ref={(node) => {\n if (node) {\n __getDayRef?.(rowIndex, cellIndex, node!);\n }\n }}\n {...dayProps}\n onKeyDown={(event) => {\n dayProps?.onKeyDown?.(event);\n __onDayKeyDown?.(event, { rowIndex, cellIndex, date });\n }}\n onMouseEnter={(event) => {\n dayProps?.onMouseEnter?.(event);\n __onDayMouseEnter?.(event, date);\n }}\n onClick={(event) => {\n dayProps?.onClick?.(event);\n\n __onDayClick?.(event, date);\n }}\n onMouseDown={(event) => {\n dayProps?.onMouseDown?.(event);\n __preventFocus && event.preventDefault();\n }}\n tabIndex={__preventFocus || !isDateInTabOrder ? -1 : 0}\n />\n </td>\n );\n });\n\n return (\n <tr key={rowIndex} {...getStyles('monthRow')}>\n {withWeekNumbers && <td {...getStyles('weekNumber')}>{getWeekNumber(row)}</td>}\n {cells}\n </tr>\n );\n });\n\n return (\n <Box\n component=\"table\"\n {...getStyles('month')}\n size={size}\n data-full-width={fullWidth || undefined}\n {...others}\n >\n {!hideWeekdays && (\n <thead {...getStyles('monthThead')}>\n <WeekdaysRow\n __staticSelector={__staticSelector || 'Month'}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n weekdayFormat={weekdayFormat}\n withWeekNumbers={withWeekNumbers}\n size={size}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n attributes={attributes}\n />\n </thead>\n )}\n <tbody {...getStyles('monthTbody')}>{rows}</tbody>\n </Box>\n );\n});\n\nMonth.classes = classes;\nMonth.varsResolver = varsResolver;\nMonth.displayName = '@mantine/dates/Month';\n\nexport namespace Month {\n export type Props = MonthProps;\n export type Settings = MonthSettings;\n export type StylesNames = MonthStylesNames;\n export type Factory = MonthFactory;\n}\n"],"mappings":"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"}
|