@codecademy/gamut 68.1.3-alpha.a2160b.0 → 68.1.3-alpha.b88d4a.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/CalendarBody.js +28 -13
- package/dist/DatePicker/Calendar/CalendarFooter.js +2 -1
- package/dist/DatePicker/Calendar/CalendarHeader.js +44 -25
- package/dist/DatePicker/Calendar/types.d.ts +8 -8
- package/dist/DatePicker/Calendar/utils/dateGrid.d.ts +5 -0
- package/dist/DatePicker/Calendar/utils/dateGrid.js +16 -8
- package/dist/DatePicker/Calendar/utils/format.d.ts +0 -12
- package/dist/DatePicker/Calendar/utils/format.js +0 -42
- package/dist/DatePicker/Calendar/utils/keyHandler.d.ts +1 -10
- package/dist/DatePicker/Calendar/utils/keyHandler.js +10 -24
- package/dist/DatePicker/DatePicker.js +5 -4
- package/dist/DatePicker/DatePickerCalendar.js +14 -14
- package/dist/DatePicker/DatePickerContext.d.ts +1 -1
- package/dist/DatePicker/DatePickerContext.js +2 -2
- package/package.json +2 -2
|
@@ -3,19 +3,25 @@ import { css, states } from '@codecademy/gamut-styles';
|
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
4
4
|
import * as React from 'react';
|
|
5
5
|
import { TextButton } from '../../Button';
|
|
6
|
-
import { getMonthGrid, isDateDisabled, isDateInRange, isSameDay } from './utils/dateGrid';
|
|
6
|
+
import { getDatesWithRow, getMonthGrid, isDateDisabled, isDateInRange, isSameDay } from './utils/dateGrid';
|
|
7
7
|
import { getWeekdayNames } from './utils/format';
|
|
8
|
-
import {
|
|
8
|
+
import { 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRlUGlja2VyL0NhbGVuZGFyL0NhbGVuZGFyQm9keS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBaUJvQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0ZVBpY2tlci9DYWxlbmRhci9DYWxlbmRhckJvZHkudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBzdGF0ZXMgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBUZXh0QnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQm9keVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBnZXREYXRlc1dpdGhSb3csXG4gIGdldE1vbnRoR3JpZCxcbiAgaXNEYXRlRGlzYWJsZWQsXG4gIGlzRGF0ZUluUmFuZ2UsXG4gIGlzU2FtZURheSxcbn0gZnJvbSAnLi91dGlscy9kYXRlR3JpZCc7XG5pbXBvcnQgeyBnZXRXZWVrZGF5TmFtZXMgfSBmcm9tICcuL3V0aWxzL2Zvcm1hdCc7XG5pbXBvcnQgeyBrZXlIYW5kbGVyIH0gZnJvbSAnLi91dGlscy9rZXlIYW5kbGVyJztcblxuY29uc3QgVGFibGVIZWFkZXIgPSBzdHlsZWQudGgoXG4gIGNzcyh7XG4gICAgZm9udFNpemU6IDE0LFxuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICBjb2xvcjogJ3RleHQtZGlzYWJsZWQnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5jb25zdCBEYXRlQ2VsbCA9IHN0eWxlZC50ZChcbiAgY3NzKHtcbiAgICBwYWRkaW5nOiAwLFxuICB9KVxuKTtcblxuY29uc3QgRGF0ZUJ1dHRvbiA9IHN0eWxlZChUZXh0QnV0dG9uKShcbiAgc3RhdGVzKHtcbiAgICBpc1RvZGF5OiB7XG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgYm90dG9tOiA0LFxuICAgICAgICB3aWR0aDogNCxcbiAgICAgICAgaGVpZ2h0OiA0LFxuICAgICAgICBib3JkZXJSYWRpdXM6ICdmdWxsJyxcbiAgICAgICAgYmc6ICdoeXBlcicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaXNTZWxlY3RlZDoge1xuICAgICAgYmc6ICd0ZXh0JyxcbiAgICAgIGNvbG9yOiAnYmFja2dyb3VuZCcsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpc1JhbmdlU3RhcnQ6IHtcbiAgICAgIGJvcmRlclJhZGl1c1JpZ2h0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc1JhbmdlRW5kOiB7XG4gICAgICBib3JkZXJSYWRpdXNMZWZ0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc0luUmFuZ2U6IHtcbiAgICAgIGJnOiAndGV4dC1kaXNhYmxlZCcsXG4gICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbm9uZScsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29sb3I6ICd0ZXh0LWRpc2FibGVkJyxcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbGluZS10aHJvdWdoJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICB0ZXh0RGVjb3JhdGlvbjogJ2xpbmUtdGhyb3VnaCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pLFxuICBjc3Moe1xuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICB3aWR0aDogJzMycHgnLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IENhbGVuZGFyQm9keTogUmVhY3QuRkM8Q2FsZW5kYXJCb2R5UHJvcHM+ID0gKHtcbiAgZGlzcGxheURhdGUsXG4gIHNlbGVjdGVkRGF0ZSxcbiAgZW5kRGF0ZSA9IG51bGwsXG4gIGRpc2FibGVkRGF0ZXMgPSBbXSxcbiAgb25EYXRlU2VsZWN0LFxuICBsb2NhbGUsXG4gIHdlZWtTdGFydHNPbiA9IDAsXG4gIGxhYmVsbGVkQnlJZCxcbiAgZm9jdXNlZERhdGUsXG4gIG9uRm9jdXNlZERhdGVDaGFuZ2UsXG4gIG9uRGlzcGxheURhdGVDaGFuZ2UsXG4gIG9uRXNjYXBlS2V5UHJlc3MsXG4gIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgaGFzQWRqYWNlbnRNb250aExlZnQsXG59KSA9PiB7XG4gIGNvbnN0IHllYXIgPSBkaXNwbGF5RGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IGRpc3BsYXlEYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IHdlZWtzID0gZ2V0TW9udGhHcmlkKHllYXIsIG1vbnRoLCB3ZWVrU3RhcnRzT24pO1xuICBjb25zdCB3ZWVrZGF5TGFiZWxzID0gZ2V0V2Vla2RheU5hbWVzKCdzaG9ydCcsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3Qgd2Vla2RheUZ1bGxOYW1lcyA9IGdldFdlZWtkYXlOYW1lcygnbG9uZycsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3QgYnV0dG9uUmVmcyA9IHVzZVJlZjxNYXA8bnVtYmVyLCBIVE1MRWxlbWVudD4+KG5ldyBNYXAoKSk7XG5cbiAgY29uc3QgZGF0ZXNXaXRoUm93ID0gdXNlTWVtbygoKSA9PiBnZXREYXRlc1dpdGhSb3cod2Vla3MpLCBbd2Vla3NdKTtcbiAgY29uc3QgZm9jdXNUYXJnZXQgPSBmb2N1c2VkRGF0ZSA/PyBzZWxlY3RlZERhdGU7XG5cbiAgY29uc3QgaXNUb2RheSA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRlOiBEYXRlIHwgbnVsbCkgPT4gZGF0ZSAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgbmV3IERhdGUoKSksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBmb2N1c0J1dHRvbiA9IHVzZUNhbGxiYWNrKChkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgIGlmIChkYXRlID09PSBudWxsKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gbmV3IERhdGUoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICBkYXRlLmdldERhdGUoKVxuICAgICkuZ2V0VGltZSgpO1xuICAgIGJ1dHRvblJlZnMuY3VycmVudC5nZXQoa2V5KT8uZm9jdXMoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvY3VzVGFyZ2V0ICE9PSBudWxsKSBmb2N1c0J1dHRvbihmb2N1c1RhcmdldCk7XG4gIH0sIFtmb2N1c1RhcmdldCwgZm9jdXNCdXR0b25dKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LktleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpID0+XG4gICAgICBrZXlIYW5kbGVyKFxuICAgICAgICBlLFxuICAgICAgICBkYXRlLFxuICAgICAgICBvbkZvY3VzZWREYXRlQ2hhbmdlLFxuICAgICAgICBkYXRlc1dpdGhSb3csXG4gICAgICAgIG1vbnRoLFxuICAgICAgICB5ZWFyLFxuICAgICAgICBkaXNhYmxlZERhdGVzLFxuICAgICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICAgIG9uRXNjYXBlS2V5UHJlc3MsXG4gICAgICAgIG9uRGlzcGxheURhdGVDaGFuZ2UsXG4gICAgICAgIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgICAgICAgaGFzQWRqYWNlbnRNb250aExlZnRcbiAgICAgICksXG4gICAgW1xuICAgICAgb25Gb2N1c2VkRGF0ZUNoYW5nZSxcbiAgICAgIGRhdGVzV2l0aFJvdyxcbiAgICAgIG1vbnRoLFxuICAgICAgeWVhcixcbiAgICAgIGRpc2FibGVkRGF0ZXMsXG4gICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICBvbkVzY2FwZUtleVByZXNzLFxuICAgICAgb25EaXNwbGF5RGF0ZUNoYW5nZSxcbiAgICAgIGhhc0FkamFjZW50TW9udGhMZWZ0LFxuICAgICAgaGFzQWRqYWNlbnRNb250aFJpZ2h0LFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBzZXRCdXR0b25SZWYgPSB1c2VDYWxsYmFjaygoZGF0ZTogRGF0ZSwgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IGsgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpXG4gICAgKS5nZXRUaW1lKCk7XG4gICAgaWYgKGVsKSBidXR0b25SZWZzLmN1cnJlbnQuc2V0KGssIGVsKTtcbiAgICBlbHNlIGJ1dHRvblJlZnMuY3VycmVudC5kZWxldGUoayk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDx0YWJsZSBhcmlhLWxhYmVsbGVkYnk9e2xhYmVsbGVkQnlJZH0gcm9sZT1cImdyaWRcIiB3aWR0aD1cIjEwMCVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIHt3ZWVrZGF5TGFiZWxzLm1hcCgobGFiZWwsIGkpID0+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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRlUGlja2VyL0NhbGVuZGFyL0NhbGVuZGFyQm9keS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBMEJpQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0ZVBpY2tlci9DYWxlbmRhci9DYWxlbmRhckJvZHkudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBzdGF0ZXMgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBUZXh0QnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQm9keVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBnZXREYXRlc1dpdGhSb3csXG4gIGdldE1vbnRoR3JpZCxcbiAgaXNEYXRlRGlzYWJsZWQsXG4gIGlzRGF0ZUluUmFuZ2UsXG4gIGlzU2FtZURheSxcbn0gZnJvbSAnLi91dGlscy9kYXRlR3JpZCc7XG5pbXBvcnQgeyBnZXRXZWVrZGF5TmFtZXMgfSBmcm9tICcuL3V0aWxzL2Zvcm1hdCc7XG5pbXBvcnQgeyBrZXlIYW5kbGVyIH0gZnJvbSAnLi91dGlscy9rZXlIYW5kbGVyJztcblxuY29uc3QgVGFibGVIZWFkZXIgPSBzdHlsZWQudGgoXG4gIGNzcyh7XG4gICAgZm9udFNpemU6IDE0LFxuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICBjb2xvcjogJ3RleHQtZGlzYWJsZWQnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5jb25zdCBEYXRlQ2VsbCA9IHN0eWxlZC50ZChcbiAgY3NzKHtcbiAgICBwYWRkaW5nOiAwLFxuICB9KVxuKTtcblxuY29uc3QgRGF0ZUJ1dHRvbiA9IHN0eWxlZChUZXh0QnV0dG9uKShcbiAgc3RhdGVzKHtcbiAgICBpc1RvZGF5OiB7XG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgYm90dG9tOiA0LFxuICAgICAgICB3aWR0aDogNCxcbiAgICAgICAgaGVpZ2h0OiA0LFxuICAgICAgICBib3JkZXJSYWRpdXM6ICdmdWxsJyxcbiAgICAgICAgYmc6ICdoeXBlcicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaXNTZWxlY3RlZDoge1xuICAgICAgYmc6ICd0ZXh0JyxcbiAgICAgIGNvbG9yOiAnYmFja2dyb3VuZCcsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpc1JhbmdlU3RhcnQ6IHtcbiAgICAgIGJvcmRlclJhZGl1c1JpZ2h0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc1JhbmdlRW5kOiB7XG4gICAgICBib3JkZXJSYWRpdXNMZWZ0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc0luUmFuZ2U6IHtcbiAgICAgIGJnOiAndGV4dC1kaXNhYmxlZCcsXG4gICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbm9uZScsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29sb3I6ICd0ZXh0LWRpc2FibGVkJyxcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbGluZS10aHJvdWdoJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICB0ZXh0RGVjb3JhdGlvbjogJ2xpbmUtdGhyb3VnaCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pLFxuICBjc3Moe1xuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICB3aWR0aDogJzMycHgnLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IENhbGVuZGFyQm9keTogUmVhY3QuRkM8Q2FsZW5kYXJCb2R5UHJvcHM+ID0gKHtcbiAgZGlzcGxheURhdGUsXG4gIHNlbGVjdGVkRGF0ZSxcbiAgZW5kRGF0ZSA9IG51bGwsXG4gIGRpc2FibGVkRGF0ZXMgPSBbXSxcbiAgb25EYXRlU2VsZWN0LFxuICBsb2NhbGUsXG4gIHdlZWtTdGFydHNPbiA9IDAsXG4gIGxhYmVsbGVkQnlJZCxcbiAgZm9jdXNlZERhdGUsXG4gIG9uRm9jdXNlZERhdGVDaGFuZ2UsXG4gIG9uRGlzcGxheURhdGVDaGFuZ2UsXG4gIG9uRXNjYXBlS2V5UHJlc3MsXG4gIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgaGFzQWRqYWNlbnRNb250aExlZnQsXG59KSA9PiB7XG4gIGNvbnN0IHllYXIgPSBkaXNwbGF5RGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IGRpc3BsYXlEYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IHdlZWtzID0gZ2V0TW9udGhHcmlkKHllYXIsIG1vbnRoLCB3ZWVrU3RhcnRzT24pO1xuICBjb25zdCB3ZWVrZGF5TGFiZWxzID0gZ2V0V2Vla2RheU5hbWVzKCdzaG9ydCcsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3Qgd2Vla2RheUZ1bGxOYW1lcyA9IGdldFdlZWtkYXlOYW1lcygnbG9uZycsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3QgYnV0dG9uUmVmcyA9IHVzZVJlZjxNYXA8bnVtYmVyLCBIVE1MRWxlbWVudD4+KG5ldyBNYXAoKSk7XG5cbiAgY29uc3QgZGF0ZXNXaXRoUm93ID0gdXNlTWVtbygoKSA9PiBnZXREYXRlc1dpdGhSb3cod2Vla3MpLCBbd2Vla3NdKTtcbiAgY29uc3QgZm9jdXNUYXJnZXQgPSBmb2N1c2VkRGF0ZSA/PyBzZWxlY3RlZERhdGU7XG5cbiAgY29uc3QgaXNUb2RheSA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRlOiBEYXRlIHwgbnVsbCkgPT4gZGF0ZSAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgbmV3IERhdGUoKSksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBmb2N1c0J1dHRvbiA9IHVzZUNhbGxiYWNrKChkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgIGlmIChkYXRlID09PSBudWxsKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gbmV3IERhdGUoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICBkYXRlLmdldERhdGUoKVxuICAgICkuZ2V0VGltZSgpO1xuICAgIGJ1dHRvblJlZnMuY3VycmVudC5nZXQoa2V5KT8uZm9jdXMoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvY3VzVGFyZ2V0ICE9PSBudWxsKSBmb2N1c0J1dHRvbihmb2N1c1RhcmdldCk7XG4gIH0sIFtmb2N1c1RhcmdldCwgZm9jdXNCdXR0b25dKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LktleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpID0+XG4gICAgICBrZXlIYW5kbGVyKFxuICAgICAgICBlLFxuICAgICAgICBkYXRlLFxuICAgICAgICBvbkZvY3VzZWREYXRlQ2hhbmdlLFxuICAgICAgICBkYXRlc1dpdGhSb3csXG4gICAgICAgIG1vbnRoLFxuICAgICAgICB5ZWFyLFxuICAgICAgICBkaXNhYmxlZERhdGVzLFxuICAgICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICAgIG9uRXNjYXBlS2V5UHJlc3MsXG4gICAgICAgIG9uRGlzcGxheURhdGVDaGFuZ2UsXG4gICAgICAgIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgICAgICAgaGFzQWRqYWNlbnRNb250aExlZnRcbiAgICAgICksXG4gICAgW1xuICAgICAgb25Gb2N1c2VkRGF0ZUNoYW5nZSxcbiAgICAgIGRhdGVzV2l0aFJvdyxcbiAgICAgIG1vbnRoLFxuICAgICAgeWVhcixcbiAgICAgIGRpc2FibGVkRGF0ZXMsXG4gICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICBvbkVzY2FwZUtleVByZXNzLFxuICAgICAgb25EaXNwbGF5RGF0ZUNoYW5nZSxcbiAgICAgIGhhc0FkamFjZW50TW9udGhMZWZ0LFxuICAgICAgaGFzQWRqYWNlbnRNb250aFJpZ2h0LFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBzZXRCdXR0b25SZWYgPSB1c2VDYWxsYmFjaygoZGF0ZTogRGF0ZSwgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IGsgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpXG4gICAgKS5nZXRUaW1lKCk7XG4gICAgaWYgKGVsKSBidXR0b25SZWZzLmN1cnJlbnQuc2V0KGssIGVsKTtcbiAgICBlbHNlIGJ1dHRvblJlZnMuY3VycmVudC5kZWxldGUoayk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDx0YWJsZSBhcmlhLWxhYmVsbGVkYnk9e2xhYmVsbGVkQnlJZH0gcm9sZT1cImdyaWRcIiB3aWR0aD1cIjEwMCVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIHt3ZWVrZGF5TGFiZWxzLm1hcCgobGFiZWwsIGkpID0+IChcbiAgICAgICAgICAgIDxUYWJsZUhlYWRlciBhYmJyPXt3ZWVrZGF5RnVsbE5hbWVzW2ldfSBrZXk9e2xhYmVsfSBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAge3dlZWtzLm1hcCgod2Vlaywgcm93SW5kZXgpID0+IChcbiAgICAgICAgICA8dHIga2V5PXt3ZWVrLmpvaW4oJy0nKX0+XG4gICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGUsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChkYXRlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIC8vIGZpeCB0aGlzIGVycm9yXG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5LCBqc3gtYTExeS9jb250cm9sLWhhcy1hc3NvY2lhdGVkLWxhYmVsXG4gICAgICAgICAgICAgICAgICA8RGF0ZUNlbGxcbiAgICAgICAgICAgICAgICAgICAga2V5PXtgZW1wdHktJHtyb3dJbmRleH0tJHtjb2xJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkoZGF0ZSwgc2VsZWN0ZWREYXRlKSB8fCBpc1NhbWVEYXkoZGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gISFzZWxlY3RlZERhdGUgJiYgISFlbmREYXRlO1xuICAgICAgICAgICAgICBjb25zdCBpblJhbmdlID1cbiAgICAgICAgICAgICAgICByYW5nZSAmJiBpc0RhdGVJblJhbmdlKGRhdGUsIHNlbGVjdGVkRGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgZGlzYWJsZWREYXRlcyk7XG4gICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gaXNUb2RheShkYXRlKTtcbiAgICAgICAgICAgICAgLy8gdGhpcyBpcyBtYWtpbmcgdGhlIHNlbGVjdGVkIGRhdGUgYSBkaWZmZXJuZXQgY29sb3IgYmMgaXQgaXMgZm9jdXNlZCwgbG9vayBpbnRvIGZ1cnRoZXJcbiAgICAgICAgICAgICAgY29uc3QgaXNGb2N1c2VkID1cbiAgICAgICAgICAgICAgICBmb2N1c1RhcmdldCAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgZm9jdXNUYXJnZXQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPERhdGVDZWxsXG4gICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGtleT17ZGF0ZS5nZXRUaW1lKCl9XG4gICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEYXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgaXNJblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICBpc1JhbmdlRW5kPXtyYW5nZSAmJiBpc1NhbWVEYXkoZGF0ZSwgZW5kRGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIGlzUmFuZ2VTdGFydD17cmFuZ2UgJiYgaXNTYW1lRGF5KGRhdGUsIHNlbGVjdGVkRGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICBpc1RvZGF5PXt0b2RheX1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXsoZWwpID0+IHNldEJ1dHRvblJlZihkYXRlLCBlbCBhcyBIVE1MRWxlbWVudCB8IG51bGwpfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17aXNGb2N1c2VkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25EYXRlU2VsZWN0KGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBvbkZvY3VzZWREYXRlQ2hhbmdlPy4oZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGU6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlS2V5RG93bihlLCBkYXRlKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgIDwvRGF0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0RhdGVDZWxsPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgKSl9XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gICk7XG59O1xuIl19 */");
|
|
19
25
|
const DateButton = /*#__PURE__*/_styled(TextButton, {
|
|
20
26
|
target: "e12sl4cx0",
|
|
21
27
|
label: "DateButton"
|
|
@@ -43,6 +49,12 @@ const DateButton = /*#__PURE__*/_styled(TextButton, {
|
|
|
43
49
|
bg: 'background'
|
|
44
50
|
}
|
|
45
51
|
},
|
|
52
|
+
isRangeStart: {
|
|
53
|
+
borderRadiusRight: 'none'
|
|
54
|
+
},
|
|
55
|
+
isRangeEnd: {
|
|
56
|
+
borderRadiusLeft: 'none'
|
|
57
|
+
},
|
|
46
58
|
isInRange: {
|
|
47
59
|
bg: 'text-disabled',
|
|
48
60
|
color: 'background',
|
|
@@ -65,9 +77,9 @@ const DateButton = /*#__PURE__*/_styled(TextButton, {
|
|
|
65
77
|
}), css({
|
|
66
78
|
fontWeight: 'base',
|
|
67
79
|
width: '32px'
|
|
68
|
-
}), 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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9EYXRlUGlja2VyL0NhbGVuZGFyL0NhbGVuZGFyQm9keS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0NtQiIsImZpbGUiOiIuLi8uLi8uLi9zcmMvRGF0ZVBpY2tlci9DYWxlbmRhci9DYWxlbmRhckJvZHkudHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzLCBzdGF0ZXMgfSBmcm9tICdAY29kZWNhZGVteS9nYW11dC1zdHlsZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuXG5pbXBvcnQgeyBUZXh0QnV0dG9uIH0gZnJvbSAnLi4vLi4vQnV0dG9uJztcbmltcG9ydCB7IENhbGVuZGFyQm9keVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge1xuICBnZXREYXRlc1dpdGhSb3csXG4gIGdldE1vbnRoR3JpZCxcbiAgaXNEYXRlRGlzYWJsZWQsXG4gIGlzRGF0ZUluUmFuZ2UsXG4gIGlzU2FtZURheSxcbn0gZnJvbSAnLi91dGlscy9kYXRlR3JpZCc7XG5pbXBvcnQgeyBnZXRXZWVrZGF5TmFtZXMgfSBmcm9tICcuL3V0aWxzL2Zvcm1hdCc7XG5pbXBvcnQgeyBrZXlIYW5kbGVyIH0gZnJvbSAnLi91dGlscy9rZXlIYW5kbGVyJztcblxuY29uc3QgVGFibGVIZWFkZXIgPSBzdHlsZWQudGgoXG4gIGNzcyh7XG4gICAgZm9udFNpemU6IDE0LFxuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICBjb2xvcjogJ3RleHQtZGlzYWJsZWQnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gIH0pXG4pO1xuXG5jb25zdCBEYXRlQ2VsbCA9IHN0eWxlZC50ZChcbiAgY3NzKHtcbiAgICBwYWRkaW5nOiAwLFxuICB9KVxuKTtcblxuY29uc3QgRGF0ZUJ1dHRvbiA9IHN0eWxlZChUZXh0QnV0dG9uKShcbiAgc3RhdGVzKHtcbiAgICBpc1RvZGF5OiB7XG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgYm90dG9tOiA0LFxuICAgICAgICB3aWR0aDogNCxcbiAgICAgICAgaGVpZ2h0OiA0LFxuICAgICAgICBib3JkZXJSYWRpdXM6ICdmdWxsJyxcbiAgICAgICAgYmc6ICdoeXBlcicsXG4gICAgICB9LFxuICAgIH0sXG4gICAgaXNTZWxlY3RlZDoge1xuICAgICAgYmc6ICd0ZXh0JyxcbiAgICAgIGNvbG9yOiAnYmFja2dyb3VuZCcsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpc1JhbmdlU3RhcnQ6IHtcbiAgICAgIGJvcmRlclJhZGl1c1JpZ2h0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc1JhbmdlRW5kOiB7XG4gICAgICBib3JkZXJSYWRpdXNMZWZ0OiAnbm9uZScsXG4gICAgfSxcbiAgICBpc0luUmFuZ2U6IHtcbiAgICAgIGJnOiAndGV4dC1kaXNhYmxlZCcsXG4gICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnbm9uZScsXG4gICAgICAnJjpob3ZlciwgJjpmb2N1cyc6IHtcbiAgICAgICAgYmc6ICdzZWNvbmRhcnktaG92ZXInLFxuICAgICAgICBjb2xvcjogJ2JhY2tncm91bmQnLFxuICAgICAgfSxcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmc6ICdiYWNrZ3JvdW5kJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkaXNhYmxlZDoge1xuICAgICAgY29sb3I6ICd0ZXh0LWRpc2FibGVkJyxcbiAgICAgIHRleHREZWNvcmF0aW9uOiAnbGluZS10aHJvdWdoJyxcbiAgICAgICcmOmhvdmVyJzoge1xuICAgICAgICB0ZXh0RGVjb3JhdGlvbjogJ2xpbmUtdGhyb3VnaCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0pLFxuICBjc3Moe1xuICAgIGZvbnRXZWlnaHQ6ICdiYXNlJyxcbiAgICB3aWR0aDogJzMycHgnLFxuICB9KVxuKTtcblxuZXhwb3J0IGNvbnN0IENhbGVuZGFyQm9keTogUmVhY3QuRkM8Q2FsZW5kYXJCb2R5UHJvcHM+ID0gKHtcbiAgZGlzcGxheURhdGUsXG4gIHNlbGVjdGVkRGF0ZSxcbiAgZW5kRGF0ZSA9IG51bGwsXG4gIGRpc2FibGVkRGF0ZXMgPSBbXSxcbiAgb25EYXRlU2VsZWN0LFxuICBsb2NhbGUsXG4gIHdlZWtTdGFydHNPbiA9IDAsXG4gIGxhYmVsbGVkQnlJZCxcbiAgZm9jdXNlZERhdGUsXG4gIG9uRm9jdXNlZERhdGVDaGFuZ2UsXG4gIG9uRGlzcGxheURhdGVDaGFuZ2UsXG4gIG9uRXNjYXBlS2V5UHJlc3MsXG4gIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgaGFzQWRqYWNlbnRNb250aExlZnQsXG59KSA9PiB7XG4gIGNvbnN0IHllYXIgPSBkaXNwbGF5RGF0ZS5nZXRGdWxsWWVhcigpO1xuICBjb25zdCBtb250aCA9IGRpc3BsYXlEYXRlLmdldE1vbnRoKCk7XG4gIGNvbnN0IHdlZWtzID0gZ2V0TW9udGhHcmlkKHllYXIsIG1vbnRoLCB3ZWVrU3RhcnRzT24pO1xuICBjb25zdCB3ZWVrZGF5TGFiZWxzID0gZ2V0V2Vla2RheU5hbWVzKCdzaG9ydCcsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3Qgd2Vla2RheUZ1bGxOYW1lcyA9IGdldFdlZWtkYXlOYW1lcygnbG9uZycsIGxvY2FsZSwgd2Vla1N0YXJ0c09uKTtcbiAgY29uc3QgYnV0dG9uUmVmcyA9IHVzZVJlZjxNYXA8bnVtYmVyLCBIVE1MRWxlbWVudD4+KG5ldyBNYXAoKSk7XG5cbiAgY29uc3QgZGF0ZXNXaXRoUm93ID0gdXNlTWVtbygoKSA9PiBnZXREYXRlc1dpdGhSb3cod2Vla3MpLCBbd2Vla3NdKTtcbiAgY29uc3QgZm9jdXNUYXJnZXQgPSBmb2N1c2VkRGF0ZSA/PyBzZWxlY3RlZERhdGU7XG5cbiAgY29uc3QgaXNUb2RheSA9IHVzZUNhbGxiYWNrKFxuICAgIChkYXRlOiBEYXRlIHwgbnVsbCkgPT4gZGF0ZSAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgbmV3IERhdGUoKSksXG4gICAgW11cbiAgKTtcblxuICBjb25zdCBmb2N1c0J1dHRvbiA9IHVzZUNhbGxiYWNrKChkYXRlOiBEYXRlIHwgbnVsbCkgPT4ge1xuICAgIGlmIChkYXRlID09PSBudWxsKSByZXR1cm47XG4gICAgY29uc3Qga2V5ID0gbmV3IERhdGUoXG4gICAgICBkYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgICBkYXRlLmdldE1vbnRoKCksXG4gICAgICBkYXRlLmdldERhdGUoKVxuICAgICkuZ2V0VGltZSgpO1xuICAgIGJ1dHRvblJlZnMuY3VycmVudC5nZXQoa2V5KT8uZm9jdXMoKTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvY3VzVGFyZ2V0ICE9PSBudWxsKSBmb2N1c0J1dHRvbihmb2N1c1RhcmdldCk7XG4gIH0sIFtmb2N1c1RhcmdldCwgZm9jdXNCdXR0b25dKTtcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LktleWJvYXJkRXZlbnQsIGRhdGU6IERhdGUpID0+XG4gICAgICBrZXlIYW5kbGVyKFxuICAgICAgICBlLFxuICAgICAgICBkYXRlLFxuICAgICAgICBvbkZvY3VzZWREYXRlQ2hhbmdlLFxuICAgICAgICBkYXRlc1dpdGhSb3csXG4gICAgICAgIG1vbnRoLFxuICAgICAgICB5ZWFyLFxuICAgICAgICBkaXNhYmxlZERhdGVzLFxuICAgICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICAgIG9uRXNjYXBlS2V5UHJlc3MsXG4gICAgICAgIG9uRGlzcGxheURhdGVDaGFuZ2UsXG4gICAgICAgIGhhc0FkamFjZW50TW9udGhSaWdodCxcbiAgICAgICAgaGFzQWRqYWNlbnRNb250aExlZnRcbiAgICAgICksXG4gICAgW1xuICAgICAgb25Gb2N1c2VkRGF0ZUNoYW5nZSxcbiAgICAgIGRhdGVzV2l0aFJvdyxcbiAgICAgIG1vbnRoLFxuICAgICAgeWVhcixcbiAgICAgIGRpc2FibGVkRGF0ZXMsXG4gICAgICBvbkRhdGVTZWxlY3QsXG4gICAgICBvbkVzY2FwZUtleVByZXNzLFxuICAgICAgb25EaXNwbGF5RGF0ZUNoYW5nZSxcbiAgICAgIGhhc0FkamFjZW50TW9udGhMZWZ0LFxuICAgICAgaGFzQWRqYWNlbnRNb250aFJpZ2h0LFxuICAgIF1cbiAgKTtcblxuICBjb25zdCBzZXRCdXR0b25SZWYgPSB1c2VDYWxsYmFjaygoZGF0ZTogRGF0ZSwgZWw6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IGsgPSBuZXcgRGF0ZShcbiAgICAgIGRhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICAgIGRhdGUuZ2V0TW9udGgoKSxcbiAgICAgIGRhdGUuZ2V0RGF0ZSgpXG4gICAgKS5nZXRUaW1lKCk7XG4gICAgaWYgKGVsKSBidXR0b25SZWZzLmN1cnJlbnQuc2V0KGssIGVsKTtcbiAgICBlbHNlIGJ1dHRvblJlZnMuY3VycmVudC5kZWxldGUoayk7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDx0YWJsZSBhcmlhLWxhYmVsbGVkYnk9e2xhYmVsbGVkQnlJZH0gcm9sZT1cImdyaWRcIiB3aWR0aD1cIjEwMCVcIj5cbiAgICAgIDx0aGVhZD5cbiAgICAgICAgPHRyPlxuICAgICAgICAgIHt3ZWVrZGF5TGFiZWxzLm1hcCgobGFiZWwsIGkpID0+IChcbiAgICAgICAgICAgIDxUYWJsZUhlYWRlciBhYmJyPXt3ZWVrZGF5RnVsbE5hbWVzW2ldfSBrZXk9e2xhYmVsfSBzY29wZT1cImNvbFwiPlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICA8L1RhYmxlSGVhZGVyPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L3RyPlxuICAgICAgPC90aGVhZD5cbiAgICAgIDx0Ym9keT5cbiAgICAgICAge3dlZWtzLm1hcCgod2Vlaywgcm93SW5kZXgpID0+IChcbiAgICAgICAgICA8dHIga2V5PXt3ZWVrLmpvaW4oJy0nKX0+XG4gICAgICAgICAgICB7d2Vlay5tYXAoKGRhdGUsIGNvbEluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGlmIChkYXRlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIC8vIGZpeCB0aGlzIGVycm9yXG4gICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5LCBqc3gtYTExeS9jb250cm9sLWhhcy1hc3NvY2lhdGVkLWxhYmVsXG4gICAgICAgICAgICAgICAgICA8RGF0ZUNlbGxcbiAgICAgICAgICAgICAgICAgICAga2V5PXtgZW1wdHktJHtyb3dJbmRleH0tJHtjb2xJbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkoZGF0ZSwgc2VsZWN0ZWREYXRlKSB8fCBpc1NhbWVEYXkoZGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IHJhbmdlID0gISFzZWxlY3RlZERhdGUgJiYgISFlbmREYXRlO1xuICAgICAgICAgICAgICBjb25zdCBpblJhbmdlID1cbiAgICAgICAgICAgICAgICByYW5nZSAmJiBpc0RhdGVJblJhbmdlKGRhdGUsIHNlbGVjdGVkRGF0ZSwgZW5kRGF0ZSk7XG4gICAgICAgICAgICAgIGNvbnN0IGRpc2FibGVkID0gaXNEYXRlRGlzYWJsZWQoZGF0ZSwgZGlzYWJsZWREYXRlcyk7XG4gICAgICAgICAgICAgIGNvbnN0IHRvZGF5ID0gaXNUb2RheShkYXRlKTtcbiAgICAgICAgICAgICAgLy8gdGhpcyBpcyBtYWtpbmcgdGhlIHNlbGVjdGVkIGRhdGUgYSBkaWZmZXJuZXQgY29sb3IgYmMgaXQgaXMgZm9jdXNlZCwgbG9vayBpbnRvIGZ1cnRoZXJcbiAgICAgICAgICAgICAgY29uc3QgaXNGb2N1c2VkID1cbiAgICAgICAgICAgICAgICBmb2N1c1RhcmdldCAhPT0gbnVsbCAmJiBpc1NhbWVEYXkoZGF0ZSwgZm9jdXNUYXJnZXQpO1xuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPERhdGVDZWxsXG4gICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZH1cbiAgICAgICAgICAgICAgICAgIGtleT17ZGF0ZS5nZXRUaW1lKCl9XG4gICAgICAgICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxEYXRlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgaXNJblJhbmdlPXtpblJhbmdlfVxuICAgICAgICAgICAgICAgICAgICBpc1JhbmdlRW5kPXtyYW5nZSAmJiBpc1NhbWVEYXkoZGF0ZSwgZW5kRGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIGlzUmFuZ2VTdGFydD17cmFuZ2UgJiYgaXNTYW1lRGF5KGRhdGUsIHNlbGVjdGVkRGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e3NlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgICBpc1RvZGF5PXt0b2RheX1cbiAgICAgICAgICAgICAgICAgICAgcmVmPXsoZWwpID0+IHNldEJ1dHRvblJlZihkYXRlLCBlbCBhcyBIVE1MRWxlbWVudCB8IG51bGwpfVxuICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17aXNGb2N1c2VkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwic2Vjb25kYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25EYXRlU2VsZWN0KGRhdGUpfVxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBvbkZvY3VzZWREYXRlQ2hhbmdlPy4oZGF0ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17KGU6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+XG4gICAgICAgICAgICAgICAgICAgICAgaGFuZGxlS2V5RG93bihlLCBkYXRlKVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtkYXRlLmdldERhdGUoKX1cbiAgICAgICAgICAgICAgICAgIDwvRGF0ZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L0RhdGVDZWxsPlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC90cj5cbiAgICAgICAgKSl9XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gICk7XG59O1xuIl19 */");
|
|
69
81
|
export const CalendarBody = ({
|
|
70
|
-
|
|
82
|
+
displayDate,
|
|
71
83
|
selectedDate,
|
|
72
84
|
endDate = null,
|
|
73
85
|
disabledDates = [],
|
|
@@ -77,13 +89,13 @@ export const CalendarBody = ({
|
|
|
77
89
|
labelledById,
|
|
78
90
|
focusedDate,
|
|
79
91
|
onFocusedDateChange,
|
|
80
|
-
|
|
92
|
+
onDisplayDateChange,
|
|
81
93
|
onEscapeKeyPress,
|
|
82
94
|
hasAdjacentMonthRight,
|
|
83
95
|
hasAdjacentMonthLeft
|
|
84
96
|
}) => {
|
|
85
|
-
const year =
|
|
86
|
-
const month =
|
|
97
|
+
const year = displayDate.getFullYear();
|
|
98
|
+
const month = displayDate.getMonth();
|
|
87
99
|
const weeks = getMonthGrid(year, month, weekStartsOn);
|
|
88
100
|
const weekdayLabels = getWeekdayNames('short', locale, weekStartsOn);
|
|
89
101
|
const weekdayFullNames = getWeekdayNames('long', locale, weekStartsOn);
|
|
@@ -99,7 +111,7 @@ export const CalendarBody = ({
|
|
|
99
111
|
useEffect(() => {
|
|
100
112
|
if (focusTarget !== null) focusButton(focusTarget);
|
|
101
113
|
}, [focusTarget, focusButton]);
|
|
102
|
-
const handleKeyDown = useCallback((e, date) => keyHandler(e, date, onFocusedDateChange, datesWithRow, month, year, disabledDates, onDateSelect, onEscapeKeyPress,
|
|
114
|
+
const handleKeyDown = useCallback((e, date) => keyHandler(e, date, onFocusedDateChange, datesWithRow, month, year, disabledDates, onDateSelect, onEscapeKeyPress, onDisplayDateChange, hasAdjacentMonthRight, hasAdjacentMonthLeft), [onFocusedDateChange, datesWithRow, month, year, disabledDates, onDateSelect, onEscapeKeyPress, onDisplayDateChange, hasAdjacentMonthLeft, hasAdjacentMonthRight]);
|
|
103
115
|
const setButtonRef = useCallback((date, el) => {
|
|
104
116
|
const k = new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime();
|
|
105
117
|
if (el) buttonRefs.current.set(k, el);else buttonRefs.current.delete(k);
|
|
@@ -124,23 +136,26 @@ export const CalendarBody = ({
|
|
|
124
136
|
/*#__PURE__*/
|
|
125
137
|
// fix this error
|
|
126
138
|
// eslint-disable-next-line react/no-array-index-key, jsx-a11y/control-has-associated-label
|
|
127
|
-
_jsx(
|
|
139
|
+
_jsx(DateCell, {
|
|
128
140
|
role: "gridcell"
|
|
129
141
|
}, `empty-${rowIndex}-${colIndex}`)
|
|
130
142
|
);
|
|
131
143
|
}
|
|
132
144
|
const selected = isSameDay(date, selectedDate) || isSameDay(date, endDate);
|
|
133
|
-
const
|
|
145
|
+
const range = !!selectedDate && !!endDate;
|
|
146
|
+
const inRange = range && isDateInRange(date, selectedDate, endDate);
|
|
134
147
|
const disabled = isDateDisabled(date, disabledDates);
|
|
135
148
|
const today = isToday(date);
|
|
136
149
|
// this is making the selected date a differnet color bc it is focused, look into further
|
|
137
150
|
const isFocused = focusTarget !== null && isSameDay(date, focusTarget);
|
|
138
|
-
return /*#__PURE__*/_jsx(
|
|
151
|
+
return /*#__PURE__*/_jsx(DateCell, {
|
|
139
152
|
"aria-selected": selected,
|
|
140
153
|
role: "gridcell",
|
|
141
154
|
children: /*#__PURE__*/_jsx(DateButton, {
|
|
142
155
|
disabled: disabled,
|
|
143
156
|
isInRange: inRange,
|
|
157
|
+
isRangeEnd: range && isSameDay(date, endDate),
|
|
158
|
+
isRangeStart: range && isSameDay(date, selectedDate),
|
|
144
159
|
isSelected: selected,
|
|
145
160
|
isToday: today,
|
|
146
161
|
ref: el => setButtonRef(date, el),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { FlexBox } from '../../Box';
|
|
3
3
|
import { TextButton } from '../../Button';
|
|
4
|
+
import { DEFAULT_DATE_PICKER_TRANSLATIONS } from '../translations';
|
|
4
5
|
import { getRelativeTodayLabel } from './utils/format';
|
|
5
6
|
|
|
6
7
|
// function formatQuickActionLabel(action: QuickAction): string {
|
|
@@ -28,7 +29,7 @@ export const CalendarFooter = ({
|
|
|
28
29
|
onClearDate,
|
|
29
30
|
onTodayClick,
|
|
30
31
|
locale,
|
|
31
|
-
clearText,
|
|
32
|
+
clearText = DEFAULT_DATE_PICKER_TRANSLATIONS.clearText,
|
|
32
33
|
disabled,
|
|
33
34
|
showClearButton
|
|
34
35
|
}) => {
|
|
@@ -6,9 +6,9 @@ import { Text } from '../../Typography';
|
|
|
6
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
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
displayDate,
|
|
10
|
+
onDisplayDateChange,
|
|
11
|
+
secondDisplayDate,
|
|
12
12
|
onLastMonthClick,
|
|
13
13
|
onNextMonthClick,
|
|
14
14
|
locale,
|
|
@@ -19,43 +19,62 @@ export const CalendarHeader = ({
|
|
|
19
19
|
lastMonth
|
|
20
20
|
} = getRelativeMonthLabels(locale);
|
|
21
21
|
const handleLastMonth = () => {
|
|
22
|
-
const lastMonth = new Date(
|
|
23
|
-
|
|
22
|
+
const lastMonth = new Date(displayDate.getFullYear(), displayDate.getMonth() - 1, 1);
|
|
23
|
+
onDisplayDateChange?.(lastMonth);
|
|
24
24
|
onLastMonthClick?.();
|
|
25
25
|
};
|
|
26
26
|
const handleNextMonth = () => {
|
|
27
|
-
const nextMonth = new Date(
|
|
28
|
-
|
|
27
|
+
const nextMonth = new Date(displayDate.getFullYear(), displayDate.getMonth() + 1, 1);
|
|
28
|
+
onDisplayDateChange?.(nextMonth);
|
|
29
29
|
onNextMonthClick?.();
|
|
30
30
|
};
|
|
31
31
|
return /*#__PURE__*/_jsxs(FlexBox, {
|
|
32
32
|
alignItems: "center",
|
|
33
|
-
justifyContent: "space-between",
|
|
34
33
|
pb: 16,
|
|
34
|
+
width: "100%",
|
|
35
35
|
children: [/*#__PURE__*/_jsx(IconButton, {
|
|
36
36
|
"aria-label": lastMonth,
|
|
37
37
|
icon: MiniChevronLeftIcon,
|
|
38
38
|
size: "small",
|
|
39
39
|
tip: lastMonth,
|
|
40
40
|
onClick: handleLastMonth
|
|
41
|
-
}), /*#__PURE__*/
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
id: headingId,
|
|
47
|
-
children: formatMonthYear(currentMonthYear, locale)
|
|
48
|
-
}), secondMonthYear && /*#__PURE__*/_jsx(Text, {
|
|
49
|
-
"aria-live": "polite",
|
|
50
|
-
as: "h2",
|
|
51
|
-
display: {
|
|
52
|
-
_: 'none',
|
|
53
|
-
xs: 'initial'
|
|
41
|
+
}), /*#__PURE__*/_jsxs(FlexBox, {
|
|
42
|
+
flexGrow: 1,
|
|
43
|
+
gap: {
|
|
44
|
+
_: 0,
|
|
45
|
+
xs: secondDisplayDate ? 32 : 0
|
|
54
46
|
},
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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(displayDate, locale)
|
|
60
|
+
})
|
|
61
|
+
}), secondDisplayDate && /*#__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(secondDisplayDate, locale)
|
|
76
|
+
})
|
|
77
|
+
})]
|
|
59
78
|
}), /*#__PURE__*/_jsx(IconButton, {
|
|
60
79
|
"aria-label": nextMonth,
|
|
61
80
|
icon: MiniChevronRightIcon,
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export interface CalendarHeaderProps {
|
|
5
5
|
/** Currently displayed month and year (used for heading and prev/next range) */
|
|
6
|
-
|
|
7
|
-
/** Called when the user navigates to a different month. Pass the new date (e.g.
|
|
8
|
-
|
|
6
|
+
displayDate: Date;
|
|
7
|
+
/** Called when the user navigates to a different month. Pass the new date (e.g. setDisplayDate) so the calendar updates. */
|
|
8
|
+
onDisplayDateChange: (newDate: Date) => void;
|
|
9
9
|
/** Currently displayed second month and year (used for heading and prev/next range) */
|
|
10
|
-
|
|
10
|
+
secondDisplayDate?: 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. */
|
|
@@ -19,7 +19,9 @@ export interface CalendarHeaderProps {
|
|
|
19
19
|
}
|
|
20
20
|
export interface CalendarBodyProps {
|
|
21
21
|
/** The month to display (typically first day of that month) */
|
|
22
|
-
|
|
22
|
+
displayDate: Date;
|
|
23
|
+
/** Called when grid keyboard nav changes month (e.g. Page Up/Down). Pass setDisplayDate so the calendar updates. */
|
|
24
|
+
onDisplayDateChange: (newDate: Date) => void;
|
|
23
25
|
/** Selected start date (single or range start) */
|
|
24
26
|
selectedDate: Date | null;
|
|
25
27
|
/** Selected end date (range only; undefined for single-date mode) */
|
|
@@ -38,8 +40,6 @@ export interface CalendarBodyProps {
|
|
|
38
40
|
focusedDate: Date | null;
|
|
39
41
|
/** Callback when focused date changes (e.g. arrow keys) */
|
|
40
42
|
onFocusedDateChange: (date: Date | null) => void;
|
|
41
|
-
/** Called when grid keyboard nav changes month (e.g. Page Up/Down). Pass setVisibleDate so the calendar updates. */
|
|
42
|
-
onVisibleDateChange: (newDate: Date) => void;
|
|
43
43
|
/** Called when the escape key is pressed */
|
|
44
44
|
onEscapeKeyPress?: () => void;
|
|
45
45
|
/** When true (e.g. two-month view), arrow keys move focus to adjacent month without changing visible date. */
|
|
@@ -56,7 +56,7 @@ export interface CalendarFooterProps {
|
|
|
56
56
|
disabled?: boolean;
|
|
57
57
|
showClearButton?: boolean;
|
|
58
58
|
locale?: string;
|
|
59
|
-
clearText
|
|
59
|
+
clearText?: string;
|
|
60
60
|
onClearDate?: () => void;
|
|
61
61
|
onTodayClick?: () => void;
|
|
62
62
|
/** Max 3 quick actions (e.g. "7 days", "1 month") */
|
|
@@ -28,3 +28,8 @@ export declare const isDateInRange: (date: Date, start: Date | null, end: Date |
|
|
|
28
28
|
* Check if `date` is in the `disabledDates` list (by calendar day).
|
|
29
29
|
*/
|
|
30
30
|
export declare const isDateDisabled: (date: Date, disabledDates?: Date[]) => boolean;
|
|
31
|
+
/** Flat list of dates in grid order (row-major, non-null only) with row index for Home/End */
|
|
32
|
+
export declare const getDatesWithRow: (weeks: (Date | null)[][]) => {
|
|
33
|
+
date: Date;
|
|
34
|
+
rowIndex: number;
|
|
35
|
+
}[];
|
|
@@ -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);
|
|
@@ -90,4 +84,18 @@ export const isDateInRange = (date, start, end) => {
|
|
|
90
84
|
*/
|
|
91
85
|
export const isDateDisabled = (date, disabledDates = []) => {
|
|
92
86
|
return disabledDates.some(d => isSameDay(date, d));
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
/** Flat list of dates in grid order (row-major, non-null only) with row index for Home/End */
|
|
90
|
+
export const getDatesWithRow = weeks => {
|
|
91
|
+
const result = [];
|
|
92
|
+
weeks.forEach((week, rowIndex) => {
|
|
93
|
+
week.forEach(date => {
|
|
94
|
+
if (date !== null) result.push({
|
|
95
|
+
date,
|
|
96
|
+
rowIndex
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
return result;
|
|
93
101
|
};
|
|
@@ -43,15 +43,3 @@ export declare const formatDateForInput: (date: Date, locale?: string) => string
|
|
|
43
43
|
* Partial input like "1" or "2/15" returns null even though Date("1") would parse.
|
|
44
44
|
*/
|
|
45
45
|
export declare const parseDateFromInput: (value: string, locale?: string) => Date | null;
|
|
46
|
-
/**
|
|
47
|
-
* Format a date range for the input (e.g. "2/15/2026 – 2/20/2026").
|
|
48
|
-
*/
|
|
49
|
-
export declare const formatDateRangeForInput: (startDate: Date | null, endDate: Date | null, locale?: string) => string;
|
|
50
|
-
/**
|
|
51
|
-
* Parse a range string (e.g. "2/15/2026 – 2/20/2026") into { startDate, endDate }.
|
|
52
|
-
* Returns null if invalid. Single date is allowed and yields startDate = endDate.
|
|
53
|
-
*/
|
|
54
|
-
export declare const parseDateRangeFromInput: (value: string, locale?: string) => {
|
|
55
|
-
startDate: Date;
|
|
56
|
-
endDate: Date;
|
|
57
|
-
} | null;
|
|
@@ -120,46 +120,4 @@ export const parseDateFromInput = (value, locale) => {
|
|
|
120
120
|
const parts = trimmed.split(/[/-]/);
|
|
121
121
|
if (parts.length >= 3) return parsed;
|
|
122
122
|
return null;
|
|
123
|
-
};
|
|
124
|
-
const RANGE_SEPARATOR = ' – ';
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Format a date range for the input (e.g. "2/15/2026 – 2/20/2026").
|
|
128
|
-
*/
|
|
129
|
-
export const formatDateRangeForInput = (startDate, endDate, locale) => {
|
|
130
|
-
if (!startDate && !endDate) return '';
|
|
131
|
-
if (!startDate) return formatDateForInput(endDate, locale);
|
|
132
|
-
if (!endDate) return formatDateForInput(startDate, locale);
|
|
133
|
-
return `${formatDateForInput(startDate, locale)}${RANGE_SEPARATOR}${formatDateForInput(endDate, locale)}`;
|
|
134
|
-
};
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Parse a range string (e.g. "2/15/2026 – 2/20/2026") into { startDate, endDate }.
|
|
138
|
-
* Returns null if invalid. Single date is allowed and yields startDate = endDate.
|
|
139
|
-
*/
|
|
140
|
-
export const parseDateRangeFromInput = (value, locale) => {
|
|
141
|
-
const trimmed = value.trim();
|
|
142
|
-
if (!trimmed) return null;
|
|
143
|
-
const parts = trimmed.split(RANGE_SEPARATOR).map(part => part.trim());
|
|
144
|
-
if (parts.length === 1) {
|
|
145
|
-
const date = parseDateFromInput(parts[0], locale);
|
|
146
|
-
if (!date) return null;
|
|
147
|
-
return {
|
|
148
|
-
startDate: date,
|
|
149
|
-
endDate: new Date(date)
|
|
150
|
-
};
|
|
151
|
-
}
|
|
152
|
-
if (parts.length === 2) {
|
|
153
|
-
const start = parseDateFromInput(parts[0], locale);
|
|
154
|
-
const end = parseDateFromInput(parts[1], locale);
|
|
155
|
-
if (!start || !end) return null;
|
|
156
|
-
return start.getTime() <= end.getTime() ? {
|
|
157
|
-
startDate: start,
|
|
158
|
-
endDate: end
|
|
159
|
-
} : {
|
|
160
|
-
startDate: end,
|
|
161
|
-
endDate: start
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
return null;
|
|
165
123
|
};
|
|
@@ -1,13 +1,4 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Clamp a day to the last day of the given month (e.g. Jan 31 -> Feb 28).
|
|
3
|
-
*/
|
|
4
|
-
export declare const clampToMonth: (year: number, month: number, day: number) => Date;
|
|
5
|
-
/** Flat list of dates in grid order (row-major, non-null only) with row index for Home/End */
|
|
6
|
-
export declare const getDatesWithRow: (weeks: (Date | null)[][]) => {
|
|
7
|
-
date: Date;
|
|
8
|
-
rowIndex: number;
|
|
9
|
-
}[];
|
|
10
1
|
export declare const keyHandler: (e: React.KeyboardEvent, date: Date, onFocusedDateChange: (date: Date | null) => void, datesWithRow: {
|
|
11
2
|
date: Date;
|
|
12
3
|
rowIndex: number;
|
|
13
|
-
}[], month: number, year: number, disabledDates: Date[], onDateSelect: (date: Date) => void, onEscapeKeyPress?: () => void,
|
|
4
|
+
}[], month: number, year: number, disabledDates: Date[], onDateSelect: (date: Date) => void, onEscapeKeyPress?: () => void, onDisplayDateChange?: ((newDate: Date) => void) | undefined, hasAdjacentMonthRight?: boolean, hasAdjacentMonthLeft?: boolean) => void;
|
|
@@ -3,25 +3,11 @@ import { isDateDisabled } from './dateGrid';
|
|
|
3
3
|
/**
|
|
4
4
|
* Clamp a day to the last day of the given month (e.g. Jan 31 -> Feb 28).
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
const clampToMonth = (year, month, day) => {
|
|
7
7
|
const last = new Date(year, month + 1, 0).getDate();
|
|
8
8
|
return new Date(year, month, Math.min(day, last));
|
|
9
9
|
};
|
|
10
|
-
|
|
11
|
-
/** Flat list of dates in grid order (row-major, non-null only) with row index for Home/End */
|
|
12
|
-
export const getDatesWithRow = weeks => {
|
|
13
|
-
const result = [];
|
|
14
|
-
weeks.forEach((week, rowIndex) => {
|
|
15
|
-
week.forEach(date => {
|
|
16
|
-
if (date !== null) result.push({
|
|
17
|
-
date,
|
|
18
|
-
rowIndex
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
return result;
|
|
23
|
-
};
|
|
24
|
-
export const keyHandler = (e, date, onFocusedDateChange, datesWithRow, month, year, disabledDates, onDateSelect, onEscapeKeyPress, onVisibleDateChange, hasAdjacentMonthRight, hasAdjacentMonthLeft) => {
|
|
10
|
+
export const keyHandler = (e, date, onFocusedDateChange, datesWithRow, month, year, disabledDates, onDateSelect, onEscapeKeyPress, onDisplayDateChange, hasAdjacentMonthRight, hasAdjacentMonthLeft) => {
|
|
25
11
|
const idx = datesWithRow.findIndex(({
|
|
26
12
|
date: dateWithRow
|
|
27
13
|
}) => dateWithRow.getTime() === date.getTime());
|
|
@@ -31,7 +17,7 @@ export const keyHandler = (e, date, onFocusedDateChange, datesWithRow, month, ye
|
|
|
31
17
|
const hasRight = !!hasAdjacentMonthRight;
|
|
32
18
|
const hasLeft = !!hasAdjacentMonthLeft;
|
|
33
19
|
let newDate = null;
|
|
34
|
-
let
|
|
20
|
+
let newDisplayDate = null;
|
|
35
21
|
switch (e.key) {
|
|
36
22
|
case 'ArrowLeft':
|
|
37
23
|
e.preventDefault();
|
|
@@ -41,7 +27,7 @@ export const keyHandler = (e, date, onFocusedDateChange, datesWithRow, month, ye
|
|
|
41
27
|
const lastDayPrevMonth = new Date(year, month, 0);
|
|
42
28
|
newDate = lastDayPrevMonth;
|
|
43
29
|
if (!hasLeft) {
|
|
44
|
-
|
|
30
|
+
newDisplayDate = new Date(year, month - 1, 1);
|
|
45
31
|
}
|
|
46
32
|
}
|
|
47
33
|
break;
|
|
@@ -52,7 +38,7 @@ export const keyHandler = (e, date, onFocusedDateChange, datesWithRow, month, ye
|
|
|
52
38
|
} else {
|
|
53
39
|
newDate = new Date(year, month + 1, 1);
|
|
54
40
|
if (!hasRight) {
|
|
55
|
-
|
|
41
|
+
newDisplayDate = new Date(year, month + 1, 1);
|
|
56
42
|
}
|
|
57
43
|
}
|
|
58
44
|
break;
|
|
@@ -62,7 +48,7 @@ export const keyHandler = (e, date, onFocusedDateChange, datesWithRow, month, ye
|
|
|
62
48
|
newDate.setDate(newDate.getDate() - 7);
|
|
63
49
|
if (newDate.getMonth() !== month || newDate.getFullYear() !== year) {
|
|
64
50
|
if (!hasLeft) {
|
|
65
|
-
|
|
51
|
+
newDisplayDate = new Date(newDate.getFullYear(), newDate.getMonth(), 1);
|
|
66
52
|
}
|
|
67
53
|
}
|
|
68
54
|
break;
|
|
@@ -72,7 +58,7 @@ export const keyHandler = (e, date, onFocusedDateChange, datesWithRow, month, ye
|
|
|
72
58
|
newDate.setDate(newDate.getDate() + 7);
|
|
73
59
|
if (newDate.getMonth() !== month || newDate.getFullYear() !== year) {
|
|
74
60
|
if (!hasRight) {
|
|
75
|
-
|
|
61
|
+
newDisplayDate = new Date(newDate.getFullYear(), newDate.getMonth(), 1);
|
|
76
62
|
}
|
|
77
63
|
}
|
|
78
64
|
break;
|
|
@@ -95,7 +81,7 @@ export const keyHandler = (e, date, onFocusedDateChange, datesWithRow, month, ye
|
|
|
95
81
|
} else {
|
|
96
82
|
newDate = clampToMonth(year, month + 1, day);
|
|
97
83
|
}
|
|
98
|
-
|
|
84
|
+
newDisplayDate = new Date(newDate.getFullYear(), newDate.getMonth(), 1);
|
|
99
85
|
break;
|
|
100
86
|
case 'PageUp':
|
|
101
87
|
e.preventDefault();
|
|
@@ -104,7 +90,7 @@ export const keyHandler = (e, date, onFocusedDateChange, datesWithRow, month, ye
|
|
|
104
90
|
} else {
|
|
105
91
|
newDate = clampToMonth(year, month - 1, day);
|
|
106
92
|
}
|
|
107
|
-
|
|
93
|
+
newDisplayDate = new Date(newDate.getFullYear(), newDate.getMonth(), 1);
|
|
108
94
|
break;
|
|
109
95
|
case 'Enter':
|
|
110
96
|
case ' ':
|
|
@@ -120,6 +106,6 @@ export const keyHandler = (e, date, onFocusedDateChange, datesWithRow, month, ye
|
|
|
120
106
|
}
|
|
121
107
|
if (newDate !== null) {
|
|
122
108
|
onFocusedDateChange(newDate);
|
|
123
|
-
if (
|
|
109
|
+
if (newDisplayDate !== null) onDisplayDateChange?.(newDisplayDate);
|
|
124
110
|
}
|
|
125
111
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MiniArrowRightIcon } from '@codecademy/gamut-icons';
|
|
2
2
|
import { useCallback, useId, useMemo, useRef, useState } from 'react';
|
|
3
|
-
import { FlexBox } from '../Box';
|
|
3
|
+
import { Box, FlexBox } from '../Box';
|
|
4
4
|
import { PopoverContainer } from '../PopoverContainer';
|
|
5
5
|
import { DatePickerCalendar } from './DatePickerCalendar';
|
|
6
6
|
import { DatePickerProvider } from './DatePickerContext';
|
|
@@ -77,15 +77,16 @@ export const DatePicker = props => {
|
|
|
77
77
|
children: [/*#__PURE__*/_jsx(FlexBox, {
|
|
78
78
|
gap: 8,
|
|
79
79
|
width: "fit-content",
|
|
80
|
-
wrap: true,
|
|
81
80
|
children: mode === 'range' ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
82
81
|
children: [/*#__PURE__*/_jsx(DatePickerInput, {
|
|
83
82
|
label: props.startLabel,
|
|
84
83
|
placeholder: placeholder,
|
|
85
84
|
rangePart: "start",
|
|
86
85
|
ref: inputRef
|
|
87
|
-
}), /*#__PURE__*/_jsx(
|
|
88
|
-
alignSelf: "center"
|
|
86
|
+
}), /*#__PURE__*/_jsx(Box, {
|
|
87
|
+
alignSelf: "center",
|
|
88
|
+
mt: 32,
|
|
89
|
+
children: /*#__PURE__*/_jsx(MiniArrowRightIcon, {})
|
|
89
90
|
}), /*#__PURE__*/_jsx(DatePickerInput, {
|
|
90
91
|
label: props.endLabel,
|
|
91
92
|
placeholder: placeholder,
|
|
@@ -35,7 +35,7 @@ export const DatePickerCalendar = ({
|
|
|
35
35
|
const isRange = mode === 'range';
|
|
36
36
|
const endDate = isRange ? context.endDate : undefined;
|
|
37
37
|
const firstOfMonth = date => new Date(date.getFullYear(), date.getMonth(), 1);
|
|
38
|
-
const [
|
|
38
|
+
const [displayDate, setDisplayDate] = useState(() => firstOfMonth(startOrSelectedDate ?? new Date()));
|
|
39
39
|
const [focusedDate, setFocusedDate] = useState(() => startOrSelectedDate ?? endDate ?? new Date());
|
|
40
40
|
const wasOpenRef = useRef(false);
|
|
41
41
|
|
|
@@ -47,7 +47,7 @@ export const DatePickerCalendar = ({
|
|
|
47
47
|
if (!justOpened) return;
|
|
48
48
|
const anchor = startOrSelectedDate ?? endDate;
|
|
49
49
|
if (anchor) {
|
|
50
|
-
|
|
50
|
+
setDisplayDate(firstOfMonth(anchor));
|
|
51
51
|
setFocusedDate(startOrSelectedDate ?? endDate ?? new Date());
|
|
52
52
|
}
|
|
53
53
|
}, [isCalendarOpen, startOrSelectedDate, endDate]);
|
|
@@ -61,42 +61,42 @@ export const DatePickerCalendar = ({
|
|
|
61
61
|
};
|
|
62
62
|
const handleClearDate = () => {
|
|
63
63
|
setSelection(null);
|
|
64
|
-
setFocusedDate(
|
|
64
|
+
setFocusedDate(displayDate);
|
|
65
65
|
};
|
|
66
66
|
const handleTodayClick = () => {
|
|
67
67
|
const today = new Date();
|
|
68
68
|
setSelection(today);
|
|
69
|
-
|
|
69
|
+
setDisplayDate(firstOfMonth(today));
|
|
70
70
|
setFocusedDate(today);
|
|
71
71
|
};
|
|
72
72
|
const focusTarget = focusedDate ?? startOrSelectedDate ?? endDate ?? new Date();
|
|
73
73
|
const addMonths = (date, n) => new Date(date.getFullYear(), date.getMonth() + n, 1);
|
|
74
|
-
const secondMonthDate = addMonths(
|
|
74
|
+
const secondMonthDate = addMonths(displayDate, 1);
|
|
75
75
|
const isTwoMonthsVisible = useMedia(`(min-width: ${breakpoints.xs})`);
|
|
76
76
|
return /*#__PURE__*/_jsxs(Calendar, {
|
|
77
77
|
children: [/*#__PURE__*/_jsxs(Box, {
|
|
78
78
|
p: 24,
|
|
79
79
|
children: [/*#__PURE__*/_jsx(CalendarHeader, {
|
|
80
|
-
|
|
80
|
+
displayDate: displayDate,
|
|
81
81
|
headingId: headingId,
|
|
82
82
|
locale: locale,
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
secondDisplayDate: secondMonthDate,
|
|
84
|
+
onDisplayDateChange: setDisplayDate
|
|
85
85
|
}), /*#__PURE__*/_jsxs(FlexBox, {
|
|
86
86
|
children: [/*#__PURE__*/_jsx(CalendarBody, {
|
|
87
87
|
disabledDates: disabledDates,
|
|
88
|
+
displayDate: displayDate,
|
|
88
89
|
endDate: endDate,
|
|
89
90
|
focusedDate: focusTarget,
|
|
90
91
|
hasAdjacentMonthRight: isTwoMonthsVisible,
|
|
91
92
|
labelledById: headingId,
|
|
92
93
|
locale: locale,
|
|
93
94
|
selectedDate: startOrSelectedDate,
|
|
94
|
-
visibleDate: visibleDate,
|
|
95
95
|
weekStartsOn: weekStartsOn,
|
|
96
96
|
onDateSelect: onDateSelect,
|
|
97
|
+
onDisplayDateChange: setDisplayDate,
|
|
97
98
|
onEscapeKeyPress: closeCalendar,
|
|
98
|
-
onFocusedDateChange: setFocusedDate
|
|
99
|
-
onVisibleDateChange: setVisibleDate
|
|
99
|
+
onFocusedDateChange: setFocusedDate
|
|
100
100
|
}), /*#__PURE__*/_jsx(Box, {
|
|
101
101
|
display: {
|
|
102
102
|
_: 'none',
|
|
@@ -108,18 +108,18 @@ export const DatePickerCalendar = ({
|
|
|
108
108
|
},
|
|
109
109
|
children: /*#__PURE__*/_jsx(CalendarBody, {
|
|
110
110
|
disabledDates: disabledDates,
|
|
111
|
+
displayDate: secondMonthDate,
|
|
111
112
|
endDate: endDate,
|
|
112
113
|
focusedDate: focusTarget,
|
|
113
114
|
hasAdjacentMonthLeft: isTwoMonthsVisible,
|
|
114
115
|
labelledById: headingId,
|
|
115
116
|
locale: locale,
|
|
116
117
|
selectedDate: startOrSelectedDate,
|
|
117
|
-
visibleDate: secondMonthDate,
|
|
118
118
|
weekStartsOn: weekStartsOn,
|
|
119
119
|
onDateSelect: onDateSelect,
|
|
120
|
+
onDisplayDateChange: setDisplayDate,
|
|
120
121
|
onEscapeKeyPress: closeCalendar,
|
|
121
|
-
onFocusedDateChange: setFocusedDate
|
|
122
|
-
onVisibleDateChange: setVisibleDate
|
|
122
|
+
onFocusedDateChange: setFocusedDate
|
|
123
123
|
})
|
|
124
124
|
})]
|
|
125
125
|
})]
|
|
@@ -8,4 +8,4 @@ export declare const DatePickerProvider: import("react").Provider<DatePickerCont
|
|
|
8
8
|
* Must be used inside a DatePicker. For composed layouts, use this to get
|
|
9
9
|
* openCalendar, closeCalendar, isCalendarOpen, inputRef, calendarDialogId, etc.
|
|
10
10
|
*/
|
|
11
|
-
export declare
|
|
11
|
+
export declare const useDatePicker: () => DatePickerContextValueType;
|
|
@@ -9,10 +9,10 @@ export const DatePickerProvider = DatePickerContext.Provider;
|
|
|
9
9
|
* Must be used inside a DatePicker. For composed layouts, use this to get
|
|
10
10
|
* openCalendar, closeCalendar, isCalendarOpen, inputRef, calendarDialogId, etc.
|
|
11
11
|
*/
|
|
12
|
-
export
|
|
12
|
+
export const useDatePicker = () => {
|
|
13
13
|
const value = useContext(DatePickerContext);
|
|
14
14
|
if (value == null) {
|
|
15
15
|
throw new Error('useDatePickerContext must be used within a DatePicker.');
|
|
16
16
|
}
|
|
17
17
|
return value;
|
|
18
|
-
}
|
|
18
|
+
};
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@codecademy/gamut",
|
|
3
3
|
"description": "Styleguide & Component library for Codecademy",
|
|
4
|
-
"version": "68.1.3-alpha.
|
|
4
|
+
"version": "68.1.3-alpha.b88d4a.0",
|
|
5
5
|
"author": "Codecademy Engineering <dev@codecademy.com>",
|
|
6
6
|
"dependencies": {
|
|
7
7
|
"@codecademy/gamut-icons": "9.57.0",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"dist/**/[A-Z]**/[A-Z]*.js",
|
|
60
60
|
"dist/**/[A-Z]**/index.js"
|
|
61
61
|
],
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "6e0aad55dfb52bc57b740ccd0fd447c93251e5df"
|
|
63
63
|
}
|