@ionic/core 9.0.1-dev.11787949960.1e63841c → 9.0.1-dev.11788285010.17561004

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 (461) 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/{dist/ionic/p-BpG7jkT9.js → components/p-66ogmUZU.js} +1 -1
  99. package/components/p-6Vp915Y7.js +4 -0
  100. package/components/{p-B2L09UOs.js → p-7PNwKFZi.js} +1 -1
  101. package/components/{p-C8mPeq0D.js → p-A8MJRBIY.js} +1 -1
  102. package/components/p-AQcCdH2_.js +4 -0
  103. package/components/{p-DkEb3SCT.js → p-B6x5_b9w.js} +1 -1
  104. package/components/{p-CDKY4TZ_.js → p-B8MQjdvk.js} +1 -1
  105. package/components/{p-CLZPNP7x.js → p-BA_4ZIEg.js} +1 -1
  106. package/components/{p-CyKlfXdt.js → p-BFtL8t1r.js} +1 -1
  107. package/components/{p-RRH-7cpd.js → p-BMfgF-Tv.js} +1 -1
  108. package/components/{p-l-zxxFre.js → p-BPDxVIRr.js} +1 -1
  109. package/{dist/ionic/p-BC17SPKH.js → components/p-BSARlp49.js} +1 -1
  110. package/components/p-BdwCtX8Y.js +4 -0
  111. package/components/p-Bg4OwDwb.js +4 -0
  112. package/components/{p-CBhGZ6rF.js → p-BgUIV8NQ.js} +1 -1
  113. package/components/{p-CxiXpCtB.js → p-Bnc0m4SW.js} +1 -1
  114. package/components/{p-7qDu1bID.js → p-BpLt_Ptn.js} +1 -1
  115. package/components/{p-C12SAK00.js → p-BqBDq1Ma.js} +1 -1
  116. package/components/{p-mXsQnyWB.js → p-BrFaQbGY.js} +1 -1
  117. package/{dist/ionic/p-CoEa7CiN.js → components/p-BuPAFTWI.js} +1 -1
  118. package/components/{p-CB06XtlF.js → p-Bx2saTHs.js} +1 -1
  119. package/components/p-BxhE2W85.js +4 -0
  120. package/components/p-CHswSpKy.js +4 -0
  121. package/components/p-CQAjyETU.js +4 -0
  122. package/components/p-CR9OgE6N.js +4 -0
  123. package/components/{p-CEkamjav.js → p-CWETxTjE.js} +1 -1
  124. package/components/p-CaZeZIL2.js +4 -0
  125. package/components/{p-CuS0-WwK.js → p-CaiZOhfC.js} +1 -1
  126. package/components/{p-BFwL2yyK.js → p-CgvDC7hC.js} +1 -1
  127. package/components/p-CqyGR9Aq.js +4 -0
  128. package/components/{p-DMkSsriG.js → p-D7ysFE2B.js} +1 -1
  129. package/components/p-DCWfzDM8.js +4 -0
  130. package/{dist/ionic/p-DA88iqXQ.js → components/p-DDdkefwf.js} +1 -1
  131. package/components/{p-CJTKYpZv.js → p-DEW7CnUc.js} +1 -1
  132. package/components/p-DQ1IPvZO.js +4 -0
  133. package/components/{p-BAJ7NctL.js → p-DcOH6-o5.js} +1 -1
  134. package/components/p-DfdYCsov.js +4 -0
  135. package/{dist/ionic/p-DoUx_N0R.js → components/p-DhOoEIAs.js} +1 -1
  136. package/components/p-Dl_7b_UJ.js +4 -0
  137. package/components/p-DqAI6tg7.js +4 -0
  138. package/components/p-DrehWDfv.js +4 -0
  139. package/components/{p-BWHBdLfY.js → p-DysqCsJu.js} +1 -1
  140. package/components/{p-BqE7e5gH.js → p-H1f2qsk4.js} +1 -1
  141. package/components/p-HVYBAhFx.js +4 -0
  142. package/components/{p-BE9noJ1O.js → p-Kmrg3Fed.js} +1 -1
  143. package/{dist/ionic/p-wdSUbx5C.js → components/p-RFfE9hF6.js} +1 -1
  144. package/components/{p-Bcm-GVQM.js → p-SR-LLqp_.js} +1 -1
  145. package/components/p-eFI3mtEX.js +4 -0
  146. package/components/{p-5rFO7X8J.js → p-gFwXiYC_.js} +1 -1
  147. package/components/{p-COxY7PLK.js → p-tX3UxCnU.js} +1 -1
  148. package/components/{p-VTfnz_8u.js → p-v2NpoOHp.js} +1 -1
  149. package/css/core.css +1 -1
  150. package/css/core.css.map +1 -1
  151. package/css/ionic.bundle.css +1 -1
  152. package/css/ionic.bundle.css.map +1 -1
  153. package/dist/cjs/{animation-ihPP_z2n.js → animation-D-OqR4a4.js} +1 -1
  154. package/dist/cjs/{app-globals-BlkzA410.js → app-globals-BzgwARwJ.js} +1 -1
  155. package/dist/cjs/{button-active-ItGBjzmO.js → button-active-BlWSD7uK.js} +1 -1
  156. package/dist/cjs/{format-CPIqtp4x.js → format-D7ig6Vm0.js} +1 -1
  157. package/dist/cjs/{framework-delegate-DhyWUPGg.js → framework-delegate-BZUx4TnE.js} +1 -1
  158. package/dist/cjs/{hardware-back-button-D5f_kASb.js → hardware-back-button-JOAEFSzc.js} +1 -1
  159. package/dist/cjs/{helpers-BCLkFTTd.js → helpers-Dj5o76mq.js} +1 -1
  160. package/dist/cjs/{index-CldjPPyP.js → index-2sO-zkZ2.js} +4 -4
  161. package/dist/cjs/{index-Bgz6BcKx.js → index-BrVMoqUk.js} +16 -50
  162. package/dist/cjs/{index-49DTLc_Z.js → index-C8zH6b3d.js} +2 -2
  163. package/dist/cjs/{index-BcyiqD6R.js → index-CZ6vzt_q.js} +5 -5
  164. package/dist/cjs/{index-xum7jdbq.js → index-Csue6G3m.js} +2 -2
  165. package/dist/cjs/{index-BocV_y-c.js → index-EJLjthTK.js} +1 -2
  166. package/dist/cjs/index.cjs.js +12 -12
  167. package/dist/cjs/{input-shims-Jisy7U7-.js → input-shims-Bh7bnt2v.js} +3 -3
  168. package/dist/cjs/{input.utils-BDTpGrfn.js → input.utils-Cq3g9uHy.js} +1 -1
  169. package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
  170. package/dist/cjs/ion-action-sheet.cjs.entry.js +29 -45
  171. package/dist/cjs/ion-alert.cjs.entry.js +21 -29
  172. package/dist/cjs/ion-app_8.cjs.entry.js +16 -38
  173. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  174. package/dist/cjs/ion-back-button.cjs.entry.js +3 -3
  175. package/dist/cjs/ion-backdrop.cjs.entry.js +2 -2
  176. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +3 -3
  177. package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
  178. package/dist/cjs/ion-card_5.cjs.entry.js +3 -3
  179. package/dist/cjs/ion-checkbox.cjs.entry.js +4 -4
  180. package/dist/cjs/ion-chip.cjs.entry.js +2 -2
  181. package/dist/cjs/ion-col_3.cjs.entry.js +2 -2
  182. package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
  183. package/dist/cjs/ion-datetime.cjs.entry.js +24 -32
  184. package/dist/cjs/ion-fab_3.cjs.entry.js +3 -3
  185. package/dist/cjs/ion-img.cjs.entry.js +3 -3
  186. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +5 -5
  187. package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
  188. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +2 -2
  189. package/dist/cjs/ion-input.cjs.entry.js +5 -5
  190. package/dist/cjs/ion-item-option_3.cjs.entry.js +15 -13
  191. package/dist/cjs/ion-item_8.cjs.entry.js +3 -3
  192. package/dist/cjs/ion-loading.cjs.entry.js +10 -14
  193. package/dist/cjs/ion-menu_3.cjs.entry.js +8 -8
  194. package/dist/cjs/ion-modal.cjs.entry.js +32 -85
  195. package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
  196. package/dist/cjs/ion-picker-column-option.cjs.entry.js +3 -3
  197. package/dist/cjs/ion-picker-column.cjs.entry.js +46 -210
  198. package/dist/cjs/ion-picker.cjs.entry.js +2 -2
  199. package/dist/cjs/ion-popover.cjs.entry.js +10 -23
  200. package/dist/cjs/ion-progress-bar.cjs.entry.js +3 -3
  201. package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
  202. package/dist/cjs/ion-range.cjs.entry.js +4 -4
  203. package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -6
  204. package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
  205. package/dist/cjs/ion-ripple-effect.cjs.entry.js +2 -2
  206. package/dist/cjs/ion-route_4.cjs.entry.js +4 -4
  207. package/dist/cjs/ion-searchbar.cjs.entry.js +3 -3
  208. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  209. package/dist/cjs/ion-segment-view.cjs.entry.js +1 -1
  210. package/dist/cjs/ion-segment_2.cjs.entry.js +10 -14
  211. package/dist/cjs/ion-select-modal.cjs.entry.js +8 -8
  212. package/dist/cjs/ion-select_3.cjs.entry.js +47 -57
  213. package/dist/cjs/ion-spinner.cjs.entry.js +2 -2
  214. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  215. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +3 -3
  216. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  217. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  218. package/dist/cjs/ion-textarea.cjs.entry.js +5 -5
  219. package/dist/cjs/ion-toast.cjs.entry.js +8 -8
  220. package/dist/cjs/ion-toggle.cjs.entry.js +4 -4
  221. package/dist/cjs/{ionic-global-BMU-Us1Q.js → ionic-global-DvgIzM2F.js} +1 -1
  222. package/dist/cjs/ionic.cjs.js +4 -4
  223. package/dist/cjs/{ios.transition-OCcCN--B.js → ios.transition-zIgdoSYe.js} +4 -4
  224. package/dist/cjs/{item-multiple-inputs-BH9yPC66.js → item-multiple-inputs-DG-ZGm6j.js} +1 -1
  225. package/dist/cjs/loader.cjs.js +3 -3
  226. package/dist/cjs/{md.transition-D0o2IIbo.js → md.transition-CXeJ9rfh.js} +4 -4
  227. package/dist/cjs/{overlays-HN9joo1Z.js → overlays-Bg0auTQa.js} +34 -59
  228. package/dist/cjs/{select-option-render-BPjGDlsG.js → select-option-render-7m1WdFzF.js} +2 -2
  229. package/dist/cjs/{slot-mutation-controller-IQ250LoG.js → slot-mutation-controller-BJEJzx_e.js} +1 -1
  230. package/dist/cjs/{status-tap-Bakl9czs.js → status-tap-DxbUM5XX.js} +3 -3
  231. package/dist/cjs/{swipe-back-Cv4OZVJ5.js → swipe-back-F_DBt-Aw.js} +2 -2
  232. package/dist/collection/collection-manifest.json +1 -1
  233. package/dist/collection/components/action-sheet/action-sheet.js +20 -36
  234. package/dist/collection/components/alert/alert.js +12 -20
  235. package/dist/collection/components/content/content.js +4 -26
  236. package/dist/collection/components/datetime/datetime.js +17 -25
  237. package/dist/collection/components/item-sliding/item-sliding.js +12 -10
  238. package/dist/collection/components/loading/loading.js +3 -7
  239. package/dist/collection/components/modal/modal.ios.css +1 -12
  240. package/dist/collection/components/modal/modal.js +22 -75
  241. package/dist/collection/components/modal/modal.md.css +1 -12
  242. package/dist/collection/components/picker-column/picker-column.js +43 -207
  243. package/dist/collection/components/popover/popover.js +3 -16
  244. package/dist/collection/components/segment-button/segment-button.js +7 -11
  245. package/dist/collection/components/select/select.js +39 -49
  246. package/dist/collection/utils/overlays.js +29 -53
  247. package/dist/collection/utils/test/playwright/index.js +0 -1
  248. package/dist/docs.json +48 -279
  249. package/dist/esm/{animation-B6KGUJwl.js → animation-TxGPYeDn.js} +1 -1
  250. package/dist/esm/{app-globals-BvutUX8P.js → app-globals-Do8rJest.js} +1 -1
  251. package/dist/esm/{button-active-DRNebs9r.js → button-active-ChA4D-ml.js} +1 -1
  252. package/dist/esm/{format-BF3btM7P.js → format-CVk5e_GP.js} +1 -1
  253. package/dist/esm/{framework-delegate-60cEIAgt.js → framework-delegate-DaLWnISz.js} +1 -1
  254. package/dist/esm/{hardware-back-button-rhkwRNk2.js → hardware-back-button-D8W4L0JP.js} +1 -1
  255. package/dist/esm/{helpers-DLLANtRS.js → helpers-BIgoInJU.js} +1 -1
  256. package/dist/esm/{index-DOrtAUWV.js → index-BmOR8tCv.js} +2 -2
  257. package/dist/esm/{index-D_7MeuVD.js → index-C5ZdL0qp.js} +5 -5
  258. package/dist/esm/{index-BZHVn0iF.js → index-C8Dsa6li.js} +4 -4
  259. package/dist/esm/{index-h81G-QbJ.js → index-CKYcsw8f.js} +16 -50
  260. package/dist/esm/{index-Bl4BUvBL.js → index-DHw2lZxe.js} +2 -2
  261. package/dist/esm/{index-JgU5uTSY.js → index-elneMH8y.js} +2 -2
  262. package/dist/esm/index.js +12 -12
  263. package/dist/esm/{input-shims-C2ipc_XX.js → input-shims-09NN97kF.js} +3 -3
  264. package/dist/esm/{input.utils-D-qoPjqr.js → input.utils-BxyH9l1w.js} +1 -1
  265. package/dist/esm/ion-accordion_2.entry.js +3 -3
  266. package/dist/esm/ion-action-sheet.entry.js +29 -45
  267. package/dist/esm/ion-alert.entry.js +21 -29
  268. package/dist/esm/ion-app_8.entry.js +16 -38
  269. package/dist/esm/ion-avatar_3.entry.js +2 -2
  270. package/dist/esm/ion-back-button.entry.js +3 -3
  271. package/dist/esm/ion-backdrop.entry.js +2 -2
  272. package/dist/esm/ion-breadcrumb_2.entry.js +3 -3
  273. package/dist/esm/ion-button_2.entry.js +3 -3
  274. package/dist/esm/ion-card_5.entry.js +3 -3
  275. package/dist/esm/ion-checkbox.entry.js +4 -4
  276. package/dist/esm/ion-chip.entry.js +2 -2
  277. package/dist/esm/ion-col_3.entry.js +2 -2
  278. package/dist/esm/ion-datetime-button.entry.js +4 -4
  279. package/dist/esm/ion-datetime.entry.js +24 -32
  280. package/dist/esm/ion-fab_3.entry.js +3 -3
  281. package/dist/esm/ion-img.entry.js +3 -3
  282. package/dist/esm/ion-infinite-scroll_2.entry.js +5 -5
  283. package/dist/esm/ion-input-otp.entry.js +3 -3
  284. package/dist/esm/ion-input-password-toggle.entry.js +2 -2
  285. package/dist/esm/ion-input.entry.js +5 -5
  286. package/dist/esm/ion-item-option_3.entry.js +15 -13
  287. package/dist/esm/ion-item_8.entry.js +3 -3
  288. package/dist/esm/ion-loading.entry.js +10 -14
  289. package/dist/esm/ion-menu_3.entry.js +8 -8
  290. package/dist/esm/ion-modal.entry.js +32 -85
  291. package/dist/esm/ion-nav_2.entry.js +6 -6
  292. package/dist/esm/ion-picker-column-option.entry.js +3 -3
  293. package/dist/esm/ion-picker-column.entry.js +47 -211
  294. package/dist/esm/ion-picker.entry.js +2 -2
  295. package/dist/esm/ion-popover.entry.js +10 -23
  296. package/dist/esm/ion-progress-bar.entry.js +3 -3
  297. package/dist/esm/ion-radio_2.entry.js +4 -4
  298. package/dist/esm/ion-range.entry.js +4 -4
  299. package/dist/esm/ion-refresher_2.entry.js +6 -6
  300. package/dist/esm/ion-reorder_2.entry.js +4 -4
  301. package/dist/esm/ion-ripple-effect.entry.js +2 -2
  302. package/dist/esm/ion-route_4.entry.js +4 -4
  303. package/dist/esm/ion-searchbar.entry.js +3 -3
  304. package/dist/esm/ion-segment-content.entry.js +1 -1
  305. package/dist/esm/ion-segment-view.entry.js +1 -1
  306. package/dist/esm/ion-segment_2.entry.js +10 -14
  307. package/dist/esm/ion-select-modal.entry.js +8 -8
  308. package/dist/esm/ion-select_3.entry.js +47 -57
  309. package/dist/esm/ion-spinner.entry.js +2 -2
  310. package/dist/esm/ion-split-pane.entry.js +2 -2
  311. package/dist/esm/ion-tab-bar_2.entry.js +3 -3
  312. package/dist/esm/ion-tab_2.entry.js +3 -3
  313. package/dist/esm/ion-text.entry.js +2 -2
  314. package/dist/esm/ion-textarea.entry.js +5 -5
  315. package/dist/esm/ion-toast.entry.js +8 -8
  316. package/dist/esm/ion-toggle.entry.js +4 -4
  317. package/dist/esm/{ionic-global-B7I1sdvg.js → ionic-global-lrowsHfi.js} +1 -1
  318. package/dist/esm/ionic.js +5 -5
  319. package/dist/esm/{ios.transition-C-6IaIxe.js → ios.transition-BQhADrk1.js} +4 -4
  320. package/dist/esm/{item-multiple-inputs-DI91syHS.js → item-multiple-inputs-D_N3fDkD.js} +1 -1
  321. package/dist/esm/loader.js +4 -4
  322. package/dist/esm/{md.transition-dyqt0t0d.js → md.transition-D58NpmRa.js} +4 -4
  323. package/dist/esm/{overlays-Dz2cGX5q.js → overlays-BpnIFlXI.js} +35 -59
  324. package/dist/esm/{select-option-render-CUJpruSC.js → select-option-render-lIuu64EV.js} +2 -2
  325. package/dist/esm/{slot-mutation-controller-wFuztlVD.js → slot-mutation-controller-rS_T3FDR.js} +1 -1
  326. package/dist/esm/{status-tap-Dn_42wiy.js → status-tap-CpFQMLl6.js} +3 -3
  327. package/dist/esm/{swipe-back-CqOqrHW7.js → swipe-back-rmc7zeNW.js} +2 -2
  328. package/dist/ionic/index.esm.js +1 -1
  329. package/dist/ionic/ionic.esm.js +1 -1
  330. package/dist/ionic/{p-025763b2.entry.js → p-05800a02.entry.js} +1 -1
  331. package/dist/ionic/p-0eb50dca.entry.js +4 -0
  332. package/dist/ionic/{p-0b52d921.entry.js → p-16e9f542.entry.js} +1 -1
  333. package/dist/ionic/p-18d532a3.entry.js +4 -0
  334. package/dist/ionic/{p-a2fccdaa.entry.js → p-1db2afb4.entry.js} +1 -1
  335. package/dist/ionic/{p-5ed60413.entry.js → p-1df75f9e.entry.js} +1 -1
  336. package/dist/ionic/{p-2ff12c8a.entry.js → p-295ff427.entry.js} +1 -1
  337. package/dist/ionic/p-34b9379b.entry.js +4 -0
  338. package/dist/ionic/{p-cc749877.entry.js → p-39a8d4e0.entry.js} +1 -1
  339. package/dist/ionic/p-4437015c.entry.js +4 -0
  340. package/dist/ionic/{p-53ba5651.entry.js → p-478035a7.entry.js} +1 -1
  341. package/dist/ionic/{p-1a20571c.entry.js → p-485fb218.entry.js} +1 -1
  342. package/dist/ionic/p-48c859fe.entry.js +4 -0
  343. package/dist/ionic/p-49b9d405.entry.js +4 -0
  344. package/dist/ionic/{p-d1539609.entry.js → p-56307aea.entry.js} +1 -1
  345. package/dist/ionic/{p-eeb65463.entry.js → p-5ee2d7b1.entry.js} +1 -1
  346. package/dist/ionic/{p-ca57763d.entry.js → p-5f216b79.entry.js} +1 -1
  347. package/dist/ionic/{p-fb4dabbb.entry.js → p-61c799d1.entry.js} +1 -1
  348. package/dist/ionic/{p-fe80ebb1.entry.js → p-63bbba8d.entry.js} +1 -1
  349. package/dist/ionic/p-68507e70.entry.js +4 -0
  350. package/dist/ionic/{p-43bae3f5.entry.js → p-6f048604.entry.js} +1 -1
  351. package/dist/ionic/{p-dadcb3d2.entry.js → p-70ee8888.entry.js} +1 -1
  352. package/dist/ionic/{p-7c859f42.entry.js → p-72ad7c64.entry.js} +1 -1
  353. package/dist/ionic/{p-90e06e60.entry.js → p-75887ee0.entry.js} +1 -1
  354. package/dist/ionic/{p-bdc01880.entry.js → p-873a315a.entry.js} +1 -1
  355. package/dist/ionic/{p-f0645c98.entry.js → p-881b6954.entry.js} +1 -1
  356. package/dist/ionic/p-886d9e66.entry.js +4 -0
  357. package/dist/ionic/{p-5dc53bdf.entry.js → p-8dd4c026.entry.js} +1 -1
  358. package/dist/ionic/{p-9f2d3987.entry.js → p-8e007f11.entry.js} +1 -1
  359. package/dist/ionic/p-8f464a8f.entry.js +4 -0
  360. package/dist/ionic/p-8f51110d.entry.js +4 -0
  361. package/dist/ionic/{p-1f66c230.entry.js → p-90ba736e.entry.js} +1 -1
  362. package/dist/ionic/{p-8d72244b.entry.js → p-959df5f8.entry.js} +1 -1
  363. package/dist/ionic/{p-8e388a30.entry.js → p-9e455875.entry.js} +1 -1
  364. package/{components/p-BcuLPPAE.js → dist/ionic/p-9wczfs_v.js} +1 -1
  365. package/dist/ionic/{p-C10K-FJg.js → p-B1Y7LZhV.js} +1 -1
  366. package/dist/ionic/p-B5RyLYvl.js +4 -0
  367. package/dist/ionic/p-BQv5i5Kf.js +4 -0
  368. package/dist/ionic/{p-CH8tk7Pr.js → p-BZVE25Gu.js} +1 -1
  369. package/{components/p-CdSLe3Q3.js → dist/ionic/p-BZxjcGRP.js} +1 -1
  370. package/dist/ionic/p-BnGA34Pd.js +4 -0
  371. package/dist/ionic/{p-Q9w8L_Sw.js → p-ByLaqOPm.js} +1 -1
  372. package/dist/ionic/p-C06QNN45.js +4 -0
  373. package/dist/ionic/{p-KJ5pLPiN.js → p-C4IBDDj6.js} +1 -1
  374. package/dist/ionic/p-CCVlNZ__.js +4 -0
  375. package/dist/ionic/{p-CTBfxfjC.js → p-CDBop-kz.js} +1 -1
  376. package/dist/ionic/p-CKYcsw8f.js +5 -0
  377. package/dist/ionic/p-CazSodad.js +4 -0
  378. package/dist/ionic/{p-S1shXW5M.js → p-ClrlQU2y.js} +1 -1
  379. package/{components/p-DG-dUCKp.js → dist/ionic/p-D0dfUysx.js} +1 -1
  380. package/dist/ionic/{p-C2BY_4Wp.js → p-D9yvytgv.js} +1 -1
  381. package/{components/p-DH0rRXjx.js → dist/ionic/p-DF_Uqql8.js} +1 -1
  382. package/dist/ionic/{p-DMj-M2c4.js → p-DXJgZWgi.js} +1 -1
  383. package/dist/ionic/p-DdhHqKj-.js +4 -0
  384. package/dist/ionic/{p-BRc8gq5v.js → p-De0eY881.js} +1 -1
  385. package/dist/ionic/p-DgUL3JbO.js +4 -0
  386. package/dist/ionic/{p-06ZcwRF5.js → p-RzUn7cKs.js} +1 -1
  387. package/dist/ionic/p-VquyMbjp.js +4 -0
  388. package/dist/ionic/{p-2aabd568.entry.js → p-a0fee899.entry.js} +1 -1
  389. package/dist/ionic/{p-9e688396.entry.js → p-a54bcd16.entry.js} +1 -1
  390. package/dist/ionic/{p-eaeac54e.entry.js → p-aebc4d69.entry.js} +1 -1
  391. package/dist/ionic/{p-9452849d.entry.js → p-b5f37106.entry.js} +1 -1
  392. package/dist/ionic/{p-082b8125.entry.js → p-b62bfce8.entry.js} +1 -1
  393. package/dist/ionic/p-b7a11b58.entry.js +4 -0
  394. package/dist/ionic/{p-546b1109.entry.js → p-bbf6878c.entry.js} +1 -1
  395. package/dist/ionic/{p-e93cc1e1.entry.js → p-c49165af.entry.js} +1 -1
  396. package/dist/ionic/{p-9eba0d8a.entry.js → p-cad4eccf.entry.js} +1 -1
  397. package/dist/ionic/{p-d1b888de.entry.js → p-cdc5115e.entry.js} +1 -1
  398. package/dist/ionic/{p-47b8b59a.entry.js → p-d3384a40.entry.js} +1 -1
  399. package/dist/ionic/{p-f607ad4f.entry.js → p-d8bae128.entry.js} +1 -1
  400. package/dist/ionic/{p-026e2e4c.entry.js → p-d8deff43.entry.js} +1 -1
  401. package/dist/ionic/{p-6d84fa9f.entry.js → p-ddfb7e5f.entry.js} +1 -1
  402. package/dist/ionic/{p-ecfc9c71.entry.js → p-e538f18d.entry.js} +1 -1
  403. package/dist/ionic/{p-83aa7d47.entry.js → p-f376876b.entry.js} +1 -1
  404. package/dist/ionic/p-f521b13c.entry.js +4 -0
  405. package/dist/ionic/{p-ac71362a.entry.js → p-fbd83d4c.entry.js} +1 -1
  406. package/dist/types/components/action-sheet/action-sheet.d.ts +0 -10
  407. package/dist/types/components/alert/alert.d.ts +0 -7
  408. package/dist/types/components/content/content.d.ts +0 -7
  409. package/dist/types/components/modal/modal.d.ts +0 -8
  410. package/dist/types/components/picker-column/picker-column.d.ts +0 -42
  411. package/dist/types/components.d.ts +1 -1
  412. package/dist/types/stencil-public-runtime.d.ts +0 -12
  413. package/dist/types/utils/overlays.d.ts +0 -9
  414. package/dist/types/utils/test/playwright/index.d.ts +0 -1
  415. package/hydrate/index.js +213 -558
  416. package/hydrate/index.mjs +213 -558
  417. package/loader/index.d.ts +1 -1
  418. package/package.json +2 -2
  419. package/components/p-BhlP16sB.js +0 -4
  420. package/components/p-C8Tp0cQy.js +0 -4
  421. package/components/p-CFtAWaB6.js +0 -4
  422. package/components/p-CQxPXWNM.js +0 -4
  423. package/components/p-CRcX0EGs.js +0 -4
  424. package/components/p-CVNvmbDp.js +0 -4
  425. package/components/p-CXpy69Ei.js +0 -4
  426. package/components/p-CoGD-oMG.js +0 -4
  427. package/components/p-CpYeYl3u.js +0 -4
  428. package/components/p-D2XJVty5.js +0 -4
  429. package/components/p-DALTMT_o.js +0 -4
  430. package/components/p-Dr-rBSUW.js +0 -4
  431. package/components/p-MHpJ2A_m.js +0 -4
  432. package/components/p-N6lZFXYR.js +0 -4
  433. package/components/p-QgdyH-Zs.js +0 -4
  434. package/components/p-UKksD3f9.js +0 -4
  435. package/components/p-fP0QF3iG.js +0 -4
  436. package/components/p-ntAkt4Ra.js +0 -4
  437. package/components/p-ufB0gCSU.js +0 -4
  438. package/components/p-z-BF3clL.js +0 -4
  439. package/dist/collection/utils/test/late-props/late-props.js +0 -69
  440. package/dist/collection/utils/test/playwright/detach-reattach.js +0 -23
  441. package/dist/ionic/p-010601fe.entry.js +0 -4
  442. package/dist/ionic/p-0c2b3555.entry.js +0 -4
  443. package/dist/ionic/p-326e0d05.entry.js +0 -4
  444. package/dist/ionic/p-392079fa.entry.js +0 -4
  445. package/dist/ionic/p-4778b90f.entry.js +0 -4
  446. package/dist/ionic/p-639d3b55.entry.js +0 -4
  447. package/dist/ionic/p-7dec112e.entry.js +0 -4
  448. package/dist/ionic/p-9fef333a.entry.js +0 -4
  449. package/dist/ionic/p-BRa1Jjxr.js +0 -4
  450. package/dist/ionic/p-Cc-fFNy8.js +0 -4
  451. package/dist/ionic/p-Cc4w3fVf.js +0 -4
  452. package/dist/ionic/p-CvRL-Eju.js +0 -4
  453. package/dist/ionic/p-D_IgV7tz.js +0 -4
  454. package/dist/ionic/p-b8cd338d.entry.js +0 -4
  455. package/dist/ionic/p-d85e59b1.entry.js +0 -4
  456. package/dist/ionic/p-dad2f3e4.entry.js +0 -4
  457. package/dist/ionic/p-eab77a74.entry.js +0 -4
  458. package/dist/ionic/p-h81G-QbJ.js +0 -6
  459. package/dist/ionic/p-nxFQkv7U.js +0 -4
  460. package/dist/ionic/p-w3KTiug9.js +0 -4
  461. package/dist/types/utils/test/playwright/detach-reattach.d.ts +0 -13
@@ -20,12 +20,6 @@ export class PickerColumn {
20
20
  this.isColumnVisible = false;
21
21
  this.canExitInputMode = true;
22
22
  this.updateValueTextOnScroll = false;
23
- this.isUserScroll = false;
24
- /**
25
- * The haptics for the wheel picker are an iOS-only feature. As a result,
26
- * they should be disabled on Android.
27
- */
28
- this.enableHaptics = false;
29
23
  this.ariaLabel = null;
30
24
  this.isActive = false;
31
25
  /**
@@ -57,12 +51,6 @@ export class PickerColumn {
57
51
  */
58
52
  this.canExitInputMode = canExitInputMode;
59
53
  this.updateValueTextOnScroll = false;
60
- /**
61
- * This scroll takes over from whatever the user was doing, so an outside
62
- * press must not commit an option the column is only passing through.
63
- */
64
- this.isUserScroll = false;
65
- this.stopWatchingForOutsidePress();
66
54
  scrollEl.scroll({
67
55
  top,
68
56
  left: 0,
@@ -117,117 +105,6 @@ export class PickerColumn {
117
105
  }
118
106
  this.isActive = state;
119
107
  };
120
- this.clearScrollEndTimeout = () => {
121
- if (this.scrollEndTimeout) {
122
- clearTimeout(this.scrollEndTimeout);
123
- this.scrollEndTimeout = undefined;
124
- }
125
- };
126
- /**
127
- * Resets the idle timer that commits the centered option.
128
- */
129
- this.resetScrollEndTimeout = () => {
130
- this.clearScrollEndTimeout();
131
- this.scrollEndTimeout = setTimeout(this.settle, SCROLL_END_DELAY);
132
- };
133
- /**
134
- * Capture so the column still commits if an application's own pointerdown
135
- * handler stops the event before it reaches the document.
136
- */
137
- this.watchForOutsidePress = () => {
138
- doc?.addEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
139
- };
140
- this.stopWatchingForOutsidePress = () => {
141
- doc?.removeEventListener('pointerdown', this.onPointerDownOutside, { capture: true });
142
- };
143
- /**
144
- * Resets everything the current scroll interaction is holding, so nothing
145
- * pending on it can commit later.
146
- */
147
- this.discardScroll = () => {
148
- this.stopWatchingForOutsidePress();
149
- this.clearScrollEndTimeout();
150
- this.scrollEndCallback = undefined;
151
- this.centeredOption = undefined;
152
- this.haltedAtScrollTop = undefined;
153
- this.isScrolling = false;
154
- this.isUserScroll = false;
155
- this.canExitInputMode = true;
156
- };
157
- /**
158
- * Commits the option that is currently centered under the highlight and ends
159
- * the scroll interaction.
160
- */
161
- this.settle = () => {
162
- const { centeredOption } = this;
163
- this.clearScrollEndTimeout();
164
- this.stopWatchingForOutsidePress();
165
- this.isUserScroll = false;
166
- this.isScrolling = false;
167
- this.updateValueTextOnScroll = true;
168
- this.enableHaptics && hapticSelectionEnd();
169
- /**
170
- * Certain tasks (such as those that
171
- * cause re-renders) should only be done
172
- * once scrolling has finished, otherwise
173
- * flickering may occur.
174
- */
175
- const { scrollEndCallback } = this;
176
- if (scrollEndCallback) {
177
- scrollEndCallback();
178
- this.scrollEndCallback = undefined;
179
- }
180
- /**
181
- * Reset this flag as the
182
- * next scroll interaction could
183
- * be a scroll from the user. In this
184
- * case, we should exit input mode.
185
- */
186
- this.canExitInputMode = true;
187
- if (centeredOption !== undefined) {
188
- // Cleared here so a later scroll that centers nothing cannot fall back on it.
189
- this.centeredOption = undefined;
190
- if (centeredOption.isConnected) {
191
- this.setValue(centeredOption.value);
192
- }
193
- }
194
- };
195
- /**
196
- * Commits the option the user can see when they press anything outside of the
197
- * column during a scroll they started. This runs on pointerdown rather than
198
- * click so the value is up to date by the time an application's own click
199
- * handler (a Save button, for example) reads it.
200
- */
201
- this.onPointerDownOutside = (ev) => {
202
- const { centeredOption, parentEl, scrollEl } = this;
203
- if (!this.isScrolling) {
204
- return;
205
- }
206
- /**
207
- * The column can live in another component's Shadow DOM, where a document
208
- * listener sees the target retargeted to the outer host. The composed path
209
- * is the only reliable way to tell a press on the column apart.
210
- */
211
- const path = ev.composedPath();
212
- /**
213
- * A press anywhere in the parent picker counts as inside, so reaching for a
214
- * sibling wheel leaves this column coasting.
215
- */
216
- if (path.includes(this.el) || (parentEl != null && path.includes(parentEl))) {
217
- return;
218
- }
219
- /**
220
- * Landing on the centered option halts the in-flight momentum scroll, so the
221
- * committed value and the option the user is left looking at agree. The
222
- * option list can be replaced mid-scroll, and a detached option has no
223
- * offset to center on.
224
- */
225
- if (centeredOption !== undefined && centeredOption.isConnected) {
226
- this.centerPickerItemInView(centeredOption, false, false);
227
- this.haltedAtScrollTop = scrollEl?.scrollTop;
228
- }
229
- this.settle();
230
- };
231
108
  /**
232
109
  * When the column scrolls, the component
233
110
  * needs to determine which item is centered
@@ -235,42 +112,27 @@ export class PickerColumn {
235
112
  * the item object.
236
113
  */
237
114
  this.initializeScrollListener = () => {
238
- this.enableHaptics = isPlatform('ios');
115
+ /**
116
+ * The haptics for the wheel picker are
117
+ * an iOS-only feature. As a result, they should
118
+ * be disabled on Android.
119
+ */
120
+ const enableHaptics = isPlatform('ios');
239
121
  const { el, scrollEl } = this;
122
+ let timeout;
240
123
  let activeEl = this.activeItem;
241
124
  const scrollCallback = () => {
242
125
  raf(() => {
243
- /**
244
- * This frame cannot be cancelled, and moving the column disconnects it
245
- * without the observer reporting a change, so this checks live state.
246
- */
247
- if (!this.el.isConnected || !this.isColumnVisible || !scrollEl)
126
+ if (!scrollEl)
248
127
  return;
249
- const { haltedAtScrollTop } = this;
250
- if (haltedAtScrollTop !== undefined) {
251
- /**
252
- * Still at the halted position, so this frame is the halt landing
253
- * rather than the wheel moving, and re-arming would start a second
254
- * commit cycle.
255
- */
256
- if (Math.abs(scrollEl.scrollTop - haltedAtScrollTop) <= HALT_TOLERANCE)
257
- return;
258
- this.haltedAtScrollTop = undefined;
128
+ if (timeout) {
129
+ clearTimeout(timeout);
130
+ timeout = undefined;
259
131
  }
260
- // Armed before the early returns below, so a scroll never ends uncommitted.
261
- this.resetScrollEndTimeout();
262
132
  if (!this.isScrolling) {
263
- this.enableHaptics && hapticSelectionStart();
133
+ enableHaptics && hapticSelectionStart();
264
134
  this.isScrolling = true;
265
135
  }
266
- /**
267
- * Only a user-driven scroll holds an uncommitted selection. Checked every
268
- * frame because the user can take hold of the wheel mid-scroll, and
269
- * re-adding the same listener is a no-op.
270
- */
271
- if (this.isUserScroll) {
272
- this.watchForOutsidePress();
273
- }
274
136
  /**
275
137
  * Select item in the center of the column
276
138
  * which is the month/year that we want to select
@@ -330,23 +192,18 @@ export class PickerColumn {
330
192
  newActiveElement = fallbackActiveElement;
331
193
  }
332
194
  }
333
- /**
334
- * A scroll can land with no selectable option centered, such as an
335
- * overscroll bounce briefly centering the empty padding rows. Keep the
336
- * current selection until an option is centered again.
337
- */
338
- if (newActiveElement === undefined || newActiveElement.disabled) {
339
- return;
340
- }
341
195
  if (activeEl !== undefined) {
342
196
  this.setPickerItemActiveState(activeEl, false);
343
197
  }
198
+ if (newActiveElement === undefined || newActiveElement.disabled) {
199
+ return;
200
+ }
344
201
  /**
345
202
  * If we are selecting a new value,
346
203
  * we need to run haptics again.
347
204
  */
348
205
  if (newActiveElement !== activeEl) {
349
- this.enableHaptics && hapticSelectionChanged();
206
+ enableHaptics && hapticSelectionChanged();
350
207
  if (this.canExitInputMode) {
351
208
  /**
352
209
  * The native iOS wheel picker
@@ -378,14 +235,32 @@ export class PickerColumn {
378
235
  if (this.updateValueTextOnScroll) {
379
236
  this.assistiveFocusable?.setAttribute('aria-valuetext', this.getOptionValueText(newActiveElement));
380
237
  }
381
- this.centeredOption = newActiveElement;
238
+ timeout = setTimeout(() => {
239
+ this.isScrolling = false;
240
+ this.updateValueTextOnScroll = true;
241
+ enableHaptics && hapticSelectionEnd();
242
+ /**
243
+ * Certain tasks (such as those that
244
+ * cause re-renders) should only be done
245
+ * once scrolling has finished, otherwise
246
+ * flickering may occur.
247
+ */
248
+ const { scrollEndCallback } = this;
249
+ if (scrollEndCallback) {
250
+ scrollEndCallback();
251
+ this.scrollEndCallback = undefined;
252
+ }
253
+ /**
254
+ * Reset this flag as the
255
+ * next scroll interaction could
256
+ * be a scroll from the user. In this
257
+ * case, we should exit input mode.
258
+ */
259
+ this.canExitInputMode = true;
260
+ this.setValue(newActiveElement.value);
261
+ }, 250);
382
262
  });
383
263
  };
384
- const userScrollCallback = () => {
385
- this.isUserScroll = true;
386
- // Taking hold of the wheel ends the halt even if it has not moved yet.
387
- this.haltedAtScrollTop = undefined;
388
- };
389
264
  /**
390
265
  * Wrap this in an raf so that the scroll callback
391
266
  * does not fire when component is initially shown.
@@ -394,19 +269,8 @@ export class PickerColumn {
394
269
  if (!scrollEl)
395
270
  return;
396
271
  scrollEl.addEventListener('scroll', scrollCallback);
397
- scrollEl.addEventListener('pointerdown', userScrollCallback);
398
- scrollEl.addEventListener('wheel', userScrollCallback, { passive: true });
399
- /**
400
- * A `pointerdown` fires once per touch, so a drag that pauses long enough
401
- * to commit would look like a scroll the column started. A `touchmove`
402
- * keeps arriving while the finger moves.
403
- */
404
- scrollEl.addEventListener('touchmove', userScrollCallback, { passive: true });
405
272
  this.destroyScrollListener = () => {
406
273
  scrollEl.removeEventListener('scroll', scrollCallback);
407
- scrollEl.removeEventListener('pointerdown', userScrollCallback);
408
- scrollEl.removeEventListener('wheel', userScrollCallback);
409
- scrollEl.removeEventListener('touchmove', userScrollCallback);
410
274
  };
411
275
  });
412
276
  };
@@ -591,14 +455,6 @@ export class PickerColumn {
591
455
  }
592
456
  else {
593
457
  this.isColumnVisible = false;
594
- /**
595
- * The pending timer still runs so it resets the scroll state, but the
596
- * option it would have committed is dropped. A column the user cannot
597
- * see should not change its value.
598
- */
599
- this.stopWatchingForOutsidePress();
600
- this.centeredOption = undefined;
601
- this.haltedAtScrollTop = undefined;
602
458
  if (this.destroyScrollListener) {
603
459
  this.destroyScrollListener();
604
460
  this.destroyScrollListener = undefined;
@@ -669,13 +525,6 @@ export class PickerColumn {
669
525
  connectedCallback() {
670
526
  this.ariaLabel = this.el.getAttribute('aria-label') ?? 'Select a value';
671
527
  }
672
- disconnectedCallback() {
673
- /**
674
- * A pending settle would otherwise commit a value on a column that is no
675
- * longer in the DOM.
676
- */
677
- this.discardScroll();
678
- }
679
528
  get activeItem() {
680
529
  const { value } = this;
681
530
  const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
@@ -693,14 +542,14 @@ export class PickerColumn {
693
542
  render() {
694
543
  const { color, disabled, isActive, numericInput } = this;
695
544
  const mode = getIonMode(this);
696
- return (h(Host, { key: '60a893619d0b01fba53fbccef67a10d533a22657', class: createColorClasses(color, {
545
+ return (h(Host, { key: '78b46ad10d88ea1bb43ca8c36748767912f03224', class: createColorClasses(color, {
697
546
  [mode]: true,
698
547
  ['picker-column-active']: isActive,
699
548
  ['picker-column-numeric-input']: numericInput,
700
549
  ['picker-column-disabled']: disabled,
701
- }) }, h("slot", { key: '79f1e047f89c5ec916ed02efaac56ef3f73b8969', name: "prefix" }), h("div", { key: 'c45c86e88353a196ff38159f40f390bc27852c9e', class: "picker-opts", ref: (el) => {
550
+ }) }, h("slot", { key: '761e501df77f7de896ffb3ebb99ebf88c5c3bf70', name: "prefix" }), h("div", { key: '9f4caaeef8ab704522a85f30876d371712f47c5c', class: "picker-opts", ref: (el) => {
702
551
  this.scrollEl = el;
703
- }, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, h("div", { key: 'e02d76752f5d3dd4cd2846fbc28645f1508a4b49', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'd577bcbadc530970b2781692b050811633625c5a', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'c89e78c3a896bc1f55b922d01df16fdbb1259bdd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: '6c597ff899692597432ee2aa0b42de53b86deed4' }), h("div", { key: '91686ed94f14c47647836ed4d63e54b5c54ee3b9', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '2ff058c6d0e8cef4e143c2d848f9a52684579af1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'bc7386bec6fced36e44084a7a137b3fe6506c996', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: '8835fd3f4e025bce964e6f05984c9aaadc20d7fb', name: "suffix" })));
552
+ }, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, h("div", { key: '9d3533436aba6c61c93f65f84a077fba832194a0', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '3f18d3a47361f06f55321b65fdf5742a61722b26', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: 'eac0d20ab8c533ef829875e323e93e1ee2067d6d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("slot", { key: '92e25989ef41cf6f910c73238e1a0a5ac03f1c1f' }), h("div", { key: '33a84644ebdc84108b44a8e3a129b54e824939c8', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '128ad61a3a68c7ff2d2e44a6e968424fcc608a15', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { key: '6e4d59a4f75befcbbf47279a263f28a69b12dbbd', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), h("slot", { key: '3c6621b64438792a3024c90e3d9916a0a3614506', name: "suffix" })));
704
553
  }
705
554
  static get is() { return "ion-picker-column"; }
706
555
  static get encapsulation() { return "shadow"; }
@@ -924,16 +773,3 @@ export class PickerColumn {
924
773
  }
925
774
  }
926
775
  const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
927
- /**
928
- * How long the column must be idle before the centered option is treated as
929
- * the user's selection. Replaceable by the `scrollend` event once that is
930
- * supported everywhere (https://caniuse.com/?search=scrollend).
931
- */
932
- const SCROLL_END_DELAY = 250;
933
- /**
934
- * How far, in pixels, the column may report from where it was halted and still
935
- * count as having stayed there. Centering targets a position between two snap
936
- * points, so mandatory snapping corrects it by half the column height less
937
- * three option heights: 2px at the default sizes.
938
- */
939
- const HALT_TOLERANCE = 2;
@@ -7,7 +7,7 @@ import { CoreDelegate, attachComponent, detachComponent } from "../../utils/fram
7
7
  import { addEventListener, raf, hasLazyBuild } from "../../utils/helpers";
8
8
  import { createLockController } from "../../utils/lock-controller";
9
9
  import { printIonWarning } from "../../utils/logging/index";
10
- import { BACKDROP, cleanupRootFocusTrapAccessibility, dismiss, eventMethod, FOCUS_TRAP_DISABLE_CLASS, prepareOverlay, present, restoreRootFocusTrapAccessibility, setOverlayId, } from "../../utils/overlays";
10
+ import { BACKDROP, cleanupRootFocusTrapAccessibility, dismiss, eventMethod, FOCUS_TRAP_DISABLE_CLASS, prepareOverlay, present, setOverlayId, } from "../../utils/overlays";
11
11
  import { isPlatform } from "../../utils/platform";
12
12
  import { getClassMap } from "../../utils/theme";
13
13
  import { deepReady, waitForMount } from "../../utils/transition/index";
@@ -219,13 +219,6 @@ export class Popover {
219
219
  const { configureTriggerInteraction, el } = this;
220
220
  prepareOverlay(el);
221
221
  configureTriggerInteraction();
222
- // Re-apply the root lock if moved without dismiss() being called
223
- if (this.presented) {
224
- restoreRootFocusTrapAccessibility(el);
225
- // The disconnect tore down the header observer, and `present()` is its
226
- // only other caller, so a move mid-layout would lose the recalculation.
227
- this.recalculateContentOnHeaderReady();
228
- }
229
222
  }
230
223
  disconnectedCallback() {
231
224
  const { destroyTriggerInteraction } = this;
@@ -403,12 +396,6 @@ export class Popover {
403
396
  if (!header || contentElements.length === 0) {
404
397
  return;
405
398
  }
406
- // Both `present()` and a reconnect call this, so drop any existing
407
- // observer. Below the guards, so a call that bails cannot leave none.
408
- if (this.headerResizeObserver) {
409
- this.headerResizeObserver.disconnect();
410
- this.headerResizeObserver = undefined;
411
- }
412
399
  this.headerResizeObserver = new ResizeObserver(async () => {
413
400
  if (header.offsetHeight > 0) {
414
401
  this.headerResizeObserver?.disconnect();
@@ -481,7 +468,7 @@ export class Popover {
481
468
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
482
469
  const desktop = isPlatform('desktop');
483
470
  const enableArrow = arrow && !parentPopover;
484
- return (h(Host, { key: 'b5e9c788f58397203976d5f8302dfb89e916efe1', "aria-modal": "true", "no-router": true, tabindex: "-1", ...htmlAttributes, style: {
471
+ return (h(Host, { key: '52ffc7116969ae1b8b927e67f2acbfe5f5434f70', "aria-modal": "true", "no-router": true, tabindex: "-1", ...htmlAttributes, style: {
485
472
  zIndex: `${20000 + this.overlayIndex}`,
486
473
  }, class: {
487
474
  ...getClassMap(this.cssClass),
@@ -492,7 +479,7 @@ export class Popover {
492
479
  [`popover-side-${side}`]: true,
493
480
  [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false,
494
481
  'popover-nested': !!parentPopover,
495
- }, onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }, !parentPopover && h("ion-backdrop", { key: 'f3977833c5b2c0087c286ee54363b478d69eb115', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '1059893d6fd2932ca8adcdf8d45a5d66f4794727', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '24d7988bdd95882ad77fcaa7112aeda55878bee4', class: "popover-arrow", part: "arrow" }), h("div", { key: '4d6992e0a9d629f11763045f9199f9a77fa521ab', class: "popover-content", part: "content" }, h("slot", { key: 'b29747419620a01a6c34e9e846cd529b0b210145' })))));
482
+ }, onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }, !parentPopover && h("ion-backdrop", { key: '79a8e851dbd22119e21ffb2f4709c555251045c8', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: 'c46c9f62c3ef3f902e23f27404eaa446a5d8cf88', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '9fdcbbc4ea6c7bde74f646d48eb77296b2c9dd83', class: "popover-arrow", part: "arrow" }), h("div", { key: '138e56bb83462ebb0908edb522b45ecf94b82aeb', class: "popover-content", part: "content" }, h("slot", { key: 'daeefcf002e8d89e91d6e0faf7f63f75b68a2dbe' })))));
496
483
  }
497
484
  static get is() { return "ion-popover"; }
498
485
  static get encapsulation() { return "shadow"; }
@@ -58,6 +58,11 @@ export class SegmentButton {
58
58
  addEventListener(segmentEl, 'ionSelect', this.updateState);
59
59
  addEventListener(segmentEl, 'ionStyle', this.updateStyle);
60
60
  }
61
+ // Prevent buttons from being disabled when associated with segment content
62
+ if (this.contentId && this.disabled) {
63
+ printIonWarning(`[ion-segment-button] - Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
64
+ this.disabled = false;
65
+ }
61
66
  }
62
67
  disconnectedCallback() {
63
68
  const segmentEl = this.segmentEl;
@@ -74,15 +79,6 @@ export class SegmentButton {
74
79
  // Return if there is no contentId defined
75
80
  if (!this.contentId)
76
81
  return;
77
- /**
78
- * Checked here rather than in `connectedCallback` so frameworks that assign element
79
- * props after inserting the element have set `disabled` by now. A disabled ion-segment
80
- * pushes that onto its buttons too, which this guard should not undo.
81
- */
82
- if (this.disabled && this.segmentEl?.disabled !== true) {
83
- printIonWarning(`[ion-segment-button] - Segment buttons cannot be disabled when associated with an <ion-segment-content>.`);
84
- this.disabled = false;
85
- }
86
82
  // Attempt to find the Segment Content by its contentId
87
83
  const segmentContent = document.getElementById(this.contentId);
88
84
  // If no associated Segment Content exists, log an error and return
@@ -117,7 +113,7 @@ export class SegmentButton {
117
113
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
118
114
  const mode = getIonMode(this);
119
115
  const hasSegmentColor = () => segmentEl?.color !== undefined;
120
- return (h(Host, { key: 'd8acc71d87e26b32f20b2d0f9a6acc9f0dab0dee', class: {
116
+ return (h(Host, { key: '2b4b7ad8b981d2ee39aba5b9c734de8a5bd045ba', class: {
121
117
  [mode]: true,
122
118
  'in-toolbar': hostContext('ion-toolbar', this.el),
123
119
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -133,7 +129,7 @@ export class SegmentButton {
133
129
  'ion-activatable': true,
134
130
  'ion-activatable-instant': true,
135
131
  'ion-focusable': true,
136
- } }, h("button", { key: 'ce65da07b1a012bce353b3c6c24eecfbd4071d54', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled, ...this.inheritedAttributes }, h("span", { key: '6c4b4dcd20e407e5dc31674bea23633d8a09187a', class: "button-inner" }, h("slot", { key: '817145ae77a3c5ada88ab95723d881f1bde96b2a' })), mode === 'md' && h("ion-ripple-effect", { key: '054d7e5e2a13013914fac6bbde8efdb28d9b459e' })), h("div", { key: 'c48074881a302510ad4752eeb9383222cd3a54cb', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, h("div", { key: '7672a6b10ee18ad026b798fbd8207dc3cd5683f9', part: "indicator-background", class: "segment-button-indicator-background" }))));
132
+ } }, h("button", { key: '9cc58cfbe70844a0f5e1a307002e0d04e044be99', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled, ...this.inheritedAttributes }, h("span", { key: '6443551951ce589efdb2d0e1fd1a14e35b82ed19', class: "button-inner" }, h("slot", { key: 'c3548b469ae6e5477d8372cb28bc70dff3a24d18' })), mode === 'md' && h("ion-ripple-effect", { key: 'fb176415ca1702766c4d7a5964ec0bb467bdcb55' })), h("div", { key: 'aa22b4752f8336d0e232a1e0894e87023b284a08', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, h("div", { key: '61e29ea52048fa0583fce6c20c81614a4d0199cb', part: "indicator-background", class: "segment-button-indicator-background" }))));
137
133
  }
138
134
  static get is() { return "ion-segment-button"; }
139
135
  static get encapsulation() { return "shadow"; }
@@ -8,7 +8,7 @@ import { focusVisibleElement, renderHiddenInput, inheritAttributes } from "../..
8
8
  import { printIonWarning } from "../../utils/logging/index";
9
9
  import { actionSheetController, alertController, popoverController, modalController } from "../../utils/overlays";
10
10
  import { isRTL } from "../../utils/rtl/index";
11
- import { blockedTags, reflectPropertiesToAttributes, sanitizeDOMTree } from "../../utils/sanitization/index";
11
+ import { reflectPropertiesToAttributes, sanitizeDOMTree } from "../../utils/sanitization/index";
12
12
  import { createSlotMutationController } from "../../utils/slot-mutation-controller";
13
13
  import { createColorClasses, hostContext } from "../../utils/theme";
14
14
  import { watchForOptions } from "../../utils/watch-options";
@@ -947,7 +947,7 @@ export class Select {
947
947
  const hasOutlineFill = mode === 'md' && fill === 'outline';
948
948
  renderHiddenInput(true, el, name, parseValue(value), disabled);
949
949
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || isExpanded));
950
- return (h(Host, { key: 'b2f161e3706e139e61440cd13e162714b1b75d72', onClick: this.onClick, class: createColorClasses(this.color, {
950
+ return (h(Host, { key: '5d1e5bf46d0f204efdcb55cc42cfde52e6db304b', onClick: this.onClick, class: createColorClasses(this.color, {
951
951
  [mode]: true,
952
952
  'in-item': inItem,
953
953
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -965,7 +965,7 @@ export class Select {
965
965
  [`select-justify-${justify}`]: justifyEnabled,
966
966
  [`select-shape-${shape}`]: shape !== undefined,
967
967
  [`select-label-placement-${labelPlacement}`]: true,
968
- }) }, h("label", { key: '944a2eb468154a21260d181fdaf67828a71eb902', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, hasOutlineFill && this.renderOutlineContainer(), h("div", { key: '927200c53548b1bb4f52d6a167605b724a7b7d0d', class: "select-start", part: "start", ref: (el) => (this.startContainerEl = el) }, h("slot", { key: '6e14b95e9b95c116b16744d630600e90977782bc', name: "start" })), h("div", { key: '8451ed4300ac005963075be36a04ea8763bc0fdd', class: "select-control", part: "control" }, this.renderLabel(), h("div", { key: '207e7b63f3224a4870579365ac992da6784fb31f', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox(), !hasFloatingOrStackedLabel && this.renderSelectIcon())), h("div", { key: '5c17367d488db4d570f31b25e33560efa9011500', class: "select-end", part: "end" }, hasFloatingOrStackedLabel && this.renderSelectIcon(), h("slot", { key: '21fd8c0d9bee8cffef9ef6984cacd31e8f38211c', name: "end" })), shouldRenderHighlight && h("div", { key: '1fff767db9a1ec07b274ef65ff7ae8fb976e6ad2', class: "select-highlight" })), this.renderBottomContent()));
968
+ }) }, h("label", { key: '15fd1f8e06510ae8472c621cf8cf90e51172e0be', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, hasOutlineFill && this.renderOutlineContainer(), h("div", { key: '7964e3d9351671899793b117896acdda25ec24c4', class: "select-start", part: "start", ref: (el) => (this.startContainerEl = el) }, h("slot", { key: 'aa309ef155c4025acfd7ed5739b5221c85097b36', name: "start" })), h("div", { key: '23d5a9dfea64a9d81b0b36d9426b15bed98901b9', class: "select-control", part: "control" }, this.renderLabel(), h("div", { key: '810da9fbfa8771e09b5fb768d64e5f04858b5833', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox(), !hasFloatingOrStackedLabel && this.renderSelectIcon())), h("div", { key: 'bf1c04704326ecfa14cf2e49bb76d3fb45beb08d', class: "select-end", part: "end" }, hasFloatingOrStackedLabel && this.renderSelectIcon(), h("slot", { key: '76a8bcaeefdcaa908aebd820d93171b08165cee3', name: "end" })), shouldRenderHighlight && h("div", { key: '55a9c417a82323a44e16328fd62a634d9d7c558b', class: "select-highlight" })), this.renderBottomContent()));
969
969
  }
970
970
  static get is() { return "ion-select"; }
971
971
  static get encapsulation() { return "shadow"; }
@@ -1663,14 +1663,29 @@ const textForValue = (opts, value, compareWith, useHTML = false) => {
1663
1663
  return getOptionContent(selectOpt, undefined, true);
1664
1664
  }
1665
1665
  /**
1666
- * Every text-only context reads only the default slot, so the start
1667
- * and end slots stay out of the `aria-label` and the overlay labels.
1668
- * Both config paths derive that text through the same helper, so they
1669
- * cannot disagree about what an option's text is. `null` marks an
1670
- * option with no text, which is dropped from the joined text of a
1671
- * `multiple` select rather than joined in as an empty entry.
1666
+ * When custom HTML is enabled, extract only the default slot content.
1667
+ * This ensures aria-label and other text-only contexts read only
1668
+ * the relevant option text.
1672
1669
  */
1673
- return getDefaultSlotPlainText(selectOpt) || null;
1670
+ if (customHTMLEnabled) {
1671
+ const content = getOptionContent(selectOpt);
1672
+ if (typeof content === 'string') {
1673
+ return content;
1674
+ }
1675
+ /**
1676
+ * Elements were found in the default slot, extract and concatenate
1677
+ * their text content while trimming whitespace.
1678
+ */
1679
+ if (content) {
1680
+ const texts = Array.from(content.childNodes)
1681
+ .map((n) => n.textContent?.trim())
1682
+ .filter((t) => t);
1683
+ return texts.join(' ') || null;
1684
+ }
1685
+ // Empty option
1686
+ return null;
1687
+ }
1688
+ return getDefaultSlotPlainText(selectOpt);
1674
1689
  };
1675
1690
  /**
1676
1691
  * Trims whitespace from all text nodes within a DOM tree.
@@ -1726,13 +1741,9 @@ const getOptionContent = (option, slotName, useHTML = false) => {
1726
1741
  if (nodes.length === 0) {
1727
1742
  return null;
1728
1743
  }
1729
- /**
1730
- * Return plain text if no elements are found. This reads the option the
1731
- * same way the non-custom-HTML path does, so the two do not disagree
1732
- * about what an option's text is.
1733
- */
1744
+ // Return plain text if no elements are found
1734
1745
  if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
1735
- return getDefaultSlotPlainText(option) || null;
1746
+ return nodes.map((n) => n.textContent?.trim()).join(' ') || null;
1736
1747
  }
1737
1748
  /**
1738
1749
  * Mirror known custom-element properties (e.g. ion-icon's `icon`)
@@ -1788,43 +1799,22 @@ const getOptionDefaultSlot = (option) => {
1788
1799
  }
1789
1800
  return defaultSlotNodes;
1790
1801
  };
1791
- /**
1792
- * Concatenates the text a node renders, skipping the subtrees of tags
1793
- * whose contents the browser never paints (`script`, `style`, and the
1794
- * rest of `blockedTags`). `textContent` includes those, so reading it
1795
- * directly would put stylesheet or script source into the select text
1796
- * and the `aria-label`.
1797
- *
1798
- * @param node - The node to read text from.
1799
- * @returns The node's rendered text.
1800
- */
1801
- const getRenderedTextContent = (node) => {
1802
- if (node.nodeType === Node.TEXT_NODE) {
1803
- return node.textContent ?? '';
1804
- }
1805
- if (node.nodeType !== Node.ELEMENT_NODE) {
1806
- return '';
1807
- }
1808
- if (blockedTags.includes(node.tagName.toLowerCase())) {
1809
- return '';
1810
- }
1811
- return Array.from(node.childNodes)
1812
- .map((child) => getRenderedTextContent(child))
1813
- .join('');
1814
- };
1815
1802
  /**
1816
1803
  * Extracts plain text from only the default slot of an option,
1817
- * excluding content assigned to named slots (start/end). Text is
1818
- * concatenated with no separator and collapsible whitespace is
1819
- * collapsed, approximating how the browser renders the option.
1820
- * NBSP is not collapsible, so it is preserved.
1821
- *
1822
- * @param option - The `ion-select-option` element to read text from.
1823
- * @returns The option's default slot text.
1804
+ * excluding content assigned to named slots (start/end).
1824
1805
  */
1825
1806
  const getDefaultSlotPlainText = (option) => {
1826
- const text = (getOptionDefaultSlot(option) ?? []).map((node) => getRenderedTextContent(node)).join('');
1827
- return text.replace(/[ \t\n\r\f]+/g, ' ').replace(/^[ \t\n\r\f]+|[ \t\n\r\f]+$/g, '');
1807
+ const texts = Array.from(option.childNodes)
1808
+ .filter((node) => {
1809
+ if (node.nodeType === Node.ELEMENT_NODE) {
1810
+ return !node.hasAttribute('slot');
1811
+ }
1812
+ return node.nodeType === Node.TEXT_NODE;
1813
+ })
1814
+ .filter((node) => node.nodeType === Node.TEXT_NODE)
1815
+ .map((n) => n.textContent?.trim())
1816
+ .filter((t) => t);
1817
+ return texts.join(' ');
1828
1818
  };
1829
1819
  /**
1830
1820
  * Extracts the rich content from an `ion-select-option`.