{"version":3,"file":"MonthLevel.cjs","names":["useDatesContext","Box","CalendarHeader","Month"],"sources":["../../../src/components/MonthLevel/MonthLevel.tsx"],"sourcesContent":["import dayjs from 'dayjs';\nimport {\n  Box,\n  BoxProps,\n  ElementProps,\n  factory,\n  Factory,\n  StylesApiProps,\n  useProps,\n} from '@mantine/core';\nimport { DateLabelFormat, DateStringValue } from '../../types';\nimport {\n  CalendarHeader,\n  CalendarHeaderSettings,\n  CalendarHeaderStylesNames,\n} from '../CalendarHeader';\nimport { useDatesContext } from '../DatesProvider';\nimport { Month, MonthSettings, MonthStylesNames } from '../Month';\n\nexport type MonthLevelStylesNames = MonthStylesNames | CalendarHeaderStylesNames;\n\nexport interface MonthLevelBaseSettings extends MonthSettings {\n  /** dayjs label format to display month label or a function that returns month label based on month value @default \"MMMM YYYY\" */\n  monthLabelFormat?: DateLabelFormat;\n}\n\nexport interface MonthLevelSettings extends MonthLevelBaseSettings, CalendarHeaderSettings {}\n\nexport interface MonthLevelProps\n  extends\n    BoxProps,\n    MonthLevelSettings,\n    Omit<StylesApiProps<MonthLevelFactory>, 'classNames' | 'styles'>,\n    ElementProps<'div'> {\n  classNames?: Partial<Record<string, string>>;\n  styles?: Partial<Record<string, React.CSSProperties>>;\n  __staticSelector?: string;\n\n  /** Month that is currently displayed */\n  month: DateStringValue;\n\n  /** Aria-label for change level control */\n  levelControlAriaLabel?: 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  /** Determines whether the calendar should take the full width of its container @default false */\n  fullWidth?: boolean;\n}\n\nexport type MonthLevelFactory = Factory<{\n  props: MonthLevelProps;\n  ref: HTMLDivElement;\n  stylesNames: MonthLevelStylesNames;\n}>;\n\nconst defaultProps = {\n  monthLabelFormat: 'MMMM YYYY',\n} satisfies Partial<MonthLevelProps>;\n\nexport const MonthLevel = factory<MonthLevelFactory>((_props) => {\n  const props = useProps('MonthLevel', defaultProps, _props);\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    __getDayRef,\n    __onDayKeyDown,\n    __onDayClick,\n    __onDayMouseEnter,\n    withCellSpacing,\n    highlightToday,\n    withWeekNumbers,\n\n    // CalendarHeader settings\n    __preventFocus,\n    __stopPropagation,\n    nextIcon,\n    previousIcon,\n    nextLabel,\n    previousLabel,\n    onNext,\n    onPrevious,\n    onLevelClick,\n    nextDisabled,\n    previousDisabled,\n    hasNextLevel,\n    levelControlAriaLabel,\n    withNext,\n    withPrevious,\n    headerControlsOrder,\n\n    // Other props\n    monthLabelFormat,\n    classNames,\n    styles,\n    unstyled,\n    __staticSelector,\n    size,\n    static: isStatic,\n    fullWidth,\n    attributes,\n    ...others\n  } = props;\n\n  const ctx = useDatesContext();\n\n  const stylesApiProps = {\n    __staticSelector: __staticSelector || 'MonthLevel',\n    classNames,\n    styles,\n    unstyled,\n    size,\n    attributes,\n  };\n\n  const _nextDisabled =\n    typeof nextDisabled === 'boolean'\n      ? nextDisabled\n      : maxDate\n        ? !dayjs(month).endOf('month').isBefore(maxDate)\n        : false;\n\n  const _previousDisabled =\n    typeof previousDisabled === 'boolean'\n      ? previousDisabled\n      : minDate\n        ? !dayjs(month).startOf('month').isAfter(minDate)\n        : false;\n\n  return (\n    <Box data-month-level size={size} {...others}>\n      <CalendarHeader\n        label={\n          typeof monthLabelFormat === 'function'\n            ? monthLabelFormat(month)\n            : dayjs(month)\n                .locale(locale || ctx.locale)\n                .format(monthLabelFormat)\n        }\n        __preventFocus={__preventFocus}\n        __stopPropagation={__stopPropagation}\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        levelControlAriaLabel={levelControlAriaLabel}\n        withNext={withNext}\n        withPrevious={withPrevious}\n        headerControlsOrder={headerControlsOrder}\n        fullWidth={fullWidth}\n        {...stylesApiProps}\n      />\n\n      <Month\n        month={month}\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        __getDayRef={__getDayRef}\n        __onDayKeyDown={__onDayKeyDown}\n        __onDayClick={__onDayClick}\n        __onDayMouseEnter={__onDayMouseEnter}\n        __preventFocus={__preventFocus}\n        __stopPropagation={__stopPropagation}\n        static={isStatic}\n        withCellSpacing={withCellSpacing}\n        highlightToday={highlightToday}\n        withWeekNumbers={withWeekNumbers}\n        fullWidth={fullWidth}\n        {...stylesApiProps}\n      />\n    </Box>\n  );\n});\n\nMonthLevel.classes = { ...Month.classes, ...CalendarHeader.classes };\nMonthLevel.displayName = '@mantine/dates/MonthLevel';\n"],"mappings":";;;;;;;;;;AAyDA,MAAM,eAAe,EACnB,kBAAkB,YACpB;AAEA,MAAa,cAAA,GAAA,cAAA,QAAA,EAAyC,WAAW;CAE/D,MAAM,EAEJ,OACA,QACA,gBACA,eACA,aACA,aACA,aACA,SACA,SACA,WACA,kBACA,cACA,iBACA,aACA,gBACA,cACA,mBACA,iBACA,gBACA,iBAGA,gBACA,mBACA,UACA,cACA,WACA,eACA,QACA,YACA,cACA,cACA,kBACA,cACA,uBACA,UACA,cACA,qBAGA,kBACA,YACA,QACA,UACA,kBACA,MACA,QAAQ,UACR,WACA,YACA,GAAG,YAAA,GAAA,cAAA,SAAA,CApDkB,cAAc,cAAc,MAqD3C;CAER,MAAM,MAAMA,0BAAAA,gBAAgB;CAE5B,MAAM,iBAAiB;EACrB,kBAAkB,oBAAoB;EACtC;EACA;EACA;EACA;EACA;CACF;CAEA,MAAM,gBACJ,OAAO,iBAAiB,YACpB,eACA,UACE,EAAA,GAAA,MAAA,QAAA,CAAO,KAAK,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,SAAS,OAAO,IAC7C;CAER,MAAM,oBACJ,OAAO,qBAAqB,YACxB,mBACA,UACE,EAAA,GAAA,MAAA,QAAA,CAAO,KAAK,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,QAAQ,OAAO,IAC9C;CAER,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,cAAAA,KAAD;EAAK,oBAAA;EAAuB;EAAM,GAAI;YAAtC,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,uBAAAA,gBAAD;GACE,OACE,OAAO,qBAAqB,aACxB,iBAAiB,KAAK,KAAA,GAAA,MAAA,QAAA,CAChB,KAAK,CAAC,CACT,OAAO,UAAU,IAAI,MAAM,CAAC,CAC5B,OAAO,gBAAgB;GAEhB;GACG;GACT;GACI;GACH;GACI;GACP;GACI;GACE;GACd,cAAc;GACd,kBAAkB;GACJ;GACS;GACb;GACI;GACO;GACV;GACX,GAAI;EACL,CAAA,GAED,iBAAA,GAAA,kBAAA,IAAA,CAACC,cAAAA,OAAD;GACS;GACC;GACQ;GACD;GACF;GACA;GACA;GACJ;GACA;GACE;GACO;GACJ;GACG;GACJ;GACG;GACF;GACK;GACH;GACG;GACnB,QAAQ;GACS;GACD;GACC;GACN;GACX,GAAI;EACL,CAAA,CACE;;AAET,CAAC;AAED,WAAW,UAAU;CAAE,GAAGA,cAAAA,MAAM;CAAS,GAAGD,uBAAAA,eAAe;AAAQ;AACnE,WAAW,cAAc"}