@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
package/hydrate/index.js CHANGED
@@ -422,7 +422,7 @@ const appGlobalScript = initialize || (() => {});
422
422
  const globalScripts = appGlobalScript;
423
423
 
424
424
  /*
425
- Stencil Hydrate Platform v4.43.5 | MIT Licensed | https://stenciljs.com
425
+ Stencil Hydrate Platform v4.44.1 | MIT Licensed | https://stenciljs.com
426
426
  */
427
427
  var __create = Object.create;
428
428
  var __defProp = Object.defineProperty;
@@ -757,6 +757,8 @@ var DEFAULT_DOC_DATA = {
757
757
  };
758
758
  var SLOT_FB_CSS = "slot-fb{display:contents}slot-fb[hidden]{display:none}";
759
759
  var XLINK_NS = "http://www.w3.org/1999/xlink";
760
+ var MAX_LAZY_LOAD_RETRIES = 3;
761
+ var LAZY_LOAD_RETRY_INTERVAL_MS = 1e3;
760
762
 
761
763
  // src/utils/style.ts
762
764
  function createStyleSheetIfNeededAndSupported(styles2) {
@@ -820,7 +822,7 @@ function getHostSlotNodes(childNodes, hostName, slotName) {
820
822
  slottedNodes.push(childNode);
821
823
  if (typeof slotName !== "undefined") return slottedNodes;
822
824
  }
823
- slottedNodes = [...slottedNodes, ...getHostSlotNodes(childNode.childNodes, hostName, slotName)];
825
+ slottedNodes = [...slottedNodes, ...getHostSlotNodes(internalCall(childNode, "childNodes"), hostName, slotName)];
824
826
  }
825
827
  return slottedNodes;
826
828
  }
@@ -1064,6 +1066,11 @@ var h = (nodeName, vnodeData, ...children) => {
1064
1066
  } else if (child != null && typeof child !== "boolean") {
1065
1067
  if (simple = typeof nodeName !== "function" && !isComplexType(child)) {
1066
1068
  child = String(child);
1069
+ } else if (typeof nodeName !== "function" && child.$flags$ === void 0) {
1070
+ {
1071
+ consoleError("Invalid vNode child");
1072
+ }
1073
+ continue;
1067
1074
  }
1068
1075
  if (simple && lastSimple) {
1069
1076
  vNodeChildren[vNodeChildren.length - 1].$text$ += child;
@@ -2299,7 +2306,7 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
2299
2306
  }
2300
2307
  }
2301
2308
  if (newValue == null || newValue === false) {
2302
- if (newValue !== false || elm.getAttribute(memberName) === "") {
2309
+ if (newValue !== false || elm.getAttribute(memberName) === "" || flags & 4 /* isHost */ && !isEnumeratedAttribute(memberName)) {
2303
2310
  if (xlink) {
2304
2311
  elm.removeAttributeNS(XLINK_NS, memberName);
2305
2312
  } else {
@@ -2316,6 +2323,8 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
2316
2323
  }
2317
2324
  }
2318
2325
  };
2326
+ var ENUMERATED_ATTRIBUTES = /* @__PURE__ */ new Set(["draggable", "contenteditable", "spellcheck"]);
2327
+ var isEnumeratedAttribute = (attrName) => ENUMERATED_ATTRIBUTES.has(attrName) || attrName.startsWith("aria-");
2319
2328
  var parseClassListRegex = /\s/;
2320
2329
  var parseClassList = (value) => {
2321
2330
  if (typeof value === "object" && value && "baseVal" in value) {
@@ -2718,7 +2727,10 @@ var markSlotContentForRelocation = (elm) => {
2718
2727
  const slotName = childNode["s-sn"];
2719
2728
  for (j = hostContentNodes.length - 1; j >= 0; j--) {
2720
2729
  node = hostContentNodes[j];
2721
- if (!node["s-cn"] && !node["s-nr"] && node["s-hn"] !== childNode["s-hn"] && (!node["s-sh"] || node["s-sh"] !== childNode["s-hn"])) {
2730
+ if (!node["s-cn"] && !node["s-nr"] && node["s-hn"] !== childNode["s-hn"] && // let an exact named-slot match override a stale default-slot claim. Skip this for
2731
+ // `slotName === ''` itself - a matched default node's cached `s-sn` is `''` too, which
2732
+ // would trivially "match" on every re-render and force pointless re-insertion.
2733
+ (!node["s-sh"] || node["s-sh"] !== childNode["s-hn"] || slotName !== "" && getSlotName(node) === slotName)) {
2722
2734
  if (isNodeLocatedInSlot(node, slotName)) {
2723
2735
  let relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
2724
2736
  checkSlotFallbackVisibility = true;
@@ -2788,7 +2800,7 @@ var insertBefore = (parent, newNode, reference, isInitialLoad) => {
2788
2800
  return newNode;
2789
2801
  }
2790
2802
  }
2791
- if (parent.__insertBefore) {
2803
+ if ((parent == null ? void 0 : parent.__insertBefore)) {
2792
2804
  return parent.__insertBefore(newNode, reference);
2793
2805
  } else {
2794
2806
  return parent == null ? void 0 : parent.insertBefore(newNode, reference);
@@ -3293,10 +3305,12 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
3293
3305
 
3294
3306
  // src/runtime/initialize-component.ts
3295
3307
  var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
3308
+ var _a2;
3296
3309
  let Cstr;
3297
3310
  try {
3298
3311
  if ((hostRef.$flags$ & 32 /* hasInitializedComponent */) === 0) {
3299
3312
  hostRef.$flags$ |= 32 /* hasInitializedComponent */;
3313
+ hostRef.$flags$ &= -1025 /* hasFailedLoad */;
3300
3314
  const bundleId = cmpMeta.$lazyBundleId$;
3301
3315
  if (bundleId) {
3302
3316
  const CstrImport = loadModule(cmpMeta);
@@ -3308,6 +3322,11 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
3308
3322
  Cstr = CstrImport;
3309
3323
  }
3310
3324
  if (!Cstr) {
3325
+ hostRef.$flags$ &= -33 /* hasInitializedComponent */;
3326
+ hostRef.$loadRetryCount$ = ((_a2 = hostRef.$loadRetryCount$) != null ? _a2 : 0) + 1;
3327
+ if (hostRef.$loadRetryCount$ < MAX_LAZY_LOAD_RETRIES) {
3328
+ hostRef.$flags$ |= 1024 /* hasFailedLoad */;
3329
+ }
3311
3330
  throw new Error(`Constructor for "${cmpMeta.$tagName$}#${hostRef.$modeName$}" was not found`);
3312
3331
  }
3313
3332
  if (!Cstr.isProxied) {
@@ -3387,7 +3406,7 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
3387
3406
  hostRef.$onRenderResolve$();
3388
3407
  hostRef.$onRenderResolve$ = void 0;
3389
3408
  }
3390
- if (hostRef.$onReadyResolve$) {
3409
+ if (hostRef.$onReadyResolve$ && !(hostRef.$flags$ & 1024 /* hasFailedLoad */)) {
3391
3410
  hostRef.$onReadyResolve$(elm);
3392
3411
  }
3393
3412
  }
@@ -3446,6 +3465,8 @@ var connectedCallback = (elm) => {
3446
3465
  addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
3447
3466
  if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {
3448
3467
  fireConnectedCallback(hostRef.$lazyInstance$, elm);
3468
+ } else if (hostRef.$flags$ & 1024 /* hasFailedLoad */) {
3469
+ setTimeout(() => initializeComponent(elm, hostRef, cmpMeta), LAZY_LOAD_RETRY_INTERVAL_MS);
3449
3470
  } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {
3450
3471
  hostRef.$onReadyPromise$.then(() => fireConnectedCallback(hostRef.$lazyInstance$, elm));
3451
3472
  }
@@ -17028,7 +17049,6 @@ class Datetime {
17028
17049
  }
17029
17050
  renderCombinedDatePickerColumn() {
17030
17051
  const { defaultParts, disabled, workingParts, locale, minParts, maxParts, todayParts, isDateEnabled } = this;
17031
- const activePart = this.getActivePartsWithFallback();
17032
17052
  /**
17033
17053
  * By default, generate a range of 3 months:
17034
17054
  * Previous month, current month, and next month
@@ -17084,8 +17104,10 @@ class Datetime {
17084
17104
  return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a date", class: "date-column", color: this.color, disabled: disabled, value: todayString, onIonChange: (ev) => {
17085
17105
  const { value } = ev.detail;
17086
17106
  const findPart = parts.find(({ month, day, year }) => value === `${year}-${month}-${day}`);
17107
+ // Read live so parts a sibling column just committed are included.
17108
+ const activePart = this.getActivePartsWithFallback();
17087
17109
  this.setWorkingParts({
17088
- ...workingParts,
17110
+ ...this.workingParts,
17089
17111
  ...findPart,
17090
17112
  });
17091
17113
  this.setActiveParts({
@@ -17162,11 +17184,12 @@ class Datetime {
17162
17184
  return [];
17163
17185
  }
17164
17186
  const { disabled, workingParts } = this;
17165
- const activePart = this.getActivePartsWithFallback();
17166
17187
  const pickerColumnValue = (workingParts.day !== null ? workingParts.day : this.defaultParts.day) ?? undefined;
17167
17188
  return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a day", class: "day-column", color: this.color, disabled: disabled, value: pickerColumnValue, onIonChange: (ev) => {
17189
+ // Read live so parts a sibling column just committed are included.
17190
+ const activePart = this.getActivePartsWithFallback();
17168
17191
  this.setWorkingParts({
17169
- ...workingParts,
17192
+ ...this.workingParts,
17170
17193
  day: ev.detail.value,
17171
17194
  });
17172
17195
  this.setActiveParts({
@@ -17181,10 +17204,11 @@ class Datetime {
17181
17204
  return [];
17182
17205
  }
17183
17206
  const { disabled, workingParts } = this;
17184
- const activePart = this.getActivePartsWithFallback();
17185
17207
  return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a month", class: "month-column", color: this.color, disabled: disabled, value: workingParts.month, onIonChange: (ev) => {
17208
+ // Read live so parts a sibling column just committed are included.
17209
+ const activePart = this.getActivePartsWithFallback();
17186
17210
  this.setWorkingParts({
17187
- ...workingParts,
17211
+ ...this.workingParts,
17188
17212
  month: ev.detail.value,
17189
17213
  });
17190
17214
  // Month wheel is navigation-only in multi-select mode as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
@@ -17202,10 +17226,11 @@ class Datetime {
17202
17226
  return [];
17203
17227
  }
17204
17228
  const { disabled, workingParts } = this;
17205
- const activePart = this.getActivePartsWithFallback();
17206
17229
  return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a year", class: "year-column", color: this.color, disabled: disabled, value: workingParts.year, onIonChange: (ev) => {
17230
+ // Read live so parts a sibling column just committed are included.
17231
+ const activePart = this.getActivePartsWithFallback();
17207
17232
  this.setWorkingParts({
17208
- ...workingParts,
17233
+ ...this.workingParts,
17209
17234
  year: ev.detail.value,
17210
17235
  });
17211
17236
  // Year wheel is navigation-only in multi-select mode as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
@@ -17241,13 +17266,14 @@ class Datetime {
17241
17266
  ];
17242
17267
  }
17243
17268
  renderHourPickerColumn(hoursData) {
17244
- const { disabled, workingParts } = this;
17269
+ const { disabled } = this;
17245
17270
  if (hoursData.length === 0)
17246
17271
  return [];
17247
17272
  const activePart = this.getActivePartsWithFallback();
17248
17273
  return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select an hour", color: this.color, disabled: disabled, value: activePart.hour, numericInput: true, onIonChange: (ev) => {
17274
+ // Read live so parts a sibling column just committed are included.
17249
17275
  this.setWorkingParts({
17250
- ...workingParts,
17276
+ ...this.workingParts,
17251
17277
  hour: ev.detail.value,
17252
17278
  });
17253
17279
  this.setActiveParts({
@@ -17258,13 +17284,14 @@ class Datetime {
17258
17284
  } }, hoursData.map((hour) => (hAsync("ion-picker-column-option", { color: this.color, part: hour.value === activePart.hour ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: hour.value, disabled: hour.disabled, value: hour.value }, hour.text)))));
17259
17285
  }
17260
17286
  renderMinutePickerColumn(minutesData) {
17261
- const { disabled, workingParts } = this;
17287
+ const { disabled } = this;
17262
17288
  if (minutesData.length === 0)
17263
17289
  return [];
17264
17290
  const activePart = this.getActivePartsWithFallback();
17265
17291
  return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a minute", color: this.color, disabled: disabled, value: activePart.minute, numericInput: true, onIonChange: (ev) => {
17292
+ // Read live so parts a sibling column just committed are included.
17266
17293
  this.setWorkingParts({
17267
- ...workingParts,
17294
+ ...this.workingParts,
17268
17295
  minute: ev.detail.value,
17269
17296
  });
17270
17297
  this.setActiveParts({
@@ -17275,16 +17302,18 @@ class Datetime {
17275
17302
  } }, minutesData.map((minute) => (hAsync("ion-picker-column-option", { color: this.color, part: minute.value === activePart.minute ? `${WHEEL_ITEM_PART} ${WHEEL_ITEM_ACTIVE_PART}` : WHEEL_ITEM_PART, key: minute.value, disabled: minute.disabled, value: minute.value }, minute.text)))));
17276
17303
  }
17277
17304
  renderDayPeriodPickerColumn(dayPeriodData) {
17278
- const { disabled, workingParts } = this;
17305
+ const { disabled } = this;
17279
17306
  if (dayPeriodData.length === 0) {
17280
17307
  return [];
17281
17308
  }
17282
17309
  const activePart = this.getActivePartsWithFallback();
17283
17310
  const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
17284
17311
  return (hAsync("ion-picker-column", { part: WHEEL_PART, "aria-label": "Select a day period", style: isDayPeriodRTL ? { order: '-1' } : {}, color: this.color, disabled: disabled, value: activePart.ampm, onIonChange: (ev) => {
17285
- const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
17312
+ // Read live so parts a sibling column just committed are included.
17313
+ const currentParts = this.workingParts;
17314
+ const hour = calculateHourFromAMPM(currentParts, ev.detail.value);
17286
17315
  this.setWorkingParts({
17287
- ...workingParts,
17316
+ ...currentParts,
17288
17317
  ampm: ev.detail.value,
17289
17318
  hour,
17290
17319
  });
@@ -17636,7 +17665,7 @@ class Datetime {
17636
17665
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
17637
17666
  const hasWheelVariant = hasDatePresentation && preferWheel;
17638
17667
  renderHiddenInput(true, el, name, formatValue(value), disabled);
17639
- return (hAsync(Host, { key: 'd8e6dfe5e3bffb1c38a3e37b63b3aec099f40d29', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
17668
+ return (hAsync(Host, { key: '4e0b529a70924b065bcc6191e08550428b5a52a0', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
17640
17669
  ...createColorClasses$1(color, {
17641
17670
  [mode]: true,
17642
17671
  ['datetime-readonly']: readonly,
@@ -17648,7 +17677,7 @@ class Datetime {
17648
17677
  [`datetime-prefer-wheel`]: hasWheelVariant,
17649
17678
  [`datetime-grid`]: isGridStyle,
17650
17679
  }),
17651
- } }, hAsync("div", { key: '20889d3c68dd5109633c0e214411a63d6f3025bb', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
17680
+ } }, hAsync("div", { key: 'cc9d1b92f960984cb0466d0003a240ace67da243', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
17652
17681
  }
17653
17682
  get el() { return getElement(this); }
17654
17683
  static get watchers() { return {
@@ -29257,6 +29286,12 @@ class PickerColumn {
29257
29286
  this.isColumnVisible = false;
29258
29287
  this.canExitInputMode = true;
29259
29288
  this.updateValueTextOnScroll = false;
29289
+ this.isUserScroll = false;
29290
+ /**
29291
+ * The haptics for the wheel picker are an iOS-only feature. As a result,
29292
+ * they should be disabled on Android.
29293
+ */
29294
+ this.enableHaptics = false;
29260
29295
  this.ariaLabel = null;
29261
29296
  this.isActive = false;
29262
29297
  /**
@@ -29288,6 +29323,12 @@ class PickerColumn {
29288
29323
  */
29289
29324
  this.canExitInputMode = canExitInputMode;
29290
29325
  this.updateValueTextOnScroll = false;
29326
+ /**
29327
+ * This scroll takes over from whatever the user was doing, so an outside
29328
+ * press must not commit an option the column is only passing through.
29329
+ */
29330
+ this.isUserScroll = false;
29331
+ this.stopWatchingForOutsidePress();
29291
29332
  scrollEl.scroll({
29292
29333
  top,
29293
29334
  left: 0,
@@ -29342,6 +29383,117 @@ class PickerColumn {
29342
29383
  }
29343
29384
  this.isActive = state;
29344
29385
  };
29386
+ this.clearScrollEndTimeout = () => {
29387
+ if (this.scrollEndTimeout) {
29388
+ clearTimeout(this.scrollEndTimeout);
29389
+ this.scrollEndTimeout = undefined;
29390
+ }
29391
+ };
29392
+ /**
29393
+ * Resets the idle timer that commits the centered option.
29394
+ */
29395
+ this.resetScrollEndTimeout = () => {
29396
+ this.clearScrollEndTimeout();
29397
+ this.scrollEndTimeout = setTimeout(this.settle, SCROLL_END_DELAY);
29398
+ };
29399
+ /**
29400
+ * Capture so the column still commits if an application's own pointerdown
29401
+ * handler stops the event before it reaches the document.
29402
+ */
29403
+ this.watchForOutsidePress = () => {
29404
+ doc?.addEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
29405
+ };
29406
+ this.stopWatchingForOutsidePress = () => {
29407
+ doc?.removeEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
29408
+ };
29409
+ /**
29410
+ * Resets everything the current scroll interaction is holding, so nothing
29411
+ * pending on it can commit later.
29412
+ */
29413
+ this.discardScroll = () => {
29414
+ this.stopWatchingForOutsidePress();
29415
+ this.clearScrollEndTimeout();
29416
+ this.scrollEndCallback = undefined;
29417
+ this.centeredOption = undefined;
29418
+ this.haltedAtScrollTop = undefined;
29419
+ this.isScrolling = false;
29420
+ this.isUserScroll = false;
29421
+ this.canExitInputMode = true;
29422
+ };
29423
+ /**
29424
+ * Commits the option that is currently centered under the highlight and ends
29425
+ * the scroll interaction.
29426
+ */
29427
+ this.settle = () => {
29428
+ const { centeredOption } = this;
29429
+ this.clearScrollEndTimeout();
29430
+ this.stopWatchingForOutsidePress();
29431
+ this.isUserScroll = false;
29432
+ this.isScrolling = false;
29433
+ this.updateValueTextOnScroll = true;
29434
+ this.enableHaptics && hapticSelectionEnd();
29435
+ /**
29436
+ * Certain tasks (such as those that
29437
+ * cause re-renders) should only be done
29438
+ * once scrolling has finished, otherwise
29439
+ * flickering may occur.
29440
+ */
29441
+ const { scrollEndCallback } = this;
29442
+ if (scrollEndCallback) {
29443
+ scrollEndCallback();
29444
+ this.scrollEndCallback = undefined;
29445
+ }
29446
+ /**
29447
+ * Reset this flag as the
29448
+ * next scroll interaction could
29449
+ * be a scroll from the user. In this
29450
+ * case, we should exit input mode.
29451
+ */
29452
+ this.canExitInputMode = true;
29453
+ if (centeredOption !== undefined) {
29454
+ // Cleared here so a later scroll that centers nothing cannot fall back on it.
29455
+ this.centeredOption = undefined;
29456
+ if (centeredOption.isConnected) {
29457
+ this.setValue(centeredOption.value);
29458
+ }
29459
+ }
29460
+ };
29461
+ /**
29462
+ * Commits the option the user can see when they press anything outside of the
29463
+ * column during a scroll they started. This runs on pointerdown rather than
29464
+ * click so the value is up to date by the time an application's own click
29465
+ * handler (a Save button, for example) reads it.
29466
+ */
29467
+ this.onPointerDownOutside = (ev) => {
29468
+ const { centeredOption, parentEl, scrollEl } = this;
29469
+ if (!this.isScrolling) {
29470
+ return;
29471
+ }
29472
+ /**
29473
+ * The column can live in another component's Shadow DOM, where a document
29474
+ * listener sees the target retargeted to the outer host. The composed path
29475
+ * is the only reliable way to tell a press on the column apart.
29476
+ */
29477
+ const path = ev.composedPath();
29478
+ /**
29479
+ * A press anywhere in the parent picker counts as inside, so reaching for a
29480
+ * sibling wheel leaves this column coasting.
29481
+ */
29482
+ if (path.includes(this.el) || (parentEl != null && path.includes(parentEl))) {
29483
+ return;
29484
+ }
29485
+ /**
29486
+ * Landing on the centered option halts the in-flight momentum scroll, so the
29487
+ * committed value and the option the user is left looking at agree. The
29488
+ * option list can be replaced mid-scroll, and a detached option has no
29489
+ * offset to center on.
29490
+ */
29491
+ if (centeredOption !== undefined && centeredOption.isConnected) {
29492
+ this.centerPickerItemInView(centeredOption, false, false);
29493
+ this.haltedAtScrollTop = scrollEl?.scrollTop;
29494
+ }
29495
+ this.settle();
29496
+ };
29345
29497
  /**
29346
29498
  * When the column scrolls, the component
29347
29499
  * needs to determine which item is centered
@@ -29349,27 +29501,42 @@ class PickerColumn {
29349
29501
  * the item object.
29350
29502
  */
29351
29503
  this.initializeScrollListener = () => {
29352
- /**
29353
- * The haptics for the wheel picker are
29354
- * an iOS-only feature. As a result, they should
29355
- * be disabled on Android.
29356
- */
29357
- const enableHaptics = isPlatform('ios');
29504
+ this.enableHaptics = isPlatform('ios');
29358
29505
  const { el, scrollEl } = this;
29359
- let timeout;
29360
29506
  let activeEl = this.activeItem;
29361
29507
  const scrollCallback = () => {
29362
29508
  raf(() => {
29363
- if (!scrollEl)
29509
+ /**
29510
+ * This frame cannot be cancelled, and moving the column disconnects it
29511
+ * without the observer reporting a change, so this checks live state.
29512
+ */
29513
+ if (!this.el.isConnected || !this.isColumnVisible || !scrollEl)
29364
29514
  return;
29365
- if (timeout) {
29366
- clearTimeout(timeout);
29367
- timeout = undefined;
29515
+ const { haltedAtScrollTop } = this;
29516
+ if (haltedAtScrollTop !== undefined) {
29517
+ /**
29518
+ * Still at the halted position, so this frame is the halt landing
29519
+ * rather than the wheel moving, and re-arming would start a second
29520
+ * commit cycle.
29521
+ */
29522
+ if (Math.abs(scrollEl.scrollTop - haltedAtScrollTop) <= HALT_TOLERANCE)
29523
+ return;
29524
+ this.haltedAtScrollTop = undefined;
29368
29525
  }
29526
+ // Armed before the early returns below, so a scroll never ends uncommitted.
29527
+ this.resetScrollEndTimeout();
29369
29528
  if (!this.isScrolling) {
29370
- enableHaptics && hapticSelectionStart();
29529
+ this.enableHaptics && hapticSelectionStart();
29371
29530
  this.isScrolling = true;
29372
29531
  }
29532
+ /**
29533
+ * Only a user-driven scroll holds an uncommitted selection. Checked every
29534
+ * frame because the user can take hold of the wheel mid-scroll, and
29535
+ * re-adding the same listener is a no-op.
29536
+ */
29537
+ if (this.isUserScroll) {
29538
+ this.watchForOutsidePress();
29539
+ }
29373
29540
  /**
29374
29541
  * Select item in the center of the column
29375
29542
  * which is the month/year that we want to select
@@ -29429,18 +29596,23 @@ class PickerColumn {
29429
29596
  newActiveElement = fallbackActiveElement;
29430
29597
  }
29431
29598
  }
29432
- if (activeEl !== undefined) {
29433
- this.setPickerItemActiveState(activeEl, false);
29434
- }
29599
+ /**
29600
+ * A scroll can land with no selectable option centered, such as an
29601
+ * overscroll bounce briefly centering the empty padding rows. Keep the
29602
+ * current selection until an option is centered again.
29603
+ */
29435
29604
  if (newActiveElement === undefined || newActiveElement.disabled) {
29436
29605
  return;
29437
29606
  }
29607
+ if (activeEl !== undefined) {
29608
+ this.setPickerItemActiveState(activeEl, false);
29609
+ }
29438
29610
  /**
29439
29611
  * If we are selecting a new value,
29440
29612
  * we need to run haptics again.
29441
29613
  */
29442
29614
  if (newActiveElement !== activeEl) {
29443
- enableHaptics && hapticSelectionChanged();
29615
+ this.enableHaptics && hapticSelectionChanged();
29444
29616
  if (this.canExitInputMode) {
29445
29617
  /**
29446
29618
  * The native iOS wheel picker
@@ -29472,32 +29644,14 @@ class PickerColumn {
29472
29644
  if (this.updateValueTextOnScroll) {
29473
29645
  this.assistiveFocusable?.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
29474
29646
  }
29475
- timeout = setTimeout(() => {
29476
- this.isScrolling = false;
29477
- this.updateValueTextOnScroll = true;
29478
- enableHaptics && hapticSelectionEnd();
29479
- /**
29480
- * Certain tasks (such as those that
29481
- * cause re-renders) should only be done
29482
- * once scrolling has finished, otherwise
29483
- * flickering may occur.
29484
- */
29485
- const { scrollEndCallback } = this;
29486
- if (scrollEndCallback) {
29487
- scrollEndCallback();
29488
- this.scrollEndCallback = undefined;
29489
- }
29490
- /**
29491
- * Reset this flag as the
29492
- * next scroll interaction could
29493
- * be a scroll from the user. In this
29494
- * case, we should exit input mode.
29495
- */
29496
- this.canExitInputMode = true;
29497
- this.setValue(newActiveElement.value);
29498
- }, 250);
29647
+ this.centeredOption = newActiveElement;
29499
29648
  });
29500
29649
  };
29650
+ const userScrollCallback = () => {
29651
+ this.isUserScroll = true;
29652
+ // Taking hold of the wheel ends the halt even if it has not moved yet.
29653
+ this.haltedAtScrollTop = undefined;
29654
+ };
29501
29655
  /**
29502
29656
  * Wrap this in an raf so that the scroll callback
29503
29657
  * does not fire when component is initially shown.
@@ -29506,8 +29660,19 @@ class PickerColumn {
29506
29660
  if (!scrollEl)
29507
29661
  return;
29508
29662
  scrollEl.addEventListener('scroll', scrollCallback);
29663
+ scrollEl.addEventListener('pointerdown', userScrollCallback);
29664
+ scrollEl.addEventListener('wheel', userScrollCallback, { passive: true });
29665
+ /**
29666
+ * A `pointerdown` fires once per touch, so a drag that pauses long enough
29667
+ * to commit would look like a scroll the column started. A `touchmove`
29668
+ * keeps arriving while the finger moves.
29669
+ */
29670
+ scrollEl.addEventListener('touchmove', userScrollCallback, { passive: true });
29509
29671
  this.destroyScrollListener = () => {
29510
29672
  scrollEl.removeEventListener('scroll', scrollCallback);
29673
+ scrollEl.removeEventListener('pointerdown', userScrollCallback);
29674
+ scrollEl.removeEventListener('wheel', userScrollCallback);
29675
+ scrollEl.removeEventListener('touchmove', userScrollCallback);
29511
29676
  };
29512
29677
  });
29513
29678
  };
@@ -29690,6 +29855,14 @@ class PickerColumn {
29690
29855
  }
29691
29856
  else {
29692
29857
  this.isColumnVisible = false;
29858
+ /**
29859
+ * The pending timer still runs so it resets the scroll state, but the
29860
+ * option it would have committed is dropped. A column the user cannot
29861
+ * see should not change its value.
29862
+ */
29863
+ this.stopWatchingForOutsidePress();
29864
+ this.centeredOption = undefined;
29865
+ this.haltedAtScrollTop = undefined;
29693
29866
  if (this.destroyScrollListener) {
29694
29867
  this.destroyScrollListener();
29695
29868
  this.destroyScrollListener = undefined;
@@ -29760,6 +29933,13 @@ class PickerColumn {
29760
29933
  connectedCallback() {
29761
29934
  this.ariaLabel = this.el.getAttribute('aria-label') ?? 'Select a value';
29762
29935
  }
29936
+ disconnectedCallback() {
29937
+ /**
29938
+ * A pending settle would otherwise commit a value on a column that is no
29939
+ * longer in the DOM.
29940
+ */
29941
+ this.discardScroll();
29942
+ }
29763
29943
  get activeItem() {
29764
29944
  const { value } = this;
29765
29945
  const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
@@ -29777,14 +29957,14 @@ class PickerColumn {
29777
29957
  render() {
29778
29958
  const { color, disabled, isActive, numericInput } = this;
29779
29959
  const mode = getIonMode$1(this);
29780
- return (hAsync(Host, { key: '78b46ad10d88ea1bb43ca8c36748767912f03224', class: createColorClasses$1(color, {
29960
+ return (hAsync(Host, { key: '60a893619d0b01fba53fbccef67a10d533a22657', class: createColorClasses$1(color, {
29781
29961
  [mode]: true,
29782
29962
  ['picker-column-active']: isActive,
29783
29963
  ['picker-column-numeric-input']: numericInput,
29784
29964
  ['picker-column-disabled']: disabled,
29785
- }) }, hAsync("slot", { key: '761e501df77f7de896ffb3ebb99ebf88c5c3bf70', name: "prefix" }), hAsync("div", { key: '9f4caaeef8ab704522a85f30876d371712f47c5c', class: "picker-opts", ref: (el) => {
29965
+ }) }, hAsync("slot", { key: '79f1e047f89c5ec916ed02efaac56ef3f73b8969', name: "prefix" }), hAsync("div", { key: 'c45c86e88353a196ff38159f40f390bc27852c9e', class: "picker-opts", ref: (el) => {
29786
29966
  this.scrollEl = el;
29787
- }, 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) }, hAsync("div", { key: '9d3533436aba6c61c93f65f84a077fba832194a0', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '3f18d3a47361f06f55321b65fdf5742a61722b26', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'eac0d20ab8c533ef829875e323e93e1ee2067d6d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '92e25989ef41cf6f910c73238e1a0a5ac03f1c1f' }), hAsync("div", { key: '33a84644ebdc84108b44a8e3a129b54e824939c8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '128ad61a3a68c7ff2d2e44a6e968424fcc608a15', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '6e4d59a4f75befcbbf47279a263f28a69b12dbbd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: '3c6621b64438792a3024c90e3d9916a0a3614506', name: "suffix" })));
29967
+ }, 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) }, hAsync("div", { key: 'e02d76752f5d3dd4cd2846fbc28645f1508a4b49', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'd577bcbadc530970b2781692b050811633625c5a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'c89e78c3a896bc1f55b922d01df16fdbb1259bdd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '6c597ff899692597432ee2aa0b42de53b86deed4' }), hAsync("div", { key: '91686ed94f14c47647836ed4d63e54b5c54ee3b9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '2ff058c6d0e8cef4e143c2d848f9a52684579af1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: 'bc7386bec6fced36e44084a7a137b3fe6506c996', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: '8835fd3f4e025bce964e6f05984c9aaadc20d7fb', name: "suffix" })));
29788
29968
  }
29789
29969
  get el() { return getElement(this); }
29790
29970
  static get watchers() { return {
@@ -29816,6 +29996,19 @@ class PickerColumn {
29816
29996
  }; }
29817
29997
  }
29818
29998
  const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
29999
+ /**
30000
+ * How long the column must be idle before the centered option is treated as
30001
+ * the user's selection. Replaceable by the `scrollend` event once that is
30002
+ * supported everywhere (https://caniuse.com/?search=scrollend).
30003
+ */
30004
+ const SCROLL_END_DELAY = 250;
30005
+ /**
30006
+ * How far, in pixels, the column may report from where it was halted and still
30007
+ * count as having stayed there. Centering targets a position between two snap
30008
+ * points, so mandatory snapping corrects it by half the column height less
30009
+ * three option heights: 2px at the default sizes.
30010
+ */
30011
+ const HALT_TOLERANCE = 2;
29819
30012
 
29820
30013
  const pickerColumnOptionIosCss = () => `.picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;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;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}`;
29821
30014
 
@@ -42756,7 +42949,7 @@ var NAMESPACE = (
42756
42949
  );
42757
42950
 
42758
42951
  /*
42759
- Stencil Hydrate Runner v4.43.5 | MIT Licensed | https://stenciljs.com
42952
+ Stencil Hydrate Runner v4.44.1 | MIT Licensed | https://stenciljs.com
42760
42953
  */
42761
42954
  var __create = Object.create;
42762
42955
  var __defProp = Object.defineProperty;