@mantine/dates 6.0.4 → 6.0.6

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 (56) hide show
  1. package/cjs/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.js +18 -0
  2. package/cjs/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.js.map +1 -1
  3. package/cjs/components/DateInput/DateInput.js +1 -1
  4. package/cjs/components/DateInput/DateInput.js.map +1 -1
  5. package/cjs/components/DecadeLevelGroup/DecadeLevelGroup.js +10 -11
  6. package/cjs/components/DecadeLevelGroup/DecadeLevelGroup.js.map +1 -1
  7. package/cjs/components/Month/Month.js +1 -1
  8. package/cjs/components/Month/Month.js.map +1 -1
  9. package/cjs/components/Month/get-date-in-tab-order/get-date-in-tab-order.js +3 -2
  10. package/cjs/components/Month/get-date-in-tab-order/get-date-in-tab-order.js.map +1 -1
  11. package/cjs/components/MonthLevelGroup/MonthLevelGroup.js +4 -5
  12. package/cjs/components/MonthLevelGroup/MonthLevelGroup.js.map +1 -1
  13. package/cjs/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.js +2 -2
  14. package/cjs/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.js.map +1 -1
  15. package/cjs/components/YearLevelGroup/YearLevelGroup.js +10 -11
  16. package/cjs/components/YearLevelGroup/YearLevelGroup.js.map +1 -1
  17. package/cjs/hooks/use-uncontrolled-dates/use-uncontrolled-dates.js +32 -2
  18. package/cjs/hooks/use-uncontrolled-dates/use-uncontrolled-dates.js.map +1 -1
  19. package/cjs/utils/handle-control-key-down.js +138 -56
  20. package/cjs/utils/handle-control-key-down.js.map +1 -1
  21. package/esm/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.js +18 -0
  22. package/esm/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.js.map +1 -1
  23. package/esm/components/DateInput/DateInput.js +1 -1
  24. package/esm/components/DateInput/DateInput.js.map +1 -1
  25. package/esm/components/DecadeLevelGroup/DecadeLevelGroup.js +10 -11
  26. package/esm/components/DecadeLevelGroup/DecadeLevelGroup.js.map +1 -1
  27. package/esm/components/Month/Month.js +1 -1
  28. package/esm/components/Month/Month.js.map +1 -1
  29. package/esm/components/Month/get-date-in-tab-order/get-date-in-tab-order.js +3 -2
  30. package/esm/components/Month/get-date-in-tab-order/get-date-in-tab-order.js.map +1 -1
  31. package/esm/components/MonthLevelGroup/MonthLevelGroup.js +4 -5
  32. package/esm/components/MonthLevelGroup/MonthLevelGroup.js.map +1 -1
  33. package/esm/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.js +2 -2
  34. package/esm/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.js.map +1 -1
  35. package/esm/components/YearLevelGroup/YearLevelGroup.js +10 -11
  36. package/esm/components/YearLevelGroup/YearLevelGroup.js.map +1 -1
  37. package/esm/hooks/use-uncontrolled-dates/use-uncontrolled-dates.js +32 -2
  38. package/esm/hooks/use-uncontrolled-dates/use-uncontrolled-dates.js.map +1 -1
  39. package/esm/utils/handle-control-key-down.js +138 -56
  40. package/esm/utils/handle-control-key-down.js.map +1 -1
  41. package/lib/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.d.ts +7 -1
  42. package/lib/components/Calendar/pick-calendar-levels-props/pick-calendar-levels-props.d.ts.map +1 -1
  43. package/lib/components/DateInput/DateInput.d.ts +9 -1
  44. package/lib/components/DateInput/DateInput.d.ts.map +1 -1
  45. package/lib/components/DecadeLevelGroup/DecadeLevelGroup.d.ts.map +1 -1
  46. package/lib/components/Month/Month.d.ts.map +1 -1
  47. package/lib/components/Month/get-date-in-tab-order/get-date-in-tab-order.d.ts +1 -1
  48. package/lib/components/Month/get-date-in-tab-order/get-date-in-tab-order.d.ts.map +1 -1
  49. package/lib/components/MonthLevelGroup/MonthLevelGroup.d.ts.map +1 -1
  50. package/lib/components/YearLevelGroup/YearLevelGroup.d.ts.map +1 -1
  51. package/lib/hooks/use-dates-state/use-dates-state.d.ts +1 -1
  52. package/lib/hooks/use-uncontrolled-dates/use-uncontrolled-dates.d.ts +1 -1
  53. package/lib/hooks/use-uncontrolled-dates/use-uncontrolled-dates.d.ts.map +1 -1
  54. package/lib/utils/handle-control-key-down.d.ts +5 -7
  55. package/lib/utils/handle-control-key-down.d.ts.map +1 -1
  56. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"Month.js","sources":["../../../src/components/Month/Month.tsx"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\nimport dayjs from 'dayjs';\nimport React, { forwardRef } from 'react';\nimport { DefaultProps, Selectors, Box, useComponentDefaultProps, MantineSize } from '@mantine/core';\nimport { useDatesContext } from '../DatesProvider';\nimport { WeekdaysRow, WeekdaysRowStylesNames } from '../WeekdaysRow';\nimport { Day, DayStylesNames, DayProps } from '../Day';\nimport { ControlKeydownPayload, DayOfWeek } from '../../types';\nimport { getMonthDays } from './get-month-days/get-month-days';\nimport { isSameMonth } from './is-same-month/is-same-month';\nimport { isBeforeMaxDate } from './is-before-max-date/is-before-max-date';\nimport { isAfterMinDate } from './is-after-min-date/is-after-min-date';\nimport useStyles from './Month.styles';\nimport { getDateInTabOrder } from './get-date-in-tab-order/get-date-in-tab-order';\n\nexport type MonthStylesNames =\n | Selectors<typeof useStyles>\n | WeekdaysRowStylesNames\n | DayStylesNames;\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: Date): void;\n\n /** Called when mouse enters day */\n __onDayMouseEnter?(event: React.MouseEvent<HTMLButtonElement>, date: Date): 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, defaults to value defined in DatesProvider */\n locale?: string;\n\n /** number 0-6, 0 – Sunday, 6 – Saturday, defaults to 1 – Monday */\n firstDayOfWeek?: DayOfWeek;\n\n /** dayjs format for weekdays names, defaults to \"dd\" */\n weekdayFormat?: string;\n\n /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday, defaults to value defined in DatesProvider */\n weekendDays?: DayOfWeek[];\n\n /** Adds props to Day component based on date */\n getDayProps?(date: Date): Partial<DayProps>;\n\n /** Callback function to determine whether the day should be disabled */\n excludeDate?(date: Date): boolean;\n\n /** Minimum possible date */\n minDate?: Date;\n\n /** Maximum possible date */\n maxDate?: Date;\n\n /** Controls day value rendering */\n renderDay?(date: Date): React.ReactNode;\n\n /** Determines whether outside dates should be hidden, defaults to false */\n hideOutsideDates?: boolean;\n\n /** Determines whether weekdays row should be hidden, defaults to false */\n hideWeekdays?: boolean;\n\n /** Assigns aria-label to days based on date */\n getDayAriaLabel?(date: Date): string;\n\n /** Controls size */\n size?: MantineSize;\n\n /** Determines whether controls should be separated by spacing, true by default */\n withCellSpacing?: boolean;\n}\n\nexport interface MonthProps\n extends DefaultProps<MonthStylesNames>,\n MonthSettings,\n React.ComponentPropsWithoutRef<'table'> {\n variant?: string;\n __staticSelector?: string;\n\n /** Month to display */\n month: Date;\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\nconst defaultProps: Partial<MonthProps> = {\n size: 'sm',\n withCellSpacing: true,\n};\n\nexport const Month = forwardRef<HTMLTableElement, MonthProps>((props, ref) => {\n const {\n className,\n classNames,\n styles,\n unstyled,\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 variant,\n ...others\n } = useComponentDefaultProps('Month', defaultProps, props);\n\n const ctx = useDatesContext();\n\n const { classes, cx } = useStyles(null, {\n name: ['Month', __staticSelector],\n classNames,\n styles,\n unstyled,\n variant,\n size,\n });\n\n const stylesApiProps = {\n __staticSelector: __staticSelector || 'Month',\n classNames,\n styles,\n unstyled,\n variant,\n size,\n };\n\n const dates = getMonthDays(month, ctx.getFirstDayOfWeek(firstDayOfWeek));\n\n const dateInTabOrder = getDateInTabOrder(dates, minDate, maxDate, getDayProps, excludeDate);\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 className={classes.monthCell}\n data-with-spacing={withCellSpacing || undefined}\n >\n <Day\n {...stylesApiProps}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n renderDay={renderDay}\n date={date}\n weekend={ctx.getWeekendDays(weekendDays).includes(date.getDay() as DayOfWeek)}\n outside={outside}\n hidden={hideOutsideDates ? outside : false}\n aria-label={ariaLabel}\n static={isStatic}\n disabled={\n excludeDate?.(date) ||\n !isBeforeMaxDate(date, maxDate) ||\n !isAfterMinDate(date, minDate)\n }\n ref={(node) => __getDayRef?.(rowIndex, cellIndex, node)}\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 __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} className={classes.monthRow}>\n {cells}\n </tr>\n );\n });\n\n return (\n <Box component=\"table\" className={cx(classes.month, className)} ref={ref} {...others}>\n {!hideWeekdays && (\n <thead className={classes.monthThead}>\n <WeekdaysRow\n {...stylesApiProps}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n weekdayFormat={weekdayFormat}\n />\n </thead>\n )}\n <tbody className={classes.monthTbody}>{rows}</tbody>\n </Box>\n );\n});\n\nMonth.displayName = '@mantine/dates/Month';\n"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAI,iBAAiB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACzD,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,IAAI,SAAS,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK;AACrC,EAAE,IAAI,MAAM,GAAG,EAAE,CAAC;AAClB,EAAE,KAAK,IAAI,IAAI,IAAI,MAAM;AACzB,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;AACpE,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,IAAI,MAAM,IAAI,IAAI,IAAI,mBAAmB;AAC3C,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,MAAM,CAAC,EAAE;AAClD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;AACtE,QAAQ,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,KAAK;AACL,EAAE,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAaF,MAAM,YAAY,GAAG;AACrB,EAAE,IAAI,EAAE,IAAI;AACZ,EAAE,eAAe,EAAE,IAAI;AACvB,CAAC,CAAC;AACU,MAAC,KAAK,GAAG,UAAU,CAAC,CAAC,KAAK,EAAE,GAAG,KAAK;AAChD,EAAE,MAAM,EAAE,GAAG,wBAAwB,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE;AACrE,IAAI,SAAS;AACb,IAAI,UAAU;AACd,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,gBAAgB;AACpB,IAAI,MAAM;AACV,IAAI,cAAc;AAClB,IAAI,aAAa;AACjB,IAAI,KAAK;AACT,IAAI,WAAW;AACf,IAAI,WAAW;AACf,IAAI,WAAW;AACf,IAAI,OAAO;AACX,IAAI,OAAO;AACX,IAAI,SAAS;AACb,IAAI,gBAAgB;AACpB,IAAI,YAAY;AAChB,IAAI,eAAe;AACnB,IAAI,MAAM,EAAE,QAAQ;AACpB,IAAI,WAAW;AACf,IAAI,cAAc;AAClB,IAAI,YAAY;AAChB,IAAI,iBAAiB;AACrB,IAAI,cAAc;AAClB,IAAI,iBAAiB;AACrB,IAAI,eAAe;AACnB,IAAI,IAAI;AACR,IAAI,OAAO;AACX,GAAG,GAAG,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,EAAE;AACjC,IAAI,WAAW;AACf,IAAI,YAAY;AAChB,IAAI,QAAQ;AACZ,IAAI,UAAU;AACd,IAAI,kBAAkB;AACtB,IAAI,QAAQ;AACZ,IAAI,gBAAgB;AACpB,IAAI,eAAe;AACnB,IAAI,OAAO;AACX,IAAI,aAAa;AACjB,IAAI,aAAa;AACjB,IAAI,aAAa;AACjB,IAAI,SAAS;AACb,IAAI,SAAS;AACb,IAAI,WAAW;AACf,IAAI,kBAAkB;AACtB,IAAI,cAAc;AAClB,IAAI,iBAAiB;AACrB,IAAI,QAAQ;AACZ,IAAI,aAAa;AACjB,IAAI,gBAAgB;AACpB,IAAI,cAAc;AAClB,IAAI,mBAAmB;AACvB,IAAI,gBAAgB;AACpB,IAAI,mBAAmB;AACvB,IAAI,iBAAiB;AACrB,IAAI,MAAM;AACV,IAAI,SAAS;AACb,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,GAAG,GAAG,eAAe,EAAE,CAAC;AAChC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE;AAC1C,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC;AACrC,IAAI,UAAU;AACd,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,IAAI;AACR,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,cAAc,GAAG;AACzB,IAAI,gBAAgB,EAAE,gBAAgB,IAAI,OAAO;AACjD,IAAI,UAAU;AACd,IAAI,MAAM;AACV,IAAI,QAAQ;AACZ,IAAI,OAAO;AACX,IAAI,IAAI;AACR,GAAG,CAAC;AACJ,EAAE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,EAAE,GAAG,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;AAC3E,EAAE,MAAM,cAAc,GAAG,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAC9F,EAAE,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAK;AAC5C,IAAI,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK;AAC/C,MAAM,MAAM,OAAO,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAChD,MAAM,MAAM,SAAS,GAAG,CAAC,eAAe,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;AACrJ,MAAM,MAAM,QAAQ,GAAG,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AACxE,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAC1E,MAAM,uBAAuB,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE;AACvD,QAAQ,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE;AAC5B,QAAQ,SAAS,EAAE,OAAO,CAAC,SAAS;AACpC,QAAQ,mBAAmB,EAAE,eAAe,IAAI,KAAK,CAAC;AACtD,OAAO,kBAAkB,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE;AACjI,QAAQ,+BAA+B,EAAE,iBAAiB,IAAI,KAAK,CAAC;AACpE,QAAQ,SAAS;AACjB,QAAQ,IAAI;AACZ,QAAQ,OAAO,EAAE,GAAG,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AACxE,QAAQ,OAAO;AACf,QAAQ,MAAM,EAAE,gBAAgB,GAAG,OAAO,GAAG,KAAK;AAClD,QAAQ,YAAY,EAAE,SAAS;AAC/B,QAAQ,MAAM,EAAE,QAAQ;AACxB,QAAQ,QAAQ,EAAE,CAAC,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC;AACzI,QAAQ,GAAG,EAAE,CAAC,IAAI,KAAK,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC;AAC5F,OAAO,CAAC,EAAE,QAAQ,CAAC,EAAE;AACrB,QAAQ,SAAS,EAAE,CAAC,KAAK,KAAK;AAC9B,UAAU,IAAI,GAAG,CAAC;AAClB,UAAU,CAAC,GAAG,GAAG,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,SAAS,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9G,UAAU,cAAc,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACjG,SAAS;AACT,QAAQ,YAAY,EAAE,CAAC,KAAK,KAAK;AACjC,UAAU,IAAI,GAAG,CAAC;AAClB,UAAU,CAAC,GAAG,GAAG,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,YAAY,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AACjH,UAAU,iBAAiB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC9E,SAAS;AACT,QAAQ,OAAO,EAAE,CAAC,KAAK,KAAK;AAC5B,UAAU,IAAI,GAAG,CAAC;AAClB,UAAU,CAAC,GAAG,GAAG,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC5G,UAAU,YAAY,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AACpE,SAAS;AACT,QAAQ,WAAW,EAAE,CAAC,KAAK,KAAK;AAChC,UAAU,IAAI,GAAG,CAAC;AAClB,UAAU,CAAC,GAAG,GAAG,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,WAAW,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;AAChH,UAAU,cAAc,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;AACnD,SAAS;AACT,QAAQ,QAAQ,EAAE,cAAc,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC;AAC9D,OAAO,CAAC,CAAC,CAAC,CAAC;AACX,KAAK,CAAC,CAAC;AACP,IAAI,uBAAuB,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE;AACrD,MAAM,GAAG,EAAE,QAAQ;AACnB,MAAM,SAAS,EAAE,OAAO,CAAC,QAAQ;AACjC,KAAK,EAAE,KAAK,CAAC,CAAC;AACd,GAAG,CAAC,CAAC;AACL,EAAE,uBAAuB,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE,cAAc,CAAC;AACjE,IAAI,SAAS,EAAE,OAAO;AACtB,IAAI,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;AAC3C,IAAI,GAAG;AACP,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,YAAY,oBAAoB,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;AAC5E,IAAI,SAAS,EAAE,OAAO,CAAC,UAAU;AACjC,GAAG,kBAAkB,KAAK,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,cAAc,CAAC,EAAE;AACxG,IAAI,MAAM;AACV,IAAI,cAAc;AAClB,IAAI,aAAa;AACjB,GAAG,CAAC,CAAC,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE;AACrD,IAAI,SAAS,EAAE,OAAO,CAAC,UAAU;AACjC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AACZ,CAAC,EAAE;AACH,KAAK,CAAC,WAAW,GAAG,sBAAsB;;;;"}
1
+ {"version":3,"file":"Month.js","sources":["../../../src/components/Month/Month.tsx"],"sourcesContent":["/* eslint-disable react/no-unused-prop-types */\nimport dayjs from 'dayjs';\nimport React, { forwardRef } from 'react';\nimport { DefaultProps, Selectors, Box, useComponentDefaultProps, MantineSize } from '@mantine/core';\nimport { useDatesContext } from '../DatesProvider';\nimport { WeekdaysRow, WeekdaysRowStylesNames } from '../WeekdaysRow';\nimport { Day, DayStylesNames, DayProps } from '../Day';\nimport { ControlKeydownPayload, DayOfWeek } from '../../types';\nimport { getMonthDays } from './get-month-days/get-month-days';\nimport { isSameMonth } from './is-same-month/is-same-month';\nimport { isBeforeMaxDate } from './is-before-max-date/is-before-max-date';\nimport { isAfterMinDate } from './is-after-min-date/is-after-min-date';\nimport useStyles from './Month.styles';\nimport { getDateInTabOrder } from './get-date-in-tab-order/get-date-in-tab-order';\n\nexport type MonthStylesNames =\n | Selectors<typeof useStyles>\n | WeekdaysRowStylesNames\n | DayStylesNames;\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: Date): void;\n\n /** Called when mouse enters day */\n __onDayMouseEnter?(event: React.MouseEvent<HTMLButtonElement>, date: Date): 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, defaults to value defined in DatesProvider */\n locale?: string;\n\n /** number 0-6, 0 – Sunday, 6 – Saturday, defaults to 1 – Monday */\n firstDayOfWeek?: DayOfWeek;\n\n /** dayjs format for weekdays names, defaults to \"dd\" */\n weekdayFormat?: string;\n\n /** Indices of weekend days, 0-6, where 0 is Sunday and 6 is Saturday, defaults to value defined in DatesProvider */\n weekendDays?: DayOfWeek[];\n\n /** Adds props to Day component based on date */\n getDayProps?(date: Date): Partial<DayProps>;\n\n /** Callback function to determine whether the day should be disabled */\n excludeDate?(date: Date): boolean;\n\n /** Minimum possible date */\n minDate?: Date;\n\n /** Maximum possible date */\n maxDate?: Date;\n\n /** Controls day value rendering */\n renderDay?(date: Date): React.ReactNode;\n\n /** Determines whether outside dates should be hidden, defaults to false */\n hideOutsideDates?: boolean;\n\n /** Determines whether weekdays row should be hidden, defaults to false */\n hideWeekdays?: boolean;\n\n /** Assigns aria-label to days based on date */\n getDayAriaLabel?(date: Date): string;\n\n /** Controls size */\n size?: MantineSize;\n\n /** Determines whether controls should be separated by spacing, true by default */\n withCellSpacing?: boolean;\n}\n\nexport interface MonthProps\n extends DefaultProps<MonthStylesNames>,\n MonthSettings,\n React.ComponentPropsWithoutRef<'table'> {\n variant?: string;\n __staticSelector?: string;\n\n /** Month to display */\n month: Date;\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\nconst defaultProps: Partial<MonthProps> = {\n size: 'sm',\n withCellSpacing: true,\n};\n\nexport const Month = forwardRef<HTMLTableElement, MonthProps>((props, ref) => {\n const {\n className,\n classNames,\n styles,\n unstyled,\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 variant,\n ...others\n } = useComponentDefaultProps('Month', defaultProps, props);\n\n const ctx = useDatesContext();\n\n const { classes, cx } = useStyles(null, {\n name: ['Month', __staticSelector],\n classNames,\n styles,\n unstyled,\n variant,\n size,\n });\n\n const stylesApiProps = {\n __staticSelector: __staticSelector || 'Month',\n classNames,\n styles,\n unstyled,\n variant,\n size,\n };\n\n const dates = getMonthDays(month, ctx.getFirstDayOfWeek(firstDayOfWeek));\n\n const dateInTabOrder = getDateInTabOrder(\n dates,\n minDate,\n maxDate,\n getDayProps,\n excludeDate,\n hideOutsideDates,\n month\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 className={classes.monthCell}\n data-with-spacing={withCellSpacing || undefined}\n >\n <Day\n {...stylesApiProps}\n data-mantine-stop-propagation={__stopPropagation || undefined}\n renderDay={renderDay}\n date={date}\n weekend={ctx.getWeekendDays(weekendDays).includes(date.getDay() as DayOfWeek)}\n outside={outside}\n hidden={hideOutsideDates ? outside : false}\n aria-label={ariaLabel}\n static={isStatic}\n disabled={\n excludeDate?.(date) ||\n !isBeforeMaxDate(date, maxDate) ||\n !isAfterMinDate(date, minDate)\n }\n ref={(node) => __getDayRef?.(rowIndex, cellIndex, node)}\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 __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} className={classes.monthRow}>\n {cells}\n </tr>\n );\n });\n\n return (\n <Box component=\"table\" className={cx(classes.month, className)} ref={ref} {...others}>\n {!hideWeekdays && (\n <thead className={classes.monthThead}>\n <WeekdaysRow\n {...stylesApiProps}\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n weekdayFormat={weekdayFormat}\n />\n </thead>\n )}\n <tbody className={classes.monthTbody}>{rows}</tbody>\n </Box>\n );\n});\n\nMonth.displayName = '@mantine/dates/Month';\n"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  import dayjs from 'dayjs';
2
2
  import { isAfterMinDate } from '../is-after-min-date/is-after-min-date.js';
3
3
  import { isBeforeMaxDate } from '../is-before-max-date/is-before-max-date.js';
4
+ import { isSameMonth } from '../is-same-month/is-same-month.js';
4
5
 
5
- function getDateInTabOrder(dates, minDate, maxDate, getDateControlProps, excludeDate) {
6
+ function getDateInTabOrder(dates, minDate, maxDate, getDateControlProps, excludeDate, hideOutsideDates, month) {
6
7
  const enabledDates = dates.flat().filter((date) => {
7
8
  var _a;
8
- return isBeforeMaxDate(date, maxDate) && isAfterMinDate(date, minDate) && !(excludeDate == null ? void 0 : excludeDate(date)) && !((_a = getDateControlProps == null ? void 0 : getDateControlProps(date)) == null ? void 0 : _a.disabled);
9
+ return isBeforeMaxDate(date, maxDate) && isAfterMinDate(date, minDate) && !(excludeDate == null ? void 0 : excludeDate(date)) && !((_a = getDateControlProps == null ? void 0 : getDateControlProps(date)) == null ? void 0 : _a.disabled) && (!hideOutsideDates || isSameMonth(date, month));
9
10
  });
10
11
  const selectedDate = enabledDates.find((date) => {
11
12
  var _a;
@@ -1 +1 @@
1
- {"version":3,"file":"get-date-in-tab-order.js","sources":["../../../../src/components/Month/get-date-in-tab-order/get-date-in-tab-order.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { DayProps } from '../../Day';\nimport { isAfterMinDate } from '../is-after-min-date/is-after-min-date';\nimport { isBeforeMaxDate } from '../is-before-max-date/is-before-max-date';\n\nexport function getDateInTabOrder(\n dates: Date[][],\n minDate: Date,\n maxDate: Date,\n getDateControlProps: (date: Date) => Partial<DayProps>,\n excludeDate: (date: Date) => boolean\n) {\n const enabledDates = dates\n .flat()\n .filter(\n (date) =>\n isBeforeMaxDate(date, maxDate) &&\n isAfterMinDate(date, minDate) &&\n !excludeDate?.(date) &&\n !getDateControlProps?.(date)?.disabled\n );\n\n const selectedDate = enabledDates.find((date) => getDateControlProps?.(date)?.selected);\n\n if (selectedDate) {\n return selectedDate;\n }\n\n const currentDate = enabledDates.find((date) => dayjs().isSame(date, 'date'));\n\n if (currentDate) {\n return currentDate;\n }\n\n return enabledDates[0];\n}\n"],"names":[],"mappings":";;;;AAGO,SAAS,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE;AAC7F,EAAE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;AACrD,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,mBAAmB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC/O,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACnD,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,OAAO,CAAC,EAAE,GAAG,mBAAmB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;AAClH,GAAG,CAAC,CAAC;AACL,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH,EAAE,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAChF,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,OAAO,WAAW,CAAC;AACvB,GAAG;AACH,EAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB;;;;"}
1
+ {"version":3,"file":"get-date-in-tab-order.js","sources":["../../../../src/components/Month/get-date-in-tab-order/get-date-in-tab-order.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport { DayProps } from '../../Day';\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';\n\nexport function getDateInTabOrder(\n dates: Date[][],\n minDate: Date,\n maxDate: Date,\n getDateControlProps: (date: Date) => Partial<DayProps>,\n excludeDate: (date: Date) => boolean,\n hideOutsideDates: boolean,\n month: Date\n) {\n const enabledDates = dates\n .flat()\n .filter(\n (date) =>\n isBeforeMaxDate(date, maxDate) &&\n isAfterMinDate(date, minDate) &&\n !excludeDate?.(date) &&\n !getDateControlProps?.(date)?.disabled &&\n (!hideOutsideDates || isSameMonth(date, month))\n );\n\n const selectedDate = enabledDates.find((date) => getDateControlProps?.(date)?.selected);\n\n if (selectedDate) {\n return selectedDate;\n }\n\n const currentDate = enabledDates.find((date) => dayjs().isSame(date, 'date'));\n\n if (currentDate) {\n return currentDate;\n }\n\n return enabledDates[0];\n}\n"],"names":[],"mappings":";;;;;AAIO,SAAS,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,KAAK,EAAE;AACtH,EAAE,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK;AACrD,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,OAAO,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,mBAAmB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,IAAI,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAClS,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK;AACnD,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,OAAO,CAAC,EAAE,GAAG,mBAAmB,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;AAClH,GAAG,CAAC,CAAC;AACL,EAAE,IAAI,YAAY,EAAE;AACpB,IAAI,OAAO,YAAY,CAAC;AACxB,GAAG;AACH,EAAE,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;AAChF,EAAE,IAAI,WAAW,EAAE;AACnB,IAAI,OAAO,WAAW,CAAC;AACvB,GAAG;AACH,EAAE,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;AACzB;;;;"}
@@ -139,12 +139,11 @@ const MonthLevelGroup = forwardRef((props, ref) => {
139
139
  __onDayClick,
140
140
  __onDayMouseEnter,
141
141
  __onDayKeyDown: (event, payload) => handleControlKeyDown({
142
- index: monthIndex,
142
+ levelIndex: monthIndex,
143
+ rowIndex: payload.rowIndex,
144
+ cellIndex: payload.cellIndex,
143
145
  event,
144
- payload,
145
- controlsRef: daysRefs,
146
- numberOfColumns,
147
- controlsPerRow: 7
146
+ controlsRef: daysRefs
148
147
  }),
149
148
  __getDayRef: (rowIndex, cellIndex, node) => {
150
149
  if (!Array.isArray(daysRefs.current[monthIndex])) {
@@ -1 +1 @@
1
- {"version":3,"file":"MonthLevelGroup.js","sources":["../../../src/components/MonthLevelGroup/MonthLevelGroup.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react';\nimport { DefaultProps, Box, Selectors, useComponentDefaultProps } from '@mantine/core';\nimport dayjs from 'dayjs';\nimport { MonthLevel, MonthLevelStylesNames, MonthLevelSettings } from '../MonthLevel';\nimport { handleControlKeyDown } from '../../utils';\nimport useStyles from './MonthLevelGroup.styles';\n\nexport type MonthLevelGroupStylesNames = Selectors<typeof useStyles> | MonthLevelStylesNames;\n\nexport interface MonthLevelGroupProps\n extends DefaultProps<MonthLevelGroupStylesNames>,\n Omit<MonthLevelSettings, 'withPrevious' | 'withNext' | '__onDayKeyDown' | '__getDayRef'>,\n React.ComponentPropsWithoutRef<'div'> {\n variant?: string;\n __staticSelector?: string;\n\n /** Number of columns to render next to each other */\n numberOfColumns?: number;\n\n /** Month that is currently displayed */\n month: Date;\n\n /** Function that returns level control aria-label based on month date */\n levelControlAriaLabel?: ((month: Date) => string) | string;\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\nconst defaultProps: Partial<MonthLevelGroupProps> = {\n numberOfColumns: 1,\n};\n\nexport const MonthLevelGroup = forwardRef<HTMLDivElement, MonthLevelGroupProps>((props, ref) => {\n const {\n // Month settings\n month,\n locale,\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n minDate,\n maxDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n __onDayClick,\n __onDayMouseEnter,\n withCellSpacing,\n\n // CalendarHeader settings\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n\n // Other settings\n className,\n classNames,\n styles,\n unstyled,\n numberOfColumns,\n levelControlAriaLabel,\n monthLabelFormat,\n __staticSelector,\n __stopPropagation,\n size,\n variant,\n static: isStatic,\n ...others\n } = useComponentDefaultProps('MonthLevelGroup', defaultProps, props);\n\n const { classes, cx } = useStyles(null, {\n name: ['MonthLevelGroup', __staticSelector],\n classNames,\n styles,\n unstyled,\n variant,\n size,\n });\n\n const daysRefs = useRef<HTMLButtonElement[][][]>([]);\n\n const months = Array(numberOfColumns)\n .fill(0)\n .map((_, monthIndex) => {\n const currentMonth = dayjs(month).add(monthIndex, 'months').toDate();\n\n return (\n <MonthLevel\n key={monthIndex}\n month={currentMonth}\n withNext={monthIndex === numberOfColumns - 1}\n withPrevious={monthIndex === 0}\n monthLabelFormat={monthLabelFormat}\n __stopPropagation={__stopPropagation}\n __onDayClick={__onDayClick}\n __onDayMouseEnter={__onDayMouseEnter}\n __onDayKeyDown={(event, payload) =>\n handleControlKeyDown({\n index: monthIndex,\n event,\n payload,\n controlsRef: daysRefs,\n numberOfColumns,\n controlsPerRow: 7,\n })\n }\n __getDayRef={(rowIndex, cellIndex, node) => {\n if (!Array.isArray(daysRefs.current[monthIndex])) {\n daysRefs.current[monthIndex] = [];\n }\n\n if (!Array.isArray(daysRefs.current[monthIndex][rowIndex])) {\n daysRefs.current[monthIndex][rowIndex] = [];\n }\n\n daysRefs.current[monthIndex][rowIndex][cellIndex] = node;\n }}\n levelControlAriaLabel={\n typeof levelControlAriaLabel === 'function'\n ? levelControlAriaLabel(currentMonth)\n : levelControlAriaLabel\n }\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n weekdayFormat={weekdayFormat}\n weekendDays={weekendDays}\n getDayProps={getDayProps}\n excludeDate={excludeDate}\n minDate={minDate}\n maxDate={maxDate}\n renderDay={renderDay}\n hideOutsideDates={hideOutsideDates}\n hideWeekdays={hideWeekdays}\n getDayAriaLabel={getDayAriaLabel}\n __preventFocus={__preventFocus}\n nextIcon={nextIcon}\n previousIcon={previousIcon}\n nextLabel={nextLabel}\n previousLabel={previousLabel}\n onNext={onNext}\n onPrevious={onPrevious}\n onLevelClick={onLevelClick}\n nextDisabled={nextDisabled}\n previousDisabled={previousDisabled}\n hasNextLevel={hasNextLevel}\n classNames={classNames}\n styles={styles}\n unstyled={unstyled}\n __staticSelector={__staticSelector || 'MonthLevelGroup'}\n size={size}\n variant={variant}\n static={isStatic}\n withCellSpacing={withCellSpacing}\n />\n );\n });\n\n return (\n <Box className={cx(classes.monthLevelGroup, className)} ref={ref} {...others}>\n {months}\n </Box>\n );\n});\n\nMonthLevelGroup.displayName = '@mantine/dates/MonthLevelGroup';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MonthLevelGroup.js","sources":["../../../src/components/MonthLevelGroup/MonthLevelGroup.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react';\nimport { DefaultProps, Box, Selectors, useComponentDefaultProps } from '@mantine/core';\nimport dayjs from 'dayjs';\nimport { MonthLevel, MonthLevelStylesNames, MonthLevelSettings } from '../MonthLevel';\nimport { handleControlKeyDown } from '../../utils';\nimport useStyles from './MonthLevelGroup.styles';\n\nexport type MonthLevelGroupStylesNames = Selectors<typeof useStyles> | MonthLevelStylesNames;\n\nexport interface MonthLevelGroupProps\n extends DefaultProps<MonthLevelGroupStylesNames>,\n Omit<MonthLevelSettings, 'withPrevious' | 'withNext' | '__onDayKeyDown' | '__getDayRef'>,\n React.ComponentPropsWithoutRef<'div'> {\n variant?: string;\n __staticSelector?: string;\n\n /** Number of columns to render next to each other */\n numberOfColumns?: number;\n\n /** Month that is currently displayed */\n month: Date;\n\n /** Function that returns level control aria-label based on month date */\n levelControlAriaLabel?: ((month: Date) => string) | string;\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\nconst defaultProps: Partial<MonthLevelGroupProps> = {\n numberOfColumns: 1,\n};\n\nexport const MonthLevelGroup = forwardRef<HTMLDivElement, MonthLevelGroupProps>((props, ref) => {\n const {\n // Month settings\n month,\n locale,\n firstDayOfWeek,\n weekdayFormat,\n weekendDays,\n getDayProps,\n excludeDate,\n minDate,\n maxDate,\n renderDay,\n hideOutsideDates,\n hideWeekdays,\n getDayAriaLabel,\n __onDayClick,\n __onDayMouseEnter,\n withCellSpacing,\n\n // CalendarHeader settings\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n\n // Other settings\n className,\n classNames,\n styles,\n unstyled,\n numberOfColumns,\n levelControlAriaLabel,\n monthLabelFormat,\n __staticSelector,\n __stopPropagation,\n size,\n variant,\n static: isStatic,\n ...others\n } = useComponentDefaultProps('MonthLevelGroup', defaultProps, props);\n\n const { classes, cx } = useStyles(null, {\n name: ['MonthLevelGroup', __staticSelector],\n classNames,\n styles,\n unstyled,\n variant,\n size,\n });\n\n const daysRefs = useRef<HTMLButtonElement[][][]>([]);\n\n const months = Array(numberOfColumns)\n .fill(0)\n .map((_, monthIndex) => {\n const currentMonth = dayjs(month).add(monthIndex, 'months').toDate();\n\n return (\n <MonthLevel\n key={monthIndex}\n month={currentMonth}\n withNext={monthIndex === numberOfColumns - 1}\n withPrevious={monthIndex === 0}\n monthLabelFormat={monthLabelFormat}\n __stopPropagation={__stopPropagation}\n __onDayClick={__onDayClick}\n __onDayMouseEnter={__onDayMouseEnter}\n __onDayKeyDown={(event, payload) =>\n handleControlKeyDown({\n levelIndex: monthIndex,\n rowIndex: payload.rowIndex,\n cellIndex: payload.cellIndex,\n event,\n controlsRef: daysRefs,\n })\n }\n __getDayRef={(rowIndex, cellIndex, node) => {\n if (!Array.isArray(daysRefs.current[monthIndex])) {\n daysRefs.current[monthIndex] = [];\n }\n\n if (!Array.isArray(daysRefs.current[monthIndex][rowIndex])) {\n daysRefs.current[monthIndex][rowIndex] = [];\n }\n\n daysRefs.current[monthIndex][rowIndex][cellIndex] = node;\n }}\n levelControlAriaLabel={\n typeof levelControlAriaLabel === 'function'\n ? levelControlAriaLabel(currentMonth)\n : levelControlAriaLabel\n }\n locale={locale}\n firstDayOfWeek={firstDayOfWeek}\n weekdayFormat={weekdayFormat}\n weekendDays={weekendDays}\n getDayProps={getDayProps}\n excludeDate={excludeDate}\n minDate={minDate}\n maxDate={maxDate}\n renderDay={renderDay}\n hideOutsideDates={hideOutsideDates}\n hideWeekdays={hideWeekdays}\n getDayAriaLabel={getDayAriaLabel}\n __preventFocus={__preventFocus}\n nextIcon={nextIcon}\n previousIcon={previousIcon}\n nextLabel={nextLabel}\n previousLabel={previousLabel}\n onNext={onNext}\n onPrevious={onPrevious}\n onLevelClick={onLevelClick}\n nextDisabled={nextDisabled}\n previousDisabled={previousDisabled}\n hasNextLevel={hasNextLevel}\n classNames={classNames}\n styles={styles}\n unstyled={unstyled}\n __staticSelector={__staticSelector || 'MonthLevelGroup'}\n size={size}\n variant={variant}\n static={isStatic}\n withCellSpacing={withCellSpacing}\n />\n );\n });\n\n return (\n <Box className={cx(classes.monthLevelGroup, className)} ref={ref} {...others}>\n {months}\n </Box>\n );\n});\n\nMonthLevelGroup.displayName = '@mantine/dates/MonthLevelGroup';\n"],"names":[],"mappings":"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"}
@@ -5,12 +5,12 @@ function getWeekdayNames({
5
5
  format = "dd",
6
6
  firstDayOfWeek = 1
7
7
  }) {
8
- const baseDate = dayjs().startOf("week");
8
+ const baseDate = dayjs().day(firstDayOfWeek);
9
9
  const labels = [];
10
10
  for (let i = 0; i < 7; i += 1) {
11
11
  labels.push(dayjs(baseDate).add(i, "days").locale(locale).format(format));
12
12
  }
13
- return [...labels.slice(firstDayOfWeek), ...labels.slice(0, firstDayOfWeek)];
13
+ return labels;
14
14
  }
15
15
 
16
16
  export { getWeekdayNames };
@@ -1 +1 @@
1
- {"version":3,"file":"get-weekdays-names.js","sources":["../../../../src/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport type { DayOfWeek } from '../../../types';\n\ninterface GetWeekdaysNamesInput {\n locale: string;\n format?: string;\n firstDayOfWeek?: DayOfWeek;\n}\n\nexport function getWeekdayNames({\n locale,\n format = 'dd',\n firstDayOfWeek = 1,\n}: GetWeekdaysNamesInput) {\n const baseDate = dayjs().startOf('week');\n const labels: string[] = [];\n\n for (let i = 0; i < 7; i += 1) {\n labels.push(dayjs(baseDate).add(i, 'days').locale(locale).format(format));\n }\n\n return [...labels.slice(firstDayOfWeek), ...labels.slice(0, firstDayOfWeek)];\n}\n"],"names":[],"mappings":";;AACO,SAAS,eAAe,CAAC;AAChC,EAAE,MAAM;AACR,EAAE,MAAM,GAAG,IAAI;AACf,EAAE,cAAc,GAAG,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC3C,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACjC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,GAAG;AACH,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;AAC/E;;;;"}
1
+ {"version":3,"file":"get-weekdays-names.js","sources":["../../../../src/components/WeekdaysRow/get-weekdays-names/get-weekdays-names.ts"],"sourcesContent":["import dayjs from 'dayjs';\nimport type { DayOfWeek } from '../../../types';\n\ninterface GetWeekdaysNamesInput {\n locale: string;\n format?: string;\n firstDayOfWeek?: DayOfWeek;\n}\n\nexport function getWeekdayNames({\n locale,\n format = 'dd',\n firstDayOfWeek = 1,\n}: GetWeekdaysNamesInput) {\n const baseDate = dayjs().day(firstDayOfWeek);\n const labels: string[] = [];\n\n for (let i = 0; i < 7; i += 1) {\n labels.push(dayjs(baseDate).add(i, 'days').locale(locale).format(format));\n }\n\n return labels;\n}\n"],"names":[],"mappings":";;AACO,SAAS,eAAe,CAAC;AAChC,EAAE,MAAM;AACR,EAAE,MAAM,GAAG,IAAI;AACf,EAAE,cAAc,GAAG,CAAC;AACpB,CAAC,EAAE;AACH,EAAE,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC/C,EAAE,MAAM,MAAM,GAAG,EAAE,CAAC;AACpB,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;AACjC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;AAC9E,GAAG;AACH,EAAE,OAAO,MAAM,CAAC;AAChB;;;;"}
@@ -111,7 +111,7 @@ const YearLevelGroup = forwardRef((props, ref) => {
111
111
  variant,
112
112
  size
113
113
  });
114
- const controlsRefs = useRef([]);
114
+ const controlsRef = useRef([]);
115
115
  const years = Array(numberOfColumns).fill(0).map((_, yearIndex) => {
116
116
  const currentYear = dayjs(year).add(yearIndex, "years").toDate();
117
117
  return /* @__PURE__ */ React.createElement(YearLevel, {
@@ -127,21 +127,20 @@ const YearLevelGroup = forwardRef((props, ref) => {
127
127
  __onControlClick,
128
128
  __onControlMouseEnter,
129
129
  __onControlKeyDown: (event, payload) => handleControlKeyDown({
130
- index: yearIndex,
130
+ levelIndex: yearIndex,
131
+ rowIndex: payload.rowIndex,
132
+ cellIndex: payload.cellIndex,
131
133
  event,
132
- payload,
133
- controlsRef: controlsRefs,
134
- numberOfColumns,
135
- controlsPerRow: 3
134
+ controlsRef
136
135
  }),
137
136
  __getControlRef: (rowIndex, cellIndex, node) => {
138
- if (!Array.isArray(controlsRefs.current[yearIndex])) {
139
- controlsRefs.current[yearIndex] = [];
137
+ if (!Array.isArray(controlsRef.current[yearIndex])) {
138
+ controlsRef.current[yearIndex] = [];
140
139
  }
141
- if (!Array.isArray(controlsRefs.current[yearIndex][rowIndex])) {
142
- controlsRefs.current[yearIndex][rowIndex] = [];
140
+ if (!Array.isArray(controlsRef.current[yearIndex][rowIndex])) {
141
+ controlsRef.current[yearIndex][rowIndex] = [];
143
142
  }
144
- controlsRefs.current[yearIndex][rowIndex][cellIndex] = node;
143
+ controlsRef.current[yearIndex][rowIndex][cellIndex] = node;
145
144
  },
146
145
  levelControlAriaLabel: typeof levelControlAriaLabel === "function" ? levelControlAriaLabel(currentYear) : levelControlAriaLabel,
147
146
  locale,
@@ -1 +1 @@
1
- {"version":3,"file":"YearLevelGroup.js","sources":["../../../src/components/YearLevelGroup/YearLevelGroup.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react';\nimport { DefaultProps, Box, Selectors, useComponentDefaultProps } from '@mantine/core';\nimport dayjs from 'dayjs';\nimport { YearLevel, YearLevelStylesNames, YearLevelSettings } from '../YearLevel';\nimport { handleControlKeyDown } from '../../utils';\nimport useStyles from './YearLevelGroup.styles';\n\nexport type YearLevelGroupStylesNames = Selectors<typeof useStyles> | YearLevelStylesNames;\n\nexport interface YearLevelGroupProps\n extends DefaultProps<YearLevelGroupStylesNames>,\n Omit<YearLevelSettings, 'withPrevious' | 'withNext' | '__onControlKeyDown' | '__getControlRef'>,\n React.ComponentPropsWithoutRef<'div'> {\n variant?: string;\n __staticSelector?: string;\n\n /** Number of columns to render next to each other */\n numberOfColumns?: number;\n\n /** Year that is currently displayed */\n year: Date;\n\n /** Function that returns level control aria-label based on year date */\n levelControlAriaLabel?: ((year: Date) => string) | string;\n}\n\nconst defaultProps: Partial<YearLevelGroupProps> = {\n numberOfColumns: 1,\n size: 'sm',\n};\n\nexport const YearLevelGroup = forwardRef<HTMLDivElement, YearLevelGroupProps>((props, ref) => {\n const {\n // YearLevel settings\n year,\n locale,\n minDate,\n maxDate,\n monthsListFormat,\n getMonthControlProps,\n __onControlClick,\n __onControlMouseEnter,\n withCellSpacing,\n\n // CalendarHeader settings\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n\n // Other settings\n className,\n classNames,\n styles,\n unstyled,\n __staticSelector,\n __stopPropagation,\n numberOfColumns,\n levelControlAriaLabel,\n yearLabelFormat,\n variant,\n size,\n ...others\n } = useComponentDefaultProps('YearLevelGroup', defaultProps, props);\n\n const { classes, cx } = useStyles(null, {\n name: ['YearLevelGroup', __staticSelector],\n styles,\n classNames,\n unstyled,\n variant,\n size,\n });\n\n const controlsRefs = useRef<HTMLButtonElement[][][]>([]);\n\n const years = Array(numberOfColumns)\n .fill(0)\n .map((_, yearIndex) => {\n const currentYear = dayjs(year).add(yearIndex, 'years').toDate();\n\n return (\n <YearLevel\n key={yearIndex}\n variant={variant}\n size={size}\n monthsListFormat={monthsListFormat}\n year={currentYear}\n withNext={yearIndex === numberOfColumns - 1}\n withPrevious={yearIndex === 0}\n yearLabelFormat={yearLabelFormat}\n __stopPropagation={__stopPropagation}\n __onControlClick={__onControlClick}\n __onControlMouseEnter={__onControlMouseEnter}\n __onControlKeyDown={(event, payload) =>\n handleControlKeyDown({\n index: yearIndex,\n event,\n payload,\n controlsRef: controlsRefs,\n numberOfColumns,\n controlsPerRow: 3,\n })\n }\n __getControlRef={(rowIndex, cellIndex, node) => {\n if (!Array.isArray(controlsRefs.current[yearIndex])) {\n controlsRefs.current[yearIndex] = [];\n }\n\n if (!Array.isArray(controlsRefs.current[yearIndex][rowIndex])) {\n controlsRefs.current[yearIndex][rowIndex] = [];\n }\n\n controlsRefs.current[yearIndex][rowIndex][cellIndex] = node;\n }}\n levelControlAriaLabel={\n typeof levelControlAriaLabel === 'function'\n ? levelControlAriaLabel(currentYear)\n : levelControlAriaLabel\n }\n locale={locale}\n minDate={minDate}\n maxDate={maxDate}\n __preventFocus={__preventFocus}\n nextIcon={nextIcon}\n previousIcon={previousIcon}\n nextLabel={nextLabel}\n previousLabel={previousLabel}\n onNext={onNext}\n onPrevious={onPrevious}\n onLevelClick={onLevelClick}\n nextDisabled={nextDisabled}\n previousDisabled={previousDisabled}\n hasNextLevel={hasNextLevel}\n getMonthControlProps={getMonthControlProps}\n classNames={classNames}\n styles={styles}\n unstyled={unstyled}\n __staticSelector={__staticSelector || 'YearLevelGroup'}\n withCellSpacing={withCellSpacing}\n />\n );\n });\n\n return (\n <Box className={cx(classes.yearLevelGroup, className)} ref={ref} {...others}>\n {years}\n </Box>\n );\n});\n\nYearLevelGroup.displayName = '@mantine/dates/YearLevelGroup';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"YearLevelGroup.js","sources":["../../../src/components/YearLevelGroup/YearLevelGroup.tsx"],"sourcesContent":["import React, { forwardRef, useRef } from 'react';\nimport { DefaultProps, Box, Selectors, useComponentDefaultProps } from '@mantine/core';\nimport dayjs from 'dayjs';\nimport { YearLevel, YearLevelStylesNames, YearLevelSettings } from '../YearLevel';\nimport { handleControlKeyDown } from '../../utils';\nimport useStyles from './YearLevelGroup.styles';\n\nexport type YearLevelGroupStylesNames = Selectors<typeof useStyles> | YearLevelStylesNames;\n\nexport interface YearLevelGroupProps\n extends DefaultProps<YearLevelGroupStylesNames>,\n Omit<YearLevelSettings, 'withPrevious' | 'withNext' | '__onControlKeyDown' | '__getControlRef'>,\n React.ComponentPropsWithoutRef<'div'> {\n variant?: string;\n __staticSelector?: string;\n\n /** Number of columns to render next to each other */\n numberOfColumns?: number;\n\n /** Year that is currently displayed */\n year: Date;\n\n /** Function that returns level control aria-label based on year date */\n levelControlAriaLabel?: ((year: Date) => string) | string;\n}\n\nconst defaultProps: Partial<YearLevelGroupProps> = {\n numberOfColumns: 1,\n size: 'sm',\n};\n\nexport const YearLevelGroup = forwardRef<HTMLDivElement, YearLevelGroupProps>((props, ref) => {\n const {\n // YearLevel settings\n year,\n locale,\n minDate,\n maxDate,\n monthsListFormat,\n getMonthControlProps,\n __onControlClick,\n __onControlMouseEnter,\n withCellSpacing,\n\n // CalendarHeader settings\n __preventFocus,\n nextIcon,\n previousIcon,\n nextLabel,\n previousLabel,\n onNext,\n onPrevious,\n onLevelClick,\n nextDisabled,\n previousDisabled,\n hasNextLevel,\n\n // Other settings\n className,\n classNames,\n styles,\n unstyled,\n __staticSelector,\n __stopPropagation,\n numberOfColumns,\n levelControlAriaLabel,\n yearLabelFormat,\n variant,\n size,\n ...others\n } = useComponentDefaultProps('YearLevelGroup', defaultProps, props);\n\n const { classes, cx } = useStyles(null, {\n name: ['YearLevelGroup', __staticSelector],\n styles,\n classNames,\n unstyled,\n variant,\n size,\n });\n\n const controlsRef = useRef<HTMLButtonElement[][][]>([]);\n\n const years = Array(numberOfColumns)\n .fill(0)\n .map((_, yearIndex) => {\n const currentYear = dayjs(year).add(yearIndex, 'years').toDate();\n\n return (\n <YearLevel\n key={yearIndex}\n variant={variant}\n size={size}\n monthsListFormat={monthsListFormat}\n year={currentYear}\n withNext={yearIndex === numberOfColumns - 1}\n withPrevious={yearIndex === 0}\n yearLabelFormat={yearLabelFormat}\n __stopPropagation={__stopPropagation}\n __onControlClick={__onControlClick}\n __onControlMouseEnter={__onControlMouseEnter}\n __onControlKeyDown={(event, payload) =>\n handleControlKeyDown({\n levelIndex: yearIndex,\n rowIndex: payload.rowIndex,\n cellIndex: payload.cellIndex,\n event,\n controlsRef,\n })\n }\n __getControlRef={(rowIndex, cellIndex, node) => {\n if (!Array.isArray(controlsRef.current[yearIndex])) {\n controlsRef.current[yearIndex] = [];\n }\n\n if (!Array.isArray(controlsRef.current[yearIndex][rowIndex])) {\n controlsRef.current[yearIndex][rowIndex] = [];\n }\n\n controlsRef.current[yearIndex][rowIndex][cellIndex] = node;\n }}\n levelControlAriaLabel={\n typeof levelControlAriaLabel === 'function'\n ? levelControlAriaLabel(currentYear)\n : levelControlAriaLabel\n }\n locale={locale}\n minDate={minDate}\n maxDate={maxDate}\n __preventFocus={__preventFocus}\n nextIcon={nextIcon}\n previousIcon={previousIcon}\n nextLabel={nextLabel}\n previousLabel={previousLabel}\n onNext={onNext}\n onPrevious={onPrevious}\n onLevelClick={onLevelClick}\n nextDisabled={nextDisabled}\n previousDisabled={previousDisabled}\n hasNextLevel={hasNextLevel}\n getMonthControlProps={getMonthControlProps}\n classNames={classNames}\n styles={styles}\n unstyled={unstyled}\n __staticSelector={__staticSelector || 'YearLevelGroup'}\n withCellSpacing={withCellSpacing}\n />\n );\n });\n\n return (\n <Box className={cx(classes.yearLevelGroup, className)} ref={ref} {...others}>\n {years}\n </Box>\n );\n});\n\nYearLevelGroup.displayName = '@mantine/dates/YearLevelGroup';\n"],"names":[],"mappings":"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"}
@@ -1,17 +1,47 @@
1
1
  import { useUncontrolled } from '@mantine/hooks';
2
+ import { useRef } from 'react';
2
3
 
4
+ const getEmptyValue = (type) => type === "range" ? [null, null] : type === "multiple" ? [] : null;
3
5
  function useUncontrolledDates({
4
6
  type,
5
7
  value,
6
8
  defaultValue,
7
9
  onChange
8
10
  }) {
9
- return useUncontrolled({
11
+ const storedType = useRef(type);
12
+ const [_value, _setValue] = useUncontrolled({
10
13
  value,
11
14
  defaultValue,
12
15
  onChange,
13
- finalValue: type === "range" ? [null, null] : type === "multiple" ? [] : null
16
+ finalValue: getEmptyValue(type)
14
17
  });
18
+ let _finalValue = _value;
19
+ if (storedType.current !== type) {
20
+ storedType.current = type;
21
+ if (value === void 0) {
22
+ _finalValue = defaultValue !== void 0 ? defaultValue : getEmptyValue(type);
23
+ _setValue(_finalValue);
24
+ } else if (process.env.NODE_ENV === "development") {
25
+ switch (type) {
26
+ case "default":
27
+ if (value !== null && typeof value !== "string") {
28
+ console.error("[@mantine/dates/use-uncontrolled-dates] Value must be type of `null` or `string`");
29
+ }
30
+ break;
31
+ case "multiple":
32
+ if (!(value instanceof Array)) {
33
+ console.error("[@mantine/dates/use-uncontrolled-dates] Value must be type of `string[]`");
34
+ }
35
+ break;
36
+ case "range":
37
+ if (!(value instanceof Array) || value.length !== 2) {
38
+ console.error("[@mantine/dates/use-uncontrolled-dates] Value must be type of `[string, string]`");
39
+ }
40
+ break;
41
+ }
42
+ }
43
+ }
44
+ return [_finalValue, _setValue];
15
45
  }
16
46
 
17
47
  export { useUncontrolledDates };
@@ -1 +1 @@
1
- {"version":3,"file":"use-uncontrolled-dates.js","sources":["../../../src/hooks/use-uncontrolled-dates/use-uncontrolled-dates.ts"],"sourcesContent":["import { useUncontrolled } from '@mantine/hooks';\nimport { DatePickerType, DatePickerValue } from '../../types';\n\ninterface UseUncontrolledDates<Type extends DatePickerType = 'default'> {\n type: Type;\n value: DatePickerValue<Type>;\n defaultValue: DatePickerValue<Type>;\n onChange(value: DatePickerValue<Type>): void;\n}\n\nexport function useUncontrolledDates<Type extends DatePickerType = 'default'>({\n type,\n value,\n defaultValue,\n onChange,\n}: UseUncontrolledDates<Type>) {\n return useUncontrolled<any>({\n value,\n defaultValue,\n onChange,\n finalValue: type === 'range' ? [null, null] : type === 'multiple' ? [] : null,\n });\n}\n"],"names":[],"mappings":";;AACO,SAAS,oBAAoB,CAAC;AACrC,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,CAAC,EAAE;AACH,EAAE,OAAO,eAAe,CAAC;AACzB,IAAI,KAAK;AACT,IAAI,YAAY;AAChB,IAAI,QAAQ;AACZ,IAAI,UAAU,EAAE,IAAI,KAAK,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,UAAU,GAAG,EAAE,GAAG,IAAI;AACjF,GAAG,CAAC,CAAC;AACL;;;;"}
1
+ {"version":3,"file":"use-uncontrolled-dates.js","sources":["../../../src/hooks/use-uncontrolled-dates/use-uncontrolled-dates.ts"],"sourcesContent":["import { useUncontrolled } from '@mantine/hooks';\nimport { useRef } from 'react';\nimport { DatePickerType, DatePickerValue } from '../../types';\n\ninterface UseUncontrolledDates<Type extends DatePickerType = 'default'> {\n type: Type;\n value: DatePickerValue<Type>;\n defaultValue: DatePickerValue<Type>;\n onChange(value: DatePickerValue<Type>): void;\n}\n\nconst getEmptyValue = <Type extends DatePickerType = 'default'>(type: Type) =>\n type === 'range' ? [null, null] : type === 'multiple' ? [] : null;\n\nexport function useUncontrolledDates<Type extends DatePickerType = 'default'>({\n type,\n value,\n defaultValue,\n onChange,\n}: UseUncontrolledDates<Type>) {\n const storedType = useRef<Type>(type);\n const [_value, _setValue] = useUncontrolled<any>({\n value,\n defaultValue,\n onChange,\n finalValue: getEmptyValue(type),\n });\n\n let _finalValue = _value;\n\n if (storedType.current !== type) {\n // Type has changed. Do some checks or resets\n\n storedType.current = type;\n if (value === undefined) {\n // Reset uncontrolled value as types aren't compatible\n _finalValue = defaultValue !== undefined ? defaultValue : getEmptyValue(type);\n _setValue(_finalValue);\n } else if (process.env.NODE_ENV === 'development') {\n // Throw errors in dev mode in case type of value isn't correct\n switch (type) {\n case 'default':\n if (value !== null && typeof value !== 'string') {\n // eslint-disable-next-line no-console\n console.error(\n '[@mantine/dates/use-uncontrolled-dates] Value must be type of `null` or `string`'\n );\n }\n break;\n case 'multiple':\n if (!(value instanceof Array)) {\n // eslint-disable-next-line no-console\n console.error(\n '[@mantine/dates/use-uncontrolled-dates] Value must be type of `string[]`'\n );\n }\n break;\n case 'range':\n if (!(value instanceof Array) || value.length !== 2) {\n // eslint-disable-next-line no-console\n console.error(\n '[@mantine/dates/use-uncontrolled-dates] Value must be type of `[string, string]`'\n );\n }\n break;\n }\n }\n }\n\n return [_finalValue, _setValue];\n}\n"],"names":[],"mappings":";;;AAEA,MAAM,aAAa,GAAG,CAAC,IAAI,KAAK,IAAI,KAAK,OAAO,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,UAAU,GAAG,EAAE,GAAG,IAAI,CAAC;AAC3F,SAAS,oBAAoB,CAAC;AACrC,EAAE,IAAI;AACN,EAAE,KAAK;AACP,EAAE,YAAY;AACd,EAAE,QAAQ;AACV,CAAC,EAAE;AACH,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,eAAe,CAAC;AAC9C,IAAI,KAAK;AACT,IAAI,YAAY;AAChB,IAAI,QAAQ;AACZ,IAAI,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC;AACnC,GAAG,CAAC,CAAC;AACL,EAAE,IAAI,WAAW,GAAG,MAAM,CAAC;AAC3B,EAAE,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI,EAAE;AACnC,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AAC1B,MAAM,WAAW,GAAG,YAAY,KAAK,KAAK,CAAC,GAAG,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AACjF,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;AAC7B,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE;AACvD,MAAM,QAAQ,IAAI;AAClB,QAAQ,KAAK,SAAS;AACtB,UAAU,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC3D,YAAY,OAAO,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;AAC9G,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,UAAU;AACvB,UAAU,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,EAAE;AACzC,YAAY,OAAO,CAAC,KAAK,CAAC,0EAA0E,CAAC,CAAC;AACtG,WAAW;AACX,UAAU,MAAM;AAChB,QAAQ,KAAK,OAAO;AACpB,UAAU,IAAI,EAAE,KAAK,YAAY,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC/D,YAAY,OAAO,CAAC,KAAK,CAAC,kFAAkF,CAAC,CAAC;AAC9G,WAAW;AACX,UAAU,MAAM;AAChB,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;AAClC;;;;"}
@@ -1,72 +1,154 @@
1
+ function getNextIndex({ direction, levelIndex, rowIndex, cellIndex, size }) {
2
+ switch (direction) {
3
+ case "up":
4
+ if (levelIndex === 0 && rowIndex === 0) {
5
+ return null;
6
+ }
7
+ if (rowIndex === 0) {
8
+ return {
9
+ levelIndex: levelIndex - 1,
10
+ rowIndex: cellIndex <= size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1 ? size[levelIndex - 1].length - 1 : size[levelIndex - 1].length - 2,
11
+ cellIndex
12
+ };
13
+ }
14
+ return {
15
+ levelIndex,
16
+ rowIndex: rowIndex - 1,
17
+ cellIndex
18
+ };
19
+ case "down":
20
+ if (rowIndex === size[levelIndex].length - 1) {
21
+ return {
22
+ levelIndex: levelIndex + 1,
23
+ rowIndex: 0,
24
+ cellIndex
25
+ };
26
+ }
27
+ if (rowIndex === size[levelIndex].length - 2 && cellIndex >= size[levelIndex][size[levelIndex].length - 1]) {
28
+ return {
29
+ levelIndex: levelIndex + 1,
30
+ rowIndex: 0,
31
+ cellIndex
32
+ };
33
+ }
34
+ return {
35
+ levelIndex,
36
+ rowIndex: rowIndex + 1,
37
+ cellIndex
38
+ };
39
+ case "left":
40
+ if (levelIndex === 0 && rowIndex === 0 && cellIndex === 0) {
41
+ return null;
42
+ }
43
+ if (rowIndex === 0 && cellIndex === 0) {
44
+ return {
45
+ levelIndex: levelIndex - 1,
46
+ rowIndex: size[levelIndex - 1].length - 1,
47
+ cellIndex: size[levelIndex - 1][size[levelIndex - 1].length - 1] - 1
48
+ };
49
+ }
50
+ if (cellIndex === 0) {
51
+ return {
52
+ levelIndex,
53
+ rowIndex: rowIndex - 1,
54
+ cellIndex: size[levelIndex][rowIndex - 1] - 1
55
+ };
56
+ }
57
+ return {
58
+ levelIndex,
59
+ rowIndex,
60
+ cellIndex: cellIndex - 1
61
+ };
62
+ case "right":
63
+ if (rowIndex === size[levelIndex].length - 1 && cellIndex === size[levelIndex][rowIndex] - 1) {
64
+ return {
65
+ levelIndex: levelIndex + 1,
66
+ rowIndex: 0,
67
+ cellIndex: 0
68
+ };
69
+ }
70
+ if (cellIndex === size[levelIndex][rowIndex] - 1) {
71
+ return {
72
+ levelIndex,
73
+ rowIndex: rowIndex + 1,
74
+ cellIndex: 0
75
+ };
76
+ }
77
+ return {
78
+ levelIndex,
79
+ rowIndex,
80
+ cellIndex: cellIndex + 1
81
+ };
82
+ default:
83
+ return { levelIndex, rowIndex, cellIndex };
84
+ }
85
+ }
1
86
  function focusOnNextFocusableControl({
87
+ controlsRef,
2
88
  direction,
3
- index,
4
- payload,
5
- count = 1,
6
- controlsRef
89
+ levelIndex,
90
+ rowIndex,
91
+ cellIndex,
92
+ size
7
93
  }) {
8
- var _a;
9
- const changeRow = ["down", "up"].includes(direction);
10
- const rowIndex = changeRow ? payload.rowIndex + (direction === "down" ? count : -count) : payload.rowIndex;
11
- const cellIndex = changeRow ? payload.cellIndex : payload.cellIndex + (direction === "right" ? count : -count);
12
- const controlToFocus = (_a = controlsRef.current[index][rowIndex]) == null ? void 0 : _a[cellIndex];
94
+ var _a, _b;
95
+ const nextIndex = getNextIndex({ direction, size, rowIndex, cellIndex, levelIndex });
96
+ if (!nextIndex) {
97
+ return;
98
+ }
99
+ const controlToFocus = (_b = (_a = controlsRef.current[nextIndex.levelIndex]) == null ? void 0 : _a[nextIndex.rowIndex]) == null ? void 0 : _b[nextIndex.cellIndex];
13
100
  if (!controlToFocus) {
14
101
  return;
15
102
  }
16
- if (controlToFocus.disabled) {
17
- focusOnNextFocusableControl({ direction, index, payload, controlsRef, count: count + 1 });
103
+ if (controlToFocus.disabled || controlToFocus.getAttribute("data-hidden") || controlToFocus.getAttribute("data-outside")) {
104
+ focusOnNextFocusableControl({
105
+ controlsRef,
106
+ direction,
107
+ levelIndex: nextIndex.levelIndex,
108
+ cellIndex: nextIndex.cellIndex,
109
+ rowIndex: nextIndex.rowIndex,
110
+ size
111
+ });
18
112
  } else {
19
113
  controlToFocus.focus();
20
114
  }
21
115
  }
116
+ function getDirection(key) {
117
+ switch (key) {
118
+ case "ArrowDown":
119
+ return "down";
120
+ case "ArrowUp":
121
+ return "up";
122
+ case "ArrowRight":
123
+ return "right";
124
+ case "ArrowLeft":
125
+ return "left";
126
+ default:
127
+ return null;
128
+ }
129
+ }
130
+ function getControlsSize(controlsRef) {
131
+ return controlsRef.current.map((column) => column.map((row) => row.length));
132
+ }
22
133
  function handleControlKeyDown({
23
134
  controlsRef,
24
- index,
25
- payload,
26
- event,
27
- numberOfColumns,
28
- controlsPerRow
135
+ levelIndex,
136
+ rowIndex,
137
+ cellIndex,
138
+ event
29
139
  }) {
30
- var _a;
31
- const _controlsPerRow = Array.isArray(controlsPerRow) ? controlsPerRow[payload.rowIndex] : controlsPerRow;
32
- switch (event.key) {
33
- case "ArrowDown": {
34
- event.preventDefault();
35
- const hasRowBelow = payload.rowIndex + 1 < controlsRef.current[index].length;
36
- if (hasRowBelow) {
37
- focusOnNextFocusableControl({ direction: "down", index, payload, controlsRef });
38
- }
39
- break;
40
- }
41
- case "ArrowUp": {
42
- event.preventDefault();
43
- const hasRowAbove = payload.rowIndex > 0;
44
- if (hasRowAbove) {
45
- focusOnNextFocusableControl({ direction: "up", index, payload, controlsRef });
46
- }
47
- break;
48
- }
49
- case "ArrowRight": {
50
- event.preventDefault();
51
- if (payload.cellIndex !== _controlsPerRow - 1) {
52
- focusOnNextFocusableControl({ direction: "right", index, payload, controlsRef });
53
- } else if (index + 1 < numberOfColumns) {
54
- if (controlsRef.current[index + 1][payload.rowIndex]) {
55
- (_a = controlsRef.current[index + 1][payload.rowIndex][0]) == null ? void 0 : _a.focus();
56
- }
57
- }
58
- break;
59
- }
60
- case "ArrowLeft": {
61
- event.preventDefault();
62
- if (payload.cellIndex !== 0) {
63
- focusOnNextFocusableControl({ direction: "left", index, payload, controlsRef });
64
- } else if (index > 0) {
65
- if (controlsRef.current[index - 1][payload.rowIndex]) {
66
- controlsRef.current[index - 1][payload.rowIndex][_controlsPerRow - 1].focus();
67
- }
68
- }
69
- }
140
+ const direction = getDirection(event.key);
141
+ if (direction) {
142
+ event.preventDefault();
143
+ const size = getControlsSize(controlsRef);
144
+ focusOnNextFocusableControl({
145
+ controlsRef,
146
+ direction,
147
+ levelIndex,
148
+ rowIndex,
149
+ cellIndex,
150
+ size
151
+ });
70
152
  }
71
153
  }
72
154