@ionic/core 7.5.8-dev.11701806358.1ca1b519 → 7.5.8-dev.11701876182.1e71e7a0

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 (551) hide show
  1. package/components/animation.js +12 -11
  2. package/components/backdrop.js +12 -0
  3. package/components/checkbox.js +5 -3
  4. package/components/data.js +1 -1
  5. package/components/gesture-controller.js +1 -1
  6. package/components/index4.js +10 -12
  7. package/components/index5.js +0 -22
  8. package/components/input-shims.js +12 -7
  9. package/components/input.utils.js +3 -2
  10. package/components/ion-content.js +1 -1
  11. package/components/ion-datetime.js +64 -40
  12. package/components/ion-infinite-scroll.js +11 -3
  13. package/components/ion-input.js +31 -8
  14. package/components/ion-modal.js +2 -2
  15. package/components/ion-picker-column-internal.d.ts +11 -0
  16. package/components/ion-picker-column-internal.js +9 -0
  17. package/components/ion-picker-column.js +2 -2
  18. package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
  19. package/components/ion-picker-internal.js +9 -0
  20. package/components/ion-picker.js +309 -1
  21. package/components/ion-range.js +5 -3
  22. package/components/ion-select.js +44 -29
  23. package/components/ion-skeleton-text.js +14 -1
  24. package/components/ion-textarea.js +30 -7
  25. package/components/ion-toast.js +419 -74
  26. package/components/ion-toggle.js +5 -3
  27. package/components/item.js +2 -2
  28. package/components/label.js +2 -2
  29. package/components/overlays.js +6 -12
  30. package/components/picker-column-internal.js +390 -0
  31. package/components/picker-column.js +317 -363
  32. package/components/{picker.js → picker-internal.js} +16 -16
  33. package/components/radio-group.js +2 -0
  34. package/components/radio.js +45 -5
  35. package/dist/cjs/{animation-cc40e39c.js → animation-9b401d39.js} +13 -12
  36. package/dist/cjs/{button-active-9d7e0640.js → button-active-a5185907.js} +2 -2
  37. package/dist/cjs/{capacitor-46980811.js → capacitor-c04564bf.js} +1 -1
  38. package/dist/cjs/compare-with-utils-df1001d7.js +44 -0
  39. package/dist/cjs/{data-e7526b58.js → data-36b9094e.js} +1 -1
  40. package/dist/cjs/{gesture-controller-9436f482.js → gesture-controller-c40c045a.js} +0 -1
  41. package/dist/cjs/{haptic-216df36c.js → haptic-b882e0bb.js} +1 -1
  42. package/dist/cjs/{index-8c1e77d6.js → index-b4f986cd.js} +1 -1
  43. package/dist/cjs/index-c8d52405.js +10 -0
  44. package/dist/cjs/{index-5cbb20f9.js → index-ce101dc9.js} +11 -13
  45. package/dist/cjs/{index-ee07ed59.js → index-d1b59ffa.js} +1 -1
  46. package/dist/cjs/{index-d4c2e02c.js → index-f8f13389.js} +2 -2
  47. package/dist/cjs/index.cjs.js +10 -10
  48. package/dist/cjs/{input-shims-87102b6a.js → input-shims-a23bb0f4.js} +15 -10
  49. package/dist/cjs/{input.utils-2a11c1fe.js → input.utils-3d0166a2.js} +4 -3
  50. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  51. package/dist/cjs/ion-alert.cjs.entry.js +8 -8
  52. package/dist/cjs/ion-app_8.cjs.entry.js +10 -10
  53. package/dist/cjs/ion-backdrop.cjs.entry.js +12 -0
  54. package/dist/cjs/ion-checkbox.cjs.entry.js +5 -3
  55. package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
  56. package/dist/cjs/ion-datetime_3.cjs.entry.js +60 -40
  57. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +11 -3
  58. package/dist/cjs/ion-input.cjs.entry.js +34 -11
  59. package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
  60. package/dist/cjs/ion-item_8.cjs.entry.js +17 -4
  61. package/dist/cjs/ion-loading.cjs.entry.js +3 -4
  62. package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
  63. package/dist/cjs/ion-modal.cjs.entry.js +10 -10
  64. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  65. package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +74 -107
  66. package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +13 -13
  67. package/dist/cjs/ion-popover.cjs.entry.js +4 -5
  68. package/dist/cjs/ion-radio_2.cjs.entry.js +9 -4
  69. package/dist/cjs/ion-range.cjs.entry.js +6 -4
  70. package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
  71. package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
  72. package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
  73. package/dist/cjs/ion-select_3.cjs.entry.js +51 -36
  74. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  75. package/dist/cjs/ion-textarea.cjs.entry.js +33 -10
  76. package/dist/cjs/ion-toast.cjs.entry.js +434 -93
  77. package/dist/cjs/ion-toggle.cjs.entry.js +9 -7
  78. package/dist/cjs/ionic.cjs.js +1 -1
  79. package/dist/cjs/{ios.transition-a4ffb5a2.js → ios.transition-6787b799.js} +3 -3
  80. package/dist/cjs/{keyboard-9390928c.js → keyboard-0272231f.js} +1 -1
  81. package/dist/cjs/{keyboard-7d621ee9.js → keyboard-af1bb365.js} +3 -3
  82. package/dist/cjs/{keyboard-controller-2158b478.js → keyboard-controller-c05e747a.js} +2 -2
  83. package/dist/cjs/loader.cjs.js +1 -1
  84. package/dist/cjs/{md.transition-292abe1c.js → md.transition-e033d20a.js} +3 -3
  85. package/dist/cjs/{notch-controller-1dce508a.js → notch-controller-9735e7ac.js} +1 -1
  86. package/dist/cjs/{overlays-e8e05b0e.js → overlays-27a6fb16.js} +7 -12
  87. package/dist/cjs/{swipe-back-b8f2330b.js → swipe-back-2a858bbd.js} +2 -2
  88. package/dist/collection/collection-manifest.json +6 -7
  89. package/dist/collection/components/backdrop/backdrop.js +12 -0
  90. package/dist/collection/components/checkbox/checkbox.ios.css +0 -6
  91. package/dist/collection/components/checkbox/checkbox.js +4 -1
  92. package/dist/collection/components/checkbox/checkbox.md.css +0 -6
  93. package/dist/collection/components/checkbox/test/checkbox.spec.js +14 -0
  94. package/dist/collection/components/content/content.css +4 -0
  95. package/dist/collection/components/datetime/datetime.ios.css +38 -83
  96. package/dist/collection/components/datetime/datetime.js +36 -24
  97. package/dist/collection/components/datetime/datetime.md.css +38 -88
  98. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  99. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +9 -6
  100. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +0 -10
  101. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  102. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  103. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  104. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  105. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  106. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +41 -43
  107. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  108. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  109. package/dist/collection/components/datetime/test/values/datetime.e2e.js +12 -15
  110. package/dist/collection/components/datetime/utils/data.js +1 -1
  111. package/dist/collection/components/infinite-scroll/infinite-scroll.js +11 -3
  112. package/dist/collection/components/infinite-scroll/test/small-dom-update/infinite-scroll.e2e.js +31 -0
  113. package/dist/collection/components/input/input.ios.css +10 -3
  114. package/dist/collection/components/input/input.js +31 -6
  115. package/dist/collection/components/input/input.md.css +13 -12
  116. package/dist/collection/components/input/test/slot/input.e2e.js +51 -0
  117. package/dist/collection/components/item/item.ios.css +41 -3
  118. package/dist/collection/components/item/item.md.css +41 -3
  119. package/dist/collection/components/item/test/basic/item.e2e.js +1 -1
  120. package/dist/collection/components/item/test/disabled/item.e2e.js +0 -1
  121. package/dist/collection/components/label/label.ios.css +14 -3
  122. package/dist/collection/components/label/label.md.css +14 -3
  123. package/dist/collection/components/modal/gestures/swipe-to-close.js +2 -1
  124. package/dist/collection/components/note/test/a11y/note.e2e.js +43 -0
  125. package/dist/collection/components/picker/picker.ios.css +205 -100
  126. package/dist/collection/components/picker/picker.js +743 -461
  127. package/dist/collection/components/picker/picker.md.css +194 -98
  128. package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -99
  129. package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
  130. package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
  131. package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
  132. package/dist/collection/components/picker-column/picker-column.ios.css +160 -120
  133. package/dist/collection/components/picker-column/picker-column.js +329 -514
  134. package/dist/collection/components/picker-column/picker-column.md.css +107 -134
  135. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
  136. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
  137. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
  138. package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
  139. package/dist/collection/components/{picker-column-option/picker-column-option.md.css → picker-column-internal/picker-column-internal.ios.css} +53 -6
  140. package/dist/collection/components/picker-column-internal/picker-column-internal.js +565 -0
  141. package/dist/collection/components/{picker-legacy-column/picker-column.md.css → picker-column-internal/picker-column-internal.md.css} +63 -113
  142. package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +8 -8
  143. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +162 -0
  144. package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.ios.css} +100 -192
  145. package/dist/collection/components/picker-internal/picker-internal.js +544 -0
  146. package/dist/collection/components/{picker-legacy-column/picker-column.ios.css → picker-internal/picker-internal.md.css} +101 -98
  147. package/dist/collection/components/{picker/test/a11y/picker.e2e.js → picker-internal/test/a11y/picker-internal.e2e.js} +2 -2
  148. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
  149. package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +22 -23
  150. package/dist/collection/components/radio/radio.ios.css +0 -6
  151. package/dist/collection/components/radio/radio.js +7 -3
  152. package/dist/collection/components/radio/radio.md.css +0 -6
  153. package/dist/collection/components/radio/test/radio.spec.js +14 -0
  154. package/dist/collection/components/radio-group/radio-group.js +24 -0
  155. package/dist/collection/components/radio-group/test/radio-group.spec.js +69 -0
  156. package/dist/collection/components/range/range.ios.css +0 -6
  157. package/dist/collection/components/range/range.js +4 -1
  158. package/dist/collection/components/range/range.md.css +0 -6
  159. package/dist/collection/components/range/test/range.spec.js +16 -0
  160. package/dist/collection/components/select/select.ios.css +60 -7
  161. package/dist/collection/components/select/select.js +45 -28
  162. package/dist/collection/components/select/select.md.css +63 -19
  163. package/dist/collection/components/select/test/item/select.e2e.js +15 -0
  164. package/dist/collection/components/select/test/label/select.e2e.js +1 -1
  165. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +1 -1
  166. package/dist/collection/components/select/test/slot/select.e2e.js +67 -0
  167. package/dist/collection/components/skeleton-text/skeleton-text.js +39 -0
  168. package/dist/collection/components/textarea/test/slot/textarea.e2e.js +51 -0
  169. package/dist/collection/components/textarea/textarea.ios.css +37 -5
  170. package/dist/collection/components/textarea/textarea.js +30 -5
  171. package/dist/collection/components/textarea/textarea.md.css +47 -14
  172. package/dist/collection/components/toast/animations/ios.enter.js +2 -1
  173. package/dist/collection/components/toast/animations/md.enter.js +4 -3
  174. package/dist/collection/components/toast/animations/utils.js +20 -14
  175. package/dist/collection/components/toast/gestures/swipe-to-dismiss.js +267 -0
  176. package/dist/collection/components/toast/test/swipe-gesture/toast.e2e.js +84 -0
  177. package/dist/collection/components/toast/test/toast-config.spec.js +25 -0
  178. package/dist/collection/components/toast/test/toast.spec.js +80 -0
  179. package/dist/collection/components/toast/toast.ios.css +10 -10
  180. package/dist/collection/components/toast/toast.js +104 -1
  181. package/dist/collection/components/toast/toast.md.css +10 -0
  182. package/dist/collection/components/toggle/test/toggle.spec.js +12 -0
  183. package/dist/collection/components/toggle/toggle.ios.css +0 -6
  184. package/dist/collection/components/toggle/toggle.js +4 -1
  185. package/dist/collection/components/toggle/toggle.md.css +0 -6
  186. package/dist/collection/utils/animation/animation.js +12 -11
  187. package/dist/collection/utils/animation/test/animation.spec.js +16 -0
  188. package/dist/collection/utils/browser/index.js +0 -22
  189. package/dist/collection/utils/forms/compare-with-utils.js +39 -0
  190. package/dist/collection/utils/forms/index.js +1 -0
  191. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  192. package/dist/collection/utils/input-shims/input-shims.js +12 -6
  193. package/dist/collection/utils/menu-controller/index.js +10 -12
  194. package/dist/collection/utils/overlays.js +5 -11
  195. package/dist/collection/utils/slot-mutation-controller.js +3 -2
  196. package/dist/docs.json +265 -561
  197. package/dist/esm/{animation-fb0e0f6f.js → animation-dde8cc0d.js} +13 -12
  198. package/dist/esm/{button-active-ed9d848c.js → button-active-c6ee4f50.js} +2 -2
  199. package/dist/esm/{capacitor-b0e5fe83.js → capacitor-59395cbd.js} +1 -1
  200. package/dist/esm/compare-with-utils-a96ff2ea.js +41 -0
  201. package/dist/esm/{data-4b9508c9.js → data-f5c75b4e.js} +1 -1
  202. package/dist/esm/{gesture-controller-314a54f6.js → gesture-controller-1bf57181.js} +1 -1
  203. package/dist/esm/{haptic-152c4172.js → haptic-554688a5.js} +1 -1
  204. package/dist/esm/{index-80492ed3.js → index-0c12c22b.js} +11 -13
  205. package/dist/esm/{index-d8817fb0.js → index-1932b201.js} +2 -2
  206. package/dist/esm/{index-39782642.js → index-2cf77112.js} +2 -2
  207. package/dist/esm/{index-ba9976bb.js → index-82eeb47f.js} +1 -1
  208. package/dist/esm/index-a5d50daf.js +7 -0
  209. package/dist/esm/index.js +10 -10
  210. package/dist/esm/{input-shims-0a2e541d.js → input-shims-6539ce13.js} +14 -9
  211. package/dist/esm/{input.utils-2846d430.js → input.utils-a5a2d164.js} +4 -3
  212. package/dist/esm/ion-action-sheet.entry.js +8 -8
  213. package/dist/esm/ion-alert.entry.js +8 -8
  214. package/dist/esm/ion-app_8.entry.js +10 -10
  215. package/dist/esm/ion-backdrop.entry.js +12 -0
  216. package/dist/esm/ion-checkbox.entry.js +5 -3
  217. package/dist/esm/ion-datetime-button.entry.js +1 -1
  218. package/dist/esm/ion-datetime_3.entry.js +59 -39
  219. package/dist/esm/ion-infinite-scroll_2.entry.js +11 -3
  220. package/dist/esm/ion-input.entry.js +34 -11
  221. package/dist/esm/ion-item-option_3.entry.js +1 -1
  222. package/dist/esm/ion-item_8.entry.js +17 -4
  223. package/dist/esm/ion-loading.entry.js +3 -4
  224. package/dist/esm/ion-menu_3.entry.js +7 -7
  225. package/dist/esm/ion-modal.entry.js +10 -10
  226. package/dist/esm/ion-nav_2.entry.js +2 -2
  227. package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +74 -107
  228. package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +13 -13
  229. package/dist/esm/ion-popover.entry.js +4 -5
  230. package/dist/esm/ion-radio_2.entry.js +9 -4
  231. package/dist/esm/ion-range.entry.js +6 -4
  232. package/dist/esm/ion-refresher_2.entry.js +7 -7
  233. package/dist/esm/ion-reorder_2.entry.js +4 -4
  234. package/dist/esm/ion-segment_2.entry.js +1 -1
  235. package/dist/esm/ion-select_3.entry.js +47 -32
  236. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  237. package/dist/esm/ion-textarea.entry.js +33 -10
  238. package/dist/esm/ion-toast.entry.js +417 -76
  239. package/dist/esm/ion-toggle.entry.js +9 -7
  240. package/dist/esm/ionic.js +1 -1
  241. package/dist/esm/{ios.transition-fd16bec1.js → ios.transition-802a84a6.js} +3 -3
  242. package/dist/esm/{keyboard-c402e885.js → keyboard-52278bd7.js} +3 -3
  243. package/dist/esm/{keyboard-dbb05fb9.js → keyboard-73175e24.js} +1 -1
  244. package/dist/esm/{keyboard-controller-5d90929a.js → keyboard-controller-ec5c2bfa.js} +2 -2
  245. package/dist/esm/loader.js +1 -1
  246. package/dist/esm/{md.transition-94ac93e1.js → md.transition-43c2874d.js} +3 -3
  247. package/dist/esm/{notch-controller-d09b6aca.js → notch-controller-fea7f9c5.js} +1 -1
  248. package/dist/esm/{overlays-fbc5cab5.js → overlays-32ef481d.js} +7 -13
  249. package/dist/esm/{swipe-back-a8ca7f93.js → swipe-back-a6f386fc.js} +2 -2
  250. package/dist/esm-es5/{animation-fb0e0f6f.js → animation-dde8cc0d.js} +1 -1
  251. package/dist/esm-es5/{button-active-ed9d848c.js → button-active-c6ee4f50.js} +1 -1
  252. package/dist/esm-es5/{capacitor-b0e5fe83.js → capacitor-59395cbd.js} +1 -1
  253. package/dist/esm-es5/compare-with-utils-a96ff2ea.js +4 -0
  254. package/dist/esm-es5/{gesture-controller-314a54f6.js → gesture-controller-1bf57181.js} +1 -1
  255. package/dist/esm-es5/{haptic-152c4172.js → haptic-554688a5.js} +1 -1
  256. package/dist/esm-es5/index-0c12c22b.js +4 -0
  257. package/dist/esm-es5/{index-d8817fb0.js → index-1932b201.js} +1 -1
  258. package/dist/esm-es5/{index-39782642.js → index-2cf77112.js} +1 -1
  259. package/dist/esm-es5/{index-ba9976bb.js → index-82eeb47f.js} +1 -1
  260. package/dist/esm-es5/index.js +1 -1
  261. package/dist/esm-es5/input-shims-6539ce13.js +4 -0
  262. package/dist/esm-es5/input.utils-a5a2d164.js +4 -0
  263. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  264. package/dist/esm-es5/ion-alert.entry.js +1 -1
  265. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  266. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  267. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  268. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  269. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  270. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  271. package/dist/esm-es5/ion-input.entry.js +1 -1
  272. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  273. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  274. package/dist/esm-es5/ion-loading.entry.js +1 -1
  275. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  276. package/dist/esm-es5/ion-modal.entry.js +1 -1
  277. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  278. package/dist/esm-es5/ion-picker-column-internal.entry.js +4 -0
  279. package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
  280. package/dist/esm-es5/ion-popover.entry.js +1 -1
  281. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  282. package/dist/esm-es5/ion-range.entry.js +1 -1
  283. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  284. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  285. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  286. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  287. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  288. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  289. package/dist/esm-es5/ion-toast.entry.js +1 -1
  290. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  291. package/dist/esm-es5/ionic.js +1 -1
  292. package/dist/esm-es5/{ios.transition-fd16bec1.js → ios.transition-802a84a6.js} +1 -1
  293. package/dist/esm-es5/{keyboard-c402e885.js → keyboard-52278bd7.js} +1 -1
  294. package/dist/esm-es5/{keyboard-dbb05fb9.js → keyboard-73175e24.js} +1 -1
  295. package/dist/esm-es5/{keyboard-controller-5d90929a.js → keyboard-controller-ec5c2bfa.js} +1 -1
  296. package/dist/esm-es5/loader.js +1 -1
  297. package/dist/esm-es5/md.transition-43c2874d.js +4 -0
  298. package/dist/esm-es5/{notch-controller-d09b6aca.js → notch-controller-fea7f9c5.js} +1 -1
  299. package/dist/esm-es5/overlays-32ef481d.js +4 -0
  300. package/dist/esm-es5/swipe-back-a6f386fc.js +4 -0
  301. package/dist/html.html-data.json +15 -153
  302. package/dist/ionic/index.esm.js +1 -1
  303. package/dist/ionic/ionic.esm.js +1 -1
  304. package/dist/ionic/p-01d14eba.system.entry.js +4 -0
  305. package/dist/ionic/p-042e6f4b.entry.js +4 -0
  306. package/dist/ionic/p-05d83227.system.entry.js +4 -0
  307. package/dist/ionic/{p-32e19bee.system.js → p-0bd51c34.system.js} +1 -1
  308. package/dist/ionic/p-16756e94.system.entry.js +4 -0
  309. package/dist/ionic/p-1b19c04b.entry.js +4 -0
  310. package/dist/ionic/{p-95c26010.system.js → p-1cca10d6.system.js} +1 -1
  311. package/dist/ionic/p-1e4371bd.js +4 -0
  312. package/dist/ionic/{p-21c3515a.entry.js → p-251666e2.entry.js} +1 -1
  313. package/dist/ionic/{p-4e8e09e1.js → p-27281edd.js} +1 -1
  314. package/dist/ionic/p-28249b10.system.entry.js +4 -0
  315. package/dist/ionic/p-28a2c2a2.entry.js +4 -0
  316. package/dist/ionic/p-29d03b3a.js +4 -0
  317. package/dist/ionic/p-2b7827c7.js +4 -0
  318. package/dist/ionic/p-2d3b9fa3.system.entry.js +4 -0
  319. package/dist/ionic/p-2d539df1.entry.js +4 -0
  320. package/dist/ionic/{p-9c229210.system.entry.js → p-3137c025.system.entry.js} +2 -2
  321. package/dist/ionic/{p-3e1e14d9.system.js → p-31b2326e.system.js} +1 -1
  322. package/dist/ionic/{p-30029cc2.system.js → p-31fcb233.system.js} +1 -1
  323. package/dist/ionic/{p-1d624e03.system.js → p-33a37fad.system.js} +1 -1
  324. package/dist/ionic/p-35ce400e.system.js +4 -0
  325. package/dist/ionic/p-36d187af.js +4 -0
  326. package/dist/ionic/p-376a6063.js +4 -0
  327. package/dist/ionic/p-38f2c6bb.system.js +4 -0
  328. package/dist/ionic/p-39c31982.system.entry.js +4 -0
  329. package/dist/ionic/{p-75445583.js → p-3a75d7fd.js} +1 -1
  330. package/dist/ionic/{p-1fc72959.entry.js → p-3dd98a73.entry.js} +1 -1
  331. package/dist/ionic/p-3e6b47e8.system.entry.js +4 -0
  332. package/dist/ionic/p-3f5179b5.entry.js +4 -0
  333. package/dist/ionic/p-40f68333.system.js +4 -0
  334. package/dist/ionic/{p-643a8fae.js → p-42f189f4.js} +1 -1
  335. package/dist/ionic/p-438e1b8a.entry.js +4 -0
  336. package/dist/ionic/{p-b752714f.system.entry.js → p-46d400b4.system.entry.js} +1 -1
  337. package/dist/ionic/p-47b6ba5b.js +4 -0
  338. package/dist/ionic/{p-5d42b6b4.entry.js → p-4d67d27a.entry.js} +1 -1
  339. package/dist/ionic/{p-535d2a67.entry.js → p-4f3ae45a.entry.js} +1 -1
  340. package/dist/ionic/p-517a9885.system.entry.js +4 -0
  341. package/dist/ionic/p-53ec4f1c.system.js +4 -0
  342. package/dist/ionic/p-5e4eec2e.entry.js +4 -0
  343. package/dist/ionic/{p-57477107.system.js → p-5e745192.system.js} +1 -1
  344. package/dist/ionic/{p-a9a80f5b.entry.js → p-5eda1d7d.entry.js} +1 -1
  345. package/dist/ionic/{p-e8e86f69.system.entry.js → p-6577aea9.system.entry.js} +1 -1
  346. package/dist/ionic/p-6a6477b2.js +4 -0
  347. package/dist/ionic/{p-4890093d.js → p-6de472cb.js} +1 -1
  348. package/dist/ionic/{p-b4d31b30.system.entry.js → p-6de62649.system.entry.js} +1 -1
  349. package/dist/ionic/p-72f6ff89.js +4 -0
  350. package/dist/ionic/p-765f4dde.entry.js +4 -0
  351. package/dist/ionic/{p-3f6270b3.entry.js → p-78aadecb.entry.js} +1 -1
  352. package/dist/ionic/p-7d92bf15.system.entry.js +4 -0
  353. package/dist/ionic/p-7ee0f3f2.entry.js +4 -0
  354. package/dist/ionic/p-80fa068e.entry.js +4 -0
  355. package/dist/ionic/p-8314281e.system.js +4 -0
  356. package/dist/ionic/p-88d5fbd3.js +4 -0
  357. package/dist/ionic/{p-4911a5d6.entry.js → p-88fde0e0.entry.js} +1 -1
  358. package/dist/ionic/{p-0e4f2e17.system.js → p-8985cdb6.system.js} +1 -1
  359. package/dist/ionic/{p-96dbbac1.system.entry.js → p-8acae6b0.system.entry.js} +1 -1
  360. package/dist/ionic/p-8d69a624.entry.js +4 -0
  361. package/dist/ionic/p-8de17614.system.entry.js +4 -0
  362. package/dist/ionic/p-908475e7.system.entry.js +4 -0
  363. package/dist/ionic/p-91d33c4a.js +4 -0
  364. package/dist/ionic/p-979d4f5c.system.js +4 -0
  365. package/dist/ionic/p-9b7f0b0f.entry.js +4 -0
  366. package/dist/ionic/p-9e447eb1.system.js +4 -0
  367. package/dist/ionic/{p-f910cc73.system.entry.js → p-9eec42cc.system.entry.js} +1 -1
  368. package/dist/ionic/p-9f6ee2c0.system.entry.js +4 -0
  369. package/dist/ionic/{p-77965464.system.entry.js → p-a0bb7b92.system.entry.js} +1 -1
  370. package/dist/ionic/p-a0d7bb5e.system.js +4 -0
  371. package/dist/ionic/{p-6d72fb44.entry.js → p-a1987850.entry.js} +1 -1
  372. package/dist/ionic/p-a3277a67.entry.js +4 -0
  373. package/dist/ionic/{p-6b7c55cd.entry.js → p-a9978d08.entry.js} +1 -1
  374. package/dist/ionic/{p-fbf3a689.system.entry.js → p-ada96dd0.system.entry.js} +1 -1
  375. package/dist/ionic/p-afd6ca9d.entry.js +4 -0
  376. package/dist/ionic/p-b56d0866.system.entry.js +4 -0
  377. package/dist/ionic/p-b6f9d32a.entry.js +4 -0
  378. package/dist/ionic/{p-9b97df10.js → p-bb3615f7.js} +1 -1
  379. package/dist/ionic/p-c61cc894.js +4 -0
  380. package/dist/ionic/{p-20d469d0.system.js → p-c7c8429a.system.js} +1 -1
  381. package/dist/ionic/{p-304383f9.system.js → p-cabad15b.system.js} +1 -1
  382. package/dist/ionic/p-cce9f61a.system.entry.js +4 -0
  383. package/dist/ionic/{p-31158892.js → p-cdbeaadc.js} +1 -1
  384. package/dist/ionic/p-d032f825.system.entry.js +4 -0
  385. package/dist/ionic/p-d51674c5.system.js +4 -0
  386. package/dist/ionic/{p-b133e9b4.entry.js → p-ddb30596.entry.js} +1 -1
  387. package/dist/ionic/{p-98d82c73.system.js → p-ddbb2d5b.system.js} +1 -1
  388. package/dist/ionic/p-de6f8b28.system.js +4 -0
  389. package/dist/ionic/p-de756e5c.js +4 -0
  390. package/dist/ionic/p-dee7c1d0.system.entry.js +4 -0
  391. package/dist/ionic/p-dfd9432a.entry.js +4 -0
  392. package/dist/ionic/{p-54dfc9b5.system.js → p-e24ce1e5.system.js} +1 -1
  393. package/dist/ionic/p-e3584231.system.js +1 -1
  394. package/dist/ionic/{p-6fd64e7c.system.entry.js → p-e6d68e02.system.entry.js} +1 -1
  395. package/dist/ionic/p-e94c392d.entry.js +4 -0
  396. package/dist/ionic/p-f0445d82.system.entry.js +4 -0
  397. package/dist/ionic/{p-8ededb41.js → p-f5d2dc9b.js} +1 -1
  398. package/dist/ionic/p-f656e032.system.entry.js +4 -0
  399. package/dist/ionic/{p-76d3765d.js → p-f70970cf.js} +1 -1
  400. package/dist/ionic/{p-c18de88a.system.entry.js → p-fba0a6e7.system.entry.js} +1 -1
  401. package/dist/ionic/p-feae5133.entry.js +4 -0
  402. package/dist/types/components/backdrop/backdrop.d.ts +3 -0
  403. package/dist/types/components/checkbox/checkbox.d.ts +1 -0
  404. package/dist/types/components/datetime/datetime.d.ts +1 -0
  405. package/dist/types/components/datetime/utils/data.d.ts +2 -2
  406. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +7 -0
  407. package/dist/types/components/input/input.d.ts +2 -0
  408. package/dist/types/components/menu/menu.d.ts +1 -1
  409. package/dist/types/components/picker/picker.d.ts +131 -74
  410. package/dist/types/components/picker-column/picker-column.d.ts +39 -105
  411. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
  412. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
  413. package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
  414. package/dist/types/components/radio/radio.d.ts +1 -0
  415. package/dist/types/components/radio-group/radio-group-interface.d.ts +1 -0
  416. package/dist/types/components/radio-group/radio-group.d.ts +8 -1
  417. package/dist/types/components/range/range.d.ts +1 -0
  418. package/dist/types/components/router/router.d.ts +2 -1
  419. package/dist/types/components/select/select.d.ts +6 -1
  420. package/dist/types/components/skeleton-text/skeleton-text.d.ts +9 -1
  421. package/dist/types/components/textarea/textarea.d.ts +2 -0
  422. package/dist/types/components/toast/animations/utils.d.ts +15 -4
  423. package/dist/types/components/toast/gestures/swipe-to-dismiss.d.ts +9 -0
  424. package/dist/types/components/toast/toast-interface.d.ts +2 -0
  425. package/dist/types/components/toast/toast.d.ts +28 -1
  426. package/dist/types/components/toggle/toggle.d.ts +1 -0
  427. package/dist/types/components.d.ts +159 -169
  428. package/dist/types/interface.d.ts +2 -6
  429. package/dist/types/jest.d.ts +5 -0
  430. package/dist/types/utils/animation/animation-interface.d.ts +4 -4
  431. package/dist/types/utils/browser/index.d.ts +11 -2
  432. package/dist/types/utils/config.d.ts +2 -2
  433. package/dist/types/utils/forms/compare-with-utils.d.ts +18 -0
  434. package/dist/types/utils/forms/index.d.ts +1 -0
  435. package/dist/types/utils/gesture/gesture-controller.d.ts +0 -1
  436. package/dist/types/utils/hardware-back-button.d.ts +4 -0
  437. package/dist/types/utils/overlays.d.ts +3 -5
  438. package/dist/types/utils/slot-mutation-controller.d.ts +2 -2
  439. package/hydrate/index.js +1855 -1509
  440. package/package.json +1 -1
  441. package/components/ion-picker-column-option.d.ts +0 -11
  442. package/components/ion-picker-column-option.js +0 -9
  443. package/components/ion-picker-legacy-column.d.ts +0 -11
  444. package/components/ion-picker-legacy-column.js +0 -9
  445. package/components/ion-picker-legacy.js +0 -309
  446. package/components/picker-column-option.js +0 -122
  447. package/components/picker-column2.js +0 -379
  448. package/dist/cjs/index-306a7476.js +0 -32
  449. package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -104
  450. package/dist/collection/components/item/test/text/item.e2e.js +0 -14
  451. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +0 -113
  452. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +0 -39
  453. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -87
  454. package/dist/collection/components/picker-column-option/picker-column-option.js +0 -173
  455. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
  456. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +0 -37
  457. package/dist/collection/components/picker-legacy/picker.ios.css +0 -367
  458. package/dist/collection/components/picker-legacy/picker.js +0 -817
  459. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
  460. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
  461. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +0 -65
  462. package/dist/esm/index-7a14ecec.js +0 -29
  463. package/dist/esm/ion-picker-column-option.entry.js +0 -100
  464. package/dist/esm-es5/index-80492ed3.js +0 -4
  465. package/dist/esm-es5/input-shims-0a2e541d.js +0 -4
  466. package/dist/esm-es5/input.utils-2846d430.js +0 -4
  467. package/dist/esm-es5/ion-picker-column-option.entry.js +0 -4
  468. package/dist/esm-es5/ion-picker-column.entry.js +0 -4
  469. package/dist/esm-es5/ion-picker.entry.js +0 -4
  470. package/dist/esm-es5/md.transition-94ac93e1.js +0 -4
  471. package/dist/esm-es5/overlays-fbc5cab5.js +0 -4
  472. package/dist/esm-es5/swipe-back-a8ca7f93.js +0 -4
  473. package/dist/ionic/p-22e5af95.entry.js +0 -4
  474. package/dist/ionic/p-232d1f22.entry.js +0 -4
  475. package/dist/ionic/p-23672c82.system.entry.js +0 -4
  476. package/dist/ionic/p-26798a7b.system.entry.js +0 -4
  477. package/dist/ionic/p-27bcbbc7.system.entry.js +0 -4
  478. package/dist/ionic/p-2ab4e925.system.entry.js +0 -4
  479. package/dist/ionic/p-2d5aeccc.js +0 -4
  480. package/dist/ionic/p-2d600c25.system.js +0 -4
  481. package/dist/ionic/p-308e1341.js +0 -4
  482. package/dist/ionic/p-32303650.system.entry.js +0 -4
  483. package/dist/ionic/p-34c39c48.entry.js +0 -4
  484. package/dist/ionic/p-3ba01a9c.system.entry.js +0 -4
  485. package/dist/ionic/p-3c58a71b.js +0 -4
  486. package/dist/ionic/p-3fd26bd6.system.entry.js +0 -4
  487. package/dist/ionic/p-3fe96156.system.js +0 -4
  488. package/dist/ionic/p-42ba3902.entry.js +0 -4
  489. package/dist/ionic/p-4a081ea9.entry.js +0 -4
  490. package/dist/ionic/p-4a31c99f.entry.js +0 -4
  491. package/dist/ionic/p-4a36430f.system.entry.js +0 -4
  492. package/dist/ionic/p-51abefb7.system.js +0 -4
  493. package/dist/ionic/p-563c41f0.system.entry.js +0 -4
  494. package/dist/ionic/p-5a68960f.entry.js +0 -4
  495. package/dist/ionic/p-6c37f051.js +0 -4
  496. package/dist/ionic/p-73190c5f.entry.js +0 -4
  497. package/dist/ionic/p-73aa7604.entry.js +0 -4
  498. package/dist/ionic/p-7b725280.entry.js +0 -4
  499. package/dist/ionic/p-8017aad2.system.entry.js +0 -4
  500. package/dist/ionic/p-83af3685.system.js +0 -4
  501. package/dist/ionic/p-846ee227.entry.js +0 -4
  502. package/dist/ionic/p-856c430d.js +0 -4
  503. package/dist/ionic/p-8c97cdc0.entry.js +0 -4
  504. package/dist/ionic/p-8fa6583d.system.js +0 -4
  505. package/dist/ionic/p-9282b16f.entry.js +0 -4
  506. package/dist/ionic/p-93000a81.system.entry.js +0 -4
  507. package/dist/ionic/p-990ffd0e.js +0 -4
  508. package/dist/ionic/p-9ba90516.system.entry.js +0 -4
  509. package/dist/ionic/p-a225bf0f.system.entry.js +0 -4
  510. package/dist/ionic/p-a60a1ce5.js +0 -4
  511. package/dist/ionic/p-a8baa23e.entry.js +0 -4
  512. package/dist/ionic/p-a98dc0c1.entry.js +0 -4
  513. package/dist/ionic/p-a9e3b5be.system.entry.js +0 -4
  514. package/dist/ionic/p-ab9456e9.system.entry.js +0 -4
  515. package/dist/ionic/p-afcf4620.entry.js +0 -4
  516. package/dist/ionic/p-c2910c78.entry.js +0 -4
  517. package/dist/ionic/p-c8f0a036.entry.js +0 -4
  518. package/dist/ionic/p-ca8938f4.js +0 -4
  519. package/dist/ionic/p-ca9d1792.system.entry.js +0 -4
  520. package/dist/ionic/p-cde52378.system.entry.js +0 -4
  521. package/dist/ionic/p-d43f1f3d.system.js +0 -4
  522. package/dist/ionic/p-d662d908.js +0 -4
  523. package/dist/ionic/p-d9695ad9.system.js +0 -4
  524. package/dist/ionic/p-da15f571.system.entry.js +0 -4
  525. package/dist/ionic/p-e4d90573.js +0 -4
  526. package/dist/ionic/p-f54c72b0.system.js +0 -4
  527. package/dist/ionic/p-f7a36cd0.system.js +0 -4
  528. package/dist/ionic/p-f967631d.js +0 -4
  529. package/dist/ionic/p-fe4dde76.entry.js +0 -4
  530. package/dist/ionic/p-ffd5dba4.system.entry.js +0 -4
  531. package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
  532. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -66
  533. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  534. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  535. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
  536. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
  537. /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
  538. /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
  539. /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
  540. /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
  541. /package/dist/esm-es5/{data-4b9508c9.js → data-f5c75b4e.js} +0 -0
  542. /package/dist/esm-es5/{index-7a14ecec.js → index-a5d50daf.js} +0 -0
  543. /package/dist/ionic/{p-368f5215.js → p-2aea8b1e.js} +0 -0
  544. /package/dist/ionic/{p-0e94957a.system.js → p-792919fd.system.js} +0 -0
  545. /package/dist/ionic/{p-b347cfd1.js → p-7b30edcc.js} +0 -0
  546. /package/dist/ionic/{p-f58981c2.system.js → p-82e3d633.system.js} +0 -0
  547. /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
  548. /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
  549. /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
  550. /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
  551. /package/dist/types/components/{picker-column/picker-column-interfaces.d.ts → picker-column-internal/picker-column-internal-interfaces.d.ts} +0 -0
@@ -71,6 +71,19 @@
71
71
  overflow: hidden;
72
72
  }
73
73
 
74
+ /**
75
+ * When using the wheel picker to switch
76
+ * between months, sometimes the allowed
77
+ * dates may be filtered. As a result, it
78
+ * is possible to get a layout shift as
79
+ * the picker column will shrink to fit the
80
+ * widest item in the column. Setting a minimum
81
+ * width avoids this layout shifting.
82
+ */
83
+ ion-picker-column-internal {
84
+ min-width: 26px;
85
+ }
86
+
74
87
  :host(.datetime-size-fixed) {
75
88
  width: auto;
76
89
  height: auto;
@@ -81,7 +94,7 @@
81
94
  }
82
95
 
83
96
  /**
84
- * This ensures that the picker is appropriately
97
+ * This ensures that the picker is apppropriately
85
98
  * sized and never truncates the text.
86
99
  */
87
100
  :host(.datetime-size-fixed.datetime-prefer-wheel) {
@@ -304,8 +317,24 @@
304
317
  justify-content: space-between;
305
318
  }
306
319
 
320
+ :host .calendar-action-buttons ion-item,
307
321
  :host .calendar-action-buttons ion-button {
308
- --background: transparent;
322
+ --background: translucent;
323
+ }
324
+
325
+ :host .calendar-action-buttons ion-item ion-label {
326
+ display: flex;
327
+ align-items: center;
328
+ width: auto;
329
+ }
330
+
331
+ :host .calendar-action-buttons ion-item ion-icon {
332
+ -webkit-padding-start: 4px;
333
+ padding-inline-start: 4px;
334
+ -webkit-padding-end: 0;
335
+ padding-inline-end: 0;
336
+ padding-top: 0;
337
+ padding-bottom: 0;
309
338
  }
310
339
 
311
340
  :host .calendar-days-of-week {
@@ -487,66 +516,8 @@
487
516
  position: static;
488
517
  }
489
518
 
490
- :host(.show-month-and-year) .calendar-action-buttons .calendar-month-year-toggle {
491
- color: var(--ion-color-base);
492
- }
493
-
494
- .calendar-month-year {
495
- min-width: 0;
496
- }
497
-
498
- .calendar-month-year-toggle {
499
- font-family: inherit;
500
- font-size: inherit;
501
- font-style: inherit;
502
- font-weight: inherit;
503
- letter-spacing: inherit;
504
- text-decoration: inherit;
505
- text-indent: inherit;
506
- text-overflow: inherit;
507
- text-transform: inherit;
508
- text-align: inherit;
509
- white-space: inherit;
510
- color: inherit;
511
- position: relative;
512
- border: 0;
513
- outline: none;
514
- background: transparent;
515
- cursor: pointer;
516
- z-index: 1;
517
- }
518
- .calendar-month-year-toggle::after {
519
- left: 0;
520
- right: 0;
521
- top: 0;
522
- bottom: 0;
523
- position: absolute;
524
- content: "";
525
- opacity: 0;
526
- transition: opacity 15ms linear, background-color 15ms linear;
527
- z-index: -1;
528
- }
529
- .calendar-month-year-toggle.ion-focused::after {
530
- background: currentColor;
531
- }
532
- .calendar-month-year-toggle:disabled {
533
- opacity: 0.3;
534
- pointer-events: none;
535
- }
536
-
537
- .calendar-month-year-toggle ion-icon {
538
- -webkit-padding-start: 4px;
539
- padding-inline-start: 4px;
540
- -webkit-padding-end: 0;
541
- padding-inline-end: 0;
542
- padding-top: 0;
543
- padding-bottom: 0;
544
- flex-shrink: 0;
545
- }
546
-
547
- .calendar-month-year-toggle #toggle-wrapper {
548
- display: inline-flex;
549
- align-items: center;
519
+ :host(.show-month-and-year) .calendar-action-buttons ion-item {
520
+ --color: var(--ion-color-base);
550
521
  }
551
522
 
552
523
  /**
@@ -630,36 +601,15 @@
630
601
  font-size: 2.125rem;
631
602
  }
632
603
 
633
- :host .calendar-action-buttons ion-button {
634
- --color: var(--ion-color-step-650, #595959);
604
+ :host .datetime-calendar .calendar-action-buttons ion-item {
605
+ --padding-start: 20px;
635
606
  }
636
607
 
637
- .calendar-month-year-toggle {
638
- -webkit-padding-start: 20px;
639
- padding-inline-start: 20px;
640
- -webkit-padding-end: 16px;
641
- padding-inline-end: 16px;
642
- padding-top: 12px;
643
- padding-bottom: 12px;
644
- min-height: 48px;
645
- background: transparent;
646
- color: var(--ion-color-step-650, #595959);
647
- z-index: 1;
648
- }
649
- .calendar-month-year-toggle.ion-focused::after {
650
- opacity: 0.04;
651
- }
652
-
653
- .calendar-month-year-toggle ion-ripple-effect {
654
- color: currentColor;
608
+ :host .calendar-action-buttons ion-item,
609
+ :host .calendar-action-buttons ion-button {
610
+ --color: var(--ion-color-step-650, #595959);
655
611
  }
656
612
 
657
- @media (any-hover: hover) {
658
- .calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after {
659
- background: currentColor;
660
- opacity: 0.04;
661
- }
662
- }
663
613
  :host .calendar-days-of-week {
664
614
  -webkit-padding-start: 10px;
665
615
  padding-inline-start: 10px;
@@ -38,7 +38,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
38
38
  `, config);
39
39
  const tabKey = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';
40
40
  const datetime = page.locator('ion-datetime');
41
- const monthYearButton = page.locator('.calendar-month-year-toggle');
41
+ const monthYearButton = page.locator('.calendar-month-year ion-item');
42
42
  const prevButton = page.locator('.calendar-next-prev ion-button:nth-child(1)');
43
43
  const nextButton = page.locator('.calendar-next-prev ion-button:nth-child(2)');
44
44
  await page.keyboard.press(tabKey);
@@ -2,6 +2,7 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { newSpecPage } from "@stencil/core/testing";
5
+ import { Item } from "../../../item/item";
5
6
  import { Datetime } from "../../datetime";
6
7
  describe('datetime', () => {
7
8
  beforeEach(() => {
@@ -17,23 +18,25 @@ describe('datetime', () => {
17
18
  let page;
18
19
  beforeEach(async () => {
19
20
  page = await newSpecPage({
20
- components: [Datetime],
21
+ components: [Datetime, Item],
21
22
  html: `<ion-datetime></ion-datetime>`,
22
23
  });
23
24
  });
24
25
  it('should have aria-label "Show year picker" when collapsed', async () => {
25
26
  const datetime = page.body.querySelector('ion-datetime');
26
- const monthYearToggleBtn = datetime.shadowRoot.querySelector('.calendar-month-year .calendar-month-year-toggle');
27
+ const item = datetime.shadowRoot.querySelector('.calendar-month-year ion-item');
28
+ const monthYearToggleBtn = item.shadowRoot.querySelector('button');
27
29
  const ariaLabel = monthYearToggleBtn.getAttribute('aria-label');
28
30
  expect(ariaLabel).toContain('Show year picker');
29
31
  });
30
32
  it('should have aria-label "Hide year picker" when expanded', async () => {
31
33
  const datetime = page.body.querySelector('ion-datetime');
32
- const monthYearToggleBtn = datetime.shadowRoot.querySelector('.calendar-month-year .calendar-month-year-toggle');
33
- monthYearToggleBtn.click();
34
+ const item = datetime.shadowRoot.querySelector('.calendar-month-year ion-item');
35
+ item.click();
34
36
  await page.waitForChanges();
35
- const monthYearToggleBtnAfter = datetime.shadowRoot.querySelector('.calendar-month-year .calendar-month-year-toggle');
36
- const ariaLabel = monthYearToggleBtnAfter.getAttribute('aria-label');
37
+ const itemAfter = datetime.shadowRoot.querySelector('.calendar-month-year ion-item');
38
+ const monthYearToggleBtn = itemAfter.shadowRoot.querySelector('button');
39
+ const ariaLabel = monthYearToggleBtn.getAttribute('aria-label');
37
40
  expect(ariaLabel).toContain('Hide year picker');
38
41
  });
39
42
  });
@@ -372,14 +372,4 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
372
372
  await expect(datetime).toHaveScreenshot(screenshot(`datetime-focus-calendar-day`));
373
373
  });
374
374
  });
375
- test.describe(title('datetime: calendar month toggle'), () => {
376
- test('should have focus styles', async ({ page }) => {
377
- await page.setContent('<ion-datetime value="2021-01-01"></ion-datetime>', config);
378
- const datetime = page.locator('ion-datetime');
379
- await page.waitForSelector('.datetime-ready');
380
- const monthYearToggle = datetime.locator('.calendar-month-year-toggle');
381
- monthYearToggle.evaluate((el) => el.classList.add('ion-focused'));
382
- await expect(datetime).toHaveScreenshot(screenshot(`date-month-toggle-focused`));
383
- });
384
- });
385
375
  });
@@ -13,7 +13,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
13
13
  });
14
14
  test('should switch the calendar header when moving to a month with a different number of days', async ({ page, }) => {
15
15
  const monthYearToggle = page.locator('ion-datetime .calendar-month-year');
16
- const monthColumnItems = page.locator('ion-datetime .month-column ion-picker-column-option');
16
+ const monthColumnItems = page.locator('ion-datetime .month-column .picker-item:not(.picker-item-empty)');
17
17
  await expect(monthYearToggle).toContainText('January 2022');
18
18
  await monthYearToggle.click();
19
19
  await page.waitForChanges();
@@ -24,7 +24,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
24
24
  });
25
25
  test('should adjust the selected day when moving to a month with a different number of days', async ({ page }) => {
26
26
  const monthYearToggle = page.locator('ion-datetime .calendar-month-year');
27
- const monthColumnItems = page.locator('ion-datetime .month-column ion-picker-column-option');
27
+ const monthColumnItems = page.locator('ion-datetime .month-column .picker-item:not(.picker-item-empty)');
28
28
  const datetime = page.locator('ion-datetime');
29
29
  const ionChange = await page.spyOnEvent('ionChange');
30
30
  await monthYearToggle.click();
@@ -4,8 +4,8 @@
4
4
  import { h } from "@stencil/core";
5
5
  import { newSpecPage } from "@stencil/core/testing";
6
6
  import { Datetime } from "../../../datetime/datetime";
7
- import { PickerColumn } from "../../../picker-column/picker-column";
8
- import { Picker } from "../../../picker/picker";
7
+ import { PickerColumnInternal } from "../../../picker-column-internal/picker-column-internal";
8
+ import { PickerInternal } from "../../../picker-internal/picker-internal";
9
9
  describe('ion-datetime disabled', () => {
10
10
  beforeEach(() => {
11
11
  // IntersectionObserver isn't available in test environment
@@ -19,12 +19,12 @@ describe('ion-datetime disabled', () => {
19
19
  });
20
20
  it('picker should be disabled in prefer wheel mode', async () => {
21
21
  const page = await newSpecPage({
22
- components: [Datetime, PickerColumn, Picker],
22
+ components: [Datetime, PickerColumnInternal, PickerInternal],
23
23
  template: () => (h("ion-datetime", { id: "inline-datetime-wheel", disabled: true, "prefer-wheel": true, value: "2022-04-21T00:00:00" })),
24
24
  });
25
25
  await page.waitForChanges();
26
26
  const datetime = page.body.querySelector('ion-datetime');
27
- const columns = datetime.shadowRoot.querySelectorAll('ion-picker-column');
27
+ const columns = datetime.shadowRoot.querySelectorAll('ion-picker-column-internal');
28
28
  await expect(columns.length).toEqual(4);
29
29
  columns.forEach((column) => {
30
30
  expect(column.disabled).toBe(true);
@@ -85,10 +85,10 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
85
85
  });
86
86
  test('should correctly localize year column data', async ({ page }) => {
87
87
  await page.setContent(`
88
- <ion-datetime prefer-wheel="true" locale="ar-EG" presentation="date" value="2022-01-01" max="2022" min="2022"></ion-datetime>
88
+ <ion-datetime prefer-wheel="true" locale="ar-EG" presentation="date" value="2022-01-01"></ion-datetime>
89
89
  `, config);
90
90
  await page.waitForSelector('.datetime-ready');
91
- const datetimeYear = page.locator('ion-datetime .year-column ion-picker-column-option').nth(0);
91
+ const datetimeYear = page.locator('ion-datetime .year-column .picker-item[data-value="2022"]');
92
92
  await expect(datetimeYear).toHaveText('٢٠٢٢');
93
93
  });
94
94
  });
@@ -81,8 +81,8 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, config }) =>
81
81
  const ionPopoverDidPresent = await page.spyOnEvent('ionPopoverDidPresent');
82
82
  await page.click('.time-body');
83
83
  await ionPopoverDidPresent.next();
84
- const hours = page.locator('ion-popover ion-picker-column:nth-child(1) ion-picker-column-option');
85
- const minutes = page.locator('ion-popover ion-picker-column:nth-child(2) ion-picker-column-option');
84
+ const hours = page.locator('ion-popover ion-picker-column-internal:nth-child(1) .picker-item:not(.picker-item-empty)');
85
+ const minutes = page.locator('ion-popover ion-picker-column-internal:nth-child(2) .picker-item:not(.picker-item-empty)');
86
86
  expect(await hours.count()).toBe(12);
87
87
  expect(await minutes.count()).toBe(60);
88
88
  });
@@ -159,7 +159,7 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, config }) =>
159
159
  value="2022-04-25T08:30:00"
160
160
  ></ion-datetime>
161
161
  `, config);
162
- const hourPickerItems = page.locator('ion-datetime ion-picker-column:first-of-type ion-picker-column-option');
162
+ const hourPickerItems = page.locator('ion-datetime ion-picker-column-internal:first-of-type .picker-item:not(.picker-item-empty)');
163
163
  await expect(hourPickerItems).toHaveText(['8', '9', '10', '11']);
164
164
  });
165
165
  test('should include 12PM when minimum is greater than 12', async ({ page }) => {
@@ -175,7 +175,7 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, config }) =>
175
175
  value="2022-07-29T12:00:00"
176
176
  ></ion-datetime>
177
177
  `, config);
178
- const hourPickerItems = page.locator('ion-datetime ion-picker-column:first-of-type ion-picker-column-option');
178
+ const hourPickerItems = page.locator('ion-datetime ion-picker-column-internal:first-of-type .picker-item:not(.picker-item-empty)');
179
179
  await expect(hourPickerItems).toHaveText(['12', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11']);
180
180
  });
181
181
  test.describe('minmax value adjustment when out of bounds', () => {
@@ -218,7 +218,7 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, config }) =>
218
218
  ></ion-datetime>
219
219
  `, config);
220
220
  const datetime = page.locator('ion-datetime');
221
- const monthColumnItems = page.locator('ion-datetime .month-column ion-picker-column-option');
221
+ const monthColumnItems = page.locator('ion-datetime .month-column .picker-item:not(.picker-item-empty)');
222
222
  const ionChange = await page.spyOnEvent('ionChange');
223
223
  await page.waitForSelector('.datetime-ready');
224
224
  await monthColumnItems.nth(0).click(); // switch to January
@@ -258,7 +258,7 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, config }) =>
258
258
  const timeButton = page.locator('ion-datetime .time-body');
259
259
  await timeButton.click();
260
260
  await ionPopoverDidPresent.next();
261
- const hours = page.locator('ion-popover ion-picker-column:nth-child(1) ion-picker-column-option');
261
+ const hours = page.locator('ion-popover ion-picker-column-internal:nth-child(1) .picker-item:not(.picker-item-empty)');
262
262
  await expect(await hours.count()).toBe(4);
263
263
  });
264
264
  });
@@ -16,7 +16,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
16
16
  test('should hide the footer when picker is open', async ({ page }) => {
17
17
  const datetimeFooter = page.locator('#date-time .datetime-footer');
18
18
  await expect(datetimeFooter).toBeVisible();
19
- const pickerButton = page.locator('#date-time .calendar-month-year > .calendar-month-year-toggle');
19
+ const pickerButton = page.locator('#date-time .calendar-month-year > ion-item');
20
20
  await pickerButton.click();
21
21
  await page.waitForChanges();
22
22
  await expect(datetimeFooter).not.toBeVisible();
@@ -60,7 +60,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
60
60
  <ion-datetime presentation="date" prefer-wheel="true" min="2019-05-05" max="2023-10-01" value="2019-05-30"></ion-datetime>
61
61
  `, config);
62
62
  await page.waitForSelector('.datetime-ready');
63
- const dayValues = page.locator('ion-datetime .day-column ion-picker-column-option');
63
+ const dayValues = page.locator('ion-datetime .day-column .picker-item[data-value]');
64
64
  expect(await dayValues.count()).toEqual(27);
65
65
  });
66
66
  test('should respect the max bounds', async ({ page }) => {
@@ -68,7 +68,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
68
68
  <ion-datetime presentation="date" prefer-wheel="true" min="2019-05-05" max="2023-10-01" value="2023-10-01"></ion-datetime>
69
69
  `, config);
70
70
  await page.waitForSelector('.datetime-ready');
71
- const dayValues = page.locator('ion-datetime .day-column ion-picker-column-option');
71
+ const dayValues = page.locator('ion-datetime .day-column .picker-item[data-value]');
72
72
  expect(await dayValues.count()).toEqual(1);
73
73
  });
74
74
  test('should respect isDateEnabled preference', async ({ page }) => {
@@ -86,9 +86,9 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
86
86
  </script>
87
87
  `, config);
88
88
  await page.waitForSelector('.datetime-ready');
89
- const disabledMonths = page.locator('.month-column ion-picker-column-option.option-disabled');
90
- const disabledYears = page.locator('.year-column ion-picker-column-option.option-disabled');
91
- const disabledDays = page.locator('.day-column ion-picker-column-option.option-disabled');
89
+ const disabledMonths = page.locator('.month-column .picker-item[disabled]');
90
+ const disabledYears = page.locator('.year-column .picker-item[disabled]');
91
+ const disabledDays = page.locator('.day-column .picker-item[disabled]');
92
92
  expect(await disabledMonths.count()).toBe(0);
93
93
  expect(await disabledYears.count()).toBe(0);
94
94
  expect(await disabledDays.count()).toBe(15);
@@ -105,9 +105,9 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
105
105
  ></ion-datetime>
106
106
  `, config);
107
107
  await page.waitForSelector('.datetime-ready');
108
- const monthValues = page.locator('.month-column ion-picker-column-option');
109
- const yearValues = page.locator('.year-column ion-picker-column-option');
110
- const dayValues = page.locator('.day-column ion-picker-column-option');
108
+ const monthValues = page.locator('.month-column .picker-item:not(.picker-item-empty)');
109
+ const yearValues = page.locator('.year-column .picker-item:not(.picker-item-empty)');
110
+ const dayValues = page.locator('.day-column .picker-item:not(.picker-item-empty)');
111
111
  expect(await monthValues.count()).toBe(2);
112
112
  expect(await yearValues.count()).toBe(3);
113
113
  expect(await dayValues.count()).toBe(5);
@@ -134,7 +134,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
134
134
  `, config);
135
135
  await page.waitForSelector('.datetime-ready');
136
136
  const ionChange = await page.spyOnEvent('ionChange');
137
- const monthValues = page.locator('.month-column ion-picker-column-option');
137
+ const monthValues = page.locator('.month-column .picker-item:not(.picker-item-empty)');
138
138
  // Change month value
139
139
  await monthValues.nth(0).click();
140
140
  await ionChange.next();
@@ -161,7 +161,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
161
161
  `, config);
162
162
  await page.waitForSelector('.datetime-ready');
163
163
  const ionChange = await page.spyOnEvent('ionChange');
164
- const dayValues = page.locator('.day-column ion-picker-column-option');
164
+ const dayValues = page.locator('.day-column .picker-item:not(.picker-item-empty)');
165
165
  // Change day value
166
166
  await dayValues.nth(0).click();
167
167
  await ionChange.next();
@@ -175,7 +175,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
175
175
  `, config);
176
176
  await page.waitForSelector('.datetime-ready');
177
177
  const ionChange = await page.spyOnEvent('ionChange');
178
- const yearValues = page.locator('.year-column ion-picker-column-option');
178
+ const yearValues = page.locator('.year-column .picker-item:not(.picker-item-empty)');
179
179
  /**
180
180
  * Change year value
181
181
  * The 0th index is the current
@@ -192,9 +192,9 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
192
192
  const datetime = page.locator('ion-datetime');
193
193
  await datetime.evaluate((el) => (el.value = '2021-05-25T12:40:00.000Z'));
194
194
  await page.waitForChanges();
195
- const selectedMonth = datetime.locator('.month-column ion-picker-column-option.option-active');
196
- const selectedDay = datetime.locator('.day-column ion-picker-column-option.option-active');
197
- const selectedYear = datetime.locator('.year-column ion-picker-column-option.option-active');
195
+ const selectedMonth = datetime.locator('.month-column .picker-item-active');
196
+ const selectedDay = datetime.locator('.day-column .picker-item-active');
197
+ const selectedYear = datetime.locator('.year-column .picker-item-active');
198
198
  await expect(selectedMonth).toHaveText(/May/);
199
199
  await expect(selectedDay).toHaveText(/25/);
200
200
  await expect(selectedYear).toHaveText(/2021/);
@@ -213,8 +213,8 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
213
213
  ></ion-datetime>
214
214
  `, config);
215
215
  await page.waitForSelector('.datetime-ready');
216
- const monthValues = page.locator('.month-column ion-picker-column-option');
217
- const dayValues = page.locator('.day-column ion-picker-column-option');
216
+ const monthValues = page.locator('.month-column .picker-item:not(.picker-item-empty)');
217
+ const dayValues = page.locator('.day-column .picker-item:not(.picker-item-empty)');
218
218
  await expect(monthValues).toHaveText(['1月', '2月', '3月']);
219
219
  await expect(dayValues).toHaveText(['1日', '2日', '3日']);
220
220
  });
@@ -228,7 +228,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
228
228
  ></ion-datetime>
229
229
  `, config);
230
230
  await page.waitForSelector('.datetime-ready');
231
- const columns = page.locator('ion-picker-column');
231
+ const columns = page.locator('ion-picker-column-internal');
232
232
  await expect(columns.nth(0)).toHaveClass(/month-column/);
233
233
  await expect(columns.nth(1)).toHaveClass(/day-column/);
234
234
  await expect(columns.nth(2)).toHaveClass(/year-column/);
@@ -243,7 +243,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
243
243
  ></ion-datetime>
244
244
  `, config);
245
245
  await page.waitForSelector('.datetime-ready');
246
- const columns = page.locator('ion-picker-column');
246
+ const columns = page.locator('ion-picker-column-internal');
247
247
  await expect(columns.nth(0)).toHaveClass(/day-column/);
248
248
  await expect(columns.nth(1)).toHaveClass(/month-column/);
249
249
  await expect(columns.nth(2)).toHaveClass(/year-column/);
@@ -256,7 +256,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
256
256
  <ion-datetime presentation="date-time" prefer-wheel="true" min="2019-05-05" value="2019-05-10T16:30:00"></ion-datetime>
257
257
  `, config);
258
258
  await page.waitForSelector('.datetime-ready');
259
- const dayValues = page.locator('ion-datetime .date-column ion-picker-column-option');
259
+ const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
260
260
  expect(await dayValues.count()).toEqual(57);
261
261
  });
262
262
  test('should respect the max bounds', async ({ page }) => {
@@ -264,7 +264,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
264
264
  <ion-datetime presentation="date-time" prefer-wheel="true" max="2023-06-10" value="2023-06-05T16:30:00"></ion-datetime>
265
265
  `, config);
266
266
  await page.waitForSelector('.datetime-ready');
267
- const dayValues = page.locator('ion-datetime .date-column ion-picker-column-option');
267
+ const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
268
268
  expect(await dayValues.count()).toEqual(41);
269
269
  });
270
270
  test('should respect isDateEnabled preference', async ({ page }) => {
@@ -282,7 +282,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
282
282
  </script>
283
283
  `, config);
284
284
  await page.waitForSelector('.datetime-ready');
285
- const disabledDates = page.locator('.date-column ion-picker-column-option.option-disabled');
285
+ const disabledDates = page.locator('.date-column .picker-item[disabled]');
286
286
  expect(await disabledDates.count()).toBe(44);
287
287
  });
288
288
  test('should respect month, day, and year preferences', async ({ page }) => {
@@ -297,7 +297,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
297
297
  ></ion-datetime>
298
298
  `, config);
299
299
  await page.waitForSelector('.datetime-ready');
300
- const dateValues = page.locator('.date-column ion-picker-column-option');
300
+ const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
301
301
  expect(await dateValues.count()).toBe(5);
302
302
  });
303
303
  test('should correctly localize the date data', async ({ page }) => {
@@ -312,7 +312,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
312
312
  ></ion-datetime>
313
313
  `, config);
314
314
  await page.waitForSelector('.datetime-ready');
315
- const dateValues = page.locator('.date-column ion-picker-column-option');
315
+ const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
316
316
  await expect(dateValues).toHaveText(['2月1日(火)', '2月2日(水)', '2月3日(木)']);
317
317
  });
318
318
  test('should respect min and max bounds even across years', async ({ page }) => {
@@ -327,16 +327,15 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
327
327
  `, config);
328
328
  await page.waitForSelector('.datetime-ready');
329
329
  const dateColumn = page.locator('.date-column');
330
- const dateColumnScrollEl = dateColumn.locator('.picker-opts');
331
- const dateValues = dateColumn.locator('ion-picker-column-option');
330
+ const dateValues = dateColumn.locator('.picker-item:not(.picker-item-empty)');
332
331
  expect(await dateValues.count()).toBe(90);
333
332
  /**
334
333
  * Select 1st item to change the dates rendered
335
334
  */
336
- await expect(dateValues.nth(0)).toHaveJSProperty('value', '2022-1-1');
337
- await dateColumnScrollEl.evaluate((el) => (el.scrollTop = 0));
335
+ await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2022-1-1');
336
+ await dateColumn.evaluate((el) => (el.scrollTop = 0));
338
337
  await page.waitForChanges();
339
- await expect(dateValues.nth(0)).toHaveJSProperty('value', '2021-12-1');
338
+ await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2021-12-1');
340
339
  });
341
340
  test('should keep sliding window if default window is within min and max constraints', async ({ page }) => {
342
341
  await page.setContent(`
@@ -349,7 +348,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
349
348
  ></ion-datetime>
350
349
  `, config);
351
350
  await page.waitForSelector('.datetime-ready');
352
- const dayValues = page.locator('.date-column ion-picker-column-option');
351
+ const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
353
352
  expect(await dayValues.count()).toBe(92);
354
353
  });
355
354
  test('should narrow sliding window if default window is not within min and max constraints', async ({ page }) => {
@@ -363,7 +362,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
363
362
  ></ion-datetime>
364
363
  `, config);
365
364
  await page.waitForSelector('.datetime-ready');
366
- const dayValues = page.locator('.date-column ion-picker-column-option');
365
+ const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
367
366
  expect(await dayValues.count()).toBe(15);
368
367
  });
369
368
  test('selecting date should update value when no value is set', async ({ page }) => {
@@ -375,7 +374,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
375
374
  `, config);
376
375
  await page.waitForSelector('.datetime-ready');
377
376
  const ionChange = await page.spyOnEvent('ionChange');
378
- const dayValues = page.locator('.date-column ion-picker-column-option');
377
+ const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
379
378
  // Change day/month value
380
379
  await dayValues.nth(0).click();
381
380
  await ionChange.next();
@@ -387,7 +386,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
387
386
  <ion-datetime presentation="time-date" prefer-wheel="true" min="2019-05-05" value="2019-05-10T16:30:00"></ion-datetime>
388
387
  `, config);
389
388
  await page.waitForSelector('.datetime-ready');
390
- const dayValues = page.locator('ion-datetime .date-column ion-picker-column-option');
389
+ const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
391
390
  expect(await dayValues.count()).toEqual(57);
392
391
  });
393
392
  test('should respect the max bounds', async ({ page }) => {
@@ -395,7 +394,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
395
394
  <ion-datetime presentation="time-date" prefer-wheel="true" max="2023-06-10" value="2023-06-05T16:30:00"></ion-datetime>
396
395
  `, config);
397
396
  await page.waitForSelector('.datetime-ready');
398
- const dayValues = page.locator('ion-datetime .date-column ion-picker-column-option');
397
+ const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
399
398
  expect(await dayValues.count()).toEqual(41);
400
399
  });
401
400
  test('should respect isDateEnabled preference', async ({ page }) => {
@@ -413,7 +412,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
413
412
  </script>
414
413
  `, config);
415
414
  await page.waitForSelector('.datetime-ready');
416
- const disabledDates = page.locator('.date-column ion-picker-column-option.option-disabled');
415
+ const disabledDates = page.locator('.date-column .picker-item[disabled]');
417
416
  expect(await disabledDates.count()).toBe(44);
418
417
  });
419
418
  test('should respect month, day, and year preferences', async ({ page }) => {
@@ -428,7 +427,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
428
427
  ></ion-datetime>
429
428
  `, config);
430
429
  await page.waitForSelector('.datetime-ready');
431
- const dateValues = page.locator('.date-column ion-picker-column-option');
430
+ const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
432
431
  expect(await dateValues.count()).toBe(5);
433
432
  });
434
433
  test('should correctly localize the date data', async ({ page }) => {
@@ -443,7 +442,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
443
442
  ></ion-datetime>
444
443
  `, config);
445
444
  await page.waitForSelector('.datetime-ready');
446
- const dateValues = page.locator('.date-column ion-picker-column-option');
445
+ const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
447
446
  await expect(dateValues).toHaveText(['2月1日(火)', '2月2日(水)', '2月3日(木)']);
448
447
  });
449
448
  test('should respect min and max bounds even across years', async ({ page }) => {
@@ -458,16 +457,15 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
458
457
  `, config);
459
458
  await page.waitForSelector('.datetime-ready');
460
459
  const dateColumn = page.locator('.date-column');
461
- const dateColumnScrollEl = dateColumn.locator('.picker-opts');
462
- const dateValues = dateColumn.locator('ion-picker-column-option');
460
+ const dateValues = dateColumn.locator('.picker-item:not(.picker-item-empty)');
463
461
  expect(await dateValues.count()).toBe(90);
464
462
  /**
465
463
  * Select 1st item to change the dates rendered
466
464
  */
467
- await expect(dateValues.nth(0)).toHaveJSProperty('value', '2022-1-1');
468
- await dateColumnScrollEl.evaluate((el) => (el.scrollTop = 0));
465
+ await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2022-1-1');
466
+ await dateColumn.evaluate((el) => (el.scrollTop = 0));
469
467
  await page.waitForChanges();
470
- await expect(dateValues.nth(0)).toHaveJSProperty('value', '2021-12-1');
468
+ await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2021-12-1');
471
469
  });
472
470
  test('should keep sliding window if default window is within min and max constraints', async ({ page }) => {
473
471
  await page.setContent(`
@@ -480,7 +478,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
480
478
  ></ion-datetime>
481
479
  `, config);
482
480
  await page.waitForSelector('.datetime-ready');
483
- const dayValues = page.locator('.date-column ion-picker-column-option');
481
+ const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
484
482
  expect(await dayValues.count()).toBe(92);
485
483
  });
486
484
  test('should narrow sliding window if default window is not within min and max constraints', async ({ page }) => {
@@ -494,7 +492,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
494
492
  ></ion-datetime>
495
493
  `, config);
496
494
  await page.waitForSelector('.datetime-ready');
497
- const dayValues = page.locator('.date-column ion-picker-column-option');
495
+ const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
498
496
  expect(await dayValues.count()).toBe(15);
499
497
  });
500
498
  });