@ionic/core 7.5.8-dev.11701876182.1e71e7a0 → 7.5.8-dev.11702056888.11188f48

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