@pingux/astro 2.16.0-alpha.1 → 2.16.0-alpha.2
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.
@@ -64,51 +64,62 @@ var Calendar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
64
64
|
prevButtonProps = _useCalendar.prevButtonProps,
|
65
65
|
nextButtonProps = _useCalendar.nextButtonProps,
|
66
66
|
title = _useCalendar.title;
|
67
|
-
|
68
|
-
/**
|
69
|
-
* Grabs the currently displayed date for yearly navigation.
|
70
|
-
*/
|
71
|
-
|
72
|
-
var _useState = (0, _react.useState)(),
|
67
|
+
var _useState = (0, _react.useState)(null),
|
73
68
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
74
|
-
|
75
|
-
|
76
|
-
var
|
77
|
-
|
78
|
-
}, [state.visibleRange.start]);
|
69
|
+
yearChangeDirection = _useState2[0],
|
70
|
+
setYearChangeDirection = _useState2[1];
|
71
|
+
var previousYearRef = (0, _react.useRef)(null);
|
72
|
+
var nextYearRef = (0, _react.useRef)(null);
|
79
73
|
var nav = {
|
80
74
|
NEXT: 'next',
|
81
75
|
PREVIOUS: 'previous'
|
82
76
|
};
|
83
77
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
78
|
+
// after updating visible year, reapplies focus to corresponding year buttons
|
79
|
+
(0, _react.useEffect)(function () {
|
80
|
+
if (yearChangeDirection === nav.NEXT) {
|
81
|
+
nextYearRef.current.focus();
|
82
|
+
}
|
83
|
+
if (yearChangeDirection === nav.PREVIOUS) {
|
84
|
+
previousYearRef.current.focus();
|
85
|
+
}
|
86
|
+
setYearChangeDirection(null);
|
87
|
+
}, [nav.NEXT, nav.PREVIOUS, yearChangeDirection]);
|
88
88
|
|
89
|
-
|
90
|
-
|
89
|
+
// update visible year
|
90
|
+
var handleYearSelection = function handleYearSelection(navigation) {
|
91
91
|
if (navigation === nav.PREVIOUS) {
|
92
|
-
|
92
|
+
var previousYear = state.focusedDate.subtract({
|
93
93
|
years: 1
|
94
94
|
});
|
95
|
-
|
96
|
-
|
95
|
+
state.setFocusedDate(previousYear);
|
96
|
+
}
|
97
|
+
if (navigation === nav.NEXT) {
|
98
|
+
var nextYear = state.focusedDate.add({
|
97
99
|
years: 1
|
98
100
|
});
|
101
|
+
state.setFocusedDate(nextYear);
|
99
102
|
}
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
+
setYearChangeDirection(navigation);
|
104
|
+
};
|
105
|
+
var renderTitle = (0, _react2.jsx)(_index.Text, {
|
106
|
+
variant: "itemTitle",
|
107
|
+
role: "heading",
|
108
|
+
"aria-level": "3",
|
109
|
+
fontWeight: 3
|
110
|
+
}, title);
|
103
111
|
return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({}, calendarProps, {
|
104
112
|
ref: calenderRef,
|
105
113
|
variant: "calendar.calendarContainer"
|
106
|
-
}), (0, _react2.jsx)(
|
114
|
+
}), (0, _react2.jsx)(_visuallyHidden.VisuallyHidden, {
|
115
|
+
"aria-live": "assertive"
|
116
|
+
}, (0, _react2.jsx)(_index.Text, null, title)), (0, _react2.jsx)(_index.Box, {
|
107
117
|
className: "header",
|
108
118
|
isRow: true,
|
109
119
|
variant: "calendar.calendarHeader",
|
110
120
|
verticalAlign: "middle"
|
111
121
|
}, (0, _react2.jsx)(_index.IconButton, {
|
122
|
+
ref: previousYearRef,
|
112
123
|
onPress: function onPress() {
|
113
124
|
return handleYearSelection(nav.PREVIOUS);
|
114
125
|
},
|
@@ -129,12 +140,7 @@ var Calendar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
129
140
|
title: {
|
130
141
|
name: 'Chevron Left Icon'
|
131
142
|
}
|
132
|
-
})),
|
133
|
-
variant: "itemTitle",
|
134
|
-
role: "heading",
|
135
|
-
"aria-level": "3",
|
136
|
-
fontWeight: 3
|
137
|
-
}, title), (0, _react2.jsx)(_index.IconButton, (0, _extends2["default"])({}, nextButtonProps, {
|
143
|
+
})), renderTitle, (0, _react2.jsx)(_index.IconButton, (0, _extends2["default"])({}, nextButtonProps, {
|
138
144
|
"aria-label": "Next month navigation"
|
139
145
|
}), (0, _react2.jsx)(_index.Icon, {
|
140
146
|
icon: _ChevronRightIcon["default"],
|
@@ -143,6 +149,7 @@ var Calendar = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
143
149
|
name: 'Chevron Right Icon'
|
144
150
|
}
|
145
151
|
})), (0, _react2.jsx)(_index.IconButton, {
|
152
|
+
ref: nextYearRef,
|
146
153
|
onPress: function onPress() {
|
147
154
|
return handleYearSelection(nav.NEXT);
|
148
155
|
},
|
@@ -11,7 +11,7 @@ import _slicedToArray from "@babel/runtime-corejs3/helpers/esm/slicedToArray";
|
|
11
11
|
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
12
12
|
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; }
|
13
13
|
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) { _defineProperty(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; }
|
14
|
-
import React, { forwardRef,
|
14
|
+
import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from 'react';
|
15
15
|
import { createCalendar, parseDate } from '@internationalized/date';
|
16
16
|
import ChevronDoubleLeftIcon from '@pingux/mdi-react/ChevronDoubleLeftIcon';
|
17
17
|
import ChevronDoubleRightIcon from '@pingux/mdi-react/ChevronDoubleRightIcon';
|
@@ -53,51 +53,62 @@ var Calendar = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
53
53
|
prevButtonProps = _useCalendar.prevButtonProps,
|
54
54
|
nextButtonProps = _useCalendar.nextButtonProps,
|
55
55
|
title = _useCalendar.title;
|
56
|
-
|
57
|
-
/**
|
58
|
-
* Grabs the currently displayed date for yearly navigation.
|
59
|
-
*/
|
60
|
-
|
61
|
-
var _useState = useState(),
|
56
|
+
var _useState = useState(null),
|
62
57
|
_useState2 = _slicedToArray(_useState, 2),
|
63
|
-
|
64
|
-
|
65
|
-
var
|
66
|
-
|
67
|
-
}, [state.visibleRange.start]);
|
58
|
+
yearChangeDirection = _useState2[0],
|
59
|
+
setYearChangeDirection = _useState2[1];
|
60
|
+
var previousYearRef = useRef(null);
|
61
|
+
var nextYearRef = useRef(null);
|
68
62
|
var nav = {
|
69
63
|
NEXT: 'next',
|
70
64
|
PREVIOUS: 'previous'
|
71
65
|
};
|
72
66
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
67
|
+
// after updating visible year, reapplies focus to corresponding year buttons
|
68
|
+
useEffect(function () {
|
69
|
+
if (yearChangeDirection === nav.NEXT) {
|
70
|
+
nextYearRef.current.focus();
|
71
|
+
}
|
72
|
+
if (yearChangeDirection === nav.PREVIOUS) {
|
73
|
+
previousYearRef.current.focus();
|
74
|
+
}
|
75
|
+
setYearChangeDirection(null);
|
76
|
+
}, [nav.NEXT, nav.PREVIOUS, yearChangeDirection]);
|
77
77
|
|
78
|
-
|
79
|
-
|
78
|
+
// update visible year
|
79
|
+
var handleYearSelection = function handleYearSelection(navigation) {
|
80
80
|
if (navigation === nav.PREVIOUS) {
|
81
|
-
|
81
|
+
var previousYear = state.focusedDate.subtract({
|
82
82
|
years: 1
|
83
83
|
});
|
84
|
-
|
85
|
-
|
84
|
+
state.setFocusedDate(previousYear);
|
85
|
+
}
|
86
|
+
if (navigation === nav.NEXT) {
|
87
|
+
var nextYear = state.focusedDate.add({
|
86
88
|
years: 1
|
87
89
|
});
|
90
|
+
state.setFocusedDate(nextYear);
|
88
91
|
}
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
+
setYearChangeDirection(navigation);
|
93
|
+
};
|
94
|
+
var renderTitle = ___EmotionJSX(Text, {
|
95
|
+
variant: "itemTitle",
|
96
|
+
role: "heading",
|
97
|
+
"aria-level": "3",
|
98
|
+
fontWeight: 3
|
99
|
+
}, title);
|
92
100
|
return ___EmotionJSX(Box, _extends({}, calendarProps, {
|
93
101
|
ref: calenderRef,
|
94
102
|
variant: "calendar.calendarContainer"
|
95
|
-
}), ___EmotionJSX(
|
103
|
+
}), ___EmotionJSX(VisuallyHidden, {
|
104
|
+
"aria-live": "assertive"
|
105
|
+
}, ___EmotionJSX(Text, null, title)), ___EmotionJSX(Box, {
|
96
106
|
className: "header",
|
97
107
|
isRow: true,
|
98
108
|
variant: "calendar.calendarHeader",
|
99
109
|
verticalAlign: "middle"
|
100
110
|
}, ___EmotionJSX(IconButton, {
|
111
|
+
ref: previousYearRef,
|
101
112
|
onPress: function onPress() {
|
102
113
|
return handleYearSelection(nav.PREVIOUS);
|
103
114
|
},
|
@@ -118,12 +129,7 @@ var Calendar = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
118
129
|
title: {
|
119
130
|
name: 'Chevron Left Icon'
|
120
131
|
}
|
121
|
-
})),
|
122
|
-
variant: "itemTitle",
|
123
|
-
role: "heading",
|
124
|
-
"aria-level": "3",
|
125
|
-
fontWeight: 3
|
126
|
-
}, title), ___EmotionJSX(IconButton, _extends({}, nextButtonProps, {
|
132
|
+
})), renderTitle, ___EmotionJSX(IconButton, _extends({}, nextButtonProps, {
|
127
133
|
"aria-label": "Next month navigation"
|
128
134
|
}), ___EmotionJSX(Icon, {
|
129
135
|
icon: ChevronRightIcon,
|
@@ -132,6 +138,7 @@ var Calendar = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
132
138
|
name: 'Chevron Right Icon'
|
133
139
|
}
|
134
140
|
})), ___EmotionJSX(IconButton, {
|
141
|
+
ref: nextYearRef,
|
135
142
|
onPress: function onPress() {
|
136
143
|
return handleYearSelection(nav.NEXT);
|
137
144
|
},
|