@ionic/core 9.0.0 → 9.0.1-dev.11787248963.10a00c73

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 (596) 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-63OhffQv.js → p-66ogmUZU.js} +1 -1
  99. package/components/p-6Vp915Y7.js +4 -0
  100. package/components/p-7PNwKFZi.js +4 -0
  101. package/components/{p-G0TxqHfe.js → p-A8MJRBIY.js} +1 -1
  102. package/components/p-AQcCdH2_.js +4 -0
  103. package/{dist/ionic/p-Dn0mqQ_R.js → components/p-B6x5_b9w.js} +1 -1
  104. package/components/p-B8MQjdvk.js +4 -0
  105. package/components/p-BA_4ZIEg.js +4 -0
  106. package/components/p-BFtL8t1r.js +4 -0
  107. package/components/{p-DaA_8eqt.js → p-BMfgF-Tv.js} +1 -1
  108. package/components/p-BPDxVIRr.js +4 -0
  109. package/components/p-BSARlp49.js +4 -0
  110. package/components/p-B_gJaBk0.js +4 -0
  111. package/components/p-BdwCtX8Y.js +4 -0
  112. package/components/p-Bg4OwDwb.js +4 -0
  113. package/components/{p-DV85C0e0.js → p-BgUIV8NQ.js} +1 -1
  114. package/components/p-Bnc0m4SW.js +4 -0
  115. package/components/p-BpLt_Ptn.js +4 -0
  116. package/components/p-BqBDq1Ma.js +4 -0
  117. package/components/{p-C_phlPMC.js → p-BrFaQbGY.js} +1 -1
  118. package/{dist/ionic/p-Cdjxf_yg.js → components/p-BuPAFTWI.js} +1 -1
  119. package/components/p-Bx2saTHs.js +4 -0
  120. package/components/p-BxhE2W85.js +4 -0
  121. package/components/p-CHswSpKy.js +4 -0
  122. package/components/{p-fruGqVHh.js → p-CQAjyETU.js} +1 -1
  123. package/components/{p-1jI5oW-W.js → p-CR9OgE6N.js} +1 -1
  124. package/components/p-CWETxTjE.js +4 -0
  125. package/components/p-CaZeZIL2.js +4 -0
  126. package/components/p-CaiZOhfC.js +4 -0
  127. package/components/p-CgvDC7hC.js +4 -0
  128. package/components/{p-BqPNzJf6.js → p-CqyGR9Aq.js} +1 -1
  129. package/components/{p-UIBJkZf8.js → p-D0YpjgON.js} +1 -1
  130. package/components/p-D7ysFE2B.js +4 -0
  131. package/{dist/ionic/p-4eOQC00Z.js → components/p-DCWfzDM8.js} +1 -1
  132. package/components/{p-DwpKZ6rl.js → p-DDdkefwf.js} +1 -1
  133. package/components/{p-DzRT60Tw.js → p-DEW7CnUc.js} +1 -1
  134. package/components/p-DQ1IPvZO.js +4 -0
  135. package/components/p-DcOH6-o5.js +4 -0
  136. package/components/{p-DD5fQ4EQ.js → p-DfdYCsov.js} +1 -1
  137. package/components/{p-DSzSbVP2.js → p-DhOoEIAs.js} +1 -1
  138. package/components/{p-DM-PrAoh.js → p-Dl_7b_UJ.js} +1 -1
  139. package/components/p-DqAI6tg7.js +4 -0
  140. package/components/p-DrehWDfv.js +4 -0
  141. package/components/{p-ryyf_ItD.js → p-DysqCsJu.js} +1 -1
  142. package/components/p-H1f2qsk4.js +4 -0
  143. package/components/p-HVYBAhFx.js +4 -0
  144. package/components/{p-CbhUdtjf.js → p-Kmrg3Fed.js} +1 -1
  145. package/components/{p-Bjig0DJK.js → p-RFfE9hF6.js} +1 -1
  146. package/{dist/ionic/p-CBWAXjA5.js → components/p-SR-LLqp_.js} +1 -1
  147. package/components/p-eFI3mtEX.js +4 -0
  148. package/components/p-gFwXiYC_.js +4 -0
  149. package/components/p-tX3UxCnU.js +4 -0
  150. package/components/p-v2NpoOHp.js +4 -0
  151. package/dist/cjs/{animation-C0mOHzej.js → animation-D-OqR4a4.js} +1 -1
  152. package/dist/cjs/{app-globals-BREG4twP.js → app-globals-BzgwARwJ.js} +1 -1
  153. package/dist/cjs/{button-active-CVMevT9a.js → button-active-BlWSD7uK.js} +2 -2
  154. package/dist/cjs/{format-pp0Du3K-.js → format-D7ig6Vm0.js} +1 -1
  155. package/dist/cjs/{framework-delegate-Dfo5XsGv.js → framework-delegate-BZUx4TnE.js} +1 -1
  156. package/dist/cjs/{gesture-controller-BDUH7687.js → gesture-controller-CeJslptU.js} +6 -14
  157. package/dist/cjs/{hardware-back-button-fqpYh-kd.js → hardware-back-button-JOAEFSzc.js} +1 -1
  158. package/dist/cjs/{helpers-YPQybDph.js → helpers-Dj5o76mq.js} +1 -1
  159. package/dist/cjs/{index-BLdJCcJY.js → index-2sO-zkZ2.js} +4 -4
  160. package/dist/cjs/{index-uvry__L4.js → index-BrVMoqUk.js} +3 -1
  161. package/dist/cjs/{index-zVCah4Uz.js → index-C8zH6b3d.js} +2 -2
  162. package/dist/cjs/{index-DXsPSne6.js → index-CZ6vzt_q.js} +5 -5
  163. package/dist/cjs/{index-DDg31ZF5.js → index-Csue6G3m.js} +2 -2
  164. package/dist/cjs/{index-DwlRtFZe.js → index-DRPqwSvU.js} +1 -1
  165. package/dist/cjs/{index-B7zJsYWS.js → index-EJLjthTK.js} +1 -2
  166. package/dist/cjs/index.cjs.js +14 -14
  167. package/dist/cjs/{input-shims-Cbu1fcye.js → input-shims-Bh7bnt2v.js} +3 -3
  168. package/dist/cjs/{input.utils-BZdMWVrt.js → input.utils-Cq3g9uHy.js} +1 -1
  169. package/dist/cjs/ion-accordion_2.cjs.entry.js +335 -364
  170. package/dist/cjs/ion-action-sheet.cjs.entry.js +60 -140
  171. package/dist/cjs/ion-alert.cjs.entry.js +67 -159
  172. package/dist/cjs/ion-app_8.cjs.entry.js +163 -258
  173. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -8
  174. package/dist/cjs/ion-back-button.cjs.entry.js +21 -45
  175. package/dist/cjs/ion-backdrop.cjs.entry.js +14 -18
  176. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +117 -195
  177. package/dist/cjs/ion-button_2.cjs.entry.js +61 -130
  178. package/dist/cjs/ion-card_5.cjs.entry.js +28 -80
  179. package/dist/cjs/ion-checkbox.cjs.entry.js +98 -147
  180. package/dist/cjs/ion-chip.cjs.entry.js +10 -16
  181. package/dist/cjs/ion-col_3.cjs.entry.js +6 -126
  182. package/dist/cjs/ion-datetime-button.cjs.entry.js +232 -248
  183. package/dist/cjs/ion-datetime.cjs.entry.js +775 -953
  184. package/dist/cjs/ion-fab_3.cjs.entry.js +78 -136
  185. package/dist/cjs/ion-img.cjs.entry.js +11 -31
  186. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +71 -98
  187. package/dist/cjs/ion-input-otp.cjs.entry.js +352 -424
  188. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +14 -29
  189. package/dist/cjs/ion-input.cjs.entry.js +158 -302
  190. package/dist/cjs/ion-item-option_3.cjs.entry.js +54 -98
  191. package/dist/cjs/ion-item_8.cjs.entry.js +61 -157
  192. package/dist/cjs/ion-loading.cjs.entry.js +54 -131
  193. package/dist/cjs/ion-menu_3.cjs.entry.js +94 -158
  194. package/dist/cjs/ion-modal.cjs.entry.js +206 -362
  195. package/dist/cjs/ion-nav_2.cjs.entry.js +26 -78
  196. package/dist/cjs/ion-picker-column-option.cjs.entry.js +23 -33
  197. package/dist/cjs/ion-picker-column.cjs.entry.js +389 -410
  198. package/dist/cjs/ion-picker.cjs.entry.js +390 -400
  199. package/dist/cjs/ion-popover.cjs.entry.js +184 -292
  200. package/dist/cjs/ion-progress-bar.cjs.entry.js +23 -29
  201. package/dist/cjs/ion-radio_2.cjs.entry.js +128 -201
  202. package/dist/cjs/ion-range.cjs.entry.js +223 -293
  203. package/dist/cjs/ion-refresher_2.cjs.entry.js +89 -154
  204. package/dist/cjs/ion-reorder_2.cjs.entry.js +19 -49
  205. package/dist/cjs/ion-ripple-effect.cjs.entry.js +13 -13
  206. package/dist/cjs/ion-route_4.cjs.entry.js +45 -144
  207. package/dist/cjs/ion-searchbar.cjs.entry.js +182 -268
  208. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  209. package/dist/cjs/ion-segment-view.cjs.entry.js +12 -24
  210. package/dist/cjs/ion-segment_2.cjs.entry.js +122 -161
  211. package/dist/cjs/ion-select-modal.cjs.entry.js +19 -21
  212. package/dist/cjs/ion-select_3.cjs.entry.js +151 -319
  213. package/dist/cjs/ion-spinner.cjs.entry.js +6 -21
  214. package/dist/cjs/ion-split-pane.cjs.entry.js +14 -27
  215. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +32 -89
  216. package/dist/cjs/ion-tab_2.cjs.entry.js +22 -49
  217. package/dist/cjs/ion-text.cjs.entry.js +2 -8
  218. package/dist/cjs/ion-textarea.cjs.entry.js +139 -256
  219. package/dist/cjs/ion-toast.cjs.entry.js +106 -221
  220. package/dist/cjs/ion-toggle.cjs.entry.js +114 -165
  221. package/dist/cjs/{ionic-global-k6hOWWpn.js → ionic-global-DvgIzM2F.js} +1 -1
  222. package/dist/cjs/ionic.cjs.js +4 -4
  223. package/dist/cjs/{ios.transition-zTmJz8T-.js → ios.transition-zIgdoSYe.js} +4 -4
  224. package/dist/cjs/{item-multiple-inputs-BdYSbfKN.js → item-multiple-inputs-DG-ZGm6j.js} +1 -1
  225. package/dist/cjs/loader.cjs.js +4 -4
  226. package/dist/cjs/{md.transition-nb_4pUXu.js → md.transition-CXeJ9rfh.js} +4 -4
  227. package/dist/cjs/{overlays-KaNVDNqC.js → overlays-Bg0auTQa.js} +6 -6
  228. package/dist/cjs/{select-option-render-pULCGldr.js → select-option-render-7m1WdFzF.js} +2 -2
  229. package/dist/cjs/{slot-mutation-controller-DPHmqXdV.js → slot-mutation-controller-BJEJzx_e.js} +1 -1
  230. package/dist/cjs/{status-tap-o9IIymsP.js → status-tap-DxbUM5XX.js} +3 -3
  231. package/dist/cjs/{swipe-back-B7X9VOlH.js → swipe-back-F_DBt-Aw.js} +4 -4
  232. package/dist/collection/components/accordion/accordion.js +310 -314
  233. package/dist/collection/components/accordion-group/accordion-group.js +23 -46
  234. package/dist/collection/components/action-sheet/action-sheet.js +49 -128
  235. package/dist/collection/components/action-sheet/test/basic/fixture.js +0 -3
  236. package/dist/collection/components/alert/alert.js +56 -147
  237. package/dist/collection/components/app/app.js +0 -3
  238. package/dist/collection/components/back-button/back-button.js +19 -42
  239. package/dist/collection/components/backdrop/backdrop.js +14 -16
  240. package/dist/collection/components/badge/badge.js +0 -6
  241. package/dist/collection/components/breadcrumb/breadcrumb.js +29 -90
  242. package/dist/collection/components/breadcrumbs/breadcrumbs.js +87 -102
  243. package/dist/collection/components/button/button.js +59 -127
  244. package/dist/collection/components/buttons/buttons.js +15 -13
  245. package/dist/collection/components/card/card.js +20 -53
  246. package/dist/collection/components/card-header/card-header.js +8 -12
  247. package/dist/collection/components/card-subtitle/card-subtitle.js +0 -6
  248. package/dist/collection/components/card-title/card-title.js +0 -6
  249. package/dist/collection/components/checkbox/checkbox.js +95 -143
  250. package/dist/collection/components/chip/chip.js +10 -14
  251. package/dist/collection/components/col/col.js +0 -120
  252. package/dist/collection/components/content/content.js +60 -90
  253. package/dist/collection/components/datetime/datetime.js +762 -939
  254. package/dist/collection/components/datetime-button/datetime-button.js +229 -244
  255. package/dist/collection/components/fab/fab.js +13 -20
  256. package/dist/collection/components/fab-button/fab-button.js +54 -103
  257. package/dist/collection/components/fab-list/fab-list.js +11 -10
  258. package/dist/collection/components/footer/footer.js +43 -49
  259. package/dist/collection/components/grid/grid.js +6 -4
  260. package/dist/collection/components/header/header.js +23 -33
  261. package/dist/collection/components/img/img.js +9 -28
  262. package/dist/collection/components/infinite-scroll/infinite-scroll.js +66 -73
  263. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +3 -20
  264. package/dist/collection/components/input/input.js +154 -297
  265. package/dist/collection/components/input-otp/input-otp.js +350 -421
  266. package/dist/collection/components/input-password-toggle/input-password-toggle.js +13 -27
  267. package/dist/collection/components/item/item.js +37 -80
  268. package/dist/collection/components/item-divider/item-divider.js +10 -15
  269. package/dist/collection/components/item-option/item-option.js +20 -48
  270. package/dist/collection/components/item-options/item-options.js +7 -10
  271. package/dist/collection/components/item-sliding/item-sliding.js +26 -36
  272. package/dist/collection/components/label/label.js +4 -24
  273. package/dist/collection/components/list/list.js +6 -9
  274. package/dist/collection/components/list-header/list-header.js +0 -10
  275. package/dist/collection/components/loading/loading.js +46 -122
  276. package/dist/collection/components/menu/menu.js +55 -99
  277. package/dist/collection/components/menu-button/menu-button.js +19 -28
  278. package/dist/collection/components/menu-toggle/menu-toggle.js +13 -20
  279. package/dist/collection/components/modal/modal.js +196 -351
  280. package/dist/collection/components/modal/test/fixtures.js +0 -3
  281. package/dist/collection/components/nav/nav.js +12 -45
  282. package/dist/collection/components/nav/view-controller.js +1 -7
  283. package/dist/collection/components/nav-link/nav-link.js +9 -20
  284. package/dist/collection/components/note/note.js +0 -6
  285. package/dist/collection/components/picker/picker.js +388 -397
  286. package/dist/collection/components/picker-column/picker-column.js +389 -409
  287. package/dist/collection/components/picker-column-option/picker-column-option.js +21 -30
  288. package/dist/collection/components/popover/popover.js +176 -283
  289. package/dist/collection/components/popover/test/fixture.js +0 -1
  290. package/dist/collection/components/progress-bar/progress-bar.js +22 -26
  291. package/dist/collection/components/radio/radio.js +62 -98
  292. package/dist/collection/components/radio-group/radio-group.js +64 -99
  293. package/dist/collection/components/radio-group/test/fixtures.js +0 -2
  294. package/dist/collection/components/range/range.js +220 -289
  295. package/dist/collection/components/refresher/refresher.js +79 -105
  296. package/dist/collection/components/refresher-content/refresher-content.js +3 -40
  297. package/dist/collection/components/reorder/reorder.js +0 -1
  298. package/dist/collection/components/reorder-group/reorder-group.js +14 -43
  299. package/dist/collection/components/ripple-effect/ripple-effect.js +12 -11
  300. package/dist/collection/components/route/route.js +9 -38
  301. package/dist/collection/components/route-redirect/route-redirect.js +0 -31
  302. package/dist/collection/components/router/router.js +27 -35
  303. package/dist/collection/components/router/utils/matching.js +0 -1
  304. package/dist/collection/components/router-link/router-link.js +10 -35
  305. package/dist/collection/components/router-outlet/router-outlet.js +12 -34
  306. package/dist/collection/components/searchbar/searchbar.js +180 -265
  307. package/dist/collection/components/segment/segment.js +76 -113
  308. package/dist/collection/components/segment-button/segment-button.js +44 -44
  309. package/dist/collection/components/segment-view/segment-view.js +12 -23
  310. package/dist/collection/components/select/select.js +127 -240
  311. package/dist/collection/components/select-modal/select-modal.js +11 -12
  312. package/dist/collection/components/select-modal/test/fixtures.js +1 -8
  313. package/dist/collection/components/select-option/select-option.js +7 -44
  314. package/dist/collection/components/select-popover/select-popover.js +10 -25
  315. package/dist/collection/components/select-popover/test/fixtures.js +1 -8
  316. package/dist/collection/components/skeleton-text/skeleton-text.js +6 -10
  317. package/dist/collection/components/spinner/spinner.js +6 -19
  318. package/dist/collection/components/split-pane/split-pane.js +13 -25
  319. package/dist/collection/components/tab/tab.js +4 -15
  320. package/dist/collection/components/tab-bar/tab-bar.js +12 -30
  321. package/dist/collection/components/tab-button/tab-button.js +19 -56
  322. package/dist/collection/components/tabs/tabs.js +17 -31
  323. package/dist/collection/components/text/text.js +0 -6
  324. package/dist/collection/components/textarea/textarea.js +135 -251
  325. package/dist/collection/components/title/title.js +0 -16
  326. package/dist/collection/components/toast/toast.js +97 -211
  327. package/dist/collection/components/toggle/toggle.js +111 -161
  328. package/dist/collection/components/toolbar/toolbar.js +3 -8
  329. package/dist/collection/global/config.js +3 -1
  330. package/dist/collection/utils/gesture/gesture-controller.js +6 -14
  331. package/dist/collection/utils/sanitization/index.js +0 -1
  332. package/dist/collection/utils/test/late-props/late-props.js +69 -0
  333. package/dist/collection/utils/test/playwright/page/event-spy.js +8 -9
  334. package/dist/collection/utils/test/press-keys.js +1 -4
  335. package/dist/docs.json +1 -1
  336. package/dist/esm/{animation-CGFdmGk9.js → animation-TxGPYeDn.js} +1 -1
  337. package/dist/esm/{app-globals-CYmMeGdU.js → app-globals-Do8rJest.js} +1 -1
  338. package/dist/esm/{button-active-BDOsVAiZ.js → button-active-ChA4D-ml.js} +2 -2
  339. package/dist/esm/{format-Dcwga61t.js → format-CVk5e_GP.js} +2 -2
  340. package/dist/esm/{framework-delegate-BHTU2Ip9.js → framework-delegate-DaLWnISz.js} +1 -1
  341. package/dist/esm/{gesture-controller-TXPDHL13.js → gesture-controller-B_gJaBk0.js} +6 -14
  342. package/dist/esm/{hardware-back-button-gLJHMX_F.js → hardware-back-button-D8W4L0JP.js} +1 -1
  343. package/dist/esm/{helpers-CAGf8Wgp.js → helpers-BIgoInJU.js} +1 -1
  344. package/dist/esm/{index-DcPaH5uL.js → index-BmLuEdV7.js} +1 -1
  345. package/dist/esm/{index-T0JxBI8V.js → index-BmOR8tCv.js} +2 -2
  346. package/dist/esm/{index-CqneaaGd.js → index-C5ZdL0qp.js} +5 -5
  347. package/dist/esm/{index-WlteAIqz.js → index-C8Dsa6li.js} +4 -4
  348. package/dist/esm/{index-ChhhtsGZ.js → index-CKYcsw8f.js} +3 -1
  349. package/dist/esm/{index-Clc-28O1.js → index-DHw2lZxe.js} +2 -2
  350. package/dist/esm/{index-CKM1DdGm.js → index-elneMH8y.js} +1 -2
  351. package/dist/esm/index.js +14 -14
  352. package/dist/esm/{input-shims-B8sfni1e.js → input-shims-09NN97kF.js} +3 -3
  353. package/dist/esm/{input.utils-B1ValN_N.js → input.utils-BxyH9l1w.js} +1 -1
  354. package/dist/esm/ion-accordion_2.entry.js +335 -364
  355. package/dist/esm/ion-action-sheet.entry.js +60 -140
  356. package/dist/esm/ion-alert.entry.js +67 -159
  357. package/dist/esm/ion-app_8.entry.js +163 -258
  358. package/dist/esm/ion-avatar_3.entry.js +2 -8
  359. package/dist/esm/ion-back-button.entry.js +21 -45
  360. package/dist/esm/ion-backdrop.entry.js +14 -18
  361. package/dist/esm/ion-breadcrumb_2.entry.js +117 -195
  362. package/dist/esm/ion-button_2.entry.js +61 -130
  363. package/dist/esm/ion-card_5.entry.js +28 -80
  364. package/dist/esm/ion-checkbox.entry.js +98 -147
  365. package/dist/esm/ion-chip.entry.js +10 -16
  366. package/dist/esm/ion-col_3.entry.js +6 -126
  367. package/dist/esm/ion-datetime-button.entry.js +232 -248
  368. package/dist/esm/ion-datetime.entry.js +775 -953
  369. package/dist/esm/ion-fab_3.entry.js +78 -136
  370. package/dist/esm/ion-img.entry.js +11 -31
  371. package/dist/esm/ion-infinite-scroll_2.entry.js +71 -98
  372. package/dist/esm/ion-input-otp.entry.js +352 -424
  373. package/dist/esm/ion-input-password-toggle.entry.js +14 -29
  374. package/dist/esm/ion-input.entry.js +158 -302
  375. package/dist/esm/ion-item-option_3.entry.js +54 -98
  376. package/dist/esm/ion-item_8.entry.js +61 -157
  377. package/dist/esm/ion-loading.entry.js +54 -131
  378. package/dist/esm/ion-menu_3.entry.js +94 -158
  379. package/dist/esm/ion-modal.entry.js +206 -362
  380. package/dist/esm/ion-nav_2.entry.js +26 -78
  381. package/dist/esm/ion-picker-column-option.entry.js +23 -33
  382. package/dist/esm/ion-picker-column.entry.js +389 -410
  383. package/dist/esm/ion-picker.entry.js +390 -400
  384. package/dist/esm/ion-popover.entry.js +184 -292
  385. package/dist/esm/ion-progress-bar.entry.js +23 -29
  386. package/dist/esm/ion-radio_2.entry.js +128 -201
  387. package/dist/esm/ion-range.entry.js +223 -293
  388. package/dist/esm/ion-refresher_2.entry.js +89 -154
  389. package/dist/esm/ion-reorder_2.entry.js +19 -49
  390. package/dist/esm/ion-ripple-effect.entry.js +13 -13
  391. package/dist/esm/ion-route_4.entry.js +45 -144
  392. package/dist/esm/ion-searchbar.entry.js +182 -268
  393. package/dist/esm/ion-segment-content.entry.js +1 -1
  394. package/dist/esm/ion-segment-view.entry.js +12 -24
  395. package/dist/esm/ion-segment_2.entry.js +122 -161
  396. package/dist/esm/ion-select-modal.entry.js +19 -21
  397. package/dist/esm/ion-select_3.entry.js +151 -319
  398. package/dist/esm/ion-spinner.entry.js +6 -21
  399. package/dist/esm/ion-split-pane.entry.js +14 -27
  400. package/dist/esm/ion-tab-bar_2.entry.js +32 -89
  401. package/dist/esm/ion-tab_2.entry.js +22 -49
  402. package/dist/esm/ion-text.entry.js +2 -8
  403. package/dist/esm/ion-textarea.entry.js +139 -256
  404. package/dist/esm/ion-toast.entry.js +106 -221
  405. package/dist/esm/ion-toggle.entry.js +114 -165
  406. package/dist/esm/{ionic-global-BVB7BrLT.js → ionic-global-lrowsHfi.js} +1 -1
  407. package/dist/esm/ionic.js +5 -5
  408. package/dist/esm/{ios.transition-DXRCmcbC.js → ios.transition-BQhADrk1.js} +4 -4
  409. package/dist/esm/{item-multiple-inputs-rU8VaNNg.js → item-multiple-inputs-D_N3fDkD.js} +1 -1
  410. package/dist/esm/loader.js +5 -5
  411. package/dist/esm/{md.transition-BMngO4i_.js → md.transition-D58NpmRa.js} +4 -4
  412. package/dist/esm/{overlays-CPmIs9Ls.js → overlays-BpnIFlXI.js} +6 -6
  413. package/dist/esm/{select-option-render-C4m76VGH.js → select-option-render-lIuu64EV.js} +2 -2
  414. package/dist/esm/{slot-mutation-controller-DiE_C9un.js → slot-mutation-controller-rS_T3FDR.js} +1 -1
  415. package/dist/esm/{status-tap-CHB7KwIb.js → status-tap-CpFQMLl6.js} +3 -3
  416. package/dist/esm/{swipe-back-C9HW1bug.js → swipe-back-rmc7zeNW.js} +4 -4
  417. package/dist/ionic/index.esm.js +1 -1
  418. package/dist/ionic/ionic.esm.js +1 -1
  419. package/dist/ionic/p-05800a02.entry.js +4 -0
  420. package/dist/ionic/p-0eb50dca.entry.js +4 -0
  421. package/dist/ionic/p-16e9f542.entry.js +4 -0
  422. package/dist/ionic/p-18d532a3.entry.js +4 -0
  423. package/dist/ionic/p-1db2afb4.entry.js +4 -0
  424. package/dist/ionic/p-1df75f9e.entry.js +4 -0
  425. package/dist/ionic/p-295ff427.entry.js +4 -0
  426. package/dist/ionic/p-34b9379b.entry.js +4 -0
  427. package/dist/ionic/p-39a8d4e0.entry.js +4 -0
  428. package/dist/ionic/p-4437015c.entry.js +4 -0
  429. package/dist/ionic/p-478035a7.entry.js +4 -0
  430. package/dist/ionic/p-485fb218.entry.js +4 -0
  431. package/dist/ionic/p-48c859fe.entry.js +4 -0
  432. package/dist/ionic/p-49b9d405.entry.js +4 -0
  433. package/dist/ionic/p-56307aea.entry.js +4 -0
  434. package/dist/ionic/p-5b906fd6.entry.js +4 -0
  435. package/dist/ionic/p-5ee2d7b1.entry.js +4 -0
  436. package/dist/ionic/p-5f216b79.entry.js +4 -0
  437. package/dist/ionic/p-61c799d1.entry.js +4 -0
  438. package/dist/ionic/p-63bbba8d.entry.js +4 -0
  439. package/dist/ionic/p-68507e70.entry.js +4 -0
  440. package/dist/ionic/{p-ded69ceb.entry.js → p-6f048604.entry.js} +1 -1
  441. package/dist/ionic/p-70ee8888.entry.js +4 -0
  442. package/dist/ionic/p-72ad7c64.entry.js +4 -0
  443. package/dist/ionic/p-75887ee0.entry.js +4 -0
  444. package/dist/ionic/p-873a315a.entry.js +4 -0
  445. package/dist/ionic/p-881b6954.entry.js +4 -0
  446. package/dist/ionic/p-886d9e66.entry.js +4 -0
  447. package/dist/ionic/p-8dd4c026.entry.js +4 -0
  448. package/dist/ionic/p-8e007f11.entry.js +4 -0
  449. package/dist/ionic/p-8f51110d.entry.js +4 -0
  450. package/dist/ionic/p-90ba736e.entry.js +4 -0
  451. package/dist/ionic/p-959df5f8.entry.js +4 -0
  452. package/dist/ionic/p-9e455875.entry.js +4 -0
  453. package/dist/ionic/{p-CBR_W98Z.js → p-9wczfs_v.js} +1 -1
  454. package/dist/ionic/p-B1Y7LZhV.js +4 -0
  455. package/dist/ionic/p-B5RyLYvl.js +4 -0
  456. package/dist/ionic/{p-CPcPmkGv.js → p-BQv5i5Kf.js} +1 -1
  457. package/{components/p-8FN7p701.js → dist/ionic/p-BZVE25Gu.js} +1 -1
  458. package/{components/p-DFvZn99E.js → dist/ionic/p-BZxjcGRP.js} +1 -1
  459. package/dist/ionic/p-B_gJaBk0.js +4 -0
  460. package/dist/ionic/p-BnGA34Pd.js +4 -0
  461. package/dist/ionic/p-ByLaqOPm.js +4 -0
  462. package/dist/ionic/p-C06QNN45.js +4 -0
  463. package/dist/ionic/p-C4IBDDj6.js +4 -0
  464. package/dist/ionic/p-CCVlNZ__.js +4 -0
  465. package/dist/ionic/{p-CMRtMbJc.js → p-CDBop-kz.js} +1 -1
  466. package/dist/ionic/p-CKYcsw8f.js +5 -0
  467. package/dist/ionic/p-CazSodad.js +4 -0
  468. package/{components/p-ia3IDdJS.js → dist/ionic/p-ClrlQU2y.js} +1 -1
  469. package/dist/ionic/{p-UIBJkZf8.js → p-D0YpjgON.js} +1 -1
  470. package/dist/ionic/p-D0dfUysx.js +4 -0
  471. package/dist/ionic/{p-BB0LlG4y.js → p-D9yvytgv.js} +1 -1
  472. package/{components/p-C5KYjZWD.js → dist/ionic/p-DF_Uqql8.js} +1 -1
  473. package/dist/ionic/{p-BYEAtHr-.js → p-DXJgZWgi.js} +1 -1
  474. package/dist/ionic/{p-D94_RztK.js → p-DdhHqKj-.js} +1 -1
  475. package/dist/ionic/p-De0eY881.js +4 -0
  476. package/dist/ionic/p-DgUL3JbO.js +4 -0
  477. package/dist/ionic/{p-7CBuOvEo.js → p-RzUn7cKs.js} +1 -1
  478. package/dist/ionic/p-VquyMbjp.js +4 -0
  479. package/dist/ionic/p-a0fee899.entry.js +4 -0
  480. package/dist/ionic/p-a54bcd16.entry.js +4 -0
  481. package/dist/ionic/p-aebc4d69.entry.js +4 -0
  482. package/dist/ionic/p-b5f37106.entry.js +4 -0
  483. package/dist/ionic/{p-40424a88.entry.js → p-b62bfce8.entry.js} +1 -1
  484. package/dist/ionic/p-b7a11b58.entry.js +4 -0
  485. package/dist/ionic/p-bbf6878c.entry.js +4 -0
  486. package/dist/ionic/p-c49165af.entry.js +4 -0
  487. package/dist/ionic/p-cad4eccf.entry.js +4 -0
  488. package/dist/ionic/p-cdc5115e.entry.js +4 -0
  489. package/dist/ionic/p-d3384a40.entry.js +4 -0
  490. package/dist/ionic/p-d8bae128.entry.js +4 -0
  491. package/dist/ionic/p-d8deff43.entry.js +4 -0
  492. package/dist/ionic/p-ddfb7e5f.entry.js +4 -0
  493. package/dist/ionic/p-e538f18d.entry.js +4 -0
  494. package/dist/ionic/p-f376876b.entry.js +4 -0
  495. package/dist/ionic/p-f7dd1ed9.entry.js +4 -0
  496. package/dist/ionic/p-fbd83d4c.entry.js +4 -0
  497. package/dist/types/components/refresher/refresher.d.ts +7 -0
  498. package/hydrate/index.js +5450 -8380
  499. package/hydrate/index.mjs +5450 -8380
  500. package/package.json +1 -1
  501. package/components/p--m5cCjbK.js +0 -4
  502. package/components/p-B4uHHhPK.js +0 -4
  503. package/components/p-BNJOu1Q2.js +0 -4
  504. package/components/p-BOvLNVKq.js +0 -4
  505. package/components/p-BeamQXHF.js +0 -4
  506. package/components/p-BjluhQMI.js +0 -4
  507. package/components/p-BlsIikdZ.js +0 -4
  508. package/components/p-BrD9Xv62.js +0 -4
  509. package/components/p-BvJqoZ5R.js +0 -4
  510. package/components/p-Bz6z3Asd.js +0 -4
  511. package/components/p-C6HnVvHO.js +0 -4
  512. package/components/p-C7jvh5Wy.js +0 -4
  513. package/components/p-C9BGR5fy.js +0 -4
  514. package/components/p-CB-y1CdP.js +0 -4
  515. package/components/p-CHH3loEE.js +0 -4
  516. package/components/p-CJKUWjmg.js +0 -4
  517. package/components/p-CMLAwl_N.js +0 -4
  518. package/components/p-CejmQs3h.js +0 -4
  519. package/components/p-CtZqa4HM.js +0 -4
  520. package/components/p-D9qIVSWm.js +0 -4
  521. package/components/p-DE-3iMNW.js +0 -4
  522. package/components/p-DHFt2rdc.js +0 -4
  523. package/components/p-D_RCyzwu.js +0 -4
  524. package/components/p-D_tD8r3L.js +0 -4
  525. package/components/p-DjCtLZbF.js +0 -4
  526. package/components/p-Dmd2xqCe.js +0 -4
  527. package/components/p-G6JR-cr_.js +0 -4
  528. package/components/p-GG5GhznE.js +0 -4
  529. package/components/p-TXPDHL13.js +0 -4
  530. package/components/p-_IKFD3ID.js +0 -4
  531. package/components/p-dKq2jIum.js +0 -4
  532. package/components/p-iYhH60Tc.js +0 -4
  533. package/dist/ionic/p-06ec7136.entry.js +0 -4
  534. package/dist/ionic/p-09fe4fa3.entry.js +0 -4
  535. package/dist/ionic/p-10d45a07.entry.js +0 -4
  536. package/dist/ionic/p-208c8a07.entry.js +0 -4
  537. package/dist/ionic/p-212474fa.entry.js +0 -4
  538. package/dist/ionic/p-2eef1396.entry.js +0 -4
  539. package/dist/ionic/p-347e005d.entry.js +0 -4
  540. package/dist/ionic/p-3a0b3f1d.entry.js +0 -4
  541. package/dist/ionic/p-3b071259.entry.js +0 -4
  542. package/dist/ionic/p-4204184c.entry.js +0 -4
  543. package/dist/ionic/p-47464391.entry.js +0 -4
  544. package/dist/ionic/p-4f9c9126.entry.js +0 -4
  545. package/dist/ionic/p-5JsKPLJD.js +0 -4
  546. package/dist/ionic/p-5bc485c6.entry.js +0 -4
  547. package/dist/ionic/p-603a61e6.entry.js +0 -4
  548. package/dist/ionic/p-60576951.entry.js +0 -4
  549. package/dist/ionic/p-67a81d33.entry.js +0 -4
  550. package/dist/ionic/p-6affb775.entry.js +0 -4
  551. package/dist/ionic/p-6f120c25.entry.js +0 -4
  552. package/dist/ionic/p-71c82b60.entry.js +0 -4
  553. package/dist/ionic/p-79325ffe.entry.js +0 -4
  554. package/dist/ionic/p-7e4d51fa.entry.js +0 -4
  555. package/dist/ionic/p-7f5d4664.entry.js +0 -4
  556. package/dist/ionic/p-80ee82fc.entry.js +0 -4
  557. package/dist/ionic/p-84af7dbc.entry.js +0 -4
  558. package/dist/ionic/p-89ca830a.entry.js +0 -4
  559. package/dist/ionic/p-93b8ec8f.entry.js +0 -4
  560. package/dist/ionic/p-946f65c2.entry.js +0 -4
  561. package/dist/ionic/p-9c4b39fb.entry.js +0 -4
  562. package/dist/ionic/p-B1NEZUzQ.js +0 -4
  563. package/dist/ionic/p-B1ck5iy-.js +0 -4
  564. package/dist/ionic/p-B4FrqdW0.js +0 -4
  565. package/dist/ionic/p-C-94tAim.js +0 -4
  566. package/dist/ionic/p-C-eHZMYE.js +0 -4
  567. package/dist/ionic/p-CaRuIadB.js +0 -4
  568. package/dist/ionic/p-ChhhtsGZ.js +0 -5
  569. package/dist/ionic/p-CzS1qWve.js +0 -4
  570. package/dist/ionic/p-DjjfauRM.js +0 -4
  571. package/dist/ionic/p-DkUB-ROc.js +0 -4
  572. package/dist/ionic/p-DplOqGUv.js +0 -4
  573. package/dist/ionic/p-Dst_XmZh.js +0 -4
  574. package/dist/ionic/p-TXPDHL13.js +0 -4
  575. package/dist/ionic/p-a438b193.entry.js +0 -4
  576. package/dist/ionic/p-babaaaa7.entry.js +0 -4
  577. package/dist/ionic/p-be08d500.entry.js +0 -4
  578. package/dist/ionic/p-be9a4f51.entry.js +0 -4
  579. package/dist/ionic/p-c00d3092.entry.js +0 -4
  580. package/dist/ionic/p-c36dc8f5.entry.js +0 -4
  581. package/dist/ionic/p-c72a7e17.entry.js +0 -4
  582. package/dist/ionic/p-c8edd88c.entry.js +0 -4
  583. package/dist/ionic/p-ce0e380b.entry.js +0 -4
  584. package/dist/ionic/p-ce32912b.entry.js +0 -4
  585. package/dist/ionic/p-d07cf130.entry.js +0 -4
  586. package/dist/ionic/p-d27edeb3.entry.js +0 -4
  587. package/dist/ionic/p-d5d2c506.entry.js +0 -4
  588. package/dist/ionic/p-d5e31ca9.entry.js +0 -4
  589. package/dist/ionic/p-de91444f.entry.js +0 -4
  590. package/dist/ionic/p-df72866d.entry.js +0 -4
  591. package/dist/ionic/p-e47e3151.entry.js +0 -4
  592. package/dist/ionic/p-e621e5e8.entry.js +0 -4
  593. package/dist/ionic/p-eea9cf93.entry.js +0 -4
  594. package/dist/ionic/p-f402f5a4.entry.js +0 -4
  595. package/dist/ionic/p-fe1bfbcf.entry.js +0 -4
  596. package/dist/ionic/p-ffb90460.entry.js +0 -4
@@ -38,190 +38,133 @@ import { getIonMode } from "../../global/ionic-global";
38
38
  * @part end - The wrapper element for the content in the end slot. When the label is floating or stacked, this part also contains the dropdown icon.
39
39
  */
40
40
  export class Select {
41
- inputId = `ion-sel-${selectIds++}`;
42
- helperTextId = `${this.inputId}-helper-text`;
43
- errorTextId = `${this.inputId}-error-text`;
44
- overlay;
45
- focusEl;
46
- mutationO;
47
- inheritedAttributes = {};
48
- slotMutationController;
49
- nativeWrapperEl;
50
- notchSpacerEl;
51
- validationObserver;
52
- notchController;
53
- startContainerController;
54
- startContainerEl;
55
- customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
56
- el;
57
- isExpanded = false;
58
- /**
59
- * The `hasFocus` state ensures the focus class is
60
- * added regardless of how the element is focused.
61
- * The `ion-focused` class only applies when focused
62
- * via tabbing, not by clicking.
63
- * The `has-focus` logic was added to ensure the class
64
- * is applied in both cases.
65
- */
66
- hasFocus = false;
67
- /**
68
- * Track validation state for proper aria-live announcements.
69
- */
70
- isInvalid = false;
71
- hintTextId;
72
- /**
73
- * The text to display on the cancel button.
74
- */
75
- cancelText = 'Cancel';
76
- /**
77
- * The color to use from your application's color palette.
78
- * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
79
- * For more information on colors, see [theming](/docs/theming/basics).
80
- *
81
- * This property is only available when using the modern select syntax.
82
- */
83
- color;
84
- /**
85
- * This property allows developers to specify a custom function or property
86
- * name for comparing objects when determining the selected option in the
87
- * ion-select. When not specified, the default behavior will use strict
88
- * equality (===) for comparison.
89
- */
90
- compareWith;
91
- /**
92
- * If `true`, the user cannot interact with the select.
93
- */
94
- disabled = false;
95
- /**
96
- * The fill for the item. If `"solid"` the item will have a background. If
97
- * `"outline"` the item will be transparent with a border. Only available in `md` mode.
98
- */
99
- fill;
100
- /**
101
- * Text that is placed under the select and displayed when an error is detected.
102
- */
103
- errorText;
104
- /**
105
- * Text that is placed under the select and displayed when no error is detected.
106
- */
107
- helperText;
108
- /**
109
- * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`.
110
- */
111
- interface = 'alert';
112
- /**
113
- * Any additional options that the `alert`, `action-sheet` or `popover` interface
114
- * can take. See the [ion-alert docs](./alert), the
115
- * [ion-action-sheet docs](./action-sheet), the
116
- * [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the
117
- * create options for each interface.
118
- *
119
- * Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface.
120
- */
121
- interfaceOptions = {};
122
- /**
123
- * How to pack the label and select within a line.
124
- * `justify` does not apply when the label and select
125
- * are on different lines when `labelPlacement` is set to
126
- * `"floating"` or `"stacked"`.
127
- * `"start"`: The label and select will appear on the left in LTR and
128
- * on the right in RTL.
129
- * `"end"`: The label and select will appear on the right in LTR and
130
- * on the left in RTL.
131
- * `"space-between"`: The label and select will appear on opposite
132
- * ends of the line with space between the two elements.
133
- */
134
- justify;
135
- /**
136
- * The visible label associated with the select.
137
- *
138
- * Use this if you need to render a plaintext label.
139
- *
140
- * The `label` property will take priority over the `label` slot if both are used.
141
- */
142
- label;
143
- /**
144
- * Where to place the label relative to the select.
145
- * `"start"`: The label will appear to the left of the select in LTR and to the right in RTL.
146
- * `"end"`: The label will appear to the right of the select in LTR and to the left in RTL.
147
- * `"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.
148
- * `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value.
149
- * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
150
- * When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`.
151
- */
152
- labelPlacement = 'start';
153
- /**
154
- * If `true`, the select can accept multiple values.
155
- */
156
- multiple = false;
157
- /**
158
- * The name of the control, which is submitted with the form data.
159
- */
160
- name = this.inputId;
161
- /**
162
- * The text to display on the ok button.
163
- */
164
- okText = 'OK';
165
- /**
166
- * The text to display when the select is empty.
167
- */
168
- placeholder;
169
- /**
170
- * The text to display instead of the selected option's value.
171
- */
172
- selectedText;
173
- /**
174
- * The toggle icon to use. Defaults to `chevronExpand` for `ios` mode,
175
- * or `caretDownSharp` for `md` mode.
176
- */
177
- toggleIcon;
178
- /**
179
- * The toggle icon to show when the select is open. If defined, the icon
180
- * rotation behavior in `md` mode will be disabled. If undefined, `toggleIcon`
181
- * will be used for when the select is both open and closed.
182
- */
183
- expandedIcon;
184
- /**
185
- * The shape of the select. If "round" it will have an increased border radius.
186
- */
187
- shape;
188
- /**
189
- * The value of the select.
190
- */
191
- value;
192
- /**
193
- * If true, screen readers will announce it as a required field. This property
194
- * works only for accessibility purposes, it will not prevent the form from
195
- * submitting if the value is invalid.
196
- */
197
- required = false;
198
- /**
199
- * Emitted when the value has changed.
200
- *
201
- * This event will not emit when programmatically setting the `value` property.
202
- */
203
- ionChange;
204
- /**
205
- * Emitted when the selection is cancelled.
206
- */
207
- ionCancel;
208
- /**
209
- * Emitted when the overlay is dismissed.
210
- */
211
- ionDismiss;
212
- /**
213
- * Emitted when the select has focus.
214
- */
215
- ionFocus;
216
- /**
217
- * Emitted when the select loses focus.
218
- */
219
- ionBlur;
220
- /**
221
- * Emitted when the styles change.
222
- * @internal
223
- */
224
- ionStyle;
41
+ constructor() {
42
+ this.inputId = `ion-sel-${selectIds++}`;
43
+ this.helperTextId = `${this.inputId}-helper-text`;
44
+ this.errorTextId = `${this.inputId}-error-text`;
45
+ this.inheritedAttributes = {};
46
+ this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
47
+ this.isExpanded = false;
48
+ /**
49
+ * The `hasFocus` state ensures the focus class is
50
+ * added regardless of how the element is focused.
51
+ * The `ion-focused` class only applies when focused
52
+ * via tabbing, not by clicking.
53
+ * The `has-focus` logic was added to ensure the class
54
+ * is applied in both cases.
55
+ */
56
+ this.hasFocus = false;
57
+ /**
58
+ * Track validation state for proper aria-live announcements.
59
+ */
60
+ this.isInvalid = false;
61
+ /**
62
+ * The text to display on the cancel button.
63
+ */
64
+ this.cancelText = 'Cancel';
65
+ /**
66
+ * If `true`, the user cannot interact with the select.
67
+ */
68
+ this.disabled = false;
69
+ /**
70
+ * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`.
71
+ */
72
+ this.interface = 'alert';
73
+ /**
74
+ * Any additional options that the `alert`, `action-sheet` or `popover` interface
75
+ * can take. See the [ion-alert docs](./alert), the
76
+ * [ion-action-sheet docs](./action-sheet), the
77
+ * [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the
78
+ * create options for each interface.
79
+ *
80
+ * Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface.
81
+ */
82
+ this.interfaceOptions = {};
83
+ /**
84
+ * Where to place the label relative to the select.
85
+ * `"start"`: The label will appear to the left of the select in LTR and to the right in RTL.
86
+ * `"end"`: The label will appear to the right of the select in LTR and to the left in RTL.
87
+ * `"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.
88
+ * `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value.
89
+ * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
90
+ * When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`.
91
+ */
92
+ this.labelPlacement = 'start';
93
+ /**
94
+ * If `true`, the select can accept multiple values.
95
+ */
96
+ this.multiple = false;
97
+ /**
98
+ * The name of the control, which is submitted with the form data.
99
+ */
100
+ this.name = this.inputId;
101
+ /**
102
+ * The text to display on the ok button.
103
+ */
104
+ this.okText = 'OK';
105
+ /**
106
+ * If true, screen readers will announce it as a required field. This property
107
+ * works only for accessibility purposes, it will not prevent the form from
108
+ * submitting if the value is invalid.
109
+ */
110
+ this.required = false;
111
+ this.onClick = (ev) => {
112
+ const target = ev.target;
113
+ const closestSlot = target.closest('[slot="start"], [slot="end"]');
114
+ if (target === this.el || closestSlot === null) {
115
+ this.setFocus();
116
+ this.open(ev);
117
+ }
118
+ else {
119
+ /**
120
+ * Prevent clicks to the start/end slots from opening the select.
121
+ * We ensure the target isn't this element in case the select is slotted
122
+ * in, for example, an item. This would prevent the select from ever
123
+ * being opened since the element itself has slot="start"/"end".
124
+ *
125
+ * Clicking a slotted element also causes a click
126
+ * on the <label> element (since it wraps the slots).
127
+ * Clicking <label> dispatches another click event on
128
+ * the native form control that then bubbles up to this
129
+ * listener. This additional event targets the host
130
+ * element, so the select overlay is opened.
131
+ *
132
+ * When the slotted elements are clicked (and therefore
133
+ * the ancestor <label> element) we want to prevent the label
134
+ * from dispatching another click event.
135
+ *
136
+ * Do not call stopPropagation() because this will cause
137
+ * click handlers on the slotted elements to never fire in React.
138
+ * When developers do onClick in React a native "click" listener
139
+ * is added on the root element, not the slotted element. When that
140
+ * native click listener fires, React then dispatches the synthetic
141
+ * click event on the slotted element. However, if stopPropagation
142
+ * is called then the native click event will never bubble up
143
+ * to the root element.
144
+ */
145
+ ev.preventDefault();
146
+ }
147
+ };
148
+ this.onFocus = () => {
149
+ this.hasFocus = true;
150
+ this.ionFocus.emit();
151
+ };
152
+ this.onBlur = () => {
153
+ this.hasFocus = false;
154
+ this.ionBlur.emit();
155
+ };
156
+ /**
157
+ * Stops propagation for re-dispatched clicks (when already expanded) to
158
+ * prevent double-click events. Allows initial button clicks (from keyboard
159
+ * or mouse) and slotted content clicks to propagate so event delegation
160
+ * works for parent handlers.
161
+ */
162
+ this.onLabelClick = (ev) => {
163
+ if (ev.target === this.focusEl && this.isExpanded) {
164
+ ev.stopPropagation();
165
+ }
166
+ };
167
+ }
225
168
  styleChanged() {
226
169
  this.emitStyle();
227
170
  }
@@ -807,51 +750,6 @@ export class Select {
807
750
  };
808
751
  this.ionStyle.emit(style);
809
752
  }
810
- onClick = (ev) => {
811
- const target = ev.target;
812
- const closestSlot = target.closest('[slot="start"], [slot="end"]');
813
- if (target === this.el || closestSlot === null) {
814
- this.setFocus();
815
- this.open(ev);
816
- }
817
- else {
818
- /**
819
- * Prevent clicks to the start/end slots from opening the select.
820
- * We ensure the target isn't this element in case the select is slotted
821
- * in, for example, an item. This would prevent the select from ever
822
- * being opened since the element itself has slot="start"/"end".
823
- *
824
- * Clicking a slotted element also causes a click
825
- * on the <label> element (since it wraps the slots).
826
- * Clicking <label> dispatches another click event on
827
- * the native form control that then bubbles up to this
828
- * listener. This additional event targets the host
829
- * element, so the select overlay is opened.
830
- *
831
- * When the slotted elements are clicked (and therefore
832
- * the ancestor <label> element) we want to prevent the label
833
- * from dispatching another click event.
834
- *
835
- * Do not call stopPropagation() because this will cause
836
- * click handlers on the slotted elements to never fire in React.
837
- * When developers do onClick in React a native "click" listener
838
- * is added on the root element, not the slotted element. When that
839
- * native click listener fires, React then dispatches the synthetic
840
- * click event on the slotted element. However, if stopPropagation
841
- * is called then the native click event will never bubble up
842
- * to the root element.
843
- */
844
- ev.preventDefault();
845
- }
846
- };
847
- onFocus = () => {
848
- this.hasFocus = true;
849
- this.ionFocus.emit();
850
- };
851
- onBlur = () => {
852
- this.hasFocus = false;
853
- this.ionBlur.emit();
854
- };
855
753
  renderLabel() {
856
754
  const { label } = this;
857
755
  return (h("div", { class: {
@@ -879,17 +777,6 @@ export class Select {
879
777
  get hasLabel() {
880
778
  return this.label !== undefined || this.labelSlot !== null;
881
779
  }
882
- /**
883
- * Stops propagation for re-dispatched clicks (when already expanded) to
884
- * prevent double-click events. Allows initial button clicks (from keyboard
885
- * or mouse) and slotted content clicks to propagate so event delegation
886
- * works for parent handlers.
887
- */
888
- onLabelClick = (ev) => {
889
- if (ev.target === this.focusEl && this.isExpanded) {
890
- ev.stopPropagation();
891
- }
892
- };
893
780
  /**
894
781
  * Renders the outline border with a notch for the label.
895
782
  */
@@ -8,18 +8,17 @@ import { safeCall } from "../../utils/overlays";
8
8
  import { renderOptionLabel } from "../../utils/select-option-render";
9
9
  import { getClassMap } from "../../utils/theme";
10
10
  export class SelectModal {
11
- el;
12
- // Tracks the option that received Enter-keydown so keyup only
13
- // dismisses when the press started on the same option. Prevents
14
- // Enter on the triggering ion-select from auto-dismissing.
15
- pendingEnterTarget = null;
16
- header;
17
- /**
18
- * The text to display on the cancel button.
19
- */
20
- cancelText = 'Close';
21
- multiple;
22
- options = [];
11
+ constructor() {
12
+ // Tracks the option that received Enter-keydown so keyup only
13
+ // dismisses when the press started on the same option. Prevents
14
+ // Enter on the triggering ion-select from auto-dismissing.
15
+ this.pendingEnterTarget = null;
16
+ /**
17
+ * The text to display on the cancel button.
18
+ */
19
+ this.cancelText = 'Close';
20
+ this.options = [];
21
+ }
23
22
  closeModal() {
24
23
  const modal = this.el.closest('ion-modal');
25
24
  if (modal) {
@@ -3,15 +3,8 @@
3
3
  */
4
4
  import { expect } from "@playwright/test";
5
5
  export class SelectModalPage {
6
- page;
7
- multiple;
8
- options = [];
9
- // Locators
10
- modal;
11
- selectModal;
12
- // Event spies
13
- ionModalDidDismiss;
14
6
  constructor(page) {
7
+ this.options = [];
15
8
  this.page = page;
16
9
  }
17
10
  async setup(config, options, multiple = false) {
@@ -11,50 +11,13 @@ import { getIonMode } from "../../global/ionic-global";
11
11
  * @slot end - Content is placed to the right of the select option text in LTR, and to the left in RTL.
12
12
  */
13
13
  export class SelectOption {
14
- inputId = `ion-selopt-${selectOptionIds++}`;
15
- el;
16
- /**
17
- * If `true`, the user cannot interact with the select option.
18
- */
19
- disabled = false;
20
- /**
21
- * The text value of the option.
22
- */
23
- value;
24
- /**
25
- * Text that is placed underneath the option text to provide additional details about the option.
26
- */
27
- description;
28
- /**
29
- * Where the label is placed relative to the option's selection control
30
- * (radio circle or checkbox box) when the option is rendered in an
31
- * `alert`, `popover`, or `modal` interface.
32
- * `"start"`: The label will appear to the left of the radio in LTR and to the right in RTL.
33
- * `"end"`: The label will appear to the right of the radio in LTR and to the left in RTL.
34
- *
35
- * Applies to the `alert`, `popover`, and `modal` interfaces, but has no
36
- * visible effect on radio options in `popover` or `modal` on `md` (the radio control is hidden there).
37
- *
38
- * When unset, the interface picks a default based on mode and control
39
- * type.
40
- */
41
- labelPlacement;
42
- /**
43
- * How to pack the label and the option's selection control within a line.
44
- * `"start"`: The label and radio will appear on the left in LTR and
45
- * on the right in RTL.
46
- * `"end"`: The label and radio will appear on the right in LTR and
47
- * on the left in RTL.
48
- * `"space-between"`: The label and radio will appear on opposite
49
- * ends of the line with space between the two elements.
50
- *
51
- * Applies to the `alert`, `popover`, and `modal` interfaces, but has no
52
- * visible effect on radio options in `popover` or `modal` on `md` (the radio control is hidden there).
53
- *
54
- * When unset, the interface picks a default based on mode and control
55
- * type.
56
- */
57
- justify;
14
+ constructor() {
15
+ this.inputId = `ion-selopt-${selectOptionIds++}`;
16
+ /**
17
+ * If `true`, the user cannot interact with the select option.
18
+ */
19
+ this.disabled = false;
20
+ }
58
21
  render() {
59
22
  return h(Host, { key: '01275b5a613c4b065b24e0d939f611f6ed1fc9ee', role: "option", id: this.inputId, class: getIonMode(this) });
60
23
  }
@@ -11,31 +11,16 @@ import { getIonMode } from "../../global/ionic-global";
11
11
  * @internal
12
12
  */
13
13
  export class SelectPopover {
14
- el;
15
- // Tracks the option that received Enter-keydown so keyup only
16
- // dismisses when the press started on the same option. Prevents
17
- // Enter on the triggering ion-select from auto-dismissing.
18
- pendingEnterTarget = null;
19
- /**
20
- * The header text of the popover
21
- */
22
- header;
23
- /**
24
- * The subheader text of the popover
25
- */
26
- subHeader;
27
- /**
28
- * The text content of the popover body
29
- */
30
- message;
31
- /**
32
- * If true, the select accepts multiple values
33
- */
34
- multiple;
35
- /**
36
- * An array of options for the popover
37
- */
38
- options = [];
14
+ constructor() {
15
+ // Tracks the option that received Enter-keydown so keyup only
16
+ // dismisses when the press started on the same option. Prevents
17
+ // Enter on the triggering ion-select from auto-dismissing.
18
+ this.pendingEnterTarget = null;
19
+ /**
20
+ * An array of options for the popover
21
+ */
22
+ this.options = [];
23
+ }
39
24
  findOptionFromEvent(ev) {
40
25
  const { options } = this;
41
26
  return options.find((o) => o.value === ev.target.value);
@@ -3,15 +3,8 @@
3
3
  */
4
4
  import { expect } from "@playwright/test";
5
5
  export class SelectPopoverPage {
6
- page;
7
- multiple;
8
- options = [];
9
- // Locators
10
- popover;
11
- selectPopover;
12
- // Event spies
13
- ionPopoverDidDismiss;
14
6
  constructor(page) {
7
+ this.options = [];
15
8
  this.page = page;
16
9
  }
17
10
  async setup(config, options, multiple = false) {
@@ -6,16 +6,12 @@ import { hostContext } from "../../utils/theme";
6
6
  import { config } from "../../global/config";
7
7
  import { getIonMode } from "../../global/ionic-global";
8
8
  export class SkeletonText {
9
- el;
10
- /**
11
- * If `true`, the skeleton text will animate.
12
- */
13
- animated = false;
14
- /**
15
- * Emitted when the styles change.
16
- * @internal
17
- */
18
- ionStyle;
9
+ constructor() {
10
+ /**
11
+ * If `true`, the skeleton text will animate.
12
+ */
13
+ this.animated = false;
14
+ }
19
15
  componentWillLoad() {
20
16
  this.emitStyle();
21
17
  }
@@ -7,25 +7,12 @@ import { config } from "../../global/config";
7
7
  import { getIonMode } from "../../global/ionic-global";
8
8
  import { SPINNERS } from "./spinner-configs";
9
9
  export class Spinner {
10
- /**
11
- * The color to use from your application's color palette.
12
- * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
13
- * For more information on colors, see [theming](/docs/theming/basics).
14
- */
15
- color;
16
- /**
17
- * Duration of the spinner animation in milliseconds. The default varies based on the spinner.
18
- */
19
- duration;
20
- /**
21
- * The name of the SVG spinner to use. If a name is not provided, the platform's default
22
- * spinner will be used.
23
- */
24
- name;
25
- /**
26
- * If `true`, the spinner's animation will be paused.
27
- */
28
- paused = false;
10
+ constructor() {
11
+ /**
12
+ * If `true`, the spinner's animation will be paused.
13
+ */
14
+ this.paused = false;
15
+ }
29
16
  getName() {
30
17
  const spinnerName = this.name || config.get('spinner');
31
18
  const mode = getIonMode(this);