@ionic/core 7.5.6-dev.11700169088.140f3e6a → 7.5.6-dev.11700519388.1583475f

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 (150) hide show
  1. package/components/icon.js +15 -16
  2. package/components/index7.js +1 -1
  3. package/dist/cjs/{index-09471526.js → index-6b8be5a4.js} +1 -1
  4. package/dist/cjs/ion-accordion_2.cjs.entry.js +1 -1
  5. package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
  6. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +1 -1
  7. package/dist/cjs/ion-button_2.cjs.entry.js +15 -16
  8. package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
  9. package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
  10. package/dist/cjs/ion-input.cjs.entry.js +1 -1
  11. package/dist/cjs/ion-item_8.cjs.entry.js +1 -1
  12. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  13. package/dist/cjs/ion-refresher_2.cjs.entry.js +1 -1
  14. package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
  15. package/dist/cjs/ion-searchbar.cjs.entry.js +1 -1
  16. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  17. package/dist/cjs/ion-toggle.cjs.entry.js +1 -1
  18. package/dist/collection/collection-manifest.json +4 -4
  19. package/dist/collection/components/accordion/test/accordion.spec.js +195 -0
  20. package/dist/collection/components/action-sheet/test/action-sheet-id.spec.js +32 -0
  21. package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +18 -0
  22. package/dist/collection/components/alert/test/alert-id.spec.js +32 -0
  23. package/dist/collection/components/alert/test/alert.spec.js +37 -0
  24. package/dist/collection/components/back-button/test/back-button.spec.js +86 -0
  25. package/dist/collection/components/breadcrumb/test/aria.spec.js +22 -0
  26. package/dist/collection/components/breadcrumbs/test/breadcrumbs.spec.js +58 -0
  27. package/dist/collection/components/button/test/form-reference/button.spec.js +26 -0
  28. package/dist/collection/components/card/test/aria.spec.js +16 -0
  29. package/dist/collection/components/checkbox/test/checkbox.spec.js +20 -0
  30. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +43 -0
  31. package/dist/collection/components/datetime/test/comparison.spec.js +43 -0
  32. package/dist/collection/components/datetime/test/data.spec.js +456 -0
  33. package/dist/collection/components/datetime/test/format.spec.js +124 -0
  34. package/dist/collection/components/datetime/test/helpers.spec.js +72 -0
  35. package/dist/collection/components/datetime/test/manipulation.spec.js +433 -0
  36. package/dist/collection/components/datetime/test/parse.spec.js +222 -0
  37. package/dist/collection/components/datetime/test/state.spec.js +114 -0
  38. package/dist/collection/components/infinite-scroll-content/test/infinite-scroll-content.spec.js +37 -0
  39. package/dist/collection/components/input/test/input.spec.js +85 -0
  40. package/dist/collection/components/input/test/item/input.spec.js +24 -0
  41. package/dist/collection/components/item/test/a11y/item.spec.js +48 -0
  42. package/dist/collection/components/loading/test/basic/loading.spec.js +16 -0
  43. package/dist/collection/components/loading/test/loading-id.spec.js +32 -0
  44. package/dist/collection/components/loading/test/loading.spec.js +37 -0
  45. package/dist/collection/components/modal/test/a11y/modal.spec.js +22 -0
  46. package/dist/collection/components/modal/test/basic/modal.spec.js +16 -0
  47. package/dist/collection/components/modal/test/can-dismiss/modal.spec.js +191 -0
  48. package/dist/collection/components/modal/test/modal-id.spec.js +32 -0
  49. package/dist/collection/components/nav/test/nav-controller.spec.js +749 -0
  50. package/dist/collection/components/picker/test/picker-id.spec.js +32 -0
  51. package/dist/collection/components/picker-column/test/picker-column-aria.spec.js +35 -0
  52. package/dist/collection/components/picker-column/test/picker-column-dynamic.spec.js +29 -0
  53. package/dist/collection/components/picker-column/test/picker-column.spec.js +17 -0
  54. package/dist/collection/components/popover/test/basic/popover.spec.js +16 -0
  55. package/dist/collection/components/popover/test/popover-id.spec.js +32 -0
  56. package/dist/collection/components/popover/test/util.spec.js +53 -0
  57. package/dist/collection/components/radio/test/radio.spec.js +46 -0
  58. package/dist/collection/components/range/test/label/range.spec.js +23 -0
  59. package/dist/collection/components/range/test/range.spec.js +205 -0
  60. package/dist/collection/components/refresher-content/test/refresher-content.spec.js +46 -0
  61. package/dist/collection/components/router/test/matching.spec.js +250 -0
  62. package/dist/collection/components/router/test/parser.spec.js +133 -0
  63. package/dist/collection/components/router/test/path.spec.js +218 -0
  64. package/dist/collection/components/router/test/router.spec.js +55 -0
  65. package/dist/collection/components/searchbar/test/searchbar.spec.js +15 -0
  66. package/dist/collection/components/segment/test/segment.spec.js +37 -0
  67. package/dist/collection/components/select/test/select.spec.js +59 -0
  68. package/dist/collection/components/textarea/test/textarea.spec.js +59 -0
  69. package/dist/collection/components/toast/test/toast-id.spec.js +32 -0
  70. package/dist/collection/components/toast/test/toast.spec.js +120 -0
  71. package/dist/collection/components/toggle/test/toggle.spec.js +55 -0
  72. package/dist/collection/global/test/config-controller.spec.js +77 -0
  73. package/dist/collection/utils/animation/test/animation.spec.js +431 -0
  74. package/dist/collection/utils/keyboard/test/keyboard-controller.spec.js +21 -0
  75. package/dist/collection/utils/keyboard/test/keyboard.spec.js +214 -0
  76. package/dist/collection/utils/sanitization/test/sanitization.spec.js +43 -0
  77. package/dist/collection/utils/test/aria.spec.js +79 -0
  78. package/dist/collection/utils/test/attributes.spec.js +53 -0
  79. package/dist/collection/utils/test/hardware-back-button.spec.js +53 -0
  80. package/dist/collection/utils/test/overlays/overlays.spec.js +102 -0
  81. package/dist/collection/utils/test/platform.spec.js +132 -0
  82. package/dist/collection/utils/test/ready.spec.js +39 -0
  83. package/dist/collection/utils/test/theme.spec.js +56 -0
  84. package/dist/docs.json +21 -21
  85. package/dist/esm/{index-c132c5f1.js → index-5d8e6a4f.js} +1 -1
  86. package/dist/esm/ion-accordion_2.entry.js +1 -1
  87. package/dist/esm/ion-back-button.entry.js +1 -1
  88. package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
  89. package/dist/esm/ion-button_2.entry.js +15 -16
  90. package/dist/esm/ion-datetime_3.entry.js +1 -1
  91. package/dist/esm/ion-fab_3.entry.js +1 -1
  92. package/dist/esm/ion-input.entry.js +1 -1
  93. package/dist/esm/ion-item_8.entry.js +1 -1
  94. package/dist/esm/ion-menu_3.entry.js +1 -1
  95. package/dist/esm/ion-refresher_2.entry.js +1 -1
  96. package/dist/esm/ion-reorder_2.entry.js +1 -1
  97. package/dist/esm/ion-searchbar.entry.js +1 -1
  98. package/dist/esm/ion-select_3.entry.js +1 -1
  99. package/dist/esm/ion-toggle.entry.js +1 -1
  100. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  101. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  102. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  103. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  104. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  105. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  106. package/dist/esm-es5/ion-input.entry.js +1 -1
  107. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  108. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  109. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  110. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  111. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  112. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  113. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  114. package/dist/ionic/ionic.esm.js +1 -1
  115. package/dist/ionic/p-1070ed59.entry.js +4 -0
  116. package/dist/ionic/p-178fa84b.system.entry.js +4 -0
  117. package/dist/ionic/{p-bed722c4.system.entry.js → p-1f011033.system.entry.js} +1 -1
  118. package/dist/ionic/{p-b203659a.system.entry.js → p-1f21e106.system.entry.js} +1 -1
  119. package/dist/ionic/{p-1e86a71b.entry.js → p-3101643f.entry.js} +1 -1
  120. package/dist/ionic/{p-39044fe6.system.entry.js → p-324226bf.system.entry.js} +1 -1
  121. package/dist/ionic/{p-d91e93ac.system.entry.js → p-3cd4001e.system.entry.js} +1 -1
  122. package/dist/ionic/{p-d3952bd5.system.entry.js → p-3f4fdd67.system.entry.js} +1 -1
  123. package/dist/ionic/p-40903d34.system.js +1 -1
  124. package/dist/ionic/{p-a21b8d05.entry.js → p-413e5a56.entry.js} +1 -1
  125. package/dist/ionic/{p-73411c1b.entry.js → p-459dd2a9.entry.js} +1 -1
  126. package/dist/ionic/{p-a5c1e6ce.entry.js → p-52138a68.entry.js} +1 -1
  127. package/dist/ionic/{p-d21bfe66.system.entry.js → p-54aba2a6.system.entry.js} +1 -1
  128. package/dist/ionic/{p-34d2de14.system.entry.js → p-5b885cc5.system.entry.js} +1 -1
  129. package/dist/ionic/{p-abacb44b.system.entry.js → p-68d27845.system.entry.js} +1 -1
  130. package/dist/ionic/{p-b2a74a72.entry.js → p-73ab9076.entry.js} +1 -1
  131. package/dist/ionic/{p-ad61e508.entry.js → p-7821df39.entry.js} +1 -1
  132. package/dist/ionic/{p-a8e68fd9.entry.js → p-85f8bc31.entry.js} +1 -1
  133. package/dist/ionic/{p-14aca3fb.entry.js → p-8dc8c0b7.entry.js} +1 -1
  134. package/dist/ionic/{p-5da0eb3e.system.entry.js → p-9437dac6.system.entry.js} +1 -1
  135. package/dist/ionic/{p-f5a750e4.system.entry.js → p-a94bed6d.system.entry.js} +1 -1
  136. package/dist/ionic/{p-48d9faa7.entry.js → p-ace47557.entry.js} +1 -1
  137. package/dist/ionic/{p-b6f8ee31.entry.js → p-af83378e.entry.js} +1 -1
  138. package/dist/ionic/{p-3ce8c3e3.entry.js → p-bb20a3fb.entry.js} +1 -1
  139. package/dist/ionic/{p-07d9e9cd.system.entry.js → p-cb9c77e7.system.entry.js} +1 -1
  140. package/dist/ionic/{p-377c636c.system.entry.js → p-d4bd82e9.system.entry.js} +1 -1
  141. package/dist/ionic/{p-0dc0d9b5.entry.js → p-d50f9c4b.entry.js} +1 -1
  142. package/dist/ionic/{p-f4cc91f6.entry.js → p-dc527a33.entry.js} +1 -1
  143. package/dist/ionic/{p-664d2b07.system.entry.js → p-edeb2f05.system.entry.js} +1 -1
  144. package/hydrate/index.js +1 -13
  145. package/package.json +3 -2
  146. package/dist/ionic/p-1dc91702.entry.js +0 -4
  147. package/dist/ionic/p-3fb57e1b.system.entry.js +0 -4
  148. /package/dist/esm-es5/{index-c132c5f1.js → index-5d8e6a4f.js} +0 -0
  149. /package/dist/ionic/{p-ea96fa73.js → p-6856db55.js} +0 -0
  150. /package/dist/ionic/{p-8050b9b9.system.js → p-a2e89e43.system.js} +0 -0
@@ -0,0 +1,433 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { getPreviousYear, getNextYear, getPreviousMonth, getNextMonth, getPreviousDay, getNextDay, getPreviousWeek, getNextWeek, getEndOfWeek, getStartOfWeek, convert12HourTo24Hour, getInternalHourValue, calculateHourFromAMPM, subtractDays, addDays, validateParts, } from "../utils/manipulation";
5
+ describe('addDays()', () => {
6
+ it('should correctly add days', () => {
7
+ expect(addDays({
8
+ day: 1,
9
+ month: 1,
10
+ year: 2021,
11
+ }, 31)).toEqual({
12
+ day: 1,
13
+ month: 2,
14
+ year: 2021,
15
+ });
16
+ expect(addDays({
17
+ day: 31,
18
+ month: 12,
19
+ year: 2021,
20
+ }, 1)).toEqual({
21
+ day: 1,
22
+ month: 1,
23
+ year: 2022,
24
+ });
25
+ });
26
+ });
27
+ describe('subtractDays()', () => {
28
+ it('should correctly subtract days', () => {
29
+ expect(subtractDays({
30
+ day: 1,
31
+ month: 1,
32
+ year: 2021,
33
+ }, 1)).toEqual({
34
+ day: 31,
35
+ month: 12,
36
+ year: 2020,
37
+ });
38
+ expect(subtractDays({
39
+ day: 1,
40
+ month: 2,
41
+ year: 2021,
42
+ }, 31)).toEqual({
43
+ day: 1,
44
+ month: 1,
45
+ year: 2021,
46
+ });
47
+ });
48
+ });
49
+ describe('getInternalHourValue()', () => {
50
+ it('should correctly get the internal hour value', () => {
51
+ expect(getInternalHourValue(12, true)).toEqual(12);
52
+ expect(getInternalHourValue(12, true)).toEqual(12);
53
+ expect(getInternalHourValue(12, false, 'am')).toEqual(0);
54
+ expect(getInternalHourValue(12, false, 'pm')).toEqual(12);
55
+ expect(getInternalHourValue(1, true)).toEqual(1);
56
+ expect(getInternalHourValue(1, true)).toEqual(1);
57
+ expect(getInternalHourValue(1, false, 'am')).toEqual(1);
58
+ expect(getInternalHourValue(1, false, 'pm')).toEqual(13);
59
+ });
60
+ });
61
+ describe('calculateHourFromAMPM()', () => {
62
+ it('should correctly convert from AM to PM', () => {
63
+ expect(calculateHourFromAMPM({ hour: 12, ampm: 'am' }, 'pm')).toEqual(12);
64
+ expect(calculateHourFromAMPM({ hour: 1, ampm: 'am' }, 'pm')).toEqual(13);
65
+ expect(calculateHourFromAMPM({ hour: 2, ampm: 'am' }, 'pm')).toEqual(14);
66
+ expect(calculateHourFromAMPM({ hour: 3, ampm: 'am' }, 'pm')).toEqual(15);
67
+ expect(calculateHourFromAMPM({ hour: 4, ampm: 'am' }, 'pm')).toEqual(16);
68
+ expect(calculateHourFromAMPM({ hour: 5, ampm: 'am' }, 'pm')).toEqual(17);
69
+ expect(calculateHourFromAMPM({ hour: 6, ampm: 'am' }, 'pm')).toEqual(18);
70
+ expect(calculateHourFromAMPM({ hour: 7, ampm: 'am' }, 'pm')).toEqual(19);
71
+ expect(calculateHourFromAMPM({ hour: 8, ampm: 'am' }, 'pm')).toEqual(20);
72
+ expect(calculateHourFromAMPM({ hour: 9, ampm: 'am' }, 'pm')).toEqual(21);
73
+ expect(calculateHourFromAMPM({ hour: 10, ampm: 'am' }, 'pm')).toEqual(22);
74
+ expect(calculateHourFromAMPM({ hour: 11, ampm: 'am' }, 'pm')).toEqual(23);
75
+ expect(calculateHourFromAMPM({ hour: 13, ampm: 'pm' }, 'am')).toEqual(1);
76
+ expect(calculateHourFromAMPM({ hour: 14, ampm: 'pm' }, 'am')).toEqual(2);
77
+ expect(calculateHourFromAMPM({ hour: 15, ampm: 'pm' }, 'am')).toEqual(3);
78
+ expect(calculateHourFromAMPM({ hour: 16, ampm: 'pm' }, 'am')).toEqual(4);
79
+ expect(calculateHourFromAMPM({ hour: 17, ampm: 'pm' }, 'am')).toEqual(5);
80
+ expect(calculateHourFromAMPM({ hour: 18, ampm: 'pm' }, 'am')).toEqual(6);
81
+ expect(calculateHourFromAMPM({ hour: 19, ampm: 'pm' }, 'am')).toEqual(7);
82
+ expect(calculateHourFromAMPM({ hour: 20, ampm: 'pm' }, 'am')).toEqual(8);
83
+ expect(calculateHourFromAMPM({ hour: 21, ampm: 'pm' }, 'am')).toEqual(9);
84
+ expect(calculateHourFromAMPM({ hour: 22, ampm: 'pm' }, 'am')).toEqual(10);
85
+ expect(calculateHourFromAMPM({ hour: 23, ampm: 'pm' }, 'am')).toEqual(11);
86
+ expect(calculateHourFromAMPM({ hour: 0, ampm: 'pm' }, 'am')).toEqual(12);
87
+ });
88
+ });
89
+ describe('convert12HourTo24Hour()', () => {
90
+ it('should correctly convert 12 hour to 24 hour', () => {
91
+ expect(convert12HourTo24Hour(12, 'am')).toEqual(0);
92
+ expect(convert12HourTo24Hour(1, 'am')).toEqual(1);
93
+ expect(convert12HourTo24Hour(2, 'am')).toEqual(2);
94
+ expect(convert12HourTo24Hour(3, 'am')).toEqual(3);
95
+ expect(convert12HourTo24Hour(4, 'am')).toEqual(4);
96
+ expect(convert12HourTo24Hour(5, 'am')).toEqual(5);
97
+ expect(convert12HourTo24Hour(6, 'am')).toEqual(6);
98
+ expect(convert12HourTo24Hour(7, 'am')).toEqual(7);
99
+ expect(convert12HourTo24Hour(8, 'am')).toEqual(8);
100
+ expect(convert12HourTo24Hour(9, 'am')).toEqual(9);
101
+ expect(convert12HourTo24Hour(10, 'am')).toEqual(10);
102
+ expect(convert12HourTo24Hour(11, 'am')).toEqual(11);
103
+ expect(convert12HourTo24Hour(12, 'pm')).toEqual(12);
104
+ expect(convert12HourTo24Hour(1, 'pm')).toEqual(13);
105
+ expect(convert12HourTo24Hour(2, 'pm')).toEqual(14);
106
+ expect(convert12HourTo24Hour(3, 'pm')).toEqual(15);
107
+ expect(convert12HourTo24Hour(4, 'pm')).toEqual(16);
108
+ expect(convert12HourTo24Hour(5, 'pm')).toEqual(17);
109
+ expect(convert12HourTo24Hour(6, 'pm')).toEqual(18);
110
+ expect(convert12HourTo24Hour(7, 'pm')).toEqual(19);
111
+ expect(convert12HourTo24Hour(8, 'pm')).toEqual(20);
112
+ expect(convert12HourTo24Hour(9, 'pm')).toEqual(21);
113
+ expect(convert12HourTo24Hour(10, 'pm')).toEqual(22);
114
+ expect(convert12HourTo24Hour(11, 'pm')).toEqual(23);
115
+ });
116
+ });
117
+ describe('getStartOfWeek()', () => {
118
+ it('should correctly return the start of the week', () => {
119
+ expect(getStartOfWeek({
120
+ month: 5,
121
+ day: 17,
122
+ year: 2021,
123
+ dayOfWeek: 1,
124
+ })).toEqual({
125
+ month: 5,
126
+ day: 16,
127
+ year: 2021,
128
+ });
129
+ expect(getStartOfWeek({
130
+ month: 5,
131
+ day: 1,
132
+ year: 2021,
133
+ dayOfWeek: 6,
134
+ })).toEqual({
135
+ month: 4,
136
+ day: 25,
137
+ year: 2021,
138
+ });
139
+ expect(getStartOfWeek({
140
+ month: 1,
141
+ day: 2,
142
+ year: 2021,
143
+ dayOfWeek: 6,
144
+ })).toEqual({
145
+ month: 12,
146
+ day: 27,
147
+ year: 2020,
148
+ });
149
+ });
150
+ });
151
+ describe('getEndOfWeek()', () => {
152
+ it('should correctly return the end of the week', () => {
153
+ expect(getEndOfWeek({
154
+ month: 5,
155
+ day: 17,
156
+ year: 2021,
157
+ dayOfWeek: 1,
158
+ })).toEqual({
159
+ month: 5,
160
+ day: 22,
161
+ year: 2021,
162
+ });
163
+ expect(getEndOfWeek({
164
+ month: 5,
165
+ day: 31,
166
+ year: 2021,
167
+ dayOfWeek: 1,
168
+ })).toEqual({
169
+ month: 6,
170
+ day: 5,
171
+ year: 2021,
172
+ });
173
+ expect(getEndOfWeek({
174
+ month: 12,
175
+ day: 29,
176
+ year: 2021,
177
+ dayOfWeek: 3,
178
+ })).toEqual({
179
+ month: 1,
180
+ day: 1,
181
+ year: 2022,
182
+ });
183
+ });
184
+ });
185
+ describe('getNextWeek()', () => {
186
+ it('should correctly return the next week', () => {
187
+ expect(getNextWeek({
188
+ month: 5,
189
+ day: 17,
190
+ year: 2021,
191
+ })).toEqual({
192
+ month: 5,
193
+ day: 24,
194
+ year: 2021,
195
+ });
196
+ expect(getNextWeek({
197
+ month: 5,
198
+ day: 31,
199
+ year: 2021,
200
+ })).toEqual({
201
+ month: 6,
202
+ day: 7,
203
+ year: 2021,
204
+ });
205
+ expect(getNextWeek({
206
+ month: 12,
207
+ day: 29,
208
+ year: 2021,
209
+ })).toEqual({
210
+ month: 1,
211
+ day: 5,
212
+ year: 2022,
213
+ });
214
+ });
215
+ });
216
+ describe('getPreviousWeek()', () => {
217
+ it('should correctly return the previous week', () => {
218
+ expect(getPreviousWeek({
219
+ month: 5,
220
+ day: 17,
221
+ year: 2021,
222
+ })).toEqual({
223
+ month: 5,
224
+ day: 10,
225
+ year: 2021,
226
+ });
227
+ expect(getPreviousWeek({
228
+ month: 5,
229
+ day: 1,
230
+ year: 2021,
231
+ })).toEqual({
232
+ month: 4,
233
+ day: 24,
234
+ year: 2021,
235
+ });
236
+ expect(getPreviousWeek({
237
+ month: 1,
238
+ day: 4,
239
+ year: 2021,
240
+ })).toEqual({
241
+ month: 12,
242
+ day: 28,
243
+ year: 2020,
244
+ });
245
+ });
246
+ });
247
+ describe('getNextDay()', () => {
248
+ it('should correctly return the next day', () => {
249
+ expect(getNextDay({
250
+ month: 5,
251
+ day: 17,
252
+ year: 2021,
253
+ })).toEqual({
254
+ month: 5,
255
+ day: 18,
256
+ year: 2021,
257
+ });
258
+ expect(getNextDay({
259
+ month: 5,
260
+ day: 31,
261
+ year: 2021,
262
+ })).toEqual({
263
+ month: 6,
264
+ day: 1,
265
+ year: 2021,
266
+ });
267
+ expect(getNextDay({
268
+ month: 12,
269
+ day: 31,
270
+ year: 2021,
271
+ })).toEqual({
272
+ month: 1,
273
+ day: 1,
274
+ year: 2022,
275
+ });
276
+ });
277
+ });
278
+ describe('getPreviousDay()', () => {
279
+ it('should correctly return the previous day', () => {
280
+ expect(getPreviousDay({
281
+ month: 5,
282
+ day: 17,
283
+ year: 2021,
284
+ })).toEqual({
285
+ month: 5,
286
+ day: 16,
287
+ year: 2021,
288
+ });
289
+ expect(getPreviousDay({
290
+ month: 5,
291
+ day: 1,
292
+ year: 2021,
293
+ })).toEqual({
294
+ month: 4,
295
+ day: 30,
296
+ year: 2021,
297
+ });
298
+ expect(getPreviousDay({
299
+ month: 1,
300
+ day: 1,
301
+ year: 2021,
302
+ })).toEqual({
303
+ month: 12,
304
+ day: 31,
305
+ year: 2020,
306
+ });
307
+ });
308
+ });
309
+ describe('getNextMonth()', () => {
310
+ it('should return correct next month', () => {
311
+ expect(getNextMonth({ month: 5, year: 2021, day: 1 })).toEqual({
312
+ month: 6,
313
+ year: 2021,
314
+ day: 1,
315
+ });
316
+ expect(getNextMonth({ month: 12, year: 2021, day: 30 })).toEqual({
317
+ month: 1,
318
+ year: 2022,
319
+ day: 30,
320
+ });
321
+ expect(getNextMonth({ month: 12, year: 1999, day: 30 })).toEqual({
322
+ month: 1,
323
+ year: 2000,
324
+ day: 30,
325
+ });
326
+ });
327
+ });
328
+ describe('getPreviousMonth()', () => {
329
+ it('should return correct previous month', () => {
330
+ expect(getPreviousMonth({ month: 5, year: 2021, day: 1 })).toEqual({
331
+ month: 4,
332
+ year: 2021,
333
+ day: 1,
334
+ });
335
+ expect(getPreviousMonth({ month: 1, year: 2021, day: 30 })).toEqual({
336
+ month: 12,
337
+ year: 2020,
338
+ day: 30,
339
+ });
340
+ expect(getPreviousMonth({ month: 1, year: 2000, day: 30 })).toEqual({
341
+ month: 12,
342
+ year: 1999,
343
+ day: 30,
344
+ });
345
+ });
346
+ });
347
+ describe('getNextYear()', () => {
348
+ it('should return correct next year', () => {
349
+ expect(getNextYear({ month: 5, year: 2021, day: 1 })).toEqual({
350
+ month: 5,
351
+ year: 2022,
352
+ day: 1,
353
+ });
354
+ expect(getNextYear({ month: 12, year: 1999, day: 30 })).toEqual({
355
+ month: 12,
356
+ year: 2000,
357
+ day: 30,
358
+ });
359
+ // Leap year
360
+ expect(getNextYear({ month: 2, year: 2024, day: 29 })).toEqual({
361
+ month: 2,
362
+ year: 2025,
363
+ day: 28,
364
+ });
365
+ });
366
+ });
367
+ describe('getPreviousYear()', () => {
368
+ it('should return correct next year', () => {
369
+ expect(getPreviousYear({ month: 5, year: 2021, day: 1 })).toEqual({
370
+ month: 5,
371
+ year: 2020,
372
+ day: 1,
373
+ });
374
+ expect(getPreviousYear({ month: 12, year: 1999, day: 30 })).toEqual({
375
+ month: 12,
376
+ year: 1998,
377
+ day: 30,
378
+ });
379
+ // Leap year
380
+ expect(getPreviousYear({ month: 2, year: 2024, day: 29 })).toEqual({
381
+ month: 2,
382
+ year: 2023,
383
+ day: 28,
384
+ });
385
+ });
386
+ });
387
+ describe('validateParts()', () => {
388
+ it('should move day in bounds', () => {
389
+ expect(validateParts({ month: 2, day: 31, year: 2022, hour: 8, minute: 0 })).toEqual({
390
+ month: 2,
391
+ day: 28,
392
+ year: 2022,
393
+ hour: 8,
394
+ minute: 0,
395
+ });
396
+ });
397
+ it('should move the hour back in bounds according to the min', () => {
398
+ expect(validateParts({ month: 1, day: 1, year: 2022, hour: 8, minute: 0 }, { month: 1, day: 1, year: 2022, hour: 9, minute: 0 })).toEqual({ month: 1, day: 1, year: 2022, hour: 9, minute: 0 });
399
+ });
400
+ it('should move the minute back in bounds according to the min', () => {
401
+ expect(validateParts({ month: 1, day: 1, year: 2022, hour: 9, minute: 20 }, { month: 1, day: 1, year: 2022, hour: 9, minute: 30 })).toEqual({ month: 1, day: 1, year: 2022, hour: 9, minute: 30 });
402
+ });
403
+ it('should move the hour and minute back in bounds according to the min', () => {
404
+ expect(validateParts({ month: 1, day: 1, year: 2022, hour: 8, minute: 30 }, { month: 1, day: 1, year: 2022, hour: 9, minute: 0 })).toEqual({ month: 1, day: 1, year: 2022, hour: 9, minute: 0 });
405
+ });
406
+ it('should move the hour back in bounds according to the max', () => {
407
+ expect(validateParts({ month: 1, day: 1, year: 2022, hour: 10, minute: 0 }, undefined, {
408
+ month: 1,
409
+ day: 1,
410
+ year: 2022,
411
+ hour: 9,
412
+ minute: 0,
413
+ })).toEqual({ month: 1, day: 1, year: 2022, hour: 9, minute: 0 });
414
+ });
415
+ it('should move the minute back in bounds according to the max', () => {
416
+ expect(validateParts({ month: 1, day: 1, year: 2022, hour: 9, minute: 40 }, undefined, {
417
+ month: 1,
418
+ day: 1,
419
+ year: 2022,
420
+ hour: 9,
421
+ minute: 30,
422
+ })).toEqual({ month: 1, day: 1, year: 2022, hour: 9, minute: 30 });
423
+ });
424
+ it('should move the hour and minute back in bounds according to the max', () => {
425
+ expect(validateParts({ month: 1, day: 1, year: 2022, hour: 10, minute: 20 }, undefined, {
426
+ month: 1,
427
+ day: 1,
428
+ year: 2022,
429
+ hour: 9,
430
+ minute: 30,
431
+ })).toEqual({ month: 1, day: 1, year: 2022, hour: 9, minute: 30 });
432
+ });
433
+ });
@@ -0,0 +1,222 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { clampDate, getPartsFromCalendarDay, parseAmPm, parseDate, parseMinParts, parseMaxParts } from "../utils/parse";
5
+ describe('getPartsFromCalendarDay()', () => {
6
+ it('should extract DatetimeParts from a calendar day element', () => {
7
+ const div = document.createElement('div');
8
+ div.setAttribute('data-month', '4');
9
+ div.setAttribute('data-day', '15');
10
+ div.setAttribute('data-year', '2010');
11
+ div.setAttribute('data-day-of-week', '5');
12
+ expect(getPartsFromCalendarDay(div)).toEqual({
13
+ day: 15,
14
+ month: 4,
15
+ year: 2010,
16
+ dayOfWeek: 5,
17
+ });
18
+ });
19
+ });
20
+ describe('parseDate()', () => {
21
+ it('should return undefined when passed undefined', () => {
22
+ expect(parseDate(undefined)).toStrictEqual(undefined);
23
+ });
24
+ it('should return undefined when passed null', () => {
25
+ expect(parseDate(null)).toStrictEqual(undefined);
26
+ });
27
+ it('should return the correct date object when passed a date', () => {
28
+ expect(parseDate('2022-12-15T13:47')).toEqual({
29
+ ampm: 'pm',
30
+ day: 15,
31
+ hour: 13,
32
+ minute: 47,
33
+ month: 12,
34
+ year: 2022,
35
+ });
36
+ });
37
+ /**
38
+ * Note: As Ionic v7 datetime no longer parses time zone information/
39
+ * See https://github.com/ionic-team/ionic-framework/commit/3fb4caf21ffac12f765c4c80bf1850e05d211c6a
40
+ */
41
+ it('should return the correct time zone offset', () => {
42
+ var _a;
43
+ // Casting as any since `tzOffset` does not exist on DatetimeParts
44
+ expect((_a = parseDate('2022-12-15T13:47:30-02:00')) === null || _a === void 0 ? void 0 : _a.tzOffset).toEqual(undefined);
45
+ });
46
+ it('should parse an array of dates', () => {
47
+ expect(parseDate(['2022-12-15T13:47', '2023-03-23T20:19:33.517Z'])).toEqual([
48
+ {
49
+ ampm: 'pm',
50
+ day: 15,
51
+ hour: 13,
52
+ minute: 47,
53
+ month: 12,
54
+ year: 2022,
55
+ },
56
+ {
57
+ ampm: 'pm',
58
+ day: 23,
59
+ hour: 20,
60
+ minute: 19,
61
+ month: 3,
62
+ year: 2023,
63
+ },
64
+ ]);
65
+ });
66
+ });
67
+ describe('clampDate()', () => {
68
+ const minParts = {
69
+ year: 2021,
70
+ month: 6,
71
+ day: 5,
72
+ };
73
+ const maxParts = {
74
+ year: 2021,
75
+ month: 8,
76
+ day: 19,
77
+ };
78
+ it('should return the max month when the value is greater than the max', () => {
79
+ const dateParts = {
80
+ year: 2022,
81
+ month: 5,
82
+ day: 24,
83
+ };
84
+ const value = clampDate(dateParts, minParts, maxParts);
85
+ expect(value).toStrictEqual(maxParts);
86
+ });
87
+ it('should return the min month when the value is less than the min', () => {
88
+ const dateParts = {
89
+ year: 2020,
90
+ month: 5,
91
+ day: 24,
92
+ };
93
+ const value = clampDate(dateParts, minParts, maxParts);
94
+ expect(value).toStrictEqual(minParts);
95
+ });
96
+ it('should return the value when the value is greater than the min and less than the max', () => {
97
+ const dateParts = {
98
+ year: 2021,
99
+ month: 7,
100
+ day: 10,
101
+ };
102
+ const value = clampDate(dateParts, minParts, maxParts);
103
+ expect(value).toStrictEqual(dateParts);
104
+ });
105
+ });
106
+ describe('parseAmPm()', () => {
107
+ it('should return pm when the hour is greater than or equal to 12', () => {
108
+ expect(parseAmPm(12)).toEqual('pm');
109
+ expect(parseAmPm(13)).toEqual('pm');
110
+ });
111
+ it('should return am when the hour is less than 12', () => {
112
+ expect(parseAmPm(11)).toEqual('am');
113
+ });
114
+ });
115
+ describe('parseMinParts()', () => {
116
+ it('should fill in missing information when not provided', () => {
117
+ const today = {
118
+ day: 14,
119
+ month: 3,
120
+ year: 2022,
121
+ minute: 4,
122
+ hour: 2,
123
+ };
124
+ expect(parseMinParts('2012', today)).toEqual({
125
+ month: 1,
126
+ day: 1,
127
+ year: 2012,
128
+ hour: 0,
129
+ minute: 0,
130
+ });
131
+ });
132
+ it('should default to current year when only given HH:mm', () => {
133
+ const today = {
134
+ day: 14,
135
+ month: 3,
136
+ year: 2022,
137
+ minute: 4,
138
+ hour: 2,
139
+ };
140
+ expect(parseMinParts('04:30', today)).toEqual({
141
+ month: 1,
142
+ day: 1,
143
+ year: 2022,
144
+ hour: 4,
145
+ minute: 30,
146
+ });
147
+ });
148
+ it('should return undefined when given invalid info', () => {
149
+ const today = {
150
+ day: 14,
151
+ month: 3,
152
+ year: 2022,
153
+ minute: 4,
154
+ hour: 2,
155
+ };
156
+ expect(parseMinParts(undefined, today)).toEqual(undefined);
157
+ expect(parseMinParts(null, today)).toEqual(undefined);
158
+ expect(parseMinParts('foo', today)).toEqual(undefined);
159
+ });
160
+ });
161
+ describe('parseMaxParts()', () => {
162
+ it('should fill in missing information when not provided', () => {
163
+ const today = {
164
+ day: 14,
165
+ month: 3,
166
+ year: 2022,
167
+ minute: 4,
168
+ hour: 2,
169
+ };
170
+ expect(parseMaxParts('2012', today)).toEqual({
171
+ month: 12,
172
+ day: 31,
173
+ year: 2012,
174
+ hour: 23,
175
+ minute: 59,
176
+ });
177
+ });
178
+ it('should default to current year when only given HH:mm', () => {
179
+ const today = {
180
+ day: 14,
181
+ month: 3,
182
+ year: 2022,
183
+ minute: 4,
184
+ hour: 2,
185
+ };
186
+ expect(parseMaxParts('04:30', today)).toEqual({
187
+ month: 12,
188
+ day: 31,
189
+ year: 2022,
190
+ hour: 4,
191
+ minute: 30,
192
+ });
193
+ });
194
+ it('should fill in correct day during a leap year', () => {
195
+ const today = {
196
+ day: 14,
197
+ month: 3,
198
+ year: 2022,
199
+ minute: 4,
200
+ hour: 2,
201
+ };
202
+ expect(parseMaxParts('2012-02', today)).toEqual({
203
+ month: 2,
204
+ day: 29,
205
+ year: 2012,
206
+ hour: 23,
207
+ minute: 59,
208
+ });
209
+ });
210
+ it('should return undefined when given invalid info', () => {
211
+ const today = {
212
+ day: 14,
213
+ month: 3,
214
+ year: 2022,
215
+ minute: 4,
216
+ hour: 2,
217
+ };
218
+ expect(parseMaxParts(undefined, today)).toEqual(undefined);
219
+ expect(parseMaxParts(null, today)).toEqual(undefined);
220
+ expect(parseMaxParts('foo', today)).toEqual(undefined);
221
+ });
222
+ });