@ionic/core 7.7.4-nightly.20240229 → 8.0.0-dev.11709226349.179192de

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 (907) hide show
  1. package/components/action-sheet.js +4 -4
  2. package/components/alert.js +2 -2
  3. package/components/backdrop.js +1 -13
  4. package/components/button-active.js +1 -1
  5. package/components/button.js +2 -2
  6. package/components/checkbox.js +8 -80
  7. package/components/data.js +1 -1
  8. package/components/gesture-controller.js +1 -1
  9. package/components/helpers.js +1 -1
  10. package/components/index9.js +1 -1
  11. package/components/ion-accordion-group.js +1 -1
  12. package/components/ion-back-button.js +1 -1
  13. package/components/ion-badge.js +2 -2
  14. package/components/ion-breadcrumb.js +2 -2
  15. package/components/ion-card-subtitle.js +2 -2
  16. package/components/ion-card-title.js +1 -1
  17. package/components/ion-card.js +2 -2
  18. package/components/ion-chip.js +2 -2
  19. package/components/ion-col.js +2 -2
  20. package/components/ion-content.js +5 -6
  21. package/components/ion-datetime-button.js +5 -5
  22. package/components/ion-datetime.js +41 -105
  23. package/components/ion-fab-button.js +4 -4
  24. package/components/ion-fab-list.js +3 -3
  25. package/components/ion-fab.js +2 -2
  26. package/components/ion-footer.js +3 -3
  27. package/components/ion-grid.js +2 -2
  28. package/components/ion-header.js +3 -3
  29. package/components/ion-img.js +1 -1
  30. package/components/ion-infinite-scroll-content.js +4 -4
  31. package/components/ion-infinite-scroll.js +1 -1
  32. package/components/ion-input.js +7 -93
  33. package/components/ion-item-divider.js +4 -4
  34. package/components/ion-item-group.js +1 -1
  35. package/components/ion-item-option.js +4 -4
  36. package/components/ion-item-options.js +4 -4
  37. package/components/ion-item-sliding.js +2 -2
  38. package/components/ion-loading.js +4 -4
  39. package/components/ion-menu-button.js +3 -3
  40. package/components/ion-menu-toggle.js +2 -2
  41. package/components/ion-menu.js +24 -18
  42. package/components/ion-modal.js +9 -26
  43. package/components/ion-nav-link.js +1 -1
  44. package/components/ion-nav.js +9 -5
  45. package/components/ion-picker-column-option.d.ts +11 -0
  46. package/components/ion-picker-column-option.js +9 -0
  47. package/components/ion-picker-column.js +2 -2
  48. package/components/ion-picker-legacy-column.d.ts +11 -0
  49. package/components/ion-picker-legacy-column.js +9 -0
  50. package/components/{ion-picker-internal.d.ts → ion-picker-legacy.d.ts} +4 -4
  51. package/components/ion-picker-legacy.js +321 -0
  52. package/components/ion-picker.js +1 -315
  53. package/components/ion-progress-bar.js +7 -4
  54. package/components/ion-range.js +34 -88
  55. package/components/ion-refresher-content.js +1 -1
  56. package/components/ion-refresher.js +4 -4
  57. package/components/ion-reorder-group.js +1 -1
  58. package/components/ion-reorder.js +1 -1
  59. package/components/ion-router-link.js +3 -3
  60. package/components/ion-router-outlet.js +2 -2
  61. package/components/ion-router.js +1 -1
  62. package/components/ion-row.js +1 -1
  63. package/components/ion-searchbar.js +7 -7
  64. package/components/ion-segment-button.js +5 -5
  65. package/components/ion-segment.js +2 -2
  66. package/components/ion-select-option.js +1 -1
  67. package/components/ion-select.js +65 -159
  68. package/components/ion-skeleton-text.js +2 -2
  69. package/components/ion-split-pane.js +28 -17
  70. package/components/ion-tab-bar.js +4 -4
  71. package/components/ion-tab-button.js +4 -4
  72. package/components/ion-tab.js +2 -2
  73. package/components/ion-tabs.js +1 -1
  74. package/components/ion-text.js +2 -2
  75. package/components/ion-textarea.js +7 -70
  76. package/components/ion-thumbnail.js +1 -1
  77. package/components/ion-title.js +3 -3
  78. package/components/ion-toast.js +12 -6
  79. package/components/ion-toggle.js +7 -64
  80. package/components/ion-toolbar.js +4 -4
  81. package/components/item.js +2 -2
  82. package/components/label.js +3 -3
  83. package/components/list-header.js +4 -4
  84. package/components/list.js +2 -2
  85. package/components/note.js +4 -4
  86. package/components/overlays.js +11 -4
  87. package/components/picker-column-option.js +124 -0
  88. package/components/picker-column.js +361 -324
  89. package/components/picker-column2.js +381 -0
  90. package/components/{picker-internal.js → picker.js} +33 -26
  91. package/components/popover.js +4 -4
  92. package/components/radio-group.js +1 -1
  93. package/components/radio.js +8 -81
  94. package/components/refresher.utils.js +1 -1
  95. package/components/ripple-effect.js +1 -1
  96. package/components/select-popover.js +2 -2
  97. package/components/spinner.js +1 -1
  98. package/components/swipe-back.js +1 -1
  99. package/css/core.css +90 -27
  100. package/css/core.css.map +1 -1
  101. package/css/display.css.map +1 -1
  102. package/css/float-elements.css.map +1 -1
  103. package/css/global.bundle.css +1 -1
  104. package/css/global.bundle.css.map +1 -1
  105. package/css/ionic-swiper.css.map +1 -1
  106. package/css/ionic.bundle.css +1 -1
  107. package/css/ionic.bundle.css.map +1 -1
  108. package/css/padding.css.map +1 -1
  109. package/css/structure.css.map +1 -1
  110. package/css/text-alignment.css.map +1 -1
  111. package/css/text-transformation.css.map +1 -1
  112. package/css/themes/dark.always.css +160 -0
  113. package/css/themes/dark.always.css.map +1 -0
  114. package/css/themes/dark.class.css +160 -0
  115. package/css/themes/dark.class.css.map +1 -0
  116. package/css/themes/dark.css +3 -0
  117. package/css/themes/dark.css.map +1 -0
  118. package/css/themes/dark.system.css +162 -0
  119. package/css/themes/dark.system.css.map +1 -0
  120. package/css/themes/high-contrast-dark.always.css +180 -0
  121. package/css/themes/high-contrast-dark.always.css.map +1 -0
  122. package/css/themes/high-contrast-dark.class.css +180 -0
  123. package/css/themes/high-contrast-dark.class.css.map +1 -0
  124. package/css/themes/high-contrast-dark.css +3 -0
  125. package/css/themes/high-contrast-dark.css.map +1 -0
  126. package/css/themes/high-contrast-dark.system.css +182 -0
  127. package/css/themes/high-contrast-dark.system.css.map +1 -0
  128. package/css/themes/high-contrast.always.css +101 -0
  129. package/css/themes/high-contrast.always.css.map +1 -0
  130. package/css/themes/high-contrast.class.css +101 -0
  131. package/css/themes/high-contrast.class.css.map +1 -0
  132. package/css/themes/high-contrast.css +3 -0
  133. package/css/themes/high-contrast.css.map +1 -0
  134. package/css/themes/high-contrast.system.css +103 -0
  135. package/css/themes/high-contrast.system.css.map +1 -0
  136. package/css/typography.css +1 -1
  137. package/css/typography.css.map +1 -1
  138. package/css/utils.bundle.css.map +1 -1
  139. package/dist/cjs/{animation-c2840aea.js → animation-4ad55058.js} +1 -1
  140. package/dist/cjs/{button-active-2d6520ec.js → button-active-8f6a8e77.js} +2 -2
  141. package/dist/cjs/{data-a5109f09.js → data-e2bf21de.js} +1 -1
  142. package/dist/cjs/{framework-delegate-e0e13baa.js → framework-delegate-53817ef1.js} +1 -1
  143. package/dist/cjs/{gesture-controller-c40c045a.js → gesture-controller-9436f482.js} +1 -0
  144. package/dist/cjs/{helpers-da4c0ed1.js → helpers-b71ca811.js} +0 -1
  145. package/dist/cjs/{index-4c96691f.js → index-16fc2c94.js} +2 -2
  146. package/dist/cjs/{index-bef98850.js → index-347883f6.js} +1 -1
  147. package/dist/cjs/{index-62290fec.js → index-7574e3d2.js} +1 -1
  148. package/dist/cjs/{index-9bfcb6e8.js → index-88b3bd6f.js} +3 -3
  149. package/dist/cjs/{index-d1b59ffa.js → index-ee07ed59.js} +1 -1
  150. package/dist/cjs/index.cjs.js +10 -10
  151. package/dist/cjs/{input-shims-a9a85bb9.js → input-shims-37843ce5.js} +2 -2
  152. package/dist/cjs/{input.utils-d7dca90f.js → input.utils-5175aea1.js} +1 -1
  153. package/dist/cjs/ion-accordion_2.cjs.entry.js +2 -2
  154. package/dist/cjs/ion-action-sheet.cjs.entry.js +11 -11
  155. package/dist/cjs/ion-alert.cjs.entry.js +9 -9
  156. package/dist/cjs/ion-app_8.cjs.entry.js +24 -25
  157. package/dist/cjs/ion-avatar_3.cjs.entry.js +3 -3
  158. package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
  159. package/dist/cjs/ion-backdrop.cjs.entry.js +1 -13
  160. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  161. package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
  162. package/dist/cjs/ion-card_5.cjs.entry.js +6 -6
  163. package/dist/cjs/ion-checkbox.cjs.entry.js +7 -75
  164. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  165. package/dist/cjs/ion-col_3.cjs.entry.js +5 -5
  166. package/dist/cjs/ion-datetime-button.cjs.entry.js +7 -7
  167. package/dist/cjs/ion-datetime_3.cjs.entry.js +53 -107
  168. package/dist/cjs/ion-fab_3.cjs.entry.js +10 -10
  169. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  170. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +7 -7
  171. package/dist/cjs/ion-input.cjs.entry.js +10 -90
  172. package/dist/cjs/ion-item-option_3.cjs.entry.js +11 -11
  173. package/dist/cjs/ion-item_8.cjs.entry.js +23 -23
  174. package/dist/cjs/ion-loading.cjs.entry.js +9 -8
  175. package/dist/cjs/ion-menu_3.cjs.entry.js +35 -30
  176. package/dist/cjs/ion-modal.cjs.entry.js +16 -33
  177. package/dist/cjs/ion-nav_2.cjs.entry.js +11 -8
  178. package/dist/cjs/ion-picker-column-option.cjs.entry.js +106 -0
  179. package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +116 -91
  180. package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +31 -24
  181. package/dist/cjs/ion-popover.cjs.entry.js +9 -8
  182. package/dist/cjs/ion-progress-bar.cjs.entry.js +7 -4
  183. package/dist/cjs/ion-radio_2.cjs.entry.js +8 -77
  184. package/dist/cjs/ion-range.cjs.entry.js +35 -88
  185. package/dist/cjs/ion-refresher_2.cjs.entry.js +10 -10
  186. package/dist/cjs/ion-reorder_2.cjs.entry.js +5 -5
  187. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  188. package/dist/cjs/ion-route_4.cjs.entry.js +4 -4
  189. package/dist/cjs/ion-searchbar.cjs.entry.js +7 -7
  190. package/dist/cjs/ion-segment_2.cjs.entry.js +9 -9
  191. package/dist/cjs/ion-select_3.cjs.entry.js +75 -166
  192. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  193. package/dist/cjs/ion-split-pane.cjs.entry.js +26 -16
  194. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +9 -9
  195. package/dist/cjs/ion-tab_2.cjs.entry.js +5 -5
  196. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  197. package/dist/cjs/ion-textarea.cjs.entry.js +9 -69
  198. package/dist/cjs/ion-toast.cjs.entry.js +17 -11
  199. package/dist/cjs/ion-toggle.cjs.entry.js +8 -64
  200. package/dist/cjs/ionic.cjs.js +1 -1
  201. package/dist/cjs/{ios.transition-96679580.js → ios.transition-b102ee38.js} +3 -3
  202. package/dist/cjs/loader.cjs.js +1 -1
  203. package/dist/cjs/{md.transition-d6c98822.js → md.transition-a5454240.js} +3 -3
  204. package/dist/cjs/{notch-controller-bfbcbb7a.js → notch-controller-8e0ae870.js} +1 -1
  205. package/dist/cjs/{overlays-db5d96f3.js → overlays-6b7d156b.js} +13 -6
  206. package/dist/cjs/{status-tap-7ad5f0fb.js → status-tap-b60dcbd8.js} +2 -2
  207. package/dist/cjs/{swipe-back-cf8aa1ec.js → swipe-back-72c5c8b7.js} +3 -3
  208. package/dist/collection/collection-manifest.json +7 -6
  209. package/dist/collection/components/accordion-group/accordion-group.md.css +4 -26
  210. package/dist/collection/components/action-sheet/action-sheet.ios.css +16 -9
  211. package/dist/collection/components/action-sheet/action-sheet.js +2 -2
  212. package/dist/collection/components/action-sheet/action-sheet.md.css +10 -3
  213. package/dist/collection/components/action-sheet/test/a11y/action-sheet.e2e.js +23 -14
  214. package/dist/collection/components/action-sheet/test/basic/action-sheet-rendering.e2e.js +19 -0
  215. package/dist/collection/components/action-sheet/test/basic/action-sheet.spec.js +22 -0
  216. package/dist/collection/components/alert/alert.ios.css +33 -80
  217. package/dist/collection/components/alert/alert.md.css +25 -121
  218. package/dist/collection/components/alert/test/a11y/alert.e2e.js +22 -9
  219. package/dist/collection/components/back-button/back-button.ios.css +1 -1
  220. package/dist/collection/components/back-button/test/a11y/back-button.e2e.js +21 -0
  221. package/dist/collection/components/backdrop/backdrop.js +1 -13
  222. package/dist/collection/components/badge/badge.ios.css +1 -1
  223. package/dist/collection/components/badge/badge.md.css +1 -1
  224. package/dist/collection/components/badge/test/a11y/badge.e2e.js +18 -0
  225. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +9 -9
  226. package/dist/collection/components/breadcrumb/breadcrumb.md.css +9 -9
  227. package/dist/collection/components/button/button.ios.css +11 -11
  228. package/dist/collection/components/button/button.md.css +9 -9
  229. package/dist/collection/components/button/test/a11y/button.e2e.js +48 -0
  230. package/dist/collection/components/button/test/wrap/button.e2e.js +12 -24
  231. package/dist/collection/components/card/card.ios.css +1 -1
  232. package/dist/collection/components/card/card.md.css +1 -1
  233. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +1 -1
  234. package/dist/collection/components/card-subtitle/card-subtitle.md.css +1 -1
  235. package/dist/collection/components/card-title/card-title.md.css +1 -1
  236. package/dist/collection/components/checkbox/checkbox.ios.css +10 -88
  237. package/dist/collection/components/checkbox/checkbox.js +5 -118
  238. package/dist/collection/components/checkbox/checkbox.md.css +7 -85
  239. package/dist/collection/components/checkbox/test/a11y/checkbox.e2e.js +11 -2
  240. package/dist/collection/components/checkbox/test/basic/checkbox.e2e.js +10 -0
  241. package/dist/collection/components/chip/chip.js +2 -2
  242. package/dist/collection/components/col/col.js +2 -2
  243. package/dist/collection/components/content/content.css +0 -4
  244. package/dist/collection/components/content/content.js +3 -4
  245. package/dist/collection/components/datetime/datetime.ios.css +105 -117
  246. package/dist/collection/components/datetime/datetime.js +25 -77
  247. package/dist/collection/components/datetime/datetime.md.css +106 -114
  248. package/dist/collection/components/datetime/test/a11y/datetime.e2e.js +1 -1
  249. package/dist/collection/components/datetime/test/a11y/datetime.spec.js +6 -9
  250. package/dist/collection/components/datetime/test/basic/datetime.e2e.js +10 -0
  251. package/dist/collection/components/datetime/test/datetime.e2e.js +2 -2
  252. package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
  253. package/dist/collection/components/datetime/test/locale/datetime.e2e.js +2 -2
  254. package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +6 -6
  255. package/dist/collection/components/datetime/test/month-year-picker/datetime.e2e.js +1 -1
  256. package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +43 -41
  257. package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
  258. package/dist/collection/components/datetime/test/readonly/datetime.e2e.js +4 -4
  259. package/dist/collection/components/datetime/test/values/datetime.e2e.js +15 -12
  260. package/dist/collection/components/datetime/utils/data.js +1 -1
  261. package/dist/collection/components/datetime-button/datetime-button.ios.css +107 -0
  262. package/dist/collection/components/datetime-button/datetime-button.js +5 -5
  263. package/dist/collection/components/datetime-button/{datetime-button.css → datetime-button.md.css} +10 -7
  264. package/dist/collection/components/datetime-button/test/basic/datetime-button.e2e.js +12 -0
  265. package/dist/collection/components/fab/fab.js +2 -2
  266. package/dist/collection/components/fab-button/fab-button.ios.css +7 -7
  267. package/dist/collection/components/fab-button/fab-button.js +2 -2
  268. package/dist/collection/components/fab-button/fab-button.md.css +1 -1
  269. package/dist/collection/components/fab-button/test/a11y/fab-button.e2e.js +50 -0
  270. package/dist/collection/components/fab-list/fab-list.css +4 -42
  271. package/dist/collection/components/fab-list/fab-list.js +2 -2
  272. package/dist/collection/components/footer/footer.js +2 -2
  273. package/dist/collection/components/grid/grid.js +2 -2
  274. package/dist/collection/components/header/header.js +2 -2
  275. package/dist/collection/components/img/img.js +1 -1
  276. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  277. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +3 -3
  278. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  279. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +3 -3
  280. package/dist/collection/components/input/input.ios.css +11 -104
  281. package/dist/collection/components/input/input.js +6 -144
  282. package/dist/collection/components/input/input.md.css +35 -216
  283. package/dist/collection/components/input/test/a11y/input.e2e.js +41 -3
  284. package/dist/collection/components/item/item.ios.css +6 -30
  285. package/dist/collection/components/item/item.md.css +24 -97
  286. package/dist/collection/components/item/test/a11y/item.e2e.js +0 -40
  287. package/dist/collection/components/item-divider/item-divider.ios.css +3 -3
  288. package/dist/collection/components/item-divider/item-divider.js +2 -2
  289. package/dist/collection/components/item-divider/item-divider.md.css +3 -3
  290. package/dist/collection/components/item-group/item-group.js +1 -1
  291. package/dist/collection/components/item-option/item-option.ios.css +2 -2
  292. package/dist/collection/components/item-option/item-option.js +2 -2
  293. package/dist/collection/components/item-option/item-option.md.css +1 -1
  294. package/dist/collection/components/item-options/item-options.ios.css +1 -1
  295. package/dist/collection/components/item-options/item-options.js +1 -1
  296. package/dist/collection/components/item-options/item-options.md.css +1 -1
  297. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  298. package/dist/collection/components/item-sliding/test/a11y/item-sliding.e2e.js +28 -0
  299. package/dist/collection/components/label/label.ios.css +1 -1
  300. package/dist/collection/components/label/label.js +1 -1
  301. package/dist/collection/components/label/label.md.css +2 -2
  302. package/dist/collection/components/label/test/a11y/label.e2e.js +20 -0
  303. package/dist/collection/components/list/list.js +1 -1
  304. package/dist/collection/components/list/list.md.css +2 -26
  305. package/dist/collection/components/list-header/list-header.ios.css +2 -2
  306. package/dist/collection/components/list-header/list-header.js +2 -2
  307. package/dist/collection/components/list-header/list-header.md.css +1 -1
  308. package/dist/collection/components/loading/loading.ios.css +2 -2
  309. package/dist/collection/components/loading/loading.js +2 -2
  310. package/dist/collection/components/loading/loading.md.css +3 -3
  311. package/dist/collection/components/loading/test/a11y/loading.e2e.js +21 -5
  312. package/dist/collection/components/menu/menu.ios.css +72 -53
  313. package/dist/collection/components/menu/menu.js +21 -15
  314. package/dist/collection/components/menu/menu.md.css +72 -53
  315. package/dist/collection/components/menu-button/menu-button.ios.css +1 -1
  316. package/dist/collection/components/menu-button/menu-button.js +2 -2
  317. package/dist/collection/components/menu-button/test/a11y/menu-button.e2e.js +14 -0
  318. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  319. package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -1
  320. package/dist/collection/components/modal/modal.ios.css +9 -38
  321. package/dist/collection/components/modal/modal.js +3 -3
  322. package/dist/collection/components/modal/modal.md.css +1 -1
  323. package/dist/collection/components/modal/utils.js +2 -8
  324. package/dist/collection/components/nav/nav.js +23 -3
  325. package/dist/collection/components/nav/test/nav-controller.spec.js +36 -36
  326. package/dist/collection/components/nav-link/nav-link.js +1 -1
  327. package/dist/collection/components/note/note.ios.css +1 -1
  328. package/dist/collection/components/note/note.js +2 -2
  329. package/dist/collection/components/note/note.md.css +1 -1
  330. package/dist/collection/components/picker/picker.ios.css +97 -234
  331. package/dist/collection/components/picker/picker.js +488 -742
  332. package/dist/collection/components/picker/picker.md.css +98 -226
  333. package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
  334. package/dist/collection/components/picker/test/basic/picker.e2e.js +99 -13
  335. package/dist/collection/components/picker/test/custom/picker.e2e.js +85 -0
  336. package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +79 -42
  337. package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.css} +96 -83
  338. package/dist/collection/components/picker-column/picker-column.js +508 -335
  339. package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +8 -8
  340. package/dist/collection/components/picker-column/test/disabled/picker-column.e2e.js +91 -0
  341. package/dist/collection/components/picker-column/test/slots/picker-column.e2e.js +39 -0
  342. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +87 -0
  343. package/dist/collection/components/picker-column-option/picker-column-option.js +173 -0
  344. package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column-option/picker-column-option.md.css} +6 -53
  345. package/dist/collection/components/picker-column-option/test/a11y/picker-column-option.e2e.js +18 -0
  346. package/dist/collection/components/picker-column-option/test/basic/picker-column-option.e2e.js +37 -0
  347. package/dist/collection/components/picker-column-option/test/picker-column-option.spec.js +29 -0
  348. package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker-legacy/picker.ios.css} +155 -117
  349. package/dist/collection/components/picker-legacy/picker.js +821 -0
  350. package/dist/collection/components/{picker-internal/picker-internal.md.css → picker-legacy/picker.md.css} +144 -115
  351. package/dist/collection/components/picker-legacy/test/basic/picker.e2e.js +25 -0
  352. package/dist/collection/components/{picker → picker-legacy}/test/is-open/picker.e2e.js +4 -4
  353. package/dist/collection/components/{picker → picker-legacy}/test/picker-id.spec.js +5 -5
  354. package/dist/collection/components/{picker → picker-legacy}/test/trigger/picker.e2e.js +1 -1
  355. package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.ios.css +2 -26
  356. package/dist/collection/components/picker-legacy-column/picker-column.js +419 -0
  357. package/dist/collection/components/{picker-column → picker-legacy-column}/picker-column.md.css +3 -27
  358. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-aria.spec.js +3 -3
  359. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column-dynamic.spec.js +2 -2
  360. package/dist/collection/components/{picker-column → picker-legacy-column}/test/picker-column.spec.js +2 -2
  361. package/dist/collection/components/{picker-column → picker-legacy-column}/test/standalone/picker-column.e2e.js +3 -3
  362. package/dist/collection/components/popover/popover.ios.css +3 -27
  363. package/dist/collection/components/popover/popover.js +2 -2
  364. package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -11
  365. package/dist/collection/components/progress-bar/progress-bar.js +4 -1
  366. package/dist/collection/components/progress-bar/progress-bar.md.css +8 -10
  367. package/dist/collection/components/progress-bar/test/a11y/progress-bar.e2e.js +24 -0
  368. package/dist/collection/components/radio/radio.ios.css +10 -101
  369. package/dist/collection/components/radio/radio.js +5 -119
  370. package/dist/collection/components/radio/radio.md.css +8 -105
  371. package/dist/collection/components/radio/test/a11y/radio.e2e.js +114 -81
  372. package/dist/collection/components/radio-group/radio-group.js +1 -1
  373. package/dist/collection/components/range/range.ios.css +12 -90
  374. package/dist/collection/components/range/range.js +30 -123
  375. package/dist/collection/components/range/range.md.css +22 -152
  376. package/dist/collection/components/range/test/a11y/range.e2e.js +20 -10
  377. package/dist/collection/components/range/test/range-events.e2e.js +1 -1
  378. package/dist/collection/components/range/test/range.spec.js +0 -12
  379. package/dist/collection/components/refresher/refresher.ios.css +4 -27
  380. package/dist/collection/components/refresher/refresher.js +1 -1
  381. package/dist/collection/components/refresher/refresher.md.css +7 -30
  382. package/dist/collection/components/refresher/test/a11y/refresher.e2e.js +26 -0
  383. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  384. package/dist/collection/components/reorder/reorder.js +1 -1
  385. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  386. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  387. package/dist/collection/components/router-link/router-link.css +1 -1
  388. package/dist/collection/components/router-link/router-link.js +2 -2
  389. package/dist/collection/components/router-link/test/a11y/router-link.e2e.js +23 -0
  390. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  391. package/dist/collection/components/row/row.js +1 -1
  392. package/dist/collection/components/searchbar/searchbar.ios.css +11 -59
  393. package/dist/collection/components/searchbar/searchbar.js +4 -4
  394. package/dist/collection/components/searchbar/searchbar.md.css +10 -82
  395. package/dist/collection/components/segment/segment.js +2 -2
  396. package/dist/collection/components/segment/test/a11y/segment.e2e.js +23 -0
  397. package/dist/collection/components/segment-button/segment-button.ios.css +3 -3
  398. package/dist/collection/components/segment-button/segment-button.js +3 -3
  399. package/dist/collection/components/segment-button/segment-button.md.css +2 -2
  400. package/dist/collection/components/select/select.ios.css +10 -81
  401. package/dist/collection/components/select/select.js +64 -173
  402. package/dist/collection/components/select/select.md.css +38 -169
  403. package/dist/collection/components/select/test/a11y/select.e2e.js +68 -4
  404. package/dist/collection/components/select-option/select-option.js +1 -1
  405. package/dist/collection/components/select-popover/select-popover.js +1 -1
  406. package/dist/collection/components/select-popover/select-popover.md.css +4 -4
  407. package/dist/collection/components/select-popover/test/a11y/select-popover.e2e.js +32 -0
  408. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  409. package/dist/collection/components/spinner/spinner.js +1 -1
  410. package/dist/collection/components/split-pane/split-pane.ios.css +3 -55
  411. package/dist/collection/components/split-pane/split-pane.js +48 -14
  412. package/dist/collection/components/split-pane/split-pane.md.css +3 -55
  413. package/dist/collection/components/split-pane/test/wrapped-menu/split-pane.e2e.js +41 -0
  414. package/dist/collection/components/tab/tab.js +2 -2
  415. package/dist/collection/components/tab-bar/tab-bar.ios.css +4 -4
  416. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  417. package/dist/collection/components/tab-bar/tab-bar.md.css +3 -3
  418. package/dist/collection/components/tab-button/tab-button.ios.css +16 -94
  419. package/dist/collection/components/tab-button/tab-button.js +2 -2
  420. package/dist/collection/components/tab-button/tab-button.md.css +10 -93
  421. package/dist/collection/components/tabs/tabs.js +1 -1
  422. package/dist/collection/components/text/text.js +2 -2
  423. package/dist/collection/components/textarea/test/a11y/textarea.e2e.js +41 -3
  424. package/dist/collection/components/textarea/textarea.ios.css +13 -103
  425. package/dist/collection/components/textarea/textarea.js +5 -84
  426. package/dist/collection/components/textarea/textarea.md.css +37 -226
  427. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  428. package/dist/collection/components/title/title.ios.css +2 -21
  429. package/dist/collection/components/title/title.js +2 -2
  430. package/dist/collection/components/toast/test/a11y/toast.e2e.js +89 -24
  431. package/dist/collection/components/toast/toast.ios.css +8 -55
  432. package/dist/collection/components/toast/toast.js +9 -3
  433. package/dist/collection/components/toast/toast.md.css +10 -57
  434. package/dist/collection/components/toggle/test/a11y/toggle.e2e.js +8 -2
  435. package/dist/collection/components/toggle/toggle.ios.css +11 -90
  436. package/dist/collection/components/toggle/toggle.js +5 -101
  437. package/dist/collection/components/toggle/toggle.md.css +6 -91
  438. package/dist/collection/components/toolbar/toolbar.ios.css +2 -2
  439. package/dist/collection/components/toolbar/toolbar.js +2 -2
  440. package/dist/collection/components/toolbar/toolbar.md.css +1 -1
  441. package/dist/collection/css/test/a11y/typography.e2e.js +18 -0
  442. package/dist/collection/themes/test/colors/theme.e2e.js +170 -0
  443. package/dist/collection/utils/gesture/button-active.js +1 -1
  444. package/dist/collection/utils/gesture/gesture-controller.js +1 -1
  445. package/dist/collection/utils/native/status-bar.js +0 -11
  446. package/dist/collection/utils/overlays.js +11 -4
  447. package/dist/collection/utils/test/aria.spec.js +2 -1
  448. package/dist/collection/utils/test/overlays/overlays-scroll-blocking.spec.js +65 -0
  449. package/dist/collection/utils/test/playwright/generator.js +1 -0
  450. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  451. package/dist/docs.json +568 -330
  452. package/dist/esm/{animation-6a0c5338.js → animation-a4acf150.js} +1 -1
  453. package/dist/esm/{button-active-47ac8092.js → button-active-4407b98c.js} +2 -2
  454. package/dist/esm/{data-0f3ab200.js → data-691286f1.js} +1 -1
  455. package/dist/esm/{framework-delegate-ed4ba327.js → framework-delegate-1eb3236c.js} +1 -1
  456. package/dist/esm/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  457. package/dist/esm/{helpers-be245865.js → helpers-ae74b3c9.js} +1 -1
  458. package/dist/esm/{index-348ed70a.js → index-1eff8599.js} +3 -3
  459. package/dist/esm/{index-020f5464.js → index-1f563746.js} +1 -1
  460. package/dist/esm/{index-2cf77112.js → index-39782642.js} +2 -2
  461. package/dist/esm/{index-f3946ac1.js → index-66871a1d.js} +1 -1
  462. package/dist/esm/{index-e1b622e3.js → index-8758824c.js} +2 -2
  463. package/dist/esm/index.js +10 -10
  464. package/dist/esm/{input-shims-5329bbe8.js → input-shims-91e6634c.js} +2 -2
  465. package/dist/esm/{input.utils-a445f677.js → input.utils-482fc893.js} +1 -1
  466. package/dist/esm/ion-accordion_2.entry.js +2 -2
  467. package/dist/esm/ion-action-sheet.entry.js +11 -11
  468. package/dist/esm/ion-alert.entry.js +9 -9
  469. package/dist/esm/ion-app_8.entry.js +24 -25
  470. package/dist/esm/ion-avatar_3.entry.js +3 -3
  471. package/dist/esm/ion-back-button.entry.js +2 -2
  472. package/dist/esm/ion-backdrop.entry.js +1 -13
  473. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  474. package/dist/esm/ion-button_2.entry.js +3 -3
  475. package/dist/esm/ion-card_5.entry.js +6 -6
  476. package/dist/esm/ion-checkbox.entry.js +7 -75
  477. package/dist/esm/ion-chip.entry.js +2 -2
  478. package/dist/esm/ion-col_3.entry.js +5 -5
  479. package/dist/esm/ion-datetime-button.entry.js +7 -7
  480. package/dist/esm/ion-datetime_3.entry.js +52 -106
  481. package/dist/esm/ion-fab_3.entry.js +10 -10
  482. package/dist/esm/ion-img.entry.js +2 -2
  483. package/dist/esm/ion-infinite-scroll_2.entry.js +7 -7
  484. package/dist/esm/ion-input.entry.js +10 -90
  485. package/dist/esm/ion-item-option_3.entry.js +11 -11
  486. package/dist/esm/ion-item_8.entry.js +23 -23
  487. package/dist/esm/ion-loading.entry.js +9 -8
  488. package/dist/esm/ion-menu_3.entry.js +35 -30
  489. package/dist/esm/ion-modal.entry.js +16 -33
  490. package/dist/esm/ion-nav_2.entry.js +11 -8
  491. package/dist/esm/ion-picker-column-option.entry.js +102 -0
  492. package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +116 -91
  493. package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +31 -24
  494. package/dist/esm/ion-popover.entry.js +9 -8
  495. package/dist/esm/ion-progress-bar.entry.js +7 -4
  496. package/dist/esm/ion-radio_2.entry.js +8 -77
  497. package/dist/esm/ion-range.entry.js +36 -89
  498. package/dist/esm/ion-refresher_2.entry.js +10 -10
  499. package/dist/esm/ion-reorder_2.entry.js +5 -5
  500. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  501. package/dist/esm/ion-route_4.entry.js +4 -4
  502. package/dist/esm/ion-searchbar.entry.js +7 -7
  503. package/dist/esm/ion-segment_2.entry.js +9 -9
  504. package/dist/esm/ion-select_3.entry.js +73 -164
  505. package/dist/esm/ion-spinner.entry.js +1 -1
  506. package/dist/esm/ion-split-pane.entry.js +26 -16
  507. package/dist/esm/ion-tab-bar_2.entry.js +9 -9
  508. package/dist/esm/ion-tab_2.entry.js +5 -5
  509. package/dist/esm/ion-text.entry.js +2 -2
  510. package/dist/esm/ion-textarea.entry.js +10 -70
  511. package/dist/esm/ion-toast.entry.js +18 -12
  512. package/dist/esm/ion-toggle.entry.js +8 -64
  513. package/dist/esm/ionic.js +1 -1
  514. package/dist/esm/{ios.transition-7459f819.js → ios.transition-189b73b7.js} +3 -3
  515. package/dist/esm/loader.js +1 -1
  516. package/dist/esm/{md.transition-b8224313.js → md.transition-c9761eef.js} +3 -3
  517. package/dist/esm/{notch-controller-6bd3e0f9.js → notch-controller-18bf9f76.js} +1 -1
  518. package/dist/esm/{overlays-19b26885.js → overlays-c69d2a07.js} +13 -6
  519. package/dist/esm/{status-tap-b41ece3c.js → status-tap-1d638ee6.js} +2 -2
  520. package/dist/esm/{swipe-back-37a22d34.js → swipe-back-348f1971.js} +3 -3
  521. package/dist/esm-es5/{animation-6a0c5338.js → animation-a4acf150.js} +1 -1
  522. package/dist/esm-es5/button-active-4407b98c.js +4 -0
  523. package/dist/esm-es5/{framework-delegate-ed4ba327.js → framework-delegate-1eb3236c.js} +1 -1
  524. package/dist/esm-es5/{gesture-controller-1bf57181.js → gesture-controller-314a54f6.js} +1 -1
  525. package/dist/esm-es5/{helpers-be245865.js → helpers-ae74b3c9.js} +1 -1
  526. package/dist/esm-es5/{index-348ed70a.js → index-1eff8599.js} +1 -1
  527. package/dist/esm-es5/{index-020f5464.js → index-1f563746.js} +1 -1
  528. package/dist/esm-es5/{index-2cf77112.js → index-39782642.js} +1 -1
  529. package/dist/esm-es5/{index-f3946ac1.js → index-66871a1d.js} +1 -1
  530. package/dist/esm-es5/{index-e1b622e3.js → index-8758824c.js} +1 -1
  531. package/dist/esm-es5/index.js +1 -1
  532. package/dist/esm-es5/{input-shims-5329bbe8.js → input-shims-91e6634c.js} +1 -1
  533. package/dist/esm-es5/{input.utils-a445f677.js → input.utils-482fc893.js} +1 -1
  534. package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
  535. package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
  536. package/dist/esm-es5/ion-alert.entry.js +1 -1
  537. package/dist/esm-es5/ion-app_8.entry.js +1 -1
  538. package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
  539. package/dist/esm-es5/ion-back-button.entry.js +1 -1
  540. package/dist/esm-es5/ion-backdrop.entry.js +1 -1
  541. package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
  542. package/dist/esm-es5/ion-button_2.entry.js +1 -1
  543. package/dist/esm-es5/ion-card_5.entry.js +1 -1
  544. package/dist/esm-es5/ion-checkbox.entry.js +1 -1
  545. package/dist/esm-es5/ion-chip.entry.js +1 -1
  546. package/dist/esm-es5/ion-col_3.entry.js +1 -1
  547. package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
  548. package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
  549. package/dist/esm-es5/ion-fab_3.entry.js +1 -1
  550. package/dist/esm-es5/ion-img.entry.js +1 -1
  551. package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
  552. package/dist/esm-es5/ion-input.entry.js +1 -1
  553. package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
  554. package/dist/esm-es5/ion-item_8.entry.js +1 -1
  555. package/dist/esm-es5/ion-loading.entry.js +1 -1
  556. package/dist/esm-es5/ion-menu_3.entry.js +1 -1
  557. package/dist/esm-es5/ion-modal.entry.js +1 -1
  558. package/dist/esm-es5/ion-nav_2.entry.js +1 -1
  559. package/dist/esm-es5/ion-picker-column-option.entry.js +4 -0
  560. package/dist/esm-es5/ion-picker-column.entry.js +4 -0
  561. package/dist/esm-es5/ion-picker.entry.js +4 -0
  562. package/dist/esm-es5/ion-popover.entry.js +1 -1
  563. package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
  564. package/dist/esm-es5/ion-radio_2.entry.js +1 -1
  565. package/dist/esm-es5/ion-range.entry.js +1 -1
  566. package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
  567. package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
  568. package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
  569. package/dist/esm-es5/ion-route_4.entry.js +1 -1
  570. package/dist/esm-es5/ion-searchbar.entry.js +1 -1
  571. package/dist/esm-es5/ion-segment_2.entry.js +1 -1
  572. package/dist/esm-es5/ion-select_3.entry.js +1 -1
  573. package/dist/esm-es5/ion-spinner.entry.js +1 -1
  574. package/dist/esm-es5/ion-split-pane.entry.js +1 -1
  575. package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
  576. package/dist/esm-es5/ion-tab_2.entry.js +1 -1
  577. package/dist/esm-es5/ion-text.entry.js +1 -1
  578. package/dist/esm-es5/ion-textarea.entry.js +1 -1
  579. package/dist/esm-es5/ion-toast.entry.js +1 -1
  580. package/dist/esm-es5/ion-toggle.entry.js +1 -1
  581. package/dist/esm-es5/ionic.js +1 -1
  582. package/dist/esm-es5/{ios.transition-7459f819.js → ios.transition-189b73b7.js} +1 -1
  583. package/dist/esm-es5/loader.js +1 -1
  584. package/dist/esm-es5/{md.transition-b8224313.js → md.transition-c9761eef.js} +1 -1
  585. package/dist/esm-es5/{notch-controller-6bd3e0f9.js → notch-controller-18bf9f76.js} +1 -1
  586. package/dist/esm-es5/overlays-c69d2a07.js +4 -0
  587. package/dist/esm-es5/{status-tap-b41ece3c.js → status-tap-1d638ee6.js} +1 -1
  588. package/dist/esm-es5/swipe-back-348f1971.js +4 -0
  589. package/dist/html.html-data.json +152 -37
  590. package/dist/ionic/index.esm.js +1 -1
  591. package/dist/ionic/ionic.esm.js +1 -1
  592. package/dist/ionic/{p-6e23d039.entry.js → p-00a762c9.entry.js} +1 -1
  593. package/dist/ionic/p-0612cdcc.system.entry.js +4 -0
  594. package/dist/ionic/{p-1bc9b5f5.system.js → p-069388dd.system.js} +1 -1
  595. package/dist/ionic/{p-644d03d7.system.entry.js → p-0a8a78db.system.entry.js} +1 -1
  596. package/dist/ionic/p-0b34d3a7.system.js +1 -1
  597. package/dist/ionic/{p-86813176.system.entry.js → p-0dca0eee.system.entry.js} +1 -1
  598. package/dist/ionic/p-0dfbbdbe.entry.js +4 -0
  599. package/dist/ionic/p-0f25a7bb.system.js +4 -0
  600. package/dist/ionic/p-0f81df5e.entry.js +4 -0
  601. package/dist/ionic/p-11bb459e.system.entry.js +4 -0
  602. package/dist/ionic/{p-abcedc15.system.entry.js → p-12b55b00.system.entry.js} +1 -1
  603. package/dist/ionic/p-13e8ad2e.entry.js +4 -0
  604. package/dist/ionic/{p-779aede8.js → p-15708968.js} +1 -1
  605. package/dist/ionic/{p-2c86025e.system.js → p-16e06393.system.js} +1 -1
  606. package/dist/ionic/p-17082c91.system.js +4 -0
  607. package/dist/ionic/{p-cbcffe6e.system.js → p-174856b4.system.js} +1 -1
  608. package/dist/ionic/{p-9998cb62.system.entry.js → p-174b0d50.system.entry.js} +1 -1
  609. package/dist/ionic/{p-6afef6c1.system.js → p-19f6ac6c.system.js} +1 -1
  610. package/dist/ionic/p-1a4db355.system.entry.js +4 -0
  611. package/dist/ionic/{p-822730c4.entry.js → p-1d545773.entry.js} +1 -1
  612. package/dist/ionic/{p-bcd9cad8.system.js → p-1deadb7f.system.js} +1 -1
  613. package/dist/ionic/p-1df25966.entry.js +4 -0
  614. package/dist/ionic/p-1ea88de9.system.js +4 -0
  615. package/dist/ionic/p-1f79e54a.entry.js +4 -0
  616. package/dist/ionic/{p-c7c8429a.system.js → p-20d469d0.system.js} +1 -1
  617. package/dist/ionic/{p-7670acd8.entry.js → p-2b3544ad.entry.js} +1 -1
  618. package/dist/ionic/p-2c768965.entry.js +4 -0
  619. package/dist/ionic/{p-97ca0cb9.system.js → p-2d7624d4.system.js} +1 -1
  620. package/dist/ionic/p-2dcf2ec2.system.entry.js +4 -0
  621. package/dist/ionic/{p-125f8cdd.system.js → p-31e02742.system.js} +1 -1
  622. package/dist/ionic/p-3209217f.entry.js +4 -0
  623. package/dist/ionic/p-32fb7d95.entry.js +4 -0
  624. package/dist/ionic/p-34d0f143.system.entry.js +4 -0
  625. package/dist/ionic/p-3807cd45.system.entry.js +4 -0
  626. package/dist/ionic/p-385f66bc.entry.js +4 -0
  627. package/dist/ionic/p-3c47c5c8.system.entry.js +4 -0
  628. package/dist/ionic/p-3c51cf97.system.entry.js +4 -0
  629. package/dist/ionic/p-3d77b300.system.entry.js +4 -0
  630. package/dist/ionic/{p-31b2326e.system.js → p-3e1e14d9.system.js} +1 -1
  631. package/dist/ionic/p-415ccddd.entry.js +4 -0
  632. package/dist/ionic/p-446f3909.system.entry.js +4 -0
  633. package/dist/ionic/{p-62b7320a.system.js → p-4a8f173c.system.js} +1 -1
  634. package/dist/ionic/p-4b3a4938.entry.js +4 -0
  635. package/dist/ionic/p-4bbc949f.system.entry.js +4 -0
  636. package/dist/ionic/p-4dfe0487.system.entry.js +4 -0
  637. package/dist/ionic/p-4e7abe76.js +4 -0
  638. package/dist/ionic/p-5133c4a3.system.entry.js +4 -0
  639. package/dist/ionic/p-5797981d.system.entry.js +4 -0
  640. package/dist/ionic/{p-337ac0f5.entry.js → p-5d530ae5.entry.js} +1 -1
  641. package/dist/ionic/p-5d64e680.entry.js +4 -0
  642. package/dist/ionic/p-5e70f800.system.entry.js +4 -0
  643. package/dist/ionic/p-5eabaa80.js +4 -0
  644. package/dist/ionic/p-5f9fbad0.entry.js +4 -0
  645. package/dist/ionic/p-60a92a48.system.entry.js +4 -0
  646. package/dist/ionic/p-640fac4a.system.entry.js +4 -0
  647. package/dist/ionic/p-65ba2dcc.entry.js +4 -0
  648. package/dist/ionic/{p-84b85535.entry.js → p-6ad90d41.entry.js} +1 -1
  649. package/dist/ionic/p-6aeb0272.entry.js +4 -0
  650. package/dist/ionic/p-6d659d62.entry.js +4 -0
  651. package/dist/ionic/p-6dbea874.system.entry.js +4 -0
  652. package/dist/ionic/p-6e14d3ca.system.entry.js +4 -0
  653. package/dist/ionic/p-717c4b72.entry.js +4 -0
  654. package/dist/ionic/p-7292add8.entry.js +4 -0
  655. package/dist/ionic/p-75861cd3.entry.js +4 -0
  656. package/dist/ionic/{p-56ee6d9a.js → p-760dbd5e.js} +1 -1
  657. package/dist/ionic/{p-cb9812f7.entry.js → p-7e185a31.entry.js} +1 -1
  658. package/dist/ionic/{p-2c4bfe1c.entry.js → p-80704be1.entry.js} +1 -1
  659. package/dist/ionic/{p-ce1c0a0e.system.entry.js → p-892e2567.system.entry.js} +2 -2
  660. package/dist/ionic/{p-bd313b73.system.js → p-8a50f8d6.system.js} +1 -1
  661. package/dist/ionic/{p-1b3ffb2f.js → p-8ab308e9.js} +1 -1
  662. package/dist/ionic/p-8b8b900d.entry.js +4 -0
  663. package/dist/ionic/{p-2c118b1e.js → p-8d4d902b.js} +1 -1
  664. package/dist/ionic/{p-f5d2dc9b.js → p-8ededb41.js} +1 -1
  665. package/dist/ionic/{p-657ccdd6.entry.js → p-8fe3c4ef.entry.js} +1 -1
  666. package/dist/ionic/p-90b3e3b0.system.entry.js +4 -0
  667. package/dist/ionic/p-916a4e14.entry.js +4 -0
  668. package/dist/ionic/p-93e79b55.js +4 -0
  669. package/dist/ionic/p-94f85e19.system.entry.js +4 -0
  670. package/dist/ionic/p-96107183.js +4 -0
  671. package/dist/ionic/{p-a85d9047.system.entry.js → p-97248203.system.entry.js} +1 -1
  672. package/dist/ionic/{p-717e2526.system.entry.js → p-973c7550.system.entry.js} +2 -2
  673. package/dist/ionic/p-986a47ee.system.entry.js +4 -0
  674. package/dist/ionic/p-98e6b3b8.system.js +4 -0
  675. package/dist/ionic/{p-1a680496.entry.js → p-993da5df.entry.js} +1 -1
  676. package/dist/ionic/{p-bb3615f7.js → p-9b97df10.js} +1 -1
  677. package/dist/ionic/p-9c93fdcd.js +4 -0
  678. package/dist/ionic/{p-a1036ce7.js → p-9d6f351e.js} +1 -1
  679. package/dist/ionic/{p-d425b1de.entry.js → p-9d795c4b.entry.js} +1 -1
  680. package/dist/ionic/{p-5fc8d5ef.system.js → p-9e3b3f15.system.js} +1 -1
  681. package/dist/ionic/p-9ec6901a.system.entry.js +4 -0
  682. package/dist/ionic/p-9ecc1e42.entry.js +4 -0
  683. package/dist/ionic/{p-88e9052d.entry.js → p-9f84474d.entry.js} +1 -1
  684. package/dist/ionic/{p-942a9358.js → p-a6cc38d4.js} +1 -1
  685. package/dist/ionic/{p-3079950e.entry.js → p-ab427719.entry.js} +1 -1
  686. package/dist/ionic/p-acf70e64.system.entry.js +4 -0
  687. package/dist/ionic/{p-91f4e611.system.entry.js → p-b2d58604.system.entry.js} +2 -2
  688. package/dist/ionic/p-b434ded7.system.entry.js +4 -0
  689. package/dist/ionic/p-bca27ea7.entry.js +4 -0
  690. package/dist/ionic/p-c68e75ea.system.js +4 -0
  691. package/dist/ionic/{p-a3df16b9.system.entry.js → p-c6dbc089.system.entry.js} +1 -1
  692. package/dist/ionic/{p-12a8643e.js → p-c880c809.js} +1 -1
  693. package/dist/ionic/{p-18918a24.system.entry.js → p-c8d61b6c.system.entry.js} +1 -1
  694. package/dist/ionic/p-c9e21694.system.entry.js +4 -0
  695. package/dist/ionic/{p-fe320051.system.js → p-cb944b1a.system.js} +1 -1
  696. package/dist/ionic/p-cd0ffc8c.entry.js +4 -0
  697. package/dist/ionic/p-cefbb7b7.entry.js +4 -0
  698. package/dist/ionic/p-d13689a6.entry.js +4 -0
  699. package/dist/ionic/p-d3f79a49.js +4 -0
  700. package/dist/ionic/p-d47a1a78.system.entry.js +4 -0
  701. package/dist/ionic/{p-baf8eeac.system.entry.js → p-d7c78a97.system.entry.js} +1 -1
  702. package/dist/ionic/p-d7dc29c5.entry.js +4 -0
  703. package/dist/ionic/{p-b727af6a.entry.js → p-d84c9fc4.entry.js} +1 -1
  704. package/dist/ionic/p-d8643420.system.entry.js +4 -0
  705. package/dist/ionic/p-d9b6b588.entry.js +4 -0
  706. package/dist/ionic/p-dd7c79ce.system.entry.js +4 -0
  707. package/dist/ionic/{p-ebc86ce9.system.entry.js → p-de0a7606.system.entry.js} +1 -1
  708. package/dist/ionic/{p-b6279412.entry.js → p-df6a1571.entry.js} +1 -1
  709. package/dist/ionic/{p-a6c0a380.js → p-e1819aee.js} +1 -1
  710. package/dist/ionic/p-e311af42.entry.js +4 -0
  711. package/dist/ionic/p-e46adaf1.system.entry.js +4 -0
  712. package/dist/ionic/p-e755046f.system.entry.js +4 -0
  713. package/dist/ionic/p-eb506d19.system.entry.js +4 -0
  714. package/dist/ionic/p-eb9803e9.system.js +4 -0
  715. package/dist/ionic/{p-288649db.system.entry.js → p-ec77b7ad.system.entry.js} +1 -1
  716. package/dist/ionic/p-ef636601.entry.js +4 -0
  717. package/dist/ionic/p-ef9736b9.entry.js +4 -0
  718. package/dist/ionic/{p-05253db9.js → p-f0a7e80b.js} +1 -1
  719. package/dist/ionic/p-f2473724.js +4 -0
  720. package/dist/ionic/p-f7c3d736.system.entry.js +4 -0
  721. package/dist/ionic/{p-e1c52dc6.entry.js → p-f7ccf8d9.entry.js} +1 -1
  722. package/dist/ionic/p-f7d802e1.entry.js +4 -0
  723. package/dist/ionic/{p-4b8a620f.system.entry.js → p-fd783a38.system.entry.js} +1 -1
  724. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +8 -0
  725. package/dist/types/components/backdrop/backdrop.d.ts +0 -3
  726. package/dist/types/components/checkbox/checkbox.d.ts +1 -24
  727. package/dist/types/components/datetime/datetime.d.ts +0 -1
  728. package/dist/types/components/datetime/utils/data.d.ts +11 -7
  729. package/dist/types/components/input/input.d.ts +0 -26
  730. package/dist/types/components/menu/menu.d.ts +12 -2
  731. package/dist/types/components/modal/utils.d.ts +0 -4
  732. package/dist/types/components/nav/nav.d.ts +4 -1
  733. package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
  734. package/dist/types/components/picker/picker.d.ts +75 -133
  735. package/dist/types/components/picker-column/picker-column-interfaces.d.ts +4 -0
  736. package/dist/types/components/picker-column/picker-column.d.ts +99 -39
  737. package/dist/types/components/picker-column-option/picker-column-option.d.ts +66 -0
  738. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  739. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  740. package/dist/types/components/radio/radio.d.ts +1 -24
  741. package/dist/types/components/range/range.d.ts +1 -21
  742. package/dist/types/components/select/select.d.ts +0 -15
  743. package/dist/types/components/split-pane/split-pane.d.ts +14 -2
  744. package/dist/types/components/textarea/textarea.d.ts +0 -17
  745. package/dist/types/components/toast/toast-interface.d.ts +0 -4
  746. package/dist/types/components/toggle/toggle.d.ts +1 -21
  747. package/dist/types/components.d.ts +160 -195
  748. package/dist/types/interface.d.ts +1 -1
  749. package/dist/types/utils/config.d.ts +2 -2
  750. package/dist/types/utils/gesture/gesture-controller.d.ts +1 -0
  751. package/dist/types/utils/native/status-bar.d.ts +0 -1
  752. package/dist/types/utils/overlays.d.ts +5 -2
  753. package/dist/types/utils/test/playwright/generator.d.ts +3 -1
  754. package/hydrate/index.js +1918 -2368
  755. package/package.json +1 -1
  756. package/components/form-controller.js +0 -64
  757. package/components/ion-picker-column-internal.d.ts +0 -11
  758. package/components/ion-picker-column-internal.js +0 -9
  759. package/components/ion-picker-internal.js +0 -9
  760. package/components/picker-column-internal.js +0 -392
  761. package/dist/cjs/form-controller-c83330c0.js +0 -66
  762. package/dist/collection/components/checkbox/test/legacy/basic/checkbox.e2e.js +0 -68
  763. package/dist/collection/components/checkbox/test/legacy/indeterminate/checkbox.e2e.js +0 -14
  764. package/dist/collection/components/input/test/item/input.spec.js +0 -24
  765. package/dist/collection/components/input/test/legacy/a11y/input.e2e.js +0 -28
  766. package/dist/collection/components/input/test/legacy/basic/input.e2e.js +0 -181
  767. package/dist/collection/components/input/test/legacy/clear-on-edit/input.e2e.js +0 -55
  768. package/dist/collection/components/input/test/legacy/input-events.e2e.js +0 -71
  769. package/dist/collection/components/input/test/legacy/masking/input.e2e.js +0 -26
  770. package/dist/collection/components/input/test/legacy/spec/input.e2e.js +0 -16
  771. package/dist/collection/components/item/test/counter/item.e2e.js +0 -49
  772. package/dist/collection/components/item/test/highlight/item.e2e.js +0 -14
  773. package/dist/collection/components/item/test/legacy/alignment/item.e2e.js +0 -14
  774. package/dist/collection/components/item/test/legacy/fill/item.e2e.js +0 -14
  775. package/dist/collection/components/item/test/legacy/form/item.e2e.js +0 -14
  776. package/dist/collection/components/picker-column-internal/picker-column-internal.js +0 -566
  777. package/dist/collection/components/picker-column-internal/test/disabled/picker-column-internal.e2e.js +0 -162
  778. package/dist/collection/components/picker-internal/picker-internal.js +0 -560
  779. package/dist/collection/components/picker-internal/test/basic/picker-internal.e2e.js +0 -118
  780. package/dist/collection/components/radio/test/legacy/a11y/radio.e2e.js +0 -53
  781. package/dist/collection/components/radio/test/legacy/basic/radio.e2e.js +0 -127
  782. package/dist/collection/components/radio-group/test/legacy/basic/radio-group.e2e.js +0 -122
  783. package/dist/collection/components/radio-group/test/legacy/form/radio-group.e2e.js +0 -30
  784. package/dist/collection/components/radio-group/test/legacy/search/radio-group.e2e.js +0 -38
  785. package/dist/collection/components/range/test/legacy/a11y/range.e2e.js +0 -49
  786. package/dist/collection/components/range/test/legacy/active-bar-start/range.e2e.js +0 -14
  787. package/dist/collection/components/range/test/legacy/basic/range.e2e.js +0 -75
  788. package/dist/collection/components/range/test/legacy/range-events.e2e.js +0 -90
  789. package/dist/collection/components/range/test/legacy/scroll-target/range.e2e.js +0 -32
  790. package/dist/collection/components/select/test/legacy/async/select.e2e.js +0 -19
  791. package/dist/collection/components/select/test/legacy/basic/select.e2e.js +0 -145
  792. package/dist/collection/components/select/test/legacy/compare-with/select.e2e.js +0 -67
  793. package/dist/collection/components/select/test/legacy/custom/custom.e2e.js +0 -13
  794. package/dist/collection/components/select/test/legacy/single-value/select.e2e.js +0 -16
  795. package/dist/collection/components/select/test/legacy/spec/select.e2e.js +0 -14
  796. package/dist/collection/components/select/test/legacy/standalone/select.e2e.js +0 -18
  797. package/dist/collection/components/select/test/legacy/wrapping/select.e2e.js +0 -39
  798. package/dist/collection/components/textarea/test/legacy/a11y/textarea.e2e.js +0 -31
  799. package/dist/collection/components/textarea/test/legacy/autogrow/textarea.e2e.js +0 -58
  800. package/dist/collection/components/textarea/test/legacy/basic/textarea.e2e.js +0 -43
  801. package/dist/collection/components/textarea/test/legacy/clear-on-edit/textarea.e2e.js +0 -25
  802. package/dist/collection/components/toggle/test/legacy/basic/toggle.e2e.js +0 -83
  803. package/dist/collection/components/toggle/test/legacy/enable-on-off-labels/toggle.e2e.js +0 -37
  804. package/dist/collection/components/toggle/test/legacy/sizes/power-outline.svg +0 -1
  805. package/dist/collection/components/toggle/test/legacy/sizes/toggle.e2e.js +0 -14
  806. package/dist/esm/form-controller-21dd62b1.js +0 -64
  807. package/dist/esm-es5/button-active-47ac8092.js +0 -4
  808. package/dist/esm-es5/form-controller-21dd62b1.js +0 -4
  809. package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
  810. package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
  811. package/dist/esm-es5/overlays-19b26885.js +0 -4
  812. package/dist/esm-es5/swipe-back-37a22d34.js +0 -4
  813. package/dist/ionic/p-021f9d72.entry.js +0 -4
  814. package/dist/ionic/p-02542247.system.entry.js +0 -4
  815. package/dist/ionic/p-02ad4bbe.js +0 -4
  816. package/dist/ionic/p-079da3df.entry.js +0 -4
  817. package/dist/ionic/p-12527c4b.entry.js +0 -4
  818. package/dist/ionic/p-15a40a0b.system.entry.js +0 -4
  819. package/dist/ionic/p-1636923f.system.js +0 -4
  820. package/dist/ionic/p-16a61810.entry.js +0 -4
  821. package/dist/ionic/p-1846513c.js +0 -4
  822. package/dist/ionic/p-1c5fb08b.entry.js +0 -4
  823. package/dist/ionic/p-1f16d040.entry.js +0 -4
  824. package/dist/ionic/p-1f19958f.system.entry.js +0 -4
  825. package/dist/ionic/p-2178329b.entry.js +0 -4
  826. package/dist/ionic/p-257046d2.system.js +0 -4
  827. package/dist/ionic/p-262024fd.entry.js +0 -4
  828. package/dist/ionic/p-2765a571.system.entry.js +0 -4
  829. package/dist/ionic/p-2ea71956.system.entry.js +0 -4
  830. package/dist/ionic/p-2fd3c3dd.entry.js +0 -4
  831. package/dist/ionic/p-36be3332.js +0 -4
  832. package/dist/ionic/p-46bcc2f5.js +0 -4
  833. package/dist/ionic/p-4788693d.entry.js +0 -4
  834. package/dist/ionic/p-479f5926.system.entry.js +0 -4
  835. package/dist/ionic/p-482ea916.system.entry.js +0 -4
  836. package/dist/ionic/p-49f481cc.system.entry.js +0 -4
  837. package/dist/ionic/p-521b3971.entry.js +0 -4
  838. package/dist/ionic/p-5cb5f63d.system.entry.js +0 -4
  839. package/dist/ionic/p-5de920f4.system.entry.js +0 -4
  840. package/dist/ionic/p-6812d37d.js +0 -4
  841. package/dist/ionic/p-6f59cdbc.system.entry.js +0 -4
  842. package/dist/ionic/p-70fbf4e2.entry.js +0 -4
  843. package/dist/ionic/p-741a0f0d.system.entry.js +0 -4
  844. package/dist/ionic/p-74fa0a29.system.js +0 -4
  845. package/dist/ionic/p-76b8bcb8.system.entry.js +0 -4
  846. package/dist/ionic/p-79825c01.entry.js +0 -4
  847. package/dist/ionic/p-7a615a5a.entry.js +0 -4
  848. package/dist/ionic/p-7d09d61a.system.entry.js +0 -4
  849. package/dist/ionic/p-7e16220b.entry.js +0 -4
  850. package/dist/ionic/p-7e838f43.system.entry.js +0 -4
  851. package/dist/ionic/p-7f30ad48.entry.js +0 -4
  852. package/dist/ionic/p-7fc8301f.entry.js +0 -4
  853. package/dist/ionic/p-80aed9fb.system.entry.js +0 -4
  854. package/dist/ionic/p-839ea604.js +0 -4
  855. package/dist/ionic/p-8cc34120.entry.js +0 -4
  856. package/dist/ionic/p-8e651c29.entry.js +0 -4
  857. package/dist/ionic/p-8f5e3134.system.entry.js +0 -4
  858. package/dist/ionic/p-9056778e.system.entry.js +0 -4
  859. package/dist/ionic/p-98372d7a.system.entry.js +0 -4
  860. package/dist/ionic/p-98aa0553.entry.js +0 -4
  861. package/dist/ionic/p-9de75bac.system.entry.js +0 -4
  862. package/dist/ionic/p-a02ea777.entry.js +0 -4
  863. package/dist/ionic/p-a1222c24.entry.js +0 -4
  864. package/dist/ionic/p-a4aa6dd2.system.entry.js +0 -4
  865. package/dist/ionic/p-a6e8f678.system.entry.js +0 -4
  866. package/dist/ionic/p-a8459bfb.entry.js +0 -4
  867. package/dist/ionic/p-ae2b3a7a.system.entry.js +0 -4
  868. package/dist/ionic/p-ae828bd9.system.entry.js +0 -4
  869. package/dist/ionic/p-b0aa3806.system.entry.js +0 -4
  870. package/dist/ionic/p-b27bba38.system.entry.js +0 -4
  871. package/dist/ionic/p-b4d2f43c.system.js +0 -4
  872. package/dist/ionic/p-b58686e0.entry.js +0 -4
  873. package/dist/ionic/p-ba0fbecc.entry.js +0 -4
  874. package/dist/ionic/p-bdca4784.js +0 -4
  875. package/dist/ionic/p-c1a871ff.system.entry.js +0 -4
  876. package/dist/ionic/p-c7288e78.system.entry.js +0 -4
  877. package/dist/ionic/p-cb3065b8.entry.js +0 -4
  878. package/dist/ionic/p-cfb4d7e0.js +0 -4
  879. package/dist/ionic/p-d143fefa.system.entry.js +0 -4
  880. package/dist/ionic/p-d6c6541b.system.entry.js +0 -4
  881. package/dist/ionic/p-dff97cfa.entry.js +0 -4
  882. package/dist/ionic/p-e626800f.system.entry.js +0 -4
  883. package/dist/ionic/p-e94c1402.entry.js +0 -4
  884. package/dist/ionic/p-ebc1ca90.system.js +0 -4
  885. package/dist/ionic/p-ed4760ef.entry.js +0 -4
  886. package/dist/ionic/p-f02c41af.system.js +0 -4
  887. package/dist/ionic/p-f0e54781.system.entry.js +0 -4
  888. package/dist/ionic/p-f2224b01.entry.js +0 -4
  889. package/dist/ionic/p-fa8d3b01.entry.js +0 -4
  890. package/dist/ionic/p-fbd01db3.system.js +0 -4
  891. package/dist/types/components/picker-column-internal/picker-column-internal-interfaces.d.ts +0 -5
  892. package/dist/types/components/picker-column-internal/picker-column-internal.d.ts +0 -102
  893. package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
  894. package/dist/types/components/picker-internal/picker-internal.d.ts +0 -102
  895. /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
  896. /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
  897. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.enter.js +0 -0
  898. /package/dist/collection/components/{picker → picker-legacy}/animations/ios.leave.js +0 -0
  899. /package/dist/collection/components/{picker → picker-legacy}/picker-interface.js +0 -0
  900. /package/dist/collection/components/{picker-column → picker-legacy-column}/test/test.utils.js +0 -0
  901. /package/dist/esm-es5/{data-0f3ab200.js → data-691286f1.js} +0 -0
  902. /package/dist/ionic/{p-f7dce541.js → p-5289aade.js} +0 -0
  903. /package/dist/ionic/{p-7330c044.system.js → p-66e6860f.system.js} +0 -0
  904. /package/dist/types/components/{picker → picker-legacy}/animations/ios.enter.d.ts +0 -0
  905. /package/dist/types/components/{picker → picker-legacy}/animations/ios.leave.d.ts +0 -0
  906. /package/dist/types/components/{picker → picker-legacy}/picker-interface.d.ts +0 -0
  907. /package/dist/types/components/{picker-column → picker-legacy-column}/test/test.utils.d.ts +0 -0
@@ -2,368 +2,405 @@
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
4
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
5
- import { m as clamp } from './helpers.js';
6
- import { b as hapticSelectionChanged, h as hapticSelectionEnd, a as hapticSelectionStart } from './haptic.js';
7
- import { g as getClassMap } from './theme.js';
8
- import { b as getIonMode } from './ionic-global.js';
5
+ import { d as doc } from './index5.js';
6
+ import { r as raf, g as getElementRoot } from './helpers.js';
7
+ import { a as hapticSelectionStart, b as hapticSelectionChanged, h as hapticSelectionEnd } from './haptic.js';
8
+ import { a as isPlatform, b as getIonMode } from './ionic-global.js';
9
+ import { c as createColorClasses } from './theme.js';
9
10
 
10
- const pickerColumnIosCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:20px;line-height:42px;pointer-events:none}.picker-opt{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:center center;transform-origin:center center;height:46px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:20px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}:host-context([dir=rtl]) .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}[dir=rtl] .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}}";
11
- const IonPickerColumnIosStyle0 = pickerColumnIosCss;
11
+ const pickerColumnCss = ":host{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}";
12
+ const IonPickerColumnStyle0 = pickerColumnCss;
12
13
 
13
- const pickerColumnMdCss = ".picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}@supports (inset-inline-start: 0){.picker-opt{inset-inline-start:0}}@supports not (inset-inline-start: 0){.picker-opt{left:0}:host-context([dir=rtl]) .picker-opt{left:unset;right:unset;right:0}[dir=rtl] .picker-opt{left:unset;right:unset;right:0}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){left:unset;right:unset;right:0}}}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:22px;line-height:42px;pointer-events:none}.picker-opt{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;height:43px;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:22px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}.picker-prefix,.picker-suffix,.picker-opt.picker-opt-selected{color:var(--ion-color-primary, #3880ff)}";
14
- const IonPickerColumnMdStyle0 = pickerColumnMdCss;
15
-
16
- const PickerColumnCmp = /*@__PURE__*/ proxyCustomElement(class PickerColumnCmp extends HTMLElement {
14
+ const PickerColumn = /*@__PURE__*/ proxyCustomElement(class PickerColumn extends HTMLElement {
17
15
  constructor() {
18
16
  super();
19
17
  this.__registerHost();
20
- this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
21
- this.optHeight = 0;
22
- this.rotateFactor = 0;
23
- this.scaleFactor = 1;
24
- this.velocity = 0;
25
- this.y = 0;
26
- this.noAnimate = true;
27
- // `colDidChange` is a flag that gets set when the column is changed
28
- // dynamically. When this flag is set, the column will refresh
29
- // after the component re-renders to incorporate the new column data.
30
- // This is necessary because `this.refresh` queries for the option elements,
31
- // so it needs to wait for the latest elements to be available in the DOM.
32
- // Ex: column is created with 3 options. User updates the column data
33
- // to have 5 options. The column will still think it only has 3 options.
34
- this.colDidChange = false;
35
- this.col = undefined;
36
- }
37
- colChanged() {
38
- this.colDidChange = true;
39
- }
40
- async connectedCallback() {
41
- let pickerRotateFactor = 0;
42
- let pickerScaleFactor = 0.81;
43
- const mode = getIonMode(this);
44
- if (mode === 'ios') {
45
- pickerRotateFactor = -0.46;
46
- pickerScaleFactor = 1;
47
- }
48
- this.rotateFactor = pickerRotateFactor;
49
- this.scaleFactor = pickerScaleFactor;
50
- this.gesture = (await import('./index3.js')).createGesture({
51
- el: this.el,
52
- gestureName: 'picker-swipe',
53
- gesturePriority: 100,
54
- threshold: 0,
55
- passive: false,
56
- onStart: (ev) => this.onStart(ev),
57
- onMove: (ev) => this.onMove(ev),
58
- onEnd: (ev) => this.onEnd(ev),
59
- });
60
- this.gesture.enable();
61
- // Options have not been initialized yet
62
- // Animation must be disabled through the `noAnimate` flag
63
- // Otherwise, the options will render
64
- // at the top of the column and transition down
65
- this.tmrId = setTimeout(() => {
66
- this.noAnimate = false;
67
- // After initialization, `refresh()` will be called
68
- // At this point, animation will be enabled. The options will
69
- // animate as they are being selected.
70
- this.refresh(true);
71
- }, 250);
72
- }
73
- componentDidLoad() {
74
- this.onDomChange();
75
- }
76
- componentDidUpdate() {
77
- // Options may have changed since last update.
78
- if (this.colDidChange) {
79
- // Animation must be disabled through the `onDomChange` parameter.
80
- // Otherwise, the recently added options will render
81
- // at the top of the column and transition down
82
- this.onDomChange(true, false);
83
- this.colDidChange = false;
84
- }
85
- }
86
- disconnectedCallback() {
87
- if (this.rafId !== undefined)
88
- cancelAnimationFrame(this.rafId);
89
- if (this.tmrId)
90
- clearTimeout(this.tmrId);
91
- if (this.gesture) {
92
- this.gesture.destroy();
93
- this.gesture = undefined;
94
- }
95
- }
96
- emitColChange() {
97
- this.ionPickerColChange.emit(this.col);
98
- }
99
- setSelected(selectedIndex, duration) {
100
- // if there is a selected index, then figure out it's y position
101
- // if there isn't a selected index, then just use the top y position
102
- const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
103
- this.velocity = 0;
104
- // set what y position we're at
105
- if (this.rafId !== undefined)
106
- cancelAnimationFrame(this.rafId);
107
- this.update(y, duration, true);
108
- this.emitColChange();
109
- }
110
- update(y, duration, saveY) {
111
- if (!this.optsEl) {
112
- return;
113
- }
114
- // ensure we've got a good round number :)
115
- let translateY = 0;
116
- let translateZ = 0;
117
- const { col, rotateFactor } = this;
118
- const prevSelected = col.selectedIndex;
119
- const selectedIndex = (col.selectedIndex = this.indexForY(-y));
120
- const durationStr = duration === 0 ? '' : duration + 'ms';
121
- const scaleStr = `scale(${this.scaleFactor})`;
122
- const children = this.optsEl.children;
123
- for (let i = 0; i < children.length; i++) {
124
- const button = children[i];
125
- const opt = col.options[i];
126
- const optOffset = i * this.optHeight + y;
127
- let transform = '';
128
- if (rotateFactor !== 0) {
129
- const rotateX = optOffset * rotateFactor;
130
- if (Math.abs(rotateX) <= 90) {
131
- translateY = 0;
132
- translateZ = 90;
133
- transform = `rotateX(${rotateX}deg) `;
134
- }
135
- else {
136
- translateY = -9999;
18
+ this.__attachShadow();
19
+ this.ionChange = createEvent(this, "ionChange", 7);
20
+ this.isScrolling = false;
21
+ this.isColumnVisible = false;
22
+ this.canExitInputMode = true;
23
+ this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
24
+ const { isColumnVisible, scrollEl } = this;
25
+ if (isColumnVisible && scrollEl) {
26
+ // (Vertical offset from parent) - (three empty picker rows) + (half the height of the target to ensure the scroll triggers)
27
+ const top = target.offsetTop - 3 * target.clientHeight + target.clientHeight / 2;
28
+ if (scrollEl.scrollTop !== top) {
29
+ /**
30
+ * Setting this flag prevents input
31
+ * mode from exiting in the picker column's
32
+ * scroll callback. This is useful when the user manually
33
+ * taps an item or types on the keyboard as both
34
+ * of these can cause a scroll to occur.
35
+ */
36
+ this.canExitInputMode = canExitInputMode;
37
+ scrollEl.scroll({
38
+ top,
39
+ left: 0,
40
+ behavior: smooth ? 'smooth' : undefined,
41
+ });
137
42
  }
138
43
  }
139
- else {
140
- translateZ = 0;
141
- translateY = optOffset;
142
- }
143
- const selected = selectedIndex === i;
144
- transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
145
- if (this.scaleFactor !== 1 && !selected) {
146
- transform += scaleStr;
44
+ };
45
+ this.setPickerItemActiveState = (item, isActive) => {
46
+ if (isActive) {
47
+ item.classList.add(PICKER_ITEM_ACTIVE_CLASS);
147
48
  }
148
- // Update transition duration
149
- if (this.noAnimate) {
150
- opt.duration = 0;
151
- button.style.transitionDuration = '';
152
- }
153
- else if (duration !== opt.duration) {
154
- opt.duration = duration;
155
- button.style.transitionDuration = durationStr;
49
+ else {
50
+ item.classList.remove(PICKER_ITEM_ACTIVE_CLASS);
156
51
  }
157
- // Update transform
158
- if (transform !== opt.transform) {
159
- opt.transform = transform;
52
+ };
53
+ /**
54
+ * When ionInputModeChange is emitted, each column
55
+ * needs to check if it is the one being made available
56
+ * for text entry.
57
+ */
58
+ this.inputModeChange = (ev) => {
59
+ if (!this.numericInput) {
60
+ return;
160
61
  }
161
- button.style.transform = transform;
62
+ const { useInputMode, inputModeColumn } = ev.detail;
162
63
  /**
163
- * Ensure that the select column
164
- * item has the selected class
64
+ * If inputModeColumn is undefined then this means
65
+ * all numericInput columns are being selected.
165
66
  */
166
- opt.selected = selected;
167
- if (selected) {
168
- button.classList.add(PICKER_OPT_SELECTED);
67
+ const isColumnActive = inputModeColumn === undefined || inputModeColumn === this.el;
68
+ if (!useInputMode || !isColumnActive) {
69
+ this.setInputModeActive(false);
70
+ return;
169
71
  }
170
- else {
171
- button.classList.remove(PICKER_OPT_SELECTED);
72
+ this.setInputModeActive(true);
73
+ };
74
+ /**
75
+ * Setting isActive will cause a re-render.
76
+ * As a result, we do not want to cause the
77
+ * re-render mid scroll as this will cause
78
+ * the picker column to jump back to
79
+ * whatever value was selected at the
80
+ * start of the scroll interaction.
81
+ */
82
+ this.setInputModeActive = (state) => {
83
+ if (this.isScrolling) {
84
+ this.scrollEndCallback = () => {
85
+ this.isActive = state;
86
+ };
87
+ return;
172
88
  }
173
- }
174
- this.col.prevSelected = prevSelected;
175
- if (saveY) {
176
- this.y = y;
177
- }
178
- if (this.lastIndex !== selectedIndex) {
179
- // have not set a last index yet
180
- hapticSelectionChanged();
181
- this.lastIndex = selectedIndex;
89
+ this.isActive = state;
90
+ };
91
+ /**
92
+ * When the column scrolls, the component
93
+ * needs to determine which item is centered
94
+ * in the view and will emit an ionChange with
95
+ * the item object.
96
+ */
97
+ this.initializeScrollListener = () => {
98
+ /**
99
+ * The haptics for the wheel picker are
100
+ * an iOS-only feature. As a result, they should
101
+ * be disabled on Android.
102
+ */
103
+ const enableHaptics = isPlatform('ios');
104
+ const { el, scrollEl } = this;
105
+ let timeout;
106
+ let activeEl = this.activeItem;
107
+ const scrollCallback = () => {
108
+ raf(() => {
109
+ if (!scrollEl)
110
+ return;
111
+ if (timeout) {
112
+ clearTimeout(timeout);
113
+ timeout = undefined;
114
+ }
115
+ if (!this.isScrolling) {
116
+ enableHaptics && hapticSelectionStart();
117
+ this.isScrolling = true;
118
+ }
119
+ /**
120
+ * Select item in the center of the column
121
+ * which is the month/year that we want to select
122
+ */
123
+ const bbox = scrollEl.getBoundingClientRect();
124
+ const centerX = bbox.x + bbox.width / 2;
125
+ const centerY = bbox.y + bbox.height / 2;
126
+ /**
127
+ * elementFromPoint returns the top-most element.
128
+ * This means that if an ion-backdrop is overlaying the
129
+ * picker then the appropriate picker column option will
130
+ * not be selected. To account for this, we use elementsFromPoint
131
+ * and use an Array.find to find the appropriate column option
132
+ * at that point.
133
+ *
134
+ * Additionally, the picker column could be used in the
135
+ * Shadow DOM (i.e. in ion-datetime) so we need to make
136
+ * sure we are choosing the correct host otherwise
137
+ * the elements returns by elementsFromPoint will be
138
+ * retargeted. To account for this, we check to see
139
+ * if the picker column has a parent shadow root. If
140
+ * so, we use that shadow root when doing elementsFromPoint.
141
+ * Otherwise, we just use the document.
142
+ */
143
+ const rootNode = el.getRootNode();
144
+ const hasParentShadow = rootNode instanceof ShadowRoot;
145
+ const referenceNode = hasParentShadow ? rootNode : doc;
146
+ /**
147
+ * If the reference node is undefined
148
+ * then it's likely that doc is undefined
149
+ * due to being in an SSR environment.
150
+ */
151
+ if (referenceNode === undefined) {
152
+ return;
153
+ }
154
+ const elementsAtPoint = referenceNode.elementsFromPoint(centerX, centerY);
155
+ /**
156
+ * elementsFromPoint can returns multiple elements
157
+ * so find the relevant picker column option if one exists.
158
+ */
159
+ const newActiveElement = elementsAtPoint.find((el) => el.tagName === 'ION-PICKER-COLUMN-OPTION');
160
+ if (activeEl !== undefined) {
161
+ this.setPickerItemActiveState(activeEl, false);
162
+ }
163
+ if (newActiveElement === undefined || newActiveElement.disabled) {
164
+ return;
165
+ }
166
+ /**
167
+ * If we are selecting a new value,
168
+ * we need to run haptics again.
169
+ */
170
+ if (newActiveElement !== activeEl) {
171
+ enableHaptics && hapticSelectionChanged();
172
+ if (this.canExitInputMode) {
173
+ /**
174
+ * The native iOS wheel picker
175
+ * only dismisses the keyboard
176
+ * once the selected item has changed
177
+ * as a result of a swipe
178
+ * from the user. If `canExitInputMode` is
179
+ * `false` then this means that the
180
+ * scroll is happening as a result of
181
+ * the `value` property programmatically changing
182
+ * either by an application or by the user via the keyboard.
183
+ */
184
+ this.exitInputMode();
185
+ }
186
+ }
187
+ activeEl = newActiveElement;
188
+ this.setPickerItemActiveState(newActiveElement, true);
189
+ timeout = setTimeout(() => {
190
+ this.isScrolling = false;
191
+ enableHaptics && hapticSelectionEnd();
192
+ /**
193
+ * Certain tasks (such as those that
194
+ * cause re-renders) should only be done
195
+ * once scrolling has finished, otherwise
196
+ * flickering may occur.
197
+ */
198
+ const { scrollEndCallback } = this;
199
+ if (scrollEndCallback) {
200
+ scrollEndCallback();
201
+ this.scrollEndCallback = undefined;
202
+ }
203
+ /**
204
+ * Reset this flag as the
205
+ * next scroll interaction could
206
+ * be a scroll from the user. In this
207
+ * case, we should exit input mode.
208
+ */
209
+ this.canExitInputMode = true;
210
+ this.setValue(newActiveElement.value);
211
+ }, 250);
212
+ });
213
+ };
214
+ /**
215
+ * Wrap this in an raf so that the scroll callback
216
+ * does not fire when component is initially shown.
217
+ */
218
+ raf(() => {
219
+ if (!scrollEl)
220
+ return;
221
+ scrollEl.addEventListener('scroll', scrollCallback);
222
+ this.destroyScrollListener = () => {
223
+ scrollEl.removeEventListener('scroll', scrollCallback);
224
+ };
225
+ });
226
+ };
227
+ /**
228
+ * Tells the parent picker to
229
+ * exit text entry mode. This is only called
230
+ * when the selected item changes during scroll, so
231
+ * we know that the user likely wants to scroll
232
+ * instead of type.
233
+ */
234
+ this.exitInputMode = () => {
235
+ const { parentEl } = this;
236
+ if (parentEl == null)
237
+ return;
238
+ parentEl.exitInputMode();
239
+ /**
240
+ * setInputModeActive only takes
241
+ * effect once scrolling stops to avoid
242
+ * a component re-render while scrolling.
243
+ * However, we want the visual active
244
+ * indicator to go away immediately, so
245
+ * we call classList.remove here.
246
+ */
247
+ this.el.classList.remove('picker-column-active');
248
+ };
249
+ this.isActive = false;
250
+ this.disabled = false;
251
+ this.value = undefined;
252
+ this.color = 'primary';
253
+ this.numericInput = false;
254
+ }
255
+ valueChange() {
256
+ if (this.isColumnVisible) {
257
+ /**
258
+ * Only scroll the active item into view when the picker column
259
+ * is actively visible to the user.
260
+ */
261
+ this.scrollActiveItemIntoView(true);
182
262
  }
183
263
  }
184
- decelerate() {
185
- if (this.velocity !== 0) {
186
- // still decelerating
187
- this.velocity *= DECELERATION_FRICTION;
188
- // do not let it go slower than a velocity of 1
189
- this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
190
- let y = this.y + this.velocity;
191
- if (y > this.minY) {
192
- // whoops, it's trying to scroll up farther than the options we have!
193
- y = this.minY;
194
- this.velocity = 0;
195
- }
196
- else if (y < this.maxY) {
197
- // gahh, it's trying to scroll down farther than we can!
198
- y = this.maxY;
199
- this.velocity = 0;
200
- }
201
- this.update(y, 0, true);
202
- const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
203
- if (notLockedIn) {
204
- // isn't locked in yet, keep decelerating until it is
205
- this.rafId = requestAnimationFrame(() => this.decelerate());
264
+ /**
265
+ * Only setup scroll listeners
266
+ * when the picker is visible, otherwise
267
+ * the container will have a scroll
268
+ * height of 0px.
269
+ */
270
+ componentWillLoad() {
271
+ const parentEl = (this.parentEl = this.el.closest('ion-picker'));
272
+ const visibleCallback = (entries) => {
273
+ const ev = entries[0];
274
+ if (ev.isIntersecting) {
275
+ const { activeItem, el } = this;
276
+ this.isColumnVisible = true;
277
+ /**
278
+ * Because this initial call to scrollActiveItemIntoView has to fire before
279
+ * the scroll listener is set up, we need to manage the active class manually.
280
+ */
281
+ const oldActive = getElementRoot(el).querySelector(`.${PICKER_ITEM_ACTIVE_CLASS}`);
282
+ if (oldActive) {
283
+ this.setPickerItemActiveState(oldActive, false);
284
+ }
285
+ this.scrollActiveItemIntoView();
286
+ if (activeItem) {
287
+ this.setPickerItemActiveState(activeItem, true);
288
+ }
289
+ this.initializeScrollListener();
206
290
  }
207
291
  else {
208
- this.velocity = 0;
209
- this.emitColChange();
210
- hapticSelectionEnd();
292
+ this.isColumnVisible = false;
293
+ if (this.destroyScrollListener) {
294
+ this.destroyScrollListener();
295
+ this.destroyScrollListener = undefined;
296
+ }
211
297
  }
298
+ };
299
+ /**
300
+ * Set the root to be the parent picker element
301
+ * This causes the IO callback
302
+ * to be fired in WebKit as soon as the element
303
+ * is visible. If we used the default root value
304
+ * then WebKit would only fire the IO callback
305
+ * after any animations (such as a modal transition)
306
+ * finished, and there would potentially be a flicker.
307
+ */
308
+ new IntersectionObserver(visibleCallback, { threshold: 0.001, root: this.parentEl }).observe(this.el);
309
+ if (parentEl !== null) {
310
+ // TODO(FW-2832): type
311
+ parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
212
312
  }
213
- else if (this.y % this.optHeight !== 0) {
214
- // needs to still get locked into a position so options line up
215
- const currentPos = Math.abs(this.y % this.optHeight);
216
- // create a velocity in the direction it needs to scroll
217
- this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
218
- this.decelerate();
219
- }
220
- }
221
- indexForY(y) {
222
- return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
223
313
  }
224
- onStart(detail) {
225
- // We have to prevent default in order to block scrolling under the picker
226
- // but we DO NOT have to stop propagation, since we still want
227
- // some "click" events to capture
228
- if (detail.event.cancelable) {
229
- detail.event.preventDefault();
230
- }
231
- detail.event.stopPropagation();
232
- hapticSelectionStart();
233
- // reset everything
234
- if (this.rafId !== undefined)
235
- cancelAnimationFrame(this.rafId);
236
- const options = this.col.options;
237
- let minY = options.length - 1;
238
- let maxY = 0;
239
- for (let i = 0; i < options.length; i++) {
240
- if (!options[i].disabled) {
241
- minY = Math.min(minY, i);
242
- maxY = Math.max(maxY, i);
314
+ componentDidRender() {
315
+ const { el, activeItem, isColumnVisible, value } = this;
316
+ if (isColumnVisible && !activeItem) {
317
+ const firstOption = el.querySelector('ion-picker-column-option');
318
+ /**
319
+ * If the picker column does not have an active item and the current value
320
+ * does not match the first item in the picker column, that means
321
+ * the value is out of bounds. In this case, we assign the value to the
322
+ * first item to match the scroll position of the column.
323
+ *
324
+ */
325
+ if (firstOption !== null && firstOption.value !== value) {
326
+ this.setValue(firstOption.value);
243
327
  }
244
328
  }
245
- this.minY = -(minY * this.optHeight);
246
- this.maxY = -(maxY * this.optHeight);
247
329
  }
248
- onMove(detail) {
249
- if (detail.event.cancelable) {
250
- detail.event.preventDefault();
330
+ /** @internal */
331
+ async scrollActiveItemIntoView(smooth = false) {
332
+ const activeEl = this.activeItem;
333
+ if (activeEl) {
334
+ this.centerPickerItemInView(activeEl, smooth, false);
251
335
  }
252
- detail.event.stopPropagation();
253
- // update the scroll position relative to pointer start position
254
- let y = this.y + detail.deltaY;
255
- if (y > this.minY) {
256
- // scrolling up higher than scroll area
257
- y = Math.pow(y, 0.8);
258
- this.bounceFrom = y;
259
- }
260
- else if (y < this.maxY) {
261
- // scrolling down below scroll area
262
- y += Math.pow(this.maxY - y, 0.9);
263
- this.bounceFrom = y;
264
- }
265
- else {
266
- this.bounceFrom = 0;
267
- }
268
- this.update(y, 0, false);
269
336
  }
270
- onEnd(detail) {
271
- if (this.bounceFrom > 0) {
272
- // bounce back up
273
- this.update(this.minY, 100, true);
274
- this.emitColChange();
275
- return;
276
- }
277
- else if (this.bounceFrom < 0) {
278
- // bounce back down
279
- this.update(this.maxY, 100, true);
280
- this.emitColChange();
337
+ /**
338
+ * Sets the value prop and fires the ionChange event.
339
+ * This is used when we need to fire ionChange from
340
+ * user-generated events that cannot be caught with normal
341
+ * input/change event listeners.
342
+ * @internal
343
+ */
344
+ async setValue(value) {
345
+ if (this.disabled === true || this.value === value) {
281
346
  return;
282
347
  }
283
- this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
284
- if (this.velocity === 0 && detail.deltaY === 0) {
285
- const opt = detail.event.target.closest('.picker-opt');
286
- if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
287
- this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
288
- }
289
- }
290
- else {
291
- this.y += detail.deltaY;
292
- if (Math.abs(detail.velocityY) < 0.05) {
293
- const isScrollingUp = detail.deltaY > 0;
294
- const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
295
- if (isScrollingUp && optHeightFraction > 0.5) {
296
- this.velocity = Math.abs(this.velocity) * -1;
297
- }
298
- else if (!isScrollingUp && optHeightFraction <= 0.5) {
299
- this.velocity = Math.abs(this.velocity);
300
- }
301
- }
302
- this.decelerate();
303
- }
348
+ this.value = value;
349
+ this.ionChange.emit({ value });
304
350
  }
305
- refresh(forceRefresh, animated) {
306
- var _a;
307
- let min = this.col.options.length - 1;
308
- let max = 0;
309
- const options = this.col.options;
310
- for (let i = 0; i < options.length; i++) {
311
- if (!options[i].disabled) {
312
- min = Math.min(min, i);
313
- max = Math.max(max, i);
314
- }
315
- }
316
- /**
317
- * Only update selected value if column has a
318
- * velocity of 0. If it does not, then the
319
- * column is animating might land on
320
- * a value different than the value at
321
- * selectedIndex
322
- */
323
- if (this.velocity !== 0) {
324
- return;
325
- }
326
- const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
327
- if (this.col.prevSelected !== selectedIndex || forceRefresh) {
328
- const y = selectedIndex * this.optHeight * -1;
329
- const duration = animated ? TRANSITION_DURATION : 0;
330
- this.velocity = 0;
331
- this.update(y, duration, true);
351
+ /**
352
+ * Sets focus on the scrollable container within the picker column.
353
+ * Use this method instead of the global `pickerColumn.focus()`.
354
+ */
355
+ async setFocus() {
356
+ if (this.scrollEl) {
357
+ this.scrollEl.focus();
332
358
  }
333
359
  }
334
- onDomChange(forceRefresh, animated) {
335
- const colEl = this.optsEl;
336
- if (colEl) {
337
- // DOM READ
338
- // We perfom a DOM read over a rendered item, this needs to happen after the first render or after the the column has changed
339
- this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
340
- }
341
- this.refresh(forceRefresh, animated);
360
+ get activeItem() {
361
+ const { value } = this;
362
+ const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
363
+ return options.find((option) => {
364
+ /**
365
+ * If the whole picker column is disabled, the current value should appear active
366
+ * If the current value item is specifically disabled, it should not appear active
367
+ */
368
+ if (!this.disabled && option.disabled) {
369
+ return false;
370
+ }
371
+ return option.value === value;
372
+ });
342
373
  }
343
374
  render() {
344
- const col = this.col;
375
+ const { color, disabled, isActive, numericInput } = this;
345
376
  const mode = getIonMode(this);
346
- return (h(Host, { key: '06e2ae483a3bcf4fe721ad0c48cded6a1efdc6c0', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
347
- 'max-width': this.col.columnWidth,
348
- } }, col.prefix && (h("div", { class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), h("div", { key: '14bea013788d899edf7155eb3cc10f79fe8e4690', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (h("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (h("div", { class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
377
+ return (h(Host, { key: '486d51508a8fdd0c32437cf0256a68efacb232bc', class: createColorClasses(color, {
378
+ [mode]: true,
379
+ ['picker-column-active']: isActive,
380
+ ['picker-column-numeric-input']: numericInput,
381
+ ['picker-column-disabled']: disabled,
382
+ }) }, h("slot", { key: 'ed842f362a7dad9ae44088094a1357a36fa756b5', name: "prefix" }), h("div", { key: '05cdee8135cf4f74d553d0871ee3d1ec3645266a', class: "picker-opts", tabindex: disabled ? undefined : 0, ref: (el) => {
383
+ this.scrollEl = el;
384
+ } }, h("div", { key: '4c7bab039e1c76a0e60c772685bf131c002be745', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '24a63eafdc3c7143f85618291005ffb16c4adc5d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '4aa8b290bab85d7f0096077e364aa462116a6aee', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: 'b50261844ba7c44f93085a2bf4bcdcedd7d901f3' }), h("div", { key: '8a7074b695a9a2451c099bc5a6f15da5b5d8bf8d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '2add7a4e88ae5f1cb69dc2350248593d273bf743', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'eefa1cfd28fb1427c47d1f1671811fb8e10bb47f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: '14450be7fa297e8ea14f1174f67c69318faa63fd', name: "suffix" })));
349
385
  }
350
386
  get el() { return this; }
351
387
  static get watchers() { return {
352
- "col": ["colChanged"]
353
- }; }
354
- static get style() { return {
355
- ios: IonPickerColumnIosStyle0,
356
- md: IonPickerColumnMdStyle0
388
+ "value": ["valueChange"]
357
389
  }; }
358
- }, [32, "ion-picker-column", {
359
- "col": [16]
390
+ static get style() { return IonPickerColumnStyle0; }
391
+ }, [1, "ion-picker-column", {
392
+ "disabled": [4],
393
+ "value": [1032],
394
+ "color": [513],
395
+ "numericInput": [4, "numeric-input"],
396
+ "isActive": [32],
397
+ "scrollActiveItemIntoView": [64],
398
+ "setValue": [64],
399
+ "setFocus": [64]
360
400
  }, undefined, {
361
- "col": ["colChanged"]
401
+ "value": ["valueChange"]
362
402
  }]);
363
- const PICKER_OPT_SELECTED = 'picker-opt-selected';
364
- const DECELERATION_FRICTION = 0.97;
365
- const MAX_PICKER_SPEED = 90;
366
- const TRANSITION_DURATION = 150;
403
+ const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
367
404
  function defineCustomElement() {
368
405
  if (typeof customElements === "undefined") {
369
406
  return;
@@ -372,10 +409,10 @@ function defineCustomElement() {
372
409
  components.forEach(tagName => { switch (tagName) {
373
410
  case "ion-picker-column":
374
411
  if (!customElements.get(tagName)) {
375
- customElements.define(tagName, PickerColumnCmp);
412
+ customElements.define(tagName, PickerColumn);
376
413
  }
377
414
  break;
378
415
  } });
379
416
  }
380
417
 
381
- export { PickerColumnCmp as P, defineCustomElement as d };
418
+ export { PickerColumn as P, defineCustomElement as d };