@mantine/dates
Version:
Calendars, date and time pickers based on Mantine components
1 lines • 7.04 kB
Source Map (JSON)
{"version":3,"file":"MonthLevel.mjs","names":[],"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,aAAa,SAA4B,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,WApDS,SAAS,cAAc,cAAc,MAqD3C;CAER,MAAM,MAAM,gBAAgB;CAE5B,MAAM,iBAAiB;EACrB,kBAAkB,oBAAoB;EACtC;EACA;EACA;EACA;EACA;CACF;CAEA,MAAM,gBACJ,OAAO,iBAAiB,YACpB,eACA,UACE,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,OAAO,CAAC,CAAC,SAAS,OAAO,IAC7C;CAER,MAAM,oBACJ,OAAO,qBAAqB,YACxB,mBACA,UACE,CAAC,MAAM,KAAK,CAAC,CAAC,QAAQ,OAAO,CAAC,CAAC,QAAQ,OAAO,IAC9C;CAER,OACE,qBAAC,KAAD;EAAK,oBAAA;EAAuB;EAAM,GAAI;YAAtC,CACE,oBAAC,gBAAD;GACE,OACE,OAAO,qBAAqB,aACxB,iBAAiB,KAAK,IACtB,MAAM,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,oBAAC,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,GAAG,MAAM;CAAS,GAAG,eAAe;AAAQ;AACnE,WAAW,cAAc"}