@mui/x-date-pickers 6.1.0 → 6.2.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.
Files changed (163) hide show
  1. package/AdapterDayjs/AdapterDayjs.d.ts +114 -0
  2. package/AdapterDayjs/AdapterDayjs.js +387 -0
  3. package/AdapterDayjs/index.d.ts +1 -28
  4. package/AdapterDayjs/index.js +1 -102
  5. package/CHANGELOG.md +53 -1
  6. package/DateCalendar/DateCalendar.types.d.ts +1 -1
  7. package/DateCalendar/DayCalendar.d.ts +1 -1
  8. package/DateField/DateField.js +6 -0
  9. package/DateField/useDateField.js +3 -1
  10. package/DatePicker/DatePicker.js +6 -0
  11. package/DateTimeField/DateTimeField.js +6 -0
  12. package/DateTimeField/useDateTimeField.js +3 -1
  13. package/DateTimePicker/DateTimePicker.js +6 -0
  14. package/DateTimePicker/shared.js +3 -1
  15. package/DesktopDatePicker/DesktopDatePicker.js +6 -0
  16. package/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -0
  17. package/DesktopTimePicker/DesktopTimePicker.js +6 -0
  18. package/MobileDatePicker/MobileDatePicker.js +6 -0
  19. package/MobileDateTimePicker/MobileDateTimePicker.js +6 -0
  20. package/MobileTimePicker/MobileTimePicker.js +6 -0
  21. package/README.md +1 -0
  22. package/TimeClock/TimeClock.types.d.ts +1 -1
  23. package/TimeField/TimeField.js +6 -0
  24. package/TimeField/useTimeField.js +3 -1
  25. package/TimePicker/TimePicker.js +6 -0
  26. package/index.js +1 -1
  27. package/internals/components/PickersModalDialog.d.ts +1 -1
  28. package/internals/components/PickersPopper.d.ts +1 -1
  29. package/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  30. package/internals/hooks/useDesktopPicker/useDesktopPicker.types.d.ts +1 -1
  31. package/internals/hooks/useField/useField.types.d.ts +6 -0
  32. package/internals/hooks/useField/useField.utils.d.ts +1 -1
  33. package/internals/hooks/useField/useField.utils.js +16 -4
  34. package/internals/hooks/useField/useFieldState.js +3 -2
  35. package/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
  36. package/internals/hooks/useMobilePicker/useMobilePicker.types.d.ts +1 -1
  37. package/internals/hooks/usePicker/index.d.ts +1 -1
  38. package/internals/hooks/usePicker/usePicker.types.d.ts +1 -1
  39. package/internals/hooks/usePicker/usePickerLayoutProps.d.ts +1 -1
  40. package/internals/hooks/usePicker/usePickerValue.d.ts +3 -179
  41. package/internals/hooks/usePicker/usePickerValue.js +187 -153
  42. package/internals/hooks/usePicker/usePickerValue.types.d.ts +233 -0
  43. package/internals/hooks/usePicker/usePickerValue.types.js +1 -0
  44. package/internals/hooks/usePicker/usePickerViews.d.ts +1 -1
  45. package/internals/index.d.ts +1 -1
  46. package/internals/models/props/basePickerProps.d.ts +6 -0
  47. package/legacy/AdapterDayjs/AdapterDayjs.js +403 -0
  48. package/legacy/AdapterDayjs/index.js +1 -119
  49. package/legacy/DateField/DateField.js +6 -0
  50. package/legacy/DateField/useDateField.js +3 -1
  51. package/legacy/DatePicker/DatePicker.js +6 -0
  52. package/legacy/DateTimeField/DateTimeField.js +6 -0
  53. package/legacy/DateTimeField/useDateTimeField.js +3 -1
  54. package/legacy/DateTimePicker/DateTimePicker.js +6 -0
  55. package/legacy/DateTimePicker/shared.js +3 -1
  56. package/legacy/DesktopDatePicker/DesktopDatePicker.js +6 -0
  57. package/legacy/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -0
  58. package/legacy/DesktopTimePicker/DesktopTimePicker.js +6 -0
  59. package/legacy/MobileDatePicker/MobileDatePicker.js +6 -0
  60. package/legacy/MobileDateTimePicker/MobileDateTimePicker.js +6 -0
  61. package/legacy/MobileTimePicker/MobileTimePicker.js +6 -0
  62. package/legacy/TimeField/TimeField.js +6 -0
  63. package/legacy/TimeField/useTimeField.js +3 -1
  64. package/legacy/TimePicker/TimePicker.js +6 -0
  65. package/legacy/index.js +1 -1
  66. package/legacy/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  67. package/legacy/internals/hooks/useField/useField.utils.js +24 -9
  68. package/legacy/internals/hooks/useField/useFieldState.js +5 -3
  69. package/legacy/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
  70. package/legacy/internals/hooks/usePicker/usePickerValue.js +184 -153
  71. package/legacy/internals/hooks/usePicker/usePickerValue.types.js +1 -0
  72. package/legacy/tests/describeGregorianAdapter/describeGregorianAdapter.js +20 -0
  73. package/legacy/tests/describeGregorianAdapter/describeGregorianAdapter.types.js +1 -0
  74. package/legacy/tests/describeGregorianAdapter/index.js +1 -0
  75. package/legacy/tests/describeGregorianAdapter/testCalculations.js +273 -0
  76. package/legacy/tests/describeGregorianAdapter/testFormat.js +26 -0
  77. package/legacy/tests/describeGregorianAdapter/testLocalization.js +15 -0
  78. package/legacy/tests/describeValidation/describeValidation.js +2 -1
  79. package/legacy/tests/describeValidation/testMinutesViewValidation.js +201 -0
  80. package/legacy/tests/describeValue/testPickerActionBar.js +52 -3
  81. package/legacy/tests/describeValue/testPickerOpenCloseLifeCycle.js +6 -6
  82. package/models/adapters.d.ts +21 -20
  83. package/modern/AdapterDayjs/AdapterDayjs.js +386 -0
  84. package/modern/AdapterDayjs/index.js +1 -101
  85. package/modern/DateField/DateField.js +6 -0
  86. package/modern/DateField/useDateField.js +3 -1
  87. package/modern/DatePicker/DatePicker.js +6 -0
  88. package/modern/DateTimeField/DateTimeField.js +6 -0
  89. package/modern/DateTimeField/useDateTimeField.js +3 -1
  90. package/modern/DateTimePicker/DateTimePicker.js +6 -0
  91. package/modern/DateTimePicker/shared.js +3 -1
  92. package/modern/DesktopDatePicker/DesktopDatePicker.js +6 -0
  93. package/modern/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -0
  94. package/modern/DesktopTimePicker/DesktopTimePicker.js +6 -0
  95. package/modern/MobileDatePicker/MobileDatePicker.js +6 -0
  96. package/modern/MobileDateTimePicker/MobileDateTimePicker.js +6 -0
  97. package/modern/MobileTimePicker/MobileTimePicker.js +6 -0
  98. package/modern/TimeField/TimeField.js +6 -0
  99. package/modern/TimeField/useTimeField.js +3 -1
  100. package/modern/TimePicker/TimePicker.js +6 -0
  101. package/modern/index.js +1 -1
  102. package/modern/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  103. package/modern/internals/hooks/useField/useField.utils.js +16 -4
  104. package/modern/internals/hooks/useField/useFieldState.js +3 -2
  105. package/modern/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
  106. package/modern/internals/hooks/usePicker/usePickerValue.js +187 -153
  107. package/modern/internals/hooks/usePicker/usePickerValue.types.js +1 -0
  108. package/modern/tests/describeGregorianAdapter/describeGregorianAdapter.js +20 -0
  109. package/modern/tests/describeGregorianAdapter/describeGregorianAdapter.types.js +1 -0
  110. package/modern/tests/describeGregorianAdapter/index.js +1 -0
  111. package/modern/tests/describeGregorianAdapter/testCalculations.js +272 -0
  112. package/modern/tests/describeGregorianAdapter/testFormat.js +27 -0
  113. package/modern/tests/describeGregorianAdapter/testLocalization.js +16 -0
  114. package/modern/tests/describeValidation/describeValidation.js +2 -1
  115. package/modern/tests/describeValidation/testMinutesViewValidation.js +200 -0
  116. package/modern/tests/describeValue/testPickerActionBar.js +52 -3
  117. package/modern/tests/describeValue/testPickerOpenCloseLifeCycle.js +6 -6
  118. package/node/AdapterDayjs/AdapterDayjs.js +395 -0
  119. package/node/AdapterDayjs/index.js +6 -104
  120. package/node/DateField/DateField.js +6 -0
  121. package/node/DateField/useDateField.js +3 -1
  122. package/node/DatePicker/DatePicker.js +6 -0
  123. package/node/DateTimeField/DateTimeField.js +6 -0
  124. package/node/DateTimeField/useDateTimeField.js +3 -1
  125. package/node/DateTimePicker/DateTimePicker.js +6 -0
  126. package/node/DateTimePicker/shared.js +3 -1
  127. package/node/DesktopDatePicker/DesktopDatePicker.js +6 -0
  128. package/node/DesktopDateTimePicker/DesktopDateTimePicker.js +6 -0
  129. package/node/DesktopTimePicker/DesktopTimePicker.js +6 -0
  130. package/node/MobileDatePicker/MobileDatePicker.js +6 -0
  131. package/node/MobileDateTimePicker/MobileDateTimePicker.js +6 -0
  132. package/node/MobileTimePicker/MobileTimePicker.js +6 -0
  133. package/node/TimeField/TimeField.js +6 -0
  134. package/node/TimeField/useTimeField.js +3 -1
  135. package/node/TimePicker/TimePicker.js +6 -0
  136. package/node/index.js +1 -1
  137. package/node/internals/hooks/useDesktopPicker/useDesktopPicker.js +2 -0
  138. package/node/internals/hooks/useField/useField.utils.js +16 -4
  139. package/node/internals/hooks/useField/useFieldState.js +3 -2
  140. package/node/internals/hooks/useMobilePicker/useMobilePicker.js +2 -0
  141. package/node/internals/hooks/usePicker/usePickerValue.js +187 -152
  142. package/node/internals/hooks/usePicker/usePickerValue.types.js +5 -0
  143. package/node/tests/describeGregorianAdapter/describeGregorianAdapter.js +29 -0
  144. package/node/tests/describeGregorianAdapter/describeGregorianAdapter.types.js +5 -0
  145. package/node/tests/describeGregorianAdapter/index.js +18 -0
  146. package/node/tests/describeGregorianAdapter/testCalculations.js +279 -0
  147. package/node/tests/describeGregorianAdapter/testFormat.js +34 -0
  148. package/node/tests/describeGregorianAdapter/testLocalization.js +23 -0
  149. package/node/tests/describeValidation/describeValidation.js +2 -1
  150. package/node/tests/describeValidation/testMinutesViewValidation.js +210 -0
  151. package/node/tests/describeValue/testPickerActionBar.js +52 -3
  152. package/node/tests/describeValue/testPickerOpenCloseLifeCycle.js +6 -6
  153. package/package.json +9 -9
  154. package/tests/describeGregorianAdapter/describeGregorianAdapter.js +20 -0
  155. package/tests/describeGregorianAdapter/describeGregorianAdapter.types.js +1 -0
  156. package/tests/describeGregorianAdapter/index.js +1 -0
  157. package/tests/describeGregorianAdapter/testCalculations.js +272 -0
  158. package/tests/describeGregorianAdapter/testFormat.js +27 -0
  159. package/tests/describeGregorianAdapter/testLocalization.js +16 -0
  160. package/tests/describeValidation/describeValidation.js +2 -1
  161. package/tests/describeValidation/testMinutesViewValidation.js +200 -0
  162. package/tests/describeValue/testPickerActionBar.js +52 -3
  163. package/tests/describeValue/testPickerOpenCloseLifeCycle.js +6 -6
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "TEST_DATE_ISO", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _describeGregorianAdapter.TEST_DATE_ISO;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "describeGregorianAdapter", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _describeGregorianAdapter.describeGregorianAdapter;
16
+ }
17
+ });
18
+ var _describeGregorianAdapter = require("./describeGregorianAdapter");
@@ -0,0 +1,279 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.testCalculations = void 0;
7
+ var _chai = require("chai");
8
+ const testCalculations = ({
9
+ adapter,
10
+ testDate,
11
+ testDateISO,
12
+ formatDateTime
13
+ }) => {
14
+ it('Method: date', () => {
15
+ // ISO string
16
+ (0, _chai.expect)(adapter.isEqual(testDate, adapter.date(testDateISO))).to.equal(true);
17
+
18
+ // Native Date
19
+ (0, _chai.expect)(adapter.isEqual(testDate, adapter.date(new Date(testDateISO)))).to.equal(true);
20
+
21
+ // Parse already date-specific object
22
+ (0, _chai.expect)(adapter.isEqual(testDate, adapter.date(adapter.date(testDateISO)))).to.equal(true);
23
+
24
+ // Parse null inputs
25
+ (0, _chai.expect)(adapter.date(null)).to.equal(null);
26
+
27
+ // Undefined
28
+ (0, _chai.expect)(!!adapter.date(undefined)).to.equal(true);
29
+ });
30
+ it('Method: isValid', () => {
31
+ const invalidDate = adapter.date('2018-42-30T11:60:00.000Z');
32
+ (0, _chai.expect)(adapter.isValid(testDate)).to.equal(true);
33
+ (0, _chai.expect)(adapter.isValid(invalidDate)).to.equal(false);
34
+ (0, _chai.expect)(adapter.isValid(undefined)).to.equal(true);
35
+ (0, _chai.expect)(adapter.isValid(null)).to.equal(false);
36
+ (0, _chai.expect)(adapter.isValid('2018-42-30T11:60:00.000Z')).to.equal(false);
37
+ });
38
+ it('Method: addYears', () => {
39
+ (0, _chai.expect)(adapter.format(adapter.addYears(testDate, 2), 'year')).to.equal('2020');
40
+ (0, _chai.expect)(adapter.format(adapter.addYears(testDate, -2), 'year')).to.equal('2016');
41
+ });
42
+ it('Method: addMonths', () => {
43
+ (0, _chai.expect)(adapter.format(adapter.addMonths(testDate, 2), 'monthAndYear')).to.equal('December 2018');
44
+ (0, _chai.expect)(adapter.format(adapter.addMonths(testDate, -2), 'monthAndYear')).to.equal('August 2018');
45
+ });
46
+ it('Method: addWeeks', () => {
47
+ (0, _chai.expect)(adapter.getDiff(adapter.addWeeks(testDate, 1), testDate, 'weeks')).to.equal(1);
48
+ (0, _chai.expect)(adapter.getDiff(adapter.addWeeks(testDate, -1), testDate, 'weeks')).to.equal(-1);
49
+ });
50
+ it('Method: addDays', () => {
51
+ (0, _chai.expect)(adapter.format(adapter.addDays(testDate, 1), 'dayOfMonth')).to.equal('31');
52
+ (0, _chai.expect)(adapter.format(adapter.addDays(testDate, -1), 'dayOfMonth')).to.equal('29');
53
+ });
54
+ it('Method: addHours', () => {
55
+ (0, _chai.expect)(adapter.format(adapter.addHours(testDate, 65), 'hours24h')).to.equal('04');
56
+ (0, _chai.expect)(adapter.format(adapter.addHours(testDate, -5), 'hours24h')).to.equal('06');
57
+ });
58
+ it('Method: addMinutes', () => {
59
+ (0, _chai.expect)(adapter.format(adapter.addMinutes(testDate, 65), 'minutes')).to.equal('49');
60
+ (0, _chai.expect)(adapter.format(adapter.addMinutes(testDate, -5), 'minutes')).to.equal('39');
61
+ });
62
+ it('Method: addSeconds', () => {
63
+ (0, _chai.expect)(adapter.format(adapter.addSeconds(testDate, 65), 'seconds')).to.equal('05');
64
+ (0, _chai.expect)(adapter.format(adapter.addSeconds(testDate, -5), 'seconds')).to.equal('55');
65
+ });
66
+ it('Method: startOfYear', () => {
67
+ (0, _chai.expect)(adapter.formatByString(adapter.startOfYear(testDate), formatDateTime)).to.equal('2018-01-01 00:00:00');
68
+ });
69
+ it('Method: startOfMonth', () => {
70
+ (0, _chai.expect)(adapter.formatByString(adapter.startOfMonth(testDate), formatDateTime)).to.equal('2018-10-01 00:00:00');
71
+ });
72
+ it('Method: startOfWeek', () => {
73
+ (0, _chai.expect)(adapter.formatByString(adapter.startOfWeek(testDate), formatDateTime)).to.equal(adapter.lib === 'luxon' ? '2018-10-29 00:00:00' : '2018-10-28 00:00:00');
74
+
75
+ // Non ISO
76
+ (0, _chai.expect)(adapter.formatByString(adapter.startOfWeek(adapter.date('2018-10-28T00:00:00.000Z')), formatDateTime)).to.equal(adapter.lib === 'luxon' ? '2018-10-22 00:00:00' : '2018-10-28 00:00:00');
77
+ });
78
+ it('Method: startOfDay', () => {
79
+ (0, _chai.expect)(adapter.formatByString(adapter.startOfDay(testDate), formatDateTime)).to.equal('2018-10-30 00:00:00');
80
+ });
81
+ it('Method: endOfYear', () => {
82
+ (0, _chai.expect)(adapter.formatByString(adapter.endOfYear(testDate), formatDateTime)).to.equal('2018-12-31 23:59:59');
83
+ });
84
+ it('Method: endOfMonth', () => {
85
+ (0, _chai.expect)(adapter.formatByString(adapter.endOfMonth(testDate), formatDateTime)).to.equal('2018-10-31 23:59:59');
86
+ });
87
+ it('Method: endOfWeek', () => {
88
+ (0, _chai.expect)(adapter.formatByString(adapter.endOfWeek(testDate), formatDateTime)).to.equal(adapter.lib === 'luxon' ? '2018-11-04 23:59:59' : '2018-11-03 23:59:59');
89
+
90
+ // Non ISO
91
+ (0, _chai.expect)(adapter.formatByString(adapter.endOfWeek(adapter.date('2018-10-28T00:00:00.000Z')), formatDateTime)).to.equal(adapter.lib === 'luxon' ? '2018-10-28 23:59:59' : '2018-11-03 23:59:59');
92
+ });
93
+ it('Method: endOfDay', () => {
94
+ (0, _chai.expect)(adapter.formatByString(adapter.endOfDay(testDate), formatDateTime)).to.equal('2018-10-30 23:59:59');
95
+ });
96
+ it('Method:getPreviousMonth', () => {
97
+ (0, _chai.expect)(adapter.formatByString(adapter.getPreviousMonth(testDate), formatDateTime)).to.equal('2018-09-30 11:44:00');
98
+ });
99
+ it('Method:getMonthArray', () => {
100
+ (0, _chai.expect)(adapter.getMonthArray(testDate).map(date => adapter.formatByString(date, formatDateTime))).to.deep.equal(['2018-01-01 00:00:00', '2018-02-01 00:00:00', '2018-03-01 00:00:00', '2018-04-01 00:00:00', '2018-05-01 00:00:00', '2018-06-01 00:00:00', '2018-07-01 00:00:00', '2018-08-01 00:00:00', '2018-09-01 00:00:00', '2018-10-01 00:00:00', '2018-11-01 00:00:00', '2018-12-01 00:00:00']);
101
+ });
102
+ it('Method:getNextMonth', () => {
103
+ (0, _chai.expect)(adapter.formatByString(adapter.getNextMonth(testDate), formatDateTime)).to.equal('2018-11-30 11:44:00');
104
+ });
105
+ it('Method:getHours', () => {
106
+ (0, _chai.expect)(adapter.getHours(testDate)).to.equal(new Date(testDateISO).getHours());
107
+ });
108
+ it('Method:getMinutes', () => {
109
+ (0, _chai.expect)(adapter.getMinutes(testDate)).to.equal(44);
110
+ });
111
+ it('Method:getSeconds', () => {
112
+ (0, _chai.expect)(adapter.getSeconds(testDate)).to.equal(0);
113
+ });
114
+ it('Method:getDate', () => {
115
+ (0, _chai.expect)(adapter.getDate(testDate)).to.equal(30);
116
+ });
117
+ it('Method:getYear', () => {
118
+ (0, _chai.expect)(adapter.getYear(testDate)).to.equal(2018);
119
+ });
120
+ it('Method:getMonth', () => {
121
+ (0, _chai.expect)(adapter.getMonth(testDate)).to.equal(9);
122
+ });
123
+ it('Method:getDaysInMonth', () => {
124
+ (0, _chai.expect)(adapter.getDaysInMonth(testDate)).to.equal(31);
125
+ });
126
+ it('Method:setMonth', () => {
127
+ const updatedTime = adapter.formatByString(adapter.setMonth(testDate, 4), formatDateTime);
128
+ (0, _chai.expect)(updatedTime).to.equal('2018-05-30 11:44:00');
129
+ });
130
+ it('Method:setHours', () => {
131
+ const updatedTime = adapter.formatByString(adapter.setHours(testDate, 0), formatDateTime);
132
+ (0, _chai.expect)(updatedTime).to.equal('2018-10-30 00:44:00');
133
+ });
134
+ it('Method:setMinutes', () => {
135
+ const updatedTime = adapter.formatByString(adapter.setMinutes(testDate, 12), formatDateTime);
136
+ (0, _chai.expect)(updatedTime).to.equal('2018-10-30 11:12:00');
137
+ });
138
+ it('Method:setMinutes', () => {
139
+ const updatedTime = adapter.formatByString(adapter.setMinutes(testDate, 12), formatDateTime);
140
+ (0, _chai.expect)(updatedTime).to.equal('2018-10-30 11:12:00');
141
+ });
142
+ it('Method:setYear', () => {
143
+ const updatedTime = adapter.formatByString(adapter.setYear(testDate, 2011), formatDateTime);
144
+ (0, _chai.expect)(updatedTime).to.equal('2011-10-30 11:44:00');
145
+ });
146
+ it('Method:setDate', () => {
147
+ const updatedTime = adapter.formatByString(adapter.setDate(testDate, 15), formatDateTime);
148
+ (0, _chai.expect)(updatedTime).to.equal('2018-10-15 11:44:00');
149
+ });
150
+ it('Method:setSeconds', () => {
151
+ const updatedValue = adapter.formatByString(adapter.setSeconds(testDate, 11), formatDateTime);
152
+ (0, _chai.expect)(updatedValue).to.equal('2018-10-30 11:44:11');
153
+ });
154
+ it('Method:isAfter', () => {
155
+ (0, _chai.expect)(adapter.isAfter(adapter.date(), testDate)).to.equal(true);
156
+ (0, _chai.expect)(adapter.isAfter(testDate, adapter.date())).to.equal(false);
157
+ });
158
+ it('Method:isBefore', () => {
159
+ (0, _chai.expect)(adapter.isBefore(testDate, adapter.date())).to.equal(true);
160
+ (0, _chai.expect)(adapter.isBefore(adapter.date(), testDate)).to.equal(false);
161
+ });
162
+ it('Method:isAfterDay', () => {
163
+ const nextDay = adapter.addDays(testDate, 1);
164
+ (0, _chai.expect)(adapter.isAfterDay(nextDay, testDate)).to.equal(true);
165
+ (0, _chai.expect)(adapter.isAfterDay(testDate, nextDay)).to.equal(false);
166
+ });
167
+ it('Method:isBeforeDay', () => {
168
+ const previousDay = adapter.addDays(testDate, -1);
169
+ (0, _chai.expect)(adapter.isBeforeDay(testDate, previousDay)).to.equal(false);
170
+ (0, _chai.expect)(adapter.isBeforeDay(previousDay, testDate)).to.equal(true);
171
+ });
172
+ it('Method:isAfterYear', () => {
173
+ const nextYear = adapter.setYear(testDate, 2019);
174
+ (0, _chai.expect)(adapter.isAfterYear(nextYear, testDate)).to.equal(true);
175
+ (0, _chai.expect)(adapter.isAfterYear(testDate, nextYear)).to.equal(false);
176
+ });
177
+ it('Method:isBeforeYear', () => {
178
+ const previousYear = adapter.setYear(testDate, 2017);
179
+ (0, _chai.expect)(adapter.isBeforeYear(testDate, previousYear)).to.equal(false);
180
+ (0, _chai.expect)(adapter.isBeforeYear(previousYear, testDate)).to.equal(true);
181
+ });
182
+ it('Method:getWeekArray', () => {
183
+ const weekArray = adapter.getWeekArray(testDate);
184
+ (0, _chai.expect)(weekArray).to.have.length(5);
185
+ weekArray.forEach(week => {
186
+ (0, _chai.expect)(week).to.have.length(7);
187
+ });
188
+ });
189
+ it('Method:getYearRange', () => {
190
+ const yearRange = adapter.getYearRange(testDate, adapter.setYear(testDate, 2124));
191
+ (0, _chai.expect)(yearRange).to.have.length(107);
192
+ (0, _chai.expect)(adapter.getYear(yearRange[yearRange.length - 1])).to.equal(2124);
193
+ const emptyYearRange = adapter.getYearRange(testDate, adapter.setYear(testDate, adapter.getYear(testDate) - 1));
194
+ (0, _chai.expect)(emptyYearRange).to.have.length(0);
195
+ });
196
+ it('Method: getDiff', () => {
197
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2018-10-29T11:44:00.000Z'))).to.equal(86400000);
198
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2018-10-31T11:44:00.000Z'))).to.equal(-86400000);
199
+ (0, _chai.expect)(adapter.getDiff(testDate, '2018-10-31T11:44:00.000Z')).to.equal(-86400000);
200
+
201
+ // With units
202
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2017-09-29T11:44:00.000Z'), 'years')).to.equal(1);
203
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2018-08-29T11:44:00.000Z'), 'months')).to.equal(2);
204
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2018-05-29T11:44:00.000Z'), 'quarters')).to.equal(1);
205
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2018-09-29T11:44:00.000Z'), 'days')).to.equal(31);
206
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2018-09-29T11:44:00.000Z'), 'weeks')).to.equal(4);
207
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2018-09-29T11:44:00.000Z'), 'hours')).to.equal(744);
208
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2018-09-29T11:44:00.000Z'), 'minutes')).to.equal(44640);
209
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2018-10-30T10:44:00.000Z'), 'seconds')).to.equal(3600);
210
+ (0, _chai.expect)(adapter.getDiff(testDate, adapter.date('2018-10-30T10:44:00.000Z'), 'milliseconds')).to.equal(3600000);
211
+ });
212
+ it('Method: mergeDateAndTime', () => {
213
+ const mergedDate = adapter.mergeDateAndTime(testDate, adapter.date('2018-01-01T14:15:16.000Z'));
214
+ (0, _chai.expect)(adapter.toJsDate(mergedDate).toISOString()).to.equal('2018-10-30T14:15:16.000Z');
215
+ });
216
+ it('Method: isEqual', () => {
217
+ (0, _chai.expect)(adapter.isEqual(adapter.date(null), null)).to.equal(true);
218
+ (0, _chai.expect)(adapter.isEqual(testDate, adapter.date(testDateISO))).to.equal(true);
219
+ (0, _chai.expect)(adapter.isEqual(null, adapter.date(testDateISO))).to.equal(false);
220
+ });
221
+ it('Method: parseISO', () => {
222
+ const parsedDate = adapter.parseISO(testDateISO);
223
+ const outputtedISO = adapter.toISO(parsedDate);
224
+ if (adapter.lib === 'date-fns') {
225
+ // date-fns never suppress useless milliseconds in the end
226
+ (0, _chai.expect)(outputtedISO).to.equal(testDateISO.replace('.000Z', 'Z'));
227
+ } else if (adapter.lib === 'luxon') {
228
+ // luxon does not shorthand +00:00 to Z, which is also valid ISO string
229
+ (0, _chai.expect)(outputtedISO).to.equal(testDateISO.replace('Z', '+00:00'));
230
+ } else {
231
+ (0, _chai.expect)(outputtedISO).to.equal(testDateISO);
232
+ }
233
+ });
234
+ it('Method: parse', () => {
235
+ const parsedDate = adapter.parse('2018-10-30 11:44:00', formatDateTime);
236
+ (0, _chai.expect)(adapter.isEqual(parsedDate, testDate)).to.equal(true);
237
+ (0, _chai.expect)(adapter.parse('', formatDateTime)).to.equal(null);
238
+
239
+ // Invalid input
240
+ const invalidateParsedDate = adapter.parse('99-99-9999', formatDateTime);
241
+ (0, _chai.expect)(adapter.isValid(invalidateParsedDate)).to.equal(false);
242
+ });
243
+ it('Method: isNull', () => {
244
+ (0, _chai.expect)(adapter.isNull(null)).to.equal(true);
245
+ (0, _chai.expect)(adapter.isNull(testDate)).to.equal(false);
246
+ });
247
+ it('Method: isSameDay', () => {
248
+ (0, _chai.expect)(adapter.isSameDay(testDate, adapter.date('2018-10-30T00:00:00.000Z'))).to.equal(true);
249
+ (0, _chai.expect)(adapter.isSameDay(testDate, adapter.date('2019-10-30T00:00:00.000Z'))).to.equal(false);
250
+ });
251
+ it('Method: isSameMonth', () => {
252
+ (0, _chai.expect)(adapter.isSameMonth(testDate, adapter.date('2018-10-01T00:00:00.000Z'))).to.equal(true);
253
+ (0, _chai.expect)(adapter.isSameMonth(testDate, adapter.date('2019-10-01T00:00:00.000Z'))).to.equal(false);
254
+ });
255
+ it('Method: isSameYear', () => {
256
+ (0, _chai.expect)(adapter.isSameYear(testDate, adapter.date('2018-10-01T00:00:00.000Z'))).to.equal(true);
257
+ (0, _chai.expect)(adapter.isSameYear(testDate, adapter.date('2019-10-01T00:00:00.000Z'))).to.equal(false);
258
+ });
259
+ it('Method: isSameHour', () => {
260
+ (0, _chai.expect)(adapter.isSameHour(testDate, adapter.date(testDateISO))).to.equal(true);
261
+ (0, _chai.expect)(adapter.isSameHour(testDate, adapter.addDays(adapter.date(testDateISO), 5))).to.equal(false);
262
+ });
263
+ it('Method: getCurrentLocaleCode', () => {
264
+ // Returns the default location
265
+ (0, _chai.expect)(adapter.getCurrentLocaleCode()).to.match(/en/);
266
+ });
267
+ it('Method: toJsDate', () => {
268
+ (0, _chai.expect)(adapter.toJsDate(testDate)).to.be.instanceOf(Date);
269
+ });
270
+ it('Method: isWithinRange', () => {
271
+ (0, _chai.expect)(adapter.isWithinRange(adapter.date('2019-10-01T00:00:00.000Z'), [adapter.date('2019-09-01T00:00:00.000Z'), adapter.date('2019-11-01T00:00:00.000Z')])).to.equal(true);
272
+ (0, _chai.expect)(adapter.isWithinRange(adapter.date('2019-12-01T00:00:00.000Z'), [adapter.date('2019-09-01T00:00:00.000Z'), adapter.date('2019-11-01T00:00:00.000Z')])).to.equal(false);
273
+
274
+ // Should use inclusivity of range
275
+ (0, _chai.expect)(adapter.isWithinRange(adapter.date('2019-09-01T00:00:00.000Z'), [adapter.date('2019-09-01T00:00:00.000Z'), adapter.date('2019-12-01T00:00:00.000Z')])).to.equal(true);
276
+ (0, _chai.expect)(adapter.isWithinRange(adapter.date('2019-12-01T00:00:00.000Z'), [adapter.date('2019-09-01T00:00:00.000Z'), adapter.date('2019-12-01T00:00:00.000Z')])).to.equal(true);
277
+ });
278
+ };
279
+ exports.testCalculations = testCalculations;
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.testFormat = void 0;
7
+ var _chai = require("chai");
8
+ const testFormat = ({
9
+ adapter
10
+ }) => {
11
+ const expectDate = (format, expected) => {
12
+ const date = adapter.date('2020-01-01T23:44:00.000Z');
13
+ const result = adapter.format(date, format);
14
+ (0, _chai.expect)(result).to.equal(expected);
15
+ };
16
+ it('should correctly format standalone hardcoded formats', () => {
17
+ expectDate('normalDate', '1 January');
18
+ expectDate('normalDateWithWeekday', 'Wed, Jan 1');
19
+ expectDate('shortDate', 'Jan 1');
20
+ expectDate('year', '2020');
21
+ expectDate('month', 'January');
22
+ expectDate('monthAndDate', 'January 1');
23
+ expectDate('weekday', 'Wednesday');
24
+ expectDate('weekdayShort', 'Wed');
25
+ expectDate('dayOfMonth', '1');
26
+ expectDate('fullTime12h', '11:44 PM');
27
+ expectDate('fullTime24h', '23:44');
28
+ expectDate('hours12h', '11');
29
+ expectDate('hours24h', '23');
30
+ expectDate('minutes', '44');
31
+ expectDate('seconds', '00');
32
+ });
33
+ };
34
+ exports.testFormat = testFormat;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.testLocalization = void 0;
7
+ var _chai = require("chai");
8
+ const testLocalization = ({
9
+ adapter
10
+ }) => {
11
+ it('Method: formatNumber', () => {
12
+ (0, _chai.expect)(adapter.formatNumber('1')).to.equal('1');
13
+ });
14
+ it('Method: getMeridiemText', () => {
15
+ (0, _chai.expect)(adapter.getMeridiemText('am')).to.equal('AM');
16
+ (0, _chai.expect)(adapter.getMeridiemText('pm')).to.equal('PM');
17
+ });
18
+ it('Method: getFormatHelperText', () => {
19
+ (0, _chai.expect)(adapter.getFormatHelperText(adapter.formats.keyboardDate)).to.equal('mm/dd/yyyy');
20
+ (0, _chai.expect)(adapter.getFormatHelperText(adapter.formats.keyboardDateTime12h)).to.equal('mm/dd/yyyy hh:mm (a|p)m');
21
+ });
22
+ };
23
+ exports.testLocalization = testLocalization;
@@ -11,9 +11,10 @@ var _testDayViewValidation = require("./testDayViewValidation");
11
11
  var _testMonthViewValidation = require("./testMonthViewValidation");
12
12
  var _testTextFieldValidation = require("./testTextFieldValidation");
13
13
  var _testYearViewValidation = require("./testYearViewValidation");
14
+ var _testMinutesViewValidation = require("./testMinutesViewValidation");
14
15
  /* eslint-env mocha */
15
16
 
16
- const TEST_SUITES = [_testYearViewValidation.testYearViewValidation, _testMonthViewValidation.testMonthViewValidation, _testDayViewValidation.testDayViewValidation, _testTextFieldValidation.testTextFieldValidation];
17
+ const TEST_SUITES = [_testYearViewValidation.testYearViewValidation, _testMonthViewValidation.testMonthViewValidation, _testDayViewValidation.testDayViewValidation, _testMinutesViewValidation.testMinutesViewValidation, _testTextFieldValidation.testTextFieldValidation];
17
18
  function innerDescribeValidation(ElementToTest, getOptions) {
18
19
  const {
19
20
  after: runAfterHook = () => {},
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.testMinutesViewValidation = void 0;
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
+ var _chai = require("chai");
10
+ var React = _interopRequireWildcard(require("react"));
11
+ var _utils = require("@mui/monorepo/test/utils");
12
+ var _pickersUtils = require("test/utils/pickers-utils");
13
+ var _jsxRuntime = require("react/jsx-runtime");
14
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
15
+ 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; }
16
+ const toMinutesLabel = minutes => `${Number(minutes) < 10 ? `0${minutes}` : minutes} minutes`;
17
+ const testMinutesViewValidation = (ElementToTest, getOption) => {
18
+ const {
19
+ componentFamily,
20
+ views,
21
+ render,
22
+ clock,
23
+ withDate,
24
+ withTime,
25
+ variant
26
+ } = getOption();
27
+ if (!views.includes('minutes') || !variant || componentFamily !== 'picker' || variant === 'desktop') {
28
+ return;
29
+ }
30
+ describe('minutes view:', () => {
31
+ const defaultProps = (0, _extends2.default)({
32
+ onChange: () => {},
33
+ open: true,
34
+ view: 'minutes',
35
+ openTo: 'minutes',
36
+ reduceAnimations: true
37
+ }, componentFamily.includes('legacy-') ? {
38
+ componentsProps: {
39
+ toolbar: {
40
+ hidden: true
41
+ }
42
+ }
43
+ } : {
44
+ slotProps: {
45
+ toolbar: {
46
+ hidden: true
47
+ }
48
+ }
49
+ });
50
+ it('should apply shouldDisableTime', function test() {
51
+ render( /*#__PURE__*/(0, _jsxRuntime.jsx)(ElementToTest, (0, _extends2.default)({}, defaultProps, {
52
+ value: _pickersUtils.adapterToUse.date(new Date(2018, 2, 12, 8, 15, 0)),
53
+ shouldDisableTime: date => _pickersUtils.adapterToUse.isAfter(date, _pickersUtils.adapterToUse.date(new Date(2018, 2, 12, 8, 20, 0)))
54
+ })));
55
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
56
+ name: toMinutesLabel('10')
57
+ })).not.to.have.attribute('aria-disabled');
58
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
59
+ name: toMinutesLabel('15')
60
+ })).not.to.have.attribute('aria-disabled');
61
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
62
+ name: toMinutesLabel('20')
63
+ })).not.to.have.attribute('aria-disabled');
64
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
65
+ name: toMinutesLabel('25')
66
+ })).to.have.attribute('aria-disabled');
67
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
68
+ name: toMinutesLabel('30')
69
+ })).to.have.attribute('aria-disabled');
70
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
71
+ name: toMinutesLabel('55')
72
+ })).to.have.attribute('aria-disabled');
73
+ });
74
+ it('should apply disablePast', function test() {
75
+ let now;
76
+ function WithFakeTimer(props) {
77
+ now = _pickersUtils.adapterToUse.date(new Date());
78
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ElementToTest, (0, _extends2.default)({
79
+ value: now
80
+ }, props));
81
+ }
82
+ const {
83
+ setProps
84
+ } = render( /*#__PURE__*/(0, _jsxRuntime.jsx)(WithFakeTimer, (0, _extends2.default)({}, defaultProps, {
85
+ disablePast: true
86
+ })));
87
+ const tomorrow = _pickersUtils.adapterToUse.addDays(now, 1);
88
+ const currentMinutes = _pickersUtils.adapterToUse.getMinutes(now);
89
+ const closestNowMinutesOptionValue = Math.floor(currentMinutes / 5) * 5;
90
+ const previousMinutesOptionValue = Math.floor(currentMinutes / 5) * 5 - 5;
91
+ const nextMinutesOptionValue = Math.floor(currentMinutes / 5) * 5 + 5;
92
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
93
+ name: toMinutesLabel(previousMinutesOptionValue)
94
+ })).to.have.attribute('aria-disabled');
95
+ if (currentMinutes <= closestNowMinutesOptionValue) {
96
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
97
+ name: toMinutesLabel(closestNowMinutesOptionValue)
98
+ })).not.to.have.attribute('aria-disabled');
99
+ } else {
100
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
101
+ name: toMinutesLabel(closestNowMinutesOptionValue)
102
+ })).to.have.attribute('aria-disabled');
103
+ }
104
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
105
+ name: toMinutesLabel(nextMinutesOptionValue)
106
+ })).not.to.have.attribute('aria-disabled');
107
+
108
+ // following validation is relevant only for DateTimePicker
109
+ if (!withDate || !withTime) {
110
+ return;
111
+ }
112
+ setProps({
113
+ value: tomorrow
114
+ });
115
+ clock.runToLast();
116
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
117
+ name: toMinutesLabel(previousMinutesOptionValue)
118
+ })).not.to.have.attribute('aria-disabled');
119
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
120
+ name: toMinutesLabel(closestNowMinutesOptionValue)
121
+ })).not.to.have.attribute('aria-disabled');
122
+ });
123
+ it('should apply disableFuture', function test() {
124
+ let now;
125
+ function WithFakeTimer(props) {
126
+ now = _pickersUtils.adapterToUse.date(new Date());
127
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(ElementToTest, (0, _extends2.default)({
128
+ value: now
129
+ }, props));
130
+ }
131
+ const {
132
+ setProps
133
+ } = render( /*#__PURE__*/(0, _jsxRuntime.jsx)(WithFakeTimer, (0, _extends2.default)({}, defaultProps, {
134
+ disableFuture: true
135
+ })));
136
+ const yesterday = _pickersUtils.adapterToUse.addDays(now, -1);
137
+ const currentMinutes = _pickersUtils.adapterToUse.getMinutes(now);
138
+ const closestNowMinutesOptionValue = Math.floor(currentMinutes / 5) * 5;
139
+ const previousMinutesOptionValue = Math.floor(currentMinutes / 5) * 5 - 5;
140
+ const nextMinutesOptionValue = Math.floor(currentMinutes / 5) * 5 + 5;
141
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
142
+ name: toMinutesLabel(previousMinutesOptionValue)
143
+ })).not.to.have.attribute('aria-disabled');
144
+ if (currentMinutes < closestNowMinutesOptionValue) {
145
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
146
+ name: toMinutesLabel(closestNowMinutesOptionValue)
147
+ })).to.have.attribute('aria-disabled');
148
+ } else {
149
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
150
+ name: toMinutesLabel(closestNowMinutesOptionValue)
151
+ })).not.to.have.attribute('aria-disabled');
152
+ }
153
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
154
+ name: toMinutesLabel(nextMinutesOptionValue)
155
+ })).to.have.attribute('aria-disabled');
156
+
157
+ // following validation is relevant only for DateTimePicker
158
+ if (!withDate || !withTime) {
159
+ return;
160
+ }
161
+ setProps({
162
+ value: yesterday
163
+ });
164
+ clock.runToLast();
165
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
166
+ name: toMinutesLabel(previousMinutesOptionValue)
167
+ })).not.to.have.attribute('aria-disabled');
168
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
169
+ name: toMinutesLabel(closestNowMinutesOptionValue)
170
+ })).not.to.have.attribute('aria-disabled');
171
+ });
172
+ it('should apply maxTime', function test() {
173
+ render( /*#__PURE__*/(0, _jsxRuntime.jsx)(ElementToTest, (0, _extends2.default)({}, defaultProps, {
174
+ value: _pickersUtils.adapterToUse.date(new Date(2019, 5, 15, 11, 15, 0)),
175
+ maxTime: _pickersUtils.adapterToUse.date(new Date(2019, 5, 15, 11, 20, 0))
176
+ })));
177
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
178
+ name: toMinutesLabel('10')
179
+ })).not.to.have.attribute('aria-disabled');
180
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
181
+ name: toMinutesLabel('15')
182
+ })).not.to.have.attribute('aria-disabled');
183
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
184
+ name: toMinutesLabel('20')
185
+ })).not.to.have.attribute('aria-disabled');
186
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
187
+ name: toMinutesLabel('25')
188
+ })).to.have.attribute('aria-disabled');
189
+ });
190
+ it('should apply minTime', function test() {
191
+ render( /*#__PURE__*/(0, _jsxRuntime.jsx)(ElementToTest, (0, _extends2.default)({}, defaultProps, {
192
+ value: _pickersUtils.adapterToUse.date(new Date(2019, 5, 15, 11, 15, 0)),
193
+ minTime: _pickersUtils.adapterToUse.date(new Date(2019, 5, 15, 11, 10, 0))
194
+ })));
195
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
196
+ name: toMinutesLabel('0')
197
+ })).to.have.attribute('aria-disabled');
198
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
199
+ name: toMinutesLabel('5')
200
+ })).to.have.attribute('aria-disabled');
201
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
202
+ name: toMinutesLabel('10')
203
+ })).not.to.have.attribute('aria-disabled');
204
+ (0, _chai.expect)(_utils.screen.getByRole('option', {
205
+ name: toMinutesLabel('15')
206
+ })).not.to.have.attribute('aria-disabled');
207
+ });
208
+ });
209
+ };
210
+ exports.testMinutesViewValidation = testMinutesViewValidation;
@@ -81,7 +81,8 @@ const testPickerActionBar = (ElementToTest, getOptions) => {
81
81
  actionBar: {
82
82
  actions: ['clear']
83
83
  }
84
- }
84
+ },
85
+ value: emptyValue
85
86
  }));
86
87
 
87
88
  // Clear the date
@@ -101,7 +102,7 @@ const testPickerActionBar = (ElementToTest, getOptions) => {
101
102
  onAccept: onAccept,
102
103
  onClose: onClose,
103
104
  open: true,
104
- defaultValue: values[0],
105
+ value: values[0],
105
106
  componentsProps: {
106
107
  actionBar: {
107
108
  actions: ['cancel']
@@ -137,7 +138,7 @@ const testPickerActionBar = (ElementToTest, getOptions) => {
137
138
  onAccept: onAccept,
138
139
  onClose: onClose,
139
140
  open: true,
140
- defaultValue: values[0],
141
+ value: values[0],
141
142
  componentsProps: {
142
143
  actionBar: {
143
144
  actions: ['cancel']
@@ -183,6 +184,54 @@ const testPickerActionBar = (ElementToTest, getOptions) => {
183
184
  (0, _chai.expect)(onAccept.callCount).to.equal(1);
184
185
  (0, _chai.expect)(onClose.callCount).to.equal(1);
185
186
  });
187
+ it('should call onChange, onClose and onAccept when validating the default value', () => {
188
+ const onChange = (0, _sinon.spy)();
189
+ const onAccept = (0, _sinon.spy)();
190
+ const onClose = (0, _sinon.spy)();
191
+ render( /*#__PURE__*/(0, _jsxRuntime.jsx)(ElementToTest, {
192
+ onChange: onChange,
193
+ onAccept: onAccept,
194
+ onClose: onClose,
195
+ open: true,
196
+ defaultValue: values[0],
197
+ componentsProps: {
198
+ actionBar: {
199
+ actions: ['accept']
200
+ }
201
+ },
202
+ closeOnSelect: false
203
+ }));
204
+
205
+ // Accept the modifications
206
+ _utils.userEvent.mousePress(_utils.screen.getByText(/ok/i));
207
+ (0, _chai.expect)(onChange.callCount).to.equal(1);
208
+ (0, _chai.expect)(onAccept.callCount).to.equal(1);
209
+ (0, _chai.expect)(onClose.callCount).to.equal(1);
210
+ });
211
+ it('should call onClose but not onAccept when validating an already validated value', () => {
212
+ const onChange = (0, _sinon.spy)();
213
+ const onAccept = (0, _sinon.spy)();
214
+ const onClose = (0, _sinon.spy)();
215
+ render( /*#__PURE__*/(0, _jsxRuntime.jsx)(ElementToTest, {
216
+ onChange: onChange,
217
+ onAccept: onAccept,
218
+ onClose: onClose,
219
+ open: true,
220
+ value: values[0],
221
+ componentsProps: {
222
+ actionBar: {
223
+ actions: ['accept']
224
+ }
225
+ },
226
+ closeOnSelect: false
227
+ }));
228
+
229
+ // Accept the modifications
230
+ _utils.userEvent.mousePress(_utils.screen.getByText(/ok/i));
231
+ (0, _chai.expect)(onChange.callCount).to.equal(0);
232
+ (0, _chai.expect)(onAccept.callCount).to.equal(0);
233
+ (0, _chai.expect)(onClose.callCount).to.equal(1);
234
+ });
186
235
  });
187
236
  });
188
237
  };