@ionic/core 8.8.19-dev.11786610762.137bbb21 → 8.8.19-dev.11786730389.1a1927bf

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 (1232) 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-0Pyit076.js +4 -0
  99. package/components/{p-CpHPq11n.js → p-30_sZS2V.js} +1 -1
  100. package/components/p-83oP9gzn.js +4 -0
  101. package/components/p-8FN7p701.js +4 -0
  102. package/components/p-B-FxiyeI.js +4 -0
  103. package/components/p-B6dUPQXq.js +4 -0
  104. package/components/p-BMPN55of.js +4 -0
  105. package/components/p-BMS4t-kJ.js +4 -0
  106. package/components/p-BO4sUqUv.js +4 -0
  107. package/components/p-BSQPZ79H.js +4 -0
  108. package/components/p-Bc4wROfM.js +4 -0
  109. package/components/p-BhamHSw3.js +4 -0
  110. package/components/p-BmVRXR1y.js +4 -0
  111. package/components/p-BpG8kBfD.js +4 -0
  112. package/components/p-BqPNzJf6.js +4 -0
  113. package/components/p-BsVxQGUT.js +4 -0
  114. package/components/p-BxUIQcD9.js +4 -0
  115. package/components/p-C1O9GEug.js +4 -0
  116. package/components/p-C5KYjZWD.js +4 -0
  117. package/components/p-C9BGR5fy.js +4 -0
  118. package/components/p-CD4fmpem.js +4 -0
  119. package/components/p-CEW4RXZO.js +4 -0
  120. package/components/p-CIGNaXM1.js +4 -0
  121. package/components/p-CKhiNOEg.js +4 -0
  122. package/components/p-CO2zzh3W.js +4 -0
  123. package/components/p-CVnwvOBD.js +4 -0
  124. package/components/p-CbhUdtjf.js +4 -0
  125. package/components/p-CejmQs3h.js +4 -0
  126. package/components/p-CfnGxjv-.js +4 -0
  127. package/components/p-ClFYbgND.js +4 -0
  128. package/components/p-CmKf4pgI.js +4 -0
  129. package/components/p-Cs5f-uOS.js +4 -0
  130. package/components/p-D7-vHX0A.js +4 -0
  131. package/components/{p-CA4M5WkT.js → p-DIgGHN7D.js} +1 -1
  132. package/components/p-DJztqcrH.js +4 -0
  133. package/components/p-DRfgH82D.js +4 -0
  134. package/components/p-DTY4otpr.js +4 -0
  135. package/components/p-DV85C0e0.js +4 -0
  136. package/components/p-DVKS-ovH.js +4 -0
  137. package/components/p-DWCzVL3Y.js +4 -0
  138. package/components/p-D_XD0pVT.js +4 -0
  139. package/components/p-Dd8ajo9a.js +4 -0
  140. package/components/p-DdnhY_oj.js +4 -0
  141. package/components/p-Dm7h4Nyv.js +4 -0
  142. package/components/{p-B2SvA6NE.js → p-DwpKZ6rl.js} +1 -1
  143. package/components/p-DyePCNGr.js +4 -0
  144. package/components/p-G0TxqHfe.js +4 -0
  145. package/components/{p-Ch8jco3x.js → p-J-p0EtHR.js} +1 -1
  146. package/components/p-LXu5-6Ti.js +4 -0
  147. package/components/p-LpMHEu3v.js +4 -0
  148. package/components/p-MCJ7HjWe.js +4 -0
  149. package/components/p-Obm7si-x.js +4 -0
  150. package/components/p-TXPDHL13.js +4 -0
  151. package/components/p-UuPYCOZE.js +4 -0
  152. package/components/p-WeeS7GvC.js +4 -0
  153. package/components/p-ZjP4CjeZ.js +4 -0
  154. package/components/{p-CzlL9T_X.js → p-_0JhwClE.js} +1 -1
  155. package/components/p-_IKFD3ID.js +4 -0
  156. package/components/p-byZM6qHV.js +4 -0
  157. package/components/p-hh7qIC-X.js +4 -0
  158. package/components/p-idq4JFo2.js +4 -0
  159. package/components/{p-BZwQa9ey.js → p-ryyf_ItD.js} +1 -1
  160. package/components/p-tYCT3JGl.js +4 -0
  161. package/components/p-wzAhIh03.js +4 -0
  162. package/components/p-xOjr4bwc.js +4 -0
  163. package/components/{p-Dovs7FIs.js → p-yuj4Nkm_.js} +1 -1
  164. package/css/core.css +1 -1
  165. package/css/core.css.map +1 -1
  166. package/css/display.css +1 -1
  167. package/css/display.css.map +1 -1
  168. package/css/flex-utils.css +1 -1
  169. package/css/flex-utils.css.map +1 -1
  170. package/css/float-elements.css.map +1 -1
  171. package/css/global.bundle.css.map +1 -1
  172. package/css/ionic-swiper.css +1 -1
  173. package/css/ionic-swiper.css.map +1 -1
  174. package/css/ionic.bundle.css +1 -1
  175. package/css/ionic.bundle.css.map +1 -1
  176. package/css/normalize.css.map +1 -1
  177. package/css/padding.css.map +1 -1
  178. package/css/palettes/dark.always.css.map +1 -1
  179. package/css/palettes/dark.class.css.map +1 -1
  180. package/css/palettes/dark.system.css.map +1 -1
  181. package/css/palettes/high-contrast-dark.always.css.map +1 -1
  182. package/css/palettes/high-contrast-dark.class.css.map +1 -1
  183. package/css/palettes/high-contrast-dark.system.css.map +1 -1
  184. package/css/palettes/high-contrast.always.css.map +1 -1
  185. package/css/palettes/high-contrast.class.css.map +1 -1
  186. package/css/palettes/high-contrast.system.css.map +1 -1
  187. package/css/structure.css.map +1 -1
  188. package/css/text-alignment.css.map +1 -1
  189. package/css/text-transformation.css.map +1 -1
  190. package/css/typography.css.map +1 -1
  191. package/css/utils.bundle.css +1 -1
  192. package/css/utils.bundle.css.map +1 -1
  193. package/dist/cjs/{animation-qlGmEn5Y.js → animation-C0mOHzej.js} +6 -6
  194. package/dist/cjs/{app-globals-CtK-3pCu.js → app-globals-BREG4twP.js} +1 -1
  195. package/dist/cjs/{button-active-CugpWmFI.js → button-active-BKj1rdFx.js} +3 -3
  196. package/dist/cjs/{capacitor-BixsAzyb.js → capacitor-DmA66EwP.js} +3 -3
  197. package/dist/cjs/{config-DWdFbSNK.js → config-CjUbvdPW.js} +5 -4
  198. package/dist/cjs/{dir-Cn0z1rJH.js → dir-Brx7VkvP.js} +1 -1
  199. package/dist/{esm/focus-visible-vXpMhGrs.js → cjs/focus-visible-CCvKiLh3.js} +3 -23
  200. package/dist/cjs/{format-COAsdjOc.js → format-pp0Du3K-.js} +40 -30
  201. package/dist/cjs/{framework-delegate-CJT_QJQI.js → framework-delegate-NTLQ5YzV.js} +6 -10
  202. package/dist/cjs/{gesture-controller-dtqlP_q4.js → gesture-controller-BDUH7687.js} +15 -8
  203. package/dist/cjs/{haptic-BFgF-QCg.js → haptic-Ch-X4gRx.js} +3 -4
  204. package/dist/cjs/hardware-back-button-fqpYh-kd.js +121 -0
  205. package/dist/cjs/{helpers-Fh1iXsX9.js → helpers-CaLhEmTE.js} +6 -73
  206. package/dist/cjs/{index-YYUVCfP-.js → index-B7zJsYWS.js} +3 -3
  207. package/dist/cjs/{index-CNicxECl.js → index-BlshL9ib.js} +8 -9
  208. package/dist/cjs/{index-D94mERjz.js → index-Ck9advCT.js} +5 -5
  209. package/dist/cjs/{index-CM8iGvyx.js → index-D2X6b92x.js} +15 -16
  210. package/dist/cjs/{index-DRFkZu3V.js → index-D48vawBq.js} +2 -2
  211. package/dist/cjs/index-DkNv4J_i.js +10 -0
  212. package/dist/cjs/{index-CAvQ7Tka.js → index-P1nQxrpZ.js} +10 -4
  213. package/dist/cjs/{index-C1knGA9x.js → index-uvry__L4.js} +33 -65
  214. package/dist/cjs/{index-CxDnX7hd.js → index-wOmugbdg.js} +0 -2
  215. package/dist/cjs/index.cjs.js +17 -17
  216. package/dist/cjs/{input-shims-C8NCYfWv.js → input-shims-DvHAFqiP.js} +19 -22
  217. package/dist/cjs/{input.utils-CYZZsbdf.js → input.utils-CP4fzrqk.js} +6 -7
  218. package/dist/cjs/ion-accordion_2.cjs.entry.js +378 -382
  219. package/dist/cjs/ion-action-sheet.cjs.entry.js +178 -86
  220. package/dist/cjs/ion-alert.cjs.entry.js +250 -125
  221. package/dist/cjs/ion-app_8.cjs.entry.js +461 -608
  222. package/dist/cjs/ion-avatar_3.cjs.entry.js +19 -125
  223. package/dist/cjs/ion-back-button.cjs.entry.js +64 -49
  224. package/dist/cjs/ion-backdrop.cjs.entry.js +23 -22
  225. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +211 -169
  226. package/dist/cjs/ion-button_2.cjs.entry.js +152 -117
  227. package/dist/cjs/ion-card_5.cjs.entry.js +109 -79
  228. package/dist/cjs/ion-checkbox.cjs.entry.js +163 -129
  229. package/dist/cjs/ion-chip.cjs.entry.js +21 -56
  230. package/dist/cjs/ion-col_3.cjs.entry.js +186 -61
  231. package/dist/cjs/ion-datetime-button.cjs.entry.js +255 -247
  232. package/dist/cjs/ion-datetime.cjs.entry.js +2770 -0
  233. package/dist/cjs/ion-fab_3.cjs.entry.js +154 -112
  234. package/dist/cjs/ion-img.cjs.entry.js +34 -16
  235. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +108 -156
  236. package/dist/cjs/ion-input-otp.cjs.entry.js +435 -437
  237. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +40 -64
  238. package/dist/cjs/ion-input.cjs.entry.js +330 -276
  239. package/dist/cjs/ion-item-option_3.cjs.entry.js +136 -511
  240. package/dist/cjs/ion-item_8.cjs.entry.js +217 -189
  241. package/dist/cjs/ion-loading.cjs.entry.js +151 -68
  242. package/dist/cjs/ion-menu_3.cjs.entry.js +181 -137
  243. package/dist/cjs/ion-modal.cjs.entry.js +570 -500
  244. package/dist/cjs/ion-nav_2.cjs.entry.js +103 -163
  245. package/dist/cjs/ion-picker-column-option.cjs.entry.js +39 -39
  246. package/dist/cjs/ion-picker-column.cjs.entry.js +421 -409
  247. package/dist/cjs/ion-picker.cjs.entry.js +405 -400
  248. package/dist/cjs/ion-popover.cjs.entry.js +323 -211
  249. package/dist/cjs/ion-progress-bar.cjs.entry.js +35 -47
  250. package/dist/cjs/ion-radio_2.cjs.entry.js +216 -161
  251. package/dist/cjs/ion-range.cjs.entry.js +307 -249
  252. package/dist/cjs/ion-refresher_2.cjs.entry.js +174 -121
  253. package/dist/cjs/ion-reorder_2.cjs.entry.js +59 -53
  254. package/dist/cjs/ion-ripple-effect.cjs.entry.js +18 -26
  255. package/dist/cjs/ion-route_4.cjs.entry.js +178 -75
  256. package/dist/cjs/ion-searchbar.cjs.entry.js +308 -331
  257. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  258. package/dist/cjs/ion-segment-view.cjs.entry.js +28 -27
  259. package/dist/cjs/ion-segment_2.cjs.entry.js +177 -141
  260. package/dist/cjs/ion-select-modal.cjs.entry.js +49 -69
  261. package/dist/cjs/ion-select_3.cjs.entry.js +481 -385
  262. package/dist/cjs/ion-spinner.cjs.entry.js +28 -36
  263. package/dist/cjs/ion-split-pane.cjs.entry.js +34 -25
  264. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +116 -179
  265. package/dist/cjs/ion-tab_2.cjs.entry.js +54 -29
  266. package/dist/cjs/ion-text.cjs.entry.js +13 -7
  267. package/dist/cjs/ion-textarea.cjs.entry.js +274 -269
  268. package/dist/cjs/ion-toast.cjs.entry.js +264 -169
  269. package/dist/cjs/ion-toggle.cjs.entry.js +184 -187
  270. package/dist/cjs/ionic-global-k6hOWWpn.js +156 -0
  271. package/dist/cjs/ionic.cjs.js +4 -4
  272. package/dist/cjs/{ios.transition-BgDCUY4Y.js → ios.transition-KvuRAe2W.js} +14 -20
  273. package/dist/cjs/{item-multiple-inputs-DKn76MYO.js → item-multiple-inputs-BdYSbfKN.js} +1 -1
  274. package/dist/cjs/{keyboard-nne7rvBK.js → keyboard-Cix5TVkD.js} +4 -5
  275. package/dist/cjs/{keyboard-BbZXOwZg.js → keyboard-cHxZlTyz.js} +3 -3
  276. package/dist/cjs/keyboard-controller-PtZoN2GS.js +167 -0
  277. package/dist/cjs/loader.cjs.js +4 -4
  278. package/dist/cjs/{md.transition-Debf4tYr.js → md.transition-Bjl5Ozph.js} +8 -10
  279. package/dist/cjs/{notch-controller-CFlPw7ER.js → notch-controller-BEUpEgb5.js} +4 -4
  280. package/dist/cjs/{overlay-control-label-DnRLQR1t.js → overlay-control-label-D2sdL2O8.js} +11 -13
  281. package/dist/cjs/{overlays-DYBUkNQu.js → overlays-IlP4H2Gn.js} +60 -336
  282. package/dist/cjs/{select-option-render-BqJEK1N1.js → select-option-render-pULCGldr.js} +3 -4
  283. package/dist/cjs/{status-tap-hwqc0yb_.js → status-tap-BR_ujYHg.js} +3 -4
  284. package/dist/cjs/{swipe-back-DqQx5QCp.js → swipe-back-DzQKEl5g.js} +5 -6
  285. package/dist/cjs/{theme-IlOsGAz7.js → theme-Bw0rpaNN.js} +7 -26
  286. package/dist/cjs/validity-BpS37YFM.js +19 -0
  287. package/dist/collection/collection-manifest.json +1 -13
  288. package/dist/collection/components/accordion/accordion.ios.css +58 -73
  289. package/dist/collection/components/accordion/accordion.js +327 -338
  290. package/dist/collection/components/accordion/accordion.md.css +59 -67
  291. package/dist/collection/components/accordion-group/accordion-group.ios.css +4 -16
  292. package/dist/collection/components/accordion-group/accordion-group.js +56 -69
  293. package/dist/collection/components/accordion-group/accordion-group.md.css +4 -22
  294. package/dist/collection/components/action-sheet/action-sheet.ios.css +54 -184
  295. package/dist/collection/components/action-sheet/action-sheet.js +166 -76
  296. package/dist/collection/components/action-sheet/action-sheet.md.css +55 -179
  297. package/dist/collection/components/action-sheet/test/basic/fixture.js +3 -0
  298. package/dist/collection/components/alert/alert.ios.css +54 -247
  299. package/dist/collection/components/alert/alert.js +236 -113
  300. package/dist/collection/components/alert/alert.md.css +56 -243
  301. package/dist/collection/components/app/app.js +86 -15
  302. package/dist/collection/components/avatar/avatar.ios.css +33 -7
  303. package/dist/collection/components/avatar/avatar.js +4 -120
  304. package/dist/collection/components/avatar/avatar.md.css +0 -51
  305. package/dist/collection/components/back-button/back-button.ios.css +48 -60
  306. package/dist/collection/components/back-button/back-button.js +61 -46
  307. package/dist/collection/components/back-button/back-button.md.css +48 -60
  308. package/dist/collection/components/backdrop/backdrop.ios.css +19 -56
  309. package/dist/collection/components/backdrop/backdrop.js +22 -26
  310. package/dist/collection/components/backdrop/backdrop.md.css +19 -56
  311. package/dist/collection/components/badge/badge.ios.css +12 -137
  312. package/dist/collection/components/badge/badge.js +15 -145
  313. package/dist/collection/components/badge/badge.md.css +12 -122
  314. package/dist/collection/components/breadcrumb/breadcrumb.ios.css +8 -20
  315. package/dist/collection/components/breadcrumb/breadcrumb.js +101 -72
  316. package/dist/collection/components/breadcrumb/breadcrumb.md.css +8 -20
  317. package/dist/collection/components/breadcrumbs/breadcrumbs.ios.css +0 -6
  318. package/dist/collection/components/breadcrumbs/breadcrumbs.js +112 -99
  319. package/dist/collection/components/breadcrumbs/breadcrumbs.md.css +0 -6
  320. package/dist/collection/components/button/button.ios.css +46 -154
  321. package/dist/collection/components/button/button.js +157 -122
  322. package/dist/collection/components/button/button.md.css +50 -150
  323. package/dist/collection/components/buttons/buttons.ios.css +7 -59
  324. package/dist/collection/components/buttons/buttons.js +21 -29
  325. package/dist/collection/components/buttons/buttons.md.css +3 -55
  326. package/dist/collection/components/card/card.ios.css +14 -65
  327. package/dist/collection/components/card/card.js +63 -61
  328. package/dist/collection/components/card/card.md.css +14 -65
  329. package/dist/collection/components/card-content/card-content.ios.css +35 -20
  330. package/dist/collection/components/card-content/card-content.js +10 -12
  331. package/dist/collection/components/card-content/card-content.md.css +35 -20
  332. package/dist/collection/components/card-header/card-header.ios.css +15 -27
  333. package/dist/collection/components/card-header/card-header.js +21 -20
  334. package/dist/collection/components/card-header/card-header.md.css +15 -27
  335. package/dist/collection/components/card-subtitle/card-subtitle.ios.css +0 -12
  336. package/dist/collection/components/card-subtitle/card-subtitle.js +14 -11
  337. package/dist/collection/components/card-subtitle/card-subtitle.md.css +0 -12
  338. package/dist/collection/components/card-title/card-title.ios.css +0 -73
  339. package/dist/collection/components/card-title/card-title.js +14 -11
  340. package/dist/collection/components/card-title/card-title.md.css +0 -73
  341. package/dist/collection/components/checkbox/checkbox.ios.css +117 -242
  342. package/dist/collection/components/checkbox/checkbox.js +160 -165
  343. package/dist/collection/components/checkbox/checkbox.md.css +118 -243
  344. package/dist/collection/components/chip/chip.ios.css +14 -67
  345. package/dist/collection/components/chip/chip.js +20 -116
  346. package/dist/collection/components/chip/chip.md.css +14 -67
  347. package/dist/collection/components/col/col.css +4 -192
  348. package/dist/collection/components/col/col.js +186 -212
  349. package/dist/collection/components/content/content.css +2 -47
  350. package/dist/collection/components/content/content.js +102 -78
  351. package/dist/collection/components/datetime/datetime.ios.css +148 -304
  352. package/dist/collection/components/datetime/datetime.js +1068 -910
  353. package/dist/collection/components/datetime/datetime.md.css +138 -294
  354. package/dist/collection/components/datetime/utils/data.js +18 -19
  355. package/dist/collection/components/datetime/utils/format.js +21 -11
  356. package/dist/collection/components/datetime/utils/manipulation.js +8 -8
  357. package/dist/collection/components/datetime/utils/parse.js +10 -10
  358. package/dist/collection/components/datetime/utils/state.js +8 -2
  359. package/dist/collection/components/datetime/utils/validate.js +4 -5
  360. package/dist/collection/components/datetime-button/datetime-button.ios.css +5 -6
  361. package/dist/collection/components/datetime-button/datetime-button.js +253 -246
  362. package/dist/collection/components/datetime-button/datetime-button.md.css +5 -6
  363. package/dist/collection/components/fab/fab.css +1 -25
  364. package/dist/collection/components/fab/fab.js +25 -22
  365. package/dist/collection/components/fab-button/fab-button.ios.css +6 -18
  366. package/dist/collection/components/fab-button/fab-button.js +117 -83
  367. package/dist/collection/components/fab-button/fab-button.md.css +8 -20
  368. package/dist/collection/components/fab-list/fab-list.css +0 -12
  369. package/dist/collection/components/fab-list/fab-list.js +15 -20
  370. package/dist/collection/components/footer/footer.ios.css +6 -33
  371. package/dist/collection/components/footer/footer.js +65 -151
  372. package/dist/collection/components/footer/footer.md.css +0 -40
  373. package/dist/collection/components/grid/grid.css +0 -12
  374. package/dist/collection/components/grid/grid.js +9 -15
  375. package/dist/collection/components/header/header.ios.css +133 -178
  376. package/dist/collection/components/header/header.js +70 -202
  377. package/dist/collection/components/header/header.md.css +9 -199
  378. package/dist/collection/components/header/header.utils.js +13 -6
  379. package/dist/collection/components/img/img.js +34 -16
  380. package/dist/collection/components/infinite-scroll/infinite-scroll.js +76 -164
  381. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.ios.css +0 -12
  382. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +30 -19
  383. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.md.css +0 -12
  384. package/dist/collection/components/input/input.ios.css +135 -223
  385. package/dist/collection/components/input/input.js +339 -307
  386. package/dist/collection/components/input/input.md.css +207 -193
  387. package/dist/collection/components/input-otp/input-otp.ios.css +60 -105
  388. package/dist/collection/components/input-otp/input-otp.js +432 -437
  389. package/dist/collection/components/input-otp/input-otp.md.css +60 -105
  390. package/dist/collection/components/input-password-toggle/input-password-toggle.js +37 -60
  391. package/dist/collection/components/item/item.ios.css +80 -120
  392. package/dist/collection/components/item/item.js +113 -102
  393. package/dist/collection/components/item/item.md.css +79 -131
  394. package/dist/collection/components/item-divider/item-divider.ios.css +0 -18
  395. package/dist/collection/components/item-divider/item-divider.js +23 -21
  396. package/dist/collection/components/item-divider/item-divider.md.css +0 -18
  397. package/dist/collection/components/item-group/item-group.ios.css +0 -12
  398. package/dist/collection/components/item-group/item-group.js +7 -13
  399. package/dist/collection/components/item-group/item-group.md.css +0 -12
  400. package/dist/collection/components/item-option/item-option.ios.css +29 -136
  401. package/dist/collection/components/item-option/item-option.js +56 -92
  402. package/dist/collection/components/item-option/item-option.md.css +29 -136
  403. package/dist/collection/components/item-options/item-options.ios.css +34 -77
  404. package/dist/collection/components/item-options/item-options.js +17 -20
  405. package/dist/collection/components/item-options/item-options.md.css +34 -77
  406. package/dist/collection/components/item-sliding/{item-sliding.native.css → item-sliding.css} +9 -84
  407. package/dist/collection/components/item-sliding/item-sliding.js +61 -441
  408. package/dist/collection/components/item-sliding/test/test.utils.js +0 -13
  409. package/dist/collection/components/label/label.ios.css +0 -18
  410. package/dist/collection/components/label/label.js +32 -15
  411. package/dist/collection/components/label/label.md.css +0 -18
  412. package/dist/collection/components/list/list.ios.css +14 -54
  413. package/dist/collection/components/list/list.js +19 -55
  414. package/dist/collection/components/list/list.md.css +16 -56
  415. package/dist/collection/components/list-header/list-header.ios.css +38 -82
  416. package/dist/collection/components/list-header/list-header.js +18 -11
  417. package/dist/collection/components/list-header/list-header.md.css +38 -82
  418. package/dist/collection/components/loading/loading.ios.css +1 -13
  419. package/dist/collection/components/loading/loading.js +143 -62
  420. package/dist/collection/components/loading/loading.md.css +1 -13
  421. package/dist/collection/components/menu/menu.ios.css +3 -15
  422. package/dist/collection/components/menu/menu.js +108 -71
  423. package/dist/collection/components/menu/menu.md.css +3 -15
  424. package/dist/collection/components/menu-button/menu-button.ios.css +14 -48
  425. package/dist/collection/components/menu-button/menu-button.js +38 -45
  426. package/dist/collection/components/menu-button/menu-button.md.css +15 -49
  427. package/dist/collection/components/menu-toggle/menu-toggle.js +25 -21
  428. package/dist/collection/components/modal/animations/ios.enter.js +1 -1
  429. package/dist/collection/components/modal/animations/md.enter.js +1 -1
  430. package/dist/collection/components/modal/animations/sheet.js +2 -8
  431. package/dist/collection/components/modal/gestures/sheet.js +32 -86
  432. package/dist/collection/components/modal/gestures/swipe-to-close.js +15 -3
  433. package/dist/collection/components/modal/modal.ios.css +70 -178
  434. package/dist/collection/components/modal/modal.js +404 -272
  435. package/dist/collection/components/modal/modal.md.css +70 -178
  436. package/dist/collection/components/modal/safe-area-utils.js +6 -7
  437. package/dist/collection/components/modal/test/fixtures.js +3 -0
  438. package/dist/collection/components/nav/nav.css +1 -7
  439. package/dist/collection/components/nav/nav.js +72 -256
  440. package/dist/collection/components/nav/view-controller.js +7 -1
  441. package/dist/collection/components/nav-link/nav-link.js +21 -14
  442. package/dist/collection/components/note/note.ios.css +0 -12
  443. package/dist/collection/components/note/note.js +14 -11
  444. package/dist/collection/components/note/note.md.css +0 -12
  445. package/dist/collection/components/picker/picker.ios.css +3 -15
  446. package/dist/collection/components/picker/picker.js +403 -398
  447. package/dist/collection/components/picker/picker.md.css +3 -15
  448. package/dist/collection/components/picker-column/picker-column.css +5 -9
  449. package/dist/collection/components/picker-column/picker-column.js +418 -409
  450. package/dist/collection/components/picker-column-option/picker-column-option.ios.css +0 -6
  451. package/dist/collection/components/picker-column-option/picker-column-option.js +38 -42
  452. package/dist/collection/components/picker-column-option/picker-column-option.md.css +6 -7
  453. package/dist/collection/components/popover/animations/ios.enter.js +1 -2
  454. package/dist/collection/components/popover/animations/md.enter.js +1 -2
  455. package/dist/collection/components/popover/popover.ios.css +2 -15
  456. package/dist/collection/components/popover/popover.js +313 -199
  457. package/dist/collection/components/popover/popover.md.css +2 -15
  458. package/dist/collection/components/popover/test/fixture.js +1 -0
  459. package/dist/collection/components/popover/utils.js +4 -6
  460. package/dist/collection/components/progress-bar/progress-bar.ios.css +17 -48
  461. package/dist/collection/components/progress-bar/progress-bar.js +33 -65
  462. package/dist/collection/components/progress-bar/progress-bar.md.css +17 -48
  463. package/dist/collection/components/radio/radio.ios.css +102 -207
  464. package/dist/collection/components/radio/radio.js +108 -77
  465. package/dist/collection/components/radio/radio.md.css +102 -207
  466. package/dist/collection/components/radio-group/radio-group.ios.css +19 -43
  467. package/dist/collection/components/radio-group/radio-group.js +107 -113
  468. package/dist/collection/components/radio-group/radio-group.md.css +19 -43
  469. package/dist/collection/components/radio-group/test/fixtures.js +2 -0
  470. package/dist/collection/components/range/range.ios.css +85 -128
  471. package/dist/collection/components/range/range.js +303 -245
  472. package/dist/collection/components/range/range.md.css +85 -128
  473. package/dist/collection/components/refresher/refresher.ios.css +1 -14
  474. package/dist/collection/components/refresher/refresher.js +117 -88
  475. package/dist/collection/components/refresher/refresher.md.css +2 -15
  476. package/dist/collection/components/refresher-content/refresher-content.js +47 -31
  477. package/dist/collection/components/reorder/reorder.ios.css +0 -6
  478. package/dist/collection/components/reorder/reorder.js +7 -33
  479. package/dist/collection/components/reorder/reorder.md.css +0 -6
  480. package/dist/collection/components/reorder-group/reorder-group.css +0 -6
  481. package/dist/collection/components/reorder-group/reorder-group.js +47 -22
  482. package/dist/collection/components/ripple-effect/{ripple-effect.common.css → ripple-effect.css} +1 -7
  483. package/dist/collection/components/ripple-effect/ripple-effect.js +17 -26
  484. package/dist/collection/components/route/route.js +39 -14
  485. package/dist/collection/components/route-redirect/route-redirect.js +31 -0
  486. package/dist/collection/components/router/router.js +37 -37
  487. package/dist/collection/components/router/utils/dom.js +25 -7
  488. package/dist/collection/components/router/utils/matching.js +7 -9
  489. package/dist/collection/components/router/utils/parser.js +1 -1
  490. package/dist/collection/components/router/utils/path.js +0 -1
  491. package/dist/collection/components/router-link/router-link.css +2 -8
  492. package/dist/collection/components/router-link/router-link.js +40 -19
  493. package/dist/collection/components/router-outlet/router-outlet.css +1 -7
  494. package/dist/collection/components/router-outlet/router-outlet.js +83 -25
  495. package/dist/collection/components/row/row.css +0 -16
  496. package/dist/collection/components/row/row.js +2 -9
  497. package/dist/collection/components/searchbar/searchbar.ios.css +18 -56
  498. package/dist/collection/components/searchbar/searchbar.js +321 -380
  499. package/dist/collection/components/searchbar/searchbar.md.css +18 -56
  500. package/dist/collection/components/segment/segment.ios.css +2 -45
  501. package/dist/collection/components/segment/segment.js +126 -94
  502. package/dist/collection/components/segment/segment.md.css +2 -45
  503. package/dist/collection/components/segment-button/segment-button.ios.css +105 -146
  504. package/dist/collection/components/segment-button/segment-button.js +49 -46
  505. package/dist/collection/components/segment-button/segment-button.md.css +107 -148
  506. package/dist/collection/components/segment-content/segment-content.js +1 -1
  507. package/dist/collection/components/segment-view/segment-view.ios.css +0 -6
  508. package/dist/collection/components/segment-view/segment-view.js +28 -27
  509. package/dist/collection/components/segment-view/segment-view.md.css +0 -6
  510. package/dist/collection/components/select/select.ios.css +177 -316
  511. package/dist/collection/components/select/select.js +401 -399
  512. package/dist/collection/components/select/select.md.css +179 -332
  513. package/dist/collection/components/select-modal/select-modal.ios.css +45 -293
  514. package/dist/collection/components/select-modal/select-modal.js +37 -79
  515. package/dist/collection/components/select-modal/select-modal.md.css +43 -273
  516. package/dist/collection/components/select-modal/test/fixtures.js +8 -1
  517. package/dist/collection/components/select-option/select-option.js +48 -15
  518. package/dist/collection/components/select-popover/select-popover.ios.css +124 -188
  519. package/dist/collection/components/select-popover/select-popover.js +44 -37
  520. package/dist/collection/components/select-popover/select-popover.md.css +47 -228
  521. package/dist/collection/components/select-popover/test/fixtures.js +8 -1
  522. package/dist/collection/components/skeleton-text/skeleton-text.css +0 -6
  523. package/dist/collection/components/skeleton-text/skeleton-text.js +15 -15
  524. package/dist/collection/components/spinner/{spinner.ionic.css → spinner.css} +10 -78
  525. package/dist/collection/components/spinner/spinner.js +26 -55
  526. package/dist/collection/components/split-pane/split-pane.ios.css +2 -20
  527. package/dist/collection/components/split-pane/split-pane.js +33 -28
  528. package/dist/collection/components/split-pane/split-pane.md.css +2 -20
  529. package/dist/collection/components/tab/tab.js +17 -10
  530. package/dist/collection/components/tab-bar/tab-bar.ios.css +43 -86
  531. package/dist/collection/components/tab-bar/tab-bar.js +44 -190
  532. package/dist/collection/components/tab-bar/tab-bar.md.css +43 -86
  533. package/dist/collection/components/tab-button/tab-button.ios.css +95 -171
  534. package/dist/collection/components/tab-button/tab-button.js +68 -74
  535. package/dist/collection/components/tab-button/tab-button.md.css +93 -137
  536. package/dist/collection/components/tabs/tabs.css +1 -7
  537. package/dist/collection/components/tabs/tabs.js +33 -23
  538. package/dist/collection/components/text/text.css +0 -6
  539. package/dist/collection/components/text/text.js +12 -7
  540. package/dist/collection/components/textarea/textarea.ios.css +158 -298
  541. package/dist/collection/components/textarea/textarea.js +275 -295
  542. package/dist/collection/components/textarea/textarea.md.css +159 -312
  543. package/dist/collection/components/thumbnail/thumbnail.css +0 -6
  544. package/dist/collection/components/thumbnail/thumbnail.js +2 -9
  545. package/dist/collection/components/title/title.ios.css +4 -32
  546. package/dist/collection/components/title/title.js +23 -13
  547. package/dist/collection/components/title/title.md.css +4 -39
  548. package/dist/collection/components/toast/animations/utils.js +1 -1
  549. package/dist/collection/components/toast/toast.ios.css +45 -84
  550. package/dist/collection/components/toast/toast.js +232 -178
  551. package/dist/collection/components/toast/toast.md.css +45 -84
  552. package/dist/collection/components/toggle/toggle.ios.css +127 -247
  553. package/dist/collection/components/toggle/toggle.js +175 -177
  554. package/dist/collection/components/toggle/toggle.md.css +127 -245
  555. package/dist/collection/components/toolbar/toolbar.ios.css +47 -90
  556. package/dist/collection/components/toolbar/toolbar.js +25 -222
  557. package/dist/collection/components/toolbar/toolbar.md.css +47 -90
  558. package/dist/collection/global/config.js +4 -6
  559. package/dist/collection/global/ionic-global.js +20 -242
  560. package/dist/collection/index.js +1 -1
  561. package/dist/collection/utils/animation/animation.js +3 -3
  562. package/dist/collection/utils/config.js +5 -4
  563. package/dist/collection/utils/focus-controller/index.js +1 -1
  564. package/dist/collection/utils/focus-trap.js +5 -16
  565. package/dist/collection/utils/focus-visible.js +0 -22
  566. package/dist/collection/utils/forms/index.js +0 -1
  567. package/dist/collection/utils/forms/validity.js +0 -31
  568. package/dist/collection/utils/framework-delegate.js +5 -9
  569. package/dist/collection/utils/gesture/gesture-controller.js +15 -8
  570. package/dist/collection/utils/gesture/index.js +10 -2
  571. package/dist/collection/utils/gesture/listener.js +1 -1
  572. package/dist/collection/utils/hardware-back-button.js +3 -18
  573. package/dist/collection/utils/helpers.js +5 -72
  574. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +4 -5
  575. package/dist/collection/utils/input-shims/hacks/scroll-data.js +1 -2
  576. package/dist/collection/utils/keyboard/keyboard-controller.js +6 -8
  577. package/dist/collection/utils/keyboard/keyboard.js +1 -1
  578. package/dist/collection/utils/logging/index.js +23 -4
  579. package/dist/collection/utils/media.js +0 -1
  580. package/dist/collection/utils/menu-controller/animations/overlay.js +3 -3
  581. package/dist/collection/utils/menu-controller/animations/push.js +1 -2
  582. package/dist/collection/utils/menu-controller/animations/reveal.js +1 -2
  583. package/dist/collection/utils/menu-controller/index.js +1 -2
  584. package/dist/collection/utils/native/haptic.js +2 -3
  585. package/dist/collection/utils/native/keyboard.js +2 -2
  586. package/dist/collection/utils/native/status-bar.js +1 -1
  587. package/dist/collection/utils/overlay-control-label.js +11 -13
  588. package/dist/collection/utils/overlays.js +45 -312
  589. package/dist/collection/utils/platform.js +4 -5
  590. package/dist/collection/utils/rtl/dir.js +1 -1
  591. package/dist/collection/utils/sanitization/index.js +2 -2
  592. package/dist/collection/utils/select-option-render.js +1 -2
  593. package/dist/collection/utils/slot-mutation-controller.js +1 -2
  594. package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
  595. package/dist/collection/utils/test/playwright/drag-element.js +11 -35
  596. package/dist/collection/utils/test/playwright/generator.js +25 -51
  597. package/dist/collection/utils/test/playwright/page/event-spy.js +11 -12
  598. package/dist/collection/utils/test/playwright/page/utils/goto.js +5 -15
  599. package/dist/collection/utils/test/playwright/page/utils/set-content.js +4 -27
  600. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +2 -3
  601. package/dist/collection/utils/test/press-keys.js +10 -17
  602. package/dist/collection/utils/theme.js +7 -26
  603. package/dist/collection/utils/transition/ios.transition.js +9 -14
  604. package/dist/collection/utils/transition/md.transition.js +3 -4
  605. package/dist/docs.json +503 -10023
  606. package/dist/esm/{animation-ChfHU0RG.js → animation-CGFdmGk9.js} +5 -5
  607. package/dist/esm/{app-globals-D1OOQlqq.js → app-globals-CYmMeGdU.js} +1 -1
  608. package/dist/esm/{button-active-CPYK0dNo.js → button-active--80YqSHA.js} +3 -3
  609. package/dist/esm/{capacitor-DG_4yVXz.js → capacitor-CFERIeaU.js} +1 -1
  610. package/dist/esm/{config-BwKpO3Is.js → config-DWCzVL3Y.js} +5 -4
  611. package/dist/esm/{dir-C53feagD.js → dir-B-FxiyeI.js} +1 -1
  612. package/dist/{cjs/focus-visible-BIj-I3-C.js → esm/focus-visible-BmVRXR1y.js} +1 -27
  613. package/dist/esm/{format-2WlZcMvG.js → format-Dcwga61t.js} +41 -31
  614. package/dist/esm/{framework-delegate-DO2QXccA.js → framework-delegate--ajhSeKH.js} +6 -10
  615. package/dist/esm/{gesture-controller-BTEOs1at.js → gesture-controller-TXPDHL13.js} +15 -8
  616. package/dist/esm/{haptic-BWlRCqa-.js → haptic-Cq4UAeka.js} +3 -4
  617. package/dist/esm/hardware-back-button-gLJHMX_F.js +115 -0
  618. package/dist/esm/{helpers-DfF5_wJc.js → helpers-DexiPLIC.js} +7 -73
  619. package/dist/esm/{index-BSDDOljg.js → index-8s8kZKJ7.js} +5 -5
  620. package/dist/esm/{index-DNY2GOUg.js → index-BCgUwrV0.js} +3 -4
  621. package/dist/esm/{index-B4Kq2YNk.js → index-BvabGprD.js} +1 -2
  622. package/dist/esm/{index-Mq5pCWmZ.js → index-CKM1DdGm.js} +3 -3
  623. package/dist/esm/{index-C0EQceqV.js → index-ChhhtsGZ.js} +34 -66
  624. package/dist/esm/{index-7eS8XtuU.js → index-CumkqGQF.js} +12 -13
  625. package/dist/esm/{index-CfgBF1SE.js → index-DppOcPFQ.js} +10 -4
  626. package/dist/esm/index-ZjP4CjeZ.js +7 -0
  627. package/dist/esm/{index-taYRjZGp.js → index-_Za5VB9w.js} +2 -2
  628. package/dist/esm/index.js +17 -16
  629. package/dist/esm/{input-shims-tZfqB5a5.js → input-shims-BB0AKb_k.js} +11 -14
  630. package/dist/esm/{input.utils-fs4B7WL5.js → input.utils-J6HWocLA.js} +4 -5
  631. package/dist/esm/ion-accordion_2.entry.js +378 -382
  632. package/dist/esm/ion-action-sheet.entry.js +178 -86
  633. package/dist/esm/ion-alert.entry.js +250 -125
  634. package/dist/esm/ion-app_8.entry.js +460 -607
  635. package/dist/esm/ion-avatar_3.entry.js +19 -125
  636. package/dist/esm/ion-back-button.entry.js +64 -49
  637. package/dist/esm/ion-backdrop.entry.js +23 -22
  638. package/dist/esm/ion-breadcrumb_2.entry.js +211 -169
  639. package/dist/esm/ion-button_2.entry.js +152 -117
  640. package/dist/esm/ion-card_5.entry.js +109 -79
  641. package/dist/esm/ion-checkbox.entry.js +163 -129
  642. package/dist/esm/ion-chip.entry.js +21 -56
  643. package/dist/esm/ion-col_3.entry.js +186 -61
  644. package/dist/esm/ion-datetime-button.entry.js +255 -247
  645. package/dist/esm/ion-datetime.entry.js +2768 -0
  646. package/dist/esm/ion-fab_3.entry.js +154 -112
  647. package/dist/esm/ion-img.entry.js +34 -16
  648. package/dist/esm/ion-infinite-scroll_2.entry.js +108 -156
  649. package/dist/esm/ion-input-otp.entry.js +435 -437
  650. package/dist/esm/ion-input-password-toggle.entry.js +40 -64
  651. package/dist/esm/ion-input.entry.js +330 -276
  652. package/dist/esm/ion-item-option_3.entry.js +136 -511
  653. package/dist/esm/ion-item_8.entry.js +217 -189
  654. package/dist/esm/ion-loading.entry.js +151 -68
  655. package/dist/esm/ion-menu_3.entry.js +181 -137
  656. package/dist/esm/ion-modal.entry.js +528 -458
  657. package/dist/esm/ion-nav_2.entry.js +103 -163
  658. package/dist/esm/ion-picker-column-option.entry.js +39 -39
  659. package/dist/esm/ion-picker-column.entry.js +421 -409
  660. package/dist/esm/ion-picker.entry.js +405 -400
  661. package/dist/esm/ion-popover.entry.js +323 -211
  662. package/dist/esm/ion-progress-bar.entry.js +35 -47
  663. package/dist/esm/ion-radio_2.entry.js +216 -161
  664. package/dist/esm/ion-range.entry.js +307 -249
  665. package/dist/esm/ion-refresher_2.entry.js +174 -121
  666. package/dist/esm/ion-reorder_2.entry.js +59 -53
  667. package/dist/esm/ion-ripple-effect.entry.js +18 -26
  668. package/dist/esm/ion-route_4.entry.js +178 -75
  669. package/dist/esm/ion-searchbar.entry.js +308 -331
  670. package/dist/esm/ion-segment-content.entry.js +2 -2
  671. package/dist/esm/ion-segment-view.entry.js +28 -27
  672. package/dist/esm/ion-segment_2.entry.js +177 -141
  673. package/dist/esm/ion-select-modal.entry.js +49 -69
  674. package/dist/esm/ion-select_3.entry.js +482 -386
  675. package/dist/esm/ion-spinner.entry.js +28 -36
  676. package/dist/esm/ion-split-pane.entry.js +34 -25
  677. package/dist/esm/ion-tab-bar_2.entry.js +115 -178
  678. package/dist/esm/ion-tab_2.entry.js +54 -29
  679. package/dist/esm/ion-text.entry.js +13 -7
  680. package/dist/esm/ion-textarea.entry.js +274 -269
  681. package/dist/esm/ion-toast.entry.js +243 -148
  682. package/dist/esm/ion-toggle.entry.js +184 -187
  683. package/dist/esm/ionic-global-BVB7BrLT.js +151 -0
  684. package/dist/esm/ionic.js +5 -5
  685. package/dist/esm/{ios.transition-C3r-0w96.js → ios.transition-BdhybwLl.js} +14 -20
  686. package/dist/esm/{item-multiple-inputs-C6onMFOo.js → item-multiple-inputs-rU8VaNNg.js} +1 -1
  687. package/dist/esm/{keyboard-BzbtCDwZ.js → keyboard-Cj8mLJeq.js} +4 -5
  688. package/dist/esm/{keyboard-DYGmALa7.js → keyboard-DAF8GNJ9.js} +3 -3
  689. package/dist/esm/keyboard-controller-DEwoa1ev.js +165 -0
  690. package/dist/esm/loader.js +5 -5
  691. package/dist/esm/{md.transition-CPHOF5T9.js → md.transition-B5lqKGCs.js} +8 -10
  692. package/dist/esm/{notch-controller-CsbpmbOz.js → notch-controller-CrUGyHYz.js} +2 -2
  693. package/dist/esm/{overlay-control-label-CODBQrPj.js → overlay-control-label-BSQPZ79H.js} +11 -13
  694. package/dist/esm/{overlays-C1NQMs9y.js → overlays-CjWwtvf1.js} +57 -333
  695. package/dist/esm/{select-option-render-BlKZ2H83.js → select-option-render-C4m76VGH.js} +3 -4
  696. package/dist/esm/{status-tap-BueE8Coq.js → status-tap-DpLhkDWs.js} +3 -4
  697. package/dist/esm/{swipe-back-qmvTRnSq.js → swipe-back-cz4-lyG3.js} +5 -6
  698. package/dist/esm/theme-byZM6qHV.js +48 -0
  699. package/dist/esm/validity-DJztqcrH.js +17 -0
  700. package/dist/html.html-data.json +146 -2713
  701. package/dist/ionic/index.esm.js +1 -1
  702. package/dist/ionic/ionic.esm.js +1 -1
  703. package/dist/ionic/p-0266b7e1.entry.js +4 -0
  704. package/dist/ionic/p-08443c08.entry.js +4 -0
  705. package/dist/ionic/p-08f1ed1c.entry.js +4 -0
  706. package/dist/ionic/p-09b47b7d.entry.js +4 -0
  707. package/dist/ionic/p-0FNc80PN.js +4 -0
  708. package/dist/ionic/p-12589d59.entry.js +4 -0
  709. package/dist/ionic/p-1d2e53e8.entry.js +4 -0
  710. package/dist/ionic/p-1edf0573.entry.js +4 -0
  711. package/dist/ionic/p-214e000a.entry.js +4 -0
  712. package/dist/ionic/p-21a7fb2a.entry.js +4 -0
  713. package/dist/ionic/p-2ce59395.entry.js +4 -0
  714. package/dist/ionic/p-33829e94.entry.js +4 -0
  715. package/dist/ionic/p-374b10cb.entry.js +4 -0
  716. package/dist/ionic/p-3835a020.entry.js +4 -0
  717. package/dist/ionic/p-3c5fdd27.entry.js +4 -0
  718. package/dist/ionic/p-40424a88.entry.js +4 -0
  719. package/dist/ionic/p-48b6835f.entry.js +4 -0
  720. package/dist/ionic/p-4eOQC00Z.js +4 -0
  721. package/dist/ionic/p-5394e1d4.entry.js +4 -0
  722. package/dist/ionic/p-53bac1c9.entry.js +4 -0
  723. package/dist/ionic/p-5506caeb.entry.js +4 -0
  724. package/dist/ionic/p-5993a77f.entry.js +4 -0
  725. package/dist/ionic/p-6277efba.entry.js +4 -0
  726. package/dist/ionic/p-62e71297.entry.js +4 -0
  727. package/dist/ionic/p-6b286c5c.entry.js +4 -0
  728. package/dist/ionic/p-7116e558.entry.js +4 -0
  729. package/dist/ionic/p-74f30659.entry.js +4 -0
  730. package/dist/ionic/p-7bb3e957.entry.js +4 -0
  731. package/dist/ionic/p-82525fb0.entry.js +4 -0
  732. package/dist/ionic/p-865fa114.entry.js +4 -0
  733. package/dist/ionic/p-8a21bdbd.entry.js +4 -0
  734. package/dist/ionic/p-8e1d9e3a.entry.js +4 -0
  735. package/dist/ionic/p-8f3a1995.entry.js +4 -0
  736. package/dist/ionic/p-91c6faf1.entry.js +4 -0
  737. package/dist/ionic/p-9b865fe6.entry.js +4 -0
  738. package/dist/ionic/p-9nmHvEvw.js +4 -0
  739. package/dist/ionic/p-B-FxiyeI.js +4 -0
  740. package/dist/ionic/p-BB0LlG4y.js +4 -0
  741. package/dist/ionic/p-BMPN55of.js +4 -0
  742. package/dist/ionic/p-BQ8oNV0v.js +4 -0
  743. package/dist/ionic/p-BSQPZ79H.js +4 -0
  744. package/dist/ionic/p-BhamHSw3.js +4 -0
  745. package/dist/ionic/p-BjvtSsVI.js +4 -0
  746. package/dist/ionic/p-BkfAWuv6.js +4 -0
  747. package/dist/ionic/p-BmVRXR1y.js +4 -0
  748. package/dist/ionic/p-BnMQxWON.js +4 -0
  749. package/dist/ionic/p-BvabGprD.js +4 -0
  750. package/{components/p-Va26YR7l.js → dist/ionic/p-BwIp10KV.js} +1 -1
  751. package/dist/ionic/p-C-94tAim.js +4 -0
  752. package/dist/ionic/p-C6eME8Ey.js +4 -0
  753. package/dist/ionic/p-CIGNaXM1.js +4 -0
  754. package/dist/ionic/p-CKUuSnDR.js +4 -0
  755. package/dist/ionic/p-CMRtMbJc.js +4 -0
  756. package/dist/ionic/p-CPcPmkGv.js +4 -0
  757. package/dist/ionic/p-CQ_4TirR.js +4 -0
  758. package/dist/ionic/p-CaRuIadB.js +4 -0
  759. package/dist/ionic/p-Cdjxf_yg.js +4 -0
  760. package/dist/ionic/p-ChhhtsGZ.js +5 -0
  761. package/dist/ionic/p-CmKf4pgI.js +4 -0
  762. package/dist/ionic/p-D5t_-oMk.js +4 -0
  763. package/dist/ionic/p-D94b61er.js +4 -0
  764. package/dist/ionic/p-DCI3rXQo.js +4 -0
  765. package/dist/ionic/p-DDhtUaaA.js +4 -0
  766. package/dist/ionic/p-DJztqcrH.js +4 -0
  767. package/dist/ionic/p-DWCzVL3Y.js +4 -0
  768. package/dist/ionic/p-Dn0mqQ_R.js +4 -0
  769. package/dist/ionic/p-I3In7hMC.js +4 -0
  770. package/dist/ionic/p-T71k3C35.js +4 -0
  771. package/dist/ionic/p-TXPDHL13.js +4 -0
  772. package/dist/ionic/p-ZjP4CjeZ.js +4 -0
  773. package/dist/ionic/p-a641d428.entry.js +4 -0
  774. package/dist/ionic/p-ac6ef997.entry.js +4 -0
  775. package/dist/ionic/p-acf0a6af.entry.js +4 -0
  776. package/dist/ionic/p-ad98e3ff.entry.js +4 -0
  777. package/dist/ionic/p-af5166f5.entry.js +4 -0
  778. package/dist/ionic/p-b24dc0a1.entry.js +4 -0
  779. package/dist/ionic/p-ba8a598f.entry.js +4 -0
  780. package/dist/ionic/p-bf7c1f05.entry.js +4 -0
  781. package/dist/ionic/p-byZM6qHV.js +4 -0
  782. package/dist/ionic/p-c3f65965.entry.js +4 -0
  783. package/dist/ionic/p-c8fbe544.entry.js +4 -0
  784. package/dist/ionic/p-cb12f6c3.entry.js +4 -0
  785. package/dist/ionic/p-cec87704.entry.js +4 -0
  786. package/dist/ionic/p-dbfd2d52.entry.js +4 -0
  787. package/dist/ionic/p-e1e5b507.entry.js +4 -0
  788. package/dist/ionic/p-ede019ef.entry.js +4 -0
  789. package/dist/ionic/p-efef6788.entry.js +4 -0
  790. package/dist/ionic/p-f046aa37.entry.js +4 -0
  791. package/dist/ionic/p-f402f5a4.entry.js +4 -0
  792. package/dist/ionic/p-f622796d.entry.js +4 -0
  793. package/dist/ionic/{p-CnIzWLAn.js → p-kJA95YWg.js} +1 -1
  794. package/dist/types/components/accordion/accordion.d.ts +3 -6
  795. package/dist/types/components/accordion-group/accordion-group.d.ts +1 -12
  796. package/dist/types/components/action-sheet/action-sheet-interface.d.ts +7 -3
  797. package/dist/types/components/action-sheet/action-sheet.d.ts +2 -3
  798. package/dist/types/components/alert/alert-interface.d.ts +7 -3
  799. package/dist/types/components/alert/alert.d.ts +2 -3
  800. package/dist/types/components/app/app.d.ts +5 -4
  801. package/dist/types/components/avatar/avatar.d.ts +0 -32
  802. package/dist/types/components/back-button/back-button.d.ts +1 -2
  803. package/dist/types/components/backdrop/backdrop.d.ts +0 -4
  804. package/dist/types/components/badge/badge.d.ts +1 -34
  805. package/dist/types/components/breadcrumb/breadcrumb.d.ts +1 -4
  806. package/dist/types/components/breadcrumbs/breadcrumbs.d.ts +2 -2
  807. package/dist/types/components/button/button.d.ts +8 -23
  808. package/dist/types/components/buttons/buttons.d.ts +1 -5
  809. package/dist/types/components/card/card.d.ts +1 -8
  810. package/dist/types/components/card-content/card-content.d.ts +1 -2
  811. package/dist/types/components/card-header/card-header.d.ts +2 -3
  812. package/dist/types/components/card-subtitle/card-subtitle.d.ts +1 -2
  813. package/dist/types/components/card-title/card-title.d.ts +1 -2
  814. package/dist/types/components/checkbox/checkbox.d.ts +4 -14
  815. package/dist/types/components/chip/chip.d.ts +1 -26
  816. package/dist/types/components/col/col.d.ts +5 -52
  817. package/dist/types/components/content/content.d.ts +0 -3
  818. package/dist/types/components/datetime/datetime.d.ts +1 -26
  819. package/dist/types/components/datetime/utils/data.d.ts +5 -5
  820. package/dist/types/components/datetime-button/datetime-button.d.ts +1 -2
  821. package/dist/types/components/fab/fab.d.ts +0 -4
  822. package/dist/types/components/fab-button/fab-button.d.ts +3 -5
  823. package/dist/types/components/fab-list/fab-list.d.ts +0 -4
  824. package/dist/types/components/footer/footer.d.ts +3 -20
  825. package/dist/types/components/grid/grid.d.ts +0 -4
  826. package/dist/types/components/header/header.d.ts +3 -26
  827. package/dist/types/components/header/header.utils.d.ts +5 -4
  828. package/dist/types/components/img/img.d.ts +1 -2
  829. package/dist/types/components/infinite-scroll/infinite-scroll.d.ts +0 -21
  830. package/dist/types/components/infinite-scroll-content/infinite-scroll-content.d.ts +0 -4
  831. package/dist/types/components/input/input.d.ts +6 -35
  832. package/dist/types/components/input-otp/input-otp.d.ts +0 -37
  833. package/dist/types/components/input-password-toggle/input-password-toggle.d.ts +0 -2
  834. package/dist/types/components/item/item.d.ts +4 -11
  835. package/dist/types/components/item-divider/item-divider.d.ts +1 -2
  836. package/dist/types/components/item-group/item-group.d.ts +0 -4
  837. package/dist/types/components/item-option/item-option.d.ts +1 -18
  838. package/dist/types/components/item-options/item-options.d.ts +0 -4
  839. package/dist/types/components/item-sliding/item-sliding.d.ts +1 -47
  840. package/dist/types/components/item-sliding/test/test.utils.d.ts +0 -13
  841. package/dist/types/components/label/label.d.ts +1 -2
  842. package/dist/types/components/list/list.d.ts +1 -15
  843. package/dist/types/components/list-header/list-header.d.ts +1 -2
  844. package/dist/types/components/loading/loading-interface.d.ts +7 -2
  845. package/dist/types/components/loading/loading.d.ts +2 -3
  846. package/dist/types/components/menu/menu.d.ts +0 -3
  847. package/dist/types/components/menu-button/menu-button.d.ts +1 -3
  848. package/dist/types/components/menu-toggle/menu-toggle.d.ts +0 -3
  849. package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
  850. package/dist/types/components/modal/modal-interface.d.ts +16 -4
  851. package/dist/types/components/modal/modal.d.ts +12 -15
  852. package/dist/types/components/nav/nav-interface.d.ts +1 -10
  853. package/dist/types/components/nav/nav.d.ts +3 -27
  854. package/dist/types/components/nav-link/nav-link.d.ts +0 -4
  855. package/dist/types/components/note/note.d.ts +1 -2
  856. package/dist/types/components/picker/picker.d.ts +1 -2
  857. package/dist/types/components/picker-column/picker-column.d.ts +1 -2
  858. package/dist/types/components/picker-column-option/picker-column-option.d.ts +0 -4
  859. package/dist/types/components/popover/popover-interface.d.ts +6 -3
  860. package/dist/types/components/popover/popover.d.ts +5 -6
  861. package/dist/types/components/progress-bar/progress-bar.d.ts +1 -10
  862. package/dist/types/components/radio/radio.d.ts +1 -2
  863. package/dist/types/components/radio-group/radio-group.d.ts +0 -12
  864. package/dist/types/components/range/range.d.ts +1 -2
  865. package/dist/types/components/refresher/refresher.d.ts +1 -2
  866. package/dist/types/components/refresher-content/refresher-content.d.ts +0 -4
  867. package/dist/types/components/reorder/reorder.d.ts +0 -9
  868. package/dist/types/components/reorder-group/reorder-group.d.ts +0 -4
  869. package/dist/types/components/ripple-effect/ripple-effect.d.ts +0 -4
  870. package/dist/types/components/route/route.d.ts +1 -5
  871. package/dist/types/components/router/router.d.ts +0 -4
  872. package/dist/types/components/router-link/router-link.d.ts +0 -4
  873. package/dist/types/components/router-outlet/router-outlet.d.ts +8 -4
  874. package/dist/types/components/row/row.d.ts +0 -4
  875. package/dist/types/components/searchbar/searchbar.d.ts +11 -57
  876. package/dist/types/components/segment/segment.d.ts +1 -2
  877. package/dist/types/components/segment-button/segment-button.d.ts +1 -2
  878. package/dist/types/components/select/select.d.ts +14 -49
  879. package/dist/types/components/select-modal/select-modal.d.ts +0 -8
  880. package/dist/types/components/select-option/select-option.d.ts +4 -7
  881. package/dist/types/components/select-popover/select-popover.d.ts +0 -3
  882. package/dist/types/components/skeleton-text/skeleton-text.d.ts +0 -4
  883. package/dist/types/components/spinner/spinner.d.ts +0 -15
  884. package/dist/types/components/split-pane/split-pane.d.ts +0 -4
  885. package/dist/types/components/tab/tab.d.ts +0 -4
  886. package/dist/types/components/tab-bar/tab-bar-interface.d.ts +0 -1
  887. package/dist/types/components/tab-bar/tab-bar.d.ts +3 -41
  888. package/dist/types/components/tab-button/tab-button.d.ts +1 -12
  889. package/dist/types/components/tabs/tabs.d.ts +0 -3
  890. package/dist/types/components/text/text.d.ts +1 -2
  891. package/dist/types/components/textarea/textarea.d.ts +4 -53
  892. package/dist/types/components/thumbnail/thumbnail.d.ts +0 -4
  893. package/dist/types/components/title/title.d.ts +0 -4
  894. package/dist/types/components/toast/animations/utils.d.ts +2 -2
  895. package/dist/types/components/toast/toast-interface.d.ts +7 -3
  896. package/dist/types/components/toast/toast.d.ts +2 -19
  897. package/dist/types/components/toggle/toggle.d.ts +1 -15
  898. package/dist/types/components/toolbar/toolbar.d.ts +3 -43
  899. package/dist/types/components.d.ts +263 -2171
  900. package/dist/types/global/ionic-global.d.ts +2 -28
  901. package/dist/types/index.d.ts +1 -1
  902. package/dist/types/interface.d.ts +0 -4
  903. package/dist/types/utils/config.d.ts +3 -114
  904. package/dist/types/utils/focus-trap.d.ts +1 -1
  905. package/dist/types/utils/focus-visible.d.ts +0 -13
  906. package/dist/types/utils/forms/index.d.ts +0 -1
  907. package/dist/types/utils/forms/validity.d.ts +0 -7
  908. package/dist/types/utils/helpers.d.ts +0 -22
  909. package/dist/types/utils/logging/index.d.ts +2 -1
  910. package/dist/types/utils/overlay-control-label.d.ts +9 -11
  911. package/dist/types/utils/overlays-interface.d.ts +1 -31
  912. package/dist/types/utils/overlays.d.ts +12 -10
  913. package/dist/types/utils/test/playwright/drag-element.d.ts +3 -16
  914. package/dist/types/utils/test/playwright/generator.d.ts +2 -31
  915. package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
  916. package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
  917. package/dist/types/utils/theme.d.ts +0 -9
  918. package/hydrate/index.js +10310 -12033
  919. package/hydrate/index.mjs +10310 -12033
  920. package/package.json +56 -17
  921. package/components/ion-divider.d.ts +0 -11
  922. package/components/ion-divider.js +0 -4
  923. package/components/ion-gallery-item.d.ts +0 -11
  924. package/components/ion-gallery-item.js +0 -4
  925. package/components/ion-gallery.d.ts +0 -11
  926. package/components/ion-gallery.js +0 -4
  927. package/components/ion-picker-legacy-column.d.ts +0 -11
  928. package/components/ion-picker-legacy-column.js +0 -4
  929. package/components/ion-picker-legacy.d.ts +0 -11
  930. package/components/ion-picker-legacy.js +0 -4
  931. package/components/p-6hUZIMBp.js +0 -4
  932. package/components/p-9mfpAwJh.js +0 -4
  933. package/components/p-B2aAAEfp.js +0 -4
  934. package/components/p-B2lpqDWK.js +0 -4
  935. package/components/p-BDoEcs72.js +0 -4
  936. package/components/p-BDqjX7Z_.js +0 -4
  937. package/components/p-BE21dB_a.js +0 -4
  938. package/components/p-BFpXpzD-.js +0 -4
  939. package/components/p-BTEOs1at.js +0 -4
  940. package/components/p-BUNIyvqe.js +0 -4
  941. package/components/p-BYSs-jZz.js +0 -4
  942. package/components/p-BYoGvMgh.js +0 -4
  943. package/components/p-BYrCPOBM.js +0 -4
  944. package/components/p-BbVhJs-a.js +0 -4
  945. package/components/p-BhRXIcSN.js +0 -4
  946. package/components/p-BjW8SOqw.js +0 -4
  947. package/components/p-BsiHrVPa.js +0 -4
  948. package/components/p-BwKpO3Is.js +0 -4
  949. package/components/p-Bz8jnuiy.js +0 -4
  950. package/components/p-C-Ea1l5K.js +0 -4
  951. package/components/p-C3X10Pc6.js +0 -4
  952. package/components/p-C53feagD.js +0 -4
  953. package/components/p-CH6jbAEI.js +0 -4
  954. package/components/p-CJE5t2qs.js +0 -4
  955. package/components/p-CODBQrPj.js +0 -4
  956. package/components/p-CUbb1HkU.js +0 -4
  957. package/components/p-CVYFPBs-.js +0 -4
  958. package/components/p-CVoLDZ7z.js +0 -4
  959. package/components/p-CZrORZXS.js +0 -4
  960. package/components/p-Cc3oC60a.js +0 -4
  961. package/components/p-Cl0B-RWe.js +0 -4
  962. package/components/p-CmoUesXp.js +0 -4
  963. package/components/p-CyNW8ypn.js +0 -4
  964. package/components/p-CzxyxYID.js +0 -4
  965. package/components/p-D0Iqw6OZ.js +0 -4
  966. package/components/p-D0LT3Z3i.js +0 -4
  967. package/components/p-D1t981Ih.js +0 -4
  968. package/components/p-D6tqrIYY.js +0 -4
  969. package/components/p-D9C5yWpF.js +0 -4
  970. package/components/p-DCRXgAoM.js +0 -4
  971. package/components/p-DL5wyRub.js +0 -4
  972. package/components/p-DQlXUUDh.js +0 -4
  973. package/components/p-DRWN7QM2.js +0 -4
  974. package/components/p-DaJxRxSQ.js +0 -4
  975. package/components/p-DbmfFkd1.js +0 -4
  976. package/components/p-Dhi5xtNS.js +0 -4
  977. package/components/p-DnwLgh9U.js +0 -4
  978. package/components/p-DoZB3DcY.js +0 -4
  979. package/components/p-DrrpZB81.js +0 -4
  980. package/components/p-DrzWRqnG.js +0 -4
  981. package/components/p-DylrHLJF.js +0 -4
  982. package/components/p-Dypq4kXE.js +0 -4
  983. package/components/p-DzeMJvWL.js +0 -4
  984. package/components/p-Dzk4Tr0X.js +0 -4
  985. package/components/p-Rkm2AOZ2.js +0 -4
  986. package/components/p-UYngqo1f.js +0 -4
  987. package/components/p-asUhrzOB.js +0 -4
  988. package/components/p-fIOYmaqA.js +0 -4
  989. package/components/p-jlwpz7Ms.js +0 -4
  990. package/components/p-kInyVu79.js +0 -4
  991. package/components/p-miSYSxcc.js +0 -4
  992. package/components/p-paDbTUL9.js +0 -4
  993. package/components/p-vXpMhGrs.js +0 -4
  994. package/components/p-znZTPd7u.js +0 -4
  995. package/css/ionic/bundle.ionic.css +0 -1
  996. package/css/ionic/bundle.ionic.css.map +0 -1
  997. package/css/ionic/core.ionic.css +0 -1
  998. package/css/ionic/core.ionic.css.map +0 -1
  999. package/css/ionic/global.bundle.ionic.css +0 -1
  1000. package/css/ionic/global.bundle.ionic.css.map +0 -1
  1001. package/css/ionic/ionic-swiper.ionic.css +0 -1
  1002. package/css/ionic/ionic-swiper.ionic.css.map +0 -1
  1003. package/css/ionic/link.ionic.css +0 -1
  1004. package/css/ionic/link.ionic.css.map +0 -1
  1005. package/css/ionic/structure.ionic.css +0 -1
  1006. package/css/ionic/structure.ionic.css.map +0 -1
  1007. package/css/ionic/typography.ionic.css +0 -1
  1008. package/css/ionic/typography.ionic.css.map +0 -1
  1009. package/css/ionic/utils.bundle.ionic.css +0 -1
  1010. package/css/ionic/utils.bundle.ionic.css.map +0 -1
  1011. package/dist/cjs/caret-down-vtVgfXIs.js +0 -8
  1012. package/dist/cjs/caret-left-CxZXLRv5.js +0 -8
  1013. package/dist/cjs/caret-right-CRCgv98E.js +0 -8
  1014. package/dist/cjs/clear-button-press-controller-2hAy_qdm.js +0 -45
  1015. package/dist/cjs/ion-datetime_3.cjs.entry.js +0 -3242
  1016. package/dist/cjs/ion-divider.cjs.entry.js +0 -51
  1017. package/dist/cjs/ion-gallery-item.cjs.entry.js +0 -59
  1018. package/dist/cjs/ion-gallery.cjs.entry.js +0 -607
  1019. package/dist/cjs/ionic-global-DvEcO0tQ.js +0 -519
  1020. package/dist/cjs/list-a-7GSA6K.js +0 -8
  1021. package/dist/cjs/scroll-hide-controller-DAf_DwKc.js +0 -345
  1022. package/dist/cjs/validity-QmuwEptc.js +0 -51
  1023. package/dist/cjs/x-BTF99yFH.js +0 -8
  1024. package/dist/collection/components/accordion/accordion.ionic.css +0 -201
  1025. package/dist/collection/components/accordion-group/accordion-group.ionic.css +0 -93
  1026. package/dist/collection/components/action-sheet/action-sheet.ionic.css +0 -494
  1027. package/dist/collection/components/alert/alert.ionic.css +0 -787
  1028. package/dist/collection/components/avatar/avatar.ionic.css +0 -385
  1029. package/dist/collection/components/backdrop/backdrop.ionic.css +0 -109
  1030. package/dist/collection/components/badge/badge.ionic.css +0 -272
  1031. package/dist/collection/components/button/button.ionic.css +0 -644
  1032. package/dist/collection/components/buttons/buttons.ionic.css +0 -97
  1033. package/dist/collection/components/card/card.ionic.css +0 -144
  1034. package/dist/collection/components/card-content/card-content.ionic.css +0 -89
  1035. package/dist/collection/components/card-header/card-header.ionic.css +0 -85
  1036. package/dist/collection/components/card-subtitle/card-subtitle.ionic.css +0 -144
  1037. package/dist/collection/components/checkbox/checkbox.ionic.css +0 -543
  1038. package/dist/collection/components/chip/chip.ionic.css +0 -217
  1039. package/dist/collection/components/datetime/datetime.ionic.css +0 -703
  1040. package/dist/collection/components/divider/divider.ionic.css +0 -148
  1041. package/dist/collection/components/divider/divider.ios.css +0 -87
  1042. package/dist/collection/components/divider/divider.js +0 -94
  1043. package/dist/collection/components/divider/divider.md.css +0 -87
  1044. package/dist/collection/components/footer/footer-interface.js +0 -1
  1045. package/dist/collection/components/gallery/gallery-constants.js +0 -12
  1046. package/dist/collection/components/gallery/gallery-interface.js +0 -1
  1047. package/dist/collection/components/gallery/gallery.css +0 -15
  1048. package/dist/collection/components/gallery/gallery.js +0 -679
  1049. package/dist/collection/components/gallery/test/utils.js +0 -100
  1050. package/dist/collection/components/gallery-item/gallery-item.css +0 -49
  1051. package/dist/collection/components/gallery-item/gallery-item.js +0 -99
  1052. package/dist/collection/components/header/header-interface.js +0 -1
  1053. package/dist/collection/components/header/header.ionic.css +0 -250
  1054. package/dist/collection/components/input/input.ionic.css +0 -891
  1055. package/dist/collection/components/input-otp/input-otp.ionic.css +0 -371
  1056. package/dist/collection/components/input-password-toggle/input-password-toggle.ionic.css +0 -78
  1057. package/dist/collection/components/input-password-toggle/input-password-toggle.native.css +0 -61
  1058. package/dist/collection/components/item/item.ionic.css +0 -496
  1059. package/dist/collection/components/item-option/item-option.ionic.css +0 -277
  1060. package/dist/collection/components/item-options/item-options.ionic.css +0 -221
  1061. package/dist/collection/components/item-sliding/item-sliding.ionic.css +0 -211
  1062. package/dist/collection/components/list/list.ionic.css +0 -212
  1063. package/dist/collection/components/list-header/list-header.ionic.css +0 -190
  1064. package/dist/collection/components/menu-button/menu-button.ionic.css +0 -236
  1065. package/dist/collection/components/modal/animations/ionic.enter.js +0 -40
  1066. package/dist/collection/components/modal/animations/ionic.leave.js +0 -28
  1067. package/dist/collection/components/modal/modal.ionic.css +0 -255
  1068. package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
  1069. package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
  1070. package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
  1071. package/dist/collection/components/picker-legacy/picker.ios.css +0 -312
  1072. package/dist/collection/components/picker-legacy/picker.js +0 -891
  1073. package/dist/collection/components/picker-legacy/picker.md.css +0 -299
  1074. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -243
  1075. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
  1076. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -234
  1077. package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
  1078. package/dist/collection/components/popover/popover.ionic.css +0 -290
  1079. package/dist/collection/components/progress-bar/progress-bar.ionic.css +0 -287
  1080. package/dist/collection/components/radio/radio.ionic.css +0 -422
  1081. package/dist/collection/components/radio-group/radio-group.ionic.css +0 -119
  1082. package/dist/collection/components/range/range.ionic.css +0 -567
  1083. package/dist/collection/components/ripple-effect/ripple-effect.ionic.css +0 -215
  1084. package/dist/collection/components/searchbar/searchbar.ionic.css +0 -622
  1085. package/dist/collection/components/segment/segment.ionic.css +0 -115
  1086. package/dist/collection/components/segment-button/segment-button.ionic.css +0 -352
  1087. package/dist/collection/components/select/select.ionic.css +0 -809
  1088. package/dist/collection/components/select-modal/select-modal.ionic.css +0 -257
  1089. package/dist/collection/components/select-popover/select-popover.ionic.css +0 -255
  1090. package/dist/collection/components/spinner/spinner.native.css +0 -199
  1091. package/dist/collection/components/tab-bar/tab-bar.ionic.css +0 -249
  1092. package/dist/collection/components/tab-button/tab-button.ionic.css +0 -373
  1093. package/dist/collection/components/textarea/textarea.ionic.css +0 -898
  1094. package/dist/collection/components/title/title.ionic.css +0 -127
  1095. package/dist/collection/components/toast/toast.ionic.css +0 -394
  1096. package/dist/collection/components/toggle/toggle.ionic.css +0 -512
  1097. package/dist/collection/components/toolbar/test/image.svg +0 -1
  1098. package/dist/collection/components/toolbar/toolbar.ionic.css +0 -249
  1099. package/dist/collection/utils/css-value-validation.js +0 -39
  1100. package/dist/collection/utils/forms/clear-button-press-controller.js +0 -40
  1101. package/dist/collection/utils/scroll-hide-controller.js +0 -178
  1102. package/dist/esm/caret-down-D1t981Ih.js +0 -6
  1103. package/dist/esm/caret-left-fIOYmaqA.js +0 -6
  1104. package/dist/esm/caret-right-BYSs-jZz.js +0 -6
  1105. package/dist/esm/clear-button-press-controller-C79TPm5p.js +0 -43
  1106. package/dist/esm/ion-datetime_3.entry.js +0 -3238
  1107. package/dist/esm/ion-divider.entry.js +0 -49
  1108. package/dist/esm/ion-gallery-item.entry.js +0 -57
  1109. package/dist/esm/ion-gallery.entry.js +0 -605
  1110. package/dist/esm/ionic-global-CEwbmRLz.js +0 -508
  1111. package/dist/esm/list-Dhi5xtNS.js +0 -6
  1112. package/dist/esm/scroll-hide-controller-CfbtPBWv.js +0 -342
  1113. package/dist/esm/theme-DaJxRxSQ.js +0 -67
  1114. package/dist/esm/validity-BjW8SOqw.js +0 -48
  1115. package/dist/esm/x-BDqjX7Z_.js +0 -6
  1116. package/dist/ionic/p--sroV-k-.js +0 -4
  1117. package/dist/ionic/p-00731d20.entry.js +0 -4
  1118. package/dist/ionic/p-03c20a50.entry.js +0 -4
  1119. package/dist/ionic/p-03ec6673.entry.js +0 -4
  1120. package/dist/ionic/p-0405ec57.entry.js +0 -4
  1121. package/dist/ionic/p-04f16322.entry.js +0 -4
  1122. package/dist/ionic/p-09123f89.entry.js +0 -4
  1123. package/dist/ionic/p-15028853.entry.js +0 -4
  1124. package/dist/ionic/p-16c5db90.entry.js +0 -4
  1125. package/dist/ionic/p-1d1dfb68.entry.js +0 -4
  1126. package/dist/ionic/p-231572a0.entry.js +0 -4
  1127. package/dist/ionic/p-2740db6e.entry.js +0 -4
  1128. package/dist/ionic/p-2a6d4601.entry.js +0 -4
  1129. package/dist/ionic/p-2d8fe33c.entry.js +0 -4
  1130. package/dist/ionic/p-2dbc50d9.entry.js +0 -4
  1131. package/dist/ionic/p-32d3095c.entry.js +0 -4
  1132. package/dist/ionic/p-356cd619.entry.js +0 -4
  1133. package/dist/ionic/p-391bdb60.entry.js +0 -4
  1134. package/dist/ionic/p-3b2ab5b4.entry.js +0 -4
  1135. package/dist/ionic/p-4e3e750a.entry.js +0 -4
  1136. package/dist/ionic/p-4fee0df6.entry.js +0 -4
  1137. package/dist/ionic/p-547d010c.entry.js +0 -4
  1138. package/dist/ionic/p-54895118.entry.js +0 -4
  1139. package/dist/ionic/p-6163d04d.entry.js +0 -4
  1140. package/dist/ionic/p-679c1448.entry.js +0 -4
  1141. package/dist/ionic/p-6de524e5.entry.js +0 -4
  1142. package/dist/ionic/p-764d7ea2.entry.js +0 -4
  1143. package/dist/ionic/p-7k7Q1A38.js +0 -4
  1144. package/dist/ionic/p-81BMEE8Q.js +0 -4
  1145. package/dist/ionic/p-8d6d7acb.entry.js +0 -4
  1146. package/dist/ionic/p-96732fe2.entry.js +0 -4
  1147. package/dist/ionic/p-96c4c1b9.entry.js +0 -4
  1148. package/dist/ionic/p-9745f518.entry.js +0 -4
  1149. package/dist/ionic/p-9a40af3c.entry.js +0 -4
  1150. package/dist/ionic/p-9e725104.entry.js +0 -4
  1151. package/dist/ionic/p-B4Kq2YNk.js +0 -4
  1152. package/dist/ionic/p-BDqjX7Z_.js +0 -4
  1153. package/dist/ionic/p-BTEOs1at.js +0 -4
  1154. package/dist/ionic/p-BYSs-jZz.js +0 -4
  1155. package/dist/ionic/p-BbWo-T8F.js +0 -4
  1156. package/dist/ionic/p-BjW8SOqw.js +0 -4
  1157. package/dist/ionic/p-Bvz8PHo5.js +0 -4
  1158. package/dist/ionic/p-BwKpO3Is.js +0 -4
  1159. package/dist/ionic/p-C0EQceqV.js +0 -5
  1160. package/dist/ionic/p-C1_a9uRb.js +0 -4
  1161. package/dist/ionic/p-C53feagD.js +0 -4
  1162. package/dist/ionic/p-C6WD6qSF.js +0 -4
  1163. package/dist/ionic/p-C7urd_wE.js +0 -4
  1164. package/dist/ionic/p-CCgRIJJv.js +0 -4
  1165. package/dist/ionic/p-CEkwLb3L.js +0 -4
  1166. package/dist/ionic/p-CGFf6My7.js +0 -4
  1167. package/dist/ionic/p-CLUwRxij.js +0 -4
  1168. package/dist/ionic/p-CODBQrPj.js +0 -4
  1169. package/dist/ionic/p-CP_sVwEm.js +0 -4
  1170. package/dist/ionic/p-CSMWpRc0.js +0 -4
  1171. package/dist/ionic/p-CYYo93al.js +0 -4
  1172. package/dist/ionic/p-Cipl19Qe.js +0 -4
  1173. package/dist/ionic/p-Cl0B-RWe.js +0 -4
  1174. package/dist/ionic/p-Cvvva6Z7.js +0 -4
  1175. package/dist/ionic/p-D1t981Ih.js +0 -4
  1176. package/dist/ionic/p-DINFwXlp.js +0 -4
  1177. package/dist/ionic/p-DIvCXVmD.js +0 -4
  1178. package/dist/ionic/p-DTsDGZPd.js +0 -4
  1179. package/dist/ionic/p-DaJxRxSQ.js +0 -4
  1180. package/dist/ionic/p-Dhi5xtNS.js +0 -4
  1181. package/dist/ionic/p-DtQgCTtW.js +0 -4
  1182. package/dist/ionic/p-DuRx6DeQ.js +0 -4
  1183. package/dist/ionic/p-YGLqXqFd.js +0 -4
  1184. package/dist/ionic/p-YIsE5bNG.js +0 -4
  1185. package/dist/ionic/p-a61c2ace.entry.js +0 -4
  1186. package/dist/ionic/p-abb516e3.entry.js +0 -4
  1187. package/dist/ionic/p-b54edee6.entry.js +0 -4
  1188. package/dist/ionic/p-c076ac5c.entry.js +0 -4
  1189. package/dist/ionic/p-c4ff25cb.entry.js +0 -4
  1190. package/dist/ionic/p-c7279756.entry.js +0 -4
  1191. package/dist/ionic/p-c7ebed50.entry.js +0 -4
  1192. package/dist/ionic/p-cd0037e4.entry.js +0 -4
  1193. package/dist/ionic/p-d261938d.entry.js +0 -4
  1194. package/dist/ionic/p-d33dfc12.entry.js +0 -4
  1195. package/dist/ionic/p-d7764330.entry.js +0 -4
  1196. package/dist/ionic/p-defb23a2.entry.js +0 -4
  1197. package/dist/ionic/p-df642ef5.entry.js +0 -4
  1198. package/dist/ionic/p-e2a35249.entry.js +0 -4
  1199. package/dist/ionic/p-e2b952ef.entry.js +0 -4
  1200. package/dist/ionic/p-e77cfd1e.entry.js +0 -4
  1201. package/dist/ionic/p-ecb9d3d3.entry.js +0 -4
  1202. package/dist/ionic/p-efd13adf.entry.js +0 -4
  1203. package/dist/ionic/p-f0904c1d.entry.js +0 -4
  1204. package/dist/ionic/p-f33689f7.entry.js +0 -4
  1205. package/dist/ionic/p-f693efe9.entry.js +0 -4
  1206. package/dist/ionic/p-f788396b.entry.js +0 -4
  1207. package/dist/ionic/p-fIOYmaqA.js +0 -4
  1208. package/dist/ionic/p-fa16fad8.entry.js +0 -4
  1209. package/dist/ionic/p-lMb_45ax.js +0 -4
  1210. package/dist/ionic/p-oadJNPuo.js +0 -4
  1211. package/dist/ionic/p-vXpMhGrs.js +0 -4
  1212. package/dist/ionic/p-wNjWCZVO.js +0 -4
  1213. package/dist/types/components/divider/divider.d.ts +0 -20
  1214. package/dist/types/components/footer/footer-interface.d.ts +0 -1
  1215. package/dist/types/components/gallery/gallery-constants.d.ts +0 -9
  1216. package/dist/types/components/gallery/gallery-interface.d.ts +0 -10
  1217. package/dist/types/components/gallery/gallery.d.ts +0 -218
  1218. package/dist/types/components/gallery/test/utils.d.ts +0 -3
  1219. package/dist/types/components/gallery-item/gallery-item.d.ts +0 -33
  1220. package/dist/types/components/header/header-interface.d.ts +0 -1
  1221. package/dist/types/components/modal/animations/ionic.enter.d.ts +0 -6
  1222. package/dist/types/components/modal/animations/ionic.leave.d.ts +0 -6
  1223. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
  1224. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
  1225. package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
  1226. package/dist/types/components/picker-legacy/picker.d.ts +0 -159
  1227. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  1228. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
  1229. package/dist/types/utils/css-value-validation.d.ts +0 -21
  1230. package/dist/types/utils/forms/clear-button-press-controller.d.ts +0 -20
  1231. package/dist/types/utils/scroll-hide-controller.d.ts +0 -56
  1232. /package/dist/collection/components/{refresher-content/refresher-content.css → input-password-toggle/input-password-toggle.css} +0 -0
@@ -1,11 +1,10 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import caretDownRegular from "@phosphor-icons/core/assets/regular/caret-down.svg";
5
4
  import { Build, Host, h, forceUpdate } from "@stencil/core";
6
5
  import { ENABLE_HTML_CONTENT_DEFAULT } from "../../utils/config";
7
6
  import { compareOptions, createNotchController, isOptionSelected, checkInvalidState } from "../../utils/forms/index";
8
- import { suppressFocusVisible, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
7
+ import { focusVisibleElement, renderHiddenInput, inheritAttributes } from "../../utils/helpers";
9
8
  import { printIonWarning } from "../../utils/logging/index";
10
9
  import { actionSheetController, alertController, popoverController, modalController } from "../../utils/overlays";
11
10
  import { isRTL } from "../../utils/rtl/index";
@@ -14,11 +13,10 @@ import { createColorClasses, hostContext } from "../../utils/theme";
14
13
  import { watchForOptions } from "../../utils/watch-options";
15
14
  import { caretDownSharp, chevronExpand } from "ionicons/icons";
16
15
  import { config } from "../../global/config";
17
- import { getIonTheme } from "../../global/ionic-global";
16
+ import { getIonMode } from "../../global/ionic-global";
18
17
  // TODO(FW-2832): types
19
18
  /**
20
- * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
21
- * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
19
+ * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
22
20
  *
23
21
  * @slot label - The label text to associate with the select. Use the `labelPlacement` property to control where the label is placed relative to the select. Use this if you need to render a label with custom HTML.
24
22
  * @slot start - Content to display at the leading edge of the select.
@@ -37,148 +35,225 @@ import { getIonTheme } from "../../global/ionic-global";
37
35
  * @part inner - The inner element of the wrapper that manages the slots, selected values or placeholder, and toggle icons.
38
36
  */
39
37
  export class Select {
40
- constructor() {
41
- this.inputId = `ion-sel-${selectIds++}`;
42
- this.helperTextId = `${this.inputId}-helper-text`;
43
- this.errorTextId = `${this.inputId}-error-text`;
44
- this.inheritedAttributes = {};
45
- this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
46
- this.isExpanded = false;
47
- /**
48
- * The `hasFocus` state ensures the focus class is
49
- * added regardless of how the element is focused.
50
- * The `ion-focused` class only applies when focused
51
- * via tabbing, not by clicking.
52
- * The `has-focus` logic was added to ensure the class
53
- * is applied in both cases.
54
- */
55
- this.hasFocus = false;
56
- /**
57
- * Track validation state for proper aria-live announcements.
58
- */
59
- this.isInvalid = false;
60
- /**
61
- * The text to display on the cancel button.
62
- */
63
- this.cancelText = 'Cancel';
64
- /**
65
- * If `true`, the cancel button will display an icon instead of the `cancelText`.
66
- * Only applies when `interface` is set to `"modal"`. Has no effect on `"action-sheet"`,
67
- * `"alert"`, or `"popover"` interfaces.
68
- * When `cancelIcon` is `true`, the `cancelText` property is ignored for display
69
- * but is used as the accessible label for the icon button.
70
- */
71
- this.cancelIcon = false;
72
- /**
73
- * If `true`, the user cannot interact with the select.
74
- */
75
- this.disabled = false;
76
- /**
77
- * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`.
78
- */
79
- this.interface = 'alert';
80
- /**
81
- * Any additional options that the `alert`, `action-sheet` or `popover` interface
82
- * can take. See the [ion-alert docs](./alert), the
83
- * [ion-action-sheet docs](./action-sheet), the
84
- * [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the
85
- * create options for each interface.
86
- *
87
- * Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface.
88
- */
89
- this.interfaceOptions = {};
90
- /**
91
- * Where to place the label relative to the select.
92
- * `"start"`: The label will appear to the left of the select in LTR and to the right in RTL.
93
- * `"end"`: The label will appear to the right of the select in LTR and to the left in RTL.
94
- * `"floating"`: The label will appear smaller and above the select when the select is focused or it has a value. Otherwise it will appear on top of the select.
95
- * `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value.
96
- * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
97
- * When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`.
98
- */
99
- this.labelPlacement = 'start';
100
- /**
101
- * If `true`, the select can accept multiple values.
102
- */
103
- this.multiple = false;
104
- /**
105
- * The name of the control, which is submitted with the form data.
106
- */
107
- this.name = this.inputId;
108
- /**
109
- * The text to display on the ok button.
110
- */
111
- this.okText = 'OK';
112
- /**
113
- * If true, screen readers will announce it as a required field. This property
114
- * works only for accessibility purposes, it will not prevent the form from
115
- * submitting if the value is invalid.
116
- */
117
- this.required = false;
118
- this.onClick = (ev) => {
119
- const target = ev.target;
120
- const closestSlot = target.closest('[slot="start"], [slot="end"]');
121
- if (target === this.el || closestSlot === null) {
122
- this.setFocus();
123
- this.open(ev);
124
- }
125
- else {
126
- /**
127
- * Prevent clicks to the start/end slots from opening the select.
128
- * We ensure the target isn't this element in case the select is slotted
129
- * in, for example, an item. This would prevent the select from ever
130
- * being opened since the element itself has slot="start"/"end".
131
- *
132
- * Clicking a slotted element also causes a click
133
- * on the <label> element (since it wraps the slots).
134
- * Clicking <label> dispatches another click event on
135
- * the native form control that then bubbles up to this
136
- * listener. This additional event targets the host
137
- * element, so the select overlay is opened.
138
- *
139
- * When the slotted elements are clicked (and therefore
140
- * the ancestor <label> element) we want to prevent the label
141
- * from dispatching another click event.
142
- *
143
- * Do not call stopPropagation() because this will cause
144
- * click handlers on the slotted elements to never fire in React.
145
- * When developers do onClick in React a native "click" listener
146
- * is added on the root element, not the slotted element. When that
147
- * native click listener fires, React then dispatches the synthetic
148
- * click event on the slotted element. However, if stopPropagation
149
- * is called then the native click event will never bubble up
150
- * to the root element.
151
- */
152
- ev.preventDefault();
153
- }
154
- };
155
- this.onFocus = () => {
156
- this.hasFocus = true;
157
- this.ionFocus.emit();
158
- };
159
- this.onBlur = () => {
160
- this.hasFocus = false;
161
- this.ionBlur.emit();
162
- };
163
- /**
164
- * Stops propagation when the label is clicked,
165
- * otherwise, two clicks will be triggered.
166
- */
167
- this.onLabelClick = (ev) => {
168
- // Only stop propagation if the click was directly on the label
169
- // and not on the input or other child elements
170
- if (ev.target === ev.currentTarget) {
171
- ev.stopPropagation();
172
- }
173
- };
174
- }
38
+ inputId = `ion-sel-${selectIds++}`;
39
+ helperTextId = `${this.inputId}-helper-text`;
40
+ errorTextId = `${this.inputId}-error-text`;
41
+ overlay;
42
+ focusEl;
43
+ mutationO;
44
+ inheritedAttributes = {};
45
+ nativeWrapperEl;
46
+ notchSpacerEl;
47
+ validationObserver;
48
+ notchController;
49
+ customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
50
+ el;
51
+ isExpanded = false;
52
+ /**
53
+ * The `hasFocus` state ensures the focus class is
54
+ * added regardless of how the element is focused.
55
+ * The `ion-focused` class only applies when focused
56
+ * via tabbing, not by clicking.
57
+ * The `has-focus` logic was added to ensure the class
58
+ * is applied in both cases.
59
+ */
60
+ hasFocus = false;
61
+ /**
62
+ * Track validation state for proper aria-live announcements.
63
+ */
64
+ isInvalid = false;
65
+ hintTextId;
66
+ /**
67
+ * The text to display on the cancel button.
68
+ */
69
+ cancelText = 'Cancel';
70
+ /**
71
+ * The color to use from your application's color palette.
72
+ * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
73
+ * For more information on colors, see [theming](/docs/theming/basics).
74
+ *
75
+ * This property is only available when using the modern select syntax.
76
+ */
77
+ color;
78
+ /**
79
+ * This property allows developers to specify a custom function or property
80
+ * name for comparing objects when determining the selected option in the
81
+ * ion-select. When not specified, the default behavior will use strict
82
+ * equality (===) for comparison.
83
+ */
84
+ compareWith;
85
+ /**
86
+ * If `true`, the user cannot interact with the select.
87
+ */
88
+ disabled = false;
89
+ /**
90
+ * The fill for the item. If `"solid"` the item will have a background. If
91
+ * `"outline"` the item will be transparent with a border. Only available in `md` mode.
92
+ */
93
+ fill;
94
+ /**
95
+ * Text that is placed under the select and displayed when an error is detected.
96
+ */
97
+ errorText;
98
+ /**
99
+ * Text that is placed under the select and displayed when no error is detected.
100
+ */
101
+ helperText;
102
+ /**
103
+ * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`.
104
+ */
105
+ interface = 'alert';
106
+ /**
107
+ * Any additional options that the `alert`, `action-sheet` or `popover` interface
108
+ * can take. See the [ion-alert docs](./alert), the
109
+ * [ion-action-sheet docs](./action-sheet), the
110
+ * [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the
111
+ * create options for each interface.
112
+ *
113
+ * Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface.
114
+ */
115
+ interfaceOptions = {};
116
+ /**
117
+ * How to pack the label and select within a line.
118
+ * `justify` does not apply when the label and select
119
+ * are on different lines when `labelPlacement` is set to
120
+ * `"floating"` or `"stacked"`.
121
+ * `"start"`: The label and select will appear on the left in LTR and
122
+ * on the right in RTL.
123
+ * `"end"`: The label and select will appear on the right in LTR and
124
+ * on the left in RTL.
125
+ * `"space-between"`: The label and select will appear on opposite
126
+ * ends of the line with space between the two elements.
127
+ */
128
+ justify;
129
+ /**
130
+ * The visible label associated with the select.
131
+ *
132
+ * Use this if you need to render a plaintext label.
133
+ *
134
+ * The `label` property will take priority over the `label` slot if both are used.
135
+ */
136
+ label;
137
+ /**
138
+ * Where to place the label relative to the select.
139
+ * `"start"`: The label will appear to the left of the select in LTR and to the right in RTL.
140
+ * `"end"`: The label will appear to the right of the select in LTR and to the left in RTL.
141
+ * `"floating"`: The label will appear smaller and above the select when the select is focused or it has a value. Otherwise it will appear on top of the select.
142
+ * `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value.
143
+ * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
144
+ * When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`.
145
+ */
146
+ labelPlacement = 'start';
147
+ /**
148
+ * If `true`, the select can accept multiple values.
149
+ */
150
+ multiple = false;
151
+ /**
152
+ * The name of the control, which is submitted with the form data.
153
+ */
154
+ name = this.inputId;
155
+ /**
156
+ * The text to display on the ok button.
157
+ */
158
+ okText = 'OK';
159
+ /**
160
+ * The text to display when the select is empty.
161
+ */
162
+ placeholder;
163
+ /**
164
+ * The text to display instead of the selected option's value.
165
+ */
166
+ selectedText;
167
+ /**
168
+ * The toggle icon to use. Defaults to `chevronExpand` for `ios` mode,
169
+ * or `caretDownSharp` for `md` mode.
170
+ */
171
+ toggleIcon;
172
+ /**
173
+ * The toggle icon to show when the select is open. If defined, the icon
174
+ * rotation behavior in `md` mode will be disabled. If undefined, `toggleIcon`
175
+ * will be used for when the select is both open and closed.
176
+ */
177
+ expandedIcon;
178
+ /**
179
+ * The shape of the select. If "round" it will have an increased border radius.
180
+ */
181
+ shape;
182
+ /**
183
+ * The value of the select.
184
+ */
185
+ value;
186
+ /**
187
+ * If true, screen readers will announce it as a required field. This property
188
+ * works only for accessibility purposes, it will not prevent the form from
189
+ * submitting if the value is invalid.
190
+ */
191
+ required = false;
192
+ /**
193
+ * Emitted when the value has changed.
194
+ *
195
+ * This event will not emit when programmatically setting the `value` property.
196
+ */
197
+ ionChange;
198
+ /**
199
+ * Emitted when the selection is cancelled.
200
+ */
201
+ ionCancel;
202
+ /**
203
+ * Emitted when the overlay is dismissed.
204
+ */
205
+ ionDismiss;
206
+ /**
207
+ * Emitted when the select has focus.
208
+ */
209
+ ionFocus;
210
+ /**
211
+ * Emitted when the select loses focus.
212
+ */
213
+ ionBlur;
214
+ /**
215
+ * Emitted when the styles change.
216
+ * @internal
217
+ */
218
+ ionStyle;
175
219
  styleChanged() {
176
220
  this.emitStyle();
177
221
  }
178
222
  setValue(value) {
223
+ if (this.isValueEqual(this.value, value)) {
224
+ return;
225
+ }
179
226
  this.value = value;
180
227
  this.ionChange.emit({ value });
181
228
  }
229
+ isValueEqual(currentValue, newValue) {
230
+ if (this.multiple) {
231
+ const currentArr = Array.isArray(currentValue) ? currentValue : [];
232
+ const newArr = Array.isArray(newValue) ? newValue : [];
233
+ if (currentArr.length !== newArr.length) {
234
+ return false;
235
+ }
236
+ // Multiset compare: each new value must match a distinct current value.
237
+ // A plain `every(isOptionSelected)` would accept ['a','a'] as equal to
238
+ // ['a','b'] when both 'a' and 'b' map to options whose values overlap.
239
+ const remaining = currentArr.slice();
240
+ return newArr.every((val) => {
241
+ const idx = remaining.findIndex((c) => compareOptions(c, val, this.compareWith));
242
+ if (idx === -1) {
243
+ return false;
244
+ }
245
+ remaining.splice(idx, 1);
246
+ return true;
247
+ });
248
+ }
249
+ if (currentValue == null && newValue == null) {
250
+ return true;
251
+ }
252
+ if (currentValue == null || newValue == null) {
253
+ return false;
254
+ }
255
+ return compareOptions(currentValue, newValue, this.compareWith);
256
+ }
182
257
  async connectedCallback() {
183
258
  const { el } = this;
184
259
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
@@ -278,65 +353,44 @@ export class Select {
278
353
  // Add logic to scroll selected item into view before presenting
279
354
  const scrollSelectedIntoView = () => {
280
355
  const indexOfSelected = this.childOpts.findIndex((o) => o.value === this.value);
281
- /**
282
- * Determine which option to focus when the overlay opens: the selected
283
- * option if the select has a value, otherwise the first enabled option.
284
- */
285
- let optionToFocus = null;
286
356
  if (indexOfSelected > -1) {
287
357
  const selectedItem = overlay.querySelector(`.select-interface-option:nth-of-type(${indexOfSelected + 1})`);
288
- /**
289
- * If the option contains an `ion-radio` or `ion-checkbox`, focus
290
- * that instead of the option element itself. This ensures that
291
- * screen readers will announce the role and state of the element
292
- * (e.g. "radio button, checked") rather than only the option text.
293
- * Alert and action sheet options are plain buttons, so fall back to
294
- * focusing the option element itself in those cases.
295
- */
296
358
  if (selectedItem) {
359
+ /**
360
+ * Browsers such as Firefox do not
361
+ * correctly delegate focus when manually
362
+ * focusing an element with delegatesFocus.
363
+ * We work around this by manually focusing
364
+ * the interactive element.
365
+ * ion-radio and ion-checkbox are the only
366
+ * elements that ion-select-popover uses, so
367
+ * we only need to worry about those two components
368
+ * when focusing.
369
+ */
297
370
  const interactiveEl = selectedItem.querySelector('ion-radio, ion-checkbox');
298
371
  if (interactiveEl) {
299
372
  selectedItem.scrollIntoView({ block: 'nearest' });
373
+ // Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
374
+ // and removing `ion-focused` style
375
+ interactiveEl.setFocus();
300
376
  }
301
- optionToFocus = interactiveEl !== null && interactiveEl !== void 0 ? interactiveEl : selectedItem;
377
+ focusVisibleElement(selectedItem);
302
378
  }
303
379
  }
304
380
  else {
305
381
  /**
306
382
  * If no value is set then focus the first enabled option.
307
383
  */
308
- optionToFocus = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
309
- }
310
- if (optionToFocus) {
311
- /**
312
- * Focus the option directly (`setFocus()`/`focus()`) rather than
313
- * with `focusVisibleElement()`. `focusVisibleElement()` forces the
314
- * `ion-focused` focus ring on regardless of how the overlay was
315
- * opened, whereas a plain focus lets the focus-visible utility
316
- * decide: it shows the ring only when the overlay was opened with
317
- * the keyboard and hides it for pointer opens.
318
- *
319
- * `ion-radio` and `ion-checkbox` expose `setFocus`, which correctly
320
- * delegates focus to their inner focusable element. This is needed
321
- * because browsers such as Firefox do not delegate focus correctly
322
- * when focusing an element with delegatesFocus. When the option is
323
- * a plain button it can be focused directly.
324
- */
325
- if (optionToFocus.matches('ion-radio, ion-checkbox')) {
326
- optionToFocus.setFocus();
327
- }
328
- else {
329
- optionToFocus.focus();
330
- }
331
- /**
332
- * In the alert interface, when tabbing and pressing enter to open
333
- * the select, the value that is currently selected flashes the
334
- * focused state briefly before moving to its wrapper. This suppresses
335
- * the focus visible state, so that the option will only show as
336
- * focused when navigating with the keyboard.
337
- */
338
- if (this.interface === 'alert') {
339
- suppressFocusVisible();
384
+ const firstEnabledOption = overlay.querySelector('ion-radio:not(.radio-disabled), ion-checkbox:not(.checkbox-disabled)');
385
+ if (firstEnabledOption) {
386
+ /**
387
+ * Focus the option for the same reason as we do above.
388
+ *
389
+ * Needs to be called before `focusVisibleElement` to prevent issue with focus event bubbling
390
+ * and removing `ion-focused` style
391
+ */
392
+ firstEnabledOption.setFocus();
393
+ focusVisibleElement(firstEnabledOption.closest('ion-item'));
340
394
  }
341
395
  }
342
396
  };
@@ -436,8 +490,7 @@ export class Select {
436
490
  const isSelected = isOptionSelected(selectValue, value, this.compareWith);
437
491
  const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
438
492
  return {
439
- role: isSelected ? 'selected' : '',
440
- text: content !== null && content !== void 0 ? content : '',
493
+ text: content ?? '',
441
494
  cssClass: optClass,
442
495
  disabled: option.disabled,
443
496
  handler: () => {
@@ -474,7 +527,7 @@ export class Select {
474
527
  return {
475
528
  type: inputType,
476
529
  cssClass: optClass,
477
- label: content !== null && content !== void 0 ? content : '',
530
+ label: content ?? '',
478
531
  value,
479
532
  checked: isOptionSelected(selectValue, value, this.compareWith),
480
533
  disabled: option.disabled,
@@ -497,7 +550,7 @@ export class Select {
497
550
  const optClass = `${OPTION_CLASS} ${copyClasses}`;
498
551
  const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
499
552
  return {
500
- text: content !== null && content !== void 0 ? content : '',
553
+ text: content ?? '',
501
554
  cssClass: optClass,
502
555
  value,
503
556
  checked: isOptionSelected(selectValue, value, this.compareWith),
@@ -520,8 +573,8 @@ export class Select {
520
573
  async openPopover(ev) {
521
574
  const { fill, labelPlacement } = this;
522
575
  const interfaceOptions = this.interfaceOptions;
523
- const theme = getIonTheme(this);
524
- const showBackdrop = theme === 'md' ? false : true;
576
+ const mode = getIonMode(this);
577
+ const showBackdrop = mode === 'md' ? false : true;
525
578
  const multiple = this.multiple;
526
579
  const value = this.value;
527
580
  let event = ev;
@@ -532,7 +585,7 @@ export class Select {
532
585
  * when using a fill in MD mode or if the
533
586
  * label is floating/stacked.
534
587
  */
535
- if (hasFloatingOrStackedLabel || (theme === 'md' && fill !== undefined)) {
588
+ if (hasFloatingOrStackedLabel || (mode === 'md' && fill !== undefined)) {
536
589
  size = 'cover';
537
590
  /**
538
591
  * Otherwise the popover
@@ -541,34 +594,43 @@ export class Select {
541
594
  */
542
595
  }
543
596
  else {
544
- event = Object.assign(Object.assign({}, ev), { detail: {
597
+ event = {
598
+ ...ev,
599
+ detail: {
545
600
  ionShadowTarget: this.nativeWrapperEl,
546
- } });
601
+ },
602
+ };
547
603
  }
548
604
  const options = this.createOverlaySelectOptions(this.childOpts, value);
549
- const hasRichContent = options.some((opt) => opt.startContent || opt.endContent || opt.description);
550
- const popoverOpts = Object.assign(Object.assign({ theme,
551
- event, alignment: 'center', size,
552
- showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
605
+ const hasRichContent = options.some((opt) => Boolean(opt.startContent) || Boolean(opt.endContent) || Boolean(opt.description));
606
+ const popoverOpts = {
607
+ mode,
608
+ event,
609
+ alignment: 'center',
610
+ size,
611
+ showBackdrop,
612
+ ...interfaceOptions,
613
+ component: 'ion-select-popover',
614
+ cssClass: [
553
615
  'select-popover',
554
616
  hasRichContent ? 'select-popover-rich-content' : undefined,
555
617
  interfaceOptions.cssClass,
556
- ], componentProps: {
618
+ ],
619
+ componentProps: {
557
620
  header: interfaceOptions.header,
558
621
  subHeader: interfaceOptions.subHeader,
559
622
  message: interfaceOptions.message,
560
623
  multiple,
561
624
  value,
562
625
  options,
563
- } });
626
+ },
627
+ };
564
628
  /**
565
629
  * Workaround for Stencil to autodefine
566
630
  * ion-select-popover and ion-popover when
567
631
  * using Custom Elements build.
568
632
  */
569
- // eslint-disable-next-line
570
633
  if (false) {
571
- // eslint-disable-next-line
572
634
  // @ts-ignore
573
635
  document.createElement('ion-select-popover');
574
636
  document.createElement('ion-popover');
@@ -576,17 +638,20 @@ export class Select {
576
638
  return popoverController.create(popoverOpts);
577
639
  }
578
640
  async openActionSheet() {
579
- const theme = getIonTheme(this);
641
+ const mode = getIonMode(this);
580
642
  const interfaceOptions = this.interfaceOptions;
581
- const actionSheetOpts = Object.assign(Object.assign({ theme }, interfaceOptions), { buttons: this.createActionSheetButtons(this.childOpts, this.value), cssClass: ['select-action-sheet', interfaceOptions.cssClass] });
643
+ const actionSheetOpts = {
644
+ mode,
645
+ ...interfaceOptions,
646
+ buttons: this.createActionSheetButtons(this.childOpts, this.value),
647
+ cssClass: ['select-action-sheet', interfaceOptions.cssClass],
648
+ };
582
649
  /**
583
650
  * Workaround for Stencil to autodefine
584
651
  * ion-action-sheet when
585
652
  * using Custom Elements build.
586
653
  */
587
- // eslint-disable-next-line
588
654
  if (false) {
589
- // eslint-disable-next-line
590
655
  // @ts-ignore
591
656
  document.createElement('ion-action-sheet');
592
657
  }
@@ -595,8 +660,13 @@ export class Select {
595
660
  async openAlert() {
596
661
  const interfaceOptions = this.interfaceOptions;
597
662
  const inputType = this.multiple ? 'checkbox' : 'radio';
598
- const theme = getIonTheme(this);
599
- const alertOpts = Object.assign(Object.assign({ theme }, interfaceOptions), { header: interfaceOptions.header ? interfaceOptions.header : this.labelText, inputs: this.createAlertInputs(this.childOpts, inputType, this.value), buttons: [
663
+ const mode = getIonMode(this);
664
+ const alertOpts = {
665
+ mode,
666
+ ...interfaceOptions,
667
+ header: interfaceOptions.header ? interfaceOptions.header : this.labelText,
668
+ inputs: this.createAlertInputs(this.childOpts, inputType, this.value),
669
+ buttons: [
600
670
  {
601
671
  text: this.cancelText,
602
672
  role: 'cancel',
@@ -610,19 +680,19 @@ export class Select {
610
680
  this.setValue(selectedValues);
611
681
  },
612
682
  },
613
- ], cssClass: [
683
+ ],
684
+ cssClass: [
614
685
  'select-alert',
615
686
  interfaceOptions.cssClass,
616
687
  this.multiple ? 'multiple-select-alert' : 'single-select-alert',
617
- ] });
688
+ ],
689
+ };
618
690
  /**
619
691
  * Workaround for Stencil to autodefine
620
692
  * ion-alert when
621
693
  * using Custom Elements build.
622
694
  */
623
- // eslint-disable-next-line
624
695
  if (false) {
625
- // eslint-disable-next-line
626
696
  // @ts-ignore
627
697
  document.createElement('ion-alert');
628
698
  }
@@ -630,23 +700,26 @@ export class Select {
630
700
  }
631
701
  openModal() {
632
702
  const { multiple, value, interfaceOptions } = this;
633
- const theme = getIonTheme(this);
634
- const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode: theme, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
703
+ const mode = getIonMode(this);
704
+ const modalOpts = {
705
+ ...interfaceOptions,
706
+ mode,
707
+ cssClass: ['select-modal', interfaceOptions.cssClass],
708
+ component: 'ion-select-modal',
709
+ componentProps: {
635
710
  header: interfaceOptions.header,
636
711
  cancelText: this.cancelText,
637
- cancelIcon: this.cancelIcon,
638
712
  multiple,
639
713
  value,
640
714
  options: this.createOverlaySelectOptions(this.childOpts, value),
641
- } });
715
+ },
716
+ };
642
717
  /**
643
718
  * Workaround for Stencil to autodefine
644
719
  * ion-select-modal and ion-modal when
645
720
  * using Custom Elements build.
646
721
  */
647
- // eslint-disable-next-line
648
722
  if (false) {
649
- // eslint-disable-next-line
650
723
  // @ts-ignore
651
724
  document.createElement('ion-select-modal');
652
725
  document.createElement('ion-modal');
@@ -712,18 +785,51 @@ export class Select {
712
785
  };
713
786
  this.ionStyle.emit(style);
714
787
  }
715
- getSize() {
716
- const theme = getIonTheme(this);
717
- const { size } = this;
718
- // TODO(ROU-11370): Remove theme check when sizes are defined for all themes.
719
- if (theme !== 'ionic') {
720
- return undefined;
788
+ onClick = (ev) => {
789
+ const target = ev.target;
790
+ const closestSlot = target.closest('[slot="start"], [slot="end"]');
791
+ if (target === this.el || closestSlot === null) {
792
+ this.setFocus();
793
+ this.open(ev);
721
794
  }
722
- if (size === undefined) {
723
- return 'medium';
795
+ else {
796
+ /**
797
+ * Prevent clicks to the start/end slots from opening the select.
798
+ * We ensure the target isn't this element in case the select is slotted
799
+ * in, for example, an item. This would prevent the select from ever
800
+ * being opened since the element itself has slot="start"/"end".
801
+ *
802
+ * Clicking a slotted element also causes a click
803
+ * on the <label> element (since it wraps the slots).
804
+ * Clicking <label> dispatches another click event on
805
+ * the native form control that then bubbles up to this
806
+ * listener. This additional event targets the host
807
+ * element, so the select overlay is opened.
808
+ *
809
+ * When the slotted elements are clicked (and therefore
810
+ * the ancestor <label> element) we want to prevent the label
811
+ * from dispatching another click event.
812
+ *
813
+ * Do not call stopPropagation() because this will cause
814
+ * click handlers on the slotted elements to never fire in React.
815
+ * When developers do onClick in React a native "click" listener
816
+ * is added on the root element, not the slotted element. When that
817
+ * native click listener fires, React then dispatches the synthetic
818
+ * click event on the slotted element. However, if stopPropagation
819
+ * is called then the native click event will never bubble up
820
+ * to the root element.
821
+ */
822
+ ev.preventDefault();
724
823
  }
725
- return size;
726
- }
824
+ };
825
+ onFocus = () => {
826
+ this.hasFocus = true;
827
+ this.ionFocus.emit();
828
+ };
829
+ onBlur = () => {
830
+ this.hasFocus = false;
831
+ this.ionBlur.emit();
832
+ };
727
833
  renderLabel() {
728
834
  const { label } = this;
729
835
  return (h("div", { class: {
@@ -732,8 +838,7 @@ export class Select {
732
838
  }, part: "label" }, label === undefined ? h("slot", { name: "label" }) : h("div", { class: "label-text" }, label)));
733
839
  }
734
840
  componentDidRender() {
735
- var _a;
736
- (_a = this.notchController) === null || _a === void 0 ? void 0 : _a.calculateNotchWidth();
841
+ this.notchController?.calculateNotchWidth();
737
842
  }
738
843
  /**
739
844
  * Gets any content passed into the `label` slot,
@@ -751,13 +856,24 @@ export class Select {
751
856
  get hasLabel() {
752
857
  return this.label !== undefined || this.labelSlot !== null;
753
858
  }
859
+ /**
860
+ * Stops propagation when the label is clicked,
861
+ * otherwise, two clicks will be triggered.
862
+ */
863
+ onLabelClick = (ev) => {
864
+ // Only stop propagation if the click was directly on the label
865
+ // and not on the input or other child elements
866
+ if (ev.target === ev.currentTarget) {
867
+ ev.stopPropagation();
868
+ }
869
+ };
754
870
  /**
755
871
  * Renders the border container
756
872
  * when fill="outline".
757
873
  */
758
874
  renderLabelContainer() {
759
- const theme = getIonTheme(this);
760
- const hasOutlineFill = theme === 'md' && this.fill === 'outline';
875
+ const mode = getIonMode(this);
876
+ const hasOutlineFill = mode === 'md' && this.fill === 'outline';
761
877
  if (hasOutlineFill) {
762
878
  /**
763
879
  * The outline fill has a special outline
@@ -798,8 +914,7 @@ export class Select {
798
914
  return html;
799
915
  }
800
916
  Array.from(temp.childNodes).forEach((node) => {
801
- var _a, _b, _c, _d;
802
- if (node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
917
+ if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {
803
918
  const text = node.textContent;
804
919
  /**
805
920
  * Split comma separator from the text content
@@ -810,12 +925,12 @@ export class Select {
810
925
  const commaNode = document.createTextNode(commaMatch[1]);
811
926
  const wrapper = document.createElement('span');
812
927
  wrapper.textContent = commaMatch[2];
813
- (_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(wrapper, node);
814
- (_c = wrapper.parentNode) === null || _c === void 0 ? void 0 : _c.insertBefore(commaNode, wrapper);
928
+ node.parentNode?.replaceChild(wrapper, node);
929
+ wrapper.parentNode?.insertBefore(commaNode, wrapper);
815
930
  return;
816
931
  }
817
932
  const wrapper = document.createElement('span');
818
- (_d = node.parentNode) === null || _d === void 0 ? void 0 : _d.replaceChild(wrapper, node);
933
+ node.parentNode?.replaceChild(wrapper, node);
819
934
  wrapper.appendChild(node);
820
935
  }
821
936
  });
@@ -851,20 +966,24 @@ export class Select {
851
966
  * next to the select text.
852
967
  */
853
968
  renderSelectIcon() {
854
- const { isExpanded, selectExpandedIcon, selectCollapsedIcon } = this;
855
- let icon = selectCollapsedIcon;
856
- if (isExpanded) {
857
- icon = selectExpandedIcon;
969
+ const mode = getIonMode(this);
970
+ const { isExpanded, toggleIcon, expandedIcon } = this;
971
+ let icon;
972
+ if (isExpanded && expandedIcon !== undefined) {
973
+ icon = expandedIcon;
974
+ }
975
+ else {
976
+ const defaultIcon = mode === 'ios' ? chevronExpand : caretDownSharp;
977
+ icon = toggleIcon ?? defaultIcon;
858
978
  }
859
979
  return h("ion-icon", { class: "select-icon", part: "icon", "aria-hidden": "true", icon: icon });
860
980
  }
861
981
  get ariaLabel() {
862
- var _a;
863
982
  const { placeholder, inheritedAttributes } = this;
864
983
  // Get the plain text from the selected text
865
984
  const displayValue = this.getText();
866
985
  // The aria label should be preferred over visible text if both are specified
867
- const definedLabel = (_a = inheritedAttributes['aria-label']) !== null && _a !== void 0 ? _a : this.labelText;
986
+ const definedLabel = inheritedAttributes['aria-label'] ?? this.labelText;
868
987
  /**
869
988
  * If developer has specified a placeholder
870
989
  * and there is nothing selected, the selectText
@@ -890,63 +1009,6 @@ export class Select {
890
1009
  const { disabled, inputId, isExpanded, required } = this;
891
1010
  return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
892
1011
  }
893
- getShape() {
894
- const theme = getIonTheme(this);
895
- const { shape } = this;
896
- // TODO(ROU-11366): Remove theme check when shapes are defined for all themes.
897
- if (theme === 'ionic' && shape === undefined) {
898
- return 'round';
899
- }
900
- return shape;
901
- }
902
- /**
903
- * Get the icon to use for the expand icon.
904
- * If an icon is set on the component, use that.
905
- * Otherwise, use the icon set in the config.
906
- * If no icon is set in the config, use the default icon.
907
- */
908
- get selectExpandedIcon() {
909
- // Return the expandedIcon or toggleIcon if either is explicitly set
910
- if (this.expandedIcon != null) {
911
- return this.expandedIcon;
912
- }
913
- else if (this.toggleIcon != null) {
914
- return this.toggleIcon;
915
- }
916
- // Determine the theme and map to default icons
917
- const theme = getIonTheme(this);
918
- const defaultIcons = {
919
- ios: chevronExpand,
920
- ionic: caretDownRegular,
921
- md: caretDownSharp,
922
- };
923
- // Get the default icon based on the theme, falling back to 'md' icon if necessary
924
- const defaultIcon = defaultIcons[theme] || defaultIcons.md;
925
- // Return the configured select expanded icon or the default icon
926
- return config.get('selectExpandedIcon', defaultIcon);
927
- }
928
- /**
929
- * Get the icon to use for the collapsed icon.
930
- * If an icon is set on the component, use that.
931
- * Otherwise, use the icon set in the config.
932
- * If no icon is set in the config, use the default icon.
933
- */
934
- get selectCollapsedIcon() {
935
- // Return the toggleIcon if it is explicitly set
936
- if (this.toggleIcon) {
937
- return this.toggleIcon;
938
- }
939
- // Determine the theme and map to default icons
940
- const theme = getIonTheme(this);
941
- const defaultIcons = {
942
- ios: chevronExpand,
943
- ionic: caretDownRegular,
944
- md: caretDownSharp,
945
- };
946
- // Get the default icon based on the theme, falling back to 'md' icon if necessary
947
- const defaultIcon = defaultIcons[theme] || defaultIcons.md;
948
- return config.get('selectCollapsedIcon', defaultIcon);
949
- }
950
1012
  getHintTextId() {
951
1013
  const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
952
1014
  if (isInvalid && errorText) {
@@ -984,17 +1046,13 @@ export class Select {
984
1046
  return (h("div", { class: "select-bottom", part: "bottom" }, this.renderHintText()));
985
1047
  }
986
1048
  render() {
987
- const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, name, value, hasFocus, } = this;
988
- const theme = getIonTheme(this);
989
- const shape = this.getShape();
1049
+ const { disabled, el, isExpanded, expandedIcon, labelPlacement, justify, placeholder, fill, shape, name, value, hasFocus, } = this;
1050
+ const mode = getIonMode(this);
990
1051
  const hasFloatingOrStackedLabel = labelPlacement === 'floating' || labelPlacement === 'stacked';
991
- const shouldRenderOuterIcon = theme !== 'ionic' && hasFloatingOrStackedLabel;
992
- const shouldRenderInnerIcon = theme === 'ionic' || !hasFloatingOrStackedLabel;
993
1052
  const justifyEnabled = !hasFloatingOrStackedLabel && justify !== undefined;
994
1053
  const rtl = isRTL(el) ? 'rtl' : 'ltr';
995
1054
  const inItem = hostContext('ion-item', this.el);
996
- const size = this.getSize();
997
- const shouldRenderHighlight = theme === 'md' && fill !== 'outline' && !inItem;
1055
+ const shouldRenderHighlight = mode === 'md' && fill !== 'outline' && !inItem;
998
1056
  const hasValue = this.hasValue();
999
1057
  const hasStartEndSlots = el.querySelector('[slot="start"], [slot="end"]') !== null;
1000
1058
  renderHiddenInput(true, el, name, parseValue(value), disabled);
@@ -1017,8 +1075,8 @@ export class Select {
1017
1075
  */
1018
1076
  const labelShouldFloat = labelPlacement === 'stacked' ||
1019
1077
  (labelPlacement === 'floating' && (hasValue || hasFocus || isExpanded || hasStartEndSlots));
1020
- return (h(Host, { key: '9339cb236070c47333154d96c336dc1df9a11e1c', onClick: this.onClick, class: createColorClasses(this.color, {
1021
- [theme]: true,
1078
+ return (h(Host, { key: 'e693afee7852c89be122b785230ed8fc9be5ba61', onClick: this.onClick, class: createColorClasses(this.color, {
1079
+ [mode]: true,
1022
1080
  'in-item': inItem,
1023
1081
  'in-item-color': hostContext('ion-item.ion-color', el),
1024
1082
  'select-disabled': disabled,
@@ -1035,33 +1093,20 @@ export class Select {
1035
1093
  [`select-justify-${justify}`]: justifyEnabled,
1036
1094
  [`select-shape-${shape}`]: shape !== undefined,
1037
1095
  [`select-label-placement-${labelPlacement}`]: true,
1038
- [`select-size-${size}`]: size !== undefined,
1039
- }) }, h("label", { key: 'db8f0b67592f4b99f5e16d06ee8120852a60f4d1', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: '30313c0f3034be59605b368d15af4ba00202a5f4', class: "select-wrapper-inner", part: "inner" },
1040
- /**
1041
- * For the ionic theme, we render the outline container here
1042
- * instead of higher up, so it can be positioned relative to
1043
- * the native wrapper instead of the <label> element or the
1044
- * entire component. This allows the label text to be positioned
1045
- * above the outline, while staying within the bounds of the
1046
- * <label> element, ensuring that clicking the label text
1047
- * focuses the select.
1048
- */
1049
- theme === 'ionic' && fill === 'outline' && h("div", { key: '78bba2953ba88efd1189afa31e8229a8972175e5', class: "select-outline" }), h("slot", { key: '086505d193a19677d33e26a5a116783d999c6861', name: "start" }), h("div", { key: '5bb7863236596cad5c1118be1ae54898b638b760', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '38744ee0cc6750f84d11470c09a4e950d73f1e44', name: "end" }), shouldRenderInnerIcon && this.renderSelectIcon()), shouldRenderOuterIcon && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '4eecb0df50800d16bea58c5649e68e06b122e472', class: "select-highlight" })), this.renderBottomContent()));
1096
+ }) }, h("label", { key: 'd79647bd83cab506f01a4588f631b3982fa1c011', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: 'fa8d78b9ea041dc9e897643f22f33f38e645ce69', class: "select-wrapper-inner", part: "inner" }, h("slot", { key: '45666226a6898a538849bd3d3b89510bf689656f', name: "start" }), h("div", { key: '59f1f08109c4cda699cb2a9f2a6bce00a7fc4301', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '79b18fd4ca2af9528ff89c609ea20b3e727701e1', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '0149f4ddb4ca1d1d2e2ca91b6cbec721d5c8aa9b', class: "select-highlight" })), this.renderBottomContent()));
1050
1097
  }
1051
1098
  static get is() { return "ion-select"; }
1052
1099
  static get encapsulation() { return "shadow"; }
1053
1100
  static get originalStyleUrls() {
1054
1101
  return {
1055
1102
  "ios": ["select.ios.scss"],
1056
- "md": ["select.md.scss"],
1057
- "ionic": ["select.ionic.scss"]
1103
+ "md": ["select.md.scss"]
1058
1104
  };
1059
1105
  }
1060
1106
  static get styleUrls() {
1061
1107
  return {
1062
1108
  "ios": ["select.ios.css"],
1063
- "md": ["select.md.css"],
1064
- "ionic": ["select.ionic.css"]
1109
+ "md": ["select.md.css"]
1065
1110
  };
1066
1111
  }
1067
1112
  static get properties() {
@@ -1086,26 +1131,6 @@ export class Select {
1086
1131
  "attribute": "cancel-text",
1087
1132
  "defaultValue": "'Cancel'"
1088
1133
  },
1089
- "cancelIcon": {
1090
- "type": "boolean",
1091
- "mutable": false,
1092
- "complexType": {
1093
- "original": "boolean",
1094
- "resolved": "boolean",
1095
- "references": {}
1096
- },
1097
- "required": false,
1098
- "optional": false,
1099
- "docs": {
1100
- "tags": [],
1101
- "text": "If `true`, the cancel button will display an icon instead of the `cancelText`.\nOnly applies when `interface` is set to `\"modal\"`. Has no effect on `\"action-sheet\"`,\n`\"alert\"`, or `\"popover\"` interfaces.\nWhen `cancelIcon` is `true`, the `cancelText` property is ignored for display\nbut is used as the accessible label for the icon button."
1102
- },
1103
- "getter": false,
1104
- "setter": false,
1105
- "reflect": false,
1106
- "attribute": "cancel-icon",
1107
- "defaultValue": "false"
1108
- },
1109
1134
  "color": {
1110
1135
  "type": "string",
1111
1136
  "mutable": false,
@@ -1190,7 +1215,7 @@ export class Select {
1190
1215
  "optional": true,
1191
1216
  "docs": {
1192
1217
  "tags": [],
1193
- "text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available in the `\"md\"` theme."
1218
+ "text": "The fill for the item. If `\"solid\"` the item will have a background. If\n`\"outline\"` the item will be transparent with a border. Only available in `md` mode."
1194
1219
  },
1195
1220
  "getter": false,
1196
1221
  "setter": false,
@@ -1450,7 +1475,7 @@ export class Select {
1450
1475
  "optional": true,
1451
1476
  "docs": {
1452
1477
  "tags": [],
1453
- "text": "The toggle icon to use. Defaults to `\"chevronExpand\"` for the `\"ios\"` theme,\nor `\"caretDownSharp\"` for the `\"md\"` and `\"ionic\"` themes."
1478
+ "text": "The toggle icon to use. Defaults to `chevronExpand` for `ios` mode,\nor `caretDownSharp` for `md` mode."
1454
1479
  },
1455
1480
  "getter": false,
1456
1481
  "setter": false,
@@ -1469,89 +1494,70 @@ export class Select {
1469
1494
  "optional": true,
1470
1495
  "docs": {
1471
1496
  "tags": [],
1472
- "text": "The toggle icon to show when the select is open. If defined, the icon\nrotation behavior in `\"md\"` theme will be disabled. If undefined, `toggleIcon`\nwill be used for when the select is both open and closed."
1497
+ "text": "The toggle icon to show when the select is open. If defined, the icon\nrotation behavior in `md` mode will be disabled. If undefined, `toggleIcon`\nwill be used for when the select is both open and closed."
1473
1498
  },
1474
1499
  "getter": false,
1475
1500
  "setter": false,
1476
1501
  "reflect": false,
1477
1502
  "attribute": "expanded-icon"
1478
1503
  },
1479
- "required": {
1480
- "type": "boolean",
1481
- "mutable": false,
1482
- "complexType": {
1483
- "original": "boolean",
1484
- "resolved": "boolean",
1485
- "references": {}
1486
- },
1487
- "required": false,
1488
- "optional": false,
1489
- "docs": {
1490
- "tags": [],
1491
- "text": "If true, screen readers will announce it as a required field. This property\nworks only for accessibility purposes, it will not prevent the form from\nsubmitting if the value is invalid."
1492
- },
1493
- "getter": false,
1494
- "setter": false,
1495
- "reflect": false,
1496
- "attribute": "required",
1497
- "defaultValue": "false"
1498
- },
1499
1504
  "shape": {
1500
1505
  "type": "string",
1501
1506
  "mutable": false,
1502
1507
  "complexType": {
1503
- "original": "'soft' | 'round' | 'rectangular'",
1504
- "resolved": "\"rectangular\" | \"round\" | \"soft\" | undefined",
1508
+ "original": "'round'",
1509
+ "resolved": "\"round\" | undefined",
1505
1510
  "references": {}
1506
1511
  },
1507
1512
  "required": false,
1508
1513
  "optional": true,
1509
1514
  "docs": {
1510
1515
  "tags": [],
1511
- "text": "Set to `\"soft\"` for a select with slightly rounded corners,\n`\"round\"` for a select with fully rounded corners,\nor `\"rectangular\"` for a select without rounded corners.\n\nDefaults to `\"round\"` for the `\"ionic\"` theme, undefined for all other themes."
1516
+ "text": "The shape of the select. If \"round\" it will have an increased border radius."
1512
1517
  },
1513
1518
  "getter": false,
1514
1519
  "setter": false,
1515
1520
  "reflect": false,
1516
1521
  "attribute": "shape"
1517
1522
  },
1518
- "size": {
1519
- "type": "string",
1520
- "mutable": false,
1523
+ "value": {
1524
+ "type": "any",
1525
+ "mutable": true,
1521
1526
  "complexType": {
1522
- "original": "'small' | 'medium' | 'large'",
1523
- "resolved": "\"large\" | \"medium\" | \"small\" | undefined",
1527
+ "original": "any | null",
1528
+ "resolved": "any",
1524
1529
  "references": {}
1525
1530
  },
1526
1531
  "required": false,
1527
1532
  "optional": true,
1528
1533
  "docs": {
1529
1534
  "tags": [],
1530
- "text": "The size of the select. If \"large\" it will increase the height of the select, while\n\"small\" and \"medium\" provide progressively smaller heights.\n\nDefaults to `\"medium\"` for the ionic theme, and undefined for all other themes."
1535
+ "text": "The value of the select."
1531
1536
  },
1532
1537
  "getter": false,
1533
1538
  "setter": false,
1534
1539
  "reflect": false,
1535
- "attribute": "size"
1540
+ "attribute": "value"
1536
1541
  },
1537
- "value": {
1538
- "type": "any",
1539
- "mutable": true,
1542
+ "required": {
1543
+ "type": "boolean",
1544
+ "mutable": false,
1540
1545
  "complexType": {
1541
- "original": "any | null",
1542
- "resolved": "any",
1546
+ "original": "boolean",
1547
+ "resolved": "boolean",
1543
1548
  "references": {}
1544
1549
  },
1545
1550
  "required": false,
1546
- "optional": true,
1551
+ "optional": false,
1547
1552
  "docs": {
1548
1553
  "tags": [],
1549
- "text": "The value of the select."
1554
+ "text": "If true, screen readers will announce it as a required field. This property\nworks only for accessibility purposes, it will not prevent the form from\nsubmitting if the value is invalid."
1550
1555
  },
1551
1556
  "getter": false,
1552
1557
  "setter": false,
1553
1558
  "reflect": false,
1554
- "attribute": "value"
1559
+ "attribute": "required",
1560
+ "defaultValue": "false"
1555
1561
  }
1556
1562
  };
1557
1563
  }
@@ -1800,7 +1806,7 @@ const textForValue = (opts, value, compareWith, useHTML = false) => {
1800
1806
  */
1801
1807
  if (content) {
1802
1808
  const texts = Array.from(content.childNodes)
1803
- .map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
1809
+ .map((n) => n.textContent?.trim())
1804
1810
  .filter((t) => t);
1805
1811
  return texts.join(' ') || null;
1806
1812
  }
@@ -1820,9 +1826,8 @@ const textForValue = (opts, value, compareWith, useHTML = false) => {
1820
1826
  */
1821
1827
  const trimTextNodes = (node) => {
1822
1828
  node.childNodes.forEach((child) => {
1823
- var _a;
1824
1829
  if (child.nodeType === Node.TEXT_NODE) {
1825
- child.textContent = ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
1830
+ child.textContent = child.textContent?.trim() || '';
1826
1831
  }
1827
1832
  else if (child.nodeType === Node.ELEMENT_NODE) {
1828
1833
  trimTextNodes(child);
@@ -1850,14 +1855,13 @@ const getOptionContent = (option, slotName, useHTML = false) => {
1850
1855
  // Default slot: get nodes without a slot attribute
1851
1856
  const defaultSlot = getOptionDefaultSlot(option) || [];
1852
1857
  nodes = defaultSlot.filter((node) => {
1853
- var _a;
1854
1858
  /**
1855
1859
  * Exclude whitespace-only text nodes (newline noise between
1856
1860
  * markup elements). Element nodes are always kept, even when
1857
1861
  * their textContent is empty (e.g. <svg>, <img>).
1858
1862
  */
1859
1863
  if (node.nodeType === Node.TEXT_NODE) {
1860
- return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().length) !== 0;
1864
+ return node.textContent?.trim().length !== 0;
1861
1865
  }
1862
1866
  return true;
1863
1867
  });
@@ -1867,7 +1871,7 @@ const getOptionContent = (option, slotName, useHTML = false) => {
1867
1871
  }
1868
1872
  // Return plain text if no elements are found
1869
1873
  if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
1870
- return nodes.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); }).join(' ') || null;
1874
+ return nodes.map((n) => n.textContent?.trim()).join(' ') || null;
1871
1875
  }
1872
1876
  /**
1873
1877
  * Mirror known custom-element properties (e.g. ion-icon's `icon`)
@@ -1883,10 +1887,9 @@ const getOptionContent = (option, slotName, useHTML = false) => {
1883
1887
  // Clone each node into a temporary container
1884
1888
  const container = document.createElement('div');
1885
1889
  nodes.forEach((n) => {
1886
- var _a;
1887
1890
  const clone = n.cloneNode(true);
1888
1891
  if (clone.nodeType === Node.TEXT_NODE) {
1889
- clone.textContent = ((_a = clone.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
1892
+ clone.textContent = clone.textContent?.trim() || '';
1890
1893
  }
1891
1894
  else {
1892
1895
  trimTextNodes(clone);
@@ -1937,7 +1940,7 @@ const getDefaultSlotPlainText = (option) => {
1937
1940
  return node.nodeType === Node.TEXT_NODE;
1938
1941
  })
1939
1942
  .filter((node) => node.nodeType === Node.TEXT_NODE)
1940
- .map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
1943
+ .map((n) => n.textContent?.trim())
1941
1944
  .filter((t) => t);
1942
1945
  return texts.join(' ');
1943
1946
  };
@@ -1951,7 +1954,6 @@ const getDefaultSlotPlainText = (option) => {
1951
1954
  * via the `innerHTMLTemplatesEnabled` config.
1952
1955
  */
1953
1956
  const extractOptionContent = (option, customHTMLEnabled) => {
1954
- var _a, _b;
1955
1957
  if (!customHTMLEnabled) {
1956
1958
  return {
1957
1959
  content: getDefaultSlotPlainText(option),
@@ -1961,8 +1963,8 @@ const extractOptionContent = (option, customHTMLEnabled) => {
1961
1963
  }
1962
1964
  return {
1963
1965
  content: getOptionContent(option),
1964
- startContent: (_a = getOptionContent(option, 'start')) !== null && _a !== void 0 ? _a : undefined,
1965
- endContent: (_b = getOptionContent(option, 'end')) !== null && _b !== void 0 ? _b : undefined,
1966
+ startContent: getOptionContent(option, 'start') ?? undefined,
1967
+ endContent: getOptionContent(option, 'end') ?? undefined,
1966
1968
  };
1967
1969
  };
1968
1970
  let selectIds = 0;