@pingux/astro 2.70.0-alpha.2 → 2.70.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/lib/cjs/components/AccordionItem/AccordionItem.d.ts +1 -1
- package/lib/cjs/components/AccordionItem/AccordionItem.js +1 -1
- package/lib/cjs/components/Calendar/Calendar.js +4 -0
- package/lib/cjs/components/Calendar/Calendar.mdx +1 -1
- package/lib/cjs/components/Calendar/Calendar.test.js +1 -4
- package/lib/cjs/components/Calendar/CalendarCell.js +1 -1
- package/lib/cjs/components/DatePicker/DatePicker.test.js +62 -6
- package/lib/cjs/components/RangeCalendar/RangeCalendar.d.ts +7 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendar.js +100 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendar.mdx +39 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendar.stories.d.ts +103 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendar.stories.js +131 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendar.styles.d.ts +104 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendar.styles.js +118 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendar.test.d.ts +1 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendar.test.js +217 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendarCell.d.ts +4 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendarCell.js +96 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendarGrid.d.ts +4 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendarGrid.js +70 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendarHeader.d.ts +4 -0
- package/lib/cjs/components/RangeCalendar/RangeCalendarHeader.js +85 -0
- package/lib/cjs/components/RangeCalendar/index.d.ts +2 -0
- package/lib/cjs/components/RangeCalendar/index.js +33 -0
- package/lib/cjs/index.d.ts +2 -0
- package/lib/cjs/index.js +45 -26
- package/lib/cjs/styles/variants/variants.js +2 -0
- package/lib/cjs/types/calendar.d.ts +51 -16
- package/lib/components/AccordionItem/AccordionItem.js +0 -3
- package/lib/components/Calendar/Calendar.js +4 -0
- package/lib/components/Calendar/Calendar.mdx +1 -1
- package/lib/components/Calendar/Calendar.test.js +1 -4
- package/lib/components/Calendar/CalendarCell.js +1 -1
- package/lib/components/DatePicker/DatePicker.test.js +62 -6
- package/lib/components/RangeCalendar/RangeCalendar.js +86 -0
- package/lib/components/RangeCalendar/RangeCalendar.mdx +39 -0
- package/lib/components/RangeCalendar/RangeCalendar.stories.js +112 -0
- package/lib/components/RangeCalendar/RangeCalendar.styles.js +110 -0
- package/lib/components/RangeCalendar/RangeCalendar.test.js +208 -0
- package/lib/components/RangeCalendar/RangeCalendarCell.js +82 -0
- package/lib/components/RangeCalendar/RangeCalendarGrid.js +61 -0
- package/lib/components/RangeCalendar/RangeCalendarHeader.js +76 -0
- package/lib/components/RangeCalendar/index.js +2 -0
- package/lib/index.js +2 -0
- package/lib/styles/variants/variants.js +2 -0
- package/package.json +1 -1
@@ -25,7 +25,7 @@ var _hooks = require("../../hooks");
|
|
25
25
|
var _index = require("../../index");
|
26
26
|
var _Accordion = require("../AccordionGroup/Accordion.styles");
|
27
27
|
var _react2 = require("@emotion/react");
|
28
|
-
var _excluded = ["containerProps", "buttonProps", "regionProps"];
|
28
|
+
var _excluded = ["containerProps", "buttonProps", "regionProps"];
|
29
29
|
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
30
30
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
31
31
|
var validHeadingTags = ['h1', 'h2', 'h3', 'h4'];
|
@@ -64,6 +64,10 @@ var Calendar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
64
64
|
prevButtonProps = _ref.prevButtonProps,
|
65
65
|
nextButtonProps = _ref.nextButtonProps,
|
66
66
|
title = _ref.title;
|
67
|
+
|
68
|
+
// to remove warning for unknown event handler property `onFocusChange`.
|
69
|
+
delete prevButtonProps.onFocusChange;
|
70
|
+
delete nextButtonProps.onFocusChange;
|
67
71
|
var _useState = (0, _react.useState)(null),
|
68
72
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
69
73
|
yearChangeDirection = _useState2[0],
|
@@ -25,7 +25,7 @@ These keys provide additional functionality to the component.
|
|
25
25
|
| Tab | Components in the calendar are focusable and follow the page tab sequence. |
|
26
26
|
| Shift + Tab | Moves focus to the previous focusable component. |
|
27
27
|
| Pressing Home:(Fn + Right Arrow Key) Or Control or Command + Home | Shifts the focus to the first calendar date. |
|
28
|
-
| Pressing
|
28
|
+
| Pressing End:(Fn + left Arrow Key) Or Control or Command + End | Shifts the focus to the last calendar date. |
|
29
29
|
| Arrow key | Navigates up, down, right, and left across the calendar. |
|
30
30
|
| Page up | Changes the grid of dates to the previous month. |
|
31
31
|
| Page down | Changes the grid of dates to the next month. |
|
@@ -212,15 +212,12 @@ test('allows users to select and navigate through calendar items', function () {
|
|
212
212
|
});
|
213
213
|
test('readonly calendar', function () {
|
214
214
|
getComponent({
|
215
|
-
isReadOnly: true
|
216
|
-
defaultValue: '2022-08-10'
|
215
|
+
isReadOnly: true
|
217
216
|
});
|
218
217
|
expect(_testWrapper.screen.queryByRole('grid')).toHaveAttribute('aria-readonly', 'true');
|
219
218
|
var dateButtons = _testWrapper.screen.queryAllByRole('button');
|
220
219
|
_userEvent["default"].click(dateButtons[4]);
|
221
220
|
expect(dateButtons[4]).not.toHaveClass('is-selected');
|
222
|
-
expect(dateButtons[4]).toHaveFocus();
|
223
|
-
expect(dateButtons[4]).toHaveAttribute('tabindex', '0');
|
224
221
|
});
|
225
222
|
test('disabled calendar date', function () {
|
226
223
|
getComponent({
|
@@ -62,7 +62,7 @@ var CalendarCell = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
62
62
|
setFocused(false);
|
63
63
|
focusNextPage();
|
64
64
|
}
|
65
|
-
}, [
|
65
|
+
}, [focusNextPage, focusPreviousPage, formattedDate, state, setFocused, cellRef]);
|
66
66
|
var _useHover = (0, _interactions.useHover)({}),
|
67
67
|
hoverProps = _useHover.hoverProps,
|
68
68
|
isHovered = _useHover.isHovered;
|
@@ -626,12 +626,6 @@ test('dateField should handle autofocus when deleting segments from middle', fun
|
|
626
626
|
key: 'Backspace'
|
627
627
|
});
|
628
628
|
}
|
629
|
-
_testWrapper.fireEvent.keyDown(year, {
|
630
|
-
key: 'Backspace'
|
631
|
-
});
|
632
|
-
_testWrapper.fireEvent.keyUp(year, {
|
633
|
-
key: 'Backspace'
|
634
|
-
});
|
635
629
|
expect(day).toHaveFocus();
|
636
630
|
expect(hiddenInput).toHaveValue('');
|
637
631
|
});
|
@@ -671,6 +665,68 @@ test('segment focus should move to the year if month is already empty', function
|
|
671
665
|
}
|
672
666
|
expect(year).toHaveFocus();
|
673
667
|
});
|
668
|
+
test('segment focus stay on year if all are empty for year segment', function () {
|
669
|
+
getComponent({
|
670
|
+
defaultValue: ''
|
671
|
+
});
|
672
|
+
var hiddenInput = _testWrapper.screen.queryByTestId('date-field');
|
673
|
+
var inputButtons = _testWrapper.screen.queryAllByRole('spinbutton');
|
674
|
+
var year = inputButtons[0];
|
675
|
+
expect(hiddenInput).toHaveValue('');
|
676
|
+
(0, _testWrapper.act)(function () {
|
677
|
+
year.focus();
|
678
|
+
});
|
679
|
+
expect(year).toHaveFocus();
|
680
|
+
_testWrapper.fireEvent.keyDown(year, {
|
681
|
+
key: 'Backspace'
|
682
|
+
});
|
683
|
+
_testWrapper.fireEvent.keyUp(year, {
|
684
|
+
key: 'Backspace'
|
685
|
+
});
|
686
|
+
expect(year).toHaveFocus();
|
687
|
+
});
|
688
|
+
test('segment focus should move to previous if all are empty for month segment', function () {
|
689
|
+
getComponent({
|
690
|
+
defaultValue: ''
|
691
|
+
});
|
692
|
+
var hiddenInput = _testWrapper.screen.queryByTestId('date-field');
|
693
|
+
var inputButtons = _testWrapper.screen.queryAllByRole('spinbutton');
|
694
|
+
var month = inputButtons[1];
|
695
|
+
var year = inputButtons[0];
|
696
|
+
expect(hiddenInput).toHaveValue('');
|
697
|
+
(0, _testWrapper.act)(function () {
|
698
|
+
month.focus();
|
699
|
+
});
|
700
|
+
expect(month).toHaveFocus();
|
701
|
+
_testWrapper.fireEvent.keyDown(month, {
|
702
|
+
key: 'Backspace'
|
703
|
+
});
|
704
|
+
_testWrapper.fireEvent.keyUp(month, {
|
705
|
+
key: 'Backspace'
|
706
|
+
});
|
707
|
+
expect(year).toHaveFocus();
|
708
|
+
});
|
709
|
+
test('segment focus should move to previous if all are empty for day segment', function () {
|
710
|
+
getComponent({
|
711
|
+
defaultValue: ''
|
712
|
+
});
|
713
|
+
var hiddenInput = _testWrapper.screen.queryByTestId('date-field');
|
714
|
+
var inputButtons = _testWrapper.screen.queryAllByRole('spinbutton');
|
715
|
+
var day = inputButtons[2];
|
716
|
+
var month = inputButtons[1];
|
717
|
+
expect(hiddenInput).toHaveValue('');
|
718
|
+
(0, _testWrapper.act)(function () {
|
719
|
+
day.focus();
|
720
|
+
});
|
721
|
+
expect(day).toHaveFocus();
|
722
|
+
_testWrapper.fireEvent.keyDown(day, {
|
723
|
+
key: 'Backspace'
|
724
|
+
});
|
725
|
+
_testWrapper.fireEvent.keyUp(day, {
|
726
|
+
key: 'Backspace'
|
727
|
+
});
|
728
|
+
expect(month).toHaveFocus();
|
729
|
+
});
|
674
730
|
test('should add the correct number of padded 0 to year, month and day', function () {
|
675
731
|
getComponent({
|
676
732
|
defaultValue: '0009-08-02'
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { DateValue } from '@internationalized/date';
|
3
|
+
import { RangeCalendarProps, RangeValue, StringOrRangeValue } from '../../types';
|
4
|
+
export declare const parseDateIfString: (value: DateValue | string) => DateValue;
|
5
|
+
export declare const parseDateRangeIfString: (value: StringOrRangeValue) => RangeValue<DateValue>;
|
6
|
+
declare const RangeCalendar: React.ForwardRefExoticComponent<RangeCalendarProps & React.RefAttributes<HTMLDivElement>>;
|
7
|
+
export default RangeCalendar;
|
@@ -0,0 +1,100 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
4
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
5
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
6
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
7
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
8
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
9
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
10
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
11
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
12
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
13
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
14
|
+
_Object$defineProperty(exports, "__esModule", {
|
15
|
+
value: true
|
16
|
+
});
|
17
|
+
exports.parseDateRangeIfString = exports.parseDateIfString = exports["default"] = void 0;
|
18
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
19
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
20
|
+
var _react = _interopRequireWildcard(require("react"));
|
21
|
+
var _date = require("@internationalized/date");
|
22
|
+
var _calendar = require("@react-aria/calendar");
|
23
|
+
var _i18n = require("@react-aria/i18n");
|
24
|
+
var _calendar2 = require("@react-stately/calendar");
|
25
|
+
var _hooks = require("../../hooks");
|
26
|
+
var _index = require("../../index");
|
27
|
+
var _RangeCalendarGrid = _interopRequireDefault(require("./RangeCalendarGrid"));
|
28
|
+
var _RangeCalendarHeader = _interopRequireDefault(require("./RangeCalendarHeader"));
|
29
|
+
var _react2 = require("@emotion/react");
|
30
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
31
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
32
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
33
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
34
|
+
var parseDateIfString = function parseDateIfString(value) {
|
35
|
+
return typeof value === 'string' ? (0, _date.parseDate)(value) : value;
|
36
|
+
};
|
37
|
+
exports.parseDateIfString = parseDateIfString;
|
38
|
+
var parseDateRangeIfString = function parseDateRangeIfString(value) {
|
39
|
+
var start = parseDateIfString(value.start);
|
40
|
+
var end = parseDateIfString(value.end);
|
41
|
+
return {
|
42
|
+
start: start,
|
43
|
+
end: end
|
44
|
+
};
|
45
|
+
};
|
46
|
+
exports.parseDateRangeIfString = parseDateRangeIfString;
|
47
|
+
var RangeCalendar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
48
|
+
var defaultFocusedValue = props.defaultFocusedValue,
|
49
|
+
defaultValue = props.defaultValue,
|
50
|
+
hasAutoFocus = props.hasAutoFocus,
|
51
|
+
maxValue = props.maxValue,
|
52
|
+
minValue = props.minValue,
|
53
|
+
value = props.value;
|
54
|
+
var _useLocale = (0, _i18n.useLocale)(),
|
55
|
+
locale = _useLocale.locale;
|
56
|
+
var calenderRangeRef = (0, _hooks.useLocalOrForwardRef)(ref);
|
57
|
+
var parsedDates = {
|
58
|
+
value: value && parseDateRangeIfString(value),
|
59
|
+
defaultValue: defaultValue && parseDateRangeIfString(defaultValue),
|
60
|
+
defaultFocusedValue: defaultFocusedValue && parseDateIfString(defaultFocusedValue),
|
61
|
+
maxValue: maxValue && parseDateIfString(maxValue),
|
62
|
+
minValue: minValue && parseDateIfString(minValue)
|
63
|
+
};
|
64
|
+
var state = (0, _calendar2.useRangeCalendarState)(_objectSpread(_objectSpread(_objectSpread({
|
65
|
+
autoFocus: hasAutoFocus
|
66
|
+
}, props), parsedDates), {}, {
|
67
|
+
visibleDuration: {
|
68
|
+
months: 2
|
69
|
+
},
|
70
|
+
pageBehavior: 'single',
|
71
|
+
locale: locale,
|
72
|
+
createCalendar: _date.createCalendar
|
73
|
+
}));
|
74
|
+
var _ref = (0, _calendar.useRangeCalendar)(_objectSpread(_objectSpread({}, props), parsedDates), state, calenderRangeRef),
|
75
|
+
calendarProps = _ref.calendarProps,
|
76
|
+
prevButtonProps = _ref.prevButtonProps,
|
77
|
+
nextButtonProps = _ref.nextButtonProps;
|
78
|
+
return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({}, calendarProps, {
|
79
|
+
ref: calenderRangeRef,
|
80
|
+
variant: "rangeCalendar.calendarContainer",
|
81
|
+
role: "group"
|
82
|
+
}), (0, _react2.jsx)(_RangeCalendarHeader["default"], {
|
83
|
+
state: state,
|
84
|
+
calendarProps: calendarProps,
|
85
|
+
prevButtonProps: prevButtonProps,
|
86
|
+
nextButtonProps: nextButtonProps
|
87
|
+
}), (0, _react2.jsx)(_index.Box, {
|
88
|
+
isRow: true,
|
89
|
+
gap: "26px"
|
90
|
+
}, (0, _react2.jsx)(_RangeCalendarGrid["default"], {
|
91
|
+
state: state
|
92
|
+
}), (0, _react2.jsx)(_RangeCalendarGrid["default"], {
|
93
|
+
state: state,
|
94
|
+
offset: {
|
95
|
+
months: 1
|
96
|
+
}
|
97
|
+
})));
|
98
|
+
});
|
99
|
+
var _default = RangeCalendar;
|
100
|
+
exports["default"] = _default;
|
@@ -0,0 +1,39 @@
|
|
1
|
+
import { Meta } from '@storybook/addon-docs';
|
2
|
+
|
3
|
+
<Meta title="Experimental/RangeCalendar/RangeCalendar" />
|
4
|
+
|
5
|
+
# RangeCalendar
|
6
|
+
|
7
|
+
The RangeCalendar component displays months in two grid-like views and gives users the ability to quickly to select a contiguous range of dates.
|
8
|
+
|
9
|
+
This component is built on [useRangeCalendar](https://react-spectrum.adobe.com/react-aria/useRangeCalendar.html), [useCalendarGrid](https://react-spectrum.adobe.com/react-aria/useCalendar.html#usecalendargrid), and
|
10
|
+
[useCalendarCell](https://react-spectrum.adobe.com/react-aria/useCalendar.html#usecalendarcell) from React Aria, and [useRangeCalendarState](https://react-spectrum.adobe.com/react-stately/useRangeCalendarState.html) from React Stately.
|
11
|
+
|
12
|
+
### Required components
|
13
|
+
|
14
|
+
This component can be used independently and does not require additional components.
|
15
|
+
|
16
|
+
### Accessibility
|
17
|
+
|
18
|
+
#### Keyboard Navigation
|
19
|
+
|
20
|
+
These keys provide additional functionality to the component.
|
21
|
+
|
22
|
+
| Keys | Functions |
|
23
|
+
| ---- | --------- |
|
24
|
+
| Space or Enter | Selects the start and end dates when a date is focused, and navigates to the calendar pages when the navigational buttons are focused. |
|
25
|
+
| Tab | Components in the calendar are focusable and follow the page tab sequence. |
|
26
|
+
| Shift + Tab | Moves focus to the previous focusable component. |
|
27
|
+
| Pressing Home:(Fn + Right Arrow Key) Or Control or Command + Home | Shifts the focus to the first calendar date of the currently focused month. |
|
28
|
+
| Pressing End:(Fn + left Arrow Key) Or Control or Command + End | Shifts the focus to the last calendar date of the currently focused month. |
|
29
|
+
| Arrow key | Navigates up, down, right, and left across the calendar. If at the end of the current calendar, the right arrow key navigates to the next calendar. If at the beginning of the current calendar, the left arrow key navigates to the previous calendar. |
|
30
|
+
| Page up | Changes focus to the same date in the previous month. |
|
31
|
+
| Page down | Changes focus to the same date in the next month. |
|
32
|
+
| Shift + page up | Changes the grid of dates to the same months in the previous year. |
|
33
|
+
| Shift+ page down | Changes the grid of dates to the same months in the next year. |
|
34
|
+
|
35
|
+
#### Screen Readers
|
36
|
+
|
37
|
+
This component uses the following attributes to assist screen readers:
|
38
|
+
- The **`aria-label`** attribute is used to provide an accessible name.
|
39
|
+
- In each data cell, the **`aria-selected`** attribute is set to “true” for all dates within the selected range, and **`aria-disabled`** is set to “false” by default.
|
@@ -0,0 +1,103 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { StoryFn } from '@storybook/react';
|
3
|
+
import { RangeCalendarProps } from '../../types';
|
4
|
+
declare const _default: {
|
5
|
+
title: string;
|
6
|
+
component: React.ForwardRefExoticComponent<RangeCalendarProps & React.RefAttributes<HTMLDivElement>>;
|
7
|
+
parameters: {
|
8
|
+
actions: {
|
9
|
+
argTypesRegex: string;
|
10
|
+
};
|
11
|
+
source: {
|
12
|
+
type: string;
|
13
|
+
};
|
14
|
+
docs: {
|
15
|
+
page: () => React.JSX.Element;
|
16
|
+
};
|
17
|
+
};
|
18
|
+
argTypes: {
|
19
|
+
'aria-controls': {
|
20
|
+
control: {
|
21
|
+
type: string;
|
22
|
+
};
|
23
|
+
table: {
|
24
|
+
type: {
|
25
|
+
summary: string;
|
26
|
+
};
|
27
|
+
category: string;
|
28
|
+
};
|
29
|
+
description: string;
|
30
|
+
};
|
31
|
+
'aria-describedby': {
|
32
|
+
control: {
|
33
|
+
type: string;
|
34
|
+
};
|
35
|
+
table: {
|
36
|
+
type: {
|
37
|
+
summary: string;
|
38
|
+
};
|
39
|
+
category: string;
|
40
|
+
};
|
41
|
+
description: string;
|
42
|
+
};
|
43
|
+
'aria-details': {
|
44
|
+
control: {
|
45
|
+
type: string;
|
46
|
+
};
|
47
|
+
table: {
|
48
|
+
type: {
|
49
|
+
summary: string;
|
50
|
+
};
|
51
|
+
category: string;
|
52
|
+
};
|
53
|
+
description: string;
|
54
|
+
};
|
55
|
+
'aria-errormessage': {
|
56
|
+
control: {
|
57
|
+
type: string;
|
58
|
+
};
|
59
|
+
table: {
|
60
|
+
type: {
|
61
|
+
summary: string;
|
62
|
+
};
|
63
|
+
category: string;
|
64
|
+
};
|
65
|
+
description: string;
|
66
|
+
};
|
67
|
+
'aria-label': {
|
68
|
+
control: {
|
69
|
+
type: string;
|
70
|
+
};
|
71
|
+
table: {
|
72
|
+
type: {
|
73
|
+
summary: string;
|
74
|
+
};
|
75
|
+
category: string;
|
76
|
+
};
|
77
|
+
description: string;
|
78
|
+
};
|
79
|
+
'aria-labelledby': {
|
80
|
+
control: {
|
81
|
+
type: string;
|
82
|
+
};
|
83
|
+
table: {
|
84
|
+
type: {
|
85
|
+
summary: string;
|
86
|
+
};
|
87
|
+
category: string;
|
88
|
+
};
|
89
|
+
description: string;
|
90
|
+
};
|
91
|
+
};
|
92
|
+
args: {
|
93
|
+
defaultFocusedValue: string;
|
94
|
+
};
|
95
|
+
};
|
96
|
+
export default _default;
|
97
|
+
export declare const Default: StoryFn<RangeCalendarProps>;
|
98
|
+
export declare const DefaultValue: StoryFn<RangeCalendarProps>;
|
99
|
+
export declare const Disabled: StoryFn<RangeCalendarProps>;
|
100
|
+
export declare const UnavailableDates: StoryFn<RangeCalendarProps>;
|
101
|
+
export declare const MinimumDate: StoryFn<RangeCalendarProps>;
|
102
|
+
export declare const MaximumDate: StoryFn<RangeCalendarProps>;
|
103
|
+
export declare const Controlled: StoryFn<RangeCalendarProps>;
|
@@ -0,0 +1,131 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
4
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
5
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
6
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
7
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
8
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
9
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
10
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
11
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
12
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
13
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
14
|
+
_Object$defineProperty(exports, "__esModule", {
|
15
|
+
value: true
|
16
|
+
});
|
17
|
+
exports["default"] = exports.UnavailableDates = exports.MinimumDate = exports.MaximumDate = exports.Disabled = exports.DefaultValue = exports.Default = exports.Controlled = void 0;
|
18
|
+
var _some = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/some"));
|
19
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
20
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
21
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
22
|
+
var _react = _interopRequireWildcard(require("react"));
|
23
|
+
var _date = require("@internationalized/date");
|
24
|
+
var _storybookDocsLayout = _interopRequireDefault(require("../../../.storybook/storybookDocsLayout"));
|
25
|
+
var _index = require("../../index");
|
26
|
+
var _ariaAttributes = require("../../utils/docUtils/ariaAttributes");
|
27
|
+
var _RangeCalendar = _interopRequireDefault(require("./RangeCalendar.mdx"));
|
28
|
+
var _react2 = require("@emotion/react");
|
29
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
30
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
31
|
+
function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
32
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
|
33
|
+
var _default = {
|
34
|
+
title: 'Experimental/RangeCalendar',
|
35
|
+
component: _index.RangeCalendar,
|
36
|
+
parameters: {
|
37
|
+
actions: {
|
38
|
+
argTypesRegex: '^on.*'
|
39
|
+
},
|
40
|
+
source: {
|
41
|
+
type: 'code'
|
42
|
+
},
|
43
|
+
docs: {
|
44
|
+
page: function page() {
|
45
|
+
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_RangeCalendar["default"], null), (0, _react2.jsx)(_storybookDocsLayout["default"], null));
|
46
|
+
}
|
47
|
+
}
|
48
|
+
},
|
49
|
+
argTypes: _objectSpread({}, _ariaAttributes.ariaAttributeBaseArgTypes),
|
50
|
+
args: {
|
51
|
+
defaultFocusedValue: '2030-01-15'
|
52
|
+
}
|
53
|
+
};
|
54
|
+
exports["default"] = _default;
|
55
|
+
var Default = function Default(args) {
|
56
|
+
return (0, _react2.jsx)(_index.RangeCalendar, (0, _extends2["default"])({}, args, {
|
57
|
+
"aria-label": "range-calendar"
|
58
|
+
}));
|
59
|
+
};
|
60
|
+
exports.Default = Default;
|
61
|
+
var DefaultValue = function DefaultValue() {
|
62
|
+
return (0, _react2.jsx)(_index.RangeCalendar, {
|
63
|
+
"aria-label": "calendar-with-default-vaue",
|
64
|
+
defaultValue: {
|
65
|
+
start: '2030-01-15',
|
66
|
+
end: '2030-01-22'
|
67
|
+
}
|
68
|
+
});
|
69
|
+
};
|
70
|
+
exports.DefaultValue = DefaultValue;
|
71
|
+
var Disabled = function Disabled(args) {
|
72
|
+
return (0, _react2.jsx)(_index.RangeCalendar, (0, _extends2["default"])({}, args, {
|
73
|
+
"aria-label": "calendar--range-component-disabled",
|
74
|
+
isDisabled: true
|
75
|
+
}));
|
76
|
+
};
|
77
|
+
exports.Disabled = Disabled;
|
78
|
+
var UnavailableDates = function UnavailableDates() {
|
79
|
+
var unavailableRanges = [['2030-07-28', '2030-08-03'], ['2030-08-11', '2030-08-17'], ['2030-08-25', '2030-08-31']];
|
80
|
+
var isDateUnavailable = function isDateUnavailable(date) {
|
81
|
+
return (0, _some["default"])(unavailableRanges).call(unavailableRanges, function (interval) {
|
82
|
+
return date.compare((0, _date.parseDate)(interval[0])) >= 0 && date.compare((0, _date.parseDate)(interval[1])) <= 0;
|
83
|
+
});
|
84
|
+
};
|
85
|
+
return (0, _react2.jsx)(_index.RangeCalendar, {
|
86
|
+
"aria-label": "Trip dates",
|
87
|
+
defaultValue: {
|
88
|
+
start: '2030-08-07',
|
89
|
+
end: '2030-08-09'
|
90
|
+
},
|
91
|
+
isDateUnavailable: isDateUnavailable
|
92
|
+
});
|
93
|
+
};
|
94
|
+
exports.UnavailableDates = UnavailableDates;
|
95
|
+
var MinimumDate = function MinimumDate() {
|
96
|
+
return (0, _react2.jsx)(_index.RangeCalendar, {
|
97
|
+
"aria-label": "range-calendar-component-min-date",
|
98
|
+
minValue: "2030-01-15",
|
99
|
+
defaultValue: {
|
100
|
+
start: '2030-01-15',
|
101
|
+
end: '2030-01-20'
|
102
|
+
}
|
103
|
+
});
|
104
|
+
};
|
105
|
+
exports.MinimumDate = MinimumDate;
|
106
|
+
var MaximumDate = function MaximumDate() {
|
107
|
+
return (0, _react2.jsx)(_index.RangeCalendar, {
|
108
|
+
"aria-label": "range-calendar-component-max-date",
|
109
|
+
defaultValue: {
|
110
|
+
start: '2030-01-12',
|
111
|
+
end: '2030-01-15'
|
112
|
+
},
|
113
|
+
maxValue: "2030-01-17"
|
114
|
+
});
|
115
|
+
};
|
116
|
+
exports.MaximumDate = MaximumDate;
|
117
|
+
var Controlled = function Controlled(args) {
|
118
|
+
var _useState = (0, _react.useState)({
|
119
|
+
start: '2030-01-12',
|
120
|
+
end: '2030-01-15'
|
121
|
+
}),
|
122
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
123
|
+
range = _useState2[0],
|
124
|
+
setRange = _useState2[1];
|
125
|
+
return (0, _react2.jsx)(_index.RangeCalendar, (0, _extends2["default"])({}, args, {
|
126
|
+
"aria-label": "calendar-component-controlled",
|
127
|
+
value: range,
|
128
|
+
onChange: setRange
|
129
|
+
}));
|
130
|
+
};
|
131
|
+
exports.Controlled = Controlled;
|
@@ -0,0 +1,104 @@
|
|
1
|
+
declare const _default: {
|
2
|
+
calendarBody: {
|
3
|
+
pb: string;
|
4
|
+
borderTop: string;
|
5
|
+
borderTopColor: string;
|
6
|
+
'& > tr:nth-of-type(odd) ': {
|
7
|
+
backgroundColor: string;
|
8
|
+
};
|
9
|
+
};
|
10
|
+
calendarButton: {
|
11
|
+
justifyContent: string;
|
12
|
+
alignItems: string;
|
13
|
+
fontSize: string;
|
14
|
+
fontWeight: number;
|
15
|
+
color: string;
|
16
|
+
lineHeight: string;
|
17
|
+
width: string;
|
18
|
+
height: string;
|
19
|
+
outline: string;
|
20
|
+
'&.is-hovered': {
|
21
|
+
bg: string;
|
22
|
+
cursor: string;
|
23
|
+
};
|
24
|
+
'&.is-selected': {
|
25
|
+
bg: string;
|
26
|
+
'&.is-hovered': {
|
27
|
+
bg: string;
|
28
|
+
color: string;
|
29
|
+
};
|
30
|
+
};
|
31
|
+
'&.is-range-ends': {
|
32
|
+
bg: string;
|
33
|
+
color: string;
|
34
|
+
outline: string;
|
35
|
+
boxShadow: string;
|
36
|
+
};
|
37
|
+
'&.is-selection-start': {
|
38
|
+
borderRadius: string;
|
39
|
+
};
|
40
|
+
'&.is-selection-end': {
|
41
|
+
borderRadius: string;
|
42
|
+
};
|
43
|
+
'&.is-start-and-end': {
|
44
|
+
borderRadius: string;
|
45
|
+
};
|
46
|
+
'&.is-focused': {
|
47
|
+
outline: string;
|
48
|
+
outlineStyle: string;
|
49
|
+
outlineColor: string;
|
50
|
+
outlineOffset: string;
|
51
|
+
};
|
52
|
+
'&.is-unavailable': {
|
53
|
+
backgroundColor: string;
|
54
|
+
};
|
55
|
+
'&:not(.is-outside-visible-range)&.is-extreme&:not(.is-completely-disabled)': {
|
56
|
+
backgroundColor: string;
|
57
|
+
color: string;
|
58
|
+
opacity: number;
|
59
|
+
};
|
60
|
+
'&.is-disabled': {
|
61
|
+
'&.is-hovered': {
|
62
|
+
backgroundColor: string;
|
63
|
+
};
|
64
|
+
};
|
65
|
+
};
|
66
|
+
calendarCell: {
|
67
|
+
cursor: string;
|
68
|
+
textAlign: string;
|
69
|
+
position: string;
|
70
|
+
color: string;
|
71
|
+
padding: string;
|
72
|
+
width: string;
|
73
|
+
height: string;
|
74
|
+
};
|
75
|
+
calendarContainer: {
|
76
|
+
width: string;
|
77
|
+
textAlign: string;
|
78
|
+
};
|
79
|
+
calendarHeader: {
|
80
|
+
position: string;
|
81
|
+
justifyContent: string;
|
82
|
+
alignItems: string;
|
83
|
+
width: string;
|
84
|
+
height: string;
|
85
|
+
};
|
86
|
+
calendarHeaderContainer: {
|
87
|
+
justifyContent: string;
|
88
|
+
mt: string;
|
89
|
+
alignItems: string;
|
90
|
+
width: string;
|
91
|
+
height: string;
|
92
|
+
};
|
93
|
+
columnHeader: {
|
94
|
+
display: string;
|
95
|
+
justifyContent: string;
|
96
|
+
alignItems: string;
|
97
|
+
color: string;
|
98
|
+
fontSize: string;
|
99
|
+
fontWeight: number;
|
100
|
+
width: string;
|
101
|
+
height: string;
|
102
|
+
};
|
103
|
+
};
|
104
|
+
export default _default;
|