@mantine/dates 9.0.0-alpha.7 → 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.
Files changed (77) hide show
  1. package/cjs/components/Calendar/Calendar.cjs.map +1 -1
  2. package/cjs/components/CalendarHeader/CalendarHeader.cjs.map +1 -1
  3. package/cjs/components/DateInput/DateInput.cjs.map +1 -1
  4. package/cjs/components/DatePicker/DatePicker.cjs.map +1 -1
  5. package/cjs/components/DatePickerInput/DatePickerInput.cjs +1 -0
  6. package/cjs/components/DatePickerInput/DatePickerInput.cjs.map +1 -1
  7. package/cjs/components/DateTimePicker/DateTimePicker.cjs.map +1 -1
  8. package/cjs/components/DatesProvider/DatesProvider.cjs.map +1 -1
  9. package/cjs/components/Day/Day.cjs.map +1 -1
  10. package/cjs/components/MiniCalendar/MiniCalendar.cjs.map +1 -1
  11. package/cjs/components/Month/Month.cjs.map +1 -1
  12. package/cjs/components/MonthPicker/MonthPicker.cjs.map +1 -1
  13. package/cjs/components/MonthPickerInput/MonthPickerInput.cjs +1 -0
  14. package/cjs/components/MonthPickerInput/MonthPickerInput.cjs.map +1 -1
  15. package/cjs/components/TimeGrid/TimeGrid.cjs.map +1 -1
  16. package/cjs/components/TimeInput/TimeInput.cjs +1 -1
  17. package/cjs/components/TimeInput/TimeInput.cjs.map +1 -1
  18. package/cjs/components/TimePicker/TimePicker.cjs.map +1 -1
  19. package/cjs/components/YearPicker/YearPicker.cjs.map +1 -1
  20. package/cjs/components/YearPickerInput/YearPickerInput.cjs +1 -0
  21. package/cjs/components/YearPickerInput/YearPickerInput.cjs.map +1 -1
  22. package/esm/components/Calendar/Calendar.mjs.map +1 -1
  23. package/esm/components/CalendarHeader/CalendarHeader.mjs.map +1 -1
  24. package/esm/components/DateInput/DateInput.mjs.map +1 -1
  25. package/esm/components/DatePicker/DatePicker.mjs.map +1 -1
  26. package/esm/components/DatePickerInput/DatePickerInput.mjs +1 -0
  27. package/esm/components/DatePickerInput/DatePickerInput.mjs.map +1 -1
  28. package/esm/components/DateTimePicker/DateTimePicker.mjs.map +1 -1
  29. package/esm/components/DatesProvider/DatesProvider.mjs.map +1 -1
  30. package/esm/components/Day/Day.mjs.map +1 -1
  31. package/esm/components/MiniCalendar/MiniCalendar.mjs.map +1 -1
  32. package/esm/components/Month/Month.mjs.map +1 -1
  33. package/esm/components/MonthPicker/MonthPicker.mjs.map +1 -1
  34. package/esm/components/MonthPickerInput/MonthPickerInput.mjs +1 -0
  35. package/esm/components/MonthPickerInput/MonthPickerInput.mjs.map +1 -1
  36. package/esm/components/TimeGrid/TimeGrid.mjs.map +1 -1
  37. package/esm/components/TimeInput/TimeInput.mjs +1 -1
  38. package/esm/components/TimeInput/TimeInput.mjs.map +1 -1
  39. package/esm/components/TimePicker/TimePicker.mjs.map +1 -1
  40. package/esm/components/YearPicker/YearPicker.mjs.map +1 -1
  41. package/esm/components/YearPickerInput/YearPickerInput.mjs +1 -0
  42. package/esm/components/YearPickerInput/YearPickerInput.mjs.map +1 -1
  43. package/lib/components/Calendar/Calendar.d.ts +8 -0
  44. package/lib/components/Calendar/index.d.ts +0 -8
  45. package/lib/components/CalendarHeader/CalendarHeader.d.ts +7 -0
  46. package/lib/components/CalendarHeader/index.d.ts +0 -7
  47. package/lib/components/DateInput/DateInput.d.ts +5 -0
  48. package/lib/components/DateInput/index.d.ts +0 -5
  49. package/lib/components/DatePicker/DatePicker.d.ts +8 -0
  50. package/lib/components/DatePicker/index.d.ts +0 -9
  51. package/lib/components/DatePickerInput/DatePickerInput.d.ts +5 -0
  52. package/lib/components/DatePickerInput/index.d.ts +0 -5
  53. package/lib/components/DateTimePicker/DateTimePicker.d.ts +5 -0
  54. package/lib/components/DateTimePicker/index.d.ts +0 -5
  55. package/lib/components/DatesProvider/DatesProvider.d.ts +4 -0
  56. package/lib/components/DatesProvider/index.d.ts +0 -4
  57. package/lib/components/Day/Day.d.ts +6 -0
  58. package/lib/components/Day/index.d.ts +0 -6
  59. package/lib/components/MiniCalendar/MiniCalendar.d.ts +6 -0
  60. package/lib/components/MiniCalendar/index.d.ts +0 -6
  61. package/lib/components/Month/Month.d.ts +6 -0
  62. package/lib/components/Month/index.d.ts +0 -6
  63. package/lib/components/MonthPicker/MonthPicker.d.ts +5 -0
  64. package/lib/components/MonthPicker/index.d.ts +0 -6
  65. package/lib/components/MonthPickerInput/MonthPickerInput.d.ts +5 -0
  66. package/lib/components/MonthPickerInput/index.d.ts +0 -6
  67. package/lib/components/TimeGrid/TimeGrid.d.ts +6 -0
  68. package/lib/components/TimeGrid/index.d.ts +0 -6
  69. package/lib/components/TimeInput/TimeInput.d.ts +4 -0
  70. package/lib/components/TimeInput/index.d.ts +0 -4
  71. package/lib/components/TimePicker/TimePicker.d.ts +10 -0
  72. package/lib/components/TimePicker/index.d.ts +0 -10
  73. package/lib/components/YearPicker/YearPicker.d.ts +6 -0
  74. package/lib/components/YearPicker/index.d.ts +0 -7
  75. package/lib/components/YearPickerInput/YearPickerInput.d.ts +5 -0
  76. package/lib/components/YearPickerInput/index.d.ts +0 -6
  77. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"DatePicker.mjs","names":[],"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.mjs","names":[],"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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"}
@@ -9,6 +9,7 @@ import { factory, useProps, useResolvedStylesApi } from "@mantine/core";
9
9
  //#region packages/@mantine/dates/src/components/DatePickerInput/DatePickerInput.tsx
10
10
  const defaultProps = {
11
11
  type: "default",
12
+ size: "sm",
12
13
  valueFormat: "MMMM D, YYYY",
13
14
  closeOnChange: true,
14
15
  sortDates: true,
@@ -1 +1 @@
1
- {"version":3,"file":"DatePickerInput.mjs","names":[],"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,kBAA4C,SACtD,WAAW;CACV,MAAM,QAAQ,SAAS,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,mBAAmB,qBAA6C;EAC1F;EACA;EACA;EACD,CAAC;CAEF,MAAM,EAAE,eAAe,WAAW,kBAAkB,KAAK;CAEzD,MAAM,EACJ,QACA,UACA,gBACA,kBACA,gBACA,SACA,gBACE,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,oBAAC,iBAAD;EACkB;EACA;EACE;EAClB,YAAY;EACZ,QAAQ;EACE;EACD;EACI;EACb,OAAO;EACD;EACG;EACK;EACd,GAAI;EACE;EACN,kBAAiB;EACL;YAEZ,oBAAC,YAAD;GACE,GAAI;GACE;GACG;GACH;GACN,OAAO;GACP,aAAa,gBAAgB,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,GAAG,gBAAgB;CAAS,GAAG,WAAW;CAAS;AAC/E,gBAAgB,cAAc"}
1
+ {"version":3,"file":"DatePickerInput.mjs","names":[],"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,kBAA4C,SACtD,WAAW;CACV,MAAM,QAAQ,SAAS,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,mBAAmB,qBAA6C;EAC1F;EACA;EACA;EACD,CAAC;CAEF,MAAM,EAAE,eAAe,WAAW,kBAAkB,KAAK;CAEzD,MAAM,EACJ,QACA,UACA,gBACA,kBACA,gBACA,SACA,gBACE,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,oBAAC,iBAAD;EACkB;EACA;EACE;EAClB,YAAY;EACZ,QAAQ;EACE;EACD;EACI;EACb,OAAO;EACD;EACG;EACK;EACd,GAAI;EACE;EACN,kBAAiB;EACL;YAEZ,oBAAC,YAAD;GACE,GAAI;GACE;GACG;GACH;GACN,OAAO;GACP,aAAa,gBAAgB,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,GAAG,gBAAgB;CAAS,GAAG,WAAW;CAAS;AAC/E,gBAAgB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"DateTimePicker.mjs","names":["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.mjs","names":["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.mjs","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,uBAAuB,cAAc,gCAAgC;AAOlF,SAAgB,cAAc,EAAE,UAAU,YAAgC;AACxE,QACE,oBAAC,sBAAD;EAAsB,OAAO;GAAE,GAAG;GAAiC,GAAG;GAAU;EAC7E;EACoB,CAAA"}
1
+ {"version":3,"file":"DatesProvider.mjs","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,uBAAuB,cAAc,gCAAgC;AAOlF,SAAgB,cAAc,EAAE,UAAU,YAAgC;AACxE,QACE,oBAAC,sBAAD;EAAsB,OAAO;GAAE,GAAG;GAAiC,GAAG;GAAU;EAC7E;EACoB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Day.mjs","names":["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,eAAe,oBAAgC,GAAG,EAAE,YAAY,EACpE,KAAK,EACH,cAAc,QAAQ,MAAM,WAAW,EACxC,EACF,EAAE;AAEH,MAAa,MAAM,SAAqB,WAAW;CACjD,MAAM,QAAQ,SAAS,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,oBAAC,gBAAD;EACE,GAjBc,UAAsB;GACtC,MAAM,oBAAoB;GAC1B,SAAA;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,cAAY,MAAM,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,IAAI,MAAM,KAAK,CAAC,MAAM;EACzB,CAAA;EAEnB;AAEF,IAAI,UAAUA;AACd,IAAI,eAAe;AACnB,IAAI,cAAc"}
1
+ {"version":3,"file":"Day.mjs","names":["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,eAAe,oBAAgC,GAAG,EAAE,YAAY,EACpE,KAAK,EACH,cAAc,QAAQ,MAAM,WAAW,EACxC,EACF,EAAE;AAEH,MAAa,MAAM,SAAqB,WAAW;CACjD,MAAM,QAAQ,SAAS,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,oBAAC,gBAAD;EACE,GAjBc,UAAsB;GACtC,MAAM,oBAAoB;GAC1B,SAAA;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,cAAY,MAAM,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,IAAI,MAAM,KAAK,CAAC,MAAM;EACzB,CAAA;EAEnB;AAEF,IAAI,UAAUA;AACd,IAAI,eAAe;AACnB,IAAI,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"MiniCalendar.mjs","names":["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.mjs","names":["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":";;;;;;;;;AA4FA,MAAM,eAAe;CACnB,MAAM;CACN,cAAc;CACd,kBAAkB;CACnB;AAED,MAAM,eAAe,oBAAyC,QAAQ,EAAE,YAAY,EAClF,MAAM,EACJ,6BAA6B,QAAQ,MAAM,oBAAoB,EAChE,EACF,EAAE;AAEH,MAAa,eAAe,SAA8B,WAAW;CACnE,MAAM,QAAQ,SAAS,gBAAgB,cAAc,OAAO;CAC5D,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,YACA,MACA,aACA,cACA,OACA,UACA,QACA,YACA,aACA,cACA,MACA,SACA,SACA,kBACA,kBACA,sBACA,QACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAA+B;EAC/C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAGF,MAAM,UADM,iBAAiB,CACT,UAAU,OAAO;CAErC,MAAM,CAAC,OAAO,WAAW,gBAAgB;EACvC,OAAO,aAAa,KAAK;EACzB,cAAc,aAAa,YAAY;EACvC,YAAY,aAAa,MAAM,IAAI,OAAO,CAAC,OAAO,aAAa;EAC/D,UAAU;EACX,CAAC;CAEF,MAAM,mBAAmB;AACvB,YAAU;AAEV,UAAQ,aADS,MAAM,MAAM,CAAC,IAAI,cAAc,OAAO,CACzB,CAAC;;CAGjC,MAAM,uBAAuB;AAC3B,gBAAc;AAEd,UAAQ,aADa,MAAM,MAAM,CAAC,SAAS,cAAc,OAAO,CAC9B,CAAC;;CAGrC,MAAM,mBAAmB,UACrB,MAAM,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,MAAM,QAAQ,CAAC,GACzD;CAEJ,MAAM,eAAe,UACjB,MAAM,MAAM,CAAC,IAAI,cAAc,OAAO,CAAC,QAAQ,MAAM,QAAQ,CAAC,GAC9D;CAEJ,MAAM,QAAQ,MAAM,aAAa,CAC9B,KAAK,EAAE,CACP,KAAK,GAAG,UAAU,MAAM,MAAM,CAAC,IAAI,OAAO,OAAO,CAAC,CAClD,KAAK,SAAS;EACb,MAAM,WACH,WAAW,KAAK,SAAS,MAAM,QAAQ,EAAE,MAAM,IAC/C,WAAW,KAAK,QAAQ,MAAM,QAAQ,EAAE,MAAM,IAC/C;EAEF,MAAM,WAAW,cAAc,aAAa,KAAK,CAAC;AAElD,SACE,qBAAC,gBAAD;GAEY;GACV,cAAY,KAAK,OAAO,aAAa;GACrC,iBAAe,YAAY,KAAA;GAC3B,iBAAe,SAAS,MAAM,KAAK,CAAC,OAAO,OAAO,MAAM,GAAG,OAAO,KAAA;GAClE,GAAI;GACJ,UAAU,UAAU;AAClB,cAAU,UAAU,MAAM;AAC1B,eAAW,aAAa,KAAK,CAAC;;GAEhC,GAAI,UAAU,OAAO;IACnB,QAAQ,CAAC;IACT,WAAW,UAAU;IACrB,OAAO,UAAU;IAClB,CAAC;aAfJ,CAiBE,oBAAC,QAAD;IAAM,GAAI,UAAU,WAAW;cAAG,KAAK,OAAO,QAAQ,CAAC,OAAO,iBAAiB;IAAQ,CAAA,EACvF,oBAAC,QAAD;IAAM,GAAI,UAAU,YAAY;cAAG,KAAK,MAAM;IAAQ,CAAA,CACvC;KAlBV,KAAK,UAAU,CAkBL;GAEnB;AAEJ,QACE,qBAAC,KAAD;EAAW;EAAM,GAAI,UAAU,OAAO;EAAE,GAAI;YAA5C;GACE,oBAAC,gBAAD;IACQ;IACN,SAAS;IACT,UAAU;IACV,iBAAe,oBAAoB,KAAA;IACnC,kBAAe;IACf,GAAI;IACJ,GAAI,UAAU,WAAW;KACvB,QAAQ,CAAC;KACT,WAAW,sBAAsB;KACjC,OAAO,sBAAsB;KAC9B,CAAC;cAED,sBAAsB,YAAY,oBAAC,kBAAD;KAAkB,gBAAA;KAAmB;KAAQ,CAAA;IACjE,CAAA;GAEjB,oBAAC,OAAD;IAAK,GAAI,UAAU,OAAO;cAAG;IAAY,CAAA;GAEzC,oBAAC,gBAAD;IACQ;IACN,SAAS;IACT,UAAU;IACV,iBAAe,gBAAgB,KAAA;IAC/B,kBAAe;IACf,GAAI;IACJ,GAAI,UAAU,WAAW;KACvB,QAAQ,CAAC;KACT,WAAW,kBAAkB;KAC7B,OAAO,kBAAkB;KAC1B,CAAC;cAED,kBAAkB,YAAY,oBAAC,kBAAD;KAAkB,gBAAA;KAAmB;KAAQ,CAAA;IAC7D,CAAA;GACb;;EAER;AAEF,aAAa,cAAc;AAC3B,aAAa,UAAUA;AACvB,aAAa,eAAe"}
@@ -1 +1 @@
1
- {"version":3,"file":"Month.mjs","names":["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.mjs","names":["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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MonthPicker.mjs","names":[],"sources":["../../../src/components/MonthPicker/MonthPicker.tsx"],"sourcesContent":["import {\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineComponentStaticProperties,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n} from '@mantine/core';\nimport { useDatesState } from '../../hooks';\nimport { CalendarLevel, DatePickerType, DateStringValue, PickerBaseProps } from '../../types';\nimport { Calendar, CalendarBaseProps } from '../Calendar';\nimport { DecadeLevelBaseSettings } from '../DecadeLevel';\nimport { DecadeLevelGroupStylesNames } from '../DecadeLevelGroup';\nimport { YearLevelBaseSettings } from '../YearLevel';\nimport { YearLevelGroupStylesNames } from '../YearLevelGroup';\n\nexport type MonthPickerStylesNames = DecadeLevelGroupStylesNames | YearLevelGroupStylesNames;\n\ntype MonthPickerLevel = Exclude<CalendarLevel, 'month'>;\n\nexport interface MonthPickerBaseProps<Type extends DatePickerType = 'default'>\n extends\n PickerBaseProps<Type>,\n DecadeLevelBaseSettings,\n YearLevelBaseSettings,\n Omit<CalendarBaseProps, 'onNextMonth' | 'onPreviousMonth' | 'hasNextLevel'> {\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 level changes */\n onLevelChange?: (level: MonthPickerLevel) => void;\n}\n\nexport interface MonthPickerProps<Type extends DatePickerType = 'default'>\n extends\n BoxProps,\n MonthPickerBaseProps<Type>,\n StylesApiProps<MonthPickerFactory>,\n ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {\n /** Called when month is selected */\n onMonthSelect?: (date: DateStringValue) => void;\n}\n\nexport type MonthPickerFactory = Factory<{\n props: MonthPickerProps;\n ref: HTMLDivElement;\n stylesNames: MonthPickerStylesNames;\n}>;\n\nconst defaultProps = {\n type: 'default',\n} satisfies Partial<MonthPickerProps>;\n\ntype MonthPickerComponent = (<Type extends DatePickerType = 'default'>(\n props: MonthPickerProps<Type> & { ref?: React.Ref<HTMLDivElement> }\n) => React.JSX.Element) & {\n displayName?: string;\n} & MantineComponentStaticProperties<MonthPickerFactory>;\n\nexport const MonthPicker: MonthPickerComponent = factory<MonthPickerFactory>((_props) => {\n const props = useProps('MonthPicker', defaultProps, _props);\n const {\n classNames,\n styles,\n vars,\n type,\n defaultValue,\n value,\n onChange,\n __staticSelector,\n getMonthControlProps,\n allowSingleDateInRange,\n allowDeselect,\n onMouseLeave,\n onMonthSelect,\n __updateDateOnMonthSelect,\n onLevelChange,\n ...others\n } = props;\n\n const { onDateChange, onRootMouseLeave, onHoveredDateChange, getControlProps } = useDatesState({\n type: type as any,\n level: 'month',\n allowDeselect,\n allowSingleDateInRange,\n value,\n defaultValue,\n onChange: onChange as any,\n onMouseLeave,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<MonthPickerFactory>({\n classNames,\n styles,\n props,\n });\n\n return (\n <Calendar\n minLevel=\"year\"\n __updateDateOnMonthSelect={__updateDateOnMonthSelect ?? false}\n __staticSelector={__staticSelector || 'MonthPicker'}\n onMouseLeave={onRootMouseLeave}\n onMonthMouseEnter={(_event, date) => onHoveredDateChange(date)}\n onMonthSelect={(date) => {\n onDateChange(date);\n onMonthSelect?.(date);\n }}\n getMonthControlProps={(date) => ({\n ...getControlProps(date),\n ...getMonthControlProps?.(date),\n })}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n onLevelChange={onLevelChange as any}\n {...others}\n />\n );\n}) as any;\n\nMonthPicker.classes = Calendar.classes;\nMonthPicker.displayName = '@mantine/dates/MonthPicker';\n"],"mappings":";;;;;;AAyDA,MAAM,eAAe,EACnB,MAAM,WACP;AAQD,MAAa,cAAoC,SAA6B,WAAW;CACvF,MAAM,QAAQ,SAAS,eAAe,cAAc,OAAO;CAC3D,MAAM,EACJ,YACA,QACA,MACA,MACA,cACA,OACA,UACA,kBACA,sBACA,wBACA,eACA,cACA,eACA,2BACA,eACA,GAAG,WACD;CAEJ,MAAM,EAAE,cAAc,kBAAkB,qBAAqB,oBAAoB,cAAc;EACvF;EACN,OAAO;EACP;EACA;EACA;EACA;EACU;EACV;EACD,CAAC;CAEF,MAAM,EAAE,oBAAoB,mBAAmB,qBAAyC;EACtF;EACA;EACA;EACD,CAAC;AAEF,QACE,oBAAC,UAAD;EACE,UAAS;EACT,2BAA2B,6BAA6B;EACxD,kBAAkB,oBAAoB;EACtC,cAAc;EACd,oBAAoB,QAAQ,SAAS,oBAAoB,KAAK;EAC9D,gBAAgB,SAAS;AACvB,gBAAa,KAAK;AAClB,mBAAgB,KAAK;;EAEvB,uBAAuB,UAAU;GAC/B,GAAG,gBAAgB,KAAK;GACxB,GAAG,uBAAuB,KAAK;GAChC;EACD,YAAY;EACZ,QAAQ;EACO;EACf,GAAI;EACJ,CAAA;EAEJ;AAEF,YAAY,UAAU,SAAS;AAC/B,YAAY,cAAc"}
1
+ {"version":3,"file":"MonthPicker.mjs","names":[],"sources":["../../../src/components/MonthPicker/MonthPicker.tsx"],"sourcesContent":["import {\n BoxProps,\n ElementProps,\n factory,\n Factory,\n MantineComponentStaticProperties,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n} from '@mantine/core';\nimport { useDatesState } from '../../hooks';\nimport { CalendarLevel, DatePickerType, DateStringValue, PickerBaseProps } from '../../types';\nimport { Calendar, CalendarBaseProps } from '../Calendar';\nimport { DecadeLevelBaseSettings } from '../DecadeLevel';\nimport { DecadeLevelGroupStylesNames } from '../DecadeLevelGroup';\nimport { YearLevelBaseSettings } from '../YearLevel';\nimport { YearLevelGroupStylesNames } from '../YearLevelGroup';\n\nexport type MonthPickerStylesNames = DecadeLevelGroupStylesNames | YearLevelGroupStylesNames;\n\ntype MonthPickerLevel = Exclude<CalendarLevel, 'month'>;\n\nexport interface MonthPickerBaseProps<Type extends DatePickerType = 'default'>\n extends\n PickerBaseProps<Type>,\n DecadeLevelBaseSettings,\n YearLevelBaseSettings,\n Omit<CalendarBaseProps, 'onNextMonth' | 'onPreviousMonth' | 'hasNextLevel'> {\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 level changes */\n onLevelChange?: (level: MonthPickerLevel) => void;\n}\n\nexport interface MonthPickerProps<Type extends DatePickerType = 'default'>\n extends\n BoxProps,\n MonthPickerBaseProps<Type>,\n StylesApiProps<MonthPickerFactory>,\n ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {\n /** Called when month is selected */\n onMonthSelect?: (date: DateStringValue) => void;\n}\n\nexport type MonthPickerFactory = Factory<{\n props: MonthPickerProps;\n ref: HTMLDivElement;\n stylesNames: MonthPickerStylesNames;\n}>;\n\nconst defaultProps = {\n type: 'default',\n} satisfies Partial<MonthPickerProps>;\n\ntype MonthPickerComponent = (<Type extends DatePickerType = 'default'>(\n props: MonthPickerProps<Type> & { ref?: React.Ref<HTMLDivElement> }\n) => React.JSX.Element) & {\n displayName?: string;\n} & MantineComponentStaticProperties<MonthPickerFactory>;\n\nexport const MonthPicker: MonthPickerComponent = factory<MonthPickerFactory>((_props) => {\n const props = useProps('MonthPicker', defaultProps, _props);\n const {\n classNames,\n styles,\n vars,\n type,\n defaultValue,\n value,\n onChange,\n __staticSelector,\n getMonthControlProps,\n allowSingleDateInRange,\n allowDeselect,\n onMouseLeave,\n onMonthSelect,\n __updateDateOnMonthSelect,\n onLevelChange,\n ...others\n } = props;\n\n const { onDateChange, onRootMouseLeave, onHoveredDateChange, getControlProps } = useDatesState({\n type: type as any,\n level: 'month',\n allowDeselect,\n allowSingleDateInRange,\n value,\n defaultValue,\n onChange: onChange as any,\n onMouseLeave,\n });\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<MonthPickerFactory>({\n classNames,\n styles,\n props,\n });\n\n return (\n <Calendar\n minLevel=\"year\"\n __updateDateOnMonthSelect={__updateDateOnMonthSelect ?? false}\n __staticSelector={__staticSelector || 'MonthPicker'}\n onMouseLeave={onRootMouseLeave}\n onMonthMouseEnter={(_event, date) => onHoveredDateChange(date)}\n onMonthSelect={(date) => {\n onDateChange(date);\n onMonthSelect?.(date);\n }}\n getMonthControlProps={(date) => ({\n ...getControlProps(date),\n ...getMonthControlProps?.(date),\n })}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n onLevelChange={onLevelChange as any}\n {...others}\n />\n );\n}) as any;\n\nMonthPicker.classes = Calendar.classes;\nMonthPicker.displayName = '@mantine/dates/MonthPicker';\n\nexport namespace MonthPicker {\n export type Props<Type extends DatePickerType = 'default'> = MonthPickerProps<Type>;\n export type StylesNames = MonthPickerStylesNames;\n export type Factory = MonthPickerFactory;\n}\n"],"mappings":";;;;;;AAyDA,MAAM,eAAe,EACnB,MAAM,WACP;AAQD,MAAa,cAAoC,SAA6B,WAAW;CACvF,MAAM,QAAQ,SAAS,eAAe,cAAc,OAAO;CAC3D,MAAM,EACJ,YACA,QACA,MACA,MACA,cACA,OACA,UACA,kBACA,sBACA,wBACA,eACA,cACA,eACA,2BACA,eACA,GAAG,WACD;CAEJ,MAAM,EAAE,cAAc,kBAAkB,qBAAqB,oBAAoB,cAAc;EACvF;EACN,OAAO;EACP;EACA;EACA;EACA;EACU;EACV;EACD,CAAC;CAEF,MAAM,EAAE,oBAAoB,mBAAmB,qBAAyC;EACtF;EACA;EACA;EACD,CAAC;AAEF,QACE,oBAAC,UAAD;EACE,UAAS;EACT,2BAA2B,6BAA6B;EACxD,kBAAkB,oBAAoB;EACtC,cAAc;EACd,oBAAoB,QAAQ,SAAS,oBAAoB,KAAK;EAC9D,gBAAgB,SAAS;AACvB,gBAAa,KAAK;AAClB,mBAAgB,KAAK;;EAEvB,uBAAuB,UAAU;GAC/B,GAAG,gBAAgB,KAAK;GACxB,GAAG,uBAAuB,KAAK;GAChC;EACD,YAAY;EACZ,QAAQ;EACO;EACf,GAAI;EACJ,CAAA;EAEJ;AAEF,YAAY,UAAU,SAAS;AAC/B,YAAY,cAAc"}
@@ -9,6 +9,7 @@ import { factory, useProps, useResolvedStylesApi } from "@mantine/core";
9
9
  //#region packages/@mantine/dates/src/components/MonthPickerInput/MonthPickerInput.tsx
10
10
  const defaultProps = {
11
11
  type: "default",
12
+ size: "sm",
12
13
  valueFormat: "MMMM YYYY",
13
14
  closeOnChange: true,
14
15
  sortDates: true,
@@ -1 +1 @@
1
- {"version":3,"file":"MonthPickerInput.mjs","names":[],"sources":["../../../src/components/MonthPickerInput/MonthPickerInput.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 { MonthPicker, MonthPickerBaseProps, MonthPickerStylesNames } from '../MonthPicker';\nimport { DateInputSharedProps, PickerInputBase } from '../PickerInputBase';\n\nexport type MonthPickerInputStylesNames =\n | __InputStylesNames\n | 'placeholder'\n | MonthPickerStylesNames;\n\nexport interface MonthPickerInputProps<Type extends DatePickerType = 'default'>\n extends\n BoxProps,\n DateInputSharedProps,\n MonthPickerBaseProps<Type>,\n StylesApiProps<MonthPickerInputFactory> {\n /** `dayjs` format for input value @default \"MMMM YYYY\" */\n valueFormat?: string;\n}\n\nexport type MonthPickerInputFactory = Factory<{\n props: MonthPickerInputProps;\n ref: HTMLButtonElement;\n stylesNames: MonthPickerInputStylesNames;\n variant: InputVariant;\n}>;\n\nconst defaultProps = {\n type: 'default',\n valueFormat: 'MMMM YYYY',\n closeOnChange: true,\n sortDates: true,\n dropdownType: 'popover',\n} satisfies Partial<MonthPickerInputProps>;\n\ntype MonthPickerInputComponent = (<Type extends DatePickerType = 'default'>(\n props: MonthPickerInputProps<Type> & { ref?: React.Ref<HTMLButtonElement> }\n) => React.JSX.Element) & {\n displayName?: string;\n} & MantineComponentStaticProperties<MonthPickerInputFactory>;\n\nexport const MonthPickerInput: MonthPickerInputComponent = factory<MonthPickerInputFactory>(\n (_props) => {\n const props = useProps('MonthPickerInput', 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 valueFormatter,\n attributes,\n ...rest\n } = props;\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<MonthPickerInputFactory>({\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 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 attributes={attributes}\n type={type as any}\n __staticSelector=\"MonthPickerInput\"\n >\n <MonthPicker\n {...calendarProps}\n size={size}\n variant={variant}\n type={type}\n value={_value}\n defaultDate={\n calendarProps.defaultDate ||\n (Array.isArray(_value)\n ? _value[0] || getDefaultClampedDate({ maxDate, minDate })\n : _value || getDefaultClampedDate({ maxDate, minDate }))\n }\n onChange={setValue}\n locale={locale}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n __staticSelector=\"MonthPickerInput\"\n __stopPropagation={dropdownType === 'popover'}\n minDate={minDate}\n maxDate={maxDate}\n attributes={attributes}\n />\n </PickerInputBase>\n );\n }\n) as any;\n\nMonthPickerInput.classes = { ...PickerInputBase.classes, ...MonthPicker.classes };\nMonthPickerInput.displayName = '@mantine/dates/MonthPickerInput';\n"],"mappings":";;;;;;;;;AAwCA,MAAM,eAAe;CACnB,MAAM;CACN,aAAa;CACb,eAAe;CACf,WAAW;CACX,cAAc;CACf;AAQD,MAAa,mBAA8C,SACxD,WAAW;CACV,MAAM,QAAQ,SAAS,oBAAoB,cAAc,OAAO;CAChE,MAAM,EACJ,MACA,OACA,cACA,UACA,aACA,gBACA,QACA,YACA,QACA,UACA,eACA,MACA,SACA,cACA,WACA,SACA,SACA,MACA,gBACA,YACA,GAAG,SACD;CAEJ,MAAM,EAAE,oBAAoB,mBAAmB,qBAA8C;EAC3F;EACA;EACA;EACD,CAAC;CAEF,MAAM,EAAE,eAAe,WAAW,kBAAkB,KAAK;CAEzD,MAAM,EACJ,QACA,UACA,gBACA,kBACA,gBACA,SACA,gBACE,cAAc;EACV;EACN;EACA;EACU;EACV;EACA,QAAQ;EACR;EACA;EACA;EACA;EACD,CAAC;AAEF,QACE,oBAAC,iBAAD;EACkB;EACA;EACE;EAClB,YAAY;EACZ,QAAQ;EACE;EACD;EACI;EACb,OAAO;EACD;EACG;EACK;EACd,GAAI;EACQ;EACN;EACN,kBAAiB;YAEjB,oBAAC,aAAD;GACE,GAAI;GACE;GACG;GACH;GACN,OAAO;GACP,aACE,cAAc,gBACb,MAAM,QAAQ,OAAO,GAClB,OAAO,MAAM,sBAAsB;IAAE;IAAS;IAAS,CAAC,GACxD,UAAU,sBAAsB;IAAE;IAAS;IAAS,CAAC;GAE3D,UAAU;GACF;GACR,YAAY;GACZ,QAAQ;GACE;GACV,kBAAiB;GACjB,mBAAmB,iBAAiB;GAC3B;GACA;GACG;GACZ,CAAA;EACc,CAAA;EAGvB;AAED,iBAAiB,UAAU;CAAE,GAAG,gBAAgB;CAAS,GAAG,YAAY;CAAS;AACjF,iBAAiB,cAAc"}
1
+ {"version":3,"file":"MonthPickerInput.mjs","names":[],"sources":["../../../src/components/MonthPickerInput/MonthPickerInput.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 { MonthPicker, MonthPickerBaseProps, MonthPickerStylesNames } from '../MonthPicker';\nimport { DateInputSharedProps, PickerInputBase } from '../PickerInputBase';\n\nexport type MonthPickerInputStylesNames =\n | __InputStylesNames\n | 'placeholder'\n | MonthPickerStylesNames;\n\nexport interface MonthPickerInputProps<Type extends DatePickerType = 'default'>\n extends\n BoxProps,\n DateInputSharedProps,\n MonthPickerBaseProps<Type>,\n StylesApiProps<MonthPickerInputFactory> {\n /** `dayjs` format for input value @default \"MMMM YYYY\" */\n valueFormat?: string;\n}\n\nexport type MonthPickerInputFactory = Factory<{\n props: MonthPickerInputProps;\n ref: HTMLButtonElement;\n stylesNames: MonthPickerInputStylesNames;\n variant: InputVariant;\n}>;\n\nconst defaultProps = {\n type: 'default',\n size: 'sm',\n valueFormat: 'MMMM YYYY',\n closeOnChange: true,\n sortDates: true,\n dropdownType: 'popover',\n} satisfies Partial<MonthPickerInputProps>;\n\ntype MonthPickerInputComponent = (<Type extends DatePickerType = 'default'>(\n props: MonthPickerInputProps<Type> & { ref?: React.Ref<HTMLButtonElement> }\n) => React.JSX.Element) & {\n displayName?: string;\n} & MantineComponentStaticProperties<MonthPickerInputFactory>;\n\nexport const MonthPickerInput: MonthPickerInputComponent = factory<MonthPickerInputFactory>(\n (_props) => {\n const props = useProps('MonthPickerInput', 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 valueFormatter,\n attributes,\n ...rest\n } = props;\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<MonthPickerInputFactory>({\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 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 attributes={attributes}\n type={type as any}\n __staticSelector=\"MonthPickerInput\"\n >\n <MonthPicker\n {...calendarProps}\n size={size}\n variant={variant}\n type={type}\n value={_value}\n defaultDate={\n calendarProps.defaultDate ||\n (Array.isArray(_value)\n ? _value[0] || getDefaultClampedDate({ maxDate, minDate })\n : _value || getDefaultClampedDate({ maxDate, minDate }))\n }\n onChange={setValue}\n locale={locale}\n classNames={resolvedClassNames}\n styles={resolvedStyles}\n unstyled={unstyled}\n __staticSelector=\"MonthPickerInput\"\n __stopPropagation={dropdownType === 'popover'}\n minDate={minDate}\n maxDate={maxDate}\n attributes={attributes}\n />\n </PickerInputBase>\n );\n }\n) as any;\n\nMonthPickerInput.classes = { ...PickerInputBase.classes, ...MonthPicker.classes };\nMonthPickerInput.displayName = '@mantine/dates/MonthPickerInput';\n\nexport namespace MonthPickerInput {\n export type Props<Type extends DatePickerType = 'default'> = MonthPickerInputProps<Type>;\n export type StylesNames = MonthPickerInputStylesNames;\n export type Factory = MonthPickerInputFactory;\n}\n"],"mappings":";;;;;;;;;AAwCA,MAAM,eAAe;CACnB,MAAM;CACN,MAAM;CACN,aAAa;CACb,eAAe;CACf,WAAW;CACX,cAAc;CACf;AAQD,MAAa,mBAA8C,SACxD,WAAW;CACV,MAAM,QAAQ,SAAS,oBAAoB,cAAc,OAAO;CAChE,MAAM,EACJ,MACA,OACA,cACA,UACA,aACA,gBACA,QACA,YACA,QACA,UACA,eACA,MACA,SACA,cACA,WACA,SACA,SACA,MACA,gBACA,YACA,GAAG,SACD;CAEJ,MAAM,EAAE,oBAAoB,mBAAmB,qBAA8C;EAC3F;EACA;EACA;EACD,CAAC;CAEF,MAAM,EAAE,eAAe,WAAW,kBAAkB,KAAK;CAEzD,MAAM,EACJ,QACA,UACA,gBACA,kBACA,gBACA,SACA,gBACE,cAAc;EACV;EACN;EACA;EACU;EACV;EACA,QAAQ;EACR;EACA;EACA;EACA;EACD,CAAC;AAEF,QACE,oBAAC,iBAAD;EACkB;EACA;EACE;EAClB,YAAY;EACZ,QAAQ;EACE;EACD;EACI;EACb,OAAO;EACD;EACG;EACK;EACd,GAAI;EACQ;EACN;EACN,kBAAiB;YAEjB,oBAAC,aAAD;GACE,GAAI;GACE;GACG;GACH;GACN,OAAO;GACP,aACE,cAAc,gBACb,MAAM,QAAQ,OAAO,GAClB,OAAO,MAAM,sBAAsB;IAAE;IAAS;IAAS,CAAC,GACxD,UAAU,sBAAsB;IAAE;IAAS;IAAS,CAAC;GAE3D,UAAU;GACF;GACR,YAAY;GACZ,QAAQ;GACE;GACV,kBAAiB;GACjB,mBAAmB,iBAAiB;GAC3B;GACA;GACG;GACZ,CAAA;EACc,CAAA;EAGvB;AAED,iBAAiB,UAAU;CAAE,GAAG,gBAAgB;CAAS,GAAG,YAAY;CAAS;AACjF,iBAAiB,cAAc"}
@@ -1 +1 @@
1
- {"version":3,"file":"TimeGrid.mjs","names":["classes"],"sources":["../../../src/components/TimeGrid/TimeGrid.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n factory,\n Factory,\n getFontSize,\n getRadius,\n MantineRadius,\n MantineSize,\n SimpleGrid,\n SimpleGridProps,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport type { TimePickerAmPmLabels, TimePickerFormat } from '../TimePicker';\nimport { isSameTime } from '../TimePicker/utils/is-same-time/is-same-time';\nimport { isTimeAfter, isTimeBefore } from './compare-time';\nimport { TimeGridProvider } from './TimeGrid.context';\nimport { TimeGridControl } from './TimeGridControl';\nimport classes from './TimeGrid.module.css';\n\nexport type TimeGridStylesNames = 'root' | 'control' | 'simpleGrid';\nexport type TimeGridCssVariables = {\n root: '--time-grid-fz' | '--time-grid-radius';\n};\n\nexport interface TimeGridProps\n extends\n BoxProps,\n StylesApiProps<TimeGridFactory>,\n ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {\n /** Time data in 24h format to be displayed in the grid, for example `['10:00', '18:30', '22:00']`. Time values must be unique. */\n data: string[];\n\n /** Controlled component value */\n value?: string | null;\n\n /** Uncontrolled component default value */\n defaultValue?: string | null;\n\n /** Called when value changes */\n onChange?: (value: string | null) => void;\n\n /** Determines whether the value can be deselected when the current active option is clicked or activated with keyboard @default false */\n allowDeselect?: boolean;\n\n /** Time format displayed in the grid @default '24h' */\n format?: TimePickerFormat;\n\n /** Determines whether the seconds part should be displayed @default false */\n withSeconds?: boolean;\n\n /** Labels used for am/pm values @default { am: 'AM', pm: 'PM' } */\n amPmLabels?: TimePickerAmPmLabels;\n\n /** Props passed down to the underlying `SimpleGrid` component @default { cols: 3, spacing: 'xs' } */\n simpleGridProps?: SimpleGridProps;\n\n /** A function to pass props down to control based on the time value */\n getControlProps?: (time: string) => React.ComponentProps<'button'> & DataAttributes;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Control `font-size` of controls, key of `theme.fontSizes` or any valid CSS value @default 'sm' */\n size?: MantineSize;\n\n /** All controls before this time are disabled */\n minTime?: string;\n\n /** All controls after this time are disabled */\n maxTime?: string;\n\n /** Array of time values to disable */\n disableTime?: string[] | ((time: string) => boolean);\n\n /** If set, all controls are disabled */\n disabled?: boolean;\n}\n\nexport type TimeGridFactory = Factory<{\n props: TimeGridProps;\n ref: HTMLDivElement;\n stylesNames: TimeGridStylesNames;\n vars: TimeGridCssVariables;\n}>;\n\nconst defaultProps = {\n simpleGridProps: { cols: 3, spacing: 'xs' },\n format: '24h',\n amPmLabels: { am: 'AM', pm: 'PM' },\n} satisfies Partial<TimeGridProps>;\n\nconst varsResolver = createVarsResolver<TimeGridFactory>((_theme, { size, radius }) => ({\n root: {\n '--time-grid-fz': getFontSize(size),\n '--time-grid-radius': getRadius(radius),\n },\n}));\n\nexport const TimeGrid = factory<TimeGridFactory>((_props) => {\n const props = useProps('TimeGrid', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n data,\n value,\n defaultValue,\n onChange,\n format,\n withSeconds = false,\n amPmLabels,\n allowDeselect,\n simpleGridProps,\n getControlProps,\n minTime,\n maxTime,\n disableTime,\n disabled,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<TimeGridFactory>({\n name: 'TimeGrid',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const [_value, setValue] = useUncontrolled({\n value,\n defaultValue,\n finalValue: null,\n onChange,\n });\n\n const controls = data.map((time) => {\n const isDisabled =\n disabled ||\n (!!minTime && isTimeBefore(time, minTime)) ||\n (!!maxTime && isTimeAfter(time, maxTime)) ||\n (Array.isArray(disableTime)\n ? !!disableTime.find((t) => isSameTime({ time, compare: t, withSeconds }))\n : !!disableTime?.(time));\n\n return (\n <TimeGridControl\n key={time}\n active={isSameTime({ time, compare: _value || '', withSeconds })}\n time={time}\n onClick={() => {\n const nextValue =\n allowDeselect &&\n (_value === null ? time === _value : isSameTime({ time, compare: _value, withSeconds }))\n ? null\n : time;\n nextValue !== _value && setValue(nextValue);\n }}\n format={format}\n amPmLabels={amPmLabels}\n disabled={isDisabled}\n data-disabled={isDisabled || undefined}\n withSeconds={withSeconds}\n {...getControlProps?.(time)}\n />\n );\n });\n\n return (\n <TimeGridProvider value={{ getStyles }}>\n <Box {...getStyles('root')} {...others}>\n <SimpleGrid\n {...simpleGridProps}\n {...getStyles('simpleGrid', {\n className: simpleGridProps?.className,\n style: simpleGridProps?.style,\n })}\n >\n {controls}\n </SimpleGrid>\n </Box>\n </TimeGridProvider>\n );\n});\n\nTimeGrid.displayName = '@mantine/dates/TimeGrid';\nTimeGrid.classes = classes;\nTimeGrid.varsResolver = varsResolver;\n"],"mappings":";;;;;;;;;;AA4FA,MAAM,eAAe;CACnB,iBAAiB;EAAE,MAAM;EAAG,SAAS;EAAM;CAC3C,QAAQ;CACR,YAAY;EAAE,IAAI;EAAM,IAAI;EAAM;CACnC;AAED,MAAM,eAAe,oBAAqC,QAAQ,EAAE,MAAM,cAAc,EACtF,MAAM;CACJ,kBAAkB,YAAY,KAAK;CACnC,sBAAsB,UAAU,OAAO;CACxC,EACF,EAAE;AAEH,MAAa,WAAW,SAA0B,WAAW;CAC3D,MAAM,QAAQ,SAAS,YAAY,cAAc,OAAO;CACxD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,OACA,cACA,UACA,QACA,cAAc,OACd,YACA,eACA,iBACA,iBACA,SACA,SACA,aACA,UACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAA2B;EAC3C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,CAAC,QAAQ,YAAY,gBAAgB;EACzC;EACA;EACA,YAAY;EACZ;EACD,CAAC;CAEF,MAAM,WAAW,KAAK,KAAK,SAAS;EAClC,MAAM,aACJ,YACC,CAAC,CAAC,WAAW,aAAa,MAAM,QAAQ,IACxC,CAAC,CAAC,WAAW,YAAY,MAAM,QAAQ,KACvC,MAAM,QAAQ,YAAY,GACvB,CAAC,CAAC,YAAY,MAAM,MAAM,WAAW;GAAE;GAAM,SAAS;GAAG;GAAa,CAAC,CAAC,GACxE,CAAC,CAAC,cAAc,KAAK;AAE3B,SACE,oBAAC,iBAAD;GAEE,QAAQ,WAAW;IAAE;IAAM,SAAS,UAAU;IAAI;IAAa,CAAC;GAC1D;GACN,eAAe;IACb,MAAM,YACJ,kBACC,WAAW,OAAO,SAAS,SAAS,WAAW;KAAE;KAAM,SAAS;KAAQ;KAAa,CAAC,IACnF,OACA;AACN,kBAAc,UAAU,SAAS,UAAU;;GAErC;GACI;GACZ,UAAU;GACV,iBAAe,cAAc,KAAA;GAChB;GACb,GAAI,kBAAkB,KAAK;GAC3B,EAjBK,KAiBL;GAEJ;AAEF,QACE,oBAAC,kBAAD;EAAkB,OAAO,EAAE,WAAW;YACpC,oBAAC,KAAD;GAAK,GAAI,UAAU,OAAO;GAAE,GAAI;aAC9B,oBAAC,YAAD;IACE,GAAI;IACJ,GAAI,UAAU,cAAc;KAC1B,WAAW,iBAAiB;KAC5B,OAAO,iBAAiB;KACzB,CAAC;cAED;IACU,CAAA;GACT,CAAA;EACW,CAAA;EAErB;AAEF,SAAS,cAAc;AACvB,SAAS,UAAUA;AACnB,SAAS,eAAe"}
1
+ {"version":3,"file":"TimeGrid.mjs","names":["classes"],"sources":["../../../src/components/TimeGrid/TimeGrid.tsx"],"sourcesContent":["import {\n Box,\n BoxProps,\n createVarsResolver,\n DataAttributes,\n ElementProps,\n factory,\n Factory,\n getFontSize,\n getRadius,\n MantineRadius,\n MantineSize,\n SimpleGrid,\n SimpleGridProps,\n StylesApiProps,\n useProps,\n useStyles,\n} from '@mantine/core';\nimport { useUncontrolled } from '@mantine/hooks';\nimport type { TimePickerAmPmLabels, TimePickerFormat } from '../TimePicker';\nimport { isSameTime } from '../TimePicker/utils/is-same-time/is-same-time';\nimport { isTimeAfter, isTimeBefore } from './compare-time';\nimport { TimeGridProvider } from './TimeGrid.context';\nimport { TimeGridControl } from './TimeGridControl';\nimport classes from './TimeGrid.module.css';\n\nexport type TimeGridStylesNames = 'root' | 'control' | 'simpleGrid';\nexport type TimeGridCssVariables = {\n root: '--time-grid-fz' | '--time-grid-radius';\n};\n\nexport interface TimeGridProps\n extends\n BoxProps,\n StylesApiProps<TimeGridFactory>,\n ElementProps<'div', 'onChange' | 'value' | 'defaultValue'> {\n /** Time data in 24h format to be displayed in the grid, for example `['10:00', '18:30', '22:00']`. Time values must be unique. */\n data: string[];\n\n /** Controlled component value */\n value?: string | null;\n\n /** Uncontrolled component default value */\n defaultValue?: string | null;\n\n /** Called when value changes */\n onChange?: (value: string | null) => void;\n\n /** Determines whether the value can be deselected when the current active option is clicked or activated with keyboard @default false */\n allowDeselect?: boolean;\n\n /** Time format displayed in the grid @default '24h' */\n format?: TimePickerFormat;\n\n /** Determines whether the seconds part should be displayed @default false */\n withSeconds?: boolean;\n\n /** Labels used for am/pm values @default { am: 'AM', pm: 'PM' } */\n amPmLabels?: TimePickerAmPmLabels;\n\n /** Props passed down to the underlying `SimpleGrid` component @default { cols: 3, spacing: 'xs' } */\n simpleGridProps?: SimpleGridProps;\n\n /** A function to pass props down to control based on the time value */\n getControlProps?: (time: string) => React.ComponentProps<'button'> & DataAttributes;\n\n /** Key of `theme.radius` or any valid CSS value to set `border-radius` @default theme.defaultRadius */\n radius?: MantineRadius;\n\n /** Control `font-size` of controls, key of `theme.fontSizes` or any valid CSS value @default 'sm' */\n size?: MantineSize;\n\n /** All controls before this time are disabled */\n minTime?: string;\n\n /** All controls after this time are disabled */\n maxTime?: string;\n\n /** Array of time values to disable */\n disableTime?: string[] | ((time: string) => boolean);\n\n /** If set, all controls are disabled */\n disabled?: boolean;\n}\n\nexport type TimeGridFactory = Factory<{\n props: TimeGridProps;\n ref: HTMLDivElement;\n stylesNames: TimeGridStylesNames;\n vars: TimeGridCssVariables;\n}>;\n\nconst defaultProps = {\n simpleGridProps: { cols: 3, spacing: 'xs' },\n format: '24h',\n amPmLabels: { am: 'AM', pm: 'PM' },\n} satisfies Partial<TimeGridProps>;\n\nconst varsResolver = createVarsResolver<TimeGridFactory>((_theme, { size, radius }) => ({\n root: {\n '--time-grid-fz': getFontSize(size),\n '--time-grid-radius': getRadius(radius),\n },\n}));\n\nexport const TimeGrid = factory<TimeGridFactory>((_props) => {\n const props = useProps('TimeGrid', defaultProps, _props);\n const {\n classNames,\n className,\n style,\n styles,\n unstyled,\n vars,\n data,\n value,\n defaultValue,\n onChange,\n format,\n withSeconds = false,\n amPmLabels,\n allowDeselect,\n simpleGridProps,\n getControlProps,\n minTime,\n maxTime,\n disableTime,\n disabled,\n attributes,\n ...others\n } = props;\n\n const getStyles = useStyles<TimeGridFactory>({\n name: 'TimeGrid',\n classes,\n props,\n className,\n style,\n classNames,\n styles,\n unstyled,\n attributes,\n vars,\n varsResolver,\n });\n\n const [_value, setValue] = useUncontrolled({\n value,\n defaultValue,\n finalValue: null,\n onChange,\n });\n\n const controls = data.map((time) => {\n const isDisabled =\n disabled ||\n (!!minTime && isTimeBefore(time, minTime)) ||\n (!!maxTime && isTimeAfter(time, maxTime)) ||\n (Array.isArray(disableTime)\n ? !!disableTime.find((t) => isSameTime({ time, compare: t, withSeconds }))\n : !!disableTime?.(time));\n\n return (\n <TimeGridControl\n key={time}\n active={isSameTime({ time, compare: _value || '', withSeconds })}\n time={time}\n onClick={() => {\n const nextValue =\n allowDeselect &&\n (_value === null ? time === _value : isSameTime({ time, compare: _value, withSeconds }))\n ? null\n : time;\n nextValue !== _value && setValue(nextValue);\n }}\n format={format}\n amPmLabels={amPmLabels}\n disabled={isDisabled}\n data-disabled={isDisabled || undefined}\n withSeconds={withSeconds}\n {...getControlProps?.(time)}\n />\n );\n });\n\n return (\n <TimeGridProvider value={{ getStyles }}>\n <Box {...getStyles('root')} {...others}>\n <SimpleGrid\n {...simpleGridProps}\n {...getStyles('simpleGrid', {\n className: simpleGridProps?.className,\n style: simpleGridProps?.style,\n })}\n >\n {controls}\n </SimpleGrid>\n </Box>\n </TimeGridProvider>\n );\n});\n\nTimeGrid.displayName = '@mantine/dates/TimeGrid';\nTimeGrid.classes = classes;\nTimeGrid.varsResolver = varsResolver;\n\nexport namespace TimeGrid {\n export type Props = TimeGridProps;\n export type StylesNames = TimeGridStylesNames;\n export type Factory = TimeGridFactory;\n export type CssVariables = TimeGridCssVariables;\n}\n"],"mappings":";;;;;;;;;;AA4FA,MAAM,eAAe;CACnB,iBAAiB;EAAE,MAAM;EAAG,SAAS;EAAM;CAC3C,QAAQ;CACR,YAAY;EAAE,IAAI;EAAM,IAAI;EAAM;CACnC;AAED,MAAM,eAAe,oBAAqC,QAAQ,EAAE,MAAM,cAAc,EACtF,MAAM;CACJ,kBAAkB,YAAY,KAAK;CACnC,sBAAsB,UAAU,OAAO;CACxC,EACF,EAAE;AAEH,MAAa,WAAW,SAA0B,WAAW;CAC3D,MAAM,QAAQ,SAAS,YAAY,cAAc,OAAO;CACxD,MAAM,EACJ,YACA,WACA,OACA,QACA,UACA,MACA,MACA,OACA,cACA,UACA,QACA,cAAc,OACd,YACA,eACA,iBACA,iBACA,SACA,SACA,aACA,UACA,YACA,GAAG,WACD;CAEJ,MAAM,YAAY,UAA2B;EAC3C,MAAM;EACN,SAAA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CAAC;CAEF,MAAM,CAAC,QAAQ,YAAY,gBAAgB;EACzC;EACA;EACA,YAAY;EACZ;EACD,CAAC;CAEF,MAAM,WAAW,KAAK,KAAK,SAAS;EAClC,MAAM,aACJ,YACC,CAAC,CAAC,WAAW,aAAa,MAAM,QAAQ,IACxC,CAAC,CAAC,WAAW,YAAY,MAAM,QAAQ,KACvC,MAAM,QAAQ,YAAY,GACvB,CAAC,CAAC,YAAY,MAAM,MAAM,WAAW;GAAE;GAAM,SAAS;GAAG;GAAa,CAAC,CAAC,GACxE,CAAC,CAAC,cAAc,KAAK;AAE3B,SACE,oBAAC,iBAAD;GAEE,QAAQ,WAAW;IAAE;IAAM,SAAS,UAAU;IAAI;IAAa,CAAC;GAC1D;GACN,eAAe;IACb,MAAM,YACJ,kBACC,WAAW,OAAO,SAAS,SAAS,WAAW;KAAE;KAAM,SAAS;KAAQ;KAAa,CAAC,IACnF,OACA;AACN,kBAAc,UAAU,SAAS,UAAU;;GAErC;GACI;GACZ,UAAU;GACV,iBAAe,cAAc,KAAA;GAChB;GACb,GAAI,kBAAkB,KAAK;GAC3B,EAjBK,KAiBL;GAEJ;AAEF,QACE,oBAAC,kBAAD;EAAkB,OAAO,EAAE,WAAW;YACpC,oBAAC,KAAD;GAAK,GAAI,UAAU,OAAO;GAAE,GAAI;aAC9B,oBAAC,YAAD;IACE,GAAI;IACJ,GAAI,UAAU,cAAc;KAC1B,WAAW,iBAAiB;KAC5B,OAAO,iBAAiB;KACzB,CAAC;cAED;IACU,CAAA;GACT,CAAA;EACW,CAAA;EAErB;AAEF,SAAS,cAAc;AACvB,SAAS,UAAUA;AACnB,SAAS,eAAe"}
@@ -5,7 +5,7 @@ import cx from "clsx";
5
5
  import { InputBase, factory, useProps, useResolvedStylesApi } from "@mantine/core";
6
6
  //#region packages/@mantine/dates/src/components/TimeInput/TimeInput.tsx
7
7
  const TimeInput = factory((_props) => {
8
- const props = useProps("TimeInput", null, _props);
8
+ const props = useProps("TimeInput", { size: "sm" }, _props);
9
9
  const { classNames, styles, unstyled, vars, withSeconds, minTime, maxTime, value, onChange, step, ...others } = props;
10
10
  const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi({
11
11
  classNames,
@@ -1 +1 @@
1
- {"version":3,"file":"TimeInput.mjs","names":["classes"],"sources":["../../../src/components/TimeInput/TimeInput.tsx"],"sourcesContent":["import cx from 'clsx';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n InputBase,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n} from '@mantine/core';\nimport classes from './TimeInput.module.css';\n\nexport interface TimeInputProps\n extends\n BoxProps,\n __BaseInputProps,\n StylesApiProps<TimeInputFactory>,\n ElementProps<'input', 'size'> {\n /** Determines whether seconds input should be displayed @default false */\n withSeconds?: boolean;\n\n /** Minimum possible string time, if `withSeconds` is true, time should be in format HH:mm:ss, otherwise HH:mm */\n minTime?: string;\n\n /** Maximum possible string time, if `withSeconds` is true, time should be in format HH:mm:ss, otherwise HH:mm */\n maxTime?: string;\n}\n\nexport type TimeInputFactory = Factory<{\n props: TimeInputProps;\n ref: HTMLInputElement;\n stylesNames: __InputStylesNames;\n}>;\n\nexport const TimeInput = factory<TimeInputFactory>((_props) => {\n const props = useProps('TimeInput', null, _props);\n const {\n classNames,\n styles,\n unstyled,\n vars,\n withSeconds,\n minTime,\n maxTime,\n value,\n onChange,\n step,\n ...others\n } = props;\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<TimeInputFactory>({\n classNames,\n styles,\n props,\n });\n\n /**\n * Check if time is within limits or not\n * If the given value is within limits, return 0\n * If the given value is greater than the maxTime, return 1\n * If the given value is less than the minTime, return -1\n */\n const checkIfTimeLimitExceeded = (val: string) => {\n if (minTime !== undefined || maxTime !== undefined) {\n const [hours, minutes, seconds] = val.split(':').map(Number);\n\n if (minTime) {\n const [minHours, minMinutes, minSeconds] = minTime.split(':').map(Number);\n\n if (\n hours < minHours ||\n (hours === minHours && minutes < minMinutes) ||\n (withSeconds && hours === minHours && minutes === minMinutes && seconds < minSeconds)\n ) {\n return -1;\n }\n }\n\n if (maxTime) {\n const [maxHours, maxMinutes, maxSeconds] = maxTime.split(':').map(Number);\n\n if (\n hours > maxHours ||\n (hours === maxHours && minutes > maxMinutes) ||\n (withSeconds && hours === maxHours && minutes === maxMinutes && seconds > maxSeconds)\n ) {\n return 1;\n }\n }\n }\n\n return 0;\n };\n\n const onTimeBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n props.onBlur?.(event);\n if (minTime !== undefined || maxTime !== undefined) {\n const val = event.currentTarget.value;\n\n if (val) {\n const check = checkIfTimeLimitExceeded(val);\n if (check === 1) {\n if (maxTime) {\n event.currentTarget.value = maxTime;\n }\n\n props.onChange?.(event);\n } else if (check === -1) {\n if (minTime) {\n event.currentTarget.value = minTime;\n }\n\n props.onChange?.(event);\n }\n }\n }\n };\n\n return (\n <InputBase\n classNames={{ ...resolvedClassNames, input: cx(classes.input, resolvedClassNames?.input) }}\n styles={resolvedStyles}\n unstyled={unstyled}\n value={value}\n step={step ?? (withSeconds ? 1 : 60)}\n {...others}\n onChange={onChange}\n onBlur={onTimeBlur}\n type=\"time\"\n __staticSelector=\"TimeInput\"\n />\n );\n});\n\nTimeInput.classes = InputBase.classes;\nTimeInput.displayName = '@mantine/dates/TimeInput';\n"],"mappings":";;;;;;AAqCA,MAAa,YAAY,SAA2B,WAAW;CAC7D,MAAM,QAAQ,SAAS,aAAa,MAAM,OAAO;CACjD,MAAM,EACJ,YACA,QACA,UACA,MACA,aACA,SACA,SACA,OACA,UACA,MACA,GAAG,WACD;CAEJ,MAAM,EAAE,oBAAoB,mBAAmB,qBAAuC;EACpF;EACA;EACA;EACD,CAAC;;;;;;;CAQF,MAAM,4BAA4B,QAAgB;AAChD,MAAI,YAAY,KAAA,KAAa,YAAY,KAAA,GAAW;GAClD,MAAM,CAAC,OAAO,SAAS,WAAW,IAAI,MAAM,IAAI,CAAC,IAAI,OAAO;AAE5D,OAAI,SAAS;IACX,MAAM,CAAC,UAAU,YAAY,cAAc,QAAQ,MAAM,IAAI,CAAC,IAAI,OAAO;AAEzE,QACE,QAAQ,YACP,UAAU,YAAY,UAAU,cAChC,eAAe,UAAU,YAAY,YAAY,cAAc,UAAU,WAE1E,QAAO;;AAIX,OAAI,SAAS;IACX,MAAM,CAAC,UAAU,YAAY,cAAc,QAAQ,MAAM,IAAI,CAAC,IAAI,OAAO;AAEzE,QACE,QAAQ,YACP,UAAU,YAAY,UAAU,cAChC,eAAe,UAAU,YAAY,YAAY,cAAc,UAAU,WAE1E,QAAO;;;AAKb,SAAO;;CAGT,MAAM,cAAc,UAA8C;AAChE,QAAM,SAAS,MAAM;AACrB,MAAI,YAAY,KAAA,KAAa,YAAY,KAAA,GAAW;GAClD,MAAM,MAAM,MAAM,cAAc;AAEhC,OAAI,KAAK;IACP,MAAM,QAAQ,yBAAyB,IAAI;AAC3C,QAAI,UAAU,GAAG;AACf,SAAI,QACF,OAAM,cAAc,QAAQ;AAG9B,WAAM,WAAW,MAAM;eACd,UAAU,IAAI;AACvB,SAAI,QACF,OAAM,cAAc,QAAQ;AAG9B,WAAM,WAAW,MAAM;;;;;AAM/B,QACE,oBAAC,WAAD;EACE,YAAY;GAAE,GAAG;GAAoB,OAAO,GAAGA,yBAAQ,OAAO,oBAAoB,MAAM;GAAE;EAC1F,QAAQ;EACE;EACH;EACP,MAAM,SAAS,cAAc,IAAI;EACjC,GAAI;EACM;EACV,QAAQ;EACR,MAAK;EACL,kBAAiB;EACjB,CAAA;EAEJ;AAEF,UAAU,UAAU,UAAU;AAC9B,UAAU,cAAc"}
1
+ {"version":3,"file":"TimeInput.mjs","names":["classes"],"sources":["../../../src/components/TimeInput/TimeInput.tsx"],"sourcesContent":["import cx from 'clsx';\nimport {\n __BaseInputProps,\n __InputStylesNames,\n BoxProps,\n ElementProps,\n factory,\n Factory,\n InputBase,\n StylesApiProps,\n useProps,\n useResolvedStylesApi,\n} from '@mantine/core';\nimport classes from './TimeInput.module.css';\n\nexport interface TimeInputProps\n extends\n BoxProps,\n __BaseInputProps,\n StylesApiProps<TimeInputFactory>,\n ElementProps<'input', 'size'> {\n /** Determines whether seconds input should be displayed @default false */\n withSeconds?: boolean;\n\n /** Minimum possible string time, if `withSeconds` is true, time should be in format HH:mm:ss, otherwise HH:mm */\n minTime?: string;\n\n /** Maximum possible string time, if `withSeconds` is true, time should be in format HH:mm:ss, otherwise HH:mm */\n maxTime?: string;\n}\n\nexport type TimeInputFactory = Factory<{\n props: TimeInputProps;\n ref: HTMLInputElement;\n stylesNames: __InputStylesNames;\n}>;\n\nexport const TimeInput = factory<TimeInputFactory>((_props) => {\n const props = useProps('TimeInput', { size: 'sm' } satisfies Partial<TimeInputProps>, _props);\n const {\n classNames,\n styles,\n unstyled,\n vars,\n withSeconds,\n minTime,\n maxTime,\n value,\n onChange,\n step,\n ...others\n } = props;\n\n const { resolvedClassNames, resolvedStyles } = useResolvedStylesApi<TimeInputFactory>({\n classNames,\n styles,\n props,\n });\n\n /**\n * Check if time is within limits or not\n * If the given value is within limits, return 0\n * If the given value is greater than the maxTime, return 1\n * If the given value is less than the minTime, return -1\n */\n const checkIfTimeLimitExceeded = (val: string) => {\n if (minTime !== undefined || maxTime !== undefined) {\n const [hours, minutes, seconds] = val.split(':').map(Number);\n\n if (minTime) {\n const [minHours, minMinutes, minSeconds] = minTime.split(':').map(Number);\n\n if (\n hours < minHours ||\n (hours === minHours && minutes < minMinutes) ||\n (withSeconds && hours === minHours && minutes === minMinutes && seconds < minSeconds)\n ) {\n return -1;\n }\n }\n\n if (maxTime) {\n const [maxHours, maxMinutes, maxSeconds] = maxTime.split(':').map(Number);\n\n if (\n hours > maxHours ||\n (hours === maxHours && minutes > maxMinutes) ||\n (withSeconds && hours === maxHours && minutes === maxMinutes && seconds > maxSeconds)\n ) {\n return 1;\n }\n }\n }\n\n return 0;\n };\n\n const onTimeBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n props.onBlur?.(event);\n if (minTime !== undefined || maxTime !== undefined) {\n const val = event.currentTarget.value;\n\n if (val) {\n const check = checkIfTimeLimitExceeded(val);\n if (check === 1) {\n if (maxTime) {\n event.currentTarget.value = maxTime;\n }\n\n props.onChange?.(event);\n } else if (check === -1) {\n if (minTime) {\n event.currentTarget.value = minTime;\n }\n\n props.onChange?.(event);\n }\n }\n }\n };\n\n return (\n <InputBase\n classNames={{ ...resolvedClassNames, input: cx(classes.input, resolvedClassNames?.input) }}\n styles={resolvedStyles}\n unstyled={unstyled}\n value={value}\n step={step ?? (withSeconds ? 1 : 60)}\n {...others}\n onChange={onChange}\n onBlur={onTimeBlur}\n type=\"time\"\n __staticSelector=\"TimeInput\"\n />\n );\n});\n\nTimeInput.classes = InputBase.classes;\nTimeInput.displayName = '@mantine/dates/TimeInput';\n\nexport namespace TimeInput {\n export type Props = TimeInputProps;\n export type Factory = TimeInputFactory;\n}\n"],"mappings":";;;;;;AAqCA,MAAa,YAAY,SAA2B,WAAW;CAC7D,MAAM,QAAQ,SAAS,aAAa,EAAE,MAAM,MAAM,EAAoC,OAAO;CAC7F,MAAM,EACJ,YACA,QACA,UACA,MACA,aACA,SACA,SACA,OACA,UACA,MACA,GAAG,WACD;CAEJ,MAAM,EAAE,oBAAoB,mBAAmB,qBAAuC;EACpF;EACA;EACA;EACD,CAAC;;;;;;;CAQF,MAAM,4BAA4B,QAAgB;AAChD,MAAI,YAAY,KAAA,KAAa,YAAY,KAAA,GAAW;GAClD,MAAM,CAAC,OAAO,SAAS,WAAW,IAAI,MAAM,IAAI,CAAC,IAAI,OAAO;AAE5D,OAAI,SAAS;IACX,MAAM,CAAC,UAAU,YAAY,cAAc,QAAQ,MAAM,IAAI,CAAC,IAAI,OAAO;AAEzE,QACE,QAAQ,YACP,UAAU,YAAY,UAAU,cAChC,eAAe,UAAU,YAAY,YAAY,cAAc,UAAU,WAE1E,QAAO;;AAIX,OAAI,SAAS;IACX,MAAM,CAAC,UAAU,YAAY,cAAc,QAAQ,MAAM,IAAI,CAAC,IAAI,OAAO;AAEzE,QACE,QAAQ,YACP,UAAU,YAAY,UAAU,cAChC,eAAe,UAAU,YAAY,YAAY,cAAc,UAAU,WAE1E,QAAO;;;AAKb,SAAO;;CAGT,MAAM,cAAc,UAA8C;AAChE,QAAM,SAAS,MAAM;AACrB,MAAI,YAAY,KAAA,KAAa,YAAY,KAAA,GAAW;GAClD,MAAM,MAAM,MAAM,cAAc;AAEhC,OAAI,KAAK;IACP,MAAM,QAAQ,yBAAyB,IAAI;AAC3C,QAAI,UAAU,GAAG;AACf,SAAI,QACF,OAAM,cAAc,QAAQ;AAG9B,WAAM,WAAW,MAAM;eACd,UAAU,IAAI;AACvB,SAAI,QACF,OAAM,cAAc,QAAQ;AAG9B,WAAM,WAAW,MAAM;;;;;AAM/B,QACE,oBAAC,WAAD;EACE,YAAY;GAAE,GAAG;GAAoB,OAAO,GAAGA,yBAAQ,OAAO,oBAAoB,MAAM;GAAE;EAC1F,QAAQ;EACE;EACH;EACP,MAAM,SAAS,cAAc,IAAI;EACjC,GAAI;EACM;EACV,QAAQ;EACR,MAAK;EACL,kBAAiB;EACjB,CAAA;EAEJ;AAEF,UAAU,UAAU,UAAU;AAC9B,UAAU,cAAc"}