@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.mjs CHANGED
@@ -420,7 +420,7 @@ const appGlobalScript = initialize || (() => {});
420
420
  const globalScripts = appGlobalScript;
421
421
 
422
422
  /*
423
- Stencil Hydrate Platform v4.43.5 | MIT Licensed | https://stenciljs.com
423
+ Stencil Hydrate Platform v4.44.1 | MIT Licensed | https://stenciljs.com
424
424
  */
425
425
  var __create = Object.create;
426
426
  var __defProp = Object.defineProperty;
@@ -755,6 +755,8 @@ var DEFAULT_DOC_DATA = {
755
755
  };
756
756
  var SLOT_FB_CSS = "slot-fb{display:contents}slot-fb[hidden]{display:none}";
757
757
  var XLINK_NS = "http://www.w3.org/1999/xlink";
758
+ var MAX_LAZY_LOAD_RETRIES = 3;
759
+ var LAZY_LOAD_RETRY_INTERVAL_MS = 1e3;
758
760
 
759
761
  // src/utils/style.ts
760
762
  function createStyleSheetIfNeededAndSupported(styles2) {
@@ -818,7 +820,7 @@ function getHostSlotNodes(childNodes, hostName, slotName) {
818
820
  slottedNodes.push(childNode);
819
821
  if (typeof slotName !== "undefined") return slottedNodes;
820
822
  }
821
- slottedNodes = [...slottedNodes, ...getHostSlotNodes(childNode.childNodes, hostName, slotName)];
823
+ slottedNodes = [...slottedNodes, ...getHostSlotNodes(internalCall(childNode, "childNodes"), hostName, slotName)];
822
824
  }
823
825
  return slottedNodes;
824
826
  }
@@ -1062,6 +1064,11 @@ var h = (nodeName, vnodeData, ...children) => {
1062
1064
  } else if (child != null && typeof child !== "boolean") {
1063
1065
  if (simple = typeof nodeName !== "function" && !isComplexType(child)) {
1064
1066
  child = String(child);
1067
+ } else if (typeof nodeName !== "function" && child.$flags$ === void 0) {
1068
+ {
1069
+ consoleError("Invalid vNode child");
1070
+ }
1071
+ continue;
1065
1072
  }
1066
1073
  if (simple && lastSimple) {
1067
1074
  vNodeChildren[vNodeChildren.length - 1].$text$ += child;
@@ -2297,7 +2304,7 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
2297
2304
  }
2298
2305
  }
2299
2306
  if (newValue == null || newValue === false) {
2300
- if (newValue !== false || elm.getAttribute(memberName) === "") {
2307
+ if (newValue !== false || elm.getAttribute(memberName) === "" || flags & 4 /* isHost */ && !isEnumeratedAttribute(memberName)) {
2301
2308
  if (xlink) {
2302
2309
  elm.removeAttributeNS(XLINK_NS, memberName);
2303
2310
  } else {
@@ -2314,6 +2321,8 @@ var setAccessor = (elm, memberName, oldValue, newValue, isSvg, flags, initialRen
2314
2321
  }
2315
2322
  }
2316
2323
  };
2324
+ var ENUMERATED_ATTRIBUTES = /* @__PURE__ */ new Set(["draggable", "contenteditable", "spellcheck"]);
2325
+ var isEnumeratedAttribute = (attrName) => ENUMERATED_ATTRIBUTES.has(attrName) || attrName.startsWith("aria-");
2317
2326
  var parseClassListRegex = /\s/;
2318
2327
  var parseClassList = (value) => {
2319
2328
  if (typeof value === "object" && value && "baseVal" in value) {
@@ -2716,7 +2725,10 @@ var markSlotContentForRelocation = (elm) => {
2716
2725
  const slotName = childNode["s-sn"];
2717
2726
  for (j = hostContentNodes.length - 1; j >= 0; j--) {
2718
2727
  node = hostContentNodes[j];
2719
- if (!node["s-cn"] && !node["s-nr"] && node["s-hn"] !== childNode["s-hn"] && (!node["s-sh"] || node["s-sh"] !== childNode["s-hn"])) {
2728
+ 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
2729
+ // `slotName === ''` itself - a matched default node's cached `s-sn` is `''` too, which
2730
+ // would trivially "match" on every re-render and force pointless re-insertion.
2731
+ (!node["s-sh"] || node["s-sh"] !== childNode["s-hn"] || slotName !== "" && getSlotName(node) === slotName)) {
2720
2732
  if (isNodeLocatedInSlot(node, slotName)) {
2721
2733
  let relocateNodeData = relocateNodes.find((r) => r.$nodeToRelocate$ === node);
2722
2734
  checkSlotFallbackVisibility = true;
@@ -2786,7 +2798,7 @@ var insertBefore = (parent, newNode, reference, isInitialLoad) => {
2786
2798
  return newNode;
2787
2799
  }
2788
2800
  }
2789
- if (parent.__insertBefore) {
2801
+ if ((parent == null ? void 0 : parent.__insertBefore)) {
2790
2802
  return parent.__insertBefore(newNode, reference);
2791
2803
  } else {
2792
2804
  return parent == null ? void 0 : parent.insertBefore(newNode, reference);
@@ -3291,10 +3303,12 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
3291
3303
 
3292
3304
  // src/runtime/initialize-component.ts
3293
3305
  var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
3306
+ var _a2;
3294
3307
  let Cstr;
3295
3308
  try {
3296
3309
  if ((hostRef.$flags$ & 32 /* hasInitializedComponent */) === 0) {
3297
3310
  hostRef.$flags$ |= 32 /* hasInitializedComponent */;
3311
+ hostRef.$flags$ &= -1025 /* hasFailedLoad */;
3298
3312
  const bundleId = cmpMeta.$lazyBundleId$;
3299
3313
  if (bundleId) {
3300
3314
  const CstrImport = loadModule(cmpMeta);
@@ -3306,6 +3320,11 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
3306
3320
  Cstr = CstrImport;
3307
3321
  }
3308
3322
  if (!Cstr) {
3323
+ hostRef.$flags$ &= -33 /* hasInitializedComponent */;
3324
+ hostRef.$loadRetryCount$ = ((_a2 = hostRef.$loadRetryCount$) != null ? _a2 : 0) + 1;
3325
+ if (hostRef.$loadRetryCount$ < MAX_LAZY_LOAD_RETRIES) {
3326
+ hostRef.$flags$ |= 1024 /* hasFailedLoad */;
3327
+ }
3309
3328
  throw new Error(`Constructor for "${cmpMeta.$tagName$}#${hostRef.$modeName$}" was not found`);
3310
3329
  }
3311
3330
  if (!Cstr.isProxied) {
@@ -3385,7 +3404,7 @@ var initializeComponent = async (elm, hostRef, cmpMeta, hmrVersionId) => {
3385
3404
  hostRef.$onRenderResolve$();
3386
3405
  hostRef.$onRenderResolve$ = void 0;
3387
3406
  }
3388
- if (hostRef.$onReadyResolve$) {
3407
+ if (hostRef.$onReadyResolve$ && !(hostRef.$flags$ & 1024 /* hasFailedLoad */)) {
3389
3408
  hostRef.$onReadyResolve$(elm);
3390
3409
  }
3391
3410
  }
@@ -3444,6 +3463,8 @@ var connectedCallback = (elm) => {
3444
3463
  addHostEventListeners(elm, hostRef, cmpMeta.$listeners$);
3445
3464
  if (hostRef == null ? void 0 : hostRef.$lazyInstance$) {
3446
3465
  fireConnectedCallback(hostRef.$lazyInstance$, elm);
3466
+ } else if (hostRef.$flags$ & 1024 /* hasFailedLoad */) {
3467
+ setTimeout(() => initializeComponent(elm, hostRef, cmpMeta), LAZY_LOAD_RETRY_INTERVAL_MS);
3447
3468
  } else if (hostRef == null ? void 0 : hostRef.$onReadyPromise$) {
3448
3469
  hostRef.$onReadyPromise$.then(() => fireConnectedCallback(hostRef.$lazyInstance$, elm));
3449
3470
  }
@@ -17026,7 +17047,6 @@ class Datetime {
17026
17047
  }
17027
17048
  renderCombinedDatePickerColumn() {
17028
17049
  const { defaultParts, disabled, workingParts, locale, minParts, maxParts, todayParts, isDateEnabled } = this;
17029
- const activePart = this.getActivePartsWithFallback();
17030
17050
  /**
17031
17051
  * By default, generate a range of 3 months:
17032
17052
  * Previous month, current month, and next month
@@ -17082,8 +17102,10 @@ class Datetime {
17082
17102
  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) => {
17083
17103
  const { value } = ev.detail;
17084
17104
  const findPart = parts.find(({ month, day, year }) => value === `${year}-${month}-${day}`);
17105
+ // Read live so parts a sibling column just committed are included.
17106
+ const activePart = this.getActivePartsWithFallback();
17085
17107
  this.setWorkingParts({
17086
- ...workingParts,
17108
+ ...this.workingParts,
17087
17109
  ...findPart,
17088
17110
  });
17089
17111
  this.setActiveParts({
@@ -17160,11 +17182,12 @@ class Datetime {
17160
17182
  return [];
17161
17183
  }
17162
17184
  const { disabled, workingParts } = this;
17163
- const activePart = this.getActivePartsWithFallback();
17164
17185
  const pickerColumnValue = (workingParts.day !== null ? workingParts.day : this.defaultParts.day) ?? undefined;
17165
17186
  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) => {
17187
+ // Read live so parts a sibling column just committed are included.
17188
+ const activePart = this.getActivePartsWithFallback();
17166
17189
  this.setWorkingParts({
17167
- ...workingParts,
17190
+ ...this.workingParts,
17168
17191
  day: ev.detail.value,
17169
17192
  });
17170
17193
  this.setActiveParts({
@@ -17179,10 +17202,11 @@ class Datetime {
17179
17202
  return [];
17180
17203
  }
17181
17204
  const { disabled, workingParts } = this;
17182
- const activePart = this.getActivePartsWithFallback();
17183
17205
  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) => {
17206
+ // Read live so parts a sibling column just committed are included.
17207
+ const activePart = this.getActivePartsWithFallback();
17184
17208
  this.setWorkingParts({
17185
- ...workingParts,
17209
+ ...this.workingParts,
17186
17210
  month: ev.detail.value,
17187
17211
  });
17188
17212
  // Month wheel is navigation-only in multi-select mode as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
@@ -17200,10 +17224,11 @@ class Datetime {
17200
17224
  return [];
17201
17225
  }
17202
17226
  const { disabled, workingParts } = this;
17203
- const activePart = this.getActivePartsWithFallback();
17204
17227
  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) => {
17228
+ // Read live so parts a sibling column just committed are included.
17229
+ const activePart = this.getActivePartsWithFallback();
17205
17230
  this.setWorkingParts({
17206
- ...workingParts,
17231
+ ...this.workingParts,
17207
17232
  year: ev.detail.value,
17208
17233
  });
17209
17234
  // Year wheel is navigation-only in multi-select mode as a fix for https://github.com/ionic-team/ionic-framework/issues/29673
@@ -17239,13 +17264,14 @@ class Datetime {
17239
17264
  ];
17240
17265
  }
17241
17266
  renderHourPickerColumn(hoursData) {
17242
- const { disabled, workingParts } = this;
17267
+ const { disabled } = this;
17243
17268
  if (hoursData.length === 0)
17244
17269
  return [];
17245
17270
  const activePart = this.getActivePartsWithFallback();
17246
17271
  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) => {
17272
+ // Read live so parts a sibling column just committed are included.
17247
17273
  this.setWorkingParts({
17248
- ...workingParts,
17274
+ ...this.workingParts,
17249
17275
  hour: ev.detail.value,
17250
17276
  });
17251
17277
  this.setActiveParts({
@@ -17256,13 +17282,14 @@ class Datetime {
17256
17282
  } }, 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)))));
17257
17283
  }
17258
17284
  renderMinutePickerColumn(minutesData) {
17259
- const { disabled, workingParts } = this;
17285
+ const { disabled } = this;
17260
17286
  if (minutesData.length === 0)
17261
17287
  return [];
17262
17288
  const activePart = this.getActivePartsWithFallback();
17263
17289
  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) => {
17290
+ // Read live so parts a sibling column just committed are included.
17264
17291
  this.setWorkingParts({
17265
- ...workingParts,
17292
+ ...this.workingParts,
17266
17293
  minute: ev.detail.value,
17267
17294
  });
17268
17295
  this.setActiveParts({
@@ -17273,16 +17300,18 @@ class Datetime {
17273
17300
  } }, 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)))));
17274
17301
  }
17275
17302
  renderDayPeriodPickerColumn(dayPeriodData) {
17276
- const { disabled, workingParts } = this;
17303
+ const { disabled } = this;
17277
17304
  if (dayPeriodData.length === 0) {
17278
17305
  return [];
17279
17306
  }
17280
17307
  const activePart = this.getActivePartsWithFallback();
17281
17308
  const isDayPeriodRTL = isLocaleDayPeriodRTL(this.locale);
17282
17309
  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) => {
17283
- const hour = calculateHourFromAMPM(workingParts, ev.detail.value);
17310
+ // Read live so parts a sibling column just committed are included.
17311
+ const currentParts = this.workingParts;
17312
+ const hour = calculateHourFromAMPM(currentParts, ev.detail.value);
17284
17313
  this.setWorkingParts({
17285
- ...workingParts,
17314
+ ...currentParts,
17286
17315
  ampm: ev.detail.value,
17287
17316
  hour,
17288
17317
  });
@@ -17634,7 +17663,7 @@ class Datetime {
17634
17663
  const hasDatePresentation = presentation === 'date' || presentation === 'date-time' || presentation === 'time-date';
17635
17664
  const hasWheelVariant = hasDatePresentation && preferWheel;
17636
17665
  renderHiddenInput(true, el, name, formatValue(value), disabled);
17637
- return (hAsync(Host, { key: 'd8e6dfe5e3bffb1c38a3e37b63b3aec099f40d29', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
17666
+ return (hAsync(Host, { key: '4e0b529a70924b065bcc6191e08550428b5a52a0', "aria-disabled": disabled ? 'true' : null, onFocus: this.onFocus, onBlur: this.onBlur, class: {
17638
17667
  ...createColorClasses$1(color, {
17639
17668
  [mode]: true,
17640
17669
  ['datetime-readonly']: readonly,
@@ -17646,7 +17675,7 @@ class Datetime {
17646
17675
  [`datetime-prefer-wheel`]: hasWheelVariant,
17647
17676
  [`datetime-grid`]: isGridStyle,
17648
17677
  }),
17649
- } }, hAsync("div", { key: '20889d3c68dd5109633c0e214411a63d6f3025bb', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
17678
+ } }, hAsync("div", { key: 'cc9d1b92f960984cb0466d0003a240ace67da243', class: "intersection-tracker", ref: (el) => (this.intersectionTrackerRef = el) }), this.renderDatetime(mode)));
17650
17679
  }
17651
17680
  get el() { return getElement(this); }
17652
17681
  static get watchers() { return {
@@ -29255,6 +29284,12 @@ class PickerColumn {
29255
29284
  this.isColumnVisible = false;
29256
29285
  this.canExitInputMode = true;
29257
29286
  this.updateValueTextOnScroll = false;
29287
+ this.isUserScroll = false;
29288
+ /**
29289
+ * The haptics for the wheel picker are an iOS-only feature. As a result,
29290
+ * they should be disabled on Android.
29291
+ */
29292
+ this.enableHaptics = false;
29258
29293
  this.ariaLabel = null;
29259
29294
  this.isActive = false;
29260
29295
  /**
@@ -29286,6 +29321,12 @@ class PickerColumn {
29286
29321
  */
29287
29322
  this.canExitInputMode = canExitInputMode;
29288
29323
  this.updateValueTextOnScroll = false;
29324
+ /**
29325
+ * This scroll takes over from whatever the user was doing, so an outside
29326
+ * press must not commit an option the column is only passing through.
29327
+ */
29328
+ this.isUserScroll = false;
29329
+ this.stopWatchingForOutsidePress();
29289
29330
  scrollEl.scroll({
29290
29331
  top,
29291
29332
  left: 0,
@@ -29340,6 +29381,117 @@ class PickerColumn {
29340
29381
  }
29341
29382
  this.isActive = state;
29342
29383
  };
29384
+ this.clearScrollEndTimeout = () => {
29385
+ if (this.scrollEndTimeout) {
29386
+ clearTimeout(this.scrollEndTimeout);
29387
+ this.scrollEndTimeout = undefined;
29388
+ }
29389
+ };
29390
+ /**
29391
+ * Resets the idle timer that commits the centered option.
29392
+ */
29393
+ this.resetScrollEndTimeout = () => {
29394
+ this.clearScrollEndTimeout();
29395
+ this.scrollEndTimeout = setTimeout(this.settle, SCROLL_END_DELAY);
29396
+ };
29397
+ /**
29398
+ * Capture so the column still commits if an application's own pointerdown
29399
+ * handler stops the event before it reaches the document.
29400
+ */
29401
+ this.watchForOutsidePress = () => {
29402
+ doc?.addEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
29403
+ };
29404
+ this.stopWatchingForOutsidePress = () => {
29405
+ doc?.removeEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
29406
+ };
29407
+ /**
29408
+ * Resets everything the current scroll interaction is holding, so nothing
29409
+ * pending on it can commit later.
29410
+ */
29411
+ this.discardScroll = () => {
29412
+ this.stopWatchingForOutsidePress();
29413
+ this.clearScrollEndTimeout();
29414
+ this.scrollEndCallback = undefined;
29415
+ this.centeredOption = undefined;
29416
+ this.haltedAtScrollTop = undefined;
29417
+ this.isScrolling = false;
29418
+ this.isUserScroll = false;
29419
+ this.canExitInputMode = true;
29420
+ };
29421
+ /**
29422
+ * Commits the option that is currently centered under the highlight and ends
29423
+ * the scroll interaction.
29424
+ */
29425
+ this.settle = () => {
29426
+ const { centeredOption } = this;
29427
+ this.clearScrollEndTimeout();
29428
+ this.stopWatchingForOutsidePress();
29429
+ this.isUserScroll = false;
29430
+ this.isScrolling = false;
29431
+ this.updateValueTextOnScroll = true;
29432
+ this.enableHaptics && hapticSelectionEnd();
29433
+ /**
29434
+ * Certain tasks (such as those that
29435
+ * cause re-renders) should only be done
29436
+ * once scrolling has finished, otherwise
29437
+ * flickering may occur.
29438
+ */
29439
+ const { scrollEndCallback } = this;
29440
+ if (scrollEndCallback) {
29441
+ scrollEndCallback();
29442
+ this.scrollEndCallback = undefined;
29443
+ }
29444
+ /**
29445
+ * Reset this flag as the
29446
+ * next scroll interaction could
29447
+ * be a scroll from the user. In this
29448
+ * case, we should exit input mode.
29449
+ */
29450
+ this.canExitInputMode = true;
29451
+ if (centeredOption !== undefined) {
29452
+ // Cleared here so a later scroll that centers nothing cannot fall back on it.
29453
+ this.centeredOption = undefined;
29454
+ if (centeredOption.isConnected) {
29455
+ this.setValue(centeredOption.value);
29456
+ }
29457
+ }
29458
+ };
29459
+ /**
29460
+ * Commits the option the user can see when they press anything outside of the
29461
+ * column during a scroll they started. This runs on pointerdown rather than
29462
+ * click so the value is up to date by the time an application's own click
29463
+ * handler (a Save button, for example) reads it.
29464
+ */
29465
+ this.onPointerDownOutside = (ev) => {
29466
+ const { centeredOption, parentEl, scrollEl } = this;
29467
+ if (!this.isScrolling) {
29468
+ return;
29469
+ }
29470
+ /**
29471
+ * The column can live in another component's Shadow DOM, where a document
29472
+ * listener sees the target retargeted to the outer host. The composed path
29473
+ * is the only reliable way to tell a press on the column apart.
29474
+ */
29475
+ const path = ev.composedPath();
29476
+ /**
29477
+ * A press anywhere in the parent picker counts as inside, so reaching for a
29478
+ * sibling wheel leaves this column coasting.
29479
+ */
29480
+ if (path.includes(this.el) || (parentEl != null && path.includes(parentEl))) {
29481
+ return;
29482
+ }
29483
+ /**
29484
+ * Landing on the centered option halts the in-flight momentum scroll, so the
29485
+ * committed value and the option the user is left looking at agree. The
29486
+ * option list can be replaced mid-scroll, and a detached option has no
29487
+ * offset to center on.
29488
+ */
29489
+ if (centeredOption !== undefined && centeredOption.isConnected) {
29490
+ this.centerPickerItemInView(centeredOption, false, false);
29491
+ this.haltedAtScrollTop = scrollEl?.scrollTop;
29492
+ }
29493
+ this.settle();
29494
+ };
29343
29495
  /**
29344
29496
  * When the column scrolls, the component
29345
29497
  * needs to determine which item is centered
@@ -29347,27 +29499,42 @@ class PickerColumn {
29347
29499
  * the item object.
29348
29500
  */
29349
29501
  this.initializeScrollListener = () => {
29350
- /**
29351
- * The haptics for the wheel picker are
29352
- * an iOS-only feature. As a result, they should
29353
- * be disabled on Android.
29354
- */
29355
- const enableHaptics = isPlatform('ios');
29502
+ this.enableHaptics = isPlatform('ios');
29356
29503
  const { el, scrollEl } = this;
29357
- let timeout;
29358
29504
  let activeEl = this.activeItem;
29359
29505
  const scrollCallback = () => {
29360
29506
  raf(() => {
29361
- if (!scrollEl)
29507
+ /**
29508
+ * This frame cannot be cancelled, and moving the column disconnects it
29509
+ * without the observer reporting a change, so this checks live state.
29510
+ */
29511
+ if (!this.el.isConnected || !this.isColumnVisible || !scrollEl)
29362
29512
  return;
29363
- if (timeout) {
29364
- clearTimeout(timeout);
29365
- timeout = undefined;
29513
+ const { haltedAtScrollTop } = this;
29514
+ if (haltedAtScrollTop !== undefined) {
29515
+ /**
29516
+ * Still at the halted position, so this frame is the halt landing
29517
+ * rather than the wheel moving, and re-arming would start a second
29518
+ * commit cycle.
29519
+ */
29520
+ if (Math.abs(scrollEl.scrollTop - haltedAtScrollTop) <= HALT_TOLERANCE)
29521
+ return;
29522
+ this.haltedAtScrollTop = undefined;
29366
29523
  }
29524
+ // Armed before the early returns below, so a scroll never ends uncommitted.
29525
+ this.resetScrollEndTimeout();
29367
29526
  if (!this.isScrolling) {
29368
- enableHaptics && hapticSelectionStart();
29527
+ this.enableHaptics && hapticSelectionStart();
29369
29528
  this.isScrolling = true;
29370
29529
  }
29530
+ /**
29531
+ * Only a user-driven scroll holds an uncommitted selection. Checked every
29532
+ * frame because the user can take hold of the wheel mid-scroll, and
29533
+ * re-adding the same listener is a no-op.
29534
+ */
29535
+ if (this.isUserScroll) {
29536
+ this.watchForOutsidePress();
29537
+ }
29371
29538
  /**
29372
29539
  * Select item in the center of the column
29373
29540
  * which is the month/year that we want to select
@@ -29427,18 +29594,23 @@ class PickerColumn {
29427
29594
  newActiveElement = fallbackActiveElement;
29428
29595
  }
29429
29596
  }
29430
- if (activeEl !== undefined) {
29431
- this.setPickerItemActiveState(activeEl, false);
29432
- }
29597
+ /**
29598
+ * A scroll can land with no selectable option centered, such as an
29599
+ * overscroll bounce briefly centering the empty padding rows. Keep the
29600
+ * current selection until an option is centered again.
29601
+ */
29433
29602
  if (newActiveElement === undefined || newActiveElement.disabled) {
29434
29603
  return;
29435
29604
  }
29605
+ if (activeEl !== undefined) {
29606
+ this.setPickerItemActiveState(activeEl, false);
29607
+ }
29436
29608
  /**
29437
29609
  * If we are selecting a new value,
29438
29610
  * we need to run haptics again.
29439
29611
  */
29440
29612
  if (newActiveElement !== activeEl) {
29441
- enableHaptics && hapticSelectionChanged();
29613
+ this.enableHaptics && hapticSelectionChanged();
29442
29614
  if (this.canExitInputMode) {
29443
29615
  /**
29444
29616
  * The native iOS wheel picker
@@ -29470,32 +29642,14 @@ class PickerColumn {
29470
29642
  if (this.updateValueTextOnScroll) {
29471
29643
  this.assistiveFocusable?.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
29472
29644
  }
29473
- timeout = setTimeout(() => {
29474
- this.isScrolling = false;
29475
- this.updateValueTextOnScroll = true;
29476
- enableHaptics && hapticSelectionEnd();
29477
- /**
29478
- * Certain tasks (such as those that
29479
- * cause re-renders) should only be done
29480
- * once scrolling has finished, otherwise
29481
- * flickering may occur.
29482
- */
29483
- const { scrollEndCallback } = this;
29484
- if (scrollEndCallback) {
29485
- scrollEndCallback();
29486
- this.scrollEndCallback = undefined;
29487
- }
29488
- /**
29489
- * Reset this flag as the
29490
- * next scroll interaction could
29491
- * be a scroll from the user. In this
29492
- * case, we should exit input mode.
29493
- */
29494
- this.canExitInputMode = true;
29495
- this.setValue(newActiveElement.value);
29496
- }, 250);
29645
+ this.centeredOption = newActiveElement;
29497
29646
  });
29498
29647
  };
29648
+ const userScrollCallback = () => {
29649
+ this.isUserScroll = true;
29650
+ // Taking hold of the wheel ends the halt even if it has not moved yet.
29651
+ this.haltedAtScrollTop = undefined;
29652
+ };
29499
29653
  /**
29500
29654
  * Wrap this in an raf so that the scroll callback
29501
29655
  * does not fire when component is initially shown.
@@ -29504,8 +29658,19 @@ class PickerColumn {
29504
29658
  if (!scrollEl)
29505
29659
  return;
29506
29660
  scrollEl.addEventListener('scroll', scrollCallback);
29661
+ scrollEl.addEventListener('pointerdown', userScrollCallback);
29662
+ scrollEl.addEventListener('wheel', userScrollCallback, { passive: true });
29663
+ /**
29664
+ * A `pointerdown` fires once per touch, so a drag that pauses long enough
29665
+ * to commit would look like a scroll the column started. A `touchmove`
29666
+ * keeps arriving while the finger moves.
29667
+ */
29668
+ scrollEl.addEventListener('touchmove', userScrollCallback, { passive: true });
29507
29669
  this.destroyScrollListener = () => {
29508
29670
  scrollEl.removeEventListener('scroll', scrollCallback);
29671
+ scrollEl.removeEventListener('pointerdown', userScrollCallback);
29672
+ scrollEl.removeEventListener('wheel', userScrollCallback);
29673
+ scrollEl.removeEventListener('touchmove', userScrollCallback);
29509
29674
  };
29510
29675
  });
29511
29676
  };
@@ -29688,6 +29853,14 @@ class PickerColumn {
29688
29853
  }
29689
29854
  else {
29690
29855
  this.isColumnVisible = false;
29856
+ /**
29857
+ * The pending timer still runs so it resets the scroll state, but the
29858
+ * option it would have committed is dropped. A column the user cannot
29859
+ * see should not change its value.
29860
+ */
29861
+ this.stopWatchingForOutsidePress();
29862
+ this.centeredOption = undefined;
29863
+ this.haltedAtScrollTop = undefined;
29691
29864
  if (this.destroyScrollListener) {
29692
29865
  this.destroyScrollListener();
29693
29866
  this.destroyScrollListener = undefined;
@@ -29758,6 +29931,13 @@ class PickerColumn {
29758
29931
  connectedCallback() {
29759
29932
  this.ariaLabel = this.el.getAttribute('aria-label') ?? 'Select a value';
29760
29933
  }
29934
+ disconnectedCallback() {
29935
+ /**
29936
+ * A pending settle would otherwise commit a value on a column that is no
29937
+ * longer in the DOM.
29938
+ */
29939
+ this.discardScroll();
29940
+ }
29761
29941
  get activeItem() {
29762
29942
  const { value } = this;
29763
29943
  const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
@@ -29775,14 +29955,14 @@ class PickerColumn {
29775
29955
  render() {
29776
29956
  const { color, disabled, isActive, numericInput } = this;
29777
29957
  const mode = getIonMode$1(this);
29778
- return (hAsync(Host, { key: '78b46ad10d88ea1bb43ca8c36748767912f03224', class: createColorClasses$1(color, {
29958
+ return (hAsync(Host, { key: '60a893619d0b01fba53fbccef67a10d533a22657', class: createColorClasses$1(color, {
29779
29959
  [mode]: true,
29780
29960
  ['picker-column-active']: isActive,
29781
29961
  ['picker-column-numeric-input']: numericInput,
29782
29962
  ['picker-column-disabled']: disabled,
29783
- }) }, hAsync("slot", { key: '761e501df77f7de896ffb3ebb99ebf88c5c3bf70', name: "prefix" }), hAsync("div", { key: '9f4caaeef8ab704522a85f30876d371712f47c5c', class: "picker-opts", ref: (el) => {
29963
+ }) }, hAsync("slot", { key: '79f1e047f89c5ec916ed02efaac56ef3f73b8969', name: "prefix" }), hAsync("div", { key: 'c45c86e88353a196ff38159f40f390bc27852c9e', class: "picker-opts", ref: (el) => {
29784
29964
  this.scrollEl = el;
29785
- }, 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" })));
29965
+ }, 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" })));
29786
29966
  }
29787
29967
  get el() { return getElement(this); }
29788
29968
  static get watchers() { return {
@@ -29814,6 +29994,19 @@ class PickerColumn {
29814
29994
  }; }
29815
29995
  }
29816
29996
  const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
29997
+ /**
29998
+ * How long the column must be idle before the centered option is treated as
29999
+ * the user's selection. Replaceable by the `scrollend` event once that is
30000
+ * supported everywhere (https://caniuse.com/?search=scrollend).
30001
+ */
30002
+ const SCROLL_END_DELAY = 250;
30003
+ /**
30004
+ * How far, in pixels, the column may report from where it was halted and still
30005
+ * count as having stayed there. Centering targets a position between two snap
30006
+ * points, so mandatory snapping corrects it by half the column height less
30007
+ * three option heights: 2px at the default sizes.
30008
+ */
30009
+ const HALT_TOLERANCE = 2;
29817
30010
 
29818
30011
  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}`;
29819
30012
 
@@ -42754,7 +42947,7 @@ var NAMESPACE = (
42754
42947
  );
42755
42948
 
42756
42949
  /*
42757
- Stencil Hydrate Runner v4.43.5 | MIT Licensed | https://stenciljs.com
42950
+ Stencil Hydrate Runner v4.44.1 | MIT Licensed | https://stenciljs.com
42758
42951
  */
42759
42952
  var __create = Object.create;
42760
42953
  var __defProp = Object.defineProperty;
package/loader/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export interface CustomElementsDefineOptions {
8
8
  ael?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
9
9
  rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
10
10
  }
11
- export declare function defineCustomElements(win?: Window, opts?: CustomElementsDefineOptions): void;
11
+ export declare function defineCustomElements(win?: Window, opts?: CustomElementsDefineOptions): Promise<void>;
12
12
  /**
13
13
  * @deprecated
14
14
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ionic/core",
3
- "version": "9.0.1-nightly.20260821",
3
+ "version": "9.0.1-nightly.20260824",
4
4
  "description": "Base components for Ionic",
5
5
  "engines": {
6
6
  "node": ">= 16"
@@ -66,7 +66,7 @@
66
66
  "loader/"
67
67
  ],
68
68
  "dependencies": {
69
- "@stencil/core": "^4.43.5",
69
+ "@stencil/core": "^4.44.1",
70
70
  "ionicons": "^8.1.0",
71
71
  "tslib": "^2.1.0"
72
72
  },
@@ -1,4 +0,0 @@
1
- /*!
2
- * (C) Ionic http://ionicframework.com - MIT License
3
- */
4
- import{w as o,d as t}from"./p-ZjP4CjeZ.js";import{g as n,h as i,a}from"./p-66ogmUZU.js";import{a as e,b as r,c as s}from"./p-BrFaQbGY.js";import{a as d,K as c}from"./p-BMPN55of.js";const l=new WeakMap,u=(o,t,n,i=0,a=!1)=>{l.has(o)!==n&&(n?f(o,t,i,a):w(o,t))},f=(o,t,n,i=!1)=>{const a=t.parentNode,e=t.cloneNode(!1);e.classList.add("cloned-input"),e.tabIndex=-1,i&&(e.disabled=!0);const r="rtl"===o.ownerDocument.dir;e.style.insetInlineStart=r?a.offsetWidth-t.offsetLeft-t.offsetWidth+"px":`${t.offsetLeft}px`,a.appendChild(e),l.set(o,e);const s=r?9999:-9999;o.style.pointerEvents="none",t.style.transform=`translate3d(${s}px,${n}px,0) scale(0)`},w=(o,t)=>{const n=l.get(o);n&&(l.delete(o),n.remove()),o.style.pointerEvents="",t.style.transform=""},p="input, textarea, [no-blur], [contenteditable]",m="$ionPaddingTimer",b=(o,t,n)=>{const i=o[m];i&&clearTimeout(i),t>0?o.style.setProperty("--keyboard-offset",`${t}px`):o[m]=setTimeout((()=>{o.style.setProperty("--keyboard-offset","0px"),n&&n()}),120)},h=(o,t,n)=>{o.addEventListener("focusout",(()=>{t&&b(t,0,n)}),{once:!0})};let y=0;const S="data-ionic-skip-scroll-assist",D=o=>{if(document.activeElement===o)return;const t=o.getAttribute("id"),n=o.closest(`label[for="${t}"]`),i=document.activeElement?.closest(`label[for="${t}"]`);null!==n&&n===i||(o.setAttribute(S,"true"),o.focus())},M=async(o,t,a,e,r,s,d=!1,c=0,l=!0)=>{if(!a&&!e)return;const f=((o,t,n,i)=>((o,t,n,i)=>{const a=o.top,e=o.bottom,r=t.top,s=r+15,d=Math.min(t.bottom,i-n)-50-e,c=s-a,l=Math.round(d<0?-d:c>0?-c:0),u=Math.min(l,a-r),f=Math.abs(u);return{scrollAmount:u,scrollDuration:Math.min(400,Math.max(150,f/.3)),scrollPadding:n,inputSafeY:4-(a-s)}})((o.closest("ion-item,[ion-item]")??o).getBoundingClientRect(),t.getBoundingClientRect(),n,i))(o,a||e,r,c);if(a&&Math.abs(f.scrollAmount)<4)return D(t),void(s&&null!==a&&(b(a,y),h(t,a,(()=>y=0))));if(u(o,t,!0,f.inputSafeY,d),D(t),s&&a&&(y=f.scrollPadding,b(a,y)),"undefined"!=typeof window){let e;const r=async()=>{void 0!==e&&clearTimeout(e),window.removeEventListener("ionKeyboardDidShow",d),window.removeEventListener("ionKeyboardDidShow",r),a&&await i(a,0,f.scrollAmount,f.scrollDuration),u(o,t,!1,f.inputSafeY),document.activeElement===t&&D(t),s&&h(t,a,(()=>y=0))},d=()=>{window.removeEventListener("ionKeyboardDidShow",d),window.addEventListener("ionKeyboardDidShow",r)};if(a){const o=await n(a);if(l&&f.scrollAmount>o.scrollHeight-o.clientHeight-o.scrollTop)return"password"===t.type?(f.scrollAmount+=50,window.addEventListener("ionKeyboardDidShow",d)):window.addEventListener("ionKeyboardDidShow",r),void(e=setTimeout(r,1e3))}r()}},x=async(n,i)=>{if(void 0===t)return;const l="ios"===i,f="android"===i,w=n.getNumber("keyboardHeight",290),m=n.getBoolean("scrollAssist",!0),b=n.getBoolean("hideCaretOnScroll",l),h=n.getBoolean("inputBlurring",!1),y=n.getBoolean("scrollPadding",!0),D=Array.from(t.querySelectorAll("ion-input, ion-textarea")),x=new WeakMap,K=new WeakMap,v=await c.getResizeMode(),g=async t=>{await new Promise((o=>s(t,o)));const n=t.shadowRoot||t,i=n.querySelector("input")||n.querySelector("textarea"),c=a(t),l=c?null:t.closest("ion-footer");if(i){if(c&&b&&!x.has(t)){const o=((o,t,n)=>{if(!n||!t)return()=>{};const i=n=>{var i;(i=t)===i.getRootNode().activeElement&&u(o,t,n)},a=()=>u(o,t,!1),s=()=>i(!0),d=()=>i(!1);return e(n,"ionScrollStart",s),e(n,"ionScrollEnd",d),t.addEventListener("blur",a),()=>{r(n,"ionScrollStart",s),r(n,"ionScrollEnd",d),t.removeEventListener("blur",a)}})(t,i,c);x.set(t,o)}if("date"!==i.type&&"datetime-local"!==i.type&&(c||l)&&m&&!K.has(t)){const n=((t,n,i,a,e,r,s,c=!1)=>{const l=r&&(void 0===s||s.mode===d.None);let u=!1;const f=void 0!==o?o.innerHeight:0,w=o=>{!1!==u?M(t,n,i,a,o.detail.keyboardHeight,l,c,f,!1):u=!0},p=()=>{u=!1,o?.removeEventListener("ionKeyboardDidShow",w),t.removeEventListener("focusout",p)},m=async()=>{n.hasAttribute(S)?n.removeAttribute(S):(M(t,n,i,a,e,l,c,f),o?.addEventListener("ionKeyboardDidShow",w),t.addEventListener("focusout",p))};return t.addEventListener("focusin",m),()=>{t.removeEventListener("focusin",m),o?.removeEventListener("ionKeyboardDidShow",w),t.removeEventListener("focusout",p)}})(t,i,c,l,w,y,v,f);K.set(t,n)}}};h&&(()=>{let o=!0,t=!1;const n=document;e(n,"ionScrollStart",(()=>{t=!0})),n.addEventListener("focusin",(()=>{o=!0}),!0),n.addEventListener("touchend",(i=>{if(t)return void(t=!1);const a=n.activeElement;if(!a)return;if(a.matches(p))return;const e=i.target;e!==a&&(e.matches(p)||e.closest(p)||(o=!1,setTimeout((()=>{o||a.blur()}),50)))}),!1)})();for(const o of D)g(o);t.addEventListener("ionInputDidLoad",(o=>{g(o.detail)})),t.addEventListener("ionInputDidUnload",(o=>{(o=>{if(b){const t=x.get(o);t&&t(),x.delete(o)}if(m){const t=K.get(o);t&&t(),K.delete(o)}})(o.detail)}))};export{x as startInputShims}