@codecademy/gamut 68.1.3-alpha.bcf87d.0 → 68.1.3-alpha.da9068.0
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.
- package/dist/DatePicker/Calendar/Calendar.d.ts +5 -7
- package/dist/DatePicker/Calendar/Calendar.js +24 -11
- package/dist/DatePicker/Calendar/CalendarBody.js +33 -14
- package/dist/DatePicker/Calendar/CalendarFooter.js +13 -19
- package/dist/DatePicker/Calendar/CalendarHeader.js +52 -29
- package/dist/DatePicker/Calendar/types.d.ts +9 -4
- package/dist/DatePicker/Calendar/utils/dateGrid.js +8 -14
- package/dist/DatePicker/Calendar/utils/format.d.ts +23 -17
- package/dist/DatePicker/Calendar/utils/format.js +64 -71
- package/dist/DatePicker/Calendar/utils/keyHandler.d.ts +1 -1
- package/dist/DatePicker/Calendar/utils/keyHandler.js +17 -8
- package/dist/DatePicker/DatePicker.d.ts +1 -1
- package/dist/DatePicker/DatePicker.js +22 -21
- package/dist/DatePicker/DatePickerCalendar.js +12 -4
- package/dist/DatePicker/DatePickerContext.d.ts +1 -1
- package/dist/DatePicker/DatePickerContext.js +2 -2
- package/dist/DatePicker/DatePickerInput.js +38 -27
- package/dist/DatePicker/translations.d.ts +3 -0
- package/dist/DatePicker/translations.js +8 -0
- package/dist/DatePicker/types.d.ts +18 -1
- package/dist/DatePicker/utils.d.ts +3 -1
- package/dist/DatePicker/utils.js +29 -10
- package/package.json +2 -2
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import * as React from 'react';
|
|
2
2
|
/**
|
|
3
3
|
* Outer wrapper for the calendar (header + body + footer).
|
|
4
4
|
* Used by DatePickerCalendar to group the calendar content.
|
|
5
|
+
* Renders a CheckerDense pattern shadow at offset left 8, top 8.
|
|
5
6
|
*/
|
|
6
|
-
export declare const Calendar:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
} & {
|
|
10
|
-
theme?: import("@emotion/react").Theme | undefined;
|
|
11
|
-
}, import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {}>;
|
|
7
|
+
export declare const Calendar: React.FC<{
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
}>;
|
|
@@ -1,15 +1,28 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
1
|
+
import { CheckerDense } from '@codecademy/gamut-patterns';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Box } from '../../Box';
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
6
|
* Outer wrapper for the calendar (header + body + footer).
|
|
5
7
|
* Used by DatePickerCalendar to group the calendar content.
|
|
8
|
+
* Renders a CheckerDense pattern shadow at offset left 8, top 8.
|
|
6
9
|
*/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
})(
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
export const Calendar = ({
|
|
12
|
+
children
|
|
13
|
+
}) => /*#__PURE__*/_jsxs(Box, {
|
|
14
|
+
position: "relative",
|
|
15
|
+
width: "max-content",
|
|
16
|
+
children: [/*#__PURE__*/_jsx(CheckerDense, {
|
|
17
|
+
left: 8,
|
|
18
|
+
position: "absolute",
|
|
19
|
+
top: 8
|
|
20
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
21
|
+
bg: "background",
|
|
22
|
+
border: 1,
|
|
23
|
+
borderRadius: "sm",
|
|
24
|
+
position: "relative",
|
|
25
|
+
zIndex: 1,
|
|
26
|
+
children: children
|
|
27
|
+
})]
|
|
28
|
+
});
|
|
@@ -4,18 +4,24 @@ import { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { TextButton } from '../../Button';
|
|
6
6
|
import { getMonthGrid, isDateDisabled, isDateInRange, isSameDay } from './utils/dateGrid';
|
|
7
|
-
import {
|
|
7
|
+
import { getWeekdayNames } from './utils/format';
|
|
8
8
|
import { getDatesWithRow, keyHandler } from './utils/keyHandler';
|
|
9
9
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
10
|
const TableHeader = /*#__PURE__*/_styled("th", {
|
|
11
|
-
target: "
|
|
11
|
+
target: "e12sl4cx2",
|
|
12
12
|
label: "TableHeader"
|
|
13
13
|
})(css({
|
|
14
14
|
fontSize: 14,
|
|
15
15
|
fontWeight: 'base',
|
|
16
16
|
color: 'text-disabled',
|
|
17
17
|
textAlign: 'center'
|
|
18
|
-
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
18
|
+
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRlUGlja2VyL0NhbGVuZGFyL0NhbGVuZGFyQm9keS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JvQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0ZVBpY2tlci9DYWxlbmRhci9DYWxlbmRhckJvZHkudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBzdGF0ZXMgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBUZXh0QnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQm9keVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBnZXRNb250aEdyaWQsXG4gIGlzRGF0ZURpc2FibGVkLFxuICBpc0RhdGVJblJhbmdlLFxuICBpc1NhbWVEYXksXG59IGZyb20gJy4vdXRpbHMvZGF0ZUdyaWQnO1xuaW1wb3J0IHsgZ2V0V2Vla2RheU5hbWVzIH0gZnJvbSAnLi91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHsgZ2V0RGF0ZXNXaXRoUm93LCBrZXlIYW5kbGVyIH0gZnJvbSAnLi91dGlscy9rZXlIYW5kbGVyJztcblxuY29uc3QgVGFibGVIZWFkZXIgPSBzdHlsZWQudGgoXG4gIGNzcyh7XG4gICAgZm9udFNpemU6IDE0LFxuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICBjb2xvcjogJ3RleHQtZGlzYWJsZWQnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5jb25zdCBEYXRlQ2VsbCA9IHN0eWxlZC50ZChcbiAgY3NzKHtcbiAgICBwYWRkaW5nOiAwLFxuICB9KVxuKTtcblxuY29uc3QgRGF0ZUJ1dHRvbiA9IHN0eWxlZChUZXh0QnV0dG9uKShcbiAgc3RhdGVzKHtcbiAgICBpc1RvZGF5OiB7XG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgYm90dG9tOiA0LFxuICAgICAgICB3aWR0aDogNCxcbiAgICAgICAgaGVpZ2h0OiA0LFxuICAgICAgICBib3JkZXJSYWRpdXM6ICdmdWxsJyxcbiAgICAgICAgYmc6ICdoeXBlcicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaXNTZWxlY3RlZDoge1xuICAgICAgYmc6ICd0ZXh0JyxcbiAgICAgIGNvbG9yOiAnYmFja2dyb3VuZCcsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpc1JhbmdlU3RhcnQ6IHtcbiAgICAgIGJvcmRlclJhZGl1c1JpZ2h0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc1JhbmdlRW5kOiB7XG4gICAgICBib3JkZXJSYWRpdXNMZWZ0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc0luUmFuZ2U6IHtcbiAgICAgIGJnOiAndGV4dC1kaXNhYmxlZCcsXG4gICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbm9uZScsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29sb3I6ICd0ZXh0LWRpc2FibGVkJyxcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbGluZS10aHJvdWdoJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICB0ZXh0RGVjb3JhdGlvbjogJ2xpbmUtdGhyb3VnaCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pLFxuICBjc3Moe1xuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICB3aWR0aDogJzMycHgnLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IENhbGVuZGFyQm9keTogUmVhY3QuRkM8Q2FsZW5kYXJCb2R5UHJvcHM+ID0gKHtcbiAgdmlzaWJsZURhdGUsXG4gIHNlbGVjdGVkRGF0ZSxcbiAgZW5kRGF0ZSA9IG51bGwsXG4gIGRpc2FibGVkRGF0ZXMgPSBbXSxcbiAgb25EYXRlU2VsZWN0LFxuICBsb2NhbGUsXG4gIHdlZWtTdGFydHNPbiA9IDAsXG4gIGxhYmVsbGVkQnlJZCxcbiAgZm9jdXNlZERhdGUsXG4gIG9uRm9jdXNlZERhdGVDaGFuZ2UsXG4gIG9uVmlzaWJsZURhdGVDaGFuZ2UsXG4gIG9uRXNjYXBlS2V5UHJlc3MsXG4gIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgaGFzQWRqYWNlbnRNb250aExlZnQsXG59KSA9PiB7XG4gIGNvbnN0IHllYXIgPSB2aXNpYmxlRGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IHZpc2libGVEYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IHdlZWtzID0gZ2V0TW9udGhHcmlkKHllYXIsIG1vbnRoLCB3ZWVrU3RhcnRzT24pO1xuICBjb25zdCB3ZWVrZGF5TGFiZWxzID0gZ2V0V2Vla2RheU5hbWVzKCdzaG9ydCcsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3Qgd2Vla2RheUZ1bGxOYW1lcyA9IGdldFdlZWtkYXlOYW1lcygnbG9uZycsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3QgYnV0dG9uUmVmcyA9IHVzZVJlZjxNYXA8bnVtYmVyLCBIVE1MRWxlbWVudD4+KG5ldyBNYXAoKSk7XG5cbiAgY29uc3QgZGF0ZXNXaXRoUm93ID0gdXNlTWVtbygoKSA9PiBnZXREYXRlc1dpdGhSb3cod2Vla3MpLCBbd2Vla3NdKTtcbiAgY29uc3QgZm9jdXNUYXJnZXQgPSBmb2N1c2VkRGF0ZSA/PyBzZWxlY3RlZERhdGU7XG5cbiAgY29uc3QgaXNUb2RheSA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRlOiBEYXRlIHwgbnVsbCkgPT4gZGF0ZSAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgbmV3IERhdGUoKSksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBmb2N1c0J1dHRvbiA9IHVzZUNhbGxiYWNrKChkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgIGlmIChkYXRlID09PSBudWxsKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gbmV3IERhdGUoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICBkYXRlLmdldERhdGUoKVxuICAgICkuZ2V0VGltZSgpO1xuICAgIGJ1dHRvblJlZnMuY3VycmVudC5nZXQoa2V5KT8uZm9jdXMoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvY3VzVGFyZ2V0ICE9PSBudWxsKSBmb2N1c0J1dHRvbihmb2N1c1RhcmdldCk7XG4gIH0sIFtmb2N1c1RhcmdldCwgZm9jdXNCdXR0b25dKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LktleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpID0+XG4gICAgICBrZXlIYW5kbGVyKFxuICAgICAgICBlLFxuICAgICAgICBkYXRlLFxuICAgICAgICBvbkZvY3VzZWREYXRlQ2hhbmdlLFxuICAgICAgICBkYXRlc1dpdGhSb3csXG4gICAgICAgIG1vbnRoLFxuICAgICAgICB5ZWFyLFxuICAgICAgICBkaXNhYmxlZERhdGVzLFxuICAgICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICAgIG9uRXNjYXBlS2V5UHJlc3MsXG4gICAgICAgIG9uVmlzaWJsZURhdGVDaGFuZ2UsXG4gICAgICAgIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgICAgICAgaGFzQWRqYWNlbnRNb250aExlZnRcbiAgICAgICksXG4gICAgW1xuICAgICAgb25Gb2N1c2VkRGF0ZUNoYW5nZSxcbiAgICAgIGRhdGVzV2l0aFJvdyxcbiAgICAgIG1vbnRoLFxuICAgICAgeWVhcixcbiAgICAgIGRpc2FibGVkRGF0ZXMsXG4gICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICBvbkVzY2FwZUtleVByZXNzLFxuICAgICAgb25WaXNpYmxlRGF0ZUNoYW5nZSxcbiAgICAgIGhhc0FkamFjZW50TW9udGhMZWZ0LFxuICAgICAgaGFzQWRqYWNlbnRNb250aFJpZ2h0LFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBzZXRCdXR0b25SZWYgPSB1c2VDYWxsYmFjaygoZGF0ZTogRGF0ZSwgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IGsgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpXG4gICAgKS5nZXRUaW1lKCk7XG4gICAgaWYgKGVsKSBidXR0b25SZWZzLmN1cnJlbnQuc2V0KGssIGVsKTtcbiAgICBlbHNlIGJ1dHRvblJlZnMuY3VycmVudC5kZWxldGUoayk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDx0YWJsZSBhcmlhLWxhYmVsbGVkYnk9e2xhYmVsbGVkQnlJZH0gcm9sZT1cImdyaWRcIiB3aWR0aD1cIjEwMCVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIHt3ZWVrZGF5TGFiZWxzLm1hcCgobGFiZWwsIGkpID0+IChcbiAgICAgICAgICAgIDxUYWJsZUhlYWRlciBhYmJyPXt3ZWVrZGF5RnVsbE5hbWVzW2ldfSBrZXk9e2xhYmVsfSBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAge3dlZWtzLm1hcCgod2Vlaywgcm93SW5kZXgpID0+IChcbiAgICAgICAgICA8dHIga2V5PXt3ZWVrLmpvaW4oJy0nKX0+XG4gICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGUsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChkYXRlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIC8vIGZpeCB0aGlzIGVycm9yXG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5LCBqc3gtYTExeS9jb250cm9sLWhhcy1hc3NvY2lhdGVkLWxhYmVsXG4gICAgICAgICAgICAgICAgICA8RGF0ZUNlbGxcbiAgICAgICAgICAgICAgICAgICAga2V5PXtgZW1wdHktJHtyb3dJbmRleH0tJHtjb2xJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkoZGF0ZSwgc2VsZWN0ZWREYXRlKSB8fCBpc1NhbWVEYXkoZGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gISFzZWxlY3RlZERhdGUgJiYgISFlbmREYXRlO1xuICAgICAgICAgICAgICBjb25zdCBpblJhbmdlID1cbiAgICAgICAgICAgICAgICByYW5nZSAmJiBpc0RhdGVJblJhbmdlKGRhdGUsIHNlbGVjdGVkRGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgZGlzYWJsZWREYXRlcyk7XG4gICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gaXNUb2RheShkYXRlKTtcbiAgICAgICAgICAgICAgLy8gdGhpcyBpcyBtYWtpbmcgdGhlIHNlbGVjdGVkIGRhdGUgYSBkaWZmZXJuZXQgY29sb3IgYmMgaXQgaXMgZm9jdXNlZCwgbG9vayBpbnRvIGZ1cnRoZXJcbiAgICAgICAgICAgICAgY29uc3QgaXNGb2N1c2VkID1cbiAgICAgICAgICAgICAgICBmb2N1c1RhcmdldCAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgZm9jdXNUYXJnZXQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPERhdGVDZWxsXG4gICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGtleT17ZGF0ZS5nZXRUaW1lKCl9XG4gICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEYXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgaXNJblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICBpc1JhbmdlRW5kPXtyYW5nZSAmJiBpc1NhbWVEYXkoZGF0ZSwgZW5kRGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIGlzUmFuZ2VTdGFydD17cmFuZ2UgJiYgaXNTYW1lRGF5KGRhdGUsIHNlbGVjdGVkRGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICBpc1RvZGF5PXt0b2RheX1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXsoZWwpID0+IHNldEJ1dHRvblJlZihkYXRlLCBlbCBhcyBIVE1MRWxlbWVudCB8IG51bGwpfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17aXNGb2N1c2VkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25EYXRlU2VsZWN0KGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBvbkZvY3VzZWREYXRlQ2hhbmdlPy4oZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGU6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlS2V5RG93bihlLCBkYXRlKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgIDwvRGF0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0RhdGVDZWxsPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgKSl9XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gICk7XG59O1xuIl19 */");
|
|
19
|
+
const DateCell = /*#__PURE__*/_styled("td", {
|
|
20
|
+
target: "e12sl4cx1",
|
|
21
|
+
label: "DateCell"
|
|
22
|
+
})(css({
|
|
23
|
+
padding: 0
|
|
24
|
+
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRlUGlja2VyL0NhbGVuZGFyL0NhbGVuZGFyQm9keS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJpQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0ZVBpY2tlci9DYWxlbmRhci9DYWxlbmRhckJvZHkudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBzdGF0ZXMgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBUZXh0QnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQm9keVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBnZXRNb250aEdyaWQsXG4gIGlzRGF0ZURpc2FibGVkLFxuICBpc0RhdGVJblJhbmdlLFxuICBpc1NhbWVEYXksXG59IGZyb20gJy4vdXRpbHMvZGF0ZUdyaWQnO1xuaW1wb3J0IHsgZ2V0V2Vla2RheU5hbWVzIH0gZnJvbSAnLi91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHsgZ2V0RGF0ZXNXaXRoUm93LCBrZXlIYW5kbGVyIH0gZnJvbSAnLi91dGlscy9rZXlIYW5kbGVyJztcblxuY29uc3QgVGFibGVIZWFkZXIgPSBzdHlsZWQudGgoXG4gIGNzcyh7XG4gICAgZm9udFNpemU6IDE0LFxuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICBjb2xvcjogJ3RleHQtZGlzYWJsZWQnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5jb25zdCBEYXRlQ2VsbCA9IHN0eWxlZC50ZChcbiAgY3NzKHtcbiAgICBwYWRkaW5nOiAwLFxuICB9KVxuKTtcblxuY29uc3QgRGF0ZUJ1dHRvbiA9IHN0eWxlZChUZXh0QnV0dG9uKShcbiAgc3RhdGVzKHtcbiAgICBpc1RvZGF5OiB7XG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgYm90dG9tOiA0LFxuICAgICAgICB3aWR0aDogNCxcbiAgICAgICAgaGVpZ2h0OiA0LFxuICAgICAgICBib3JkZXJSYWRpdXM6ICdmdWxsJyxcbiAgICAgICAgYmc6ICdoeXBlcicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaXNTZWxlY3RlZDoge1xuICAgICAgYmc6ICd0ZXh0JyxcbiAgICAgIGNvbG9yOiAnYmFja2dyb3VuZCcsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpc1JhbmdlU3RhcnQ6IHtcbiAgICAgIGJvcmRlclJhZGl1c1JpZ2h0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc1JhbmdlRW5kOiB7XG4gICAgICBib3JkZXJSYWRpdXNMZWZ0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc0luUmFuZ2U6IHtcbiAgICAgIGJnOiAndGV4dC1kaXNhYmxlZCcsXG4gICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbm9uZScsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29sb3I6ICd0ZXh0LWRpc2FibGVkJyxcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbGluZS10aHJvdWdoJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICB0ZXh0RGVjb3JhdGlvbjogJ2xpbmUtdGhyb3VnaCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pLFxuICBjc3Moe1xuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICB3aWR0aDogJzMycHgnLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IENhbGVuZGFyQm9keTogUmVhY3QuRkM8Q2FsZW5kYXJCb2R5UHJvcHM+ID0gKHtcbiAgdmlzaWJsZURhdGUsXG4gIHNlbGVjdGVkRGF0ZSxcbiAgZW5kRGF0ZSA9IG51bGwsXG4gIGRpc2FibGVkRGF0ZXMgPSBbXSxcbiAgb25EYXRlU2VsZWN0LFxuICBsb2NhbGUsXG4gIHdlZWtTdGFydHNPbiA9IDAsXG4gIGxhYmVsbGVkQnlJZCxcbiAgZm9jdXNlZERhdGUsXG4gIG9uRm9jdXNlZERhdGVDaGFuZ2UsXG4gIG9uVmlzaWJsZURhdGVDaGFuZ2UsXG4gIG9uRXNjYXBlS2V5UHJlc3MsXG4gIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgaGFzQWRqYWNlbnRNb250aExlZnQsXG59KSA9PiB7XG4gIGNvbnN0IHllYXIgPSB2aXNpYmxlRGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IHZpc2libGVEYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IHdlZWtzID0gZ2V0TW9udGhHcmlkKHllYXIsIG1vbnRoLCB3ZWVrU3RhcnRzT24pO1xuICBjb25zdCB3ZWVrZGF5TGFiZWxzID0gZ2V0V2Vla2RheU5hbWVzKCdzaG9ydCcsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3Qgd2Vla2RheUZ1bGxOYW1lcyA9IGdldFdlZWtkYXlOYW1lcygnbG9uZycsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3QgYnV0dG9uUmVmcyA9IHVzZVJlZjxNYXA8bnVtYmVyLCBIVE1MRWxlbWVudD4+KG5ldyBNYXAoKSk7XG5cbiAgY29uc3QgZGF0ZXNXaXRoUm93ID0gdXNlTWVtbygoKSA9PiBnZXREYXRlc1dpdGhSb3cod2Vla3MpLCBbd2Vla3NdKTtcbiAgY29uc3QgZm9jdXNUYXJnZXQgPSBmb2N1c2VkRGF0ZSA/PyBzZWxlY3RlZERhdGU7XG5cbiAgY29uc3QgaXNUb2RheSA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRlOiBEYXRlIHwgbnVsbCkgPT4gZGF0ZSAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgbmV3IERhdGUoKSksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBmb2N1c0J1dHRvbiA9IHVzZUNhbGxiYWNrKChkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgIGlmIChkYXRlID09PSBudWxsKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gbmV3IERhdGUoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICBkYXRlLmdldERhdGUoKVxuICAgICkuZ2V0VGltZSgpO1xuICAgIGJ1dHRvblJlZnMuY3VycmVudC5nZXQoa2V5KT8uZm9jdXMoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvY3VzVGFyZ2V0ICE9PSBudWxsKSBmb2N1c0J1dHRvbihmb2N1c1RhcmdldCk7XG4gIH0sIFtmb2N1c1RhcmdldCwgZm9jdXNCdXR0b25dKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LktleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpID0+XG4gICAgICBrZXlIYW5kbGVyKFxuICAgICAgICBlLFxuICAgICAgICBkYXRlLFxuICAgICAgICBvbkZvY3VzZWREYXRlQ2hhbmdlLFxuICAgICAgICBkYXRlc1dpdGhSb3csXG4gICAgICAgIG1vbnRoLFxuICAgICAgICB5ZWFyLFxuICAgICAgICBkaXNhYmxlZERhdGVzLFxuICAgICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICAgIG9uRXNjYXBlS2V5UHJlc3MsXG4gICAgICAgIG9uVmlzaWJsZURhdGVDaGFuZ2UsXG4gICAgICAgIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgICAgICAgaGFzQWRqYWNlbnRNb250aExlZnRcbiAgICAgICksXG4gICAgW1xuICAgICAgb25Gb2N1c2VkRGF0ZUNoYW5nZSxcbiAgICAgIGRhdGVzV2l0aFJvdyxcbiAgICAgIG1vbnRoLFxuICAgICAgeWVhcixcbiAgICAgIGRpc2FibGVkRGF0ZXMsXG4gICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICBvbkVzY2FwZUtleVByZXNzLFxuICAgICAgb25WaXNpYmxlRGF0ZUNoYW5nZSxcbiAgICAgIGhhc0FkamFjZW50TW9udGhMZWZ0LFxuICAgICAgaGFzQWRqYWNlbnRNb250aFJpZ2h0LFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBzZXRCdXR0b25SZWYgPSB1c2VDYWxsYmFjaygoZGF0ZTogRGF0ZSwgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IGsgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpXG4gICAgKS5nZXRUaW1lKCk7XG4gICAgaWYgKGVsKSBidXR0b25SZWZzLmN1cnJlbnQuc2V0KGssIGVsKTtcbiAgICBlbHNlIGJ1dHRvblJlZnMuY3VycmVudC5kZWxldGUoayk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDx0YWJsZSBhcmlhLWxhYmVsbGVkYnk9e2xhYmVsbGVkQnlJZH0gcm9sZT1cImdyaWRcIiB3aWR0aD1cIjEwMCVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIHt3ZWVrZGF5TGFiZWxzLm1hcCgobGFiZWwsIGkpID0+IChcbiAgICAgICAgICAgIDxUYWJsZUhlYWRlciBhYmJyPXt3ZWVrZGF5RnVsbE5hbWVzW2ldfSBrZXk9e2xhYmVsfSBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAge3dlZWtzLm1hcCgod2Vlaywgcm93SW5kZXgpID0+IChcbiAgICAgICAgICA8dHIga2V5PXt3ZWVrLmpvaW4oJy0nKX0+XG4gICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGUsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChkYXRlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIC8vIGZpeCB0aGlzIGVycm9yXG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5LCBqc3gtYTExeS9jb250cm9sLWhhcy1hc3NvY2lhdGVkLWxhYmVsXG4gICAgICAgICAgICAgICAgICA8RGF0ZUNlbGxcbiAgICAgICAgICAgICAgICAgICAga2V5PXtgZW1wdHktJHtyb3dJbmRleH0tJHtjb2xJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkoZGF0ZSwgc2VsZWN0ZWREYXRlKSB8fCBpc1NhbWVEYXkoZGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gISFzZWxlY3RlZERhdGUgJiYgISFlbmREYXRlO1xuICAgICAgICAgICAgICBjb25zdCBpblJhbmdlID1cbiAgICAgICAgICAgICAgICByYW5nZSAmJiBpc0RhdGVJblJhbmdlKGRhdGUsIHNlbGVjdGVkRGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgZGlzYWJsZWREYXRlcyk7XG4gICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gaXNUb2RheShkYXRlKTtcbiAgICAgICAgICAgICAgLy8gdGhpcyBpcyBtYWtpbmcgdGhlIHNlbGVjdGVkIGRhdGUgYSBkaWZmZXJuZXQgY29sb3IgYmMgaXQgaXMgZm9jdXNlZCwgbG9vayBpbnRvIGZ1cnRoZXJcbiAgICAgICAgICAgICAgY29uc3QgaXNGb2N1c2VkID1cbiAgICAgICAgICAgICAgICBmb2N1c1RhcmdldCAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgZm9jdXNUYXJnZXQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPERhdGVDZWxsXG4gICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGtleT17ZGF0ZS5nZXRUaW1lKCl9XG4gICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEYXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgaXNJblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICBpc1JhbmdlRW5kPXtyYW5nZSAmJiBpc1NhbWVEYXkoZGF0ZSwgZW5kRGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIGlzUmFuZ2VTdGFydD17cmFuZ2UgJiYgaXNTYW1lRGF5KGRhdGUsIHNlbGVjdGVkRGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICBpc1RvZGF5PXt0b2RheX1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXsoZWwpID0+IHNldEJ1dHRvblJlZihkYXRlLCBlbCBhcyBIVE1MRWxlbWVudCB8IG51bGwpfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17aXNGb2N1c2VkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25EYXRlU2VsZWN0KGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBvbkZvY3VzZWREYXRlQ2hhbmdlPy4oZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGU6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlS2V5RG93bihlLCBkYXRlKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgIDwvRGF0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0RhdGVDZWxsPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgKSl9XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gICk7XG59O1xuIl19 */");
|
|
19
25
|
const DateButton = /*#__PURE__*/_styled(TextButton, {
|
|
20
26
|
target: "e12sl4cx0",
|
|
21
27
|
label: "DateButton"
|
|
@@ -26,7 +32,6 @@ const DateButton = /*#__PURE__*/_styled(TextButton, {
|
|
|
26
32
|
content: '""',
|
|
27
33
|
position: 'absolute',
|
|
28
34
|
bottom: 4,
|
|
29
|
-
left: '50%',
|
|
30
35
|
width: 4,
|
|
31
36
|
height: 4,
|
|
32
37
|
borderRadius: 'full',
|
|
@@ -44,6 +49,12 @@ const DateButton = /*#__PURE__*/_styled(TextButton, {
|
|
|
44
49
|
bg: 'background'
|
|
45
50
|
}
|
|
46
51
|
},
|
|
52
|
+
isRangeStart: {
|
|
53
|
+
borderRadiusRight: 'none'
|
|
54
|
+
},
|
|
55
|
+
isRangeEnd: {
|
|
56
|
+
borderRadiusLeft: 'none'
|
|
57
|
+
},
|
|
47
58
|
isInRange: {
|
|
48
59
|
bg: 'text-disabled',
|
|
49
60
|
color: 'background',
|
|
@@ -58,12 +69,15 @@ const DateButton = /*#__PURE__*/_styled(TextButton, {
|
|
|
58
69
|
},
|
|
59
70
|
disabled: {
|
|
60
71
|
color: 'text-disabled',
|
|
61
|
-
textDecoration: 'line-through'
|
|
72
|
+
textDecoration: 'line-through',
|
|
73
|
+
'&:hover': {
|
|
74
|
+
textDecoration: 'line-through'
|
|
75
|
+
}
|
|
62
76
|
}
|
|
63
77
|
}), css({
|
|
64
78
|
fontWeight: 'base',
|
|
65
79
|
width: '32px'
|
|
66
|
-
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
80
|
+
}), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRlUGlja2VyL0NhbGVuZGFyL0NhbGVuZGFyQm9keS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0JtQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0ZVBpY2tlci9DYWxlbmRhci9DYWxlbmRhckJvZHkudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBzdGF0ZXMgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBUZXh0QnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQm9keVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBnZXRNb250aEdyaWQsXG4gIGlzRGF0ZURpc2FibGVkLFxuICBpc0RhdGVJblJhbmdlLFxuICBpc1NhbWVEYXksXG59IGZyb20gJy4vdXRpbHMvZGF0ZUdyaWQnO1xuaW1wb3J0IHsgZ2V0V2Vla2RheU5hbWVzIH0gZnJvbSAnLi91dGlscy9mb3JtYXQnO1xuaW1wb3J0IHsgZ2V0RGF0ZXNXaXRoUm93LCBrZXlIYW5kbGVyIH0gZnJvbSAnLi91dGlscy9rZXlIYW5kbGVyJztcblxuY29uc3QgVGFibGVIZWFkZXIgPSBzdHlsZWQudGgoXG4gIGNzcyh7XG4gICAgZm9udFNpemU6IDE0LFxuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICBjb2xvcjogJ3RleHQtZGlzYWJsZWQnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5jb25zdCBEYXRlQ2VsbCA9IHN0eWxlZC50ZChcbiAgY3NzKHtcbiAgICBwYWRkaW5nOiAwLFxuICB9KVxuKTtcblxuY29uc3QgRGF0ZUJ1dHRvbiA9IHN0eWxlZChUZXh0QnV0dG9uKShcbiAgc3RhdGVzKHtcbiAgICBpc1RvZGF5OiB7XG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgYm90dG9tOiA0LFxuICAgICAgICB3aWR0aDogNCxcbiAgICAgICAgaGVpZ2h0OiA0LFxuICAgICAgICBib3JkZXJSYWRpdXM6ICdmdWxsJyxcbiAgICAgICAgYmc6ICdoeXBlcicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaXNTZWxlY3RlZDoge1xuICAgICAgYmc6ICd0ZXh0JyxcbiAgICAgIGNvbG9yOiAnYmFja2dyb3VuZCcsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpc1JhbmdlU3RhcnQ6IHtcbiAgICAgIGJvcmRlclJhZGl1c1JpZ2h0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc1JhbmdlRW5kOiB7XG4gICAgICBib3JkZXJSYWRpdXNMZWZ0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc0luUmFuZ2U6IHtcbiAgICAgIGJnOiAndGV4dC1kaXNhYmxlZCcsXG4gICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbm9uZScsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29sb3I6ICd0ZXh0LWRpc2FibGVkJyxcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbGluZS10aHJvdWdoJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICB0ZXh0RGVjb3JhdGlvbjogJ2xpbmUtdGhyb3VnaCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pLFxuICBjc3Moe1xuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICB3aWR0aDogJzMycHgnLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IENhbGVuZGFyQm9keTogUmVhY3QuRkM8Q2FsZW5kYXJCb2R5UHJvcHM+ID0gKHtcbiAgdmlzaWJsZURhdGUsXG4gIHNlbGVjdGVkRGF0ZSxcbiAgZW5kRGF0ZSA9IG51bGwsXG4gIGRpc2FibGVkRGF0ZXMgPSBbXSxcbiAgb25EYXRlU2VsZWN0LFxuICBsb2NhbGUsXG4gIHdlZWtTdGFydHNPbiA9IDAsXG4gIGxhYmVsbGVkQnlJZCxcbiAgZm9jdXNlZERhdGUsXG4gIG9uRm9jdXNlZERhdGVDaGFuZ2UsXG4gIG9uVmlzaWJsZURhdGVDaGFuZ2UsXG4gIG9uRXNjYXBlS2V5UHJlc3MsXG4gIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgaGFzQWRqYWNlbnRNb250aExlZnQsXG59KSA9PiB7XG4gIGNvbnN0IHllYXIgPSB2aXNpYmxlRGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IHZpc2libGVEYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IHdlZWtzID0gZ2V0TW9udGhHcmlkKHllYXIsIG1vbnRoLCB3ZWVrU3RhcnRzT24pO1xuICBjb25zdCB3ZWVrZGF5TGFiZWxzID0gZ2V0V2Vla2RheU5hbWVzKCdzaG9ydCcsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3Qgd2Vla2RheUZ1bGxOYW1lcyA9IGdldFdlZWtkYXlOYW1lcygnbG9uZycsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3QgYnV0dG9uUmVmcyA9IHVzZVJlZjxNYXA8bnVtYmVyLCBIVE1MRWxlbWVudD4+KG5ldyBNYXAoKSk7XG5cbiAgY29uc3QgZGF0ZXNXaXRoUm93ID0gdXNlTWVtbygoKSA9PiBnZXREYXRlc1dpdGhSb3cod2Vla3MpLCBbd2Vla3NdKTtcbiAgY29uc3QgZm9jdXNUYXJnZXQgPSBmb2N1c2VkRGF0ZSA/PyBzZWxlY3RlZERhdGU7XG5cbiAgY29uc3QgaXNUb2RheSA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRlOiBEYXRlIHwgbnVsbCkgPT4gZGF0ZSAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgbmV3IERhdGUoKSksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBmb2N1c0J1dHRvbiA9IHVzZUNhbGxiYWNrKChkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgIGlmIChkYXRlID09PSBudWxsKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gbmV3IERhdGUoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICBkYXRlLmdldERhdGUoKVxuICAgICkuZ2V0VGltZSgpO1xuICAgIGJ1dHRvblJlZnMuY3VycmVudC5nZXQoa2V5KT8uZm9jdXMoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvY3VzVGFyZ2V0ICE9PSBudWxsKSBmb2N1c0J1dHRvbihmb2N1c1RhcmdldCk7XG4gIH0sIFtmb2N1c1RhcmdldCwgZm9jdXNCdXR0b25dKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LktleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpID0+XG4gICAgICBrZXlIYW5kbGVyKFxuICAgICAgICBlLFxuICAgICAgICBkYXRlLFxuICAgICAgICBvbkZvY3VzZWREYXRlQ2hhbmdlLFxuICAgICAgICBkYXRlc1dpdGhSb3csXG4gICAgICAgIG1vbnRoLFxuICAgICAgICB5ZWFyLFxuICAgICAgICBkaXNhYmxlZERhdGVzLFxuICAgICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICAgIG9uRXNjYXBlS2V5UHJlc3MsXG4gICAgICAgIG9uVmlzaWJsZURhdGVDaGFuZ2UsXG4gICAgICAgIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgICAgICAgaGFzQWRqYWNlbnRNb250aExlZnRcbiAgICAgICksXG4gICAgW1xuICAgICAgb25Gb2N1c2VkRGF0ZUNoYW5nZSxcbiAgICAgIGRhdGVzV2l0aFJvdyxcbiAgICAgIG1vbnRoLFxuICAgICAgeWVhcixcbiAgICAgIGRpc2FibGVkRGF0ZXMsXG4gICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICBvbkVzY2FwZUtleVByZXNzLFxuICAgICAgb25WaXNpYmxlRGF0ZUNoYW5nZSxcbiAgICAgIGhhc0FkamFjZW50TW9udGhMZWZ0LFxuICAgICAgaGFzQWRqYWNlbnRNb250aFJpZ2h0LFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBzZXRCdXR0b25SZWYgPSB1c2VDYWxsYmFjaygoZGF0ZTogRGF0ZSwgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IGsgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpXG4gICAgKS5nZXRUaW1lKCk7XG4gICAgaWYgKGVsKSBidXR0b25SZWZzLmN1cnJlbnQuc2V0KGssIGVsKTtcbiAgICBlbHNlIGJ1dHRvblJlZnMuY3VycmVudC5kZWxldGUoayk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDx0YWJsZSBhcmlhLWxhYmVsbGVkYnk9e2xhYmVsbGVkQnlJZH0gcm9sZT1cImdyaWRcIiB3aWR0aD1cIjEwMCVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIHt3ZWVrZGF5TGFiZWxzLm1hcCgobGFiZWwsIGkpID0+IChcbiAgICAgICAgICAgIDxUYWJsZUhlYWRlciBhYmJyPXt3ZWVrZGF5RnVsbE5hbWVzW2ldfSBrZXk9e2xhYmVsfSBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAge3dlZWtzLm1hcCgod2Vlaywgcm93SW5kZXgpID0+IChcbiAgICAgICAgICA8dHIga2V5PXt3ZWVrLmpvaW4oJy0nKX0+XG4gICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGUsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChkYXRlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIC8vIGZpeCB0aGlzIGVycm9yXG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5LCBqc3gtYTExeS9jb250cm9sLWhhcy1hc3NvY2lhdGVkLWxhYmVsXG4gICAgICAgICAgICAgICAgICA8RGF0ZUNlbGxcbiAgICAgICAgICAgICAgICAgICAga2V5PXtgZW1wdHktJHtyb3dJbmRleH0tJHtjb2xJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkoZGF0ZSwgc2VsZWN0ZWREYXRlKSB8fCBpc1NhbWVEYXkoZGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gISFzZWxlY3RlZERhdGUgJiYgISFlbmREYXRlO1xuICAgICAgICAgICAgICBjb25zdCBpblJhbmdlID1cbiAgICAgICAgICAgICAgICByYW5nZSAmJiBpc0RhdGVJblJhbmdlKGRhdGUsIHNlbGVjdGVkRGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgZGlzYWJsZWREYXRlcyk7XG4gICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gaXNUb2RheShkYXRlKTtcbiAgICAgICAgICAgICAgLy8gdGhpcyBpcyBtYWtpbmcgdGhlIHNlbGVjdGVkIGRhdGUgYSBkaWZmZXJuZXQgY29sb3IgYmMgaXQgaXMgZm9jdXNlZCwgbG9vayBpbnRvIGZ1cnRoZXJcbiAgICAgICAgICAgICAgY29uc3QgaXNGb2N1c2VkID1cbiAgICAgICAgICAgICAgICBmb2N1c1RhcmdldCAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgZm9jdXNUYXJnZXQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPERhdGVDZWxsXG4gICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGtleT17ZGF0ZS5nZXRUaW1lKCl9XG4gICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEYXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgaXNJblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICBpc1JhbmdlRW5kPXtyYW5nZSAmJiBpc1NhbWVEYXkoZGF0ZSwgZW5kRGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIGlzUmFuZ2VTdGFydD17cmFuZ2UgJiYgaXNTYW1lRGF5KGRhdGUsIHNlbGVjdGVkRGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICBpc1RvZGF5PXt0b2RheX1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXsoZWwpID0+IHNldEJ1dHRvblJlZihkYXRlLCBlbCBhcyBIVE1MRWxlbWVudCB8IG51bGwpfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17aXNGb2N1c2VkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25EYXRlU2VsZWN0KGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBvbkZvY3VzZWREYXRlQ2hhbmdlPy4oZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGU6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlS2V5RG93bihlLCBkYXRlKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgIDwvRGF0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0RhdGVDZWxsPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgKSl9XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gICk7XG59O1xuIl19 */");
|
|
67
81
|
export const CalendarBody = ({
|
|
68
82
|
visibleDate,
|
|
69
83
|
selectedDate,
|
|
@@ -76,17 +90,19 @@ export const CalendarBody = ({
|
|
|
76
90
|
focusedDate,
|
|
77
91
|
onFocusedDateChange,
|
|
78
92
|
onVisibleDateChange,
|
|
79
|
-
onEscapeKeyPress
|
|
93
|
+
onEscapeKeyPress,
|
|
94
|
+
hasAdjacentMonthRight,
|
|
95
|
+
hasAdjacentMonthLeft
|
|
80
96
|
}) => {
|
|
81
97
|
const year = visibleDate.getFullYear();
|
|
82
98
|
const month = visibleDate.getMonth();
|
|
83
99
|
const weeks = getMonthGrid(year, month, weekStartsOn);
|
|
84
|
-
const weekdayLabels =
|
|
85
|
-
const weekdayFullNames =
|
|
100
|
+
const weekdayLabels = getWeekdayNames('short', locale, weekStartsOn);
|
|
101
|
+
const weekdayFullNames = getWeekdayNames('long', locale, weekStartsOn);
|
|
86
102
|
const buttonRefs = useRef(new Map());
|
|
87
103
|
const datesWithRow = useMemo(() => getDatesWithRow(weeks), [weeks]);
|
|
88
104
|
const focusTarget = focusedDate ?? selectedDate;
|
|
89
|
-
const isToday = useCallback(
|
|
105
|
+
const isToday = useCallback(date => date !== null && isSameDay(date, new Date()), []);
|
|
90
106
|
const focusButton = useCallback(date => {
|
|
91
107
|
if (date === null) return;
|
|
92
108
|
const key = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();
|
|
@@ -95,7 +111,7 @@ export const CalendarBody = ({
|
|
|
95
111
|
useEffect(() => {
|
|
96
112
|
if (focusTarget !== null) focusButton(focusTarget);
|
|
97
113
|
}, [focusTarget, focusButton]);
|
|
98
|
-
const handleKeyDown = useCallback((e, date) => keyHandler(e, date, onFocusedDateChange, datesWithRow, month, year, disabledDates, onDateSelect, onEscapeKeyPress, onVisibleDateChange), [onFocusedDateChange, datesWithRow, month, year, disabledDates, onDateSelect, onEscapeKeyPress, onVisibleDateChange]);
|
|
114
|
+
const handleKeyDown = useCallback((e, date) => keyHandler(e, date, onFocusedDateChange, datesWithRow, month, year, disabledDates, onDateSelect, onEscapeKeyPress, onVisibleDateChange, hasAdjacentMonthRight, hasAdjacentMonthLeft), [onFocusedDateChange, datesWithRow, month, year, disabledDates, onDateSelect, onEscapeKeyPress, onVisibleDateChange, hasAdjacentMonthLeft, hasAdjacentMonthRight]);
|
|
99
115
|
const setButtonRef = useCallback((date, el) => {
|
|
100
116
|
const k = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();
|
|
101
117
|
if (el) buttonRefs.current.set(k, el);else buttonRefs.current.delete(k);
|
|
@@ -120,23 +136,26 @@ export const CalendarBody = ({
|
|
|
120
136
|
/*#__PURE__*/
|
|
121
137
|
// fix this error
|
|
122
138
|
// eslint-disable-next-line react/no-array-index-key, jsx-a11y/control-has-associated-label
|
|
123
|
-
_jsx(
|
|
139
|
+
_jsx(DateCell, {
|
|
124
140
|
role: "gridcell"
|
|
125
141
|
}, `empty-${rowIndex}-${colIndex}`)
|
|
126
142
|
);
|
|
127
143
|
}
|
|
128
144
|
const selected = isSameDay(date, selectedDate) || isSameDay(date, endDate);
|
|
129
|
-
const
|
|
145
|
+
const range = !!selectedDate && !!endDate;
|
|
146
|
+
const inRange = range && isDateInRange(date, selectedDate, endDate);
|
|
130
147
|
const disabled = isDateDisabled(date, disabledDates);
|
|
131
148
|
const today = isToday(date);
|
|
132
149
|
// this is making the selected date a differnet color bc it is focused, look into further
|
|
133
150
|
const isFocused = focusTarget !== null && isSameDay(date, focusTarget);
|
|
134
|
-
return /*#__PURE__*/_jsx(
|
|
151
|
+
return /*#__PURE__*/_jsx(DateCell, {
|
|
135
152
|
"aria-selected": selected,
|
|
136
153
|
role: "gridcell",
|
|
137
154
|
children: /*#__PURE__*/_jsx(DateButton, {
|
|
138
155
|
disabled: disabled,
|
|
139
156
|
isInRange: inRange,
|
|
157
|
+
isRangeEnd: range && isSameDay(date, endDate),
|
|
158
|
+
isRangeStart: range && isSameDay(date, selectedDate),
|
|
140
159
|
isSelected: selected,
|
|
141
160
|
isToday: today,
|
|
142
161
|
ref: el => setButtonRef(date, el),
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { FlexBox } from '../../Box';
|
|
3
3
|
import { TextButton } from '../../Button';
|
|
4
|
-
import {
|
|
4
|
+
import { getRelativeTodayLabel } from './utils/format';
|
|
5
|
+
|
|
5
6
|
// function formatQuickActionLabel(action: QuickAction): string {
|
|
6
7
|
// const { num, timePeriod } = action;
|
|
7
8
|
// const period =
|
|
@@ -22,23 +23,15 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
22
23
|
// : 'years';
|
|
23
24
|
// return `${num} ${period}`;
|
|
24
25
|
// }
|
|
25
|
-
|
|
26
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
26
27
|
export const CalendarFooter = ({
|
|
27
28
|
onClearDate,
|
|
28
29
|
onTodayClick,
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
locale,
|
|
31
|
+
clearText,
|
|
32
|
+
disabled,
|
|
33
|
+
showClearButton
|
|
31
34
|
}) => {
|
|
32
|
-
const handleClearDate = () => {
|
|
33
|
-
onSelectedDateChange(null);
|
|
34
|
-
onClearDate?.();
|
|
35
|
-
};
|
|
36
|
-
const handleTodayClick = () => {
|
|
37
|
-
const today = new Date();
|
|
38
|
-
onSelectedDateChange(today);
|
|
39
|
-
onCurrentMonthYearChange(new Date(today.getFullYear(), today.getMonth(), 1));
|
|
40
|
-
onTodayClick?.();
|
|
41
|
-
};
|
|
42
35
|
// const actions = quickActions.slice(0, 3);
|
|
43
36
|
|
|
44
37
|
return /*#__PURE__*/_jsxs(FlexBox, {
|
|
@@ -46,14 +39,15 @@ export const CalendarFooter = ({
|
|
|
46
39
|
borderTop: 1,
|
|
47
40
|
justifyContent: "space-between",
|
|
48
41
|
p: 12,
|
|
49
|
-
children: [/*#__PURE__*/_jsx(TextButton, {
|
|
50
|
-
|
|
51
|
-
|
|
42
|
+
children: [showClearButton && /*#__PURE__*/_jsx(TextButton, {
|
|
43
|
+
disabled: disabled,
|
|
44
|
+
onClick: () => onClearDate?.(),
|
|
45
|
+
children: clearText
|
|
52
46
|
}), /*#__PURE__*/_jsx(FlexBox, {
|
|
53
47
|
gap: 32,
|
|
54
48
|
children: /*#__PURE__*/_jsx(TextButton, {
|
|
55
|
-
onClick:
|
|
56
|
-
children:
|
|
49
|
+
onClick: () => onTodayClick?.(),
|
|
50
|
+
children: getRelativeTodayLabel(locale)
|
|
57
51
|
})
|
|
58
52
|
})]
|
|
59
53
|
});
|
|
@@ -3,21 +3,25 @@ import * as React from 'react';
|
|
|
3
3
|
import { FlexBox } from '../../Box';
|
|
4
4
|
import { IconButton } from '../../Button';
|
|
5
5
|
import { Text } from '../../Typography';
|
|
6
|
-
import { formatMonthYear } from './utils/format';
|
|
6
|
+
import { formatMonthYear, getRelativeMonthLabels } from './utils/format';
|
|
7
7
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
8
|
export const CalendarHeader = ({
|
|
9
9
|
currentMonthYear,
|
|
10
10
|
onCurrentMonthYearChange,
|
|
11
11
|
secondMonthYear,
|
|
12
|
-
|
|
12
|
+
onLastMonthClick,
|
|
13
13
|
onNextMonthClick,
|
|
14
14
|
locale,
|
|
15
15
|
headingId
|
|
16
16
|
}) => {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
const {
|
|
18
|
+
nextMonth,
|
|
19
|
+
lastMonth
|
|
20
|
+
} = getRelativeMonthLabels(locale);
|
|
21
|
+
const handleLastMonth = () => {
|
|
22
|
+
const lastMonth = new Date(currentMonthYear.getFullYear(), currentMonthYear.getMonth() - 1, 1);
|
|
23
|
+
onCurrentMonthYearChange?.(lastMonth);
|
|
24
|
+
onLastMonthClick?.();
|
|
21
25
|
};
|
|
22
26
|
const handleNextMonth = () => {
|
|
23
27
|
const nextMonth = new Date(currentMonthYear.getFullYear(), currentMonthYear.getMonth() + 1, 1);
|
|
@@ -26,37 +30,56 @@ export const CalendarHeader = ({
|
|
|
26
30
|
};
|
|
27
31
|
return /*#__PURE__*/_jsxs(FlexBox, {
|
|
28
32
|
alignItems: "center",
|
|
29
|
-
justifyContent: "space-between",
|
|
30
33
|
pb: 16,
|
|
34
|
+
width: "100%",
|
|
31
35
|
children: [/*#__PURE__*/_jsx(IconButton, {
|
|
32
|
-
"aria-label":
|
|
36
|
+
"aria-label": lastMonth,
|
|
33
37
|
icon: MiniChevronLeftIcon,
|
|
34
38
|
size: "small",
|
|
35
|
-
tip:
|
|
36
|
-
onClick:
|
|
37
|
-
}), /*#__PURE__*/
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
id: headingId,
|
|
43
|
-
children: formatMonthYear(currentMonthYear, locale)
|
|
44
|
-
}), secondMonthYear && /*#__PURE__*/_jsx(Text, {
|
|
45
|
-
"aria-live": "polite",
|
|
46
|
-
as: "h2",
|
|
47
|
-
display: {
|
|
48
|
-
_: 'none',
|
|
49
|
-
xs: 'initial'
|
|
39
|
+
tip: lastMonth,
|
|
40
|
+
onClick: handleLastMonth
|
|
41
|
+
}), /*#__PURE__*/_jsxs(FlexBox, {
|
|
42
|
+
flexGrow: 1,
|
|
43
|
+
gap: {
|
|
44
|
+
_: 0,
|
|
45
|
+
xs: secondMonthYear ? 32 : 0
|
|
50
46
|
},
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
minWidth: 0,
|
|
48
|
+
children: [/*#__PURE__*/_jsx(FlexBox, {
|
|
49
|
+
flexGrow: 1,
|
|
50
|
+
justifyContent: "center",
|
|
51
|
+
minWidth: 0,
|
|
52
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
53
|
+
"aria-live": "polite",
|
|
54
|
+
as: "h2",
|
|
55
|
+
fontSize: 16,
|
|
56
|
+
fontWeight: "title",
|
|
57
|
+
id: headingId,
|
|
58
|
+
textAlign: "center",
|
|
59
|
+
children: formatMonthYear(currentMonthYear, locale)
|
|
60
|
+
})
|
|
61
|
+
}), secondMonthYear && /*#__PURE__*/_jsx(FlexBox, {
|
|
62
|
+
display: {
|
|
63
|
+
_: 'none',
|
|
64
|
+
xs: 'flex'
|
|
65
|
+
},
|
|
66
|
+
flexGrow: 1,
|
|
67
|
+
justifyContent: "center",
|
|
68
|
+
minWidth: 0,
|
|
69
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
70
|
+
"aria-live": "polite",
|
|
71
|
+
as: "h2",
|
|
72
|
+
fontSize: 16,
|
|
73
|
+
fontWeight: "title",
|
|
74
|
+
textAlign: "center",
|
|
75
|
+
children: formatMonthYear(secondMonthYear, locale)
|
|
76
|
+
})
|
|
77
|
+
})]
|
|
55
78
|
}), /*#__PURE__*/_jsx(IconButton, {
|
|
56
|
-
"aria-label":
|
|
79
|
+
"aria-label": nextMonth,
|
|
57
80
|
icon: MiniChevronRightIcon,
|
|
58
81
|
size: "small",
|
|
59
|
-
tip:
|
|
82
|
+
tip: nextMonth,
|
|
60
83
|
onClick: handleNextMonth
|
|
61
84
|
})]
|
|
62
85
|
});
|
|
@@ -9,7 +9,7 @@ export interface CalendarHeaderProps {
|
|
|
9
9
|
/** Currently displayed second month and year (used for heading and prev/next range) */
|
|
10
10
|
secondMonthYear?: Date;
|
|
11
11
|
/** Called after navigating to previous month; use for click tracking. */
|
|
12
|
-
|
|
12
|
+
onLastMonthClick?: () => void;
|
|
13
13
|
/** Called after navigating to next month; use for click tracking. */
|
|
14
14
|
onNextMonthClick?: () => void;
|
|
15
15
|
/** Locale for month/year formatting (e.g. 'en-US') */
|
|
@@ -42,6 +42,10 @@ export interface CalendarBodyProps {
|
|
|
42
42
|
onVisibleDateChange: (newDate: Date) => void;
|
|
43
43
|
/** Called when the escape key is pressed */
|
|
44
44
|
onEscapeKeyPress?: () => void;
|
|
45
|
+
/** When true (e.g. two-month view), arrow keys move focus to adjacent month without changing visible date. */
|
|
46
|
+
hasAdjacentMonthRight?: boolean;
|
|
47
|
+
/** When true (e.g. two-month view), arrow keys move focus to adjacent month without changing visible date. */
|
|
48
|
+
hasAdjacentMonthLeft?: boolean;
|
|
45
49
|
}
|
|
46
50
|
export interface QuickAction {
|
|
47
51
|
num: number;
|
|
@@ -49,11 +53,12 @@ export interface QuickAction {
|
|
|
49
53
|
onClick: () => void;
|
|
50
54
|
}
|
|
51
55
|
export interface CalendarFooterProps {
|
|
56
|
+
disabled?: boolean;
|
|
57
|
+
showClearButton?: boolean;
|
|
58
|
+
locale?: string;
|
|
59
|
+
clearText: string;
|
|
52
60
|
onClearDate?: () => void;
|
|
53
61
|
onTodayClick?: () => void;
|
|
54
|
-
/** Called when the user navigates to a different month. Pass the new date (e.g. setVisibleDate) so the calendar updates. */
|
|
55
|
-
onSelectedDateChange: (newDate: Date | null) => void;
|
|
56
|
-
onCurrentMonthYearChange: (newDate: Date) => void;
|
|
57
62
|
/** Max 3 quick actions (e.g. "7 days", "1 month") */
|
|
58
63
|
quickActions?: QuickAction[];
|
|
59
64
|
}
|
|
@@ -8,8 +8,8 @@ const DAYS_PER_WEEK = 7;
|
|
|
8
8
|
/**
|
|
9
9
|
* Normalize to start of day in local time for comparison.
|
|
10
10
|
*/
|
|
11
|
-
const
|
|
12
|
-
return new Date(date.getFullYear(), date.getMonth(), date.getDate());
|
|
11
|
+
const normalizeDate = date => {
|
|
12
|
+
return new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();
|
|
13
13
|
};
|
|
14
14
|
|
|
15
15
|
/**
|
|
@@ -37,16 +37,10 @@ export const getMonthGrid = (year, month, weekStartsOn = 0) => {
|
|
|
37
37
|
const daysInMonth = last.getDate();
|
|
38
38
|
const weeks = [];
|
|
39
39
|
let currentWeek = [];
|
|
40
|
-
|
|
41
|
-
// Pad start of first week with nulls
|
|
42
|
-
// eslint-disable-next-line no-plusplus
|
|
43
|
-
for (let i = 0; i < firstDayOfWeek; i++) {
|
|
40
|
+
for (let i = 0; i < firstDayOfWeek; i += 1) {
|
|
44
41
|
currentWeek.push(null);
|
|
45
42
|
}
|
|
46
|
-
|
|
47
|
-
// fix these
|
|
48
|
-
// eslint-disable-next-line no-plusplus
|
|
49
|
-
for (let day = 1; day <= daysInMonth; day++) {
|
|
43
|
+
for (let day = 1; day <= daysInMonth; day += 1) {
|
|
50
44
|
currentWeek.push(new Date(year, month, day));
|
|
51
45
|
if (currentWeek.length === DAYS_PER_WEEK) {
|
|
52
46
|
weeks.push(currentWeek);
|
|
@@ -69,7 +63,7 @@ export const getMonthGrid = (year, month, weekStartsOn = 0) => {
|
|
|
69
63
|
*/
|
|
70
64
|
export const isSameDay = (a, b) => {
|
|
71
65
|
if (a === null || b === null) return false;
|
|
72
|
-
return
|
|
66
|
+
return normalizeDate(a) === normalizeDate(b);
|
|
73
67
|
};
|
|
74
68
|
|
|
75
69
|
/**
|
|
@@ -77,9 +71,9 @@ export const isSameDay = (a, b) => {
|
|
|
77
71
|
*/
|
|
78
72
|
export const isDateInRange = (date, start, end) => {
|
|
79
73
|
if (start === null) return false;
|
|
80
|
-
const normalizedDateTime =
|
|
81
|
-
const normalizedStartDateTime =
|
|
82
|
-
const normalizedEndDateTime = end !== null ?
|
|
74
|
+
const normalizedDateTime = normalizeDate(date);
|
|
75
|
+
const normalizedStartDateTime = normalizeDate(start);
|
|
76
|
+
const normalizedEndDateTime = end !== null ? normalizeDate(end) : normalizedStartDateTime;
|
|
83
77
|
const low = Math.min(normalizedStartDateTime, normalizedEndDateTime);
|
|
84
78
|
const high = Math.max(normalizedStartDateTime, normalizedEndDateTime);
|
|
85
79
|
return normalizedDateTime > low && normalizedDateTime < high;
|
|
@@ -1,20 +1,38 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Date formatting for the calendar using Intl.DateTimeFormat.
|
|
3
3
|
*/
|
|
4
|
+
/**
|
|
5
|
+
* Capitalize the first character of a string using the locale; rest unchanged (e.g. "next month" → "Next month").
|
|
6
|
+
*/
|
|
7
|
+
export declare const capitalizeFirst: (str: string, locale?: string) => string;
|
|
4
8
|
/**
|
|
5
9
|
* Format month and year for the calendar header (e.g. "February 2026").
|
|
6
10
|
*/
|
|
7
11
|
export declare const formatMonthYear: (date: Date, locale?: string) => string;
|
|
8
12
|
/**
|
|
9
|
-
* Get
|
|
13
|
+
* Get weekday names for column headers or abbr attributes.
|
|
10
14
|
* Order depends on weekStartsOn: 0 = Sunday first, 1 = Monday first.
|
|
15
|
+
* @param format - 'short' for abbreviated (e.g. "Su", "Mo"), 'long' for full (e.g. "Sunday", "Monday")
|
|
16
|
+
*/
|
|
17
|
+
export declare const getWeekdayNames: (format: 'short' | 'long', locale?: string, weekStartsOn?: 0 | 1) => string[];
|
|
18
|
+
/**
|
|
19
|
+
* Get localized "next month" and "previous month" labels for calendar nav.
|
|
20
|
+
* Uses Intl.RelativeTimeFormat with numeric: "auto" (e.g. "next month", "last month").
|
|
21
|
+
*/
|
|
22
|
+
export declare const getRelativeMonthLabels: (locale?: string) => {
|
|
23
|
+
nextMonth: string;
|
|
24
|
+
lastMonth: string;
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* Get localized "today" label (e.g. "today").
|
|
11
28
|
*/
|
|
12
|
-
export declare const
|
|
29
|
+
export declare const getRelativeTodayLabel: (locale?: string) => string;
|
|
13
30
|
/**
|
|
14
|
-
* Get
|
|
15
|
-
*
|
|
31
|
+
* Get the locale's short date format pattern (e.g. "MM/DD/YYYY" for en-US,
|
|
32
|
+
* "DD/MM/YYYY" for en-GB). Uses Intl.DateTimeFormat formatToParts to infer
|
|
33
|
+
* order and separators. Useful for parsing or building locale-aware inputs.
|
|
16
34
|
*/
|
|
17
|
-
export declare const
|
|
35
|
+
export declare const getDateFormatPattern: (locale?: string) => string;
|
|
18
36
|
/**
|
|
19
37
|
* Format a date for display in the date picker input (e.g. "2/15/2026").
|
|
20
38
|
*/
|
|
@@ -25,15 +43,3 @@ export declare const formatDateForInput: (date: Date, locale?: string) => string
|
|
|
25
43
|
* Partial input like "1" or "2/15" returns null even though Date("1") would parse.
|
|
26
44
|
*/
|
|
27
45
|
export declare const parseDateFromInput: (value: string, locale?: string) => Date | null;
|
|
28
|
-
/**
|
|
29
|
-
* Format a date range for the input (e.g. "2/15/2026 – 2/20/2026").
|
|
30
|
-
*/
|
|
31
|
-
export declare const formatDateRangeForInput: (startDate: Date | null, endDate: Date | null, locale?: string) => string;
|
|
32
|
-
/**
|
|
33
|
-
* Parse a range string (e.g. "2/15/2026 – 2/20/2026") into { startDate, endDate }.
|
|
34
|
-
* Returns null if invalid. Single date is allowed and yields startDate = endDate.
|
|
35
|
-
*/
|
|
36
|
-
export declare const parseDateRangeFromInput: (value: string, locale?: string) => {
|
|
37
|
-
startDate: Date;
|
|
38
|
-
endDate: Date;
|
|
39
|
-
} | null;
|