@mantine/dates
Version:
Calendars, date and time pickers based on Mantine components
82 lines (81 loc) • 3.07 kB
JavaScript
"use client";
import { handleControlKeyDown } from "../../utils/handle-control-key-down/handle-control-key-down.mjs";
import { DecadeLevel } from "../DecadeLevel/DecadeLevel.mjs";
import { LevelsGroup } from "../LevelsGroup/LevelsGroup.mjs";
import dayjs from "dayjs";
import { useRef } from "react";
import { jsx } from "react/jsx-runtime";
import { factory, useProps } from "@mantine/core";
//#region packages/@mantine/dates/src/components/DecadeLevelGroup/DecadeLevelGroup.tsx
const defaultProps = { numberOfColumns: 1 };
const DecadeLevelGroup = factory((_props) => {
const { decade, locale, minDate, maxDate, yearsListFormat, getYearControlProps, __onControlClick, __onControlMouseEnter, withCellSpacing, __preventFocus, nextIcon, previousIcon, nextLabel, previousLabel, onNext, onPrevious, nextDisabled, previousDisabled, headerControlsOrder, classNames, styles, unstyled, __staticSelector, __stopPropagation, numberOfColumns, levelControlAriaLabel, decadeLabelFormat, size, fullWidth, vars, attributes, ...others } = useProps("DecadeLevelGroup", defaultProps, _props);
const controlsRef = useRef([]);
const decades = Array(numberOfColumns).fill(0).map((_, decadeIndex) => {
const currentDecade = dayjs(decade).add(decadeIndex * 10, "years").format("YYYY-MM-DD");
return /* @__PURE__ */ jsx(DecadeLevel, {
size,
yearsListFormat,
decade: currentDecade,
withNext: decadeIndex === numberOfColumns - 1,
withPrevious: decadeIndex === 0,
decadeLabelFormat,
__onControlClick,
__onControlMouseEnter,
__onControlKeyDown: (event, payload) => handleControlKeyDown({
levelIndex: decadeIndex,
rowIndex: payload.rowIndex,
cellIndex: payload.cellIndex,
event,
controlsRef
}),
__getControlRef: (rowIndex, cellIndex, node) => {
if (!Array.isArray(controlsRef.current[decadeIndex])) controlsRef.current[decadeIndex] = [];
if (!Array.isArray(controlsRef.current[decadeIndex][rowIndex])) controlsRef.current[decadeIndex][rowIndex] = [];
controlsRef.current[decadeIndex][rowIndex][cellIndex] = node;
},
levelControlAriaLabel: typeof levelControlAriaLabel === "function" ? levelControlAriaLabel(currentDecade) : levelControlAriaLabel,
locale,
minDate,
maxDate,
__preventFocus,
__stopPropagation,
nextIcon,
previousIcon,
nextLabel,
previousLabel,
onNext,
onPrevious,
nextDisabled,
previousDisabled,
getYearControlProps,
__staticSelector: __staticSelector || "DecadeLevelGroup",
classNames,
styles,
unstyled,
withCellSpacing,
headerControlsOrder,
fullWidth,
attributes
}, decadeIndex);
});
return /* @__PURE__ */ jsx(LevelsGroup, {
classNames,
styles,
__staticSelector: __staticSelector || "DecadeLevelGroup",
size,
unstyled,
fullWidth,
attributes,
...others,
children: decades
});
});
DecadeLevelGroup.classes = {
...LevelsGroup.classes,
...DecadeLevel.classes
};
DecadeLevelGroup.displayName = "@mantine/dates/DecadeLevelGroup";
//#endregion
export { DecadeLevelGroup };
//# sourceMappingURL=DecadeLevelGroup.mjs.map