@ionic/core 7.7.2-dev.11707932366.16baf005 → 7.7.2-dev.11707941206.120570b8

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 (810) hide show
  1. package/components/action-sheet.js +4 -4
  2. package/components/alert.js +2 -2
  3. package/components/backdrop.js +13 -1
  4. package/components/button-active.js +1 -1
  5. package/components/button.js +2 -2
  6. package/components/checkbox.js +2 -2
  7. package/components/data.js +24 -39
  8. package/components/gesture-controller.js +1 -1
  9. package/components/ion-accordion-group.js +1 -1
  10. package/components/ion-back-button.js +1 -1
  11. package/components/ion-badge.js +2 -2
  12. package/components/ion-breadcrumb.js +2 -2
  13. package/components/ion-card-subtitle.js +2 -2
  14. package/components/ion-card-title.js +1 -1
  15. package/components/ion-card.js +2 -2
  16. package/components/ion-content.js +5 -4
  17. package/components/ion-datetime-button.js +15 -14
  18. package/components/ion-datetime.js +173 -47
  19. package/components/ion-fab-button.js +4 -4
  20. package/components/ion-fab-list.js +3 -3
  21. package/components/ion-fab.js +2 -2
  22. package/components/ion-footer.js +2 -2
  23. package/components/ion-grid.js +2 -2
  24. package/components/ion-header.js +2 -2
  25. package/components/ion-img.js +1 -1
  26. package/components/ion-infinite-scroll-content.js +4 -4
  27. package/components/ion-infinite-scroll.js +1 -1
  28. package/components/ion-input.js +93 -7
  29. package/components/ion-item-divider.js +4 -4
  30. package/components/ion-item-group.js +1 -1
  31. package/components/ion-item-option.js +4 -4
  32. package/components/ion-item-options.js +3 -3
  33. package/components/ion-item-sliding.js +1 -1
  34. package/components/ion-loading.js +4 -4
  35. package/components/ion-menu-button.js +3 -3
  36. package/components/ion-menu-toggle.js +2 -2
  37. package/components/ion-menu.js +17 -23
  38. package/components/ion-modal.js +25 -8
  39. package/components/ion-nav-link.js +1 -1
  40. package/components/ion-nav.js +4 -8
  41. package/components/ion-picker-column-internal.d.ts +11 -0
  42. package/components/ion-picker-column-internal.js +9 -0
  43. package/components/ion-picker-column.js +2 -2
  44. package/components/{ion-picker-legacy.d.ts → ion-picker-internal.d.ts} +4 -4
  45. package/components/ion-picker-internal.js +9 -0
  46. package/components/ion-picker.js +311 -1
  47. package/components/ion-progress-bar.js +3 -6
  48. package/components/ion-range.js +2 -2
  49. package/components/ion-refresher-content.js +1 -1
  50. package/components/ion-refresher.js +3 -3
  51. package/components/ion-reorder-group.js +1 -1
  52. package/components/ion-reorder.js +1 -1
  53. package/components/ion-router-link.js +3 -3
  54. package/components/ion-router-outlet.js +1 -1
  55. package/components/ion-row.js +1 -1
  56. package/components/ion-searchbar.js +6 -6
  57. package/components/ion-segment-button.js +5 -5
  58. package/components/ion-segment.js +2 -2
  59. package/components/ion-select-option.js +1 -1
  60. package/components/ion-select.js +159 -65
  61. package/components/ion-skeleton-text.js +2 -2
  62. package/components/ion-split-pane.js +17 -28
  63. package/components/ion-tab-bar.js +4 -4
  64. package/components/ion-tab-button.js +4 -4
  65. package/components/ion-tab.js +2 -2
  66. package/components/ion-tabs.js +1 -1
  67. package/components/ion-text.js +2 -2
  68. package/components/ion-textarea.js +70 -7
  69. package/components/ion-thumbnail.js +1 -1
  70. package/components/ion-title.js +3 -3
  71. package/components/ion-toast.js +6 -12
  72. package/components/ion-toggle.js +64 -7
  73. package/components/ion-toolbar.js +4 -4
  74. package/components/item.js +2 -2
  75. package/components/label.js +3 -3
  76. package/components/list-header.js +4 -4
  77. package/components/list.js +2 -2
  78. package/components/note.js +4 -4
  79. package/components/overlays.js +4 -11
  80. package/components/picker-column-internal.js +392 -0
  81. package/components/picker-column.js +324 -352
  82. package/components/{picker.js → picker-internal.js} +26 -33
  83. package/components/popover.js +3 -3
  84. package/components/radio-group.js +1 -1
  85. package/components/radio.js +81 -8
  86. package/components/ripple-effect.js +1 -1
  87. package/components/select-popover.js +2 -2
  88. package/components/spinner.js +1 -1
  89. package/css/core.css +27 -90
  90. package/css/core.css.map +1 -1
  91. package/css/display.css.map +1 -1
  92. package/css/float-elements.css.map +1 -1
  93. package/css/global.bundle.css +1 -1
  94. package/css/global.bundle.css.map +1 -1
  95. package/css/ionic-swiper.css.map +1 -1
  96. package/css/ionic.bundle.css +1 -1
  97. package/css/ionic.bundle.css.map +1 -1
  98. package/css/padding.css.map +1 -1
  99. package/css/structure.css.map +1 -1
  100. package/css/text-alignment.css.map +1 -1
  101. package/css/text-transformation.css.map +1 -1
  102. package/css/typography.css +1 -1
  103. package/css/typography.css.map +1 -1
  104. package/css/utils.bundle.css.map +1 -1
  105. package/dist/cjs/{button-active-600ed3e2.js → button-active-b8c3f603.js} +2 -2
  106. package/dist/cjs/{data-e2bf21de.js → data-6df19461.js} +23 -40
  107. package/dist/cjs/{gesture-controller-9436f482.js → gesture-controller-c40c045a.js} +0 -1
  108. package/dist/cjs/{index-ee07ed59.js → index-d1b59ffa.js} +1 -1
  109. package/dist/cjs/index.cjs.js +3 -3
  110. package/dist/cjs/ion-accordion_2.cjs.entry.js +1 -1
  111. package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -8
  112. package/dist/cjs/ion-alert.cjs.entry.js +6 -6
  113. package/dist/cjs/ion-app_8.cjs.entry.js +18 -17
  114. package/dist/cjs/ion-avatar_3.cjs.entry.js +3 -3
  115. package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
  116. package/dist/cjs/ion-backdrop.cjs.entry.js +13 -1
  117. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
  118. package/dist/cjs/ion-button_2.cjs.entry.js +2 -2
  119. package/dist/cjs/ion-card_5.cjs.entry.js +5 -5
  120. package/dist/cjs/ion-checkbox.cjs.entry.js +2 -2
  121. package/dist/cjs/ion-col_3.cjs.entry.js +3 -3
  122. package/dist/cjs/ion-datetime-button.cjs.entry.js +15 -14
  123. package/dist/cjs/ion-datetime_3.cjs.entry.js +174 -55
  124. package/dist/cjs/ion-fab_3.cjs.entry.js +9 -9
  125. package/dist/cjs/ion-img.cjs.entry.js +1 -1
  126. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
  127. package/dist/cjs/ion-input.cjs.entry.js +88 -8
  128. package/dist/cjs/ion-item-option_3.cjs.entry.js +9 -9
  129. package/dist/cjs/ion-item_8.cjs.entry.js +22 -22
  130. package/dist/cjs/ion-loading.cjs.entry.js +5 -6
  131. package/dist/cjs/ion-menu_3.cjs.entry.js +26 -31
  132. package/dist/cjs/ion-modal.cjs.entry.js +28 -11
  133. package/dist/cjs/ion-nav_2.cjs.entry.js +5 -8
  134. package/dist/cjs/{ion-picker-column.cjs.entry.js → ion-picker-column-internal.cjs.entry.js} +89 -105
  135. package/dist/cjs/{ion-picker.cjs.entry.js → ion-picker-internal.cjs.entry.js} +23 -30
  136. package/dist/cjs/ion-popover.cjs.entry.js +4 -5
  137. package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -6
  138. package/dist/cjs/ion-radio_2.cjs.entry.js +76 -7
  139. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  140. package/dist/cjs/ion-refresher_2.cjs.entry.js +7 -7
  141. package/dist/cjs/ion-reorder_2.cjs.entry.js +3 -3
  142. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  143. package/dist/cjs/ion-route_4.cjs.entry.js +3 -3
  144. package/dist/cjs/ion-searchbar.cjs.entry.js +6 -6
  145. package/dist/cjs/ion-segment_2.cjs.entry.js +8 -8
  146. package/dist/cjs/ion-select_3.cjs.entry.js +164 -73
  147. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  148. package/dist/cjs/ion-split-pane.cjs.entry.js +16 -26
  149. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +8 -8
  150. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  151. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  152. package/dist/cjs/ion-textarea.cjs.entry.js +67 -7
  153. package/dist/cjs/ion-toast.cjs.entry.js +8 -14
  154. package/dist/cjs/ion-toggle.cjs.entry.js +63 -7
  155. package/dist/cjs/ionic.cjs.js +1 -1
  156. package/dist/cjs/loader.cjs.js +1 -1
  157. package/dist/cjs/{overlays-8f32c4ca.js → overlays-330df245.js} +4 -11
  158. package/dist/cjs/{swipe-back-f93021d8.js → swipe-back-8411f044.js} +2 -2
  159. package/dist/collection/collection-manifest.json +6 -7
  160. package/dist/collection/components/accordion-group/accordion-group.md.css +26 -4
  161. package/dist/collection/components/action-sheet/action-sheet.ios.css +9 -16
  162. package/dist/collection/components/action-sheet/action-sheet.js +2 -2
  163. package/dist/collection/components/action-sheet/action-sheet.md.css +3 -10
  164. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +14 -23
  165. package/dist/collection/components/action-sheet/test/basic/action-sheet-rendering.e2e.js +0 -19
  166. package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +0 -22
  167. package/dist/collection/components/alert/alert.ios.css +80 -33
  168. package/dist/collection/components/alert/alert.md.css +121 -25
  169. package/dist/collection/components/alert/test/a11y/alert.e2e.js +9 -22
  170. package/dist/collection/components/back-button/back-button.ios.css +1 -1
  171. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +0 -21
  172. package/dist/collection/components/backdrop/backdrop.js +13 -1
  173. package/dist/collection/components/badge/badge.ios.css +1 -1
  174. package/dist/collection/components/badge/badge.md.css +1 -1
  175. package/dist/collection/components/badge/test/a11y/badge.e2e.js +0 -18
  176. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +9 -9
  177. package/dist/collection/components/breadcrumb/breadcrumb.md.css +9 -9
  178. package/dist/collection/components/button/button.ios.css +11 -11
  179. package/dist/collection/components/button/button.md.css +9 -9
  180. package/dist/collection/components/button/test/a11y/button.e2e.js +0 -48
  181. package/dist/collection/components/button/test/wrap/button.e2e.js +24 -12
  182. package/dist/collection/components/card/card.ios.css +1 -1
  183. package/dist/collection/components/card/card.md.css +1 -1
  184. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +1 -1
  185. package/dist/collection/components/card-subtitle/card-subtitle.md.css +1 -1
  186. package/dist/collection/components/card-title/card-title.md.css +1 -1
  187. package/dist/collection/components/checkbox/checkbox.ios.css +26 -8
  188. package/dist/collection/components/checkbox/checkbox.md.css +24 -5
  189. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +2 -11
  190. package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +0 -10
  191. package/dist/collection/components/content/content.css +4 -0
  192. package/dist/collection/components/content/content.js +4 -3
  193. package/dist/collection/components/datetime/datetime.ios.css +117 -105
  194. package/dist/collection/components/datetime/datetime.js +126 -31
  195. package/dist/collection/components/datetime/datetime.md.css +114 -106
  196. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  197. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +9 -6
  198. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +75 -8
  199. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  200. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  201. package/dist/collection/components/datetime/test/format.spec.js +65 -15
  202. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  203. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  204. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  205. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +41 -43
  206. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  207. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  208. package/dist/collection/components/datetime/test/values/datetime.e2e.js +12 -15
  209. package/dist/collection/components/datetime/utils/data.js +1 -1
  210. package/dist/collection/components/datetime/utils/format.js +23 -37
  211. package/dist/collection/components/datetime/utils/warn.js +45 -0
  212. package/dist/collection/components/datetime-button/{datetime-button.md.css → datetime-button.css} +7 -10
  213. package/dist/collection/components/datetime-button/datetime-button.js +15 -14
  214. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +66 -12
  215. package/dist/collection/components/fab/fab.js +2 -2
  216. package/dist/collection/components/fab-button/fab-button.ios.css +7 -7
  217. package/dist/collection/components/fab-button/fab-button.js +2 -2
  218. package/dist/collection/components/fab-button/fab-button.md.css +1 -1
  219. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +0 -50
  220. package/dist/collection/components/fab-list/fab-list.css +42 -4
  221. package/dist/collection/components/fab-list/fab-list.js +2 -2
  222. package/dist/collection/components/footer/footer.js +2 -2
  223. package/dist/collection/components/grid/grid.js +2 -2
  224. package/dist/collection/components/header/header.js +2 -2
  225. package/dist/collection/components/img/img.js +1 -1
  226. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  227. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +3 -3
  228. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  229. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +3 -3
  230. package/dist/collection/components/input/input.ios.css +104 -11
  231. package/dist/collection/components/input/input.js +144 -6
  232. package/dist/collection/components/input/input.md.css +216 -35
  233. package/dist/collection/components/input/test/a11y/input.e2e.js +3 -41
  234. package/dist/collection/components/input/test/item/input.spec.js +24 -0
  235. package/dist/collection/components/input/test/legacy/a11y/input.e2e.js +28 -0
  236. package/dist/collection/components/input/test/legacy/basic/input.e2e.js +181 -0
  237. package/dist/collection/components/input/test/legacy/clear-on-edit/input.e2e.js +55 -0
  238. package/dist/collection/components/input/test/legacy/input-events.e2e.js +71 -0
  239. package/dist/collection/components/input/test/legacy/masking/input.e2e.js +26 -0
  240. package/dist/collection/components/input/test/legacy/spec/input.e2e.js +16 -0
  241. package/dist/collection/components/item/item.ios.css +30 -6
  242. package/dist/collection/components/item/item.md.css +97 -24
  243. package/dist/collection/components/item/test/a11y/item.e2e.js +40 -0
  244. package/dist/collection/components/item/test/counter/item.e2e.js +49 -0
  245. package/dist/collection/components/item/test/highlight/item.e2e.js +14 -0
  246. package/dist/collection/components/item/test/legacy/alignment/item.e2e.js +14 -0
  247. package/dist/collection/components/item/test/legacy/fill/item.e2e.js +14 -0
  248. package/dist/collection/components/item/test/legacy/form/item.e2e.js +14 -0
  249. package/dist/collection/components/item-divider/item-divider.ios.css +3 -3
  250. package/dist/collection/components/item-divider/item-divider.js +2 -2
  251. package/dist/collection/components/item-divider/item-divider.md.css +3 -3
  252. package/dist/collection/components/item-group/item-group.js +1 -1
  253. package/dist/collection/components/item-option/item-option.ios.css +2 -2
  254. package/dist/collection/components/item-option/item-option.js +2 -2
  255. package/dist/collection/components/item-option/item-option.md.css +1 -1
  256. package/dist/collection/components/item-options/item-options.ios.css +1 -1
  257. package/dist/collection/components/item-options/item-options.js +1 -1
  258. package/dist/collection/components/item-options/item-options.md.css +1 -1
  259. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  260. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +0 -28
  261. package/dist/collection/components/label/label.ios.css +1 -1
  262. package/dist/collection/components/label/label.js +1 -1
  263. package/dist/collection/components/label/label.md.css +2 -2
  264. package/dist/collection/components/label/test/a11y/label.e2e.js +0 -20
  265. package/dist/collection/components/list/list.js +1 -1
  266. package/dist/collection/components/list/list.md.css +26 -2
  267. package/dist/collection/components/list-header/list-header.ios.css +2 -2
  268. package/dist/collection/components/list-header/list-header.js +2 -2
  269. package/dist/collection/components/list-header/list-header.md.css +1 -1
  270. package/dist/collection/components/loading/loading.ios.css +2 -2
  271. package/dist/collection/components/loading/loading.js +2 -2
  272. package/dist/collection/components/loading/loading.md.css +3 -3
  273. package/dist/collection/components/loading/test/a11y/loading.e2e.js +5 -21
  274. package/dist/collection/components/menu/menu.ios.css +53 -72
  275. package/dist/collection/components/menu/menu.js +15 -21
  276. package/dist/collection/components/menu/menu.md.css +53 -72
  277. package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
  278. package/dist/collection/components/menu-button/menu-button.js +2 -2
  279. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +0 -14
  280. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  281. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -1
  282. package/dist/collection/components/modal/modal.ios.css +38 -9
  283. package/dist/collection/components/modal/modal.js +3 -3
  284. package/dist/collection/components/modal/modal.md.css +1 -1
  285. package/dist/collection/components/modal/utils.js +8 -2
  286. package/dist/collection/components/nav/nav.js +3 -23
  287. package/dist/collection/components/nav/test/nav-controller.spec.js +36 -36
  288. package/dist/collection/components/nav-link/nav-link.js +1 -1
  289. package/dist/collection/components/note/note.ios.css +1 -1
  290. package/dist/collection/components/note/note.js +2 -2
  291. package/dist/collection/components/note/note.md.css +1 -1
  292. package/dist/collection/components/picker/picker.ios.css +234 -97
  293. package/dist/collection/components/picker/picker.js +738 -488
  294. package/dist/collection/components/picker/picker.md.css +226 -98
  295. package/dist/collection/components/picker/test/basic/picker.e2e.js +13 -99
  296. package/dist/collection/components/{picker-legacy → picker}/test/is-open/picker.e2e.js +4 -4
  297. package/dist/collection/components/{picker-legacy → picker}/test/picker-id.spec.js +5 -5
  298. package/dist/collection/components/{picker-legacy → picker}/test/trigger/picker.e2e.js +1 -1
  299. package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.ios.css +26 -2
  300. package/dist/collection/components/picker-column/picker-column.js +335 -499
  301. package/dist/collection/components/{picker-legacy-column → picker-column}/picker-column.md.css +27 -3
  302. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-aria.spec.js +3 -3
  303. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column-dynamic.spec.js +2 -2
  304. package/dist/collection/components/{picker-legacy-column → picker-column}/test/picker-column.spec.js +2 -2
  305. package/dist/collection/components/{picker-legacy-column → picker-column}/test/standalone/picker-column.e2e.js +3 -3
  306. package/dist/collection/components/{picker-column-option/picker-column-option.md.css → picker-column-internal/picker-column-internal.ios.css} +53 -6
  307. package/dist/collection/components/picker-column-internal/picker-column-internal.js +566 -0
  308. package/dist/collection/components/{picker-column/picker-column.css → picker-column-internal/picker-column-internal.md.css} +83 -96
  309. package/dist/collection/components/{picker-column/test/basic/picker-column.e2e.js → picker-column-internal/test/basic/picker-column-internal.e2e.js} +8 -8
  310. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +162 -0
  311. package/dist/collection/components/{picker-legacy/picker.ios.css → picker-internal/picker-internal.ios.css} +117 -155
  312. package/dist/collection/components/picker-internal/picker-internal.js +560 -0
  313. package/dist/collection/components/{picker-legacy/picker.md.css → picker-internal/picker-internal.md.css} +115 -144
  314. package/dist/collection/components/{picker/test/a11y/picker.e2e.js → picker-internal/test/a11y/picker-internal.e2e.js} +2 -2
  315. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +118 -0
  316. package/dist/collection/components/{picker/test/keyboard-entry/picker.e2e.js → picker-internal/test/keyboard-entry/picker-internal.e2e.js} +42 -79
  317. package/dist/collection/components/popover/popover.ios.css +34 -3
  318. package/dist/collection/components/popover/popover.js +2 -2
  319. package/dist/collection/components/progress-bar/progress-bar.ios.css +11 -17
  320. package/dist/collection/components/progress-bar/progress-bar.js +1 -4
  321. package/dist/collection/components/progress-bar/progress-bar.md.css +10 -8
  322. package/dist/collection/components/radio/radio.ios.css +101 -10
  323. package/dist/collection/components/radio/radio.js +119 -5
  324. package/dist/collection/components/radio/radio.md.css +105 -8
  325. package/dist/collection/components/radio/test/a11y/radio.e2e.js +81 -114
  326. package/dist/collection/components/radio/test/legacy/a11y/radio.e2e.js +53 -0
  327. package/dist/collection/components/radio/test/legacy/basic/radio.e2e.js +127 -0
  328. package/dist/collection/components/radio-group/radio-group.js +1 -1
  329. package/dist/collection/components/radio-group/test/legacy/basic/radio-group.e2e.js +122 -0
  330. package/dist/collection/components/radio-group/test/legacy/form/radio-group.e2e.js +30 -0
  331. package/dist/collection/components/radio-group/test/legacy/search/radio-group.e2e.js +38 -0
  332. package/dist/collection/components/range/range.ios.css +81 -12
  333. package/dist/collection/components/range/range.md.css +135 -19
  334. package/dist/collection/components/range/test/a11y/range.e2e.js +8 -18
  335. package/dist/collection/components/refresher/refresher.ios.css +27 -4
  336. package/dist/collection/components/refresher/refresher.js +1 -1
  337. package/dist/collection/components/refresher/refresher.md.css +30 -7
  338. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  339. package/dist/collection/components/reorder/reorder.js +1 -1
  340. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  341. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  342. package/dist/collection/components/router-link/router-link.css +1 -1
  343. package/dist/collection/components/router-link/router-link.js +2 -2
  344. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  345. package/dist/collection/components/row/row.js +1 -1
  346. package/dist/collection/components/searchbar/searchbar.ios.css +59 -11
  347. package/dist/collection/components/searchbar/searchbar.js +4 -4
  348. package/dist/collection/components/searchbar/searchbar.md.css +82 -10
  349. package/dist/collection/components/segment/segment.js +2 -2
  350. package/dist/collection/components/segment/test/a11y/segment.e2e.js +0 -23
  351. package/dist/collection/components/segment-button/segment-button.ios.css +3 -3
  352. package/dist/collection/components/segment-button/segment-button.js +3 -3
  353. package/dist/collection/components/segment-button/segment-button.md.css +2 -2
  354. package/dist/collection/components/select/select.ios.css +81 -10
  355. package/dist/collection/components/select/select.js +173 -64
  356. package/dist/collection/components/select/select.md.css +169 -38
  357. package/dist/collection/components/select/test/a11y/select.e2e.js +4 -68
  358. package/dist/collection/components/select/test/legacy/async/select.e2e.js +19 -0
  359. package/dist/collection/components/select/test/legacy/basic/select.e2e.js +145 -0
  360. package/dist/collection/components/select/test/legacy/compare-with/select.e2e.js +67 -0
  361. package/dist/collection/components/select/test/legacy/custom/custom.e2e.js +13 -0
  362. package/dist/collection/components/select/test/legacy/single-value/select.e2e.js +16 -0
  363. package/dist/collection/components/select/test/legacy/spec/select.e2e.js +14 -0
  364. package/dist/collection/components/select/test/legacy/standalone/select.e2e.js +18 -0
  365. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +39 -0
  366. package/dist/collection/components/select-option/select-option.js +1 -1
  367. package/dist/collection/components/select-popover/select-popover.js +1 -1
  368. package/dist/collection/components/select-popover/select-popover.md.css +4 -4
  369. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  370. package/dist/collection/components/spinner/spinner.js +1 -1
  371. package/dist/collection/components/split-pane/split-pane.ios.css +55 -3
  372. package/dist/collection/components/split-pane/split-pane.js +14 -48
  373. package/dist/collection/components/split-pane/split-pane.md.css +55 -3
  374. package/dist/collection/components/tab/tab.js +2 -2
  375. package/dist/collection/components/tab-bar/tab-bar.ios.css +4 -4
  376. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  377. package/dist/collection/components/tab-bar/tab-bar.md.css +3 -3
  378. package/dist/collection/components/tab-button/tab-button.ios.css +94 -16
  379. package/dist/collection/components/tab-button/tab-button.js +2 -2
  380. package/dist/collection/components/tab-button/tab-button.md.css +93 -10
  381. package/dist/collection/components/tabs/tabs.js +1 -1
  382. package/dist/collection/components/text/text.js +2 -2
  383. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +3 -41
  384. package/dist/collection/components/textarea/test/legacy/a11y/textarea.e2e.js +31 -0
  385. package/dist/collection/components/textarea/test/legacy/autogrow/textarea.e2e.js +58 -0
  386. package/dist/collection/components/textarea/test/legacy/basic/textarea.e2e.js +43 -0
  387. package/dist/collection/components/textarea/test/legacy/clear-on-edit/textarea.e2e.js +25 -0
  388. package/dist/collection/components/textarea/textarea.ios.css +103 -13
  389. package/dist/collection/components/textarea/textarea.js +84 -5
  390. package/dist/collection/components/textarea/textarea.md.css +226 -37
  391. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  392. package/dist/collection/components/title/title.ios.css +21 -2
  393. package/dist/collection/components/title/title.js +2 -2
  394. package/dist/collection/components/toast/test/a11y/toast.e2e.js +24 -89
  395. package/dist/collection/components/toast/toast.ios.css +55 -8
  396. package/dist/collection/components/toast/toast.js +3 -9
  397. package/dist/collection/components/toast/toast.md.css +57 -10
  398. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +2 -8
  399. package/dist/collection/components/toggle/test/legacy/basic/toggle.e2e.js +83 -0
  400. package/dist/collection/components/toggle/test/legacy/enable-on-off-labels/toggle.e2e.js +37 -0
  401. package/dist/collection/components/toggle/test/legacy/sizes/power-outline.svg +1 -0
  402. package/dist/collection/components/toggle/test/legacy/sizes/toggle.e2e.js +14 -0
  403. package/dist/collection/components/toggle/toggle.ios.css +90 -11
  404. package/dist/collection/components/toggle/toggle.js +101 -5
  405. package/dist/collection/components/toggle/toggle.md.css +91 -6
  406. package/dist/collection/components/toolbar/toolbar.ios.css +2 -2
  407. package/dist/collection/components/toolbar/toolbar.js +2 -2
  408. package/dist/collection/components/toolbar/toolbar.md.css +1 -1
  409. package/dist/collection/css/test/a11y/typography.e2e.js +0 -18
  410. package/dist/collection/utils/gesture/button-active.js +1 -1
  411. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  412. package/dist/collection/utils/native/status-bar.js +11 -0
  413. package/dist/collection/utils/overlays.js +4 -11
  414. package/dist/collection/utils/test/aria.spec.js +1 -2
  415. package/dist/collection/utils/test/playwright/generator.js +0 -1
  416. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  417. package/dist/docs.json +305 -548
  418. package/dist/esm/{button-active-35dc239f.js → button-active-4bee452c.js} +2 -2
  419. package/dist/esm/{data-691286f1.js → data-7f65d952.js} +24 -39
  420. package/dist/esm/{gesture-controller-314a54f6.js → gesture-controller-1bf57181.js} +1 -1
  421. package/dist/esm/{index-39782642.js → index-2cf77112.js} +2 -2
  422. package/dist/esm/index.js +3 -3
  423. package/dist/esm/ion-accordion_2.entry.js +1 -1
  424. package/dist/esm/ion-action-sheet.entry.js +8 -8
  425. package/dist/esm/ion-alert.entry.js +6 -6
  426. package/dist/esm/ion-app_8.entry.js +18 -17
  427. package/dist/esm/ion-avatar_3.entry.js +3 -3
  428. package/dist/esm/ion-back-button.entry.js +1 -1
  429. package/dist/esm/ion-backdrop.entry.js +13 -1
  430. package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
  431. package/dist/esm/ion-button_2.entry.js +2 -2
  432. package/dist/esm/ion-card_5.entry.js +5 -5
  433. package/dist/esm/ion-checkbox.entry.js +2 -2
  434. package/dist/esm/ion-col_3.entry.js +3 -3
  435. package/dist/esm/ion-datetime-button.entry.js +15 -14
  436. package/dist/esm/ion-datetime_3.entry.js +173 -54
  437. package/dist/esm/ion-fab_3.entry.js +9 -9
  438. package/dist/esm/ion-img.entry.js +1 -1
  439. package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
  440. package/dist/esm/ion-input.entry.js +88 -8
  441. package/dist/esm/ion-item-option_3.entry.js +9 -9
  442. package/dist/esm/ion-item_8.entry.js +22 -22
  443. package/dist/esm/ion-loading.entry.js +5 -6
  444. package/dist/esm/ion-menu_3.entry.js +26 -31
  445. package/dist/esm/ion-modal.entry.js +28 -11
  446. package/dist/esm/ion-nav_2.entry.js +5 -8
  447. package/dist/esm/{ion-picker-column.entry.js → ion-picker-column-internal.entry.js} +89 -105
  448. package/dist/esm/{ion-picker.entry.js → ion-picker-internal.entry.js} +23 -30
  449. package/dist/esm/ion-popover.entry.js +4 -5
  450. package/dist/esm/ion-progress-bar.entry.js +3 -6
  451. package/dist/esm/ion-radio_2.entry.js +77 -8
  452. package/dist/esm/ion-range.entry.js +3 -3
  453. package/dist/esm/ion-refresher_2.entry.js +7 -7
  454. package/dist/esm/ion-reorder_2.entry.js +3 -3
  455. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  456. package/dist/esm/ion-route_4.entry.js +3 -3
  457. package/dist/esm/ion-searchbar.entry.js +6 -6
  458. package/dist/esm/ion-segment_2.entry.js +8 -8
  459. package/dist/esm/ion-select_3.entry.js +162 -71
  460. package/dist/esm/ion-spinner.entry.js +1 -1
  461. package/dist/esm/ion-split-pane.entry.js +16 -26
  462. package/dist/esm/ion-tab-bar_2.entry.js +8 -8
  463. package/dist/esm/ion-tab_2.entry.js +3 -3
  464. package/dist/esm/ion-text.entry.js +2 -2
  465. package/dist/esm/ion-textarea.entry.js +68 -8
  466. package/dist/esm/ion-toast.entry.js +9 -15
  467. package/dist/esm/ion-toggle.entry.js +64 -8
  468. package/dist/esm/ionic.js +1 -1
  469. package/dist/esm/loader.js +1 -1
  470. package/dist/esm/{overlays-2d8629c6.js → overlays-33ae3ea0.js} +4 -11
  471. package/dist/esm/{swipe-back-7f7620ca.js → swipe-back-c06602f2.js} +2 -2
  472. package/dist/esm-es5/button-active-4bee452c.js +4 -0
  473. package/dist/esm-es5/data-7f65d952.js +4 -0
  474. package/dist/esm-es5/{gesture-controller-314a54f6.js → gesture-controller-1bf57181.js} +1 -1
  475. package/dist/esm-es5/{index-39782642.js → index-2cf77112.js} +1 -1
  476. package/dist/esm-es5/index.js +1 -1
  477. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  478. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  479. package/dist/esm-es5/ion-alert.entry.js +1 -1
  480. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  481. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  482. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  483. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  484. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  485. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  486. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  487. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  488. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  489. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  490. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  491. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  492. package/dist/esm-es5/ion-img.entry.js +1 -1
  493. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  494. package/dist/esm-es5/ion-input.entry.js +1 -1
  495. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  496. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  497. package/dist/esm-es5/ion-loading.entry.js +1 -1
  498. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  499. package/dist/esm-es5/ion-modal.entry.js +1 -1
  500. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  501. package/dist/esm-es5/ion-picker-column-internal.entry.js +4 -0
  502. package/dist/esm-es5/ion-picker-internal.entry.js +4 -0
  503. package/dist/esm-es5/ion-popover.entry.js +1 -1
  504. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  505. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  506. package/dist/esm-es5/ion-range.entry.js +1 -1
  507. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  508. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  509. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  510. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  511. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  512. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  513. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  514. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  515. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  516. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  517. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  518. package/dist/esm-es5/ion-text.entry.js +1 -1
  519. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  520. package/dist/esm-es5/ion-toast.entry.js +1 -1
  521. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  522. package/dist/esm-es5/ionic.js +1 -1
  523. package/dist/esm-es5/loader.js +1 -1
  524. package/dist/esm-es5/overlays-33ae3ea0.js +4 -0
  525. package/dist/esm-es5/{swipe-back-7f7620ca.js → swipe-back-c06602f2.js} +1 -1
  526. package/dist/html.html-data.json +29 -152
  527. package/dist/ionic/index.esm.js +1 -1
  528. package/dist/ionic/ionic.esm.js +1 -1
  529. package/dist/ionic/p-016976a7.system.entry.js +4 -0
  530. package/dist/ionic/p-078fd095.system.entry.js +4 -0
  531. package/dist/ionic/p-0ae25399.system.entry.js +4 -0
  532. package/dist/ionic/p-0b955124.system.js +1 -1
  533. package/dist/ionic/{p-364fd2ae.system.entry.js → p-0e29919c.system.entry.js} +1 -1
  534. package/dist/ionic/{p-dd79d499.system.entry.js → p-0eef8b34.system.entry.js} +1 -1
  535. package/dist/ionic/p-0fd295ef.system.entry.js +4 -0
  536. package/dist/ionic/p-108f730a.entry.js +4 -0
  537. package/dist/ionic/{p-590ecff0.entry.js → p-1c531ca2.entry.js} +1 -1
  538. package/dist/ionic/p-1f583f73.entry.js +4 -0
  539. package/dist/ionic/{p-b853d98f.system.entry.js → p-1f6cdf2c.system.entry.js} +1 -1
  540. package/dist/ionic/{p-c2938ad7.system.entry.js → p-20a6513f.system.entry.js} +2 -2
  541. package/dist/ionic/p-20f7a91e.system.entry.js +4 -0
  542. package/dist/ionic/p-28a92c20.system.entry.js +4 -0
  543. package/dist/ionic/p-2da0a76c.entry.js +4 -0
  544. package/dist/ionic/{p-b46bdb73.system.entry.js → p-2f66e177.system.entry.js} +1 -1
  545. package/dist/ionic/p-30c9e049.system.entry.js +4 -0
  546. package/dist/ionic/{p-3e1e14d9.system.js → p-31b2326e.system.js} +1 -1
  547. package/dist/ionic/p-333f06ed.entry.js +4 -0
  548. package/dist/ionic/p-389ff4d2.system.entry.js +4 -0
  549. package/dist/ionic/p-396c1a55.entry.js +4 -0
  550. package/dist/ionic/p-3a54c070.system.entry.js +4 -0
  551. package/dist/ionic/{p-02bf61be.entry.js → p-3a98f8db.entry.js} +1 -1
  552. package/dist/ionic/p-3cdbaa49.entry.js +4 -0
  553. package/dist/ionic/{p-6028d77a.entry.js → p-400574bf.entry.js} +1 -1
  554. package/dist/ionic/p-48af4316.system.entry.js +4 -0
  555. package/dist/ionic/p-4c256bc2.system.entry.js +4 -0
  556. package/dist/ionic/p-4dfc27eb.system.entry.js +4 -0
  557. package/dist/ionic/p-51f08a9f.entry.js +4 -0
  558. package/dist/ionic/p-56da74d7.system.entry.js +4 -0
  559. package/dist/ionic/p-5b6aa59a.entry.js +4 -0
  560. package/dist/ionic/p-5e60dbc8.entry.js +4 -0
  561. package/dist/ionic/p-5eea8b4c.system.js +4 -0
  562. package/dist/ionic/p-5f456b3c.system.entry.js +4 -0
  563. package/dist/ionic/p-61c0f8bf.system.entry.js +4 -0
  564. package/dist/ionic/p-680f96e8.system.entry.js +4 -0
  565. package/dist/ionic/p-6a34980d.entry.js +4 -0
  566. package/dist/ionic/p-6b02edd6.js +4 -0
  567. package/dist/ionic/{p-156299c1.system.entry.js → p-6f38d0c5.system.entry.js} +1 -1
  568. package/dist/ionic/p-70026e8f.system.entry.js +4 -0
  569. package/dist/ionic/p-776b144b.system.js +4 -0
  570. package/dist/ionic/p-78edc0cd.system.entry.js +4 -0
  571. package/dist/ionic/{p-ffee8d11.system.entry.js → p-7c32fb95.system.entry.js} +1 -1
  572. package/dist/ionic/p-7dc7514a.entry.js +4 -0
  573. package/dist/ionic/p-84513dfb.entry.js +4 -0
  574. package/dist/ionic/p-84879f61.system.entry.js +4 -0
  575. package/dist/ionic/p-8569d759.system.entry.js +4 -0
  576. package/dist/ionic/{p-68211d11.entry.js → p-8a671f16.entry.js} +1 -1
  577. package/dist/ionic/p-8ebd9951.entry.js +4 -0
  578. package/dist/ionic/{p-3db5b566.system.entry.js → p-92c2178e.system.entry.js} +1 -1
  579. package/dist/ionic/{p-9ff0b9d7.entry.js → p-97eca294.entry.js} +1 -1
  580. package/dist/ionic/{p-a69ca607.system.entry.js → p-9a6ab80a.system.entry.js} +1 -1
  581. package/dist/ionic/p-9beb5039.system.js +4 -0
  582. package/dist/ionic/p-9f5b40c0.system.entry.js +4 -0
  583. package/dist/ionic/p-9f6397ce.entry.js +4 -0
  584. package/dist/ionic/p-a02b2d75.entry.js +4 -0
  585. package/dist/ionic/{p-f83192d4.entry.js → p-a051c371.entry.js} +1 -1
  586. package/dist/ionic/p-a19f5ae1.entry.js +4 -0
  587. package/dist/ionic/p-a1bfaa5c.system.entry.js +4 -0
  588. package/dist/ionic/{p-77cf63b4.entry.js → p-a2ad515b.entry.js} +1 -1
  589. package/dist/ionic/{p-1d1ef635.entry.js → p-aa7ae6aa.entry.js} +1 -1
  590. package/dist/ionic/p-aaa4ffb3.system.entry.js +4 -0
  591. package/dist/ionic/{p-e1386ddc.system.entry.js → p-ac20160b.system.entry.js} +1 -1
  592. package/dist/ionic/p-ac979ebf.system.entry.js +4 -0
  593. package/dist/ionic/p-b37e4ee5.system.entry.js +4 -0
  594. package/dist/ionic/p-b498de69.entry.js +4 -0
  595. package/dist/ionic/p-b96699d3.system.entry.js +4 -0
  596. package/dist/ionic/{p-9b97df10.js → p-bb3615f7.js} +1 -1
  597. package/dist/ionic/{p-6f5c2ebd.system.entry.js → p-bc2c03d7.system.entry.js} +1 -1
  598. package/dist/ionic/p-c3790581.entry.js +4 -0
  599. package/dist/ionic/{p-20d469d0.system.js → p-c7c8429a.system.js} +1 -1
  600. package/dist/ionic/p-c851b204.system.entry.js +4 -0
  601. package/dist/ionic/p-ccd419ae.entry.js +4 -0
  602. package/dist/ionic/p-cd055d60.system.entry.js +4 -0
  603. package/dist/ionic/{p-0d25b742.js → p-cdc277a6.js} +1 -1
  604. package/dist/ionic/{p-e45248be.entry.js → p-ce2eabd5.entry.js} +1 -1
  605. package/dist/ionic/p-d7260b87.entry.js +4 -0
  606. package/dist/ionic/p-d74ca358.entry.js +4 -0
  607. package/dist/ionic/{p-aeb2bfc4.entry.js → p-d8607ede.entry.js} +1 -1
  608. package/dist/ionic/{p-78aade1a.entry.js → p-d95c8e90.entry.js} +1 -1
  609. package/dist/ionic/p-dbb4c012.entry.js +4 -0
  610. package/dist/ionic/p-dce9bc53.entry.js +4 -0
  611. package/dist/ionic/{p-416b7011.system.entry.js → p-df281664.system.entry.js} +2 -2
  612. package/dist/ionic/p-df468a8f.entry.js +4 -0
  613. package/dist/ionic/p-e1cc4ad7.entry.js +4 -0
  614. package/dist/ionic/p-e68980ff.system.entry.js +4 -0
  615. package/dist/ionic/p-e6aaff14.system.entry.js +4 -0
  616. package/dist/ionic/p-e81d133a.js +4 -0
  617. package/dist/ionic/p-ea8fbf09.entry.js +4 -0
  618. package/dist/ionic/p-ed582803.entry.js +4 -0
  619. package/dist/ionic/{p-48346946.system.entry.js → p-eda7a1db.system.entry.js} +1 -1
  620. package/dist/ionic/{p-d9310104.entry.js → p-efe9180b.entry.js} +1 -1
  621. package/dist/ionic/p-f1ad3b3d.entry.js +4 -0
  622. package/dist/ionic/p-f1cc690e.entry.js +4 -0
  623. package/dist/ionic/p-f20d9ef9.system.js +4 -0
  624. package/dist/ionic/p-f46775e4.entry.js +4 -0
  625. package/dist/ionic/{p-8ededb41.js → p-f5d2dc9b.js} +1 -1
  626. package/dist/ionic/p-f7b43141.system.entry.js +4 -0
  627. package/dist/ionic/p-f88dd429.entry.js +4 -0
  628. package/dist/ionic/p-f89ae259.js +4 -0
  629. package/dist/ionic/p-f97b9cdd.system.entry.js +4 -0
  630. package/dist/ionic/p-fd3f475f.entry.js +4 -0
  631. package/dist/ionic/{p-a0da38e6.system.js → p-fd9a9db3.system.js} +1 -1
  632. package/dist/ionic/{p-73fef0c6.entry.js → p-fe92da17.entry.js} +1 -1
  633. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +0 -8
  634. package/dist/types/components/backdrop/backdrop.d.ts +3 -0
  635. package/dist/types/components/datetime/datetime-interface.d.ts +10 -0
  636. package/dist/types/components/datetime/datetime.d.ts +10 -1
  637. package/dist/types/components/datetime/utils/data.d.ts +7 -11
  638. package/dist/types/components/datetime/utils/format.d.ts +7 -13
  639. package/dist/types/components/datetime/utils/warn.d.ts +8 -0
  640. package/dist/types/components/input/input.d.ts +26 -0
  641. package/dist/types/components/menu/menu.d.ts +2 -12
  642. package/dist/types/components/modal/utils.d.ts +4 -0
  643. package/dist/types/components/nav/nav.d.ts +1 -4
  644. package/dist/types/components/picker/picker.d.ts +129 -75
  645. package/dist/types/components/picker-column/picker-column.d.ts +39 -99
  646. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +5 -0
  647. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +102 -0
  648. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +8 -0
  649. package/dist/types/components/picker-internal/picker-internal.d.ts +102 -0
  650. package/dist/types/components/radio/radio.d.ts +24 -1
  651. package/dist/types/components/select/select.d.ts +15 -0
  652. package/dist/types/components/split-pane/split-pane.d.ts +2 -14
  653. package/dist/types/components/textarea/textarea.d.ts +17 -0
  654. package/dist/types/components/toast/toast-interface.d.ts +4 -0
  655. package/dist/types/components/toggle/toggle.d.ts +21 -1
  656. package/dist/types/components.d.ts +186 -161
  657. package/dist/types/interface.d.ts +1 -1
  658. package/dist/types/utils/config.d.ts +2 -2
  659. package/dist/types/utils/gesture/gesture-controller.d.ts +0 -1
  660. package/dist/types/utils/native/status-bar.d.ts +1 -0
  661. package/dist/types/utils/overlays.d.ts +2 -5
  662. package/dist/types/utils/test/playwright/generator.d.ts +1 -3
  663. package/hydrate/index.js +2045 -1712
  664. package/package.json +1 -1
  665. package/components/ion-picker-column-option.d.ts +0 -11
  666. package/components/ion-picker-column-option.js +0 -9
  667. package/components/ion-picker-legacy-column.d.ts +0 -11
  668. package/components/ion-picker-legacy-column.js +0 -9
  669. package/components/ion-picker-legacy.js +0 -311
  670. package/components/picker-column-option.js +0 -124
  671. package/components/picker-column2.js +0 -381
  672. package/css/themes/dark.always.css +0 -160
  673. package/css/themes/dark.always.css.map +0 -1
  674. package/css/themes/dark.class.css +0 -160
  675. package/css/themes/dark.class.css.map +0 -1
  676. package/css/themes/dark.css +0 -3
  677. package/css/themes/dark.css.map +0 -1
  678. package/css/themes/dark.system.css +0 -162
  679. package/css/themes/dark.system.css.map +0 -1
  680. package/css/themes/high-contrast-dark.always.css +0 -180
  681. package/css/themes/high-contrast-dark.always.css.map +0 -1
  682. package/css/themes/high-contrast-dark.class.css +0 -180
  683. package/css/themes/high-contrast-dark.class.css.map +0 -1
  684. package/css/themes/high-contrast-dark.css +0 -3
  685. package/css/themes/high-contrast-dark.css.map +0 -1
  686. package/css/themes/high-contrast-dark.system.css +0 -182
  687. package/css/themes/high-contrast-dark.system.css.map +0 -1
  688. package/css/themes/high-contrast.always.css +0 -101
  689. package/css/themes/high-contrast.always.css.map +0 -1
  690. package/css/themes/high-contrast.class.css +0 -101
  691. package/css/themes/high-contrast.class.css.map +0 -1
  692. package/css/themes/high-contrast.css +0 -3
  693. package/css/themes/high-contrast.css.map +0 -1
  694. package/css/themes/high-contrast.system.css +0 -103
  695. package/css/themes/high-contrast.system.css.map +0 -1
  696. package/dist/cjs/ion-picker-column-option.cjs.entry.js +0 -106
  697. package/dist/collection/components/datetime-button/datetime-button.ios.css +0 -107
  698. package/dist/collection/components/picker/test/custom/picker.e2e.js +0 -85
  699. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +0 -91
  700. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +0 -39
  701. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -87
  702. package/dist/collection/components/picker-column-option/picker-column-option.js +0 -173
  703. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +0 -18
  704. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +0 -37
  705. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +0 -29
  706. package/dist/collection/components/picker-legacy/picker.js +0 -811
  707. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +0 -25
  708. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -419
  709. package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +0 -24
  710. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +0 -26
  711. package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +0 -23
  712. package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +0 -32
  713. package/dist/collection/components/split-pane/test/wrapped-menu/split-pane.e2e.js +0 -41
  714. package/dist/collection/themes/test/colors/theme.e2e.js +0 -170
  715. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +0 -65
  716. package/dist/esm/ion-picker-column-option.entry.js +0 -102
  717. package/dist/esm-es5/button-active-35dc239f.js +0 -4
  718. package/dist/esm-es5/data-691286f1.js +0 -4
  719. package/dist/esm-es5/ion-picker-column-option.entry.js +0 -4
  720. package/dist/esm-es5/ion-picker-column.entry.js +0 -4
  721. package/dist/esm-es5/ion-picker.entry.js +0 -4
  722. package/dist/esm-es5/overlays-2d8629c6.js +0 -4
  723. package/dist/ionic/p-0a90cc4d.system.entry.js +0 -4
  724. package/dist/ionic/p-0bc978ee.entry.js +0 -4
  725. package/dist/ionic/p-115d351a.entry.js +0 -4
  726. package/dist/ionic/p-158e5d3f.entry.js +0 -4
  727. package/dist/ionic/p-19385313.entry.js +0 -4
  728. package/dist/ionic/p-1b8684c2.system.entry.js +0 -4
  729. package/dist/ionic/p-1c6bc252.system.entry.js +0 -4
  730. package/dist/ionic/p-1dc24d13.system.entry.js +0 -4
  731. package/dist/ionic/p-2203ea50.system.entry.js +0 -4
  732. package/dist/ionic/p-229d211f.entry.js +0 -4
  733. package/dist/ionic/p-23771339.entry.js +0 -4
  734. package/dist/ionic/p-2581c0b4.system.entry.js +0 -4
  735. package/dist/ionic/p-2aa9dbb1.entry.js +0 -4
  736. package/dist/ionic/p-2b17eb06.entry.js +0 -4
  737. package/dist/ionic/p-2f6b3478.system.entry.js +0 -4
  738. package/dist/ionic/p-2fbf97f4.system.entry.js +0 -4
  739. package/dist/ionic/p-3348d9b6.entry.js +0 -4
  740. package/dist/ionic/p-336ef060.entry.js +0 -4
  741. package/dist/ionic/p-41cd4e22.system.entry.js +0 -4
  742. package/dist/ionic/p-44ba1907.system.entry.js +0 -4
  743. package/dist/ionic/p-46e78ed6.entry.js +0 -4
  744. package/dist/ionic/p-49cbf8ca.entry.js +0 -4
  745. package/dist/ionic/p-50b79c48.entry.js +0 -4
  746. package/dist/ionic/p-5289aade.js +0 -4
  747. package/dist/ionic/p-54908979.entry.js +0 -4
  748. package/dist/ionic/p-5642acf7.system.entry.js +0 -4
  749. package/dist/ionic/p-5f739516.system.js +0 -4
  750. package/dist/ionic/p-66e6860f.system.js +0 -4
  751. package/dist/ionic/p-6ac84217.entry.js +0 -4
  752. package/dist/ionic/p-6b1b24df.entry.js +0 -4
  753. package/dist/ionic/p-6c48dd91.system.js +0 -4
  754. package/dist/ionic/p-6e7f5166.entry.js +0 -4
  755. package/dist/ionic/p-6e8d0527.system.entry.js +0 -4
  756. package/dist/ionic/p-6ea89932.js +0 -4
  757. package/dist/ionic/p-743030ee.entry.js +0 -4
  758. package/dist/ionic/p-7d6c9121.entry.js +0 -4
  759. package/dist/ionic/p-7e230af6.entry.js +0 -4
  760. package/dist/ionic/p-7efa91b5.entry.js +0 -4
  761. package/dist/ionic/p-7f90cee1.entry.js +0 -4
  762. package/dist/ionic/p-814129a1.system.entry.js +0 -4
  763. package/dist/ionic/p-814aa0b4.system.entry.js +0 -4
  764. package/dist/ionic/p-892757c2.system.entry.js +0 -4
  765. package/dist/ionic/p-8aecc954.system.entry.js +0 -4
  766. package/dist/ionic/p-90149377.system.entry.js +0 -4
  767. package/dist/ionic/p-90fcbf72.js +0 -4
  768. package/dist/ionic/p-95861049.entry.js +0 -4
  769. package/dist/ionic/p-9954f160.entry.js +0 -4
  770. package/dist/ionic/p-9a71fceb.system.entry.js +0 -4
  771. package/dist/ionic/p-9c69a78d.system.entry.js +0 -4
  772. package/dist/ionic/p-9d10df75.system.entry.js +0 -4
  773. package/dist/ionic/p-a53d820e.system.entry.js +0 -4
  774. package/dist/ionic/p-a6a15217.system.entry.js +0 -4
  775. package/dist/ionic/p-ab722722.system.entry.js +0 -4
  776. package/dist/ionic/p-ab782835.system.entry.js +0 -4
  777. package/dist/ionic/p-aca86637.system.entry.js +0 -4
  778. package/dist/ionic/p-b0ba9ea5.entry.js +0 -4
  779. package/dist/ionic/p-b17f058b.system.js +0 -4
  780. package/dist/ionic/p-b8e465da.system.entry.js +0 -4
  781. package/dist/ionic/p-ba7347c4.entry.js +0 -4
  782. package/dist/ionic/p-c8f93816.system.entry.js +0 -4
  783. package/dist/ionic/p-c994c528.system.entry.js +0 -4
  784. package/dist/ionic/p-ce1cf1e0.system.entry.js +0 -4
  785. package/dist/ionic/p-d2670dd3.entry.js +0 -4
  786. package/dist/ionic/p-dd2392f1.entry.js +0 -4
  787. package/dist/ionic/p-e3c13a24.system.entry.js +0 -4
  788. package/dist/ionic/p-e4162cae.entry.js +0 -4
  789. package/dist/ionic/p-e88ae7f0.system.entry.js +0 -4
  790. package/dist/ionic/p-ec4e0057.entry.js +0 -4
  791. package/dist/ionic/p-ef065e0d.system.entry.js +0 -4
  792. package/dist/ionic/p-f3c1bbcb.entry.js +0 -4
  793. package/dist/ionic/p-f7d618b7.entry.js +0 -4
  794. package/dist/ionic/p-faea6b57.entry.js +0 -4
  795. package/dist/ionic/p-fe990e42.system.entry.js +0 -4
  796. package/dist/types/components/picker/picker-interfaces.d.ts +0 -8
  797. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +0 -4
  798. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -66
  799. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  800. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  801. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.enter.js +0 -0
  802. /package/dist/collection/components/{picker-legacy → picker}/animations/ios.leave.js +0 -0
  803. /package/dist/collection/components/picker/{picker-interfaces.js → picker-interface.js} +0 -0
  804. /package/dist/collection/components/{picker-legacy-column → picker-column}/test/test.utils.js +0 -0
  805. /package/dist/collection/components/{picker-column/picker-column-interfaces.js → picker-column-internal/picker-column-internal-interfaces.js} +0 -0
  806. /package/dist/collection/components/{picker-legacy/picker-interface.js → picker-internal/picker-internal-interfaces.js} +0 -0
  807. /package/dist/types/components/{picker-legacy → picker}/animations/ios.enter.d.ts +0 -0
  808. /package/dist/types/components/{picker-legacy → picker}/animations/ios.leave.d.ts +0 -0
  809. /package/dist/types/components/{picker-legacy → picker}/picker-interface.d.ts +0 -0
  810. /package/dist/types/components/{picker-legacy-column → picker-column}/test/test.utils.d.ts +0 -0
@@ -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.locator('.datetime-ready').waitFor();
63
- const dayValues = page.locator('ion-datetime .day-column ion-picker-column-option');
63
+ const dayValues = page.locator('ion-datetime .day-column .picker-item[data-value]');
64
64
  expect(await dayValues.count()).toEqual(27);
65
65
  });
66
66
  test('should respect the max bounds', async ({ page }) => {
@@ -68,7 +68,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
68
68
  <ion-datetime presentation="date" prefer-wheel="true" min="2019-05-05" max="2023-10-01" value="2023-10-01"></ion-datetime>
69
69
  `, config);
70
70
  await page.locator('.datetime-ready').waitFor();
71
- const dayValues = page.locator('ion-datetime .day-column ion-picker-column-option');
71
+ const dayValues = page.locator('ion-datetime .day-column .picker-item[data-value]');
72
72
  expect(await dayValues.count()).toEqual(1);
73
73
  });
74
74
  test('should respect isDateEnabled preference', async ({ page }) => {
@@ -86,9 +86,9 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
86
86
  </script>
87
87
  `, config);
88
88
  await page.locator('.datetime-ready').waitFor();
89
- const disabledMonths = page.locator('.month-column ion-picker-column-option.option-disabled');
90
- const disabledYears = page.locator('.year-column ion-picker-column-option.option-disabled');
91
- const disabledDays = page.locator('.day-column ion-picker-column-option.option-disabled');
89
+ const disabledMonths = page.locator('.month-column .picker-item[disabled]');
90
+ const disabledYears = page.locator('.year-column .picker-item[disabled]');
91
+ const disabledDays = page.locator('.day-column .picker-item[disabled]');
92
92
  expect(await disabledMonths.count()).toBe(0);
93
93
  expect(await disabledYears.count()).toBe(0);
94
94
  expect(await disabledDays.count()).toBe(15);
@@ -105,9 +105,9 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
105
105
  ></ion-datetime>
106
106
  `, config);
107
107
  await page.locator('.datetime-ready').waitFor();
108
- const monthValues = page.locator('.month-column ion-picker-column-option');
109
- const yearValues = page.locator('.year-column ion-picker-column-option');
110
- const dayValues = page.locator('.day-column ion-picker-column-option');
108
+ const monthValues = page.locator('.month-column .picker-item:not(.picker-item-empty)');
109
+ const yearValues = page.locator('.year-column .picker-item:not(.picker-item-empty)');
110
+ const dayValues = page.locator('.day-column .picker-item:not(.picker-item-empty)');
111
111
  expect(await monthValues.count()).toBe(2);
112
112
  expect(await yearValues.count()).toBe(3);
113
113
  expect(await dayValues.count()).toBe(5);
@@ -134,7 +134,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
134
134
  `, config);
135
135
  await page.locator('.datetime-ready').waitFor();
136
136
  const ionChange = await page.spyOnEvent('ionChange');
137
- const monthValues = page.locator('.month-column ion-picker-column-option');
137
+ const monthValues = page.locator('.month-column .picker-item:not(.picker-item-empty)');
138
138
  // Change month value
139
139
  await monthValues.nth(0).click();
140
140
  await ionChange.next();
@@ -161,7 +161,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
161
161
  `, config);
162
162
  await page.locator('.datetime-ready').waitFor();
163
163
  const ionChange = await page.spyOnEvent('ionChange');
164
- const dayValues = page.locator('.day-column ion-picker-column-option');
164
+ const dayValues = page.locator('.day-column .picker-item:not(.picker-item-empty)');
165
165
  // Change day value
166
166
  await dayValues.nth(0).click();
167
167
  await ionChange.next();
@@ -175,7 +175,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
175
175
  `, config);
176
176
  await page.locator('.datetime-ready').waitFor();
177
177
  const ionChange = await page.spyOnEvent('ionChange');
178
- const yearValues = page.locator('.year-column ion-picker-column-option');
178
+ const yearValues = page.locator('.year-column .picker-item:not(.picker-item-empty)');
179
179
  /**
180
180
  * Change year value
181
181
  * The 0th index is the current
@@ -192,9 +192,9 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
192
192
  const datetime = page.locator('ion-datetime');
193
193
  await datetime.evaluate((el) => (el.value = '2021-05-25T12:40:00.000Z'));
194
194
  await page.waitForChanges();
195
- const selectedMonth = datetime.locator('.month-column ion-picker-column-option.option-active');
196
- const selectedDay = datetime.locator('.day-column ion-picker-column-option.option-active');
197
- const selectedYear = datetime.locator('.year-column ion-picker-column-option.option-active');
195
+ const selectedMonth = datetime.locator('.month-column .picker-item-active');
196
+ const selectedDay = datetime.locator('.day-column .picker-item-active');
197
+ const selectedYear = datetime.locator('.year-column .picker-item-active');
198
198
  await expect(selectedMonth).toHaveText(/May/);
199
199
  await expect(selectedDay).toHaveText(/25/);
200
200
  await expect(selectedYear).toHaveText(/2021/);
@@ -213,8 +213,8 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
213
213
  ></ion-datetime>
214
214
  `, config);
215
215
  await page.locator('.datetime-ready').waitFor();
216
- const monthValues = page.locator('.month-column ion-picker-column-option');
217
- const dayValues = page.locator('.day-column ion-picker-column-option');
216
+ const monthValues = page.locator('.month-column .picker-item:not(.picker-item-empty)');
217
+ const dayValues = page.locator('.day-column .picker-item:not(.picker-item-empty)');
218
218
  await expect(monthValues).toHaveText(['1月', '2月', '3月']);
219
219
  await expect(dayValues).toHaveText(['1日', '2日', '3日']);
220
220
  });
@@ -228,7 +228,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
228
228
  ></ion-datetime>
229
229
  `, config);
230
230
  await page.locator('.datetime-ready').waitFor();
231
- const columns = page.locator('ion-picker-column');
231
+ const columns = page.locator('ion-picker-column-internal');
232
232
  await expect(columns.nth(0)).toHaveClass(/month-column/);
233
233
  await expect(columns.nth(1)).toHaveClass(/day-column/);
234
234
  await expect(columns.nth(2)).toHaveClass(/year-column/);
@@ -243,7 +243,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
243
243
  ></ion-datetime>
244
244
  `, config);
245
245
  await page.locator('.datetime-ready').waitFor();
246
- const columns = page.locator('ion-picker-column');
246
+ const columns = page.locator('ion-picker-column-internal');
247
247
  await expect(columns.nth(0)).toHaveClass(/day-column/);
248
248
  await expect(columns.nth(1)).toHaveClass(/month-column/);
249
249
  await expect(columns.nth(2)).toHaveClass(/year-column/);
@@ -256,7 +256,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
256
256
  <ion-datetime presentation="date-time" prefer-wheel="true" min="2019-05-05" value="2019-05-10T16:30:00"></ion-datetime>
257
257
  `, config);
258
258
  await page.locator('.datetime-ready').waitFor();
259
- const dayValues = page.locator('ion-datetime .date-column ion-picker-column-option');
259
+ const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
260
260
  expect(await dayValues.count()).toEqual(57);
261
261
  });
262
262
  test('should respect the max bounds', async ({ page }) => {
@@ -264,7 +264,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
264
264
  <ion-datetime presentation="date-time" prefer-wheel="true" max="2023-06-10" value="2023-06-05T16:30:00"></ion-datetime>
265
265
  `, config);
266
266
  await page.locator('.datetime-ready').waitFor();
267
- const dayValues = page.locator('ion-datetime .date-column ion-picker-column-option');
267
+ const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
268
268
  expect(await dayValues.count()).toEqual(41);
269
269
  });
270
270
  test('should respect isDateEnabled preference', async ({ page }) => {
@@ -282,7 +282,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
282
282
  </script>
283
283
  `, config);
284
284
  await page.locator('.datetime-ready').waitFor();
285
- const disabledDates = page.locator('.date-column ion-picker-column-option.option-disabled');
285
+ const disabledDates = page.locator('.date-column .picker-item[disabled]');
286
286
  expect(await disabledDates.count()).toBe(44);
287
287
  });
288
288
  test('should respect month, day, and year preferences', async ({ page }) => {
@@ -297,7 +297,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
297
297
  ></ion-datetime>
298
298
  `, config);
299
299
  await page.locator('.datetime-ready').waitFor();
300
- const dateValues = page.locator('.date-column ion-picker-column-option');
300
+ const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
301
301
  expect(await dateValues.count()).toBe(5);
302
302
  });
303
303
  test('should correctly localize the date data', async ({ page }) => {
@@ -312,7 +312,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
312
312
  ></ion-datetime>
313
313
  `, config);
314
314
  await page.locator('.datetime-ready').waitFor();
315
- const dateValues = page.locator('.date-column ion-picker-column-option');
315
+ const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
316
316
  await expect(dateValues).toHaveText(['2月1日(火)', '2月2日(水)', '2月3日(木)']);
317
317
  });
318
318
  test('should respect min and max bounds even across years', async ({ page }) => {
@@ -327,16 +327,15 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
327
327
  `, config);
328
328
  await page.locator('.datetime-ready').waitFor();
329
329
  const dateColumn = page.locator('.date-column');
330
- const dateColumnScrollEl = dateColumn.locator('.picker-opts');
331
- const dateValues = dateColumn.locator('ion-picker-column-option');
330
+ const dateValues = dateColumn.locator('.picker-item:not(.picker-item-empty)');
332
331
  expect(await dateValues.count()).toBe(90);
333
332
  /**
334
333
  * Select 1st item to change the dates rendered
335
334
  */
336
- await expect(dateValues.nth(0)).toHaveJSProperty('value', '2022-1-1');
337
- await dateColumnScrollEl.evaluate((el) => (el.scrollTop = 0));
335
+ await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2022-1-1');
336
+ await dateColumn.evaluate((el) => (el.scrollTop = 0));
338
337
  await page.waitForChanges();
339
- await expect(dateValues.nth(0)).toHaveJSProperty('value', '2021-12-1');
338
+ await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2021-12-1');
340
339
  });
341
340
  test('should keep sliding window if default window is within min and max constraints', async ({ page }) => {
342
341
  await page.setContent(`
@@ -349,7 +348,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
349
348
  ></ion-datetime>
350
349
  `, config);
351
350
  await page.locator('.datetime-ready').waitFor();
352
- const dayValues = page.locator('.date-column ion-picker-column-option');
351
+ const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
353
352
  expect(await dayValues.count()).toBe(92);
354
353
  });
355
354
  test('should narrow sliding window if default window is not within min and max constraints', async ({ page }) => {
@@ -363,7 +362,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
363
362
  ></ion-datetime>
364
363
  `, config);
365
364
  await page.locator('.datetime-ready').waitFor();
366
- const dayValues = page.locator('.date-column ion-picker-column-option');
365
+ const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
367
366
  expect(await dayValues.count()).toBe(15);
368
367
  });
369
368
  test('selecting date should update value when no value is set', async ({ page }) => {
@@ -375,7 +374,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
375
374
  `, config);
376
375
  await page.locator('.datetime-ready').waitFor();
377
376
  const ionChange = await page.spyOnEvent('ionChange');
378
- const dayValues = page.locator('.date-column ion-picker-column-option');
377
+ const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
379
378
  // Change day/month value
380
379
  await dayValues.nth(0).click();
381
380
  await ionChange.next();
@@ -387,7 +386,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
387
386
  <ion-datetime presentation="time-date" prefer-wheel="true" min="2019-05-05" value="2019-05-10T16:30:00"></ion-datetime>
388
387
  `, config);
389
388
  await page.locator('.datetime-ready').waitFor();
390
- const dayValues = page.locator('ion-datetime .date-column ion-picker-column-option');
389
+ const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
391
390
  expect(await dayValues.count()).toEqual(57);
392
391
  });
393
392
  test('should respect the max bounds', async ({ page }) => {
@@ -395,7 +394,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
395
394
  <ion-datetime presentation="time-date" prefer-wheel="true" max="2023-06-10" value="2023-06-05T16:30:00"></ion-datetime>
396
395
  `, config);
397
396
  await page.locator('.datetime-ready').waitFor();
398
- const dayValues = page.locator('ion-datetime .date-column ion-picker-column-option');
397
+ const dayValues = page.locator('ion-datetime .date-column .picker-item[data-value]');
399
398
  expect(await dayValues.count()).toEqual(41);
400
399
  });
401
400
  test('should respect isDateEnabled preference', async ({ page }) => {
@@ -413,7 +412,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
413
412
  </script>
414
413
  `, config);
415
414
  await page.locator('.datetime-ready').waitFor();
416
- const disabledDates = page.locator('.date-column ion-picker-column-option.option-disabled');
415
+ const disabledDates = page.locator('.date-column .picker-item[disabled]');
417
416
  expect(await disabledDates.count()).toBe(44);
418
417
  });
419
418
  test('should respect month, day, and year preferences', async ({ page }) => {
@@ -428,7 +427,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
428
427
  ></ion-datetime>
429
428
  `, config);
430
429
  await page.locator('.datetime-ready').waitFor();
431
- const dateValues = page.locator('.date-column ion-picker-column-option');
430
+ const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
432
431
  expect(await dateValues.count()).toBe(5);
433
432
  });
434
433
  test('should correctly localize the date data', async ({ page }) => {
@@ -443,7 +442,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
443
442
  ></ion-datetime>
444
443
  `, config);
445
444
  await page.locator('.datetime-ready').waitFor();
446
- const dateValues = page.locator('.date-column ion-picker-column-option');
445
+ const dateValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
447
446
  await expect(dateValues).toHaveText(['2月1日(火)', '2月2日(水)', '2月3日(木)']);
448
447
  });
449
448
  test('should respect min and max bounds even across years', async ({ page }) => {
@@ -458,16 +457,15 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
458
457
  `, config);
459
458
  await page.locator('.datetime-ready').waitFor();
460
459
  const dateColumn = page.locator('.date-column');
461
- const dateColumnScrollEl = dateColumn.locator('.picker-opts');
462
- const dateValues = dateColumn.locator('ion-picker-column-option');
460
+ const dateValues = dateColumn.locator('.picker-item:not(.picker-item-empty)');
463
461
  expect(await dateValues.count()).toBe(90);
464
462
  /**
465
463
  * Select 1st item to change the dates rendered
466
464
  */
467
- await expect(dateValues.nth(0)).toHaveJSProperty('value', '2022-1-1');
468
- await dateColumnScrollEl.evaluate((el) => (el.scrollTop = 0));
465
+ await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2022-1-1');
466
+ await dateColumn.evaluate((el) => (el.scrollTop = 0));
469
467
  await page.waitForChanges();
470
- await expect(dateValues.nth(0)).toHaveJSProperty('value', '2021-12-1');
468
+ await expect(dateValues.nth(0)).toHaveAttribute('data-value', '2021-12-1');
471
469
  });
472
470
  test('should keep sliding window if default window is within min and max constraints', async ({ page }) => {
473
471
  await page.setContent(`
@@ -480,7 +478,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
480
478
  ></ion-datetime>
481
479
  `, config);
482
480
  await page.locator('.datetime-ready').waitFor();
483
- const dayValues = page.locator('.date-column ion-picker-column-option');
481
+ const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
484
482
  expect(await dayValues.count()).toBe(92);
485
483
  });
486
484
  test('should narrow sliding window if default window is not within min and max constraints', async ({ page }) => {
@@ -494,7 +492,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config }) => {
494
492
  ></ion-datetime>
495
493
  `, config);
496
494
  await page.locator('.datetime-ready').waitFor();
497
- const dayValues = page.locator('.date-column ion-picker-column-option');
495
+ const dayValues = page.locator('.date-column .picker-item:not(.picker-item-empty)');
498
496
  expect(await dayValues.count()).toBe(15);
499
497
  });
500
498
  });
@@ -161,7 +161,7 @@ class TimePickerFixture {
161
161
  await this.page.waitForChanges();
162
162
  }
163
163
  async expectTime(hour, minute, ampm) {
164
- const pickerColumns = this.timePicker.locator('ion-picker-column');
164
+ const pickerColumns = this.timePicker.locator('ion-picker-column-internal');
165
165
  await expect(pickerColumns.nth(0)).toHaveJSProperty('value', hour);
166
166
  await expect(pickerColumns.nth(1)).toHaveJSProperty('value', minute);
167
167
  await expect(pickerColumns.nth(2)).toHaveJSProperty('value', ampm);
@@ -34,7 +34,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config, scree
34
34
  await expect(calendarMonthYear).toHaveText('February 2022');
35
35
  await calendarMonthYear.click();
36
36
  await page.waitForChanges();
37
- await page.locator('.month-column ion-picker-column-option').nth(2).click();
37
+ await page.locator('.month-column .picker-item[data-value="3"]').click();
38
38
  await page.waitForChanges();
39
39
  await expect(calendarMonthYear).toHaveText('March 2022');
40
40
  await expect(ionChange).not.toHaveReceivedEvent();
@@ -46,14 +46,14 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config, scree
46
46
  const tabKey = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';
47
47
  await page.locator('.datetime-ready').waitFor();
48
48
  const calendarMonthYear = page.locator('ion-datetime .calendar-month-year');
49
- const monthYearButton = page.locator('.calendar-month-year-toggle');
49
+ const monthYearButton = page.locator('.calendar-month-year ion-item');
50
50
  await expect(calendarMonthYear).toHaveText('February 2022');
51
51
  await page.keyboard.press(tabKey);
52
52
  await expect(monthYearButton).toBeFocused();
53
53
  await page.waitForChanges();
54
54
  await page.keyboard.press('Enter');
55
55
  await page.waitForChanges();
56
- const marchPickerItem = page.locator('.month-column ion-picker-column-option').nth(2);
56
+ const marchPickerItem = page.locator('.month-column .picker-item[data-value="3"]');
57
57
  await expect(marchPickerItem).toBeVisible();
58
58
  });
59
59
  test('should view next month via next button', async ({ page }) => {
@@ -75,7 +75,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config, scree
75
75
  `, config);
76
76
  const tabKey = browserName === 'webkit' ? 'Alt+Tab' : 'Tab';
77
77
  const datetime = page.locator('ion-datetime');
78
- const monthYearButton = page.locator('.calendar-month-year-toggle');
78
+ const monthYearButton = page.locator('.calendar-month-year ion-item');
79
79
  const prevButton = page.locator('.calendar-next-prev ion-button:nth-child(1)');
80
80
  const nextButton = page.locator('.calendar-next-prev ion-button:nth-child(2)');
81
81
  const calendarMonthYear = page.locator('ion-datetime .calendar-month-year');
@@ -22,28 +22,28 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
22
22
  await page.setContent(`
23
23
  <ion-datetime locale="en-US" presentation="month-year" month-values="5,6,10"></ion-datetime>
24
24
  `, config);
25
- const items = page.locator('.month-column ion-picker-column-option');
25
+ const items = page.locator('.month-column .picker-item:not(.picker-item-empty)');
26
26
  await expect(items).toHaveText(['May', 'June', 'October']);
27
27
  });
28
28
  test('should render correct years', async ({ page }) => {
29
29
  await page.setContent(`
30
30
  <ion-datetime locale="en-US" presentation="month-year" year-values="2022,2021,2020"></ion-datetime>
31
31
  `, config);
32
- const items = page.locator('.year-column ion-picker-column-option');
32
+ const items = page.locator('.year-column .picker-item:not(.picker-item-empty)');
33
33
  await expect(items).toHaveText(['2022', '2021', '2020']);
34
34
  });
35
35
  test('should render correct hours', async ({ page }) => {
36
36
  await page.setContent(`
37
37
  <ion-datetime locale="en-US" presentation="time" hour-values="1,2,3"></ion-datetime>
38
38
  `, config);
39
- const items = page.locator('ion-picker-column:first-of-type ion-picker-column-option');
39
+ const items = page.locator('ion-picker-column-internal:first-of-type .picker-item:not(.picker-item-empty)');
40
40
  await expect(items).toHaveText(['1', '2', '3']);
41
41
  });
42
42
  test('should render correct minutes', async ({ page }) => {
43
43
  await page.setContent(`
44
44
  <ion-datetime locale="en-US" presentation="time" minute-values="1,2,3"></ion-datetime>
45
45
  `, config);
46
- const items = page.locator('ion-picker-column:nth-of-type(2) ion-picker-column-option');
46
+ const items = page.locator('ion-picker-column-internal:nth-of-type(2) .picker-item:not(.picker-item-empty)');
47
47
  await expect(items).toHaveText(['01', '02', '03']);
48
48
  });
49
49
  test('should adjust default parts for allowed hour and minute values', async ({ page }) => {
@@ -69,22 +69,19 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
69
69
  </script>
70
70
  `, config);
71
71
  await page.locator('.datetime-ready').waitFor();
72
- const minuteColumn = page.locator('ion-picker-column').nth(1);
73
- const minuteItems = minuteColumn.locator('ion-picker-column-option');
72
+ const minuteItems = page.locator('ion-picker-column-internal:nth-of-type(2) .picker-item:not(.picker-item-empty)');
74
73
  await expect(minuteItems).toHaveText(['00', '15', '30', '45']);
75
- await expect(minuteColumn).toHaveJSProperty('value', 15);
76
- const hourColumn = page.locator('ion-picker-column').nth(0);
77
- const hourItems = hourColumn.locator('ion-picker-column-option');
74
+ await expect(minuteItems.nth(1)).toHaveClass(/picker-item-active/);
75
+ const hourItems = page.locator('ion-picker-column-internal:nth-of-type(1) .picker-item:not(.picker-item-empty)');
78
76
  await expect(hourItems).toHaveText(['2']);
79
- await expect(hourColumn).toHaveJSProperty('value', 2);
77
+ await expect(hourItems.nth(0)).toHaveClass(/picker-item-active/);
80
78
  /**
81
79
  * Since the allowed hour is 2AM, the time period
82
80
  * should switch from PM to AM.
83
81
  */
84
- const ampmColumn = page.locator('ion-picker-column').nth(2);
85
- const ampmItems = ampmColumn.locator('ion-picker-column-option');
82
+ const ampmItems = page.locator('ion-picker-column-internal:nth-of-type(3) .picker-item:not(.picker-item-empty)');
86
83
  await expect(ampmItems).toHaveText(['AM', 'PM']);
87
- await expect(ampmColumn).toHaveJSProperty('value', 'am');
84
+ await expect(ampmItems.nth(0)).toHaveClass(/picker-item-active/);
88
85
  });
89
86
  test('should adjust default parts month for allowed month values', async ({ page }) => {
90
87
  /**
@@ -109,9 +106,9 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
109
106
  </script>
110
107
  `, config);
111
108
  await page.locator('.datetime-ready').waitFor();
112
- const monthItems = page.locator('.month-column ion-picker-column-option');
109
+ const monthItems = page.locator('.month-column .picker-item:not(.picker-item-empty)');
113
110
  await expect(monthItems).toHaveText(['January']);
114
- await expect(monthItems.nth(0)).toHaveClass(/option-active/);
111
+ await expect(monthItems.nth(0)).toHaveClass(/picker-item-active/);
115
112
  });
116
113
  test('today date highlight should persist even if disallowed from dayValues', async ({ page }) => {
117
114
  /**
@@ -323,7 +323,7 @@ export const getMonthColumnData = (locale, refParts, minParts, maxParts, monthVa
323
323
  * @param minParts The minimum bound on the date that can be returned
324
324
  * @param maxParts The maximum bound on the date that can be returned
325
325
  * @param dayValues The allowed date values
326
- * @returns Date data to be used in ion-picker-column
326
+ * @returns Date data to be used in ion-picker-column-internal
327
327
  */
328
328
  export const getDayColumnData = (locale, refParts, minParts, maxParts, dayValues, formatOptions = {
329
329
  day: 'numeric',
@@ -9,7 +9,25 @@ const getFormattedDayPeriod = (dayPeriod) => {
9
9
  }
10
10
  return dayPeriod.toUpperCase();
11
11
  };
12
- export const getLocalizedTime = (locale, refParts, hourCycle) => {
12
+ /**
13
+ * Including time zone options may lead to the rendered text showing a
14
+ * different time from what was selected in the Datetime, which could cause
15
+ * confusion.
16
+ */
17
+ export const stripTimeZone = (formatOptions) => {
18
+ /**
19
+ * We do not want to display the time zone name
20
+ */
21
+ delete formatOptions.timeZoneName;
22
+ /**
23
+ * Setting the time zone to UTC ensures that the value shown is always the
24
+ * same as what was selected and safeguards against older Safari bugs with
25
+ * Intl.DateTimeFormat.
26
+ */
27
+ formatOptions.timeZone = 'UTC';
28
+ return formatOptions;
29
+ };
30
+ export const getLocalizedTime = (locale, refParts, hourCycle, formatOptions = { hour: 'numeric', minute: 'numeric' }) => {
13
31
  const timeParts = {
14
32
  hour: refParts.hour,
15
33
  minute: refParts.minute,
@@ -17,28 +35,13 @@ export const getLocalizedTime = (locale, refParts, hourCycle) => {
17
35
  if (timeParts.hour === undefined || timeParts.minute === undefined) {
18
36
  return 'Invalid Time';
19
37
  }
20
- return new Intl.DateTimeFormat(locale, {
21
- hour: 'numeric',
22
- minute: 'numeric',
23
- /**
24
- * Setting the timeZone to UTC prevents
25
- * new Intl.DatetimeFormat from subtracting
26
- * the user's current timezone offset
27
- * when formatting the time.
28
- */
29
- timeZone: 'UTC',
38
+ return new Intl.DateTimeFormat(locale, Object.assign(Object.assign({}, stripTimeZone(formatOptions)), {
30
39
  /**
31
40
  * We use hourCycle here instead of hour12 due to:
32
41
  * https://bugs.chromium.org/p/chromium/issues/detail?id=1347316&q=hour12&can=2
33
42
  */
34
- hourCycle,
35
- /**
36
- * Setting Z at the end indicates that this
37
- * date string is in the UTC time zone. This
38
- * prevents new Date from adding the time zone
39
- * offset when getting the ISO string.
40
- */
41
- }).format(new Date(convertDataToISO(Object.assign({
43
+ hourCycle
44
+ })).format(new Date(convertDataToISO(Object.assign({
42
45
  /**
43
46
  * JS uses a simplified ISO 8601 format which allows for
44
47
  * date-only formats and date-time formats, but not
@@ -125,14 +128,6 @@ export const generateDayAriaLabel = (locale, today, refParts) => {
125
128
  */
126
129
  return today ? `Today, ${labelString}` : labelString;
127
130
  };
128
- /**
129
- * Gets the day of the week, month, and day
130
- * Used for the header in MD mode.
131
- */
132
- export const getMonthAndDay = (locale, refParts) => {
133
- const date = getNormalizedDate(refParts);
134
- return new Intl.DateTimeFormat(locale, { weekday: 'short', month: 'short', day: 'numeric', timeZone: 'UTC' }).format(date);
135
- };
136
131
  /**
137
132
  * Given a locale and a date object,
138
133
  * return a formatted string that includes
@@ -143,15 +138,6 @@ export const getMonthAndYear = (locale, refParts) => {
143
138
  const date = getNormalizedDate(refParts);
144
139
  return new Intl.DateTimeFormat(locale, { month: 'long', year: 'numeric', timeZone: 'UTC' }).format(date);
145
140
  };
146
- /**
147
- * Given a locale and a date object,
148
- * return a formatted string that includes
149
- * the short month, numeric day, and full year.
150
- * Example: Apr 22, 2021
151
- */
152
- export const getMonthDayAndYear = (locale, refParts) => {
153
- return getLocalizedDateTime(locale, refParts, { month: 'short', day: 'numeric', year: 'numeric' });
154
- };
155
141
  /**
156
142
  * Given a locale and a date object,
157
143
  * return a formatted string that includes
@@ -201,7 +187,7 @@ export const getNormalizedDate = (refParts) => {
201
187
  */
202
188
  export const getLocalizedDateTime = (locale, refParts, options) => {
203
189
  const date = getNormalizedDate(refParts);
204
- return getDateTimeFormat(locale, options).format(date);
190
+ return getDateTimeFormat(locale, stripTimeZone(options)).format(date);
205
191
  };
206
192
  /**
207
193
  * Given a locale, DatetimeParts, and options
@@ -0,0 +1,45 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import { printIonWarning } from "../../../utils/logging/index";
5
+ /**
6
+ * If a time zone is provided in the format options, the rendered text could
7
+ * differ from what was selected in the Datetime, which could cause
8
+ * confusion.
9
+ */
10
+ export const warnIfTimeZoneProvided = (formatOptions) => {
11
+ var _a, _b, _c, _d;
12
+ if (((_a = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.date) === null || _a === void 0 ? void 0 : _a.timeZone) ||
13
+ ((_b = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.date) === null || _b === void 0 ? void 0 : _b.timeZoneName) ||
14
+ ((_c = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time) === null || _c === void 0 ? void 0 : _c.timeZone) ||
15
+ ((_d = formatOptions === null || formatOptions === void 0 ? void 0 : formatOptions.time) === null || _d === void 0 ? void 0 : _d.timeZoneName)) {
16
+ printIonWarning('Datetime: "timeZone" and "timeZoneName" are not supported in "formatOptions".');
17
+ }
18
+ };
19
+ export const checkForPresentationFormatMismatch = (presentation, formatOptions) => {
20
+ // formatOptions is not required
21
+ if (!formatOptions)
22
+ return;
23
+ // If formatOptions is provided, the date and/or time objects are required, depending on the presentation
24
+ switch (presentation) {
25
+ case 'date':
26
+ case 'month-year':
27
+ case 'month':
28
+ case 'year':
29
+ if (formatOptions.date === undefined) {
30
+ printIonWarning(`Datetime: The '${presentation}' presentation requires a date object in formatOptions.`);
31
+ }
32
+ break;
33
+ case 'time':
34
+ if (formatOptions.time === undefined) {
35
+ printIonWarning(`Datetime: The 'time' presentation requires a time object in formatOptions.`);
36
+ }
37
+ break;
38
+ case 'date-time':
39
+ case 'time-date':
40
+ if (formatOptions.date === undefined && formatOptions.time === undefined) {
41
+ printIonWarning(`Datetime: The '${presentation}' presentation requires either a date or time object (or both) in formatOptions.`);
42
+ }
43
+ break;
44
+ }
45
+ };
@@ -62,6 +62,12 @@
62
62
 
63
63
  :host button {
64
64
  border-radius: 8px;
65
+ -webkit-padding-start: 12px;
66
+ padding-inline-start: 12px;
67
+ -webkit-padding-end: 12px;
68
+ padding-inline-end: 12px;
69
+ padding-top: 6px;
70
+ padding-bottom: 6px;
65
71
  -webkit-margin-start: 2px;
66
72
  margin-inline-start: 2px;
67
73
  -webkit-margin-end: 2px;
@@ -71,7 +77,7 @@
71
77
  position: relative;
72
78
  transition: 150ms color ease-in-out;
73
79
  border: none;
74
- background: var(--ion-color-step-300, var(--ion-background-color-step-300, #edeef0));
80
+ background: var(--ion-color-step-300, #edeef0);
75
81
  color: var(--ion-text-color, #000);
76
82
  font-family: inherit;
77
83
  font-size: 1rem;
@@ -91,13 +97,4 @@
91
97
 
92
98
  :host(.datetime-button-disabled) button {
93
99
  opacity: 0.4;
94
- }
95
-
96
- :host button {
97
- -webkit-padding-start: 12px;
98
- padding-inline-start: 12px;
99
- -webkit-padding-end: 12px;
100
- padding-inline-end: 12px;
101
- padding-top: 6px;
102
- padding-bottom: 6px;
103
100
  }