@cloudscape-design/components 3.0.72 → 3.0.74
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/app-layout/toggles/index.d.ts.map +1 -1
- package/app-layout/toggles/index.js +2 -2
- package/app-layout/toggles/index.js.map +1 -1
- package/app-layout/visual-refresh/app-bar.d.ts.map +1 -1
- package/app-layout/visual-refresh/app-bar.js +2 -2
- package/app-layout/visual-refresh/app-bar.js.map +1 -1
- package/app-layout/visual-refresh/navigation.d.ts.map +1 -1
- package/app-layout/visual-refresh/navigation.js +1 -1
- package/app-layout/visual-refresh/navigation.js.map +1 -1
- package/app-layout/visual-refresh/tools.d.ts.map +1 -1
- package/app-layout/visual-refresh/tools.js +1 -1
- package/app-layout/visual-refresh/tools.js.map +1 -1
- package/app-layout/visual-refresh/trigger-button.d.ts.map +1 -1
- package/app-layout/visual-refresh/trigger-button.js +1 -1
- package/app-layout/visual-refresh/trigger-button.js.map +1 -1
- package/breadcrumb-group/item/styles.css.js +7 -7
- package/breadcrumb-group/item/styles.scoped.css +16 -15
- package/breadcrumb-group/item/styles.selectors.js +7 -7
- package/calendar/grid/index.d.ts +2 -2
- package/calendar/grid/index.d.ts.map +1 -1
- package/calendar/grid/index.js +64 -23
- package/calendar/grid/index.js.map +1 -1
- package/calendar/internal.d.ts.map +1 -1
- package/calendar/internal.js +3 -15
- package/calendar/internal.js.map +1 -1
- package/calendar/styles.css.js +18 -20
- package/calendar/styles.scoped.css +46 -58
- package/calendar/styles.selectors.js +18 -20
- package/date-range-picker/calendar/grids/grid.d.ts +1 -1
- package/date-range-picker/calendar/grids/grid.d.ts.map +1 -1
- package/date-range-picker/calendar/grids/grid.js +65 -9
- package/date-range-picker/calendar/grids/grid.js.map +1 -1
- package/date-range-picker/calendar/grids/index.d.ts.map +1 -1
- package/date-range-picker/calendar/grids/index.js +1 -0
- package/date-range-picker/calendar/grids/index.js.map +1 -1
- package/date-range-picker/calendar/grids/styles.css.js +30 -0
- package/date-range-picker/calendar/grids/{day/styles.scoped.css → styles.scoped.css} +60 -40
- package/date-range-picker/calendar/grids/styles.selectors.js +31 -0
- package/date-range-picker/index.js +2 -2
- package/date-range-picker/index.js.map +1 -1
- package/date-range-picker/styles.css.js +37 -40
- package/date-range-picker/styles.scoped.css +48 -67
- package/date-range-picker/styles.selectors.js +37 -40
- package/expandable-section/expandable-section-header.d.ts +3 -2
- package/expandable-section/expandable-section-header.d.ts.map +1 -1
- package/expandable-section/expandable-section-header.js +3 -3
- package/expandable-section/expandable-section-header.js.map +1 -1
- package/expandable-section/interfaces.d.ts +5 -0
- package/expandable-section/interfaces.d.ts.map +1 -1
- package/expandable-section/interfaces.js.map +1 -1
- package/expandable-section/internal.d.ts +1 -1
- package/expandable-section/internal.d.ts.map +1 -1
- package/expandable-section/internal.js +4 -3
- package/expandable-section/internal.js.map +1 -1
- package/internal/base-component/styles.scoped.css +4 -4
- package/internal/components/dropdown-status/index.d.ts +3 -1
- package/internal/components/dropdown-status/index.d.ts.map +1 -1
- package/internal/components/dropdown-status/index.js +7 -4
- package/internal/components/dropdown-status/index.js.map +1 -1
- package/internal/components/live-region/index.d.ts.map +1 -1
- package/internal/components/live-region/index.js +1 -0
- package/internal/components/live-region/index.js.map +1 -1
- package/internal/environment.js +1 -1
- package/internal/generated/styles/tokens.js +2 -2
- package/internal/generated/theming/index.cjs +3 -3
- package/internal/generated/theming/index.js +3 -3
- package/modal/internal.d.ts.map +1 -1
- package/modal/internal.js +6 -10
- package/modal/internal.js.map +1 -1
- package/multiselect/internal.d.ts.map +1 -1
- package/multiselect/internal.js +3 -2
- package/multiselect/internal.js.map +1 -1
- package/package.json +1 -1
- package/property-filter/controller.d.ts +2 -0
- package/property-filter/controller.d.ts.map +1 -1
- package/property-filter/controller.js +37 -0
- package/property-filter/controller.js.map +1 -1
- package/property-filter/index.d.ts.map +1 -1
- package/property-filter/index.js +21 -6
- package/property-filter/index.js.map +1 -1
- package/property-filter/interfaces.d.ts +9 -2
- package/property-filter/interfaces.d.ts.map +1 -1
- package/property-filter/interfaces.js +2 -0
- package/property-filter/interfaces.js.map +1 -1
- package/property-filter/property-editor.d.ts +13 -0
- package/property-filter/property-editor.d.ts.map +1 -0
- package/property-filter/property-editor.js +18 -0
- package/property-filter/property-editor.js.map +1 -0
- package/property-filter/property-filter-autosuggest.d.ts +1 -0
- package/property-filter/property-filter-autosuggest.d.ts.map +1 -1
- package/property-filter/property-filter-autosuggest.js +17 -3
- package/property-filter/property-filter-autosuggest.js.map +1 -1
- package/property-filter/styles.css.js +32 -24
- package/property-filter/styles.scoped.css +45 -27
- package/property-filter/styles.selectors.js +32 -24
- package/property-filter/token-editor.d.ts.map +1 -1
- package/property-filter/token-editor.js +17 -4
- package/property-filter/token-editor.js.map +1 -1
- package/property-filter/token.d.ts.map +1 -1
- package/property-filter/token.js +6 -3
- package/property-filter/token.js.map +1 -1
- package/select/internal.d.ts.map +1 -1
- package/select/internal.js +3 -2
- package/select/internal.js.map +1 -1
- package/select/parts/filter.d.ts +1 -1
- package/select/utils/use-select.d.ts +15 -1
- package/select/utils/use-select.d.ts.map +1 -1
- package/select/utils/use-select.js +11 -1
- package/select/utils/use-select.js.map +1 -1
- package/split-panel/index.d.ts.map +1 -1
- package/split-panel/index.js +8 -6
- package/split-panel/index.js.map +1 -1
- package/split-panel/interfaces.d.ts +1 -0
- package/split-panel/interfaces.d.ts.map +1 -1
- package/split-panel/interfaces.js.map +1 -1
- package/split-panel/utils/use-pointer-events.d.ts +1 -1
- package/split-panel/utils/use-pointer-events.d.ts.map +1 -1
- package/split-panel/utils/use-pointer-events.js +9 -5
- package/split-panel/utils/use-pointer-events.js.map +1 -1
- package/table/internal.d.ts.map +1 -1
- package/table/internal.js +8 -1
- package/table/internal.js.map +1 -1
- package/table/use-mouse-down-target.d.ts +6 -0
- package/table/use-mouse-down-target.d.ts.map +1 -0
- package/table/use-mouse-down-target.js +30 -0
- package/table/use-mouse-down-target.js.map +1 -0
- package/tabs/styles.css.js +21 -21
- package/tabs/styles.scoped.css +38 -37
- package/tabs/styles.selectors.js +21 -21
- package/test-utils/dom/date-range-picker/index.js +2 -2
- package/test-utils/dom/date-range-picker/index.js.map +1 -1
- package/test-utils/selectors/date-range-picker/index.js +2 -2
- package/test-utils/selectors/date-range-picker/index.js.map +1 -1
- package/test-utils/tsconfig.tsbuildinfo +1 -1
- package/calendar/grid/day/index.d.ts +0 -15
- package/calendar/grid/day/index.d.ts.map +0 -1
- package/calendar/grid/day/index.js +0 -47
- package/calendar/grid/day/index.js.map +0 -1
- package/date-range-picker/calendar/grids/day/index.d.ts +0 -27
- package/date-range-picker/calendar/grids/day/index.d.ts.map +0 -1
- package/date-range-picker/calendar/grids/day/index.js +0 -95
- package/date-range-picker/calendar/grids/day/index.js.map +0 -1
- package/date-range-picker/calendar/grids/day/styles.css.js +0 -26
- package/date-range-picker/calendar/grids/day/styles.selectors.js +0 -27
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/calendar/grid/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo } from 'react';\nimport styles from '../styles.css.js';\nimport GridDay from './day';\nimport { KeyCode } from '../../internal/keycode';\nimport { addDays, addWeeks, isSameMonth } from 'date-fns';\nimport { getCalendarMonth } from 'mnth';\nimport { DayIndex } from '../internal';\nimport { MoveFocusHandler } from '../utils/move-focus-handler';\nimport { DatePickerProps } from '../../date-picker/interfaces';\nimport rotateDayIndexes from '../utils/rotate-day-indexes';\nimport { renderDayName } from '../utils/intl';\n\nexport interface GridProps {\n locale: string;\n baseDate: Date;\n isDateEnabled: DatePickerProps.IsDateEnabledFunction;\n focusedDate: Date | null;\n onSelectDate: (date: Date) => void;\n onFocusDate: (date: null | Date) => void;\n onChangeMonth: (date: Date) => void;\n startOfWeek: DayIndex;\n todayAriaLabel: string;\n selectedDate: Date | null;\n handleFocusMove: MoveFocusHandler;\n}\n\nconst Grid = ({\n locale,\n baseDate,\n isDateEnabled,\n focusedDate,\n onSelectDate,\n onFocusDate,\n onChangeMonth,\n startOfWeek,\n todayAriaLabel,\n selectedDate,\n handleFocusMove,\n}: GridProps) => {\n const onGridKeyDownHandler = (event: React.KeyboardEvent) => {\n let updatedFocusDate;\n\n if (focusedDate === null) {\n return;\n }\n\n switch (event.keyCode) {\n case KeyCode.enter:\n event.preventDefault();\n if (focusedDate) {\n onFocusDate(null);\n onSelectDate(focusedDate);\n }\n return;\n case KeyCode.right:\n event.preventDefault();\n updatedFocusDate = handleFocusMove(focusedDate, isDateEnabled, date => addDays(date, 1));\n break;\n case KeyCode.left:\n event.preventDefault();\n updatedFocusDate = handleFocusMove(focusedDate, isDateEnabled, date => addDays(date, -1));\n break;\n case KeyCode.up:\n event.preventDefault();\n updatedFocusDate = handleFocusMove(focusedDate, isDateEnabled, date => addWeeks(date, -1));\n break;\n case KeyCode.down:\n event.preventDefault();\n updatedFocusDate = handleFocusMove(focusedDate, isDateEnabled, date => addWeeks(date, 1));\n break;\n default:\n return;\n }\n\n if (!isSameMonth(updatedFocusDate, baseDate)) {\n onChangeMonth(updatedFocusDate);\n }\n onFocusDate(updatedFocusDate);\n };\n\n const weeks = useMemo<Date[][]>(\n () => getCalendarMonth(baseDate, { firstDayOfWeek: startOfWeek }),\n [baseDate, startOfWeek]\n );\n\n return (\n <div>\n <div className={styles['calendar-day-names']}>\n {rotateDayIndexes(startOfWeek).map(i => (\n <div key={`day-name-${i}`} className={styles['calendar-day-name']}>\n {renderDayName(locale, i)}\n </div>\n ))}\n </div>\n <div className={styles['calendar-dates']} onKeyDown={onGridKeyDownHandler}>\n {weeks.map((week, weekIndex) => {\n const isDateInLastWeek = weeks.length - 1 === weekIndex;\n return (\n <div key={`week-${weekIndex}`} className={styles['calendar-week']}>\n {week.map((date, dateIndex) => {\n return (\n <GridDay\n key={`date-${weekIndex}-${dateIndex}`}\n locale={locale}\n baseDate={baseDate}\n selectedDate={selectedDate}\n date={date}\n focusedDate={focusedDate}\n todayAriaLabel={todayAriaLabel}\n onSelectDate={date => onSelectDate(date)}\n isDateEnabled={isDateEnabled}\n isDateInLastWeek={isDateInLastWeek}\n />\n );\n })}\n </div>\n );\n })}\n </div>\n </div>\n );\n};\n\nexport default Grid;\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/calendar/grid/index.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\nimport React, { useMemo, useRef } from 'react';\nimport styles from '../styles.css.js';\nimport { KeyCode } from '../../internal/keycode';\nimport { addDays, addWeeks, isSameDay, isSameMonth } from 'date-fns';\nimport { getCalendarMonth } from 'mnth';\nimport { DayIndex } from '../internal';\nimport { MoveFocusHandler } from '../utils/move-focus-handler';\nimport { DatePickerProps } from '../../date-picker/interfaces';\nimport rotateDayIndexes from '../utils/rotate-day-indexes';\nimport { getDateLabel, renderDayName } from '../utils/intl';\nimport useFocusVisible from '../../internal/hooks/focus-visible/index.js';\nimport clsx from 'clsx';\nimport { useEffectOnUpdate } from '../../internal/hooks/use-effect-on-update.js';\n\nexport interface GridProps {\n locale: string;\n baseDate: Date;\n isDateEnabled: DatePickerProps.IsDateEnabledFunction;\n focusedDate: Date | null;\n focusableDate: Date | null;\n onSelectDate: (date: Date) => void;\n onFocusDate: (date: null | Date) => void;\n onChangeMonth: (date: Date) => void;\n startOfWeek: DayIndex;\n todayAriaLabel: string;\n selectedDate: Date | null;\n handleFocusMove: MoveFocusHandler;\n}\n\nexport default function Grid({\n locale,\n baseDate,\n isDateEnabled,\n focusedDate,\n focusableDate,\n onSelectDate,\n onFocusDate,\n onChangeMonth,\n startOfWeek,\n todayAriaLabel,\n selectedDate,\n handleFocusMove,\n}: GridProps) {\n const focusedDateRef = useRef<HTMLTableCellElement>(null);\n\n const onGridKeyDownHandler = (event: React.KeyboardEvent) => {\n let updatedFocusDate;\n\n if (focusableDate === null) {\n return;\n }\n\n switch (event.keyCode) {\n case KeyCode.space:\n case KeyCode.enter:\n event.preventDefault();\n if (focusableDate) {\n onFocusDate(null);\n onSelectDate(focusableDate);\n }\n return;\n case KeyCode.right:\n event.preventDefault();\n updatedFocusDate = handleFocusMove(focusableDate, isDateEnabled, date => addDays(date, 1));\n break;\n case KeyCode.left:\n event.preventDefault();\n updatedFocusDate = handleFocusMove(focusableDate, isDateEnabled, date => addDays(date, -1));\n break;\n case KeyCode.up:\n event.preventDefault();\n updatedFocusDate = handleFocusMove(focusableDate, isDateEnabled, date => addWeeks(date, -1));\n break;\n case KeyCode.down:\n event.preventDefault();\n updatedFocusDate = handleFocusMove(focusableDate, isDateEnabled, date => addWeeks(date, 1));\n break;\n default:\n return;\n }\n\n if (!isSameMonth(updatedFocusDate, baseDate)) {\n onChangeMonth(updatedFocusDate);\n }\n onFocusDate(updatedFocusDate);\n };\n\n // The focused date changes as a feedback to keyboard navigation in the grid.\n // Once changed, the corresponding day button needs to receive the actual focus.\n useEffectOnUpdate(() => {\n if (focusedDate && focusedDateRef.current) {\n (focusedDateRef.current as HTMLDivElement).focus();\n }\n }, [focusedDate]);\n\n const weeks = useMemo<Date[][]>(\n () => getCalendarMonth(baseDate, { firstDayOfWeek: startOfWeek }),\n [baseDate, startOfWeek]\n );\n\n const focusVisible = useFocusVisible();\n\n return (\n <table role=\"none\" className={styles['calendar-grid']}>\n <thead>\n <tr>\n {rotateDayIndexes(startOfWeek).map(dayIndex => (\n <th\n key={dayIndex}\n scope=\"col\"\n className={clsx(styles['calendar-grid-cell'], styles['calendar-day-header'])}\n >\n {renderDayName(locale, dayIndex)}\n </th>\n ))}\n </tr>\n </thead>\n <tbody onKeyDown={onGridKeyDownHandler}>\n {weeks.map((week, weekIndex) => (\n <tr key={weekIndex} className={styles['calendar-week']}>\n {week.map((date, dateIndex) => {\n const isFocusable = !!focusableDate && isSameDay(date, focusableDate);\n const isSelected = !!selectedDate && isSameDay(date, selectedDate);\n const isEnabled = !isDateEnabled || isDateEnabled(date);\n const isDateOnSameDay = isSameDay(date, new Date());\n\n // Can't be focused.\n let tabIndex = undefined;\n if (isFocusable && isEnabled) {\n // Next focus target.\n tabIndex = 0;\n } else if (isEnabled) {\n // Can be focused programmatically.\n tabIndex = -1;\n }\n\n // Screen-reader announcement for the focused day.\n let dayAnnouncement = getDateLabel(locale, date);\n if (isDateOnSameDay) {\n dayAnnouncement += '. ' + todayAriaLabel;\n }\n\n const onClick = () => {\n if (isEnabled) {\n onSelectDate(date);\n }\n };\n\n return (\n <td\n key={`${weekIndex}:${dateIndex}`}\n ref={tabIndex === 0 ? focusedDateRef : undefined}\n role=\"button\"\n tabIndex={tabIndex}\n aria-label={dayAnnouncement}\n aria-current={isSelected ? 'date' : undefined}\n aria-disabled={!isEnabled}\n onClick={onClick}\n className={clsx(styles['calendar-grid-cell'], styles['calendar-day'], {\n [styles['calendar-day-current-month']]: isSameMonth(date, baseDate),\n [styles['calendar-day-enabled']]: isEnabled,\n [styles['calendar-day-selected']]: isSelected,\n [styles['calendar-day-today']]: isDateOnSameDay,\n })}\n {...focusVisible}\n >\n <span className={styles['day-inner']} aria-hidden=\"true\">\n {date.getDate()}\n </span>\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n );\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/calendar/internal.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../src/calendar/internal.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,OAAO,EAAE,0BAA0B,EAAE,MAAM,+CAA+C,CAAC;AAE3F,oBAAY,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAEjD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,KAAK,EACL,MAAW,EACX,WAAW,EACX,aAA0B,EAC1B,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,QAAQ,EACR,iBAAiB,EACjB,GAAG,IAAI,EACR,EAAE,aAAa,GAAG,0BAA0B,eAgH5C"}
|
package/calendar/internal.js
CHANGED
|
@@ -8,24 +8,20 @@ import CalendarHeader from './header';
|
|
|
8
8
|
import Grid from './grid';
|
|
9
9
|
import moveFocusHandler from './utils/move-focus-handler';
|
|
10
10
|
import { memoizedDate } from './utils/memoized-date.js';
|
|
11
|
-
import { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update.js';
|
|
12
11
|
import { normalizeLocale, normalizeStartOfWeek } from './utils/locales.js';
|
|
13
12
|
import { formatDate } from '../internal/utils/date-time';
|
|
14
13
|
import { fireNonCancelableEvent } from '../internal/events/index.js';
|
|
15
14
|
import checkControlled from '../internal/hooks/check-controlled/index.js';
|
|
16
15
|
import clsx from 'clsx';
|
|
17
16
|
import { getBaseProps } from '../internal/base-component';
|
|
18
|
-
import { useMergeRefs } from '../internal/hooks/use-merge-refs/index.js';
|
|
19
17
|
export default function Calendar(_a) {
|
|
20
18
|
var value = _a.value, _b = _a.locale, locale = _b === void 0 ? '' : _b, startOfWeek = _a.startOfWeek, _c = _a.isDateEnabled, isDateEnabled = _c === void 0 ? function () { return true; } : _c, todayAriaLabel = _a.todayAriaLabel, nextMonthAriaLabel = _a.nextMonthAriaLabel, previousMonthAriaLabel = _a.previousMonthAriaLabel, onChange = _a.onChange, __internalRootRef = _a.__internalRootRef, rest = __rest(_a, ["value", "locale", "startOfWeek", "isDateEnabled", "todayAriaLabel", "nextMonthAriaLabel", "previousMonthAriaLabel", "onChange", "__internalRootRef"]);
|
|
21
19
|
checkControlled('Calendar', 'value', value, 'onChange', onChange);
|
|
22
20
|
var baseProps = getBaseProps(rest);
|
|
23
21
|
var normalizedLocale = normalizeLocale('Calendar', locale);
|
|
24
22
|
var normalizedStartOfWeek = normalizeStartOfWeek(startOfWeek, normalizedLocale);
|
|
25
|
-
var elementRef = useRef(null);
|
|
26
23
|
var gridWrapperRef = useRef(null);
|
|
27
24
|
var _d = useState(null), focusedDate = _d[0], setFocusedDate = _d[1];
|
|
28
|
-
var ref = useMergeRefs(elementRef, __internalRootRef);
|
|
29
25
|
// Set displayed date to value if defined or to current date otherwise.
|
|
30
26
|
var memoizedValue = memoizedDate('value', value);
|
|
31
27
|
var defaultDisplayedDate = memoizedValue !== null && memoizedValue !== void 0 ? memoizedValue : new Date();
|
|
@@ -60,7 +56,7 @@ export default function Calendar(_a) {
|
|
|
60
56
|
return startDate;
|
|
61
57
|
};
|
|
62
58
|
var baseDate = getBaseDate(displayedDate);
|
|
63
|
-
var
|
|
59
|
+
var focusableDate = focusedDate || selectFocusedDate(memoizedValue, baseDate);
|
|
64
60
|
var onHeaderChangeMonthHandler = function (isPreviousButtonClick) {
|
|
65
61
|
setDisplayedDate(addMonths(baseDate, isPreviousButtonClick ? -1 : 1));
|
|
66
62
|
setFocusedDate(null);
|
|
@@ -79,14 +75,6 @@ export default function Calendar(_a) {
|
|
|
79
75
|
fireNonCancelableEvent(onChange, { value: formatDate(date) });
|
|
80
76
|
setFocusedDate(null);
|
|
81
77
|
};
|
|
82
|
-
// The focused date changes as a feedback to keyboard navigation in the grid.
|
|
83
|
-
// Once changed, the corresponding day button needs to receive the actual focus.
|
|
84
|
-
useEffectOnUpdate(function () {
|
|
85
|
-
var _a, _b;
|
|
86
|
-
if (focusedDate) {
|
|
87
|
-
(_b = (_a = elementRef.current) === null || _a === void 0 ? void 0 : _a.querySelector(".".concat(styles['calendar-day-focusable']))) === null || _b === void 0 ? void 0 : _b.focus();
|
|
88
|
-
}
|
|
89
|
-
}, [focusedDate]);
|
|
90
78
|
var onGridBlur = function (event) {
|
|
91
79
|
var _a;
|
|
92
80
|
var newFocusTargetIsInGrid = event.relatedTarget && ((_a = gridWrapperRef.current) === null || _a === void 0 ? void 0 : _a.contains(event.relatedTarget));
|
|
@@ -94,10 +82,10 @@ export default function Calendar(_a) {
|
|
|
94
82
|
setFocusedDate(null);
|
|
95
83
|
}
|
|
96
84
|
};
|
|
97
|
-
return (React.createElement("div", __assign({ ref:
|
|
85
|
+
return (React.createElement("div", __assign({ ref: __internalRootRef, role: "application" }, baseProps, { className: clsx(styles.root, styles.calendar, baseProps.className) }),
|
|
98
86
|
React.createElement("div", { className: styles['calendar-inner'] },
|
|
99
87
|
React.createElement(CalendarHeader, { baseDate: baseDate, locale: normalizedLocale, onChangeMonth: onHeaderChangeMonthHandler, previousMonthLabel: previousMonthAriaLabel, nextMonthLabel: nextMonthAriaLabel }),
|
|
100
88
|
React.createElement("div", { onBlur: onGridBlur, ref: gridWrapperRef },
|
|
101
|
-
React.createElement(Grid, { locale: normalizedLocale, baseDate: baseDate, isDateEnabled: isDateEnabled, focusedDate:
|
|
89
|
+
React.createElement(Grid, { locale: normalizedLocale, baseDate: baseDate, isDateEnabled: isDateEnabled, focusedDate: focusedDate, focusableDate: focusableDate, onSelectDate: onGridSelectDateHandler, onFocusDate: onGridFocusDateHandler, onChangeMonth: onGridChangeMonthHandler, startOfWeek: normalizedStartOfWeek, todayAriaLabel: todayAriaLabel, selectedDate: memoizedValue, handleFocusMove: moveFocusHandler })))));
|
|
102
90
|
}
|
|
103
91
|
//# sourceMappingURL=internal.js.map
|
package/calendar/internal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/calendar/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { addDays, addMonths, getDaysInMonth, isSameMonth, startOfMonth } from 'date-fns';\nimport styles from './styles.css.js';\nimport CalendarHeader from './header';\nimport Grid from './grid';\nimport moveFocusHandler from './utils/move-focus-handler';\nimport { memoizedDate } from './utils/memoized-date.js';\nimport { useEffectOnUpdate } from '../internal/hooks/use-effect-on-update.js';\nimport { normalizeLocale, normalizeStartOfWeek } from './utils/locales.js';\nimport { formatDate } from '../internal/utils/date-time';\nimport { fireNonCancelableEvent } from '../internal/events/index.js';\nimport checkControlled from '../internal/hooks/check-controlled/index.js';\nimport clsx from 'clsx';\nimport { CalendarProps } from './interfaces.js';\nimport { getBaseProps } from '../internal/base-component';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component/index.js';\nimport { useMergeRefs } from '../internal/hooks/use-merge-refs/index.js';\n\nexport type DayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport default function Calendar({\n value,\n locale = '',\n startOfWeek,\n isDateEnabled = () => true,\n todayAriaLabel,\n nextMonthAriaLabel,\n previousMonthAriaLabel,\n onChange,\n __internalRootRef,\n ...rest\n}: CalendarProps & InternalBaseComponentProps) {\n checkControlled('Calendar', 'value', value, 'onChange', onChange);\n\n const baseProps = getBaseProps(rest);\n const normalizedLocale = normalizeLocale('Calendar', locale);\n const normalizedStartOfWeek = normalizeStartOfWeek(startOfWeek, normalizedLocale);\n const elementRef = useRef<HTMLDivElement>(null);\n const gridWrapperRef = useRef<HTMLDivElement>(null);\n const [focusedDate, setFocusedDate] = useState<Date | null>(null);\n const ref = useMergeRefs(elementRef, __internalRootRef);\n\n // Set displayed date to value if defined or to current date otherwise.\n const memoizedValue = memoizedDate('value', value);\n const defaultDisplayedDate = memoizedValue ?? new Date();\n const [displayedDate, setDisplayedDate] = useState(defaultDisplayedDate);\n\n // Update displayed date if value changes.\n useEffect(() => {\n memoizedValue && setDisplayedDate(prev => (prev.getTime() !== memoizedValue.getTime() ? memoizedValue : prev));\n }, [memoizedValue]);\n\n const selectFocusedDate = (selected: Date | null, baseDate: Date): Date | null => {\n if (selected && isDateEnabled(selected) && isSameMonth(selected, baseDate)) {\n return selected;\n }\n const today = new Date();\n if (isDateEnabled(today) && isSameMonth(today, baseDate)) {\n return today;\n }\n if (isDateEnabled(baseDate)) {\n return baseDate;\n }\n return null;\n };\n\n // Get the first enabled date of the month. If no day is enabled in the given month, return the first day of the month.\n // This is needed because `baseDate` is used as the first focusable date, for example when navigating to the calendar area.\n const getBaseDate = (date: Date) => {\n const startDate = startOfMonth(date);\n for (let i = 0; i < getDaysInMonth(date); i++) {\n const currentDate = addDays(startDate, i);\n if (isDateEnabled(currentDate)) {\n return currentDate;\n }\n }\n return startDate;\n };\n\n const baseDate: Date = getBaseDate(displayedDate);\n const focusedOrSelectedDate = focusedDate || selectFocusedDate(memoizedValue, baseDate);\n\n const onHeaderChangeMonthHandler = (isPreviousButtonClick?: boolean) => {\n setDisplayedDate(addMonths(baseDate, isPreviousButtonClick ? -1 : 1));\n setFocusedDate(null);\n };\n\n const onGridChangeMonthHandler = (newMonth: Date) => {\n setDisplayedDate(newMonth);\n setFocusedDate(null);\n };\n\n const onGridFocusDateHandler = (date: null | Date) => {\n if (date) {\n const value = memoizedDate('focused', formatDate(date));\n setFocusedDate(value);\n }\n };\n\n const onGridSelectDateHandler = (date: Date) => {\n fireNonCancelableEvent(onChange, { value: formatDate(date) });\n setFocusedDate(null);\n };\n\n // The focused date changes as a feedback to keyboard navigation in the grid.\n // Once changed, the corresponding day button needs to receive the actual focus.\n useEffectOnUpdate(() => {\n if (focusedDate) {\n (elementRef.current?.querySelector(`.${styles['calendar-day-focusable']}`) as HTMLDivElement)?.focus();\n }\n }, [focusedDate]);\n\n const onGridBlur = (event: React.FocusEvent) => {\n const newFocusTargetIsInGrid = event.relatedTarget && gridWrapperRef.current?.contains(event.relatedTarget as Node);\n if (!newFocusTargetIsInGrid) {\n setFocusedDate(null);\n }\n };\n\n return (\n <div\n ref={ref}\n role=\"application\"\n {...baseProps}\n className={clsx(styles.root, styles.calendar, baseProps.className)}\n >\n <div className={styles['calendar-inner']}>\n <CalendarHeader\n baseDate={baseDate}\n locale={normalizedLocale}\n onChangeMonth={onHeaderChangeMonthHandler}\n previousMonthLabel={previousMonthAriaLabel}\n nextMonthLabel={nextMonthAriaLabel}\n />\n <div onBlur={onGridBlur} ref={gridWrapperRef}>\n <Grid\n locale={normalizedLocale}\n baseDate={baseDate}\n isDateEnabled={isDateEnabled}\n focusedDate={focusedOrSelectedDate}\n onSelectDate={onGridSelectDateHandler}\n onFocusDate={onGridFocusDateHandler}\n onChangeMonth={onGridChangeMonthHandler}\n startOfWeek={normalizedStartOfWeek}\n todayAriaLabel={todayAriaLabel}\n selectedDate={memoizedValue}\n handleFocusMove={moveFocusHandler}\n />\n </div>\n </div>\n </div>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../../src/calendar/internal.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\n// SPDX-License-Identifier: Apache-2.0\n\nimport React, { useEffect, useRef, useState } from 'react';\nimport { addDays, addMonths, getDaysInMonth, isSameMonth, startOfMonth } from 'date-fns';\nimport styles from './styles.css.js';\nimport CalendarHeader from './header';\nimport Grid from './grid';\nimport moveFocusHandler from './utils/move-focus-handler';\nimport { memoizedDate } from './utils/memoized-date.js';\nimport { normalizeLocale, normalizeStartOfWeek } from './utils/locales.js';\nimport { formatDate } from '../internal/utils/date-time';\nimport { fireNonCancelableEvent } from '../internal/events/index.js';\nimport checkControlled from '../internal/hooks/check-controlled/index.js';\nimport clsx from 'clsx';\nimport { CalendarProps } from './interfaces.js';\nimport { getBaseProps } from '../internal/base-component';\nimport { InternalBaseComponentProps } from '../internal/hooks/use-base-component/index.js';\n\nexport type DayIndex = 0 | 1 | 2 | 3 | 4 | 5 | 6;\n\nexport default function Calendar({\n value,\n locale = '',\n startOfWeek,\n isDateEnabled = () => true,\n todayAriaLabel,\n nextMonthAriaLabel,\n previousMonthAriaLabel,\n onChange,\n __internalRootRef,\n ...rest\n}: CalendarProps & InternalBaseComponentProps) {\n checkControlled('Calendar', 'value', value, 'onChange', onChange);\n\n const baseProps = getBaseProps(rest);\n const normalizedLocale = normalizeLocale('Calendar', locale);\n const normalizedStartOfWeek = normalizeStartOfWeek(startOfWeek, normalizedLocale);\n const gridWrapperRef = useRef<HTMLDivElement>(null);\n const [focusedDate, setFocusedDate] = useState<Date | null>(null);\n\n // Set displayed date to value if defined or to current date otherwise.\n const memoizedValue = memoizedDate('value', value);\n const defaultDisplayedDate = memoizedValue ?? new Date();\n const [displayedDate, setDisplayedDate] = useState(defaultDisplayedDate);\n\n // Update displayed date if value changes.\n useEffect(() => {\n memoizedValue && setDisplayedDate(prev => (prev.getTime() !== memoizedValue.getTime() ? memoizedValue : prev));\n }, [memoizedValue]);\n\n const selectFocusedDate = (selected: Date | null, baseDate: Date): Date | null => {\n if (selected && isDateEnabled(selected) && isSameMonth(selected, baseDate)) {\n return selected;\n }\n const today = new Date();\n if (isDateEnabled(today) && isSameMonth(today, baseDate)) {\n return today;\n }\n if (isDateEnabled(baseDate)) {\n return baseDate;\n }\n return null;\n };\n\n // Get the first enabled date of the month. If no day is enabled in the given month, return the first day of the month.\n // This is needed because `baseDate` is used as the first focusable date, for example when navigating to the calendar area.\n const getBaseDate = (date: Date) => {\n const startDate = startOfMonth(date);\n for (let i = 0; i < getDaysInMonth(date); i++) {\n const currentDate = addDays(startDate, i);\n if (isDateEnabled(currentDate)) {\n return currentDate;\n }\n }\n return startDate;\n };\n\n const baseDate: Date = getBaseDate(displayedDate);\n const focusableDate = focusedDate || selectFocusedDate(memoizedValue, baseDate);\n\n const onHeaderChangeMonthHandler = (isPreviousButtonClick?: boolean) => {\n setDisplayedDate(addMonths(baseDate, isPreviousButtonClick ? -1 : 1));\n setFocusedDate(null);\n };\n\n const onGridChangeMonthHandler = (newMonth: Date) => {\n setDisplayedDate(newMonth);\n setFocusedDate(null);\n };\n\n const onGridFocusDateHandler = (date: null | Date) => {\n if (date) {\n const value = memoizedDate('focused', formatDate(date));\n setFocusedDate(value);\n }\n };\n\n const onGridSelectDateHandler = (date: Date) => {\n fireNonCancelableEvent(onChange, { value: formatDate(date) });\n setFocusedDate(null);\n };\n\n const onGridBlur = (event: React.FocusEvent) => {\n const newFocusTargetIsInGrid = event.relatedTarget && gridWrapperRef.current?.contains(event.relatedTarget as Node);\n if (!newFocusTargetIsInGrid) {\n setFocusedDate(null);\n }\n };\n\n return (\n <div\n ref={__internalRootRef}\n role=\"application\"\n {...baseProps}\n className={clsx(styles.root, styles.calendar, baseProps.className)}\n >\n <div className={styles['calendar-inner']}>\n <CalendarHeader\n baseDate={baseDate}\n locale={normalizedLocale}\n onChangeMonth={onHeaderChangeMonthHandler}\n previousMonthLabel={previousMonthAriaLabel}\n nextMonthLabel={nextMonthAriaLabel}\n />\n <div onBlur={onGridBlur} ref={gridWrapperRef}>\n <Grid\n locale={normalizedLocale}\n baseDate={baseDate}\n isDateEnabled={isDateEnabled}\n focusedDate={focusedDate}\n focusableDate={focusableDate}\n onSelectDate={onGridSelectDateHandler}\n onFocusDate={onGridFocusDateHandler}\n onChangeMonth={onGridChangeMonthHandler}\n startOfWeek={normalizedStartOfWeek}\n todayAriaLabel={todayAriaLabel}\n selectedDate={memoizedValue}\n handleFocusMove={moveFocusHandler}\n />\n </div>\n </div>\n </div>\n );\n}\n"]}
|
package/calendar/styles.css.js
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
|
|
2
2
|
import './styles.scoped.css';
|
|
3
3
|
export default {
|
|
4
|
-
"calendar": "
|
|
5
|
-
"awsui-motion-fade-in-0": "awsui_awsui-motion-fade-in-
|
|
6
|
-
"root": "
|
|
7
|
-
"calendar-inner": "awsui_calendar-
|
|
8
|
-
"calendar-header": "awsui_calendar-
|
|
9
|
-
"calendar-header-month": "awsui_calendar-header-
|
|
10
|
-
"calendar-next-month-btn": "awsui_calendar-next-month-
|
|
11
|
-
"calendar-prev-month-btn": "awsui_calendar-prev-month-
|
|
12
|
-
"calendar-
|
|
13
|
-
"calendar-
|
|
14
|
-
"calendar-
|
|
15
|
-
"calendar-
|
|
16
|
-
"calendar-day": "awsui_calendar-
|
|
17
|
-
"calendar-day-
|
|
18
|
-
"calendar-day-
|
|
19
|
-
"calendar-day-
|
|
20
|
-
"
|
|
21
|
-
"calendar-
|
|
22
|
-
"calendar-day-today": "awsui_calendar-day-today_1ykar_eulmr_220",
|
|
23
|
-
"day-inner": "awsui_day-inner_1ykar_eulmr_234"
|
|
4
|
+
"calendar": "awsui_calendar_1ykar_in88p_93",
|
|
5
|
+
"awsui-motion-fade-in-0": "awsui_awsui-motion-fade-in-0_1ykar_in88p_1",
|
|
6
|
+
"root": "awsui_root_1ykar_in88p_124",
|
|
7
|
+
"calendar-inner": "awsui_calendar-inner_1ykar_in88p_141",
|
|
8
|
+
"calendar-header": "awsui_calendar-header_1ykar_in88p_144",
|
|
9
|
+
"calendar-header-month": "awsui_calendar-header-month_1ykar_in88p_149",
|
|
10
|
+
"calendar-next-month-btn": "awsui_calendar-next-month-btn_1ykar_in88p_155",
|
|
11
|
+
"calendar-prev-month-btn": "awsui_calendar-prev-month-btn_1ykar_in88p_158",
|
|
12
|
+
"calendar-grid": "awsui_calendar-grid_1ykar_in88p_161",
|
|
13
|
+
"calendar-grid-cell": "awsui_calendar-grid-cell_1ykar_in88p_165",
|
|
14
|
+
"calendar-day-header": "awsui_calendar-day-header_1ykar_in88p_171",
|
|
15
|
+
"calendar-day": "awsui_calendar-day_1ykar_in88p_171",
|
|
16
|
+
"calendar-day-enabled": "awsui_calendar-day-enabled_1ykar_in88p_188",
|
|
17
|
+
"calendar-day-current-month": "awsui_calendar-day-current-month_1ykar_in88p_195",
|
|
18
|
+
"calendar-day-selected": "awsui_calendar-day-selected_1ykar_in88p_202",
|
|
19
|
+
"calendar-day-today": "awsui_calendar-day-today_1ykar_in88p_205",
|
|
20
|
+
"day-inner": "awsui_day-inner_1ykar_in88p_219",
|
|
21
|
+
"calendar-week": "awsui_calendar-week_1ykar_in88p_283"
|
|
24
22
|
};
|
|
25
23
|
|
|
@@ -90,11 +90,11 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
90
90
|
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
91
91
|
SPDX-License-Identifier: Apache-2.0
|
|
92
92
|
*/
|
|
93
|
-
.
|
|
94
|
-
animation: awsui_awsui-motion-fade-in-
|
|
93
|
+
.awsui_calendar_1ykar_in88p_93:not(#\9) {
|
|
94
|
+
animation: awsui_awsui-motion-fade-in-0_1ykar_in88p_1 var(--motion-duration-show-quick-tyaalm, 135ms) var(--motion-easing-show-quick-1fcgbv, ease-out);
|
|
95
95
|
animation-fill-mode: both;
|
|
96
96
|
}
|
|
97
|
-
@keyframes awsui_awsui-motion-fade-in-
|
|
97
|
+
@keyframes awsui_awsui-motion-fade-in-0_1ykar_in88p_1 {
|
|
98
98
|
from {
|
|
99
99
|
opacity: 0;
|
|
100
100
|
}
|
|
@@ -103,12 +103,12 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
@media (prefers-reduced-motion: reduce) {
|
|
106
|
-
.
|
|
106
|
+
.awsui_calendar_1ykar_in88p_93:not(#\9) {
|
|
107
107
|
animation: none;
|
|
108
108
|
transition: none;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
.awsui-motion-disabled .
|
|
111
|
+
.awsui-motion-disabled .awsui_calendar_1ykar_in88p_93:not(#\9), .awsui-mode-entering .awsui_calendar_1ykar_in88p_93:not(#\9) {
|
|
112
112
|
animation: none;
|
|
113
113
|
transition: none;
|
|
114
114
|
}
|
|
@@ -121,11 +121,11 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
121
121
|
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
122
122
|
SPDX-License-Identifier: Apache-2.0
|
|
123
123
|
*/
|
|
124
|
-
.
|
|
124
|
+
.awsui_root_1ykar_in88p_124:not(#\9) {
|
|
125
125
|
/* used in test-utils */
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
.
|
|
128
|
+
.awsui_calendar_1ykar_in88p_93:not(#\9) {
|
|
129
129
|
display: block;
|
|
130
130
|
width: var(--size-calendar-grid-width-lxsx0p, 238px);
|
|
131
131
|
overflow: auto;
|
|
@@ -164,90 +164,75 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
164
164
|
font-weight: 400;
|
|
165
165
|
font-family: var(--font-family-base-qnistn, "Open Sans", "Helvetica Neue", Roboto, Arial, sans-serif);
|
|
166
166
|
}
|
|
167
|
-
.awsui_calendar-
|
|
167
|
+
.awsui_calendar-inner_1ykar_in88p_141:not(#\9) {
|
|
168
168
|
margin: var(--space-xs-rsr2qu, 8px);
|
|
169
169
|
}
|
|
170
|
-
.awsui_calendar-
|
|
170
|
+
.awsui_calendar-header_1ykar_in88p_144:not(#\9) {
|
|
171
171
|
display: flex;
|
|
172
172
|
justify-content: space-between;
|
|
173
173
|
align-items: center;
|
|
174
174
|
}
|
|
175
|
-
.awsui_calendar-header-
|
|
175
|
+
.awsui_calendar-header-month_1ykar_in88p_149:not(#\9) {
|
|
176
176
|
font-size: var(--font-body-m-size-sregvd, 14px);
|
|
177
177
|
line-height: var(--font-body-m-line-height-i7xxvv, 22px);
|
|
178
178
|
font-weight: 700;
|
|
179
179
|
color: var(--color-text-dropdown-item-default-7tg9p2, #000716);
|
|
180
180
|
}
|
|
181
|
-
.awsui_calendar-next-month-
|
|
181
|
+
.awsui_calendar-next-month-btn_1ykar_in88p_155:not(#\9) {
|
|
182
182
|
/* used for identifying element */
|
|
183
183
|
}
|
|
184
|
-
.awsui_calendar-prev-month-
|
|
184
|
+
.awsui_calendar-prev-month-btn_1ykar_in88p_158:not(#\9) {
|
|
185
185
|
/* used for identifying element */
|
|
186
186
|
}
|
|
187
|
-
.awsui_calendar-
|
|
188
|
-
|
|
189
|
-
|
|
187
|
+
.awsui_calendar-grid_1ykar_in88p_161:not(#\9) {
|
|
188
|
+
width: 100%;
|
|
189
|
+
border-spacing: 0;
|
|
190
190
|
}
|
|
191
|
-
.awsui_calendar-
|
|
192
|
-
|
|
193
|
-
width: 0;
|
|
191
|
+
.awsui_calendar-grid-cell_1ykar_in88p_165:not(#\9) {
|
|
192
|
+
width: 14.2857142857%;
|
|
194
193
|
word-break: break-word;
|
|
195
194
|
text-align: center;
|
|
195
|
+
font-weight: unset;
|
|
196
|
+
}
|
|
197
|
+
.awsui_calendar-day-header_1ykar_in88p_171:not(#\9) {
|
|
196
198
|
padding: var(--space-s-hv8c1d, 12px) 0 var(--space-xxs-ynfts5, 4px);
|
|
197
199
|
color: var(--color-text-calendar-month-elf7e9, #5f6b7a);
|
|
198
200
|
font-size: var(--font-body-s-size-ukw2p9, 12px);
|
|
199
201
|
line-height: var(--font-body-s-line-height-kdsbrl, 16px);
|
|
200
202
|
letter-spacing: var(--font-body-s-letter-spacing-cy0oxj, 0.005em);
|
|
201
203
|
}
|
|
202
|
-
.awsui_calendar-
|
|
203
|
-
border: 1px solid var(--color-border-calendar-grid-sshunw, transparent);
|
|
204
|
-
}
|
|
205
|
-
.awsui_calendar-week_1ykar_eulmr_179:not(#\9) {
|
|
206
|
-
display: flex;
|
|
207
|
-
justify-content: stretch;
|
|
208
|
-
}
|
|
209
|
-
.awsui_calendar-day_1ykar_eulmr_161:not(#\9) {
|
|
210
|
-
flex: 1 1 0%;
|
|
211
|
-
width: 0;
|
|
212
|
-
word-break: break-word;
|
|
213
|
-
text-align: center;
|
|
204
|
+
.awsui_calendar-day_1ykar_in88p_171:not(#\9) {
|
|
214
205
|
border-bottom: 1px solid var(--color-border-calendar-grid-sshunw, transparent);
|
|
215
206
|
border-right: 1px solid var(--color-border-calendar-grid-sshunw, transparent);
|
|
216
207
|
padding: var(--space-xxs-ynfts5, 4px) 0;
|
|
217
208
|
color: var(--color-text-dropdown-item-disabled-varol7, #9ba7b6);
|
|
218
209
|
position: relative;
|
|
219
210
|
}
|
|
220
|
-
.awsui_calendar-
|
|
221
|
-
border-
|
|
222
|
-
}
|
|
223
|
-
.awsui_calendar-day-in-last-week_1ykar_eulmr_197:not(#\9) {
|
|
224
|
-
border-bottom: none;
|
|
211
|
+
.awsui_calendar-day_1ykar_in88p_171:not(#\9):first-child {
|
|
212
|
+
border-left: 1px solid var(--color-border-calendar-grid-sshunw, transparent);
|
|
225
213
|
}
|
|
226
|
-
.awsui_calendar-day-
|
|
227
|
-
/* used for identifying element */
|
|
228
|
-
}
|
|
229
|
-
.awsui_calendar-day-enabled_1ykar_eulmr_203:not(#\9) {
|
|
214
|
+
.awsui_calendar-day-enabled_1ykar_in88p_188:not(#\9) {
|
|
230
215
|
cursor: pointer;
|
|
231
216
|
color: var(--color-text-dropdown-item-secondary-0me7js, #5f6b7a);
|
|
232
217
|
}
|
|
233
|
-
.awsui_calendar-day-
|
|
218
|
+
.awsui_calendar-day-enabled_1ykar_in88p_188:not(#\9)::after {
|
|
234
219
|
border-radius: var(--border-radius-item-u2ibpi, 8px);
|
|
235
220
|
}
|
|
236
|
-
.awsui_calendar-day-
|
|
221
|
+
.awsui_calendar-day-enabled_1ykar_in88p_188.awsui_calendar-day-current-month_1ykar_in88p_195:not(#\9) {
|
|
237
222
|
color: var(--color-text-dropdown-item-default-7tg9p2, #000716);
|
|
238
223
|
}
|
|
239
|
-
.awsui_calendar-day-
|
|
224
|
+
.awsui_calendar-day-enabled_1ykar_in88p_188.awsui_calendar-day-current-month_1ykar_in88p_195:not(#\9):hover {
|
|
240
225
|
color: var(--color-text-calendar-day-hover-graajh, #000716);
|
|
241
226
|
background-color: var(--color-background-dropdown-item-hover-mqsxkv, #f4f4f4);
|
|
242
227
|
}
|
|
243
|
-
.awsui_calendar-day-
|
|
228
|
+
.awsui_calendar-day-enabled_1ykar_in88p_188.awsui_calendar-day-current-month_1ykar_in88p_195:not(#\9):hover:not(.awsui_calendar-day-selected_1ykar_in88p_202)::after {
|
|
244
229
|
border: var(--border-item-width-qbbbsa, 2px) solid var(--color-border-dropdown-item-hover-tyzq9m, #7d8998);
|
|
245
230
|
}
|
|
246
|
-
.awsui_calendar-day-
|
|
231
|
+
.awsui_calendar-day-today_1ykar_in88p_205:not(#\9) {
|
|
247
232
|
background-color: var(--color-background-calendar-today-762czq, #f4f4f4);
|
|
248
233
|
border-radius: var(--border-radius-item-u2ibpi, 8px);
|
|
249
234
|
}
|
|
250
|
-
.awsui_calendar-
|
|
235
|
+
.awsui_calendar-day_1ykar_in88p_171:not(#\9)::after {
|
|
251
236
|
content: "";
|
|
252
237
|
position: absolute;
|
|
253
238
|
z-index: 1;
|
|
@@ -257,21 +242,21 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
257
242
|
right: calc(-1 * var(--border-item-width-qbbbsa, 2px));
|
|
258
243
|
background-color: transparent;
|
|
259
244
|
}
|
|
260
|
-
.awsui_calendar-
|
|
245
|
+
.awsui_calendar-day_1ykar_in88p_171 > .awsui_day-inner_1ykar_in88p_219:not(#\9) {
|
|
261
246
|
position: relative;
|
|
262
247
|
z-index: 1;
|
|
263
248
|
}
|
|
264
|
-
.awsui_calendar-
|
|
249
|
+
.awsui_calendar-day_1ykar_in88p_171:not(#\9):focus {
|
|
265
250
|
outline: none;
|
|
266
251
|
}
|
|
267
|
-
.awsui_calendar-
|
|
252
|
+
.awsui_calendar-day_1ykar_in88p_171:not(#\9):focus[data-awsui-focus-visible=true]:focus {
|
|
268
253
|
position: relative;
|
|
269
254
|
}
|
|
270
|
-
.awsui_calendar-
|
|
255
|
+
.awsui_calendar-day_1ykar_in88p_171:not(#\9):focus[data-awsui-focus-visible=true]:focus {
|
|
271
256
|
outline: 2px dotted transparent;
|
|
272
257
|
outline-offset: calc(var(--space-calendar-grid-focus-outline-gutter-v3dwvl, -5px) - 1px);
|
|
273
258
|
}
|
|
274
|
-
.awsui_calendar-
|
|
259
|
+
.awsui_calendar-day_1ykar_in88p_171:not(#\9):focus[data-awsui-focus-visible=true]:focus::before {
|
|
275
260
|
content: " ";
|
|
276
261
|
display: block;
|
|
277
262
|
position: absolute;
|
|
@@ -282,22 +267,22 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
282
267
|
border-radius: var(--border-radius-calendar-day-focus-ring-a8mlqd, 3px);
|
|
283
268
|
box-shadow: 0 0 0 2px var(--color-border-item-focused-ap3b6s, #0972d3);
|
|
284
269
|
}
|
|
285
|
-
.awsui_calendar-
|
|
270
|
+
.awsui_calendar-day_1ykar_in88p_171:not(#\9):focus[data-awsui-focus-visible=true]:focus::before {
|
|
286
271
|
z-index: 2;
|
|
287
272
|
}
|
|
288
|
-
.awsui_calendar-day-
|
|
273
|
+
.awsui_calendar-day-selected_1ykar_in88p_202:not(#\9) {
|
|
289
274
|
border-color: transparent;
|
|
290
275
|
position: relative;
|
|
291
276
|
z-index: 2;
|
|
292
277
|
}
|
|
293
|
-
.awsui_calendar-day-
|
|
278
|
+
.awsui_calendar-day-selected_1ykar_in88p_202:not(#\9):focus[data-awsui-focus-visible=true]:focus {
|
|
294
279
|
position: relative;
|
|
295
280
|
}
|
|
296
|
-
.awsui_calendar-day-
|
|
281
|
+
.awsui_calendar-day-selected_1ykar_in88p_202:not(#\9):focus[data-awsui-focus-visible=true]:focus {
|
|
297
282
|
outline: 2px dotted transparent;
|
|
298
283
|
outline-offset: calc(var(--space-calendar-grid-focus-outline-gutter-v3dwvl, -5px) - 1px);
|
|
299
284
|
}
|
|
300
|
-
.awsui_calendar-day-
|
|
285
|
+
.awsui_calendar-day-selected_1ykar_in88p_202:not(#\9):focus[data-awsui-focus-visible=true]:focus::before {
|
|
301
286
|
content: " ";
|
|
302
287
|
display: block;
|
|
303
288
|
position: absolute;
|
|
@@ -308,16 +293,19 @@ surrounding text. (WCAG F73) https://www.w3.org/WAI/WCAG21/Techniques/failures/F
|
|
|
308
293
|
border-radius: var(--border-radius-calendar-day-focus-ring-a8mlqd, 3px);
|
|
309
294
|
box-shadow: 0 0 0 2px var(--color-border-calendar-grid-selected-focus-ring-cxqa0s, #fbfbfb);
|
|
310
295
|
}
|
|
311
|
-
.awsui_calendar-day-
|
|
296
|
+
.awsui_calendar-day-selected_1ykar_in88p_202:not(#\9):focus[data-awsui-focus-visible=true]:focus::before {
|
|
312
297
|
z-index: 2;
|
|
313
298
|
}
|
|
314
|
-
.awsui_calendar-day-
|
|
299
|
+
.awsui_calendar-day-selected_1ykar_in88p_202:not(#\9)::after {
|
|
315
300
|
background-color: var(--color-background-control-checked-9admlu, #0972d3);
|
|
316
301
|
border: var(--border-item-width-qbbbsa, 2px) solid var(--color-background-control-checked-9admlu, #0972d3);
|
|
317
302
|
border-radius: var(--border-radius-item-u2ibpi, 8px);
|
|
318
303
|
}
|
|
319
|
-
.awsui_calendar-day-
|
|
304
|
+
.awsui_calendar-day-selected_1ykar_in88p_202 > .awsui_day-inner_1ykar_in88p_219:not(#\9) {
|
|
320
305
|
z-index: 2;
|
|
321
306
|
color: var(--color-background-control-default-4pa05r, #ffffff);
|
|
322
307
|
position: relative;
|
|
308
|
+
}
|
|
309
|
+
.awsui_calendar-week_1ykar_in88p_283:not(#\9):first-child > .awsui_calendar-day_1ykar_in88p_171 {
|
|
310
|
+
border-top: 1px solid var(--color-border-calendar-grid-sshunw, transparent);
|
|
323
311
|
}
|
|
@@ -2,25 +2,23 @@
|
|
|
2
2
|
// es-module interop with Babel and Typescript
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
4
|
module.exports.default = {
|
|
5
|
-
"calendar": "
|
|
6
|
-
"awsui-motion-fade-in-0": "awsui_awsui-motion-fade-in-
|
|
7
|
-
"root": "
|
|
8
|
-
"calendar-inner": "awsui_calendar-
|
|
9
|
-
"calendar-header": "awsui_calendar-
|
|
10
|
-
"calendar-header-month": "awsui_calendar-header-
|
|
11
|
-
"calendar-next-month-btn": "awsui_calendar-next-month-
|
|
12
|
-
"calendar-prev-month-btn": "awsui_calendar-prev-month-
|
|
13
|
-
"calendar-
|
|
14
|
-
"calendar-
|
|
15
|
-
"calendar-
|
|
16
|
-
"calendar-
|
|
17
|
-
"calendar-day": "awsui_calendar-
|
|
18
|
-
"calendar-day-
|
|
19
|
-
"calendar-day-
|
|
20
|
-
"calendar-day-
|
|
21
|
-
"
|
|
22
|
-
"calendar-
|
|
23
|
-
"calendar-day-today": "awsui_calendar-day-today_1ykar_eulmr_220",
|
|
24
|
-
"day-inner": "awsui_day-inner_1ykar_eulmr_234"
|
|
5
|
+
"calendar": "awsui_calendar_1ykar_in88p_93",
|
|
6
|
+
"awsui-motion-fade-in-0": "awsui_awsui-motion-fade-in-0_1ykar_in88p_1",
|
|
7
|
+
"root": "awsui_root_1ykar_in88p_124",
|
|
8
|
+
"calendar-inner": "awsui_calendar-inner_1ykar_in88p_141",
|
|
9
|
+
"calendar-header": "awsui_calendar-header_1ykar_in88p_144",
|
|
10
|
+
"calendar-header-month": "awsui_calendar-header-month_1ykar_in88p_149",
|
|
11
|
+
"calendar-next-month-btn": "awsui_calendar-next-month-btn_1ykar_in88p_155",
|
|
12
|
+
"calendar-prev-month-btn": "awsui_calendar-prev-month-btn_1ykar_in88p_158",
|
|
13
|
+
"calendar-grid": "awsui_calendar-grid_1ykar_in88p_161",
|
|
14
|
+
"calendar-grid-cell": "awsui_calendar-grid-cell_1ykar_in88p_165",
|
|
15
|
+
"calendar-day-header": "awsui_calendar-day-header_1ykar_in88p_171",
|
|
16
|
+
"calendar-day": "awsui_calendar-day_1ykar_in88p_171",
|
|
17
|
+
"calendar-day-enabled": "awsui_calendar-day-enabled_1ykar_in88p_188",
|
|
18
|
+
"calendar-day-current-month": "awsui_calendar-day-current-month_1ykar_in88p_195",
|
|
19
|
+
"calendar-day-selected": "awsui_calendar-day-selected_1ykar_in88p_202",
|
|
20
|
+
"calendar-day-today": "awsui_calendar-day-today_1ykar_in88p_205",
|
|
21
|
+
"day-inner": "awsui_day-inner_1ykar_in88p_219",
|
|
22
|
+
"calendar-week": "awsui_calendar-week_1ykar_in88p_283"
|
|
25
23
|
};
|
|
26
24
|
|
|
@@ -8,7 +8,7 @@ export interface GridProps {
|
|
|
8
8
|
rangeStartDate: Date | null;
|
|
9
9
|
rangeEndDate: Date | null;
|
|
10
10
|
focusedDate: Date | null;
|
|
11
|
-
focusedDateRef: React.RefObject<
|
|
11
|
+
focusedDateRef: React.RefObject<HTMLTableCellElement>;
|
|
12
12
|
onSelectDate: DateChangeHandler;
|
|
13
13
|
onGridKeyDownHandler: (e: React.KeyboardEvent) => void;
|
|
14
14
|
onFocusedDateChange: React.Dispatch<React.SetStateAction<Date | null>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/grid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../../../../src/date-range-picker/calendar/grids/grid.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAcvC,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAOxD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,IAAI,CAAC;IACf,iBAAiB,EAAE,IAAI,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,IAAI,GAAG,IAAI,CAAC;IAE7B,cAAc,EAAE,IAAI,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,IAAI,GAAG,IAAI,CAAC;IAE1B,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,KAAK,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAEtD,YAAY,EAAE,iBAAiB,CAAC;IAChC,oBAAoB,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,IAAI,CAAC;IACvD,mBAAmB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;IAEvE,aAAa,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;IAE1D,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,QAAQ,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IAEvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,IAAI,CAAC,EACnB,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EAEX,cAAc,EAEd,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EAEnB,aAAa,EAEb,MAAM,EACN,WAAW,EACX,cAAc,EAEd,SAAS,GACV,EAAE,SAAS,eAmIX"}
|
|
@@ -1,13 +1,15 @@
|
|
|
1
|
+
import { __assign } from "tslib";
|
|
1
2
|
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
3
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
4
|
import React, { useMemo } from 'react';
|
|
4
|
-
import styles from '
|
|
5
|
-
import
|
|
6
|
-
import { isSameMonth, isAfter, isBefore, isSameDay, addWeeks, addDays } from 'date-fns';
|
|
5
|
+
import styles from './styles.css.js';
|
|
6
|
+
import { isSameMonth, isAfter, isBefore, isSameDay, addWeeks, addDays, isLastDayOfMonth, getDaysInMonth, isToday, } from 'date-fns';
|
|
7
7
|
import { getCalendarMonth } from 'mnth';
|
|
8
8
|
import rotateDayIndexes from '../../../calendar/utils/rotate-day-indexes';
|
|
9
|
-
import { renderDayName } from '../../../calendar/utils/intl';
|
|
9
|
+
import { getDateLabel, renderDayName } from '../../../calendar/utils/intl';
|
|
10
10
|
import clsx from 'clsx';
|
|
11
|
+
import { formatDate } from '../../../internal/utils/date-time';
|
|
12
|
+
import useFocusVisible from '../../../internal/hooks/focus-visible/index.js';
|
|
11
13
|
export function Grid(_a) {
|
|
12
14
|
var baseDate = _a.baseDate, selectedStartDate = _a.selectedStartDate, selectedEndDate = _a.selectedEndDate, rangeStartDate = _a.rangeStartDate, rangeEndDate = _a.rangeEndDate, focusedDate = _a.focusedDate, focusedDateRef = _a.focusedDateRef, onSelectDate = _a.onSelectDate, onGridKeyDownHandler = _a.onGridKeyDownHandler, onFocusedDateChange = _a.onFocusedDateChange, isDateEnabled = _a.isDateEnabled, locale = _a.locale, startOfWeek = _a.startOfWeek, todayAriaLabel = _a.todayAriaLabel, className = _a.className;
|
|
13
15
|
var baseDateTime = baseDate === null || baseDate === void 0 ? void 0 : baseDate.getTime();
|
|
@@ -15,10 +17,13 @@ export function Grid(_a) {
|
|
|
15
17
|
var weeks = useMemo(function () { return getCalendarMonth(baseDate, { firstDayOfWeek: startOfWeek }); },
|
|
16
18
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
17
19
|
[baseDateTime, startOfWeek]);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
React.createElement("
|
|
21
|
-
return (React.createElement("
|
|
20
|
+
var focusVisible = useFocusVisible();
|
|
21
|
+
return (React.createElement("table", { role: "none", className: clsx(styles.grid, className) },
|
|
22
|
+
React.createElement("thead", null,
|
|
23
|
+
React.createElement("tr", null, rotateDayIndexes(startOfWeek).map(function (dayIndex) { return (React.createElement("th", { key: dayIndex, scope: "col", className: clsx(styles['grid-cell'], styles['day-header']) }, renderDayName(locale, dayIndex))); }))),
|
|
24
|
+
React.createElement("tbody", { onKeyDown: onGridKeyDownHandler }, weeks.map(function (week, weekIndex) {
|
|
25
|
+
return (React.createElement("tr", { key: weekIndex, className: styles.week }, week.map(function (date, dateIndex) {
|
|
26
|
+
var _a, _b, _c;
|
|
22
27
|
var isStartDate = !!selectedStartDate && isSameDay(date, selectedStartDate);
|
|
23
28
|
var isEndDate = !!selectedEndDate && isSameDay(date, selectedEndDate);
|
|
24
29
|
var isSelected = isStartDate || isEndDate;
|
|
@@ -31,7 +36,58 @@ export function Grid(_a) {
|
|
|
31
36
|
var onlyOneSelected = !!rangeStartDate && !!rangeEndDate
|
|
32
37
|
? isSameDay(rangeStartDate, rangeEndDate)
|
|
33
38
|
: !selectedStartDate || !selectedEndDate;
|
|
34
|
-
|
|
39
|
+
var isEnabled = !isDateEnabled || isDateEnabled(date);
|
|
40
|
+
var isFocusable = isFocused && isEnabled;
|
|
41
|
+
var baseClasses = (_a = {},
|
|
42
|
+
_a[styles.day] = true,
|
|
43
|
+
_a[styles['grid-cell']] = true,
|
|
44
|
+
_a[styles['in-first-row']] = weekIndex === 0,
|
|
45
|
+
_a[styles['in-first-column']] = dateIndex === 0,
|
|
46
|
+
_a);
|
|
47
|
+
if (!isSameMonth(date, baseDate)) {
|
|
48
|
+
return (React.createElement("td", { key: "".concat(weekIndex, ":").concat(dateIndex), ref: isFocused ? focusedDateRef : undefined, className: clsx(baseClasses, (_b = {},
|
|
49
|
+
_b[styles['in-previous-month']] = isBefore(date, baseDate),
|
|
50
|
+
_b[styles['last-day-of-month']] = isLastDayOfMonth(date),
|
|
51
|
+
_b[styles['in-next-month']] = isAfter(date, baseDate),
|
|
52
|
+
_b)) }));
|
|
53
|
+
}
|
|
54
|
+
var handlers = {};
|
|
55
|
+
if (isEnabled) {
|
|
56
|
+
handlers.onClick = function () { return onSelectDate(date); };
|
|
57
|
+
handlers.onFocus = function () { return onFocusedDateChange(date); };
|
|
58
|
+
}
|
|
59
|
+
// Can't be focused.
|
|
60
|
+
var tabIndex = undefined;
|
|
61
|
+
if (isFocusable && isEnabled) {
|
|
62
|
+
// Next focus target.
|
|
63
|
+
tabIndex = 0;
|
|
64
|
+
}
|
|
65
|
+
else if (isEnabled) {
|
|
66
|
+
// Can be focused programmatically.
|
|
67
|
+
tabIndex = -1;
|
|
68
|
+
}
|
|
69
|
+
// Screen-reader announcement for the focused day.
|
|
70
|
+
var dayAnnouncement = getDateLabel(locale, date);
|
|
71
|
+
if (isToday(date)) {
|
|
72
|
+
dayAnnouncement += '. ' + todayAriaLabel;
|
|
73
|
+
}
|
|
74
|
+
return (React.createElement("td", __assign({ ref: isFocused ? focusedDateRef : undefined, key: "".concat(weekIndex, ":").concat(dateIndex), className: clsx(baseClasses, (_c = {},
|
|
75
|
+
_c[styles['in-current-month']] = isSameMonth(date, baseDate),
|
|
76
|
+
_c[styles.enabled] = isEnabled,
|
|
77
|
+
_c[styles.selected] = isSelected,
|
|
78
|
+
_c[styles['start-date']] = isStartDate,
|
|
79
|
+
_c[styles['end-date']] = isEndDate,
|
|
80
|
+
_c[styles['range-start-date']] = isRangeStartDate,
|
|
81
|
+
_c[styles['range-end-date']] = isRangeEndDate,
|
|
82
|
+
_c[styles['no-range']] = isSelected && onlyOneSelected,
|
|
83
|
+
_c[styles['in-range']] = dateIsInRange,
|
|
84
|
+
_c[styles['in-range-border-top']] = !!inRangeStartWeek || date.getDate() <= 7,
|
|
85
|
+
_c[styles['in-range-border-bottom']] = !!inRangeEndWeek || date.getDate() > getDaysInMonth(date) - 7,
|
|
86
|
+
_c[styles['in-range-border-left']] = dateIndex === 0 || date.getDate() === 1 || isRangeStartDate,
|
|
87
|
+
_c[styles['in-range-border-right']] = dateIndex === week.length - 1 || isLastDayOfMonth(date) || isRangeEndDate,
|
|
88
|
+
_c[styles.today] = isToday(date),
|
|
89
|
+
_c)), "aria-label": dayAnnouncement, "aria-pressed": isSelected || dateIsInRange, "aria-current": isToday(date) ? 'date' : undefined, "data-date": formatDate(date), role: "button", tabIndex: tabIndex }, handlers, focusVisible),
|
|
90
|
+
React.createElement("span", { className: styles['day-inner'] }, date.getDate())));
|
|
35
91
|
})));
|
|
36
92
|
}))));
|
|
37
93
|
}
|