@ionic/core 7.6.7-dev.11706571117.1bcbc36b → 7.6.7-dev.11706824245.18d35376

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 (616) hide show
  1. package/components/action-sheet.js +2 -2
  2. package/components/alert.js +2 -2
  3. package/components/backdrop.js +0 -12
  4. package/components/button.js +2 -2
  5. package/components/checkbox.js +2 -2
  6. package/components/data.js +1 -1
  7. package/components/gesture-controller.js +1 -1
  8. package/components/ion-back-button.js +1 -1
  9. package/components/ion-badge.js +2 -2
  10. package/components/ion-breadcrumb.js +2 -2
  11. package/components/ion-card-subtitle.js +2 -2
  12. package/components/ion-card-title.js +1 -1
  13. package/components/ion-card.js +2 -2
  14. package/components/ion-content.js +3 -4
  15. package/components/ion-datetime-button.js +2 -2
  16. package/components/ion-datetime.js +40 -64
  17. package/components/ion-fab-button.js +2 -2
  18. package/components/ion-infinite-scroll-content.js +2 -2
  19. package/components/ion-input.js +2 -2
  20. package/components/ion-item-divider.js +2 -2
  21. package/components/ion-item-option.js +2 -2
  22. package/components/ion-item-options.js +2 -2
  23. package/components/ion-loading.js +2 -2
  24. package/components/ion-menu-button.js +1 -1
  25. package/components/ion-menu.js +21 -15
  26. package/components/ion-modal.js +2 -2
  27. package/components/ion-nav.js +7 -3
  28. package/components/ion-picker-column-option.d.ts +11 -0
  29. package/components/ion-picker-column-option.js +9 -0
  30. package/components/ion-picker-column.js +2 -2
  31. package/components/ion-picker-legacy-column.d.ts +11 -0
  32. package/components/ion-picker-legacy-column.js +9 -0
  33. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  34. package/components/ion-picker-legacy.js +309 -0
  35. package/components/ion-picker.js +1 -309
  36. package/components/ion-progress-bar.js +2 -2
  37. package/components/ion-range.js +2 -2
  38. package/components/ion-refresher-content.js +1 -1
  39. package/components/ion-refresher.js +2 -2
  40. package/components/ion-router-link.js +1 -1
  41. package/components/ion-searchbar.js +2 -2
  42. package/components/ion-segment-button.js +2 -2
  43. package/components/ion-select.js +2 -2
  44. package/components/ion-split-pane.js +26 -15
  45. package/components/ion-tab-bar.js +2 -2
  46. package/components/ion-textarea.js +2 -2
  47. package/components/ion-toast.js +2 -2
  48. package/components/ion-toggle.js +2 -2
  49. package/components/ion-toolbar.js +2 -2
  50. package/components/item.js +2 -8
  51. package/components/label.js +1 -1
  52. package/components/list-header.js +2 -2
  53. package/components/note.js +2 -2
  54. package/components/overlays.js +11 -4
  55. package/components/picker-column-option.js +122 -0
  56. package/components/picker-column.js +351 -322
  57. package/components/picker-column2.js +379 -0
  58. package/components/{picker-internal.js → picker.js} +29 -22
  59. package/components/popover.js +1 -1
  60. package/components/radio.js +2 -2
  61. package/components/select-popover.js +1 -1
  62. package/css/core.css +101 -34
  63. package/css/core.css.map +1 -1
  64. package/css/global.bundle.css +1 -1
  65. package/css/ionic.bundle.css +1 -1
  66. package/css/ionic.bundle.css.map +1 -1
  67. package/css/themes/dark.always.css +160 -0
  68. package/css/themes/dark.always.css.map +1 -0
  69. package/css/themes/dark.class.css +160 -0
  70. package/css/themes/dark.class.css.map +1 -0
  71. package/css/themes/dark.css +3 -0
  72. package/css/themes/dark.css.map +1 -0
  73. package/css/themes/dark.system.css +162 -0
  74. package/css/themes/dark.system.css.map +1 -0
  75. package/css/themes/high-contrast-dark.always.css +177 -0
  76. package/css/themes/high-contrast-dark.always.css.map +1 -0
  77. package/css/themes/high-contrast-dark.class.css +177 -0
  78. package/css/themes/high-contrast-dark.class.css.map +1 -0
  79. package/css/themes/high-contrast-dark.css +3 -0
  80. package/css/themes/high-contrast-dark.css.map +1 -0
  81. package/css/themes/high-contrast-dark.system.css +179 -0
  82. package/css/themes/high-contrast-dark.system.css.map +1 -0
  83. package/css/themes/high-contrast-light.always.css +93 -0
  84. package/css/themes/high-contrast-light.always.css.map +1 -0
  85. package/css/themes/high-contrast-light.class.css +93 -0
  86. package/css/themes/high-contrast-light.class.css.map +1 -0
  87. package/css/themes/high-contrast-light.css +3 -0
  88. package/css/themes/high-contrast-light.css.map +1 -0
  89. package/css/themes/high-contrast-light.system.css +95 -0
  90. package/css/themes/high-contrast-light.system.css.map +1 -0
  91. package/css/typography.css +1 -1
  92. package/dist/cjs/{button-active-85665616.js → button-active-d432e262.js} +1 -1
  93. package/dist/cjs/{data-a5109f09.js → data-e2bf21de.js} +1 -1
  94. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  95. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  96. package/dist/cjs/index.cjs.js +3 -3
  97. package/dist/cjs/ion-action-sheet.cjs.entry.js +6 -6
  98. package/dist/cjs/ion-alert.cjs.entry.js +6 -6
  99. package/dist/cjs/ion-app_8.cjs.entry.js +6 -7
  100. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  101. package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
  102. package/dist/cjs/ion-backdrop.cjs.entry.js +0 -12
  103. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  104. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  105. package/dist/cjs/ion-card_5.cjs.entry.js +5 -5
  106. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  107. package/dist/cjs/ion-datetime-button.cjs.entry.js +3 -3
  108. package/dist/cjs/ion-datetime_3.cjs.entry.js +37 -57
  109. package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
  110. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +2 -2
  111. package/dist/cjs/ion-input.cjs.entry.js +2 -2
  112. package/dist/cjs/ion-item-option_3.cjs.entry.js +5 -5
  113. package/dist/cjs/ion-item_8.cjs.entry.js +9 -14
  114. package/dist/cjs/ion-loading.cjs.entry.js +4 -3
  115. package/dist/cjs/ion-menu_3.cjs.entry.js +25 -20
  116. package/dist/cjs/ion-modal.cjs.entry.js +5 -5
  117. package/dist/cjs/ion-nav_2.cjs.entry.js +6 -3
  118. package/dist/cjs/ion-picker-column-option.cjs.entry.js +104 -0
  119. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +104 -87
  120. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +26 -19
  121. package/dist/cjs/ion-popover.cjs.entry.js +3 -2
  122. package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
  123. package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
  124. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  125. package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -6
  126. package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
  127. package/dist/cjs/ion-route_4.cjs.entry.js +1 -1
  128. package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
  129. package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
  130. package/dist/cjs/ion-select_3.cjs.entry.js +5 -4
  131. package/dist/cjs/ion-split-pane.cjs.entry.js +24 -14
  132. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
  133. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  134. package/dist/cjs/ion-toast.cjs.entry.js +5 -5
  135. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  136. package/dist/cjs/ionic.cjs.js +1 -1
  137. package/dist/cjs/loader.cjs.js +1 -1
  138. package/dist/cjs/{overlays-8285b485.js → overlays-3afa911d.js} +11 -4
  139. package/dist/cjs/{swipe-back-2a858bbd.js → swipe-back-b8f2330b.js} +2 -2
  140. package/dist/collection/collection-manifest.json +7 -6
  141. package/dist/collection/components/action-sheet/action-sheet.ios.css +7 -7
  142. package/dist/collection/components/action-sheet/action-sheet.md.css +1 -1
  143. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
  144. package/dist/collection/components/alert/alert.ios.css +12 -12
  145. package/dist/collection/components/alert/alert.md.css +17 -17
  146. package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
  147. package/dist/collection/components/back-button/back-button.ios.css +1 -1
  148. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
  149. package/dist/collection/components/backdrop/backdrop.js +0 -12
  150. package/dist/collection/components/badge/badge.ios.css +1 -1
  151. package/dist/collection/components/badge/badge.md.css +1 -1
  152. package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
  153. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +9 -9
  154. package/dist/collection/components/breadcrumb/breadcrumb.md.css +9 -9
  155. package/dist/collection/components/button/button.ios.css +11 -11
  156. package/dist/collection/components/button/button.md.css +9 -9
  157. package/dist/collection/components/button/test/a11y/button.e2e.js +48 -0
  158. package/dist/collection/components/button/test/basic/button.e2e.js +1 -1
  159. package/dist/collection/components/button/test/wrap/button.e2e.js +12 -24
  160. package/dist/collection/components/card/card.ios.css +1 -1
  161. package/dist/collection/components/card/card.md.css +1 -1
  162. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +1 -1
  163. package/dist/collection/components/card-subtitle/card-subtitle.md.css +1 -1
  164. package/dist/collection/components/card-title/card-title.md.css +1 -1
  165. package/dist/collection/components/checkbox/checkbox.ios.css +2 -2
  166. package/dist/collection/components/checkbox/checkbox.md.css +2 -2
  167. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
  168. package/dist/collection/components/content/content.css +0 -4
  169. package/dist/collection/components/content/content.js +2 -3
  170. package/dist/collection/components/datetime/datetime.ios.css +98 -45
  171. package/dist/collection/components/datetime/datetime.js +24 -36
  172. package/dist/collection/components/datetime/datetime.md.css +100 -42
  173. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +4 -4
  174. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  175. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +22 -12
  176. package/dist/collection/components/datetime/test/datetime.e2e.js +3 -3
  177. package/dist/collection/components/datetime/test/disable-dates/datetime.e2e.js +1 -1
  178. package/dist/collection/components/datetime/test/disabled/datetime.e2e.js +4 -4
  179. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  180. package/dist/collection/components/datetime/test/display/datetime.e2e.js +9 -9
  181. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +5 -5
  182. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +17 -17
  183. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +2 -2
  184. package/dist/collection/components/datetime/test/multiple/datetime.e2e.js +2 -2
  185. package/dist/collection/components/datetime/test/position/datetime.e2e.js +1 -1
  186. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +75 -73
  187. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +4 -4
  188. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +8 -8
  189. package/dist/collection/components/datetime/test/set-value/datetime.e2e.js +4 -4
  190. package/dist/collection/components/datetime/test/time-label/datetime.e2e.js +2 -2
  191. package/dist/collection/components/datetime/test/values/datetime.e2e.js +19 -16
  192. package/dist/collection/components/datetime/utils/data.js +1 -1
  193. package/dist/collection/components/datetime-button/datetime-button.css +1 -1
  194. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +14 -14
  195. package/dist/collection/components/datetime-button/test/disabled/datetime-button.e2e.js +2 -2
  196. package/dist/collection/components/datetime-button/test/multiple/datetime-button.e2e.js +6 -6
  197. package/dist/collection/components/fab-button/fab-button.ios.css +13 -13
  198. package/dist/collection/components/fab-button/fab-button.md.css +4 -4
  199. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +50 -0
  200. package/dist/collection/components/header/test/condense/header.e2e.js +2 -2
  201. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +3 -3
  202. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +3 -3
  203. package/dist/collection/components/input/input.ios.css +8 -8
  204. package/dist/collection/components/input/input.md.css +16 -16
  205. package/dist/collection/components/input/test/a11y/input.e2e.js +41 -3
  206. package/dist/collection/components/item/item.ios.css +44 -7
  207. package/dist/collection/components/item/item.js +0 -7
  208. package/dist/collection/components/item/item.md.css +52 -15
  209. package/dist/collection/components/item-divider/item-divider.ios.css +2 -2
  210. package/dist/collection/components/item-divider/item-divider.md.css +3 -3
  211. package/dist/collection/components/item-option/item-option.ios.css +2 -2
  212. package/dist/collection/components/item-option/item-option.md.css +1 -1
  213. package/dist/collection/components/item-options/item-options.ios.css +1 -1
  214. package/dist/collection/components/item-options/item-options.md.css +1 -1
  215. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +28 -0
  216. package/dist/collection/components/label/label.md.css +2 -2
  217. package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
  218. package/dist/collection/components/list-header/list-header.ios.css +2 -2
  219. package/dist/collection/components/list-header/list-header.md.css +1 -1
  220. package/dist/collection/components/loading/loading.ios.css +2 -2
  221. package/dist/collection/components/loading/loading.md.css +3 -3
  222. package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
  223. package/dist/collection/components/menu/menu.ios.css +64 -3
  224. package/dist/collection/components/menu/menu.js +19 -13
  225. package/dist/collection/components/menu/menu.md.css +64 -3
  226. package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
  227. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +14 -0
  228. package/dist/collection/components/modal/modal.ios.css +1 -1
  229. package/dist/collection/components/modal/modal.md.css +1 -1
  230. package/dist/collection/components/modal/test/standalone/modal.e2e.js +1 -1
  231. package/dist/collection/components/nav/nav.js +22 -2
  232. package/dist/collection/components/nav/test/nav-controller.spec.js +36 -36
  233. package/dist/collection/components/note/note.ios.css +1 -1
  234. package/dist/collection/components/note/note.md.css +1 -1
  235. package/dist/collection/components/note/test/a11y/note.e2e.js +6 -6
  236. package/dist/collection/components/picker/picker.ios.css +112 -211
  237. package/dist/collection/components/picker/picker.js +488 -738
  238. package/dist/collection/components/picker/picker.md.css +108 -198
  239. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  240. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  241. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  242. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +79 -42
  243. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  244. package/dist/collection/components/picker-column/picker-column.js +499 -335
  245. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  246. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  247. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  248. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  249. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  250. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  251. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  252. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  253. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  254. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.ios.css} +205 -100
  255. package/dist/collection/components/picker-legacy/picker.js +811 -0
  256. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.md.css} +194 -98
  257. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  258. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  259. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  260. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  261. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  262. package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +1 -1
  263. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  264. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  265. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  266. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  267. package/dist/collection/components/popover/popover.ios.css +1 -1
  268. package/dist/collection/components/progress-bar/progress-bar.ios.css +2 -2
  269. package/dist/collection/components/progress-bar/progress-bar.md.css +2 -2
  270. package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
  271. package/dist/collection/components/radio/radio.ios.css +2 -2
  272. package/dist/collection/components/radio/radio.md.css +2 -2
  273. package/dist/collection/components/radio/test/a11y/radio.e2e.js +114 -81
  274. package/dist/collection/components/range/range.ios.css +3 -3
  275. package/dist/collection/components/range/range.md.css +5 -5
  276. package/dist/collection/components/range/test/a11y/range.e2e.js +18 -8
  277. package/dist/collection/components/refresher/refresher.ios.css +1 -1
  278. package/dist/collection/components/refresher/refresher.md.css +4 -4
  279. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +25 -0
  280. package/dist/collection/components/refresher/test/test.utils.js +1 -1
  281. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  282. package/dist/collection/components/ripple-effect/test/basic/ripple-effect.e2e.js +2 -2
  283. package/dist/collection/components/router-link/router-link.css +1 -1
  284. package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +23 -0
  285. package/dist/collection/components/searchbar/searchbar.ios.css +4 -4
  286. package/dist/collection/components/searchbar/searchbar.md.css +4 -4
  287. package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
  288. package/dist/collection/components/segment-button/segment-button.ios.css +3 -3
  289. package/dist/collection/components/segment-button/segment-button.md.css +2 -2
  290. package/dist/collection/components/select/select.ios.css +5 -5
  291. package/dist/collection/components/select/select.md.css +14 -14
  292. package/dist/collection/components/select/test/a11y/select.e2e.js +68 -4
  293. package/dist/collection/components/select-popover/select-popover.md.css +4 -4
  294. package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +32 -0
  295. package/dist/collection/components/split-pane/split-pane.ios.css +3 -55
  296. package/dist/collection/components/split-pane/split-pane.js +46 -12
  297. package/dist/collection/components/split-pane/split-pane.md.css +3 -55
  298. package/dist/collection/components/split-pane/test/wrapped-menu/split-pane.e2e.js +41 -0
  299. package/dist/collection/components/tab-bar/tab-bar.ios.css +4 -4
  300. package/dist/collection/components/tab-bar/tab-bar.md.css +3 -3
  301. package/dist/collection/components/tabs/tabs.js +6 -18
  302. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +41 -3
  303. package/dist/collection/components/textarea/textarea.ios.css +7 -7
  304. package/dist/collection/components/textarea/textarea.md.css +15 -15
  305. package/dist/collection/components/toast/test/a11y/toast.e2e.js +89 -24
  306. package/dist/collection/components/toast/toast.ios.css +3 -3
  307. package/dist/collection/components/toast/toast.md.css +5 -5
  308. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +8 -2
  309. package/dist/collection/components/toggle/toggle.ios.css +2 -2
  310. package/dist/collection/components/toggle/toggle.md.css +2 -2
  311. package/dist/collection/components/toolbar/toolbar.ios.css +2 -2
  312. package/dist/collection/components/toolbar/toolbar.md.css +1 -1
  313. package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
  314. package/dist/collection/themes/test/colors/theme.e2e.js +170 -0
  315. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  316. package/dist/collection/utils/overlays.js +11 -4
  317. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  318. package/dist/collection/utils/test/playwright/generator.js +1 -0
  319. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  320. package/dist/docs.json +508 -66
  321. package/dist/esm/{button-active-b62776db.js → button-active-3bcbd115.js} +1 -1
  322. package/dist/esm/{data-775093f5.js → data-6a31d701.js} +1 -1
  323. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  324. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  325. package/dist/esm/index.js +3 -3
  326. package/dist/esm/ion-action-sheet.entry.js +6 -6
  327. package/dist/esm/ion-alert.entry.js +6 -6
  328. package/dist/esm/ion-app_8.entry.js +6 -7
  329. package/dist/esm/ion-avatar_3.entry.js +2 -2
  330. package/dist/esm/ion-back-button.entry.js +1 -1
  331. package/dist/esm/ion-backdrop.entry.js +0 -12
  332. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  333. package/dist/esm/ion-button_2.entry.js +2 -2
  334. package/dist/esm/ion-card_5.entry.js +5 -5
  335. package/dist/esm/ion-checkbox.entry.js +2 -2
  336. package/dist/esm/ion-datetime-button.entry.js +3 -3
  337. package/dist/esm/ion-datetime_3.entry.js +36 -56
  338. package/dist/esm/ion-fab_3.entry.js +2 -2
  339. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -2
  340. package/dist/esm/ion-input.entry.js +2 -2
  341. package/dist/esm/ion-item-option_3.entry.js +5 -5
  342. package/dist/esm/ion-item_8.entry.js +9 -14
  343. package/dist/esm/ion-loading.entry.js +4 -3
  344. package/dist/esm/ion-menu_3.entry.js +25 -20
  345. package/dist/esm/ion-modal.entry.js +5 -5
  346. package/dist/esm/ion-nav_2.entry.js +6 -3
  347. package/dist/esm/ion-picker-column-option.entry.js +100 -0
  348. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +104 -87
  349. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +26 -19
  350. package/dist/esm/ion-popover.entry.js +3 -2
  351. package/dist/esm/ion-progress-bar.entry.js +2 -2
  352. package/dist/esm/ion-radio_2.entry.js +2 -2
  353. package/dist/esm/ion-range.entry.js +3 -3
  354. package/dist/esm/ion-refresher_2.entry.js +6 -6
  355. package/dist/esm/ion-reorder_2.entry.js +1 -1
  356. package/dist/esm/ion-route_4.entry.js +1 -1
  357. package/dist/esm/ion-searchbar.entry.js +2 -2
  358. package/dist/esm/ion-segment_2.entry.js +3 -3
  359. package/dist/esm/ion-select_3.entry.js +5 -4
  360. package/dist/esm/ion-split-pane.entry.js +24 -14
  361. package/dist/esm/ion-tab-bar_2.entry.js +2 -2
  362. package/dist/esm/ion-textarea.entry.js +2 -2
  363. package/dist/esm/ion-toast.entry.js +5 -5
  364. package/dist/esm/ion-toggle.entry.js +3 -3
  365. package/dist/esm/ionic.js +1 -1
  366. package/dist/esm/loader.js +1 -1
  367. package/dist/esm/{overlays-bb824d56.js → overlays-8b24f0d5.js} +11 -4
  368. package/dist/esm/{swipe-back-a6f386fc.js → swipe-back-a8ca7f93.js} +2 -2
  369. package/dist/esm-es5/{button-active-b62776db.js → button-active-3bcbd115.js} +1 -1
  370. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  371. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  372. package/dist/esm-es5/index.js +1 -1
  373. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  374. package/dist/esm-es5/ion-alert.entry.js +1 -1
  375. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  376. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  377. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  378. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  379. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  380. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  381. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  382. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  383. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  384. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  385. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  386. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  387. package/dist/esm-es5/ion-input.entry.js +1 -1
  388. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  389. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  390. package/dist/esm-es5/ion-loading.entry.js +1 -1
  391. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  392. package/dist/esm-es5/ion-modal.entry.js +1 -1
  393. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  394. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  395. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  396. package/dist/esm-es5/ion-picker.entry.js +4 -0
  397. package/dist/esm-es5/ion-popover.entry.js +1 -1
  398. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  399. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  400. package/dist/esm-es5/ion-range.entry.js +1 -1
  401. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  402. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  403. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  404. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  405. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  406. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  407. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  408. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  409. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  410. package/dist/esm-es5/ion-toast.entry.js +1 -1
  411. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  412. package/dist/esm-es5/ionic.js +1 -1
  413. package/dist/esm-es5/loader.js +1 -1
  414. package/dist/esm-es5/overlays-8b24f0d5.js +4 -0
  415. package/dist/esm-es5/swipe-back-a8ca7f93.js +4 -0
  416. package/dist/html.html-data.json +152 -1
  417. package/dist/ionic/index.esm.js +1 -1
  418. package/dist/ionic/ionic.esm.js +1 -1
  419. package/dist/ionic/{p-249633a4.entry.js → p-0055506a.entry.js} +1 -1
  420. package/dist/ionic/p-0708a9c1.system.js +4 -0
  421. package/dist/ionic/{p-b6f6f00e.entry.js → p-07d725a7.entry.js} +1 -1
  422. package/dist/ionic/{p-c1c57873.system.entry.js → p-0a0a84ce.system.entry.js} +1 -1
  423. package/dist/ionic/p-0ac49b0c.system.entry.js +4 -0
  424. package/dist/ionic/p-0d3c5eaa.system.entry.js +4 -0
  425. package/dist/ionic/{p-5a85d71d.entry.js → p-0d850325.entry.js} +1 -1
  426. package/dist/ionic/p-0f55b1b0.entry.js +4 -0
  427. package/dist/ionic/p-10607f89.entry.js +4 -0
  428. package/dist/ionic/{p-d2707f9d.system.js → p-114ea79c.system.js} +1 -1
  429. package/dist/ionic/p-14196559.entry.js +4 -0
  430. package/dist/ionic/p-14b8100f.system.entry.js +4 -0
  431. package/dist/ionic/p-15878390.system.entry.js +4 -0
  432. package/dist/ionic/{p-f3478ed6.system.entry.js → p-16e781a6.system.entry.js} +1 -1
  433. package/dist/ionic/p-1a5f0313.system.js +1 -1
  434. package/dist/ionic/p-1c445de9.entry.js +4 -0
  435. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  436. package/dist/ionic/p-2800e6d5.system.entry.js +4 -0
  437. package/dist/ionic/p-283d8f5e.system.entry.js +4 -0
  438. package/dist/ionic/{p-8084e9cb.entry.js → p-28525772.entry.js} +1 -1
  439. package/dist/ionic/p-2aa29487.system.entry.js +4 -0
  440. package/dist/ionic/{p-54c92c77.entry.js → p-305423e0.entry.js} +1 -1
  441. package/dist/ionic/p-327211c1.entry.js +4 -0
  442. package/dist/ionic/{p-bc6d16ca.entry.js → p-32b129a2.entry.js} +1 -1
  443. package/dist/ionic/{p-b43cf55f.entry.js → p-34f05cec.entry.js} +1 -1
  444. package/dist/ionic/p-3587df88.system.entry.js +4 -0
  445. package/dist/ionic/p-381ca6f8.system.entry.js +4 -0
  446. package/dist/ionic/p-3cf67784.entry.js +4 -0
  447. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  448. package/dist/ionic/{p-3b83e483.system.entry.js → p-3f3ae637.system.entry.js} +2 -2
  449. package/dist/ionic/p-4a13a07c.system.entry.js +4 -0
  450. package/dist/ionic/p-4eaf5dcd.system.entry.js +4 -0
  451. package/dist/ionic/p-5186ff3f.system.entry.js +4 -0
  452. package/dist/ionic/p-51abefb7.system.js +4 -0
  453. package/dist/ionic/p-59a95822.entry.js +4 -0
  454. package/dist/ionic/p-659086a2.system.entry.js +4 -0
  455. package/dist/ionic/p-6793b96e.system.entry.js +4 -0
  456. package/dist/ionic/{p-7bae84aa.entry.js → p-69926b34.entry.js} +1 -1
  457. package/dist/ionic/p-6b0c8263.entry.js +4 -0
  458. package/dist/ionic/p-71f30cfc.system.entry.js +4 -0
  459. package/dist/ionic/p-7a3e1f37.system.entry.js +4 -0
  460. package/dist/ionic/p-7ae141f1.entry.js +4 -0
  461. package/dist/ionic/p-7e8ef0bb.system.entry.js +4 -0
  462. package/dist/ionic/p-89c5f8ba.system.entry.js +4 -0
  463. package/dist/ionic/{p-cdce5ba3.system.entry.js → p-8a1d33e3.system.entry.js} +1 -1
  464. package/dist/ionic/{p-1f7fc88d.entry.js → p-8aaade76.entry.js} +1 -1
  465. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  466. package/dist/ionic/p-94265b3d.entry.js +4 -0
  467. package/dist/ionic/{p-35e1a80f.system.entry.js → p-943caced.system.entry.js} +1 -1
  468. package/dist/ionic/{p-2c3842e8.system.entry.js → p-97657f32.system.entry.js} +1 -1
  469. package/dist/ionic/p-97e39972.system.entry.js +4 -0
  470. package/dist/ionic/p-9b930e4f.entry.js +4 -0
  471. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  472. package/dist/ionic/{p-db798370.system.entry.js → p-9cbfb298.system.entry.js} +1 -1
  473. package/dist/ionic/{p-c3bfe92d.entry.js → p-a114831c.entry.js} +1 -1
  474. package/dist/ionic/p-a60a1ce5.js +4 -0
  475. package/dist/ionic/{p-1052ef2b.entry.js → p-ae8747aa.entry.js} +1 -1
  476. package/dist/ionic/p-b13f5e6a.entry.js +4 -0
  477. package/dist/ionic/{p-10c34f0a.system.entry.js → p-b6e4e9ce.system.entry.js} +1 -1
  478. package/dist/ionic/p-b8213f04.entry.js +4 -0
  479. package/dist/ionic/p-b8fbc01d.entry.js +4 -0
  480. package/dist/ionic/p-c33d312f.js +4 -0
  481. package/dist/ionic/{p-85e04029.entry.js → p-c6a6ffe6.entry.js} +1 -1
  482. package/dist/ionic/{p-688a36c7.entry.js → p-c7bdd72f.entry.js} +1 -1
  483. package/dist/ionic/{p-df62accd.entry.js → p-c9028fdc.entry.js} +1 -1
  484. package/dist/ionic/{p-5c2da581.system.entry.js → p-cb0cfc39.system.entry.js} +1 -1
  485. package/dist/ionic/{p-5628d04e.entry.js → p-cd6a60d2.entry.js} +1 -1
  486. package/dist/ionic/{p-7510e462.entry.js → p-d545e325.entry.js} +1 -1
  487. package/dist/ionic/p-d5a21de8.entry.js +4 -0
  488. package/dist/ionic/p-d6674fed.entry.js +4 -0
  489. package/dist/ionic/p-db00f04e.entry.js +4 -0
  490. package/dist/ionic/p-ddf79d90.system.entry.js +4 -0
  491. package/dist/ionic/p-def451e2.system.entry.js +4 -0
  492. package/dist/ionic/p-df5134fa.entry.js +4 -0
  493. package/dist/ionic/{p-8f1ebb7d.system.js → p-df75bd2c.system.js} +1 -1
  494. package/dist/ionic/p-df7aaa62.entry.js +4 -0
  495. package/dist/ionic/p-dfd21411.system.entry.js +4 -0
  496. package/dist/ionic/p-e22bf111.js +4 -0
  497. package/dist/ionic/p-e652d9e4.entry.js +4 -0
  498. package/dist/ionic/p-e9a36c6f.entry.js +4 -0
  499. package/dist/ionic/p-ea9a8424.system.entry.js +4 -0
  500. package/dist/ionic/{p-41aa2662.entry.js → p-eeb87a49.entry.js} +1 -1
  501. package/dist/ionic/p-ef6ec008.system.entry.js +4 -0
  502. package/dist/ionic/p-ef9e6f77.system.entry.js +4 -0
  503. package/dist/ionic/{p-7751def0.system.entry.js → p-f003e500.system.entry.js} +1 -1
  504. package/dist/ionic/p-f27b18ba.system.entry.js +4 -0
  505. package/dist/ionic/p-f62122bb.system.entry.js +4 -0
  506. package/dist/ionic/p-f864df50.system.entry.js +4 -0
  507. package/dist/ionic/{p-1a0bf247.system.entry.js → p-fc58a772.system.entry.js} +1 -1
  508. package/dist/ionic/p-fdc3ff96.entry.js +4 -0
  509. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  510. package/dist/types/components/datetime/datetime.d.ts +0 -1
  511. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  512. package/dist/types/components/item/item.d.ts +0 -1
  513. package/dist/types/components/menu/menu.d.ts +12 -2
  514. package/dist/types/components/nav/nav.d.ts +4 -1
  515. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  516. package/dist/types/components/picker/picker.d.ts +75 -129
  517. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  518. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  519. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  520. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  521. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  522. package/dist/types/components/split-pane/split-pane.d.ts +14 -2
  523. package/dist/types/components/tabs/tabs-interface.d.ts +3 -4
  524. package/dist/types/components/tabs/tabs.d.ts +6 -3
  525. package/dist/types/components.d.ts +163 -128
  526. package/dist/types/interface.d.ts +1 -1
  527. package/dist/types/utils/config.d.ts +2 -2
  528. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  529. package/dist/types/utils/overlays.d.ts +5 -2
  530. package/dist/types/utils/test/playwright/generator.d.ts +3 -1
  531. package/hydrate/index.js +1491 -1379
  532. package/package.json +2 -2
  533. package/components/ion-picker-column-internal.d.ts +0 -11
  534. package/components/ion-picker-column-internal.js +0 -9
  535. package/components/ion-picker-internal.js +0 -9
  536. package/components/picker-column-internal.js +0 -390
  537. package/dist/collection/components/item/test/item.spec.js +0 -20
  538. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -566
  539. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  540. package/dist/collection/components/picker-internal/picker-internal.js +0 -560
  541. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  542. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  543. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  544. package/dist/esm-es5/overlays-bb824d56.js +0 -4
  545. package/dist/esm-es5/swipe-back-a6f386fc.js +0 -4
  546. package/dist/ionic/p-024e2739.entry.js +0 -4
  547. package/dist/ionic/p-06128c8c.entry.js +0 -4
  548. package/dist/ionic/p-06f72943.system.entry.js +0 -4
  549. package/dist/ionic/p-0d2b6901.entry.js +0 -4
  550. package/dist/ionic/p-127ff448.entry.js +0 -4
  551. package/dist/ionic/p-35ce400e.system.js +0 -4
  552. package/dist/ionic/p-3dbaaa5b.system.entry.js +0 -4
  553. package/dist/ionic/p-3de38800.system.entry.js +0 -4
  554. package/dist/ionic/p-41040a92.system.entry.js +0 -4
  555. package/dist/ionic/p-436bd99a.entry.js +0 -4
  556. package/dist/ionic/p-49c52149.system.entry.js +0 -4
  557. package/dist/ionic/p-4dc3bc8b.entry.js +0 -4
  558. package/dist/ionic/p-525b6ac4.system.entry.js +0 -4
  559. package/dist/ionic/p-5aecd304.system.entry.js +0 -4
  560. package/dist/ionic/p-5f698182.entry.js +0 -4
  561. package/dist/ionic/p-61bf9f6f.system.entry.js +0 -4
  562. package/dist/ionic/p-6899d5af.entry.js +0 -4
  563. package/dist/ionic/p-6a6477b2.js +0 -4
  564. package/dist/ionic/p-6b9eee40.system.entry.js +0 -4
  565. package/dist/ionic/p-6ba863b1.system.entry.js +0 -4
  566. package/dist/ionic/p-6e165986.system.entry.js +0 -4
  567. package/dist/ionic/p-719ad110.system.entry.js +0 -4
  568. package/dist/ionic/p-73547cf9.entry.js +0 -4
  569. package/dist/ionic/p-7a02dd61.system.entry.js +0 -4
  570. package/dist/ionic/p-7ffe791a.system.js +0 -4
  571. package/dist/ionic/p-80ddd0c1.entry.js +0 -4
  572. package/dist/ionic/p-87e10168.system.entry.js +0 -4
  573. package/dist/ionic/p-89c28901.system.entry.js +0 -4
  574. package/dist/ionic/p-8bad1486.system.entry.js +0 -4
  575. package/dist/ionic/p-90000ff6.js +0 -4
  576. package/dist/ionic/p-928e945d.system.entry.js +0 -4
  577. package/dist/ionic/p-9cf0846d.system.entry.js +0 -4
  578. package/dist/ionic/p-a0953474.entry.js +0 -4
  579. package/dist/ionic/p-a2d75455.entry.js +0 -4
  580. package/dist/ionic/p-a706cf11.system.entry.js +0 -4
  581. package/dist/ionic/p-aca77953.entry.js +0 -4
  582. package/dist/ionic/p-afafbba0.entry.js +0 -4
  583. package/dist/ionic/p-b09c8228.entry.js +0 -4
  584. package/dist/ionic/p-ba4890eb.system.entry.js +0 -4
  585. package/dist/ionic/p-beeceaf5.system.entry.js +0 -4
  586. package/dist/ionic/p-c10cc51e.system.entry.js +0 -4
  587. package/dist/ionic/p-c4177035.entry.js +0 -4
  588. package/dist/ionic/p-c48a9ef3.system.entry.js +0 -4
  589. package/dist/ionic/p-cb301b9a.entry.js +0 -4
  590. package/dist/ionic/p-d6beb1c9.system.entry.js +0 -4
  591. package/dist/ionic/p-dc1d883c.system.entry.js +0 -4
  592. package/dist/ionic/p-e150f8fc.entry.js +0 -4
  593. package/dist/ionic/p-e814f9c0.entry.js +0 -4
  594. package/dist/ionic/p-eb210b21.system.entry.js +0 -4
  595. package/dist/ionic/p-eb80ca40.entry.js +0 -4
  596. package/dist/ionic/p-f48a49ae.system.entry.js +0 -4
  597. package/dist/ionic/p-f865bc9a.entry.js +0 -4
  598. package/dist/ionic/p-fd1a0431.js +0 -4
  599. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  600. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  601. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  602. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  603. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  604. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  605. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  606. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  607. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  608. /package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +0 -0
  609. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  610. /package/dist/esm-es5/{data-775093f5.js → data-6a31d701.js} +0 -0
  611. /package/dist/ionic/{p-87bb3735.system.js → p-7ff4359e.system.js} +0 -0
  612. /package/dist/ionic/{p-18cae04f.js → p-a64accf5.js} +0 -0
  613. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  614. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  615. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  616. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -1015,7 +1015,7 @@ export class Datetime {
1015
1015
  const renderArray = forcePresentation === 'time-date'
1016
1016
  ? [this.renderTimePickerColumns(forcePresentation), this.renderDatePickerColumns(forcePresentation)]
1017
1017
  : [this.renderDatePickerColumns(forcePresentation), this.renderTimePickerColumns(forcePresentation)];
1018
- return h("ion-picker-internal", null, renderArray);
1018
+ return h("ion-picker", null, renderArray);
1019
1019
  }
1020
1020
  renderDatePickerColumns(forcePresentation) {
1021
1021
  return forcePresentation === 'date-time' || forcePresentation === 'time-date'
@@ -1074,7 +1074,7 @@ export class Datetime {
1074
1074
  const todayString = workingParts.day !== null
1075
1075
  ? `${workingParts.year}-${workingParts.month}-${workingParts.day}`
1076
1076
  : `${defaultParts.year}-${defaultParts.month}-${defaultParts.day}`;
1077
- return (h("ion-picker-column-internal", { class: "date-column", color: this.color, disabled: disabled, items: items, value: todayString, onIonChange: (ev) => {
1077
+ return (h("ion-picker-column", { class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
1078
1078
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
1079
1079
  // Due to a Safari 14 issue we need to destroy
1080
1080
  // the scroll listener before we update state
@@ -1090,7 +1090,7 @@ export class Datetime {
1090
1090
  // the working parts have been updated.
1091
1091
  this.initializeCalendarListener();
1092
1092
  ev.stopPropagation();
1093
- } }));
1093
+ } }, items.map((item) => (h("ion-picker-column-option", { part: item.value === todayString ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: item.value, disabled: item.disabled, value: item.value }, item.text)))));
1094
1094
  }
1095
1095
  renderIndividualDatePickerColumns(forcePresentation) {
1096
1096
  const { workingParts, isDateEnabled } = this;
@@ -1158,7 +1158,8 @@ export class Datetime {
1158
1158
  }
1159
1159
  const { disabled, workingParts } = this;
1160
1160
  const activePart = this.getActivePartsWithFallback();
1161
- return (h("ion-picker-column-internal", { class: "day-column", color: this.color, disabled: disabled, items: days, value: (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined, onIonChange: (ev) => {
1161
+ const pickerColumnValue = (_a = (workingParts.day !== null ? workingParts.day : this.defaultParts.day)) !== null && _a !== void 0 ? _a : undefined;
1162
+ return (h("ion-picker-column", { class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
1162
1163
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
1163
1164
  // Due to a Safari 14 issue we need to destroy
1164
1165
  // the scroll listener before we update state
@@ -1172,7 +1173,7 @@ export class Datetime {
1172
1173
  // the working parts have been updated.
1173
1174
  this.initializeCalendarListener();
1174
1175
  ev.stopPropagation();
1175
- } }));
1176
+ } }, days.map((day) => (h("ion-picker-column-option", { part: day.value === pickerColumnValue ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: day.value, disabled: day.disabled, value: day.value }, day.text)))));
1176
1177
  }
1177
1178
  renderMonthPickerColumn(months) {
1178
1179
  if (months.length === 0) {
@@ -1180,7 +1181,7 @@ export class Datetime {
1180
1181
  }
1181
1182
  const { disabled, workingParts } = this;
1182
1183
  const activePart = this.getActivePartsWithFallback();
1183
- return (h("ion-picker-column-internal", { class: "month-column", color: this.color, disabled: disabled, items: months, value: workingParts.month, onIonChange: (ev) => {
1184
+ return (h("ion-picker-column", { class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
1184
1185
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
1185
1186
  // Due to a Safari 14 issue we need to destroy
1186
1187
  // the scroll listener before we update state
@@ -1194,7 +1195,7 @@ export class Datetime {
1194
1195
  // the working parts have been updated.
1195
1196
  this.initializeCalendarListener();
1196
1197
  ev.stopPropagation();
1197
- } }));
1198
+ } }, months.map((month) => (h("ion-picker-column-option", { part: month.value === workingParts.month ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: month.value, disabled: month.disabled, value: month.value }, month.text)))));
1198
1199
  }
1199
1200
  renderYearPickerColumn(years) {
1200
1201
  if (years.length === 0) {
@@ -1202,7 +1203,7 @@ export class Datetime {
1202
1203
  }
1203
1204
  const { disabled, workingParts } = this;
1204
1205
  const activePart = this.getActivePartsWithFallback();
1205
- return (h("ion-picker-column-internal", { class: "year-column", color: this.color, disabled: disabled, items: years, value: workingParts.year, onIonChange: (ev) => {
1206
+ return (h("ion-picker-column", { class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
1206
1207
  // TODO(FW-1823) Remove this when iOS 14 support is dropped.
1207
1208
  // Due to a Safari 14 issue we need to destroy
1208
1209
  // the scroll listener before we update state
@@ -1216,7 +1217,7 @@ export class Datetime {
1216
1217
  // the working parts have been updated.
1217
1218
  this.initializeCalendarListener();
1218
1219
  ev.stopPropagation();
1219
- } }));
1220
+ } }, years.map((year) => (h("ion-picker-column-option", { part: year.value === workingParts.year ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: year.value, disabled: year.disabled, value: year.value }, year.text)))));
1220
1221
  }
1221
1222
  renderTimePickerColumns(forcePresentation) {
1222
1223
  if (['date', 'month', 'month-year', 'year'].includes(forcePresentation)) {
@@ -1245,22 +1246,22 @@ export class Datetime {
1245
1246
  if (hoursData.length === 0)
1246
1247
  return [];
1247
1248
  const activePart = this.getActivePartsWithFallback();
1248
- return (h("ion-picker-column-internal", { color: this.color, disabled: disabled, value: activePart.hour, items: hoursData, numericInput: true, onIonChange: (ev) => {
1249
+ return (h("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
1249
1250
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { hour: ev.detail.value }));
1250
1251
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { hour: ev.detail.value }));
1251
1252
  ev.stopPropagation();
1252
- } }));
1253
+ } }, hoursData.map((hour) => (h("ion-picker-column-option", { part: hour.value === activePart.hour ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: hour.value, disabled: hour.disabled, value: hour.value }, hour.text)))));
1253
1254
  }
1254
1255
  renderMinutePickerColumn(minutesData) {
1255
1256
  const { disabled, workingParts } = this;
1256
1257
  if (minutesData.length === 0)
1257
1258
  return [];
1258
1259
  const activePart = this.getActivePartsWithFallback();
1259
- return (h("ion-picker-column-internal", { color: this.color, disabled: disabled, value: activePart.minute, items: minutesData, numericInput: true, onIonChange: (ev) => {
1260
+ return (h("ion-picker-column", { color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
1260
1261
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { minute: ev.detail.value }));
1261
1262
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { minute: ev.detail.value }));
1262
1263
  ev.stopPropagation();
1263
- } }));
1264
+ } }, minutesData.map((minute) => (h("ion-picker-column-option", { part: minute.value === activePart.minute ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: minute.value, disabled: minute.disabled, value: minute.value }, minute.text)))));
1264
1265
  }
1265
1266
  renderDayPeriodPickerColumn(dayPeriodData) {
1266
1267
  const { disabled, workingParts } = this;
@@ -1269,12 +1270,12 @@ export class Datetime {
1269
1270
  }
1270
1271
  const activePart = this.getActivePartsWithFallback();
1271
1272
  const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
1272
- return (h("ion-picker-column-internal", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, items: dayPeriodData, onIonChange: (ev) => {
1273
+ return (h("ion-picker-column", { style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
1273
1274
  const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
1274
1275
  this.setWorkingParts(Object.assign(Object.assign({}, workingParts), { ampm: ev.detail.value, hour }));
1275
1276
  this.setActiveParts(Object.assign(Object.assign({}, activePart), { ampm: ev.detail.value, hour }));
1276
1277
  ev.stopPropagation();
1277
- } }));
1278
+ } }, dayPeriodData.map((dayPeriod) => (h("ion-picker-column-option", { part: dayPeriod.value === activePart.ampm ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: dayPeriod.value, disabled: dayPeriod.disabled, value: dayPeriod.value }, dayPeriod.text)))));
1278
1279
  }
1279
1280
  renderWheelView(forcePresentation) {
1280
1281
  const { locale } = this;
@@ -1295,26 +1296,11 @@ export class Datetime {
1295
1296
  const nextMonthDisabled = disabled || isNextMonthDisabled(this.workingParts, this.maxParts);
1296
1297
  // don't use the inheritAttributes util because it removes dir from the host, and we still need that
1297
1298
  const hostDir = this.el.getAttribute('dir') || undefined;
1298
- return (h("div", { class: "calendar-header" }, h("div", { class: "calendar-action-buttons" }, h("div", { class: "calendar-month-year" }, h("ion-item", { part: "month-year-button", ref: (el) => (this.monthYearToggleItemRef = el), button: true, "aria-label": "Show year picker", detail: false, lines: "none", disabled: disabled, onClick: () => {
1299
- var _a;
1300
- this.toggleMonthAndYearView();
1301
- /**
1302
- * TODO: FW-3547
1303
- *
1304
- * Currently there is not a way to set the aria-label on the inner button
1305
- * on the `ion-item` and have it be reactive to changes. This is a workaround
1306
- * until we either refactor `ion-item` to a button or Stencil adds a way to
1307
- * have reactive props for built-in properties, such as `aria-label`.
1308
- */
1309
- const { monthYearToggleItemRef } = this;
1310
- if (monthYearToggleItemRef) {
1311
- const btn = (_a = monthYearToggleItemRef.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.item-native');
1312
- if (btn) {
1313
- const monthYearAriaLabel = this.showMonthAndYear ? 'Hide year picker' : 'Show year picker';
1314
- btn.setAttribute('aria-label', monthYearAriaLabel);
1315
- }
1316
- }
1317
- } }, h("ion-label", null, getMonthAndYear(this.locale, this.workingParts), h("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })))), h("div", { class: "calendar-next-prev" }, h("ion-buttons", null, h("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), h("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), h("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
1299
+ return (h("div", { class: "calendar-header" }, h("div", { class: "calendar-action-buttons" }, h("div", { class: "calendar-month-year" }, h("button", { class: {
1300
+ 'calendar-month-year-toggle': true,
1301
+ 'ion-activatable': true,
1302
+ 'ion-focusable': true,
1303
+ }, part: "month-year-button", disabled: disabled, "aria-label": this.showMonthAndYear ? 'Hide year picker' : 'Show year picker', onClick: () => this.toggleMonthAndYearView() }, h("span", { id: "toggle-wrapper" }, getMonthAndYear(this.locale, this.workingParts), h("ion-icon", { "aria-hidden": "true", icon: this.showMonthAndYear ? expandedIcon : collapsedIcon, lazy: false, flipRtl: true })), mode === 'md' && h("ion-ripple-effect", null))), h("div", { class: "calendar-next-prev" }, h("ion-buttons", null, h("ion-button", { "aria-label": "Previous month", disabled: prevMonthDisabled, onClick: () => this.prevMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronBack, lazy: false, flipRtl: true })), h("ion-button", { "aria-label": "Next month", disabled: nextMonthDisabled, onClick: () => this.nextMonth() }, h("ion-icon", { dir: hostDir, "aria-hidden": "true", slot: "icon-only", icon: chevronForward, lazy: false, flipRtl: true }))))), h("div", { class: "calendar-days-of-week", "aria-hidden": "true" }, getDaysOfWeek(this.locale, mode, this.firstDayOfWeek % 7).map((d) => {
1318
1304
  return h("div", { class: "day-of-week" }, d);
1319
1305
  }))));
1320
1306
  }
@@ -1475,7 +1461,7 @@ export class Datetime {
1475
1461
  * This will correctly scroll the element position to the correct time value,
1476
1462
  * before the popover is fully presented.
1477
1463
  */
1478
- const cols = ev.target.querySelectorAll('ion-picker-column-internal');
1464
+ const cols = ev.target.querySelectorAll('ion-picker-column');
1479
1465
  // TODO (FW-615): Potentially remove this when intersection observers are fixed in picker column
1480
1466
  cols.forEach((col) => col.scrollActiveItemIntoView());
1481
1467
  }, style: {
@@ -2406,3 +2392,5 @@ export class Datetime {
2406
2392
  }
2407
2393
  }
2408
2394
  let datetimeIds = 0;
2395
+ const WHEEL_ITEM_PART = 'wheel-item';
2396
+ const WHEEL_ITEM_ACTIVE_PART = `active`;
@@ -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 {
@@ -500,7 +473,7 @@ ion-picker-column-internal {
500
473
  padding-bottom: 6px;
501
474
  display: flex;
502
475
  border: none;
503
- background: var(--ion-color-step-300, #edeef0);
476
+ background: var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));
504
477
  color: var(--ion-text-color, #000);
505
478
  font-family: inherit;
506
479
  font-size: inherit;
@@ -516,8 +489,72 @@ 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;
552
+ }
553
+
554
+ ion-picker {
555
+ --highlight-background: var(--wheel-highlight-background);
556
+ --highlight-border-radius: var(--wheel-highlight-border-radius);
557
+ --fade-background-rgb: var(--wheel-fade-background-rgb);
521
558
  }
522
559
 
523
560
  /**
@@ -576,7 +613,7 @@ ion-picker-column-internal {
576
613
  * }
577
614
  */
578
615
  :host {
579
- --background: var(--ion-color-step-100, #ffffff);
616
+ --background: var(--ion-color-step-100, var(--ion-background-color-step-100, #ffffff));
580
617
  --title-color: var(--ion-color-contrast);
581
618
  }
582
619
 
@@ -601,15 +638,36 @@ ion-picker-column-internal {
601
638
  font-size: 2.125rem;
602
639
  }
603
640
 
604
- :host .datetime-calendar .calendar-action-buttons ion-item {
605
- --padding-start: 20px;
641
+ :host .calendar-action-buttons ion-button {
642
+ --color: var(--ion-color-step-650, var(--ion-text-color-step-350, #595959));
606
643
  }
607
644
 
608
- :host .calendar-action-buttons ion-item,
609
- :host .calendar-action-buttons ion-button {
610
- --color: var(--ion-color-step-650, #595959);
645
+ .calendar-month-year-toggle {
646
+ -webkit-padding-start: 20px;
647
+ padding-inline-start: 20px;
648
+ -webkit-padding-end: 16px;
649
+ padding-inline-end: 16px;
650
+ padding-top: 12px;
651
+ padding-bottom: 12px;
652
+ min-height: 48px;
653
+ background: transparent;
654
+ color: var(--ion-color-step-650, var(--ion-text-color-step-350, #595959));
655
+ z-index: 1;
656
+ }
657
+ .calendar-month-year-toggle.ion-focused::after {
658
+ opacity: 0.04;
611
659
  }
612
660
 
661
+ .calendar-month-year-toggle ion-ripple-effect {
662
+ color: currentColor;
663
+ }
664
+
665
+ @media (any-hover: hover) {
666
+ .calendar-month-year-toggle.ion-activatable:not(.ion-focused):hover::after {
667
+ background: currentColor;
668
+ opacity: 0.04;
669
+ }
670
+ }
613
671
  :host .calendar-days-of-week {
614
672
  -webkit-padding-start: 10px;
615
673
  padding-inline-start: 10px;
@@ -617,7 +675,7 @@ ion-picker-column-internal {
617
675
  padding-inline-end: 10px;
618
676
  padding-top: 0px;
619
677
  padding-bottom: 0px;
620
- color: var(--ion-color-step-500, gray);
678
+ color: var(--ion-color-step-500, var(--ion-text-color-step-500, gray));
621
679
  font-size: 0.875rem;
622
680
  line-height: 36px;
623
681
  }
@@ -679,7 +737,7 @@ ion-picker-column-internal {
679
737
  }
680
738
 
681
739
  :host .time-header {
682
- color: var(--ion-color-step-650, #595959);
740
+ color: var(--ion-color-step-650, var(--ion-text-color-step-350, #595959));
683
741
  }
684
742
 
685
743
  /**
@@ -21,7 +21,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
21
21
  </div>
22
22
  `, config);
23
23
  const container = page.locator('#container');
24
- await page.locator('.datetime-ready').waitFor();
24
+ await page.waitForSelector('.datetime-ready');
25
25
  await expect(container).toHaveScreenshot(screenshot(`datetime-scale`));
26
26
  });
27
27
  });
@@ -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);
@@ -64,7 +64,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
64
64
 
65
65
  <ion-datetime value="2022-02-22T16:30:00" show-default-buttons="true" show-clear-button="true"></ion-datetime>
66
66
  `, config);
67
- await page.locator('.datetime-ready').waitFor();
67
+ await page.waitForSelector('.datetime-ready');
68
68
  const clearButton = page.locator('#clear-button button');
69
69
  const selectedDay = page.locator('.calendar-day-active');
70
70
  await expect(selectedDay).toHaveText('22');
@@ -80,7 +80,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
80
80
 
81
81
  <ion-datetime value="2022-02-28"></ion-datetime>
82
82
  `, config);
83
- await page.locator('.datetime-ready').waitFor();
83
+ await page.waitForSelector('.datetime-ready');
84
84
  const calendarMonthYear = page.locator('ion-datetime .calendar-month-year');
85
85
  const calendarBody = page.locator('.calendar-body');
86
86
  await expect(calendarMonthYear).toHaveText('February 2022');
@@ -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
  });
@@ -82,7 +82,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
82
82
  }
83
83
  </script>
84
84
  `, config);
85
- await page.locator('.datetime-ready').waitFor();
85
+ await page.waitForSelector('.datetime-ready');
86
86
  const datetime = page.locator('ion-datetime');
87
87
  const ionChange = await page.spyOnEvent('ionChange');
88
88
  // Oct 1, 2022
@@ -188,7 +188,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
188
188
  await page.setContent(`
189
189
  <ion-datetime value="2022-05-03"></ion-datetime>
190
190
  `, config);
191
- await page.locator('.datetime-ready').waitFor();
191
+ await page.waitForSelector('.datetime-ready');
192
192
  const calendarBody = page.locator('ion-datetime .calendar-body');
193
193
  const calendarHeader = page.locator('ion-datetime .calendar-month-year');
194
194
  await expect(calendarHeader).toHaveText(/May 2022/);
@@ -200,7 +200,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
200
200
  await page.setContent(`
201
201
  <ion-datetime value="2022-05-03"></ion-datetime>
202
202
  `, config);
203
- await page.locator('.datetime-ready').waitFor();
203
+ await page.waitForSelector('.datetime-ready');
204
204
  const calendarBody = page.locator('ion-datetime .calendar-body');
205
205
  const calendarHeader = page.locator('ion-datetime .calendar-month-year');
206
206
  await expect(calendarHeader).toHaveText(/May 2022/);
@@ -213,7 +213,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
213
213
  await page.setContent(`
214
214
  <ion-datetime value="2022-05-03"></ion-datetime>
215
215
  `, config);
216
- await page.locator('.datetime-ready').waitFor();
216
+ await page.waitForSelector('.datetime-ready');
217
217
  const calendarBody = page.locator('ion-datetime .calendar-body');
218
218
  const calendarHeader = page.locator('ion-datetime .calendar-month-year');
219
219
  await expect(calendarHeader).toHaveText(/May 2022/);
@@ -237,7 +237,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
237
237
  await page.setContent(`
238
238
  <ion-datetime></ion-datetime>
239
239
  `, config);
240
- await page.locator('.datetime-ready').waitFor();
240
+ await page.waitForSelector('.datetime-ready');
241
241
  const monthYearButton = page.locator('ion-datetime .calendar-month-year');
242
242
  const monthYearInterface = page.locator('ion-datetime .datetime-year');
243
243
  const datetime = page.locator('ion-datetime');
@@ -249,7 +249,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
249
249
  await expect(datetime).not.toHaveClass(/datetime-ready/);
250
250
  await datetime.evaluate((el) => el.style.removeProperty('display'));
251
251
  await expect(datetime).toBeVisible();
252
- await page.locator('.datetime-ready').waitFor();
252
+ await page.waitForSelector('.datetime-ready');
253
253
  // month/year interface should be reset
254
254
  await expect(monthYearInterface).toBeHidden();
255
255
  });
@@ -287,7 +287,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
287
287
  await page.setContent(`
288
288
  <ion-datetime value="2022-11-10" show-clear-button="true"></ion-datetime>
289
289
  `, config);
290
- await page.locator('.datetime-ready').waitFor();
290
+ await page.waitForSelector('.datetime-ready');
291
291
  const selectedDay = page.locator('ion-datetime .calendar-day-active');
292
292
  await expect(selectedDay).toHaveText('10');
293
293
  await page.click('ion-datetime #clear-button');
@@ -306,7 +306,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
306
306
  await page.setContent(`
307
307
  <ion-datetime presentation="date" value="2022-01-02"></ion-datetime>
308
308
  `, config);
309
- await page.locator('.datetime-ready').waitFor();
309
+ await page.waitForSelector('.datetime-ready');
310
310
  const ionChange = await page.spyOnEvent('ionChange');
311
311
  const calendarButtons = page.locator('.calendar-day:not([disabled])');
312
312
  await calendarButtons.nth(0).click();
@@ -317,7 +317,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
317
317
  await page.setContent(`
318
318
  <ion-datetime presentation="date" value="2022-01-02"></ion-datetime>
319
319
  `, config);
320
- await page.locator('.datetime-ready').waitFor();
320
+ await page.waitForSelector('.datetime-ready');
321
321
  const ionChange = await page.spyOnEvent('ionChange');
322
322
  const datetime = page.locator('ion-datetime');
323
323
  await datetime.evaluate((el) => (el.value = '2022-01-01'));
@@ -349,7 +349,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
349
349
  </script>
350
350
  `, config);
351
351
  const datetime = page.locator('ion-datetime');
352
- await page.locator('.datetime-ready').waitFor();
352
+ await page.waitForSelector('.datetime-ready');
353
353
  await expect(datetime.locator('.calendar-day-today')).toHaveScreenshot(screenshot(`datetime-today-calendar-button`));
354
354
  });
355
355
  });
@@ -369,7 +369,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, screenshot, co
369
369
  <ion-datetime value="2021-01-01"></ion-datetime>
370
370
  `, config);
371
371
  const datetime = page.locator('ion-datetime');
372
- await page.locator('.datetime-ready').waitFor();
372
+ await page.waitForSelector('.datetime-ready');
373
373
  await expect(datetime).toHaveScreenshot(screenshot(`date-highlight-start-of-month`));
374
374
  await datetime.evaluate((el) => (el.value = '2021-01-31'));
375
375
  await page.waitForChanges();
@@ -387,7 +387,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
387
387
  await page.setContent(`
388
388
  <ion-datetime value="2023-08-01"></ion-datetime>
389
389
  `, config);
390
- await page.locator('.datetime-ready').waitFor();
390
+ await page.waitForSelector('.datetime-ready');
391
391
  const datetime = page.locator('ion-datetime');
392
392
  const day = datetime.locator(`.calendar-day[data-day='1'][data-month='8']`);
393
393
  await day.focus();
@@ -401,4 +401,14 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
401
401
  await expect(datetime).toHaveScreenshot(screenshot(`datetime-focus-calendar-day`));
402
402
  });
403
403
  });
404
+ test.describe(title('datetime: calendar month toggle'), () => {
405
+ test('should have focus styles', async ({ page }) => {
406
+ await page.setContent('<ion-datetime value="2021-01-01"></ion-datetime>', config);
407
+ const datetime = page.locator('ion-datetime');
408
+ await page.waitForSelector('.datetime-ready');
409
+ const monthYearToggle = datetime.locator('.calendar-month-year-toggle');
410
+ monthYearToggle.evaluate((el) => el.classList.add('ion-focused'));
411
+ await expect(datetime).toHaveScreenshot(screenshot(`date-month-toggle-focused`));
412
+ });
413
+ });
404
414
  });
@@ -9,11 +9,11 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
9
9
  await page.setContent(`
10
10
  <ion-datetime locale="en-US" presentation="date" value="2022-01-31"></ion-datetime>
11
11
  `, config);
12
- await page.locator('.datetime-ready').waitFor();
12
+ await page.waitForSelector('.datetime-ready');
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();
@@ -99,7 +99,7 @@ configs({ directions: ['ltr'], modes: ['ios'] }).forEach(({ title, config }) =>
99
99
  test.describe('check example usages', () => {
100
100
  test.beforeEach(async ({ page }) => {
101
101
  await page.goto('/src/components/datetime/test/disable-dates', config);
102
- await page.locator('.datetime-ready').first().waitFor();
102
+ await page.waitForSelector('.datetime-ready');
103
103
  });
104
104
  test('should disable a specific date', async ({ page }) => {
105
105
  const disabledDay = queryAllDisabledDays(page, '#specificDate');