@ionic/core 9.0.1-nightly.20260821 → 9.0.1-nightly.20260824

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 (419) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-accordion-group.js +1 -1
  3. package/components/ion-accordion.js +1 -1
  4. package/components/ion-action-sheet.js +1 -1
  5. package/components/ion-alert.js +1 -1
  6. package/components/ion-app.js +1 -1
  7. package/components/ion-avatar.js +1 -1
  8. package/components/ion-back-button.js +1 -1
  9. package/components/ion-backdrop.js +1 -1
  10. package/components/ion-badge.js +1 -1
  11. package/components/ion-breadcrumb.js +1 -1
  12. package/components/ion-breadcrumbs.js +1 -1
  13. package/components/ion-button.js +1 -1
  14. package/components/ion-buttons.js +1 -1
  15. package/components/ion-card-content.js +1 -1
  16. package/components/ion-card-header.js +1 -1
  17. package/components/ion-card-subtitle.js +1 -1
  18. package/components/ion-card-title.js +1 -1
  19. package/components/ion-card.js +1 -1
  20. package/components/ion-checkbox.js +1 -1
  21. package/components/ion-chip.js +1 -1
  22. package/components/ion-col.js +1 -1
  23. package/components/ion-content.js +1 -1
  24. package/components/ion-datetime-button.js +1 -1
  25. package/components/ion-datetime.js +1 -1
  26. package/components/ion-fab-button.js +1 -1
  27. package/components/ion-fab-list.js +1 -1
  28. package/components/ion-fab.js +1 -1
  29. package/components/ion-footer.js +1 -1
  30. package/components/ion-grid.js +1 -1
  31. package/components/ion-header.js +1 -1
  32. package/components/ion-icon.js +1 -1
  33. package/components/ion-img.js +1 -1
  34. package/components/ion-infinite-scroll-content.js +1 -1
  35. package/components/ion-infinite-scroll.js +1 -1
  36. package/components/ion-input-otp.js +1 -1
  37. package/components/ion-input-password-toggle.js +1 -1
  38. package/components/ion-input.js +1 -1
  39. package/components/ion-item-divider.js +1 -1
  40. package/components/ion-item-group.js +1 -1
  41. package/components/ion-item-option.js +1 -1
  42. package/components/ion-item-options.js +1 -1
  43. package/components/ion-item-sliding.js +1 -1
  44. package/components/ion-item.js +1 -1
  45. package/components/ion-label.js +1 -1
  46. package/components/ion-list-header.js +1 -1
  47. package/components/ion-list.js +1 -1
  48. package/components/ion-loading.js +1 -1
  49. package/components/ion-menu-button.js +1 -1
  50. package/components/ion-menu-toggle.js +1 -1
  51. package/components/ion-menu.js +1 -1
  52. package/components/ion-modal.js +1 -1
  53. package/components/ion-nav-link.js +1 -1
  54. package/components/ion-nav.js +1 -1
  55. package/components/ion-note.js +1 -1
  56. package/components/ion-picker-column-option.js +1 -1
  57. package/components/ion-picker-column.js +1 -1
  58. package/components/ion-picker.js +1 -1
  59. package/components/ion-popover.js +1 -1
  60. package/components/ion-progress-bar.js +1 -1
  61. package/components/ion-radio-group.js +1 -1
  62. package/components/ion-radio.js +1 -1
  63. package/components/ion-range.js +1 -1
  64. package/components/ion-refresher-content.js +1 -1
  65. package/components/ion-refresher.js +1 -1
  66. package/components/ion-reorder-group.js +1 -1
  67. package/components/ion-reorder.js +1 -1
  68. package/components/ion-ripple-effect.js +1 -1
  69. package/components/ion-route-redirect.js +1 -1
  70. package/components/ion-route.js +1 -1
  71. package/components/ion-router-link.js +1 -1
  72. package/components/ion-router-outlet.js +1 -1
  73. package/components/ion-router.js +1 -1
  74. package/components/ion-row.js +1 -1
  75. package/components/ion-searchbar.js +1 -1
  76. package/components/ion-segment-button.js +1 -1
  77. package/components/ion-segment-content.js +1 -1
  78. package/components/ion-segment-view.js +1 -1
  79. package/components/ion-segment.js +1 -1
  80. package/components/ion-select-modal.js +1 -1
  81. package/components/ion-select-option.js +1 -1
  82. package/components/ion-select-popover.js +1 -1
  83. package/components/ion-select.js +1 -1
  84. package/components/ion-skeleton-text.js +1 -1
  85. package/components/ion-spinner.js +1 -1
  86. package/components/ion-split-pane.js +1 -1
  87. package/components/ion-tab-bar.js +1 -1
  88. package/components/ion-tab-button.js +1 -1
  89. package/components/ion-tab.js +1 -1
  90. package/components/ion-tabs.js +1 -1
  91. package/components/ion-text.js +1 -1
  92. package/components/ion-textarea.js +1 -1
  93. package/components/ion-thumbnail.js +1 -1
  94. package/components/ion-title.js +1 -1
  95. package/components/ion-toast.js +1 -1
  96. package/components/ion-toggle.js +1 -1
  97. package/components/ion-toolbar.js +1 -1
  98. package/components/{p-gFwXiYC_.js → p-5rFO7X8J.js} +1 -1
  99. package/components/{p-BpLt_Ptn.js → p-7qDu1bID.js} +1 -1
  100. package/components/{p-7PNwKFZi.js → p-B2L09UOs.js} +1 -1
  101. package/components/{p-DcOH6-o5.js → p-BAJ7NctL.js} +1 -1
  102. package/components/{p-Kmrg3Fed.js → p-BE9noJ1O.js} +1 -1
  103. package/components/{p-CgvDC7hC.js → p-BFwL2yyK.js} +1 -1
  104. package/components/{p-DysqCsJu.js → p-BWHBdLfY.js} +1 -1
  105. package/components/{p-SR-LLqp_.js → p-Bcm-GVQM.js} +1 -1
  106. package/{dist/ionic/p-9wczfs_v.js → components/p-BcuLPPAE.js} +1 -1
  107. package/components/p-BhlP16sB.js +4 -0
  108. package/components/{p-H1f2qsk4.js → p-BqE7e5gH.js} +1 -1
  109. package/components/{p-BqBDq1Ma.js → p-C12SAK00.js} +1 -1
  110. package/components/{p-A8MJRBIY.js → p-C8mPeq0D.js} +1 -1
  111. package/components/{p-Bx2saTHs.js → p-CB06XtlF.js} +1 -1
  112. package/components/{p-BgUIV8NQ.js → p-CBhGZ6rF.js} +1 -1
  113. package/components/{p-B8MQjdvk.js → p-CDKY4TZ_.js} +1 -1
  114. package/components/{p-CWETxTjE.js → p-CEkamjav.js} +1 -1
  115. package/components/p-CFtAWaB6.js +4 -0
  116. package/components/{p-DEW7CnUc.js → p-CJTKYpZv.js} +1 -1
  117. package/components/{p-BA_4ZIEg.js → p-CLZPNP7x.js} +1 -1
  118. package/components/{p-tX3UxCnU.js → p-COxY7PLK.js} +1 -1
  119. package/components/p-CQxPXWNM.js +4 -0
  120. package/components/{p-DDdkefwf.js → p-CRcX0EGs.js} +1 -1
  121. package/components/{p-Bg4OwDwb.js → p-CXQzYyda.js} +1 -1
  122. package/components/p-CXpy69Ei.js +4 -0
  123. package/{dist/ionic/p-BZxjcGRP.js → components/p-CdSLe3Q3.js} +1 -1
  124. package/components/p-CoGD-oMG.js +4 -0
  125. package/components/p-CpYeYl3u.js +4 -0
  126. package/components/{p-BFtL8t1r.js → p-CyKlfXdt.js} +1 -1
  127. package/components/{p-CHswSpKy.js → p-D6PwfJ9F.js} +1 -1
  128. package/components/{p-DGwySvgi.js → p-D6dNJoqU.js} +1 -1
  129. package/components/{p-e8f0KKOJ.js → p-D8BOfNYz.js} +1 -1
  130. package/{dist/ionic/p-D0dfUysx.js → components/p-DG-dUCKp.js} +1 -1
  131. package/{dist/ionic/p-DF_Uqql8.js → components/p-DH0rRXjx.js} +1 -1
  132. package/components/{p-D7ysFE2B.js → p-DMkSsriG.js} +1 -1
  133. package/components/{p-C3QTG7as.js → p-Dcxr2vKX.js} +1 -1
  134. package/components/{p-CmpstNYe.js → p-DkEb3SCT.js} +1 -1
  135. package/components/p-Dr-rBSUW.js +4 -0
  136. package/components/{p-CrzR7nZk.js → p-FQTgh7aH.js} +1 -1
  137. package/components/{p-DrehWDfv.js → p-KusMkAnB.js} +1 -1
  138. package/components/p-MHpJ2A_m.js +4 -0
  139. package/components/p-QgdyH-Zs.js +4 -0
  140. package/components/{p-BMfgF-Tv.js → p-RRH-7cpd.js} +1 -1
  141. package/components/{p-CQAjyETU.js → p-U1X_lw_6.js} +1 -1
  142. package/components/p-UKksD3f9.js +4 -0
  143. package/components/{p-v2NpoOHp.js → p-VTfnz_8u.js} +1 -1
  144. package/components/p-fP0QF3iG.js +4 -0
  145. package/components/{p-BPDxVIRr.js → p-l-zxxFre.js} +1 -1
  146. package/components/{p-BrFaQbGY.js → p-mXsQnyWB.js} +1 -1
  147. package/components/p-ntAkt4Ra.js +4 -0
  148. package/components/p-ufB0gCSU.js +4 -0
  149. package/dist/cjs/{animation-D-OqR4a4.js → animation-ihPP_z2n.js} +1 -1
  150. package/dist/cjs/{app-globals-BzgwARwJ.js → app-globals-BlkzA410.js} +1 -1
  151. package/dist/cjs/{button-active-BlWSD7uK.js → button-active-ItGBjzmO.js} +1 -1
  152. package/dist/cjs/{format-D7ig6Vm0.js → format-CPIqtp4x.js} +1 -1
  153. package/dist/cjs/{framework-delegate-BZUx4TnE.js → framework-delegate-DhyWUPGg.js} +1 -1
  154. package/dist/cjs/{hardware-back-button-JOAEFSzc.js → hardware-back-button-D5f_kASb.js} +1 -1
  155. package/dist/cjs/{helpers-Dj5o76mq.js → helpers-BCLkFTTd.js} +1 -1
  156. package/dist/cjs/{index-C8zH6b3d.js → index-49DTLc_Z.js} +2 -2
  157. package/dist/cjs/{index-CZ6vzt_q.js → index-BcyiqD6R.js} +5 -5
  158. package/dist/cjs/{index-BrVMoqUk.js → index-Bgz6BcKx.js} +50 -16
  159. package/dist/cjs/{index-D4T0SA6Q.js → index-BocV_y-c.js} +1 -1
  160. package/dist/cjs/{index-2sO-zkZ2.js → index-CldjPPyP.js} +4 -4
  161. package/dist/cjs/{index-Csue6G3m.js → index-xum7jdbq.js} +2 -2
  162. package/dist/cjs/index.cjs.js +12 -12
  163. package/dist/cjs/{input-shims-Bh7bnt2v.js → input-shims-Jisy7U7-.js} +3 -3
  164. package/dist/cjs/{input.utils-Cq3g9uHy.js → input.utils-BDTpGrfn.js} +1 -1
  165. package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
  166. package/dist/cjs/ion-action-sheet.cjs.entry.js +10 -10
  167. package/dist/cjs/ion-alert.cjs.entry.js +10 -10
  168. package/dist/cjs/ion-app_8.cjs.entry.js +12 -12
  169. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  170. package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
  171. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  172. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  173. package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
  174. package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
  175. package/dist/cjs/ion-checkbox.cjs.entry.js +4 -4
  176. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  177. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  178. package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
  179. package/dist/cjs/ion-datetime.cjs.entry.js +32 -24
  180. package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
  181. package/dist/cjs/ion-img.cjs.entry.js +3 -3
  182. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
  183. package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
  184. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
  185. package/dist/cjs/ion-input.cjs.entry.js +5 -5
  186. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  187. package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
  188. package/dist/cjs/ion-loading.cjs.entry.js +8 -8
  189. package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
  190. package/dist/cjs/ion-modal.cjs.entry.js +9 -9
  191. package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
  192. package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
  193. package/dist/cjs/ion-picker-column.cjs.entry.js +210 -46
  194. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  195. package/dist/cjs/ion-popover.cjs.entry.js +8 -8
  196. package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
  197. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  198. package/dist/cjs/ion-range.cjs.entry.js +4 -4
  199. package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -6
  200. package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
  201. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  202. package/dist/cjs/ion-route_4.cjs.entry.js +4 -4
  203. package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
  204. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  205. package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
  206. package/dist/cjs/ion-segment_2.cjs.entry.js +3 -3
  207. package/dist/cjs/ion-select-modal.cjs.entry.js +8 -8
  208. package/dist/cjs/ion-select_3.cjs.entry.js +9 -9
  209. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  210. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  211. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +3 -3
  212. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  213. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  214. package/dist/cjs/ion-textarea.cjs.entry.js +5 -5
  215. package/dist/cjs/ion-toast.cjs.entry.js +8 -8
  216. package/dist/cjs/ion-toggle.cjs.entry.js +4 -4
  217. package/dist/cjs/{ionic-global-DvgIzM2F.js → ionic-global-BMU-Us1Q.js} +1 -1
  218. package/dist/cjs/ionic.cjs.js +4 -4
  219. package/dist/cjs/{ios.transition-zIgdoSYe.js → ios.transition-OCcCN--B.js} +4 -4
  220. package/dist/cjs/{item-multiple-inputs-DG-ZGm6j.js → item-multiple-inputs-BH9yPC66.js} +1 -1
  221. package/dist/cjs/loader.cjs.js +3 -3
  222. package/dist/cjs/{md.transition-CXeJ9rfh.js → md.transition-D0o2IIbo.js} +4 -4
  223. package/dist/cjs/{overlays-Bg0auTQa.js → overlays-hCtsdAvn.js} +5 -5
  224. package/dist/cjs/{select-option-render-CgnqHkpg.js → select-option-render-BPjGDlsG.js} +2 -2
  225. package/dist/cjs/{slot-mutation-controller-BJEJzx_e.js → slot-mutation-controller-IQ250LoG.js} +1 -1
  226. package/dist/cjs/{status-tap-DxbUM5XX.js → status-tap-Bakl9czs.js} +3 -3
  227. package/dist/cjs/{swipe-back-F_DBt-Aw.js → swipe-back-Cv4OZVJ5.js} +2 -2
  228. package/dist/collection/collection-manifest.json +1 -1
  229. package/dist/collection/components/datetime/datetime.js +25 -17
  230. package/dist/collection/components/picker-column/picker-column.js +207 -43
  231. package/dist/docs.json +279 -48
  232. package/dist/esm/{animation-TxGPYeDn.js → animation-B6KGUJwl.js} +1 -1
  233. package/dist/esm/{app-globals-Do8rJest.js → app-globals-BvutUX8P.js} +1 -1
  234. package/dist/esm/{button-active-ChA4D-ml.js → button-active-DRNebs9r.js} +1 -1
  235. package/dist/esm/{format-CVk5e_GP.js → format-BF3btM7P.js} +1 -1
  236. package/dist/esm/{framework-delegate-DaLWnISz.js → framework-delegate-60cEIAgt.js} +1 -1
  237. package/dist/esm/{hardware-back-button-D8W4L0JP.js → hardware-back-button-rhkwRNk2.js} +1 -1
  238. package/dist/esm/{helpers-BIgoInJU.js → helpers-DLLANtRS.js} +1 -1
  239. package/dist/esm/{index-C8Dsa6li.js → index-BZHVn0iF.js} +4 -4
  240. package/dist/esm/{index-DHw2lZxe.js → index-Bl4BUvBL.js} +2 -2
  241. package/dist/esm/{index-BmOR8tCv.js → index-DOrtAUWV.js} +2 -2
  242. package/dist/esm/{index-C5ZdL0qp.js → index-D_7MeuVD.js} +5 -5
  243. package/dist/esm/{index-D3o-MD4_.js → index-JgU5uTSY.js} +1 -1
  244. package/dist/esm/{index-CKYcsw8f.js → index-h81G-QbJ.js} +50 -16
  245. package/dist/esm/index.js +12 -12
  246. package/dist/esm/{input-shims-09NN97kF.js → input-shims-C2ipc_XX.js} +3 -3
  247. package/dist/esm/{input.utils-BxyH9l1w.js → input.utils-D-qoPjqr.js} +1 -1
  248. package/dist/esm/ion-accordion_2.entry.js +3 -3
  249. package/dist/esm/ion-action-sheet.entry.js +10 -10
  250. package/dist/esm/ion-alert.entry.js +10 -10
  251. package/dist/esm/ion-app_8.entry.js +12 -12
  252. package/dist/esm/ion-avatar_3.entry.js +2 -2
  253. package/dist/esm/ion-back-button.entry.js +3 -3
  254. package/dist/esm/ion-backdrop.entry.js +2 -2
  255. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  256. package/dist/esm/ion-button_2.entry.js +3 -3
  257. package/dist/esm/ion-card_5.entry.js +3 -3
  258. package/dist/esm/ion-checkbox.entry.js +4 -4
  259. package/dist/esm/ion-chip.entry.js +2 -2
  260. package/dist/esm/ion-col_3.entry.js +2 -2
  261. package/dist/esm/ion-datetime-button.entry.js +4 -4
  262. package/dist/esm/ion-datetime.entry.js +32 -24
  263. package/dist/esm/ion-fab_3.entry.js +3 -3
  264. package/dist/esm/ion-img.entry.js +3 -3
  265. package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
  266. package/dist/esm/ion-input-otp.entry.js +3 -3
  267. package/dist/esm/ion-input-password-toggle.entry.js +2 -2
  268. package/dist/esm/ion-input.entry.js +5 -5
  269. package/dist/esm/ion-item-option_3.entry.js +4 -4
  270. package/dist/esm/ion-item_8.entry.js +3 -3
  271. package/dist/esm/ion-loading.entry.js +8 -8
  272. package/dist/esm/ion-menu_3.entry.js +8 -8
  273. package/dist/esm/ion-modal.entry.js +9 -9
  274. package/dist/esm/ion-nav_2.entry.js +6 -6
  275. package/dist/esm/ion-picker-column-option.entry.js +3 -3
  276. package/dist/esm/ion-picker-column.entry.js +211 -47
  277. package/dist/esm/ion-picker.entry.js +2 -2
  278. package/dist/esm/ion-popover.entry.js +8 -8
  279. package/dist/esm/ion-progress-bar.entry.js +3 -3
  280. package/dist/esm/ion-radio_2.entry.js +4 -4
  281. package/dist/esm/ion-range.entry.js +4 -4
  282. package/dist/esm/ion-refresher_2.entry.js +6 -6
  283. package/dist/esm/ion-reorder_2.entry.js +4 -4
  284. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  285. package/dist/esm/ion-route_4.entry.js +4 -4
  286. package/dist/esm/ion-searchbar.entry.js +3 -3
  287. package/dist/esm/ion-segment-content.entry.js +1 -1
  288. package/dist/esm/ion-segment-view.entry.js +1 -1
  289. package/dist/esm/ion-segment_2.entry.js +3 -3
  290. package/dist/esm/ion-select-modal.entry.js +8 -8
  291. package/dist/esm/ion-select_3.entry.js +9 -9
  292. package/dist/esm/ion-spinner.entry.js +2 -2
  293. package/dist/esm/ion-split-pane.entry.js +2 -2
  294. package/dist/esm/ion-tab-bar_2.entry.js +3 -3
  295. package/dist/esm/ion-tab_2.entry.js +3 -3
  296. package/dist/esm/ion-text.entry.js +2 -2
  297. package/dist/esm/ion-textarea.entry.js +5 -5
  298. package/dist/esm/ion-toast.entry.js +8 -8
  299. package/dist/esm/ion-toggle.entry.js +4 -4
  300. package/dist/esm/{ionic-global-lrowsHfi.js → ionic-global-B7I1sdvg.js} +1 -1
  301. package/dist/esm/ionic.js +5 -5
  302. package/dist/esm/{ios.transition-BQhADrk1.js → ios.transition-C-6IaIxe.js} +4 -4
  303. package/dist/esm/{item-multiple-inputs-D_N3fDkD.js → item-multiple-inputs-DI91syHS.js} +1 -1
  304. package/dist/esm/loader.js +4 -4
  305. package/dist/esm/{md.transition-D58NpmRa.js → md.transition-dyqt0t0d.js} +4 -4
  306. package/dist/esm/{overlays-BpnIFlXI.js → overlays-CiFoZEq1.js} +5 -5
  307. package/dist/esm/{select-option-render-Dv7KImop.js → select-option-render-CUJpruSC.js} +2 -2
  308. package/dist/esm/{slot-mutation-controller-rS_T3FDR.js → slot-mutation-controller-wFuztlVD.js} +1 -1
  309. package/dist/esm/{status-tap-CpFQMLl6.js → status-tap-Dn_42wiy.js} +3 -3
  310. package/dist/esm/{swipe-back-rmc7zeNW.js → swipe-back-CqOqrHW7.js} +2 -2
  311. package/dist/ionic/index.esm.js +1 -1
  312. package/dist/ionic/ionic.esm.js +1 -1
  313. package/dist/ionic/{p-d8deff43.entry.js → p-026e2e4c.entry.js} +1 -1
  314. package/dist/ionic/{p-RzUn7cKs.js → p-06ZcwRF5.js} +1 -1
  315. package/dist/ionic/{p-b62bfce8.entry.js → p-082b8125.entry.js} +1 -1
  316. package/dist/ionic/{p-16e9f542.entry.js → p-0b52d921.entry.js} +1 -1
  317. package/dist/ionic/{p-485fb218.entry.js → p-1a20571c.entry.js} +1 -1
  318. package/dist/ionic/{p-90ba736e.entry.js → p-1f66c230.entry.js} +1 -1
  319. package/dist/ionic/{p-a0fee899.entry.js → p-2aabd568.entry.js} +1 -1
  320. package/dist/ionic/{p-295ff427.entry.js → p-2ff12c8a.entry.js} +1 -1
  321. package/dist/ionic/{p-5b906fd6.entry.js → p-326e0d05.entry.js} +1 -1
  322. package/dist/ionic/p-392079fa.entry.js +4 -0
  323. package/dist/ionic/{p-48c859fe.entry.js → p-39415b06.entry.js} +1 -1
  324. package/dist/ionic/{p-8edf9c85.entry.js → p-3bad6750.entry.js} +1 -1
  325. package/dist/ionic/{p-6f048604.entry.js → p-43bae3f5.entry.js} +1 -1
  326. package/dist/ionic/{p-d3384a40.entry.js → p-47b8b59a.entry.js} +1 -1
  327. package/dist/ionic/{p-a389f473.entry.js → p-4dcd329a.entry.js} +1 -1
  328. package/dist/ionic/{p-478035a7.entry.js → p-53ba5651.entry.js} +1 -1
  329. package/dist/ionic/{p-bbf6878c.entry.js → p-546b1109.entry.js} +1 -1
  330. package/dist/ionic/{p-bdb4c7e5.entry.js → p-5dc53bdf.entry.js} +1 -1
  331. package/dist/ionic/{p-1df75f9e.entry.js → p-5ed60413.entry.js} +1 -1
  332. package/dist/ionic/{p-c91501b7.entry.js → p-5fce4bf4.entry.js} +1 -1
  333. package/dist/ionic/{p-ddfb7e5f.entry.js → p-6d84fa9f.entry.js} +1 -1
  334. package/dist/ionic/{p-0a9d2de8.entry.js → p-70334101.entry.js} +1 -1
  335. package/dist/ionic/{p-72ad7c64.entry.js → p-7c859f42.entry.js} +1 -1
  336. package/dist/ionic/{p-f376876b.entry.js → p-83aa7d47.entry.js} +1 -1
  337. package/dist/ionic/{p-eeabd236.entry.js → p-8d72244b.entry.js} +1 -1
  338. package/dist/ionic/{p-c075e3e4.entry.js → p-8db6e422.entry.js} +1 -1
  339. package/dist/ionic/{p-9e455875.entry.js → p-8e388a30.entry.js} +1 -1
  340. package/dist/ionic/{p-b5f37106.entry.js → p-9452849d.entry.js} +1 -1
  341. package/dist/ionic/{p-75887ee0.entry.js → p-986a1db8.entry.js} +1 -1
  342. package/dist/ionic/{p-a54bcd16.entry.js → p-9e688396.entry.js} +1 -1
  343. package/dist/ionic/{p-cad4eccf.entry.js → p-9eba0d8a.entry.js} +1 -1
  344. package/dist/ionic/{p-8e007f11.entry.js → p-9f2d3987.entry.js} +1 -1
  345. package/{components/p-BSARlp49.js → dist/ionic/p-BC17SPKH.js} +1 -1
  346. package/dist/ionic/p-BRa1Jjxr.js +4 -0
  347. package/dist/ionic/{p-De0eY881.js → p-BRc8gq5v.js} +1 -1
  348. package/{components/p-66ogmUZU.js → dist/ionic/p-BpG7jkT9.js} +1 -1
  349. package/dist/ionic/{p-B1Y7LZhV.js → p-C10K-FJg.js} +1 -1
  350. package/dist/ionic/{p-D9yvytgv.js → p-C2BY_4Wp.js} +1 -1
  351. package/dist/ionic/{p-fVT-pm3r.js → p-CH8tk7Pr.js} +1 -1
  352. package/dist/ionic/{p-CDBop-kz.js → p-CTBfxfjC.js} +1 -1
  353. package/dist/ionic/p-Cc-fFNy8.js +4 -0
  354. package/dist/ionic/p-Cc4w3fVf.js +4 -0
  355. package/{components/p-BuPAFTWI.js → dist/ionic/p-CoEa7CiN.js} +1 -1
  356. package/dist/ionic/p-CvRL-Eju.js +4 -0
  357. package/dist/ionic/{p-DdhHqKj-.js → p-DA52akcQ.js} +1 -1
  358. package/dist/ionic/p-DA88iqXQ.js +4 -0
  359. package/dist/ionic/{p-DXJgZWgi.js → p-DMj-M2c4.js} +1 -1
  360. package/dist/ionic/p-D_IgV7tz.js +4 -0
  361. package/dist/ionic/{p-VquyMbjp.js → p-DoUx_N0R.js} +1 -1
  362. package/dist/ionic/{p-C4IBDDj6.js → p-KJ5pLPiN.js} +1 -1
  363. package/dist/ionic/{p-ByLaqOPm.js → p-Q9w8L_Sw.js} +1 -1
  364. package/dist/ionic/{p-ClrlQU2y.js → p-S1shXW5M.js} +1 -1
  365. package/dist/ionic/{p-1db2afb4.entry.js → p-a2fccdaa.entry.js} +1 -1
  366. package/dist/ionic/{p-fbd83d4c.entry.js → p-ac71362a.entry.js} +1 -1
  367. package/dist/ionic/{p-b7a11b58.entry.js → p-b62c04b2.entry.js} +1 -1
  368. package/dist/ionic/p-b8cd338d.entry.js +4 -0
  369. package/dist/ionic/{p-5f216b79.entry.js → p-ca57763d.entry.js} +1 -1
  370. package/dist/ionic/{p-39a8d4e0.entry.js → p-cc749877.entry.js} +1 -1
  371. package/dist/ionic/{p-56307aea.entry.js → p-d1539609.entry.js} +1 -1
  372. package/dist/ionic/{p-cdc5115e.entry.js → p-d1b888de.entry.js} +1 -1
  373. package/dist/ionic/p-da5a7bcd.entry.js +4 -0
  374. package/dist/ionic/{p-70ee8888.entry.js → p-dadcb3d2.entry.js} +1 -1
  375. package/dist/ionic/{p-0eb50dca.entry.js → p-e090eca3.entry.js} +1 -1
  376. package/dist/ionic/{p-29970df5.entry.js → p-e5a54d99.entry.js} +1 -1
  377. package/dist/ionic/{p-c49165af.entry.js → p-e93cc1e1.entry.js} +1 -1
  378. package/dist/ionic/{p-f7dd1ed9.entry.js → p-eab77a74.entry.js} +1 -1
  379. package/dist/ionic/{p-aebc4d69.entry.js → p-eaeac54e.entry.js} +1 -1
  380. package/dist/ionic/{p-e538f18d.entry.js → p-ecfc9c71.entry.js} +1 -1
  381. package/dist/ionic/{p-5ee2d7b1.entry.js → p-eeb65463.entry.js} +1 -1
  382. package/dist/ionic/{p-881b6954.entry.js → p-f0645c98.entry.js} +1 -1
  383. package/dist/ionic/{p-d8bae128.entry.js → p-f607ad4f.entry.js} +1 -1
  384. package/dist/ionic/{p-61c799d1.entry.js → p-fb4dabbb.entry.js} +1 -1
  385. package/dist/ionic/{p-63bbba8d.entry.js → p-fe80ebb1.entry.js} +1 -1
  386. package/dist/ionic/p-h81G-QbJ.js +6 -0
  387. package/dist/ionic/p-w3KTiug9.js +4 -0
  388. package/{components/p-RFfE9hF6.js → dist/ionic/p-wdSUbx5C.js} +1 -1
  389. package/dist/types/components/picker-column/picker-column.d.ts +42 -0
  390. package/dist/types/components.d.ts +1 -1
  391. package/dist/types/stencil-public-runtime.d.ts +12 -0
  392. package/hydrate/index.js +260 -67
  393. package/hydrate/index.mjs +260 -67
  394. package/loader/index.d.ts +1 -1
  395. package/package.json +2 -2
  396. package/components/p-6Vp915Y7.js +0 -4
  397. package/components/p-AQcCdH2_.js +0 -4
  398. package/components/p-BE48ZNam.js +0 -4
  399. package/components/p-BdwCtX8Y.js +0 -4
  400. package/components/p-BxhE2W85.js +0 -4
  401. package/components/p-CR9OgE6N.js +0 -4
  402. package/components/p-CaZeZIL2.js +0 -4
  403. package/components/p-DCWfzDM8.js +0 -4
  404. package/components/p-DQ1IPvZO.js +0 -4
  405. package/components/p-DfdYCsov.js +0 -4
  406. package/components/p-DhOoEIAs.js +0 -4
  407. package/components/p-Dl_7b_UJ.js +0 -4
  408. package/components/p-HVYBAhFx.js +0 -4
  409. package/dist/ionic/p-18d532a3.entry.js +0 -4
  410. package/dist/ionic/p-49b9d405.entry.js +0 -4
  411. package/dist/ionic/p-8f51110d.entry.js +0 -4
  412. package/dist/ionic/p-B5RyLYvl.js +0 -4
  413. package/dist/ionic/p-BQv5i5Kf.js +0 -4
  414. package/dist/ionic/p-BfiwBb5h.js +0 -4
  415. package/dist/ionic/p-BnGA34Pd.js +0 -4
  416. package/dist/ionic/p-C06QNN45.js +0 -4
  417. package/dist/ionic/p-CCVlNZ__.js +0 -4
  418. package/dist/ionic/p-CKYcsw8f.js +0 -5
  419. package/dist/ionic/p-CazSodad.js +0 -4
@@ -20,6 +20,12 @@ export class PickerColumn {
20
20
  this.isColumnVisible = false;
21
21
  this.canExitInputMode = true;
22
22
  this.updateValueTextOnScroll = false;
23
+ this.isUserScroll = false;
24
+ /**
25
+ * The haptics for the wheel picker are an iOS-only feature. As a result,
26
+ * they should be disabled on Android.
27
+ */
28
+ this.enableHaptics = false;
23
29
  this.ariaLabel = null;
24
30
  this.isActive = false;
25
31
  /**
@@ -51,6 +57,12 @@ export class PickerColumn {
51
57
  */
52
58
  this.canExitInputMode = canExitInputMode;
53
59
  this.updateValueTextOnScroll = false;
60
+ /**
61
+ * This scroll takes over from whatever the user was doing, so an outside
62
+ * press must not commit an option the column is only passing through.
63
+ */
64
+ this.isUserScroll = false;
65
+ this.stopWatchingForOutsidePress();
54
66
  scrollEl.scroll({
55
67
  top,
56
68
  left: 0,
@@ -105,6 +117,117 @@ export class PickerColumn {
105
117
  }
106
118
  this.isActive = state;
107
119
  };
120
+ this.clearScrollEndTimeout = () => {
121
+ if (this.scrollEndTimeout) {
122
+ clearTimeout(this.scrollEndTimeout);
123
+ this.scrollEndTimeout = undefined;
124
+ }
125
+ };
126
+ /**
127
+ * Resets the idle timer that commits the centered option.
128
+ */
129
+ this.resetScrollEndTimeout = () => {
130
+ this.clearScrollEndTimeout();
131
+ this.scrollEndTimeout = setTimeout(this.settle, SCROLL_END_DELAY);
132
+ };
133
+ /**
134
+ * Capture so the column still commits if an application's own pointerdown
135
+ * handler stops the event before it reaches the document.
136
+ */
137
+ this.watchForOutsidePress = () => {
138
+ doc?.addEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
139
+ };
140
+ this.stopWatchingForOutsidePress = () => {
141
+ doc?.removeEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
142
+ };
143
+ /**
144
+ * Resets everything the current scroll interaction is holding, so nothing
145
+ * pending on it can commit later.
146
+ */
147
+ this.discardScroll = () => {
148
+ this.stopWatchingForOutsidePress();
149
+ this.clearScrollEndTimeout();
150
+ this.scrollEndCallback = undefined;
151
+ this.centeredOption = undefined;
152
+ this.haltedAtScrollTop = undefined;
153
+ this.isScrolling = false;
154
+ this.isUserScroll = false;
155
+ this.canExitInputMode = true;
156
+ };
157
+ /**
158
+ * Commits the option that is currently centered under the highlight and ends
159
+ * the scroll interaction.
160
+ */
161
+ this.settle = () => {
162
+ const { centeredOption } = this;
163
+ this.clearScrollEndTimeout();
164
+ this.stopWatchingForOutsidePress();
165
+ this.isUserScroll = false;
166
+ this.isScrolling = false;
167
+ this.updateValueTextOnScroll = true;
168
+ this.enableHaptics && hapticSelectionEnd();
169
+ /**
170
+ * Certain tasks (such as those that
171
+ * cause re-renders) should only be done
172
+ * once scrolling has finished, otherwise
173
+ * flickering may occur.
174
+ */
175
+ const { scrollEndCallback } = this;
176
+ if (scrollEndCallback) {
177
+ scrollEndCallback();
178
+ this.scrollEndCallback = undefined;
179
+ }
180
+ /**
181
+ * Reset this flag as the
182
+ * next scroll interaction could
183
+ * be a scroll from the user. In this
184
+ * case, we should exit input mode.
185
+ */
186
+ this.canExitInputMode = true;
187
+ if (centeredOption !== undefined) {
188
+ // Cleared here so a later scroll that centers nothing cannot fall back on it.
189
+ this.centeredOption = undefined;
190
+ if (centeredOption.isConnected) {
191
+ this.setValue(centeredOption.value);
192
+ }
193
+ }
194
+ };
195
+ /**
196
+ * Commits the option the user can see when they press anything outside of the
197
+ * column during a scroll they started. This runs on pointerdown rather than
198
+ * click so the value is up to date by the time an application's own click
199
+ * handler (a Save button, for example) reads it.
200
+ */
201
+ this.onPointerDownOutside = (ev) => {
202
+ const { centeredOption, parentEl, scrollEl } = this;
203
+ if (!this.isScrolling) {
204
+ return;
205
+ }
206
+ /**
207
+ * The column can live in another component's Shadow DOM, where a document
208
+ * listener sees the target retargeted to the outer host. The composed path
209
+ * is the only reliable way to tell a press on the column apart.
210
+ */
211
+ const path = ev.composedPath();
212
+ /**
213
+ * A press anywhere in the parent picker counts as inside, so reaching for a
214
+ * sibling wheel leaves this column coasting.
215
+ */
216
+ if (path.includes(this.el) || (parentEl != null && path.includes(parentEl))) {
217
+ return;
218
+ }
219
+ /**
220
+ * Landing on the centered option halts the in-flight momentum scroll, so the
221
+ * committed value and the option the user is left looking at agree. The
222
+ * option list can be replaced mid-scroll, and a detached option has no
223
+ * offset to center on.
224
+ */
225
+ if (centeredOption !== undefined && centeredOption.isConnected) {
226
+ this.centerPickerItemInView(centeredOption, false, false);
227
+ this.haltedAtScrollTop = scrollEl?.scrollTop;
228
+ }
229
+ this.settle();
230
+ };
108
231
  /**
109
232
  * When the column scrolls, the component
110
233
  * needs to determine which item is centered
@@ -112,27 +235,42 @@ export class PickerColumn {
112
235
  * the item object.
113
236
  */
114
237
  this.initializeScrollListener = () => {
115
- /**
116
- * The haptics for the wheel picker are
117
- * an iOS-only feature. As a result, they should
118
- * be disabled on Android.
119
- */
120
- const enableHaptics = isPlatform('ios');
238
+ this.enableHaptics = isPlatform('ios');
121
239
  const { el, scrollEl } = this;
122
- let timeout;
123
240
  let activeEl = this.activeItem;
124
241
  const scrollCallback = () => {
125
242
  raf(() => {
126
- if (!scrollEl)
243
+ /**
244
+ * This frame cannot be cancelled, and moving the column disconnects it
245
+ * without the observer reporting a change, so this checks live state.
246
+ */
247
+ if (!this.el.isConnected || !this.isColumnVisible || !scrollEl)
127
248
  return;
128
- if (timeout) {
129
- clearTimeout(timeout);
130
- timeout = undefined;
249
+ const { haltedAtScrollTop } = this;
250
+ if (haltedAtScrollTop !== undefined) {
251
+ /**
252
+ * Still at the halted position, so this frame is the halt landing
253
+ * rather than the wheel moving, and re-arming would start a second
254
+ * commit cycle.
255
+ */
256
+ if (Math.abs(scrollEl.scrollTop - haltedAtScrollTop) <= HALT_TOLERANCE)
257
+ return;
258
+ this.haltedAtScrollTop = undefined;
131
259
  }
260
+ // Armed before the early returns below, so a scroll never ends uncommitted.
261
+ this.resetScrollEndTimeout();
132
262
  if (!this.isScrolling) {
133
- enableHaptics && hapticSelectionStart();
263
+ this.enableHaptics && hapticSelectionStart();
134
264
  this.isScrolling = true;
135
265
  }
266
+ /**
267
+ * Only a user-driven scroll holds an uncommitted selection. Checked every
268
+ * frame because the user can take hold of the wheel mid-scroll, and
269
+ * re-adding the same listener is a no-op.
270
+ */
271
+ if (this.isUserScroll) {
272
+ this.watchForOutsidePress();
273
+ }
136
274
  /**
137
275
  * Select item in the center of the column
138
276
  * which is the month/year that we want to select
@@ -192,18 +330,23 @@ export class PickerColumn {
192
330
  newActiveElement = fallbackActiveElement;
193
331
  }
194
332
  }
195
- if (activeEl !== undefined) {
196
- this.setPickerItemActiveState(activeEl, false);
197
- }
333
+ /**
334
+ * A scroll can land with no selectable option centered, such as an
335
+ * overscroll bounce briefly centering the empty padding rows. Keep the
336
+ * current selection until an option is centered again.
337
+ */
198
338
  if (newActiveElement === undefined || newActiveElement.disabled) {
199
339
  return;
200
340
  }
341
+ if (activeEl !== undefined) {
342
+ this.setPickerItemActiveState(activeEl, false);
343
+ }
201
344
  /**
202
345
  * If we are selecting a new value,
203
346
  * we need to run haptics again.
204
347
  */
205
348
  if (newActiveElement !== activeEl) {
206
- enableHaptics && hapticSelectionChanged();
349
+ this.enableHaptics && hapticSelectionChanged();
207
350
  if (this.canExitInputMode) {
208
351
  /**
209
352
  * The native iOS wheel picker
@@ -235,32 +378,14 @@ export class PickerColumn {
235
378
  if (this.updateValueTextOnScroll) {
236
379
  this.assistiveFocusable?.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
237
380
  }
238
- timeout = setTimeout(() => {
239
- this.isScrolling = false;
240
- this.updateValueTextOnScroll = true;
241
- enableHaptics && hapticSelectionEnd();
242
- /**
243
- * Certain tasks (such as those that
244
- * cause re-renders) should only be done
245
- * once scrolling has finished, otherwise
246
- * flickering may occur.
247
- */
248
- const { scrollEndCallback } = this;
249
- if (scrollEndCallback) {
250
- scrollEndCallback();
251
- this.scrollEndCallback = undefined;
252
- }
253
- /**
254
- * Reset this flag as the
255
- * next scroll interaction could
256
- * be a scroll from the user. In this
257
- * case, we should exit input mode.
258
- */
259
- this.canExitInputMode = true;
260
- this.setValue(newActiveElement.value);
261
- }, 250);
381
+ this.centeredOption = newActiveElement;
262
382
  });
263
383
  };
384
+ const userScrollCallback = () => {
385
+ this.isUserScroll = true;
386
+ // Taking hold of the wheel ends the halt even if it has not moved yet.
387
+ this.haltedAtScrollTop = undefined;
388
+ };
264
389
  /**
265
390
  * Wrap this in an raf so that the scroll callback
266
391
  * does not fire when component is initially shown.
@@ -269,8 +394,19 @@ export class PickerColumn {
269
394
  if (!scrollEl)
270
395
  return;
271
396
  scrollEl.addEventListener('scroll', scrollCallback);
397
+ scrollEl.addEventListener('pointerdown', userScrollCallback);
398
+ scrollEl.addEventListener('wheel', userScrollCallback, { passive: true });
399
+ /**
400
+ * A `pointerdown` fires once per touch, so a drag that pauses long enough
401
+ * to commit would look like a scroll the column started. A `touchmove`
402
+ * keeps arriving while the finger moves.
403
+ */
404
+ scrollEl.addEventListener('touchmove', userScrollCallback, { passive: true });
272
405
  this.destroyScrollListener = () => {
273
406
  scrollEl.removeEventListener('scroll', scrollCallback);
407
+ scrollEl.removeEventListener('pointerdown', userScrollCallback);
408
+ scrollEl.removeEventListener('wheel', userScrollCallback);
409
+ scrollEl.removeEventListener('touchmove', userScrollCallback);
274
410
  };
275
411
  });
276
412
  };
@@ -455,6 +591,14 @@ export class PickerColumn {
455
591
  }
456
592
  else {
457
593
  this.isColumnVisible = false;
594
+ /**
595
+ * The pending timer still runs so it resets the scroll state, but the
596
+ * option it would have committed is dropped. A column the user cannot
597
+ * see should not change its value.
598
+ */
599
+ this.stopWatchingForOutsidePress();
600
+ this.centeredOption = undefined;
601
+ this.haltedAtScrollTop = undefined;
458
602
  if (this.destroyScrollListener) {
459
603
  this.destroyScrollListener();
460
604
  this.destroyScrollListener = undefined;
@@ -525,6 +669,13 @@ export class PickerColumn {
525
669
  connectedCallback() {
526
670
  this.ariaLabel = this.el.getAttribute('aria-label') ?? 'Select a value';
527
671
  }
672
+ disconnectedCallback() {
673
+ /**
674
+ * A pending settle would otherwise commit a value on a column that is no
675
+ * longer in the DOM.
676
+ */
677
+ this.discardScroll();
678
+ }
528
679
  get activeItem() {
529
680
  const { value } = this;
530
681
  const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
@@ -542,14 +693,14 @@ export class PickerColumn {
542
693
  render() {
543
694
  const { color, disabled, isActive, numericInput } = this;
544
695
  const mode = getIonMode(this);
545
- return (h(Host, { key: '78b46ad10d88ea1bb43ca8c36748767912f03224', class: createColorClasses(color, {
696
+ return (h(Host, { key: '60a893619d0b01fba53fbccef67a10d533a22657', class: createColorClasses(color, {
546
697
  [mode]: true,
547
698
  ['picker-column-active']: isActive,
548
699
  ['picker-column-numeric-input']: numericInput,
549
700
  ['picker-column-disabled']: disabled,
550
- }) }, h("slot", { key: '761e501df77f7de896ffb3ebb99ebf88c5c3bf70', name: "prefix" }), h("div", { key: '9f4caaeef8ab704522a85f30876d371712f47c5c', class: "picker-opts", ref: (el) => {
701
+ }) }, h("slot", { key: '79f1e047f89c5ec916ed02efaac56ef3f73b8969', name: "prefix" }), h("div", { key: 'c45c86e88353a196ff38159f40f390bc27852c9e', class: "picker-opts", ref: (el) => {
551
702
  this.scrollEl = el;
552
- }, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, h("div", { key: '9d3533436aba6c61c93f65f84a077fba832194a0', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '3f18d3a47361f06f55321b65fdf5742a61722b26', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'eac0d20ab8c533ef829875e323e93e1ee2067d6d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: '92e25989ef41cf6f910c73238e1a0a5ac03f1c1f' }), h("div", { key: '33a84644ebdc84108b44a8e3a129b54e824939c8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '128ad61a3a68c7ff2d2e44a6e968424fcc608a15', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '6e4d59a4f75befcbbf47279a263f28a69b12dbbd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: '3c6621b64438792a3024c90e3d9916a0a3614506', name: "suffix" })));
703
+ }, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, h("div", { key: 'e02d76752f5d3dd4cd2846fbc28645f1508a4b49', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'd577bcbadc530970b2781692b050811633625c5a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'c89e78c3a896bc1f55b922d01df16fdbb1259bdd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: '6c597ff899692597432ee2aa0b42de53b86deed4' }), h("div", { key: '91686ed94f14c47647836ed4d63e54b5c54ee3b9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '2ff058c6d0e8cef4e143c2d848f9a52684579af1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'bc7386bec6fced36e44084a7a137b3fe6506c996', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: '8835fd3f4e025bce964e6f05984c9aaadc20d7fb', name: "suffix" })));
553
704
  }
554
705
  static get is() { return "ion-picker-column"; }
555
706
  static get encapsulation() { return "shadow"; }
@@ -773,3 +924,16 @@ export class PickerColumn {
773
924
  }
774
925
  }
775
926
  const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
927
+ /**
928
+ * How long the column must be idle before the centered option is treated as
929
+ * the user's selection. Replaceable by the `scrollend` event once that is
930
+ * supported everywhere (https://caniuse.com/?search=scrollend).
931
+ */
932
+ const SCROLL_END_DELAY = 250;
933
+ /**
934
+ * How far, in pixels, the column may report from where it was halted and still
935
+ * count as having stayed there. Centering targets a position between two snap
936
+ * points, so mandatory snapping corrects it by half the column height less
937
+ * three option heights: 2px at the default sizes.
938
+ */
939
+ const HALT_TOLERANCE = 2;