@mantine/dates
Version:
Calendars, date and time pickers based on Mantine components
1 lines • 7.03 kB
Source Map (JSON)
{"version":3,"file":"DecadeLevel.cjs","names":["useDatesContext","getDecadeRange","Box","CalendarHeader","YearsList"],"sources":["../../../src/components/DecadeLevel/DecadeLevel.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 { DateStringValue } from '../../types';\nimport {\n CalendarHeader,\n CalendarHeaderSettings,\n CalendarHeaderStylesNames,\n} from '../CalendarHeader';\nimport { useDatesContext } from '../DatesProvider';\nimport { YearsList, YearsListSettings, YearsListStylesNames } from '../YearsList';\nimport { getDecadeRange } from './get-decade-range/get-decade-range';\n\nexport type DecadeLevelStylesNames = YearsListStylesNames | CalendarHeaderStylesNames;\n\nexport interface DecadeLevelBaseSettings extends YearsListSettings {\n /** `dayjs` format for decade label or a function that returns decade label based on the date value @default \"YYYY\" */\n decadeLabelFormat?:\n | string\n | ((startOfDecade: DateStringValue, endOfDecade: DateStringValue) => React.ReactNode);\n}\n\nexport interface DecadeLevelSettings\n extends DecadeLevelBaseSettings, Omit<CalendarHeaderSettings, 'onLevelClick' | 'hasNextLevel'> {}\n\nexport interface DecadeLevelProps\n extends\n BoxProps,\n DecadeLevelSettings,\n Omit<StylesApiProps<DecadeLevelFactory>, 'classNames' | 'styles'>,\n ElementProps<'div'> {\n classNames?: Partial<Record<string, string>>;\n styles?: Partial<Record<string, React.CSSProperties>>;\n __staticSelector?: string;\n\n /** Displayed decade */\n decade: DateStringValue;\n\n /** Level control `aria-label` */\n levelControlAriaLabel?: string;\n\n /** Determines whether the calendar should take the full width of its container @default false */\n fullWidth?: boolean;\n}\n\nexport type DecadeLevelFactory = Factory<{\n props: DecadeLevelProps;\n ref: HTMLDivElement;\n stylesNames: DecadeLevelStylesNames;\n}>;\n\nconst defaultProps = {\n decadeLabelFormat: 'YYYY',\n} satisfies Partial<DecadeLevelProps>;\n\nexport const DecadeLevel = factory<DecadeLevelFactory>((_props) => {\n const props = useProps('DecadeLevel', defaultProps, _props);\n const {\n // YearsList settings\n decade,\n locale,\n minDate,\n maxDate,\n yearsListFormat,\n getYearControlProps,\n __getControlRef,\n __onControlKeyDown,\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 nextDisabled,\n previousDisabled,\n levelControlAriaLabel,\n withNext,\n withPrevious,\n headerControlsOrder,\n\n // Other props\n decadeLabelFormat,\n classNames,\n styles,\n unstyled,\n __staticSelector,\n __stopPropagation,\n size,\n fullWidth,\n attributes,\n ...others\n } = props;\n\n const ctx = useDatesContext();\n const [startOfDecade, endOfDecade] = getDecadeRange(decade);\n\n const stylesApiProps = {\n __staticSelector: __staticSelector || 'DecadeLevel',\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(endOfDecade).endOf('year').isBefore(maxDate)\n : false;\n\n const _previousDisabled =\n typeof previousDisabled === 'boolean'\n ? previousDisabled\n : minDate\n ? !dayjs(startOfDecade).startOf('year').isAfter(minDate)\n : false;\n\n const formatDecade = (date: DateStringValue, format: string) =>\n dayjs(date)\n .locale(locale || ctx.locale)\n .format(format);\n\n return (\n <Box data-decade-level size={size} {...others}>\n <CalendarHeader\n label={\n typeof decadeLabelFormat === 'function'\n ? decadeLabelFormat(startOfDecade, endOfDecade)\n : `${formatDecade(startOfDecade, decadeLabelFormat)} – ${formatDecade(\n endOfDecade,\n decadeLabelFormat\n )}`\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 nextDisabled={_nextDisabled}\n previousDisabled={_previousDisabled}\n hasNextLevel={false}\n levelControlAriaLabel={levelControlAriaLabel}\n withNext={withNext}\n withPrevious={withPrevious}\n headerControlsOrder={headerControlsOrder}\n fullWidth={fullWidth}\n {...stylesApiProps}\n />\n\n <YearsList\n decade={decade}\n locale={locale}\n minDate={minDate}\n maxDate={maxDate}\n yearsListFormat={yearsListFormat}\n getYearControlProps={getYearControlProps}\n __getControlRef={__getControlRef}\n __onControlKeyDown={__onControlKeyDown}\n __onControlClick={__onControlClick}\n __onControlMouseEnter={__onControlMouseEnter}\n __preventFocus={__preventFocus}\n __stopPropagation={__stopPropagation}\n withCellSpacing={withCellSpacing}\n fullWidth={fullWidth}\n {...stylesApiProps}\n />\n </Box>\n );\n});\n\nDecadeLevel.classes = { ...YearsList.classes, ...CalendarHeader.classes };\nDecadeLevel.displayName = '@mantine/dates/DecadeLevel';\n"],"mappings":";;;;;;;;;;;AA0DA,MAAM,eAAe,EACnB,mBAAmB,OACrB;AAEA,MAAa,eAAA,GAAA,cAAA,QAAA,EAA2C,WAAW;CAEjE,MAAM,EAEJ,QACA,QACA,SACA,SACA,iBACA,qBACA,iBACA,oBACA,kBACA,uBACA,iBAGA,gBACA,UACA,cACA,WACA,eACA,QACA,YACA,cACA,kBACA,uBACA,UACA,cACA,qBAGA,mBACA,YACA,QACA,UACA,kBACA,mBACA,MACA,WACA,YACA,GAAG,YAAA,GAAA,cAAA,SAAA,CAxCkB,eAAe,cAAc,MAyC5C;CAER,MAAM,MAAMA,0BAAAA,gBAAgB;CAC5B,MAAM,CAAC,eAAe,eAAeC,yBAAAA,eAAe,MAAM;CAE1D,MAAM,iBAAiB;EACrB,kBAAkB,oBAAoB;EACtC;EACA;EACA;EACA;EACA;CACF;CAEA,MAAM,gBACJ,OAAO,iBAAiB,YACpB,eACA,UACE,EAAA,GAAA,MAAA,QAAA,CAAO,WAAW,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,SAAS,OAAO,IAClD;CAER,MAAM,oBACJ,OAAO,qBAAqB,YACxB,mBACA,UACE,EAAA,GAAA,MAAA,QAAA,CAAO,aAAa,CAAC,CAAC,QAAQ,MAAM,CAAC,CAAC,QAAQ,OAAO,IACrD;CAER,MAAM,gBAAgB,MAAuB,YAAA,GAAA,MAAA,QAAA,CACrC,IAAI,CAAC,CACR,OAAO,UAAU,IAAI,MAAM,CAAC,CAC5B,OAAO,MAAM;CAElB,OACE,iBAAA,GAAA,kBAAA,KAAA,CAACC,cAAAA,KAAD;EAAK,qBAAA;EAAwB;EAAM,GAAI;YAAvC,CACE,iBAAA,GAAA,kBAAA,IAAA,CAACC,uBAAAA,gBAAD;GACE,OACE,OAAO,sBAAsB,aACzB,kBAAkB,eAAe,WAAW,IAC5C,GAAG,aAAa,eAAe,iBAAiB,EAAE,KAAK,aACrD,aACA,iBACF;GAEU;GACG;GACT;GACI;GACH;GACI;GACP;GACI;GACZ,cAAc;GACd,kBAAkB;GAClB,cAAc;GACS;GACb;GACI;GACO;GACV;GACX,GAAI;EACL,CAAA,GAED,iBAAA,GAAA,kBAAA,IAAA,CAACC,kBAAAA,WAAD;GACU;GACA;GACC;GACA;GACQ;GACI;GACJ;GACG;GACF;GACK;GACP;GACG;GACF;GACN;GACX,GAAI;EACL,CAAA,CACE;;AAET,CAAC;AAED,YAAY,UAAU;CAAE,GAAGA,kBAAAA,UAAU;CAAS,GAAGD,uBAAAA,eAAe;AAAQ;AACxE,YAAY,cAAc"}