@pingux/astro 2.5.2-alpha.1 → 2.5.2-alpha.3
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/DatePicker/DateField.js +3 -1
- package/lib/cjs/components/DatePicker/DatePicker.test.js +128 -1
- package/lib/cjs/components/DatePicker/DateSegment.js +31 -4
- package/lib/cjs/components/TooltipTrigger/TooltipTrigger.js +2 -1
- package/lib/components/DatePicker/DateField.js +3 -1
- package/lib/components/DatePicker/DatePicker.test.js +128 -1
- package/lib/components/DatePicker/DateSegment.js +31 -4
- package/lib/components/TooltipTrigger/TooltipTrigger.js +2 -1
- package/package.json +1 -1
@@ -243,7 +243,9 @@ var DateField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
243
243
|
isDisabled: isDisabled,
|
244
244
|
isReadOnly: isReadOnly,
|
245
245
|
isRequired: isRequired,
|
246
|
-
|
246
|
+
segments: locale === 'en-US' ? enUSSegments : segments,
|
247
|
+
handlePaste: handlePaste,
|
248
|
+
segmentIndex: index
|
247
249
|
}, other));
|
248
250
|
})), (0, _react2.jsx)(_index.IconButton, (0, _extends2["default"])({
|
249
251
|
variant: "datePicker.containedIcon",
|
@@ -506,7 +506,7 @@ test('dateField should handle min, max or next available date if the pasted date
|
|
506
506
|
(0, _testWrapper.fireEvent)(month, unavailablePaste);
|
507
507
|
expect(_testWrapper.screen.queryByTestId('date-field')).toHaveValue('2022-08-04');
|
508
508
|
});
|
509
|
-
test('dateField should handle autofocus when deleting segments ', function () {
|
509
|
+
test('dateField should handle autofocus when deleting segments right to left', function () {
|
510
510
|
getComponent({
|
511
511
|
defaultValue: '2022-08-10'
|
512
512
|
});
|
@@ -548,6 +548,133 @@ test('dateField should handle autofocus when deleting segments ', function () {
|
|
548
548
|
}
|
549
549
|
expect(hiddenInput).toHaveValue('');
|
550
550
|
});
|
551
|
+
test('dateField should handle autofocus when deleting segments left to right', function () {
|
552
|
+
getComponent({
|
553
|
+
defaultValue: '2022-08-10'
|
554
|
+
});
|
555
|
+
var hiddenInput = _testWrapper.screen.queryByTestId('date-field');
|
556
|
+
var inputButtons = _testWrapper.screen.queryAllByRole('spinbutton');
|
557
|
+
var year = inputButtons[0];
|
558
|
+
var month = inputButtons[1];
|
559
|
+
var day = inputButtons[2];
|
560
|
+
expect(hiddenInput).toHaveValue('2022-08-10');
|
561
|
+
(0, _testWrapper.act)(function () {
|
562
|
+
year.focus();
|
563
|
+
});
|
564
|
+
expect(year).toHaveFocus();
|
565
|
+
for (var i = 0; i < 4; i += 1) {
|
566
|
+
_testWrapper.fireEvent.keyDown(year, {
|
567
|
+
key: 'Backspace'
|
568
|
+
});
|
569
|
+
_testWrapper.fireEvent.keyUp(year, {
|
570
|
+
key: 'Backspace'
|
571
|
+
});
|
572
|
+
}
|
573
|
+
expect(month).toHaveFocus();
|
574
|
+
for (var _i5 = 0; _i5 < 2; _i5 += 1) {
|
575
|
+
_testWrapper.fireEvent.keyDown(month, {
|
576
|
+
key: 'Backspace'
|
577
|
+
});
|
578
|
+
_testWrapper.fireEvent.keyUp(month, {
|
579
|
+
key: 'Backspace'
|
580
|
+
});
|
581
|
+
}
|
582
|
+
expect(day).toHaveFocus();
|
583
|
+
for (var _i6 = 0; _i6 < 2; _i6 += 1) {
|
584
|
+
_testWrapper.fireEvent.keyDown(day, {
|
585
|
+
key: 'Backspace'
|
586
|
+
});
|
587
|
+
_testWrapper.fireEvent.keyUp(day, {
|
588
|
+
key: 'Backspace'
|
589
|
+
});
|
590
|
+
}
|
591
|
+
expect(hiddenInput).toHaveValue('');
|
592
|
+
});
|
593
|
+
test('dateField should handle autofocus when deleting segments from middle', function () {
|
594
|
+
getComponent({
|
595
|
+
defaultValue: '2022-08-10'
|
596
|
+
});
|
597
|
+
var hiddenInput = _testWrapper.screen.queryByTestId('date-field');
|
598
|
+
var inputButtons = _testWrapper.screen.queryAllByRole('spinbutton');
|
599
|
+
var year = inputButtons[0];
|
600
|
+
var month = inputButtons[1];
|
601
|
+
var day = inputButtons[2];
|
602
|
+
expect(hiddenInput).toHaveValue('2022-08-10');
|
603
|
+
(0, _testWrapper.act)(function () {
|
604
|
+
month.focus();
|
605
|
+
});
|
606
|
+
expect(month).toHaveFocus();
|
607
|
+
for (var i = 0; i < 2; i += 1) {
|
608
|
+
_testWrapper.fireEvent.keyDown(month, {
|
609
|
+
key: 'Backspace'
|
610
|
+
});
|
611
|
+
_testWrapper.fireEvent.keyUp(month, {
|
612
|
+
key: 'Backspace'
|
613
|
+
});
|
614
|
+
}
|
615
|
+
expect(year).toHaveFocus();
|
616
|
+
for (var _i7 = 0; _i7 < 4; _i7 += 1) {
|
617
|
+
_testWrapper.fireEvent.keyDown(year, {
|
618
|
+
key: 'Backspace'
|
619
|
+
});
|
620
|
+
_testWrapper.fireEvent.keyUp(year, {
|
621
|
+
key: 'Backspace'
|
622
|
+
});
|
623
|
+
}
|
624
|
+
expect(day).toHaveFocus();
|
625
|
+
for (var _i8 = 0; _i8 < 2; _i8 += 1) {
|
626
|
+
_testWrapper.fireEvent.keyDown(day, {
|
627
|
+
key: 'Backspace'
|
628
|
+
});
|
629
|
+
_testWrapper.fireEvent.keyUp(day, {
|
630
|
+
key: 'Backspace'
|
631
|
+
});
|
632
|
+
}
|
633
|
+
_testWrapper.fireEvent.keyDown(year, {
|
634
|
+
key: 'Backspace'
|
635
|
+
});
|
636
|
+
_testWrapper.fireEvent.keyUp(year, {
|
637
|
+
key: 'Backspace'
|
638
|
+
});
|
639
|
+
expect(day).toHaveFocus();
|
640
|
+
expect(hiddenInput).toHaveValue('');
|
641
|
+
});
|
642
|
+
test('segment focus should move to the year if month is already empty', function () {
|
643
|
+
getComponent({
|
644
|
+
defaultValue: '2022-08-10'
|
645
|
+
});
|
646
|
+
var hiddenInput = _testWrapper.screen.queryByTestId('date-field');
|
647
|
+
var inputButtons = _testWrapper.screen.queryAllByRole('spinbutton');
|
648
|
+
var year = inputButtons[0];
|
649
|
+
var month = inputButtons[1];
|
650
|
+
var day = inputButtons[2];
|
651
|
+
expect(hiddenInput).toHaveValue('2022-08-10');
|
652
|
+
(0, _testWrapper.act)(function () {
|
653
|
+
month.focus();
|
654
|
+
});
|
655
|
+
expect(month).toHaveFocus();
|
656
|
+
for (var i = 0; i < 2; i += 1) {
|
657
|
+
_testWrapper.fireEvent.keyDown(month, {
|
658
|
+
key: 'Backspace'
|
659
|
+
});
|
660
|
+
_testWrapper.fireEvent.keyUp(month, {
|
661
|
+
key: 'Backspace'
|
662
|
+
});
|
663
|
+
}
|
664
|
+
(0, _testWrapper.act)(function () {
|
665
|
+
day.focus();
|
666
|
+
});
|
667
|
+
expect(day).toHaveFocus();
|
668
|
+
for (var _i9 = 0; _i9 < 2; _i9 += 1) {
|
669
|
+
_testWrapper.fireEvent.keyDown(day, {
|
670
|
+
key: 'Backspace'
|
671
|
+
});
|
672
|
+
_testWrapper.fireEvent.keyUp(day, {
|
673
|
+
key: 'Backspace'
|
674
|
+
});
|
675
|
+
}
|
676
|
+
expect(year).toHaveFocus();
|
677
|
+
});
|
551
678
|
test('should add the correct number of padded 0 to year, month and day', function () {
|
552
679
|
getComponent({
|
553
680
|
defaultValue: '0009-08-02'
|
@@ -25,7 +25,9 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
25
25
|
var DateSegment = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
26
26
|
var segment = props.segment,
|
27
27
|
state = props.state,
|
28
|
-
handlePaste = props.handlePaste
|
28
|
+
handlePaste = props.handlePaste,
|
29
|
+
segments = props.segments,
|
30
|
+
segmentIndex = props.segmentIndex;
|
29
31
|
var segmentRef = (0, _react.useRef)();
|
30
32
|
// istanbul ignore next
|
31
33
|
(0, _react.useImperativeHandle)(ref, function () {
|
@@ -41,10 +43,29 @@ var DateSegment = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
41
43
|
*/
|
42
44
|
var focusManager = (0, _reactAria.useFocusManager)();
|
43
45
|
var handleKeyEvents = (0, _react.useCallback)(function (e) {
|
44
|
-
|
45
|
-
|
46
|
+
var getSegmentValue = function getSegmentValue(index) {
|
47
|
+
var isNumber = /^\d+$/.test(segments[index].text);
|
48
|
+
return isNumber;
|
49
|
+
};
|
50
|
+
if (e.key === 'Backspace' && isPlaceholder) {
|
51
|
+
switch (segmentIndex) {
|
52
|
+
case 0:
|
53
|
+
if (getSegmentValue(2)) return focusManager.focusNext();
|
54
|
+
if (!getSegmentValue(2) && getSegmentValue(4)) return focusManager.focusLast();
|
55
|
+
break;
|
56
|
+
case 2:
|
57
|
+
if (getSegmentValue(0)) return focusManager.focusPrevious();
|
58
|
+
if (getSegmentValue(4)) return focusManager.focusNext();
|
59
|
+
break;
|
60
|
+
case 4:
|
61
|
+
if (getSegmentValue(2)) return focusManager.focusPrevious();
|
62
|
+
if (!getSegmentValue(2) && getSegmentValue(0)) return focusManager.focusFirst();
|
63
|
+
break;
|
64
|
+
default:
|
65
|
+
}
|
46
66
|
}
|
47
|
-
|
67
|
+
return null;
|
68
|
+
}, [focusManager, segment, isPlaceholder]);
|
48
69
|
return (0, _react2.jsx)(_index.Box, (0, _extends2["default"])({}, segmentProps, {
|
49
70
|
ref: segmentRef,
|
50
71
|
variant: "forms.datePicker.segment",
|
@@ -61,6 +82,12 @@ DateSegment.propTypes = {
|
|
61
82
|
value: _propTypes["default"].number,
|
62
83
|
type: _propTypes["default"].string
|
63
84
|
}),
|
85
|
+
/** index value of each segment */
|
86
|
+
segmentIndex: _propTypes["default"].number,
|
87
|
+
/** An array of segments */
|
88
|
+
segments: _propTypes["default"].arrayOf(_propTypes["default"].shape({
|
89
|
+
text: _propTypes["default"].string
|
90
|
+
})),
|
64
91
|
/** state returned by useDateField */
|
65
92
|
state: _propTypes["default"].shape({}),
|
66
93
|
/**
|
@@ -89,7 +89,8 @@ var TooltipTrigger = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
89
89
|
hasNoArrow: hasNoArrow,
|
90
90
|
arrowCrossOffset: arrowCrossOffset,
|
91
91
|
width: width,
|
92
|
-
direction: direction
|
92
|
+
direction: direction,
|
93
|
+
isNonModal: true
|
93
94
|
}, positionProps, tooltipProps), tooltip);
|
94
95
|
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_interactions.PressResponder, (0, _extends2["default"])({}, triggerProps, {
|
95
96
|
ref: tooltipTriggerRef
|
@@ -231,7 +231,9 @@ var DateField = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
231
231
|
isDisabled: isDisabled,
|
232
232
|
isReadOnly: isReadOnly,
|
233
233
|
isRequired: isRequired,
|
234
|
-
|
234
|
+
segments: locale === 'en-US' ? enUSSegments : segments,
|
235
|
+
handlePaste: handlePaste,
|
236
|
+
segmentIndex: index
|
235
237
|
}, other));
|
236
238
|
})), ___EmotionJSX(IconButton, _extends({
|
237
239
|
variant: "datePicker.containedIcon",
|
@@ -499,7 +499,7 @@ test('dateField should handle min, max or next available date if the pasted date
|
|
499
499
|
fireEvent(month, unavailablePaste);
|
500
500
|
expect(screen.queryByTestId('date-field')).toHaveValue('2022-08-04');
|
501
501
|
});
|
502
|
-
test('dateField should handle autofocus when deleting segments ', function () {
|
502
|
+
test('dateField should handle autofocus when deleting segments right to left', function () {
|
503
503
|
getComponent({
|
504
504
|
defaultValue: '2022-08-10'
|
505
505
|
});
|
@@ -541,6 +541,133 @@ test('dateField should handle autofocus when deleting segments ', function () {
|
|
541
541
|
}
|
542
542
|
expect(hiddenInput).toHaveValue('');
|
543
543
|
});
|
544
|
+
test('dateField should handle autofocus when deleting segments left to right', function () {
|
545
|
+
getComponent({
|
546
|
+
defaultValue: '2022-08-10'
|
547
|
+
});
|
548
|
+
var hiddenInput = screen.queryByTestId('date-field');
|
549
|
+
var inputButtons = screen.queryAllByRole('spinbutton');
|
550
|
+
var year = inputButtons[0];
|
551
|
+
var month = inputButtons[1];
|
552
|
+
var day = inputButtons[2];
|
553
|
+
expect(hiddenInput).toHaveValue('2022-08-10');
|
554
|
+
act(function () {
|
555
|
+
year.focus();
|
556
|
+
});
|
557
|
+
expect(year).toHaveFocus();
|
558
|
+
for (var i = 0; i < 4; i += 1) {
|
559
|
+
fireEvent.keyDown(year, {
|
560
|
+
key: 'Backspace'
|
561
|
+
});
|
562
|
+
fireEvent.keyUp(year, {
|
563
|
+
key: 'Backspace'
|
564
|
+
});
|
565
|
+
}
|
566
|
+
expect(month).toHaveFocus();
|
567
|
+
for (var _i5 = 0; _i5 < 2; _i5 += 1) {
|
568
|
+
fireEvent.keyDown(month, {
|
569
|
+
key: 'Backspace'
|
570
|
+
});
|
571
|
+
fireEvent.keyUp(month, {
|
572
|
+
key: 'Backspace'
|
573
|
+
});
|
574
|
+
}
|
575
|
+
expect(day).toHaveFocus();
|
576
|
+
for (var _i6 = 0; _i6 < 2; _i6 += 1) {
|
577
|
+
fireEvent.keyDown(day, {
|
578
|
+
key: 'Backspace'
|
579
|
+
});
|
580
|
+
fireEvent.keyUp(day, {
|
581
|
+
key: 'Backspace'
|
582
|
+
});
|
583
|
+
}
|
584
|
+
expect(hiddenInput).toHaveValue('');
|
585
|
+
});
|
586
|
+
test('dateField should handle autofocus when deleting segments from middle', function () {
|
587
|
+
getComponent({
|
588
|
+
defaultValue: '2022-08-10'
|
589
|
+
});
|
590
|
+
var hiddenInput = screen.queryByTestId('date-field');
|
591
|
+
var inputButtons = screen.queryAllByRole('spinbutton');
|
592
|
+
var year = inputButtons[0];
|
593
|
+
var month = inputButtons[1];
|
594
|
+
var day = inputButtons[2];
|
595
|
+
expect(hiddenInput).toHaveValue('2022-08-10');
|
596
|
+
act(function () {
|
597
|
+
month.focus();
|
598
|
+
});
|
599
|
+
expect(month).toHaveFocus();
|
600
|
+
for (var i = 0; i < 2; i += 1) {
|
601
|
+
fireEvent.keyDown(month, {
|
602
|
+
key: 'Backspace'
|
603
|
+
});
|
604
|
+
fireEvent.keyUp(month, {
|
605
|
+
key: 'Backspace'
|
606
|
+
});
|
607
|
+
}
|
608
|
+
expect(year).toHaveFocus();
|
609
|
+
for (var _i7 = 0; _i7 < 4; _i7 += 1) {
|
610
|
+
fireEvent.keyDown(year, {
|
611
|
+
key: 'Backspace'
|
612
|
+
});
|
613
|
+
fireEvent.keyUp(year, {
|
614
|
+
key: 'Backspace'
|
615
|
+
});
|
616
|
+
}
|
617
|
+
expect(day).toHaveFocus();
|
618
|
+
for (var _i8 = 0; _i8 < 2; _i8 += 1) {
|
619
|
+
fireEvent.keyDown(day, {
|
620
|
+
key: 'Backspace'
|
621
|
+
});
|
622
|
+
fireEvent.keyUp(day, {
|
623
|
+
key: 'Backspace'
|
624
|
+
});
|
625
|
+
}
|
626
|
+
fireEvent.keyDown(year, {
|
627
|
+
key: 'Backspace'
|
628
|
+
});
|
629
|
+
fireEvent.keyUp(year, {
|
630
|
+
key: 'Backspace'
|
631
|
+
});
|
632
|
+
expect(day).toHaveFocus();
|
633
|
+
expect(hiddenInput).toHaveValue('');
|
634
|
+
});
|
635
|
+
test('segment focus should move to the year if month is already empty', function () {
|
636
|
+
getComponent({
|
637
|
+
defaultValue: '2022-08-10'
|
638
|
+
});
|
639
|
+
var hiddenInput = screen.queryByTestId('date-field');
|
640
|
+
var inputButtons = screen.queryAllByRole('spinbutton');
|
641
|
+
var year = inputButtons[0];
|
642
|
+
var month = inputButtons[1];
|
643
|
+
var day = inputButtons[2];
|
644
|
+
expect(hiddenInput).toHaveValue('2022-08-10');
|
645
|
+
act(function () {
|
646
|
+
month.focus();
|
647
|
+
});
|
648
|
+
expect(month).toHaveFocus();
|
649
|
+
for (var i = 0; i < 2; i += 1) {
|
650
|
+
fireEvent.keyDown(month, {
|
651
|
+
key: 'Backspace'
|
652
|
+
});
|
653
|
+
fireEvent.keyUp(month, {
|
654
|
+
key: 'Backspace'
|
655
|
+
});
|
656
|
+
}
|
657
|
+
act(function () {
|
658
|
+
day.focus();
|
659
|
+
});
|
660
|
+
expect(day).toHaveFocus();
|
661
|
+
for (var _i9 = 0; _i9 < 2; _i9 += 1) {
|
662
|
+
fireEvent.keyDown(day, {
|
663
|
+
key: 'Backspace'
|
664
|
+
});
|
665
|
+
fireEvent.keyUp(day, {
|
666
|
+
key: 'Backspace'
|
667
|
+
});
|
668
|
+
}
|
669
|
+
expect(year).toHaveFocus();
|
670
|
+
});
|
544
671
|
test('should add the correct number of padded 0 to year, month and day', function () {
|
545
672
|
getComponent({
|
546
673
|
defaultValue: '0009-08-02'
|
@@ -13,7 +13,9 @@ import { jsx as ___EmotionJSX } from "@emotion/react";
|
|
13
13
|
var DateSegment = /*#__PURE__*/forwardRef(function (props, ref) {
|
14
14
|
var segment = props.segment,
|
15
15
|
state = props.state,
|
16
|
-
handlePaste = props.handlePaste
|
16
|
+
handlePaste = props.handlePaste,
|
17
|
+
segments = props.segments,
|
18
|
+
segmentIndex = props.segmentIndex;
|
17
19
|
var segmentRef = useRef();
|
18
20
|
// istanbul ignore next
|
19
21
|
useImperativeHandle(ref, function () {
|
@@ -29,10 +31,29 @@ var DateSegment = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
29
31
|
*/
|
30
32
|
var focusManager = useFocusManager();
|
31
33
|
var handleKeyEvents = useCallback(function (e) {
|
32
|
-
|
33
|
-
|
34
|
+
var getSegmentValue = function getSegmentValue(index) {
|
35
|
+
var isNumber = /^\d+$/.test(segments[index].text);
|
36
|
+
return isNumber;
|
37
|
+
};
|
38
|
+
if (e.key === 'Backspace' && isPlaceholder) {
|
39
|
+
switch (segmentIndex) {
|
40
|
+
case 0:
|
41
|
+
if (getSegmentValue(2)) return focusManager.focusNext();
|
42
|
+
if (!getSegmentValue(2) && getSegmentValue(4)) return focusManager.focusLast();
|
43
|
+
break;
|
44
|
+
case 2:
|
45
|
+
if (getSegmentValue(0)) return focusManager.focusPrevious();
|
46
|
+
if (getSegmentValue(4)) return focusManager.focusNext();
|
47
|
+
break;
|
48
|
+
case 4:
|
49
|
+
if (getSegmentValue(2)) return focusManager.focusPrevious();
|
50
|
+
if (!getSegmentValue(2) && getSegmentValue(0)) return focusManager.focusFirst();
|
51
|
+
break;
|
52
|
+
default:
|
53
|
+
}
|
34
54
|
}
|
35
|
-
|
55
|
+
return null;
|
56
|
+
}, [focusManager, segment, isPlaceholder]);
|
36
57
|
return ___EmotionJSX(Box, _extends({}, segmentProps, {
|
37
58
|
ref: segmentRef,
|
38
59
|
variant: "forms.datePicker.segment",
|
@@ -49,6 +70,12 @@ DateSegment.propTypes = {
|
|
49
70
|
value: PropTypes.number,
|
50
71
|
type: PropTypes.string
|
51
72
|
}),
|
73
|
+
/** index value of each segment */
|
74
|
+
segmentIndex: PropTypes.number,
|
75
|
+
/** An array of segments */
|
76
|
+
segments: PropTypes.arrayOf(PropTypes.shape({
|
77
|
+
text: PropTypes.string
|
78
|
+
})),
|
52
79
|
/** state returned by useDateField */
|
53
80
|
state: PropTypes.shape({}),
|
54
81
|
/**
|
@@ -77,7 +77,8 @@ var TooltipTrigger = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
77
77
|
hasNoArrow: hasNoArrow,
|
78
78
|
arrowCrossOffset: arrowCrossOffset,
|
79
79
|
width: width,
|
80
|
-
direction: direction
|
80
|
+
direction: direction,
|
81
|
+
isNonModal: true
|
81
82
|
}, positionProps, tooltipProps), tooltip);
|
82
83
|
return ___EmotionJSX(React.Fragment, null, ___EmotionJSX(PressResponder, _extends({}, triggerProps, {
|
83
84
|
ref: tooltipTriggerRef
|