@ionic/core 8.8.18-dev.11786108988.1fd94742 → 8.8.18-dev.11786109471.1285bcfb

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 (788) 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-legacy-column.d.ts +11 -0
  59. package/components/ion-picker-legacy-column.js +4 -0
  60. package/components/ion-picker-legacy.d.ts +11 -0
  61. package/components/ion-picker-legacy.js +4 -0
  62. package/components/ion-picker.js +1 -1
  63. package/components/ion-popover.js +1 -1
  64. package/components/ion-progress-bar.js +1 -1
  65. package/components/ion-radio-group.js +1 -1
  66. package/components/ion-radio.js +1 -1
  67. package/components/ion-range.js +1 -1
  68. package/components/ion-refresher-content.js +1 -1
  69. package/components/ion-refresher.js +1 -1
  70. package/components/ion-reorder-group.js +1 -1
  71. package/components/ion-reorder.js +1 -1
  72. package/components/ion-ripple-effect.js +1 -1
  73. package/components/ion-route-redirect.js +1 -1
  74. package/components/ion-route.js +1 -1
  75. package/components/ion-router-link.js +1 -1
  76. package/components/ion-router-outlet.js +1 -1
  77. package/components/ion-router.js +1 -1
  78. package/components/ion-row.js +1 -1
  79. package/components/ion-searchbar.js +1 -1
  80. package/components/ion-segment-button.js +1 -1
  81. package/components/ion-segment-content.js +1 -1
  82. package/components/ion-segment-view.js +1 -1
  83. package/components/ion-segment.js +1 -1
  84. package/components/ion-select-modal.js +1 -1
  85. package/components/ion-select-option.js +1 -1
  86. package/components/ion-select-popover.js +1 -1
  87. package/components/ion-select.js +1 -1
  88. package/components/ion-skeleton-text.js +1 -1
  89. package/components/ion-spinner.js +1 -1
  90. package/components/ion-split-pane.js +1 -1
  91. package/components/ion-tab-bar.js +1 -1
  92. package/components/ion-tab-button.js +1 -1
  93. package/components/ion-tab.js +1 -1
  94. package/components/ion-tabs.js +1 -1
  95. package/components/ion-text.js +1 -1
  96. package/components/ion-textarea.js +1 -1
  97. package/components/ion-thumbnail.js +1 -1
  98. package/components/ion-title.js +1 -1
  99. package/components/ion-toast.js +1 -1
  100. package/components/ion-toggle.js +1 -1
  101. package/components/ion-toolbar.js +1 -1
  102. package/components/{p-AqD_wmvU.js → p--JUspHvy.js} +1 -1
  103. package/components/p-A3O24YmY.js +4 -0
  104. package/components/p-ABkNVeU9.js +4 -0
  105. package/{dist/ionic/p-CHpEzg-o.js → components/p-B-JJgYSG.js} +1 -1
  106. package/components/p-B9jFTlwE.js +4 -0
  107. package/components/p-BLmJ0zRm.js +4 -0
  108. package/components/p-BMI53wYL.js +4 -0
  109. package/components/p-BMaKgJFV.js +4 -0
  110. package/components/p-BSEgsdFI.js +4 -0
  111. package/components/p-BTEOs1at.js +4 -0
  112. package/{dist/ionic/p-aL0G45tD.js → components/p-BkKAANMJ.js} +1 -1
  113. package/components/p-BlIAuGv2.js +4 -0
  114. package/components/p-Bnsn6KaP.js +4 -0
  115. package/components/p-BsBCoGa-.js +4 -0
  116. package/components/p-Bz0dSlXZ.js +4 -0
  117. package/components/p-C53feagD.js +4 -0
  118. package/components/p-CHqRYvYm.js +4 -0
  119. package/components/p-CQGnMY3n.js +4 -0
  120. package/components/p-CSZf8_j0.js +4 -0
  121. package/components/{p-ltNYIRmI.js → p-C_hpsif8.js} +1 -1
  122. package/components/p-C_xFdyXe.js +4 -0
  123. package/components/p-Cf2jSDS8.js +4 -0
  124. package/components/p-Cfx4M1Bn.js +4 -0
  125. package/components/{p-C6JOi8wS.js → p-ChIZKXUu.js} +1 -1
  126. package/components/p-CkMSOsFF.js +4 -0
  127. package/components/p-Cl0B-RWe.js +4 -0
  128. package/components/p-CmR5uXej.js +4 -0
  129. package/components/p-Cp4GRDqq.js +4 -0
  130. package/components/p-CsNJ1ULL.js +4 -0
  131. package/components/p-CtWGkNnJ.js +4 -0
  132. package/components/p-CzCbeKys.js +4 -0
  133. package/components/p-D-aHdMxW.js +4 -0
  134. package/components/p-D0d8qTwj.js +4 -0
  135. package/components/p-D13Eaw-8.js +4 -0
  136. package/components/{p-D0pL_HuH.js → p-D3xo7hqU.js} +1 -1
  137. package/components/p-D6Ynv7Xh.js +4 -0
  138. package/components/p-D7uN07a3.js +4 -0
  139. package/components/p-DCnGU1fF.js +4 -0
  140. package/components/p-DGvrK8dD.js +4 -0
  141. package/components/p-DOFCbuQR.js +4 -0
  142. package/components/p-DV5mPYQS.js +4 -0
  143. package/components/p-DWkAgceV.js +4 -0
  144. package/components/p-DiVJyqlX.js +4 -0
  145. package/components/{p-Dcu-SAJG.js → p-DqLB8yFQ.js} +1 -1
  146. package/components/p-DqZAXv2t.js +4 -0
  147. package/components/p-Osve4qkc.js +4 -0
  148. package/components/p-R8zmRi4c.js +4 -0
  149. package/components/p-SLS1rDZM.js +4 -0
  150. package/components/p-aJ6PBUvj.js +4 -0
  151. package/components/p-cyNmxje6.js +4 -0
  152. package/components/p-gAg0kXZp.js +4 -0
  153. package/components/p-j5IxBIan.js +4 -0
  154. package/components/p-k_E4tX5Z.js +4 -0
  155. package/components/p-oD4kcBRX.js +4 -0
  156. package/components/p-rCa2eL0j.js +4 -0
  157. package/components/p-scxfI1Dd.js +4 -0
  158. package/components/p-tr4_8ZS8.js +4 -0
  159. package/components/p-vRBNsYbs.js +4 -0
  160. package/components/p-yzCsOZE2.js +4 -0
  161. package/dist/cjs/{animation-D5WDBRvT.js → animation-BJq0kcy2.js} +4 -4
  162. package/dist/cjs/{app-globals-C2s3Cbal.js → app-globals-BlqrqKTN.js} +1 -1
  163. package/dist/cjs/{button-active-CXI2TseG.js → button-active-0mPOKmV2.js} +3 -3
  164. package/dist/cjs/config-xninhj0J.js +201 -0
  165. package/dist/cjs/{dir-Brx7VkvP.js → dir-Cn0z1rJH.js} +1 -1
  166. package/dist/cjs/{format-ZfKtcdit.js → format-PxvGiOik.js} +30 -40
  167. package/dist/cjs/{framework-delegate-Bdvk3JQO.js → framework-delegate-BtICZDHr.js} +7 -5
  168. package/dist/cjs/{gesture-controller-BDUH7687.js → gesture-controller-dtqlP_q4.js} +8 -15
  169. package/dist/cjs/{haptic-Ch-X4gRx.js → haptic-ClPPQ_PS.js} +3 -2
  170. package/dist/cjs/{hardware-back-button-zr8zeYaH.js → hardware-back-button-iUuF_76h.js} +4 -4
  171. package/dist/cjs/{helpers-DURh1XdY.js → helpers-Cv23MFHM.js} +3 -3
  172. package/dist/cjs/{index-DsoHs7Ly.js → index-BERfRao3.js} +5 -5
  173. package/dist/cjs/{index-P1nQxrpZ.js → index-CAvQ7Tka.js} +4 -10
  174. package/dist/cjs/{index-CAThePqm.js → index-Ct7gcRif.js} +6 -4
  175. package/dist/cjs/{index-Btdix80K.js → index-D81eLYUM.js} +2 -2
  176. package/dist/cjs/{index-wOmugbdg.js → index-DqmRDbxg.js} +1 -1
  177. package/dist/cjs/{index-BnhnwL1o.js → index-Dqpns5vP.js} +34 -2
  178. package/dist/cjs/{index-B7sCu6vN.js → index-aC4x3Fk3.js} +7 -6
  179. package/dist/cjs/index.cjs.js +18 -18
  180. package/dist/cjs/{input-shims-CPbWb84M.js → input-shims-DpA1zUN9.js} +11 -9
  181. package/dist/cjs/{input.utils-CkASW3mE.js → input.utils-DetjmtH2.js} +4 -3
  182. package/dist/cjs/ion-accordion_2.cjs.entry.js +340 -368
  183. package/dist/cjs/ion-action-sheet.cjs.entry.js +76 -187
  184. package/dist/cjs/ion-alert.cjs.entry.js +111 -273
  185. package/dist/cjs/ion-app_8.cjs.entry.js +190 -306
  186. package/dist/cjs/ion-avatar_3.cjs.entry.js +4 -10
  187. package/dist/cjs/ion-back-button.cjs.entry.js +23 -47
  188. package/dist/cjs/ion-backdrop.cjs.entry.js +14 -18
  189. package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +121 -199
  190. package/dist/cjs/ion-button_2.cjs.entry.js +66 -138
  191. package/dist/cjs/ion-card_5.cjs.entry.js +30 -82
  192. package/dist/cjs/ion-checkbox.cjs.entry.js +101 -152
  193. package/dist/cjs/ion-chip.cjs.entry.js +11 -17
  194. package/dist/cjs/ion-col_3.cjs.entry.js +10 -134
  195. package/dist/cjs/ion-datetime-button.cjs.entry.js +241 -253
  196. package/dist/cjs/ion-datetime_3.cjs.entry.js +3164 -0
  197. package/dist/cjs/ion-fab_3.cjs.entry.js +81 -139
  198. package/dist/cjs/ion-img.cjs.entry.js +12 -34
  199. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +72 -100
  200. package/dist/cjs/ion-input-otp.cjs.entry.js +370 -433
  201. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +19 -33
  202. package/dist/cjs/ion-input.cjs.entry.js +168 -314
  203. package/dist/cjs/ion-item-option_3.cjs.entry.js +51 -91
  204. package/dist/cjs/ion-item_8.cjs.entry.js +82 -181
  205. package/dist/cjs/ion-loading.cjs.entry.js +60 -146
  206. package/dist/cjs/ion-menu_3.cjs.entry.js +101 -163
  207. package/dist/cjs/ion-modal.cjs.entry.js +283 -482
  208. package/dist/cjs/ion-nav_2.cjs.entry.js +157 -100
  209. package/dist/cjs/ion-picker-column-option.cjs.entry.js +33 -37
  210. package/dist/cjs/ion-picker-column.cjs.entry.js +405 -417
  211. package/dist/cjs/ion-picker.cjs.entry.js +392 -401
  212. package/dist/cjs/ion-popover.cjs.entry.js +205 -319
  213. package/dist/cjs/ion-progress-bar.cjs.entry.js +25 -31
  214. package/dist/cjs/ion-radio_2.cjs.entry.js +133 -206
  215. package/dist/cjs/ion-range.cjs.entry.js +237 -302
  216. package/dist/cjs/ion-refresher_2.cjs.entry.js +94 -166
  217. package/dist/cjs/ion-reorder_2.cjs.entry.js +23 -53
  218. package/dist/cjs/ion-ripple-effect.cjs.entry.js +14 -14
  219. package/dist/cjs/ion-route_4.cjs.entry.js +71 -175
  220. package/dist/cjs/ion-searchbar.cjs.entry.js +200 -291
  221. package/dist/cjs/ion-segment-content.cjs.entry.js +2 -2
  222. package/dist/cjs/ion-segment-view.cjs.entry.js +17 -28
  223. package/dist/cjs/ion-segment_2.cjs.entry.js +126 -169
  224. package/dist/cjs/ion-select-modal.cjs.entry.js +48 -104
  225. package/dist/cjs/ion-select_3.cjs.entry.js +214 -759
  226. package/dist/cjs/ion-spinner.cjs.entry.js +10 -24
  227. package/dist/cjs/ion-split-pane.cjs.entry.js +16 -29
  228. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +41 -100
  229. package/dist/cjs/ion-tab_2.cjs.entry.js +27 -53
  230. package/dist/cjs/ion-text.cjs.entry.js +5 -11
  231. package/dist/cjs/ion-textarea.cjs.entry.js +144 -263
  232. package/dist/cjs/ion-toast.cjs.entry.js +117 -236
  233. package/dist/cjs/ion-toggle.cjs.entry.js +122 -175
  234. package/dist/cjs/{ionic-global-dMut1Czp.js → ionic-global-B-cA6LkY.js} +8 -13
  235. package/dist/cjs/ionic.cjs.js +4 -4
  236. package/dist/cjs/{ios.transition-CeaFa0y2.js → ios.transition-BOSWOaiK.js} +17 -13
  237. package/dist/cjs/{item-multiple-inputs-HQO5Iy9I.js → item-multiple-inputs-D-gyg57c.js} +1 -1
  238. package/dist/cjs/{keyboard-cHxZlTyz.js → keyboard-UuAS4D_9.js} +2 -2
  239. package/dist/cjs/{keyboard-controller-PtZoN2GS.js → keyboard-controller-GXBiBRKS.js} +6 -6
  240. package/dist/cjs/{keyboard-Cix5TVkD.js → keyboard-hHzlEQpk.js} +2 -2
  241. package/dist/cjs/loader.cjs.js +4 -4
  242. package/dist/cjs/{md.transition-D4Q5jny7.js → md.transition-B8-wBZqt.js} +8 -7
  243. package/dist/cjs/{notch-controller-fMfidI-7.js → notch-controller-18PzRGXd.js} +1 -1
  244. package/dist/cjs/{overlays-C2qrqpHm.js → overlays-DdtIYQUH.js} +33 -48
  245. package/dist/cjs/{status-tap-CgjQ-6jq.js → status-tap-N1kaBbuk.js} +3 -3
  246. package/dist/cjs/{swipe-back-CmfRYdWQ.js → swipe-back-C0GCB18x.js} +5 -5
  247. package/dist/cjs/{theme-Bw0rpaNN.js → theme-CeDs6Hcv.js} +1 -6
  248. package/dist/collection/collection-manifest.json +10 -6
  249. package/dist/collection/components/accordion/accordion.js +312 -315
  250. package/dist/collection/components/accordion-group/accordion-group.js +25 -48
  251. package/dist/collection/components/action-sheet/action-sheet.ios.css +2 -228
  252. package/dist/collection/components/action-sheet/action-sheet.js +64 -173
  253. package/dist/collection/components/action-sheet/action-sheet.md.css +2 -174
  254. package/dist/collection/components/action-sheet/test/basic/fixture.js +0 -3
  255. package/dist/collection/components/alert/alert.ios.css +10 -279
  256. package/dist/collection/components/alert/alert.js +97 -257
  257. package/dist/collection/components/alert/alert.md.css +20 -268
  258. package/dist/collection/components/app/app.js +0 -3
  259. package/dist/collection/components/back-button/back-button.js +19 -42
  260. package/dist/collection/components/backdrop/backdrop.js +14 -16
  261. package/dist/collection/components/badge/badge.js +0 -6
  262. package/dist/collection/components/breadcrumb/breadcrumb.js +30 -91
  263. package/dist/collection/components/breadcrumbs/breadcrumbs.js +88 -103
  264. package/dist/collection/components/button/button.js +61 -132
  265. package/dist/collection/components/buttons/buttons.js +15 -13
  266. package/dist/collection/components/card/card.js +21 -54
  267. package/dist/collection/components/card-header/card-header.js +8 -12
  268. package/dist/collection/components/card-subtitle/card-subtitle.js +0 -6
  269. package/dist/collection/components/card-title/card-title.js +0 -6
  270. package/dist/collection/components/checkbox/checkbox.js +97 -147
  271. package/dist/collection/components/chip/chip.js +10 -14
  272. package/dist/collection/components/col/col.js +3 -127
  273. package/dist/collection/components/content/content.js +64 -92
  274. package/dist/collection/components/datetime/datetime.ios.css +2 -42
  275. package/dist/collection/components/datetime/datetime.js +812 -1047
  276. package/dist/collection/components/datetime/datetime.md.css +1 -42
  277. package/dist/collection/components/datetime/utils/data.js +14 -13
  278. package/dist/collection/components/datetime/utils/format.js +11 -21
  279. package/dist/collection/components/datetime/utils/manipulation.js +8 -8
  280. package/dist/collection/components/datetime/utils/parse.js +10 -10
  281. package/dist/collection/components/datetime/utils/state.js +2 -8
  282. package/dist/collection/components/datetime/utils/validate.js +5 -4
  283. package/dist/collection/components/datetime-button/datetime-button.ios.css +0 -5
  284. package/dist/collection/components/datetime-button/datetime-button.js +237 -247
  285. package/dist/collection/components/datetime-button/datetime-button.md.css +0 -5
  286. package/dist/collection/components/fab/fab.js +13 -20
  287. package/dist/collection/components/fab-button/fab-button.js +55 -104
  288. package/dist/collection/components/fab-list/fab-list.js +11 -10
  289. package/dist/collection/components/footer/footer.js +44 -50
  290. package/dist/collection/components/grid/grid.js +6 -4
  291. package/dist/collection/components/header/header.js +25 -35
  292. package/dist/collection/components/img/img.js +10 -34
  293. package/dist/collection/components/infinite-scroll/infinite-scroll.js +66 -73
  294. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +3 -20
  295. package/dist/collection/components/input/input.ios.css +2 -1
  296. package/dist/collection/components/input/input.js +164 -309
  297. package/dist/collection/components/input/input.md.css +2 -1
  298. package/dist/collection/components/input-otp/input-otp.js +366 -428
  299. package/dist/collection/components/input-password-toggle/input-password-toggle.js +16 -29
  300. package/dist/collection/components/item/item.js +53 -99
  301. package/dist/collection/components/item-divider/item-divider.js +10 -15
  302. package/dist/collection/components/item-option/item-option.js +21 -49
  303. package/dist/collection/components/item-options/item-options.js +7 -10
  304. package/dist/collection/components/item-sliding/item-sliding.js +20 -26
  305. package/dist/collection/components/label/label.js +4 -24
  306. package/dist/collection/components/list/list.js +7 -10
  307. package/dist/collection/components/list-header/list-header.js +0 -10
  308. package/dist/collection/components/loading/loading.js +51 -135
  309. package/dist/collection/components/menu/menu.js +59 -101
  310. package/dist/collection/components/menu-button/menu-button.js +20 -29
  311. package/dist/collection/components/menu-toggle/menu-toggle.js +13 -20
  312. package/dist/collection/components/modal/animations/ios.enter.js +1 -1
  313. package/dist/collection/components/modal/animations/md.enter.js +1 -1
  314. package/dist/collection/components/modal/gestures/sheet.js +12 -29
  315. package/dist/collection/components/modal/gestures/swipe-to-close.js +5 -33
  316. package/dist/collection/components/modal/gestures/utils.js +17 -0
  317. package/dist/collection/components/modal/modal.js +224 -393
  318. package/dist/collection/components/modal/safe-area-utils.js +5 -4
  319. package/dist/collection/components/modal/test/fixtures.js +0 -3
  320. package/dist/collection/components/nav/nav.js +247 -69
  321. package/dist/collection/components/nav/view-controller.js +1 -7
  322. package/dist/collection/components/nav-link/nav-link.js +9 -20
  323. package/dist/collection/components/note/note.js +0 -6
  324. package/dist/collection/components/picker/picker.js +390 -398
  325. package/dist/collection/components/picker-column/picker-column.css +0 -3
  326. package/dist/collection/components/picker-column/picker-column.js +404 -414
  327. package/dist/collection/components/picker-column-option/picker-column-option.js +31 -33
  328. package/dist/collection/components/picker-column-option/picker-column-option.md.css +1 -6
  329. package/dist/collection/components/picker-legacy/animations/ios.enter.js +27 -0
  330. package/dist/collection/components/picker-legacy/animations/ios.leave.js +23 -0
  331. package/dist/collection/components/picker-legacy/picker-interface.js +1 -0
  332. package/dist/collection/components/picker-legacy/picker.ios.css +300 -0
  333. package/dist/collection/components/picker-legacy/picker.js +890 -0
  334. package/dist/collection/components/picker-legacy/picker.md.css +287 -0
  335. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +231 -0
  336. package/dist/collection/components/picker-legacy-column/picker-column.js +422 -0
  337. package/dist/collection/components/picker-legacy-column/picker-column.md.css +222 -0
  338. package/dist/collection/components/picker-legacy-column/test/test.utils.js +43 -0
  339. package/dist/collection/components/popover/animations/ios.enter.js +2 -1
  340. package/dist/collection/components/popover/animations/md.enter.js +2 -1
  341. package/dist/collection/components/popover/popover.ios.css +0 -15
  342. package/dist/collection/components/popover/popover.js +185 -302
  343. package/dist/collection/components/popover/popover.md.css +0 -15
  344. package/dist/collection/components/popover/test/fixture.js +0 -1
  345. package/dist/collection/components/popover/utils.js +6 -4
  346. package/dist/collection/components/progress-bar/progress-bar.js +23 -27
  347. package/dist/collection/components/radio/radio.js +66 -102
  348. package/dist/collection/components/radio-group/radio-group.js +65 -100
  349. package/dist/collection/components/radio-group/test/fixtures.js +0 -2
  350. package/dist/collection/components/range/range.js +232 -296
  351. package/dist/collection/components/refresher/refresher.js +80 -112
  352. package/dist/collection/components/refresher-content/refresher-content.js +4 -41
  353. package/dist/collection/components/reorder/reorder.js +1 -2
  354. package/dist/collection/components/reorder-group/reorder-group.js +15 -44
  355. package/dist/collection/components/ripple-effect/ripple-effect.js +13 -12
  356. package/dist/collection/components/route/route.js +10 -39
  357. package/dist/collection/components/route-redirect/route-redirect.js +0 -31
  358. package/dist/collection/components/router/router.js +33 -37
  359. package/dist/collection/components/router/utils/dom.js +7 -25
  360. package/dist/collection/components/router/utils/matching.js +9 -7
  361. package/dist/collection/components/router/utils/parser.js +1 -1
  362. package/dist/collection/components/router/utils/path.js +1 -0
  363. package/dist/collection/components/router-link/router-link.js +12 -37
  364. package/dist/collection/components/router-outlet/router-outlet.js +21 -82
  365. package/dist/collection/components/row/row.js +1 -1
  366. package/dist/collection/components/searchbar/searchbar.js +199 -289
  367. package/dist/collection/components/segment/segment.js +85 -120
  368. package/dist/collection/components/segment-button/segment-button.js +37 -43
  369. package/dist/collection/components/segment-content/segment-content.js +1 -1
  370. package/dist/collection/components/segment-view/segment-view.js +16 -26
  371. package/dist/collection/components/select/select.ios.css +0 -33
  372. package/dist/collection/components/select/select.js +166 -597
  373. package/dist/collection/components/select/select.md.css +0 -33
  374. package/dist/collection/components/select-modal/select-modal.ios.css +0 -218
  375. package/dist/collection/components/select-modal/select-modal.js +38 -92
  376. package/dist/collection/components/select-modal/select-modal.md.css +0 -164
  377. package/dist/collection/components/select-modal/test/fixtures.js +1 -8
  378. package/dist/collection/components/select-option/select-option.js +9 -110
  379. package/dist/collection/components/select-popover/select-popover.ios.css +0 -218
  380. package/dist/collection/components/select-popover/select-popover.js +36 -103
  381. package/dist/collection/components/select-popover/select-popover.md.css +0 -164
  382. package/dist/collection/components/select-popover/test/fixtures.js +1 -8
  383. package/dist/collection/components/skeleton-text/skeleton-text.js +8 -12
  384. package/dist/collection/components/spinner/spinner.js +9 -21
  385. package/dist/collection/components/split-pane/split-pane.js +15 -27
  386. package/dist/collection/components/tab/tab.js +6 -17
  387. package/dist/collection/components/tab-bar/tab-bar.js +14 -32
  388. package/dist/collection/components/tab-button/tab-button.js +23 -62
  389. package/dist/collection/components/tabs/tabs.js +20 -33
  390. package/dist/collection/components/text/text.js +2 -8
  391. package/dist/collection/components/textarea/textarea.js +139 -257
  392. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  393. package/dist/collection/components/title/title.js +2 -18
  394. package/dist/collection/components/toast/toast.js +106 -223
  395. package/dist/collection/components/toggle/toggle.js +115 -167
  396. package/dist/collection/components/toolbar/toolbar.js +7 -15
  397. package/dist/collection/global/config.js +6 -4
  398. package/dist/collection/global/ionic-global.js +2 -8
  399. package/dist/collection/index.js +1 -1
  400. package/dist/collection/utils/animation/animation.js +3 -3
  401. package/dist/collection/utils/config.js +4 -5
  402. package/dist/collection/utils/content/index.js +30 -0
  403. package/dist/collection/utils/focus-controller/index.js +1 -1
  404. package/dist/collection/utils/focus-trap.js +3 -3
  405. package/dist/collection/utils/framework-delegate.js +6 -4
  406. package/dist/collection/utils/gesture/gesture-controller.js +8 -15
  407. package/dist/collection/utils/gesture/index.js +2 -10
  408. package/dist/collection/utils/gesture/listener.js +1 -1
  409. package/dist/collection/utils/hardware-back-button.js +3 -3
  410. package/dist/collection/utils/helpers.js +2 -2
  411. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +5 -4
  412. package/dist/collection/utils/input-shims/hacks/scroll-data.js +2 -1
  413. package/dist/collection/utils/keyboard/keyboard-controller.js +5 -5
  414. package/dist/collection/utils/keyboard/keyboard.js +1 -1
  415. package/dist/collection/utils/menu-controller/index.js +2 -1
  416. package/dist/collection/utils/native/haptic.js +3 -2
  417. package/dist/collection/utils/native/keyboard.js +2 -2
  418. package/dist/collection/utils/native/status-bar.js +1 -1
  419. package/dist/collection/utils/overlays.js +23 -38
  420. package/dist/collection/utils/platform.js +5 -4
  421. package/dist/collection/utils/rtl/dir.js +1 -1
  422. package/dist/collection/utils/sanitization/index.js +20 -276
  423. package/dist/collection/utils/slot-mutation-controller.js +2 -1
  424. package/dist/collection/utils/test/playwright/apply-keyboard-focus.js +1 -1
  425. package/dist/collection/utils/test/playwright/drag-element.js +3 -2
  426. package/dist/collection/utils/test/playwright/generator.js +4 -3
  427. package/dist/collection/utils/test/playwright/page/event-spy.js +12 -11
  428. package/dist/collection/utils/test/playwright/page/utils/goto.js +5 -4
  429. package/dist/collection/utils/test/playwright/page/utils/set-content.js +1 -1
  430. package/dist/collection/utils/test/playwright/page/utils/set-ion-viewport.js +3 -2
  431. package/dist/collection/utils/test/press-keys.js +17 -10
  432. package/dist/collection/utils/theme.js +1 -6
  433. package/dist/collection/utils/transition/ios.transition.js +13 -9
  434. package/dist/collection/utils/transition/md.transition.js +4 -3
  435. package/dist/docs.json +1267 -551
  436. package/dist/esm/{animation-CVK55yMY.js → animation-DLJpuoEz.js} +4 -4
  437. package/dist/esm/{app-globals-Bk1_t4sH.js → app-globals-D0C5S4hU.js} +1 -1
  438. package/dist/esm/{button-active-CdCqmeT0.js → button-active-BSpTQmS9.js} +3 -3
  439. package/dist/esm/config-DQCONYYp.js +195 -0
  440. package/dist/esm/{dir-B-FxiyeI.js → dir-C53feagD.js} +1 -1
  441. package/dist/esm/{format-sMi4BZ_l.js → format-CAmvpAez.js} +31 -41
  442. package/dist/esm/{framework-delegate-BfAlKlW5.js → framework-delegate-FnPGymXL.js} +7 -5
  443. package/dist/esm/{gesture-controller-TXPDHL13.js → gesture-controller-BTEOs1at.js} +8 -15
  444. package/dist/esm/{haptic-Cq4UAeka.js → haptic-DzAMWJuk.js} +3 -2
  445. package/dist/esm/{hardware-back-button-DcHMMB9j.js → hardware-back-button-B93Gru0Y.js} +4 -4
  446. package/dist/esm/{helpers-BPcITY5s.js → helpers-HEqiOzXb.js} +3 -3
  447. package/dist/esm/{index-B9GsUd2c.js → index-BRHzoo00.js} +2 -2
  448. package/dist/esm/{index-DqVqy_Cy.js → index-B_dQk_WE.js} +5 -5
  449. package/dist/esm/{index-DppOcPFQ.js → index-CfgBF1SE.js} +4 -10
  450. package/dist/esm/{index-BvabGprD.js → index-DV3sJJW8.js} +2 -2
  451. package/dist/esm/{index-DcUt1pPn.js → index-Dw-wN0Ja.js} +33 -3
  452. package/dist/esm/{index-ks-BjikL.js → index-Q6UPU0Ay.js} +7 -6
  453. package/dist/esm/{index-D1CQtpUN.js → index-tcQvqkiX.js} +7 -5
  454. package/dist/esm/index.js +15 -16
  455. package/dist/esm/{input-shims-C1dCKVMO.js → input-shims-LXhI7LEx.js} +11 -9
  456. package/dist/esm/{input.utils-Dd5xwlP6.js → input.utils-Y6NgW8bw.js} +4 -3
  457. package/dist/esm/ion-accordion_2.entry.js +340 -368
  458. package/dist/esm/ion-action-sheet.entry.js +76 -187
  459. package/dist/esm/ion-alert.entry.js +110 -272
  460. package/dist/esm/ion-app_8.entry.js +190 -306
  461. package/dist/esm/ion-avatar_3.entry.js +4 -10
  462. package/dist/esm/ion-back-button.entry.js +23 -47
  463. package/dist/esm/ion-backdrop.entry.js +14 -18
  464. package/dist/esm/ion-breadcrumb_2.entry.js +121 -199
  465. package/dist/esm/ion-button_2.entry.js +66 -138
  466. package/dist/esm/ion-card_5.entry.js +30 -82
  467. package/dist/esm/ion-checkbox.entry.js +101 -152
  468. package/dist/esm/ion-chip.entry.js +11 -17
  469. package/dist/esm/ion-col_3.entry.js +10 -134
  470. package/dist/esm/ion-datetime-button.entry.js +241 -253
  471. package/dist/esm/ion-datetime_3.entry.js +3160 -0
  472. package/dist/esm/ion-fab_3.entry.js +81 -139
  473. package/dist/esm/ion-img.entry.js +12 -34
  474. package/dist/esm/ion-infinite-scroll_2.entry.js +71 -99
  475. package/dist/esm/ion-input-otp.entry.js +370 -433
  476. package/dist/esm/ion-input-password-toggle.entry.js +19 -33
  477. package/dist/esm/ion-input.entry.js +168 -314
  478. package/dist/esm/ion-item-option_3.entry.js +51 -91
  479. package/dist/esm/ion-item_8.entry.js +82 -181
  480. package/dist/esm/ion-loading.entry.js +59 -145
  481. package/dist/esm/ion-menu_3.entry.js +101 -163
  482. package/dist/esm/ion-modal.entry.js +271 -470
  483. package/dist/esm/ion-nav_2.entry.js +157 -100
  484. package/dist/esm/ion-picker-column-option.entry.js +33 -37
  485. package/dist/esm/ion-picker-column.entry.js +405 -417
  486. package/dist/esm/ion-picker.entry.js +392 -401
  487. package/dist/esm/ion-popover.entry.js +205 -319
  488. package/dist/esm/ion-progress-bar.entry.js +25 -31
  489. package/dist/esm/ion-radio_2.entry.js +133 -206
  490. package/dist/esm/ion-range.entry.js +237 -302
  491. package/dist/esm/ion-refresher_2.entry.js +92 -164
  492. package/dist/esm/ion-reorder_2.entry.js +23 -53
  493. package/dist/esm/ion-ripple-effect.entry.js +14 -14
  494. package/dist/esm/ion-route_4.entry.js +71 -175
  495. package/dist/esm/ion-searchbar.entry.js +200 -291
  496. package/dist/esm/ion-segment-content.entry.js +2 -2
  497. package/dist/esm/ion-segment-view.entry.js +17 -28
  498. package/dist/esm/ion-segment_2.entry.js +126 -169
  499. package/dist/esm/ion-select-modal.entry.js +48 -104
  500. package/dist/esm/ion-select_3.entry.js +215 -760
  501. package/dist/esm/ion-spinner.entry.js +10 -24
  502. package/dist/esm/ion-split-pane.entry.js +16 -29
  503. package/dist/esm/ion-tab-bar_2.entry.js +41 -100
  504. package/dist/esm/ion-tab_2.entry.js +27 -53
  505. package/dist/esm/ion-text.entry.js +5 -11
  506. package/dist/esm/ion-textarea.entry.js +144 -263
  507. package/dist/esm/ion-toast.entry.js +116 -235
  508. package/dist/esm/ion-toggle.entry.js +122 -175
  509. package/dist/esm/{ionic-global-5bZ91kOL.js → ionic-global-Cp_eT4sZ.js} +8 -13
  510. package/dist/esm/ionic.js +5 -5
  511. package/dist/esm/{ios.transition-OcwIGkv9.js → ios.transition-ClFrsIrS.js} +17 -13
  512. package/dist/esm/{item-multiple-inputs-ifd3ZrqY.js → item-multiple-inputs-DlNuqNJm.js} +1 -1
  513. package/dist/esm/{keyboard-DAF8GNJ9.js → keyboard-CUw4ekVy.js} +2 -2
  514. package/dist/esm/{keyboard-controller-DEwoa1ev.js → keyboard-controller-BaaVITYt.js} +6 -6
  515. package/dist/esm/{keyboard-Cj8mLJeq.js → keyboard-ywgs5efA.js} +2 -2
  516. package/dist/esm/loader.js +5 -5
  517. package/dist/esm/{md.transition-BetdF0bc.js → md.transition-D0msQmzI.js} +8 -7
  518. package/dist/esm/{notch-controller-DBSn-Uat.js → notch-controller-DKDjU_O7.js} +1 -1
  519. package/dist/esm/{overlays-DUzb9CQf.js → overlays-Dg0q2_tJ.js} +33 -48
  520. package/dist/esm/{status-tap-C-wNhea0.js → status-tap-vO-6s4Yp.js} +3 -3
  521. package/dist/esm/{swipe-back-D6YSgAn7.js → swipe-back-DQ1q5MgD.js} +5 -5
  522. package/dist/esm/{theme-byZM6qHV.js → theme-DiVJyqlX.js} +1 -6
  523. package/dist/html.html-data.json +80 -52
  524. package/dist/ionic/index.esm.js +1 -1
  525. package/dist/ionic/ionic.esm.js +1 -1
  526. package/dist/ionic/p-01f81ea5.entry.js +4 -0
  527. package/dist/ionic/p-06c232a4.entry.js +4 -0
  528. package/dist/ionic/p-0caa922c.entry.js +4 -0
  529. package/dist/ionic/p-0dc33652.entry.js +4 -0
  530. package/dist/ionic/p-0fa9c382.entry.js +4 -0
  531. package/dist/ionic/p-10e833ef.entry.js +4 -0
  532. package/dist/ionic/p-21eb76d5.entry.js +4 -0
  533. package/dist/ionic/p-27d30585.entry.js +4 -0
  534. package/dist/ionic/p-2a05aa64.entry.js +4 -0
  535. package/dist/ionic/p-2b204c59.entry.js +4 -0
  536. package/dist/ionic/p-2bb2cb18.entry.js +4 -0
  537. package/dist/ionic/p-2fa58e80.entry.js +4 -0
  538. package/dist/ionic/p-3353c229.entry.js +4 -0
  539. package/dist/ionic/p-34586ead.entry.js +4 -0
  540. package/dist/ionic/p-37e720da.entry.js +4 -0
  541. package/dist/ionic/p-390ca786.entry.js +4 -0
  542. package/dist/ionic/p-3ae5f277.entry.js +4 -0
  543. package/dist/ionic/p-4654ae1c.entry.js +4 -0
  544. package/dist/ionic/p-4745f534.entry.js +4 -0
  545. package/dist/ionic/p-4858af1f.entry.js +4 -0
  546. package/dist/ionic/p-4baa5b82.entry.js +4 -0
  547. package/dist/ionic/p-4e92a11f.entry.js +4 -0
  548. package/dist/ionic/p-5018dfc8.entry.js +4 -0
  549. package/dist/ionic/p-50e1194a.entry.js +4 -0
  550. package/dist/ionic/p-5334df12.entry.js +4 -0
  551. package/dist/ionic/p-5d1da0a2.entry.js +4 -0
  552. package/dist/ionic/p-5eb8e86d.entry.js +4 -0
  553. package/dist/ionic/p-65ebdf1b.entry.js +4 -0
  554. package/dist/ionic/p-746fa988.entry.js +4 -0
  555. package/dist/ionic/p-75dc25ba.entry.js +4 -0
  556. package/dist/ionic/p-7c319341.entry.js +4 -0
  557. package/dist/ionic/p-8158d422.entry.js +4 -0
  558. package/dist/ionic/p-829367ed.entry.js +4 -0
  559. package/dist/ionic/p-84d5ce05.entry.js +4 -0
  560. package/dist/ionic/p-874b4bd8.entry.js +4 -0
  561. package/dist/ionic/p-8eb8ee76.entry.js +4 -0
  562. package/dist/ionic/p-9eeaBrnk.js +4 -0
  563. package/dist/ionic/p-9f9db3a2.entry.js +4 -0
  564. package/dist/ionic/p-BGqMS-oh.js +4 -0
  565. package/dist/ionic/p-BTEOs1at.js +4 -0
  566. package/dist/ionic/p-BUFIpxKM.js +4 -0
  567. package/dist/ionic/p-C0eMdTCW.js +4 -0
  568. package/dist/ionic/p-C53feagD.js +4 -0
  569. package/dist/ionic/p-CFlfIb2g.js +4 -0
  570. package/dist/ionic/p-CKvCXMs9.js +4 -0
  571. package/dist/ionic/p-Cl0B-RWe.js +4 -0
  572. package/dist/ionic/p-CmcFnK-B.js +4 -0
  573. package/dist/ionic/p-CtWGkNnJ.js +4 -0
  574. package/dist/ionic/p-Cx3IXROA.js +4 -0
  575. package/dist/ionic/p-D-3ycHmd.js +4 -0
  576. package/dist/ionic/p-D13Eaw-8.js +4 -0
  577. package/dist/ionic/p-D4uTWt4-.js +4 -0
  578. package/{components/p-Cwsd9bue.js → dist/ionic/p-DC3RagnA.js} +1 -1
  579. package/dist/ionic/{p-BNKr91bi.js → p-DIuEbVLu.js} +1 -1
  580. package/dist/ionic/{p-BvabGprD.js → p-DV3sJJW8.js} +1 -1
  581. package/dist/ionic/p-DiVJyqlX.js +4 -0
  582. package/dist/ionic/{p-I9ETXg5W.js → p-DoJvtrbw.js} +1 -1
  583. package/dist/ionic/p-DqN5EA2O.js +4 -0
  584. package/dist/ionic/p-DzWaWHGc.js +4 -0
  585. package/{components/p-BXQ7upSC.js → dist/ionic/p-KjNvRoEp.js} +1 -1
  586. package/dist/ionic/p-Nqf6uvGh.js +4 -0
  587. package/dist/ionic/p-SNAkTDfm.js +4 -0
  588. package/dist/ionic/p-VAemlbDS.js +4 -0
  589. package/dist/ionic/p-a3bdcae6.entry.js +4 -0
  590. package/dist/ionic/{p-460da491.entry.js → p-aaeedb6b.entry.js} +1 -1
  591. package/dist/ionic/p-af55a72f.entry.js +4 -0
  592. package/dist/ionic/p-b2020591.entry.js +4 -0
  593. package/dist/ionic/p-b9fadbfe.entry.js +4 -0
  594. package/dist/ionic/p-biz8zWmJ.js +4 -0
  595. package/dist/ionic/p-c0fb8edd.entry.js +4 -0
  596. package/dist/ionic/p-c38b648e.entry.js +4 -0
  597. package/dist/ionic/p-c4d8641b.entry.js +4 -0
  598. package/dist/ionic/{p-b40c9715.entry.js → p-c6e49f3f.entry.js} +1 -1
  599. package/dist/ionic/p-ca2ab74d.entry.js +4 -0
  600. package/dist/ionic/p-d1aac015.entry.js +4 -0
  601. package/dist/ionic/p-d889ff6d.entry.js +4 -0
  602. package/dist/ionic/p-dfa8d673.entry.js +4 -0
  603. package/dist/ionic/p-ef4c3bee.entry.js +4 -0
  604. package/dist/ionic/p-f386f6ae.entry.js +4 -0
  605. package/dist/ionic/p-mjKAFv89.js +4 -0
  606. package/dist/ionic/p-tcQvqkiX.js +5 -0
  607. package/dist/ionic/p-uWtqTrG8.js +4 -0
  608. package/dist/ionic/p-viFHDgRs.js +4 -0
  609. package/dist/ionic/p-xWb6fgfq.js +4 -0
  610. package/dist/types/components/img/img.d.ts +0 -2
  611. package/dist/types/components/input/input.d.ts +1 -1
  612. package/dist/types/components/modal/gestures/utils.d.ts +11 -0
  613. package/dist/types/components/modal/modal.d.ts +4 -11
  614. package/dist/types/components/nav/nav-interface.d.ts +1 -0
  615. package/dist/types/components/nav/nav.d.ts +22 -2
  616. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +5 -0
  617. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +5 -0
  618. package/dist/types/components/picker-legacy/picker-interface.d.ts +52 -0
  619. package/dist/types/components/picker-legacy/picker.d.ts +158 -0
  620. package/dist/types/components/picker-legacy-column/picker-column.d.ts +46 -0
  621. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +9 -0
  622. package/dist/types/components/route/route.d.ts +1 -1
  623. package/dist/types/components/router-outlet/router-outlet.d.ts +0 -7
  624. package/dist/types/components/searchbar/searchbar.d.ts +1 -1
  625. package/dist/types/components/select/select-interface.d.ts +0 -31
  626. package/dist/types/components/select/select.d.ts +0 -18
  627. package/dist/types/components/select-option/select-option.d.ts +1 -42
  628. package/dist/types/components.d.ts +311 -74
  629. package/dist/types/index.d.ts +1 -1
  630. package/dist/types/interface.d.ts +1 -0
  631. package/dist/types/utils/config.d.ts +8 -0
  632. package/dist/types/utils/content/index.d.ts +12 -0
  633. package/dist/types/utils/overlays.d.ts +9 -11
  634. package/dist/types/utils/sanitization/index.d.ts +2 -58
  635. package/dist/types/utils/test/playwright/playwright-page.d.ts +1 -1
  636. package/dist/types/utils/test/playwright/testExpect.d.ts +1 -1
  637. package/hydrate/index.js +7103 -10331
  638. package/hydrate/index.mjs +7103 -10331
  639. package/package.json +11 -54
  640. package/components/p-0tt0PTAe.js +0 -4
  641. package/components/p-3dKnMgX5.js +0 -4
  642. package/components/p-6e_5igwn.js +0 -4
  643. package/components/p-B-FxiyeI.js +0 -4
  644. package/components/p-B4COLbAV.js +0 -4
  645. package/components/p-B9zzUBwR.js +0 -4
  646. package/components/p-BFU7kgcj.js +0 -4
  647. package/components/p-BMPN55of.js +0 -4
  648. package/components/p-BPbRjpb2.js +0 -4
  649. package/components/p-BSQPZ79H.js +0 -4
  650. package/components/p-BhamHSw3.js +0 -4
  651. package/components/p-BrXE0XUu.js +0 -4
  652. package/components/p-Bv7Rqz3Z.js +0 -4
  653. package/components/p-Bw7MMRH7.js +0 -4
  654. package/components/p-C-X5vb8f.js +0 -4
  655. package/components/p-C117Majq.js +0 -4
  656. package/components/p-CCVPk59A.js +0 -4
  657. package/components/p-CEW4RXZO.js +0 -4
  658. package/components/p-CKMc290p.js +0 -4
  659. package/components/p-CO5nI-BZ.js +0 -4
  660. package/components/p-COQ_7Wwc.js +0 -4
  661. package/components/p-CQbh6Be_.js +0 -4
  662. package/components/p-CQtcj8t7.js +0 -4
  663. package/components/p-Cap9bvqr.js +0 -4
  664. package/components/p-CdP7ze2J.js +0 -4
  665. package/components/p-CfyJ_Ogc.js +0 -4
  666. package/components/p-ChWC4-vA.js +0 -4
  667. package/components/p-CmKf4pgI.js +0 -4
  668. package/components/p-CqYSqB9_.js +0 -4
  669. package/components/p-D0xd6h3Q.js +0 -4
  670. package/components/p-D28LaDuR.js +0 -4
  671. package/components/p-D7-vHX0A.js +0 -4
  672. package/components/p-D9KqizZs.js +0 -4
  673. package/components/p-DIZE3CVV.js +0 -4
  674. package/components/p-DL8rd5jo.js +0 -4
  675. package/components/p-DRcApg6F.js +0 -4
  676. package/components/p-DTTnwMiS.js +0 -4
  677. package/components/p-DWCzVL3Y.js +0 -4
  678. package/components/p-DYmrV1HT.js +0 -4
  679. package/components/p-DnINLmwC.js +0 -4
  680. package/components/p-DsNz6_gM.js +0 -4
  681. package/components/p-DtiuiOTk.js +0 -4
  682. package/components/p-DunYzubP.js +0 -4
  683. package/components/p-DwcSJ9u1.js +0 -4
  684. package/components/p-QCPSB1bo.js +0 -4
  685. package/components/p-RvtofbHn.js +0 -4
  686. package/components/p-TXPDHL13.js +0 -4
  687. package/components/p-WOFp6fXj.js +0 -4
  688. package/components/p-byZM6qHV.js +0 -4
  689. package/components/p-miSGCTAU.js +0 -4
  690. package/components/p-mpdX3emm.js +0 -4
  691. package/components/p-nvqVLrWC.js +0 -4
  692. package/components/p-qiWM96Sz.js +0 -4
  693. package/components/p-vlF0Bcfd.js +0 -4
  694. package/dist/cjs/config-CjUbvdPW.js +0 -36
  695. package/dist/cjs/index-DhSx3VvD.js +0 -429
  696. package/dist/cjs/ion-datetime.cjs.entry.js +0 -2767
  697. package/dist/cjs/overlay-control-label-D2sdL2O8.js +0 -50
  698. package/dist/cjs/select-option-render-Dh16lTnA.js +0 -123
  699. package/dist/collection/utils/overlay-control-label.js +0 -45
  700. package/dist/collection/utils/select-option-render.js +0 -118
  701. package/dist/esm/config-DWCzVL3Y.js +0 -32
  702. package/dist/esm/index-DDa8edAS.js +0 -424
  703. package/dist/esm/ion-datetime.entry.js +0 -2765
  704. package/dist/esm/overlay-control-label-BSQPZ79H.js +0 -47
  705. package/dist/esm/select-option-render-DsW8svRr.js +0 -121
  706. package/dist/ionic/p-01eaee58.entry.js +0 -4
  707. package/dist/ionic/p-0c567140.entry.js +0 -4
  708. package/dist/ionic/p-105bb794.entry.js +0 -4
  709. package/dist/ionic/p-10d55bb6.entry.js +0 -4
  710. package/dist/ionic/p-173a87d8.entry.js +0 -4
  711. package/dist/ionic/p-178da672.entry.js +0 -4
  712. package/dist/ionic/p-1ead2857.entry.js +0 -4
  713. package/dist/ionic/p-224e2464.entry.js +0 -4
  714. package/dist/ionic/p-2268e718.entry.js +0 -4
  715. package/dist/ionic/p-2b5283f3.entry.js +0 -4
  716. package/dist/ionic/p-2b6decac.entry.js +0 -4
  717. package/dist/ionic/p-2da5d9c6.entry.js +0 -4
  718. package/dist/ionic/p-31890acd.entry.js +0 -4
  719. package/dist/ionic/p-34ef7425.entry.js +0 -4
  720. package/dist/ionic/p-34f7c1d8.entry.js +0 -4
  721. package/dist/ionic/p-3b1e6fa4.entry.js +0 -4
  722. package/dist/ionic/p-42fefd2c.entry.js +0 -4
  723. package/dist/ionic/p-440cd489.entry.js +0 -4
  724. package/dist/ionic/p-53f680e8.entry.js +0 -4
  725. package/dist/ionic/p-57ba508f.entry.js +0 -4
  726. package/dist/ionic/p-599e5a75.entry.js +0 -4
  727. package/dist/ionic/p-5f670a9e.entry.js +0 -4
  728. package/dist/ionic/p-63502088.entry.js +0 -4
  729. package/dist/ionic/p-6e6bf45d.entry.js +0 -4
  730. package/dist/ionic/p-6f0b6a48.entry.js +0 -4
  731. package/dist/ionic/p-7438c462.entry.js +0 -4
  732. package/dist/ionic/p-747716e7.entry.js +0 -4
  733. package/dist/ionic/p-7759fcaf.entry.js +0 -4
  734. package/dist/ionic/p-7a8338e2.entry.js +0 -4
  735. package/dist/ionic/p-80f9f1dc.entry.js +0 -4
  736. package/dist/ionic/p-83ff4dcb.entry.js +0 -4
  737. package/dist/ionic/p-86f03895.entry.js +0 -4
  738. package/dist/ionic/p-87b8d70e.entry.js +0 -4
  739. package/dist/ionic/p-888236bf.entry.js +0 -4
  740. package/dist/ionic/p-8a92ca23.entry.js +0 -4
  741. package/dist/ionic/p-8c9af4ad.entry.js +0 -4
  742. package/dist/ionic/p-9669f546.entry.js +0 -4
  743. package/dist/ionic/p-9bcd8b74.entry.js +0 -4
  744. package/dist/ionic/p-B-FxiyeI.js +0 -4
  745. package/dist/ionic/p-B2trYd8K.js +0 -4
  746. package/dist/ionic/p-BMPN55of.js +0 -4
  747. package/dist/ionic/p-BSQPZ79H.js +0 -4
  748. package/dist/ionic/p-BSzG1VcX.js +0 -4
  749. package/dist/ionic/p-BVgBHS96.js +0 -4
  750. package/dist/ionic/p-BX2IOAqC.js +0 -4
  751. package/dist/ionic/p-BhamHSw3.js +0 -4
  752. package/dist/ionic/p-BufXJ_A8.js +0 -4
  753. package/dist/ionic/p-C73UOs4m.js +0 -4
  754. package/dist/ionic/p-CUSwMljM.js +0 -4
  755. package/dist/ionic/p-CeOSrSdu.js +0 -4
  756. package/dist/ionic/p-CfkB7_FV.js +0 -4
  757. package/dist/ionic/p-CmKf4pgI.js +0 -4
  758. package/dist/ionic/p-CnM-CMw7.js +0 -4
  759. package/dist/ionic/p-D1CQtpUN.js +0 -5
  760. package/dist/ionic/p-D5t_-oMk.js +0 -4
  761. package/dist/ionic/p-DVYb1IVZ.js +0 -4
  762. package/dist/ionic/p-DWCzVL3Y.js +0 -4
  763. package/dist/ionic/p-DfJ-SVJf.js +0 -4
  764. package/dist/ionic/p-DmXrLsoD.js +0 -4
  765. package/dist/ionic/p-DtLHAMFW.js +0 -4
  766. package/dist/ionic/p-Dtlob2JL.js +0 -4
  767. package/dist/ionic/p-F7ipfyOA.js +0 -4
  768. package/dist/ionic/p-IaXd5VMv.js +0 -4
  769. package/dist/ionic/p-T71k3C35.js +0 -4
  770. package/dist/ionic/p-TXPDHL13.js +0 -4
  771. package/dist/ionic/p-acbb97c3.entry.js +0 -4
  772. package/dist/ionic/p-aeb85531.entry.js +0 -4
  773. package/dist/ionic/p-b157f80d.entry.js +0 -4
  774. package/dist/ionic/p-b158de5d.entry.js +0 -4
  775. package/dist/ionic/p-b852101e.entry.js +0 -4
  776. package/dist/ionic/p-byZM6qHV.js +0 -4
  777. package/dist/ionic/p-c0d81bee.entry.js +0 -4
  778. package/dist/ionic/p-c8a327fb.entry.js +0 -4
  779. package/dist/ionic/p-d42ae99f.entry.js +0 -4
  780. package/dist/ionic/p-d47ff529.entry.js +0 -4
  781. package/dist/ionic/p-eHi73fGE.js +0 -4
  782. package/dist/ionic/p-eeabce92.entry.js +0 -4
  783. package/dist/ionic/p-efc66d77.entry.js +0 -4
  784. package/dist/ionic/p-f6d203dc.entry.js +0 -4
  785. package/dist/ionic/p-u2a770LZ.js +0 -4
  786. package/dist/types/utils/overlay-control-label.d.ts +0 -32
  787. package/dist/types/utils/select-option-render.d.ts +0 -53
  788. /package/components/{p-LpMHEu3v.js → p-CO7fmmxt.js} +0 -0
@@ -3,29 +3,25 @@
3
3
  */
4
4
  'use strict';
5
5
 
6
- var index = require('./index-CAThePqm.js');
7
- var config = require('./config-CjUbvdPW.js');
8
- var notchController = require('./notch-controller-fMfidI-7.js');
6
+ var index = require('./index-Ct7gcRif.js');
7
+ var notchController = require('./notch-controller-18PzRGXd.js');
9
8
  var compareWithUtils = require('./compare-with-utils-DSicavqM.js');
10
9
  var validity = require('./validity-BpS37YFM.js');
11
- var helpers = require('./helpers-DURh1XdY.js');
12
- var overlays = require('./overlays-C2qrqpHm.js');
13
- var dir = require('./dir-Brx7VkvP.js');
14
- var index$2 = require('./index-DhSx3VvD.js');
15
- var theme = require('./theme-Bw0rpaNN.js');
10
+ var helpers = require('./helpers-Cv23MFHM.js');
11
+ var overlays = require('./overlays-DdtIYQUH.js');
12
+ var dir = require('./dir-Cn0z1rJH.js');
13
+ var theme = require('./theme-CeDs6Hcv.js');
16
14
  var watchOptions = require('./watch-options-CviOsrTS.js');
17
- var index$1 = require('./index-wOmugbdg.js');
18
- var ionicGlobal = require('./ionic-global-dMut1Czp.js');
19
- var overlayControlLabel = require('./overlay-control-label-D2sdL2O8.js');
20
- var selectOptionRender = require('./select-option-render-Dh16lTnA.js');
15
+ var index$1 = require('./index-DqmRDbxg.js');
16
+ var ionicGlobal = require('./ionic-global-B-cA6LkY.js');
21
17
  require('./index-DkNv4J_i.js');
22
- require('./hardware-back-button-zr8zeYaH.js');
23
- require('./framework-delegate-Bdvk3JQO.js');
24
- require('./gesture-controller-BDUH7687.js');
18
+ require('./hardware-back-button-iUuF_76h.js');
19
+ require('./framework-delegate-BtICZDHr.js');
20
+ require('./gesture-controller-dtqlP_q4.js');
25
21
 
26
- const selectIosCss = () => `:host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:var(--ion-placeholder-opacity, 0.6);--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--select-text-media-height:1.5em;--select-text-media-width:1.5em;--select-text-gap:12px;--highlight-color:var(--highlight-color-focused);display:block;position:relative;width:100%;min-height:44px;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0}:host(.select-disabled){pointer-events:none}:host(.has-focus) button{border:2px solid #5e9ed6}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;-ms-flex-negative:0;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{-ms-flex:1;flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-text>*+*{-webkit-margin-start:var(--select-text-gap);margin-inline-start:var(--select-text-gap)}.select-text img,.select-text ion-img,.select-text ion-icon,.select-text ion-thumbnail,.select-text ion-avatar{border-radius:var(--select-text-media-border-radius);width:var(--select-text-media-width);height:var(--select-text-media-height);border-width:var(--select-text-media-border-width);border-style:var(--select-text-media-border-style);border-color:var(--select-text-media-border-color)}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.select-wrapper .select-placeholder{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{-ms-flex-positive:1;flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.select-bottom{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:5px;padding-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;border-top:var(--border-width) var(--border-style) var(--border-color);font-size:0.75rem;white-space:normal}:host(.has-focus.ion-valid),:host(.select-expanded.ion-valid),:host(.ion-touched.ion-invalid),:host(.select-expanded.ion-touched.ion-invalid){--border-color:var(--highlight-color)}.select-bottom .error-text{display:none;color:var(--highlight-color-invalid)}.select-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .select-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .select-bottom .helper-text{display:none}.label-text-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.select-justify-start) .select-wrapper{-ms-flex-pack:start;justify-content:start}:host(.select-justify-end) .select-wrapper{-ms-flex-pack:end;justify-content:end}:host(.select-label-placement-start) .select-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;-ms-flex-positive:1;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-focus.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted([slot=start]:last-of-type){-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}::slotted([slot=end]:first-of-type){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host{--border-width:0.55px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));--highlight-height:0px}.select-icon{width:1.125rem;height:1.125rem;color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959))}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 1.125rem - 4px)}:host(.select-disabled){opacity:0.3}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:0;--padding-end:0;--padding-top:0;--padding-bottom:0;aspect-ratio:1}`;
22
+ const selectIosCss = () => `:host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:var(--ion-placeholder-opacity, 0.6);--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;width:100%;min-height:44px;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0}:host(.select-disabled){pointer-events:none}:host(.has-focus) button{border:2px solid #5e9ed6}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;-ms-flex-negative:0;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{-ms-flex:1;flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.select-wrapper .select-placeholder{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{-ms-flex-positive:1;flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.select-bottom{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:5px;padding-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;border-top:var(--border-width) var(--border-style) var(--border-color);font-size:0.75rem;white-space:normal}:host(.has-focus.ion-valid),:host(.select-expanded.ion-valid),:host(.ion-touched.ion-invalid),:host(.select-expanded.ion-touched.ion-invalid){--border-color:var(--highlight-color)}.select-bottom .error-text{display:none;color:var(--highlight-color-invalid)}.select-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .select-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .select-bottom .helper-text{display:none}.label-text-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.select-justify-start) .select-wrapper{-ms-flex-pack:start;justify-content:start}:host(.select-justify-end) .select-wrapper{-ms-flex-pack:end;justify-content:end}:host(.select-label-placement-start) .select-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;-ms-flex-positive:1;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-focus.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted([slot=start]:last-of-type){-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}::slotted([slot=end]:first-of-type){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host{--border-width:0.55px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));--highlight-height:0px}.select-icon{width:1.125rem;height:1.125rem;color:var(--ion-color-step-650, var(--ion-text-color-step-350, #595959))}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 1.125rem - 4px)}:host(.select-disabled){opacity:0.3}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:0;--padding-end:0;--padding-top:0;--padding-bottom:0;aspect-ratio:1}`;
27
23
 
28
- const selectMdCss = () => `:host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:var(--ion-placeholder-opacity, 0.6);--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--select-text-media-height:1.5em;--select-text-media-width:1.5em;--select-text-gap:12px;--highlight-color:var(--highlight-color-focused);display:block;position:relative;width:100%;min-height:44px;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0}:host(.select-disabled){pointer-events:none}:host(.has-focus) button{border:2px solid #5e9ed6}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;-ms-flex-negative:0;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{-ms-flex:1;flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-text>*+*{-webkit-margin-start:var(--select-text-gap);margin-inline-start:var(--select-text-gap)}.select-text img,.select-text ion-img,.select-text ion-icon,.select-text ion-thumbnail,.select-text ion-avatar{border-radius:var(--select-text-media-border-radius);width:var(--select-text-media-width);height:var(--select-text-media-height);border-width:var(--select-text-media-border-width);border-style:var(--select-text-media-border-style);border-color:var(--select-text-media-border-color)}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.select-wrapper .select-placeholder{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{-ms-flex-positive:1;flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.select-bottom{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:5px;padding-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;border-top:var(--border-width) var(--border-style) var(--border-color);font-size:0.75rem;white-space:normal}:host(.has-focus.ion-valid),:host(.select-expanded.ion-valid),:host(.ion-touched.ion-invalid),:host(.select-expanded.ion-touched.ion-invalid){--border-color:var(--highlight-color)}.select-bottom .error-text{display:none;color:var(--highlight-color-invalid)}.select-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .select-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .select-bottom .helper-text{display:none}.label-text-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.select-justify-start) .select-wrapper{-ms-flex-pack:start;justify-content:start}:host(.select-justify-end) .select-wrapper{-ms-flex-pack:end;justify-content:end}:host(.select-label-placement-start) .select-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;-ms-flex-positive:1;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-focus.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted([slot=start]:last-of-type){-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}::slotted([slot=end]:first-of-type){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.select-fill-solid){--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-500, var(--ion-background-color-step-500, gray));--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-solid) .select-wrapper{border-bottom:var(--border-width) var(--border-style) var(--border-color)}:host(.select-expanded.select-fill-solid.ion-valid),:host(.has-focus.select-fill-solid.ion-valid),:host(.select-fill-solid.ion-touched.ion-invalid){--border-color:var(--highlight-color)}:host(.select-fill-solid) .select-bottom{border-top:none}@media (any-hover: hover){:host(.select-fill-solid:hover){--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}}:host(.select-fill-solid.select-expanded),:host(.select-fill-solid.has-focus){--background:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--border-color:var(--highlight-color)}:host(.select-fill-solid) .select-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0px;border-end-start-radius:0px}:host(.label-floating.select-fill-solid) .label-text-wrapper{max-width:calc(100% / 0.75)}:host(.in-item.select-expanded.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.has-focus.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid.select-fill-solid) .select-wrapper .select-icon{color:var(--highlight-color)}:host(.select-fill-outline){--border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3));--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-outline.select-shape-round){--border-radius:28px;--padding-start:32px;--padding-end:32px}:host(.has-focus.select-fill-outline.ion-valid),:host(.select-fill-outline.ion-touched.ion-invalid){--border-color:var(--highlight-color)}@media (any-hover: hover){:host(.select-fill-outline:hover){--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}}:host(.select-fill-outline.select-expanded),:host(.select-fill-outline.has-focus){--border-width:var(--highlight-height);--border-color:var(--highlight-color)}:host(.select-fill-outline) .select-bottom{border-top:none}:host(.select-fill-outline) .select-wrapper{border-bottom:none}:host(.select-ltr.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-fill-outline.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-fill-outline.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-fill-outline.select-label-placement-floating) .label-text-wrapper{position:absolute;max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .label-text-wrapper{position:relative;z-index:1}:host(.label-floating.select-fill-outline) .label-text-wrapper{-webkit-transform:translateY(-32%) scale(0.75);transform:translateY(-32%) scale(0.75);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;max-width:calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75)}:host(.select-fill-outline.select-label-placement-stacked) select,:host(.select-fill-outline.select-label-placement-floating) select{margin-left:0;margin-right:0;margin-top:6px;margin-bottom:6px}:host(.select-fill-outline) .select-outline-container{left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;width:100%;height:100%}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-end{pointer-events:none}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-notch,:host(.select-fill-outline) .select-outline-end{border-top:var(--border-width) var(--border-style) var(--border-color);border-bottom:var(--border-width) var(--border-style) var(--border-color);-webkit-box-sizing:border-box;box-sizing:border-box}:host(.select-fill-outline) .select-outline-notch{max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .notch-spacer{-webkit-padding-end:8px;padding-inline-end:8px;font-size:calc(1em * 0.75);opacity:0;pointer-events:none}:host(.select-fill-outline) .select-outline-start{-webkit-border-start:var(--border-width) var(--border-style) var(--border-color);border-inline-start:var(--border-width) var(--border-style) var(--border-color)}:host(.select-fill-outline) .select-outline-start{border-start-start-radius:var(--border-radius);border-start-end-radius:0px;border-end-end-radius:0px;border-end-start-radius:var(--border-radius)}:host(.select-fill-outline) .select-outline-start{width:calc(var(--padding-start) - 4px)}:host(.select-fill-outline) .select-outline-end{-webkit-border-end:var(--border-width) var(--border-style) var(--border-color);border-inline-end:var(--border-width) var(--border-style) var(--border-color)}:host(.select-fill-outline) .select-outline-end{border-start-start-radius:0px;border-start-end-radius:var(--border-radius);border-end-end-radius:var(--border-radius);border-end-start-radius:0px}:host(.select-fill-outline) .select-outline-end{-ms-flex-positive:1;flex-grow:1}:host(.label-floating.select-fill-outline) .select-outline-notch{border-top:none}:host(.in-item.select-expanded.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.has-focus.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid.select-fill-outline) .select-wrapper .select-icon{color:var(--highlight-color)}:host{--border-width:1px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))));--highlight-height:2px}:host(.select-label-placement-floating.select-expanded) .label-text-wrapper,:host(.select-label-placement-floating.has-focus) .label-text-wrapper,:host(.select-label-placement-stacked.select-expanded) .label-text-wrapper,:host(.select-label-placement-stacked.has-focus) .label-text-wrapper{color:var(--highlight-color)}:host(.has-focus.select-label-placement-floating.ion-valid) .label-text-wrapper,:host(.select-label-placement-floating.ion-touched.ion-invalid) .label-text-wrapper,:host(.has-focus.select-label-placement-stacked.ion-valid) .label-text-wrapper,:host(.select-label-placement-stacked.ion-touched.ion-invalid) .label-text-wrapper{color:var(--highlight-color)}.select-highlight{bottom:-1px;position:absolute;width:100%;height:var(--highlight-height);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform 200ms;transition:-webkit-transform 200ms;transition:transform 200ms;transition:transform 200ms, -webkit-transform 200ms;background:var(--highlight-color)}.select-highlight{inset-inline-start:0}:host(.select-expanded) .select-highlight,:host(.has-focus) .select-highlight{-webkit-transform:scale(1);transform:scale(1)}:host(.in-item) .select-highlight{bottom:0}:host(.in-item) .select-highlight{inset-inline-start:0}.select-icon{width:0.8125rem;-webkit-transition:-webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:transform 0.15s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray))}:host(.select-expanded:not(.has-expanded-icon)) .select-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.in-item.select-expanded) .select-wrapper .select-icon,:host(.in-item.has-focus) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid) .select-wrapper .select-icon{color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray))}:host(.select-expanded) .select-wrapper .select-icon,:host(.has-focus.ion-valid) .select-wrapper .select-icon,:host(.ion-touched.ion-invalid) .select-wrapper .select-icon,:host(.has-focus) .select-wrapper .select-icon{color:var(--highlight-color)}:host(.select-shape-round){--border-radius:16px}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 0.8125rem - 4px)}:host(.select-disabled){opacity:0.38}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:8px;--padding-end:8px;--padding-top:8px;--padding-bottom:8px;aspect-ratio:1;min-height:40px}`;
24
+ const selectMdCss = () => `:host{--padding-top:0px;--padding-end:0px;--padding-bottom:0px;--padding-start:0px;--placeholder-color:currentColor;--placeholder-opacity:var(--ion-placeholder-opacity, 0.6);--background:transparent;--border-style:solid;--highlight-color-focused:var(--ion-color-primary, #0054e9);--highlight-color-valid:var(--ion-color-success, #2dd55b);--highlight-color-invalid:var(--ion-color-danger, #c5000f);--highlight-color:var(--highlight-color-focused);display:block;position:relative;width:100%;min-height:44px;font-family:var(--ion-font-family, inherit);white-space:nowrap;cursor:pointer;z-index:2}:host(.select-label-placement-floating),:host(.select-label-placement-stacked){min-height:56px}:host(.ion-color){--highlight-color-focused:var(--ion-color-base)}:host(.in-item){-ms-flex:1 1 0px;flex:1 1 0}:host(.select-disabled){pointer-events:none}:host(.has-focus) button{border:2px solid #5e9ed6}:host([slot=start]),:host([slot=end]){-ms-flex:initial;flex:initial;width:auto}.select-placeholder{color:var(--placeholder-color);opacity:var(--placeholder-opacity)}button{position:absolute;top:0;left:0;right:0;bottom:0;width:100%;height:100%;margin:0;padding:0;border:0;outline:0;clip:rect(0 0 0 0);opacity:0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none}.select-icon{-webkit-margin-start:4px;margin-inline-start:4px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0;position:relative;-ms-flex-negative:0;flex-shrink:0}:host(.in-item-color) .select-icon{color:inherit}:host(.select-label-placement-stacked) .select-icon,:host(.select-label-placement-floating) .select-icon{position:absolute;height:100%}:host(.select-ltr.select-label-placement-stacked) .select-icon,:host(.select-ltr.select-label-placement-floating) .select-icon{right:var(--padding-end, 0)}:host(.select-rtl.select-label-placement-stacked) .select-icon,:host(.select-rtl.select-label-placement-floating) .select-icon{left:var(--padding-start, 0)}.select-text{-ms-flex:1;flex:1;min-width:16px;font-size:inherit;text-overflow:ellipsis;white-space:inherit;overflow:hidden}.select-wrapper{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:var(--padding-top);padding-bottom:var(--padding-bottom);border-radius:var(--border-radius);display:-ms-flexbox;display:flex;position:relative;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;height:inherit;min-height:inherit;-webkit-transition:background-color 15ms linear;transition:background-color 15ms linear;background:var(--background);line-height:normal;cursor:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.select-wrapper .select-placeholder{-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1)}.select-wrapper-inner{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;overflow:hidden}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{-ms-flex-positive:1;flex-grow:1}:host(.ion-touched.ion-invalid){--highlight-color:var(--highlight-color-invalid)}:host(.ion-valid){--highlight-color:var(--highlight-color-valid)}.select-bottom{-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:5px;padding-bottom:0;display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;border-top:var(--border-width) var(--border-style) var(--border-color);font-size:0.75rem;white-space:normal}:host(.has-focus.ion-valid),:host(.select-expanded.ion-valid),:host(.ion-touched.ion-invalid),:host(.select-expanded.ion-touched.ion-invalid){--border-color:var(--highlight-color)}.select-bottom .error-text{display:none;color:var(--highlight-color-invalid)}.select-bottom .helper-text{display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d))}:host(.ion-touched.ion-invalid) .select-bottom .error-text{display:block}:host(.ion-touched.ion-invalid) .select-bottom .helper-text{display:none}.label-text-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;max-width:200px;-webkit-transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:color 150ms cubic-bezier(0.4, 0, 0.2, 1), transform 150ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 150ms cubic-bezier(0.4, 0, 0.2, 1);pointer-events:none}.label-text,::slotted([slot=label]){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.label-text-wrapper-hidden,.select-outline-notch-hidden{display:none}.native-wrapper{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-webkit-transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);transition:opacity 150ms cubic-bezier(0.4, 0, 0.2, 1);overflow:hidden}:host(.select-justify-space-between) .select-wrapper{-ms-flex-pack:justify;justify-content:space-between}:host(.select-justify-start) .select-wrapper{-ms-flex-pack:start;justify-content:start}:host(.select-justify-end) .select-wrapper{-ms-flex-pack:end;justify-content:end}:host(.select-label-placement-start) .select-wrapper{-ms-flex-direction:row;flex-direction:row}:host(.select-label-placement-start) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-end) .select-wrapper{-ms-flex-direction:row-reverse;flex-direction:row-reverse}:host(.select-label-placement-end) .label-text-wrapper{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:0;margin-bottom:0}:host(.select-label-placement-fixed) .label-text-wrapper{-ms-flex:0 0 100px;flex:0 0 100px;width:100px;min-width:100px;max-width:200px}:host(.select-label-placement-stacked) .select-wrapper,:host(.select-label-placement-floating) .select-wrapper{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:start}:host(.select-label-placement-stacked) .label-text-wrapper,:host(.select-label-placement-floating) .label-text-wrapper{max-width:100%}:host(.select-ltr.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-label-placement-stacked) .native-wrapper,:host(.select-label-placement-floating) .native-wrapper{margin-left:0;margin-right:0;margin-top:1px;margin-bottom:0;-ms-flex-positive:1;flex-grow:1;width:100%}:host(.select-label-placement-floating) .label-text-wrapper{-webkit-transform:translateY(100%) scale(1);transform:translateY(100%) scale(1)}:host(.select-label-placement-floating:not(.label-floating)) .native-wrapper .select-placeholder{opacity:0}:host(.select-expanded.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-focus.select-label-placement-floating) .native-wrapper .select-placeholder,:host(.has-value.select-label-placement-floating) .native-wrapper .select-placeholder{opacity:1}:host(.label-floating) .label-text-wrapper{-webkit-transform:translateY(50%) scale(0.75);transform:translateY(50%) scale(0.75);max-width:calc(100% / 0.75)}::slotted([slot=start]),::slotted([slot=end]){-ms-flex-negative:0;flex-shrink:0}::slotted([slot=start]:last-of-type){-webkit-margin-end:16px;margin-inline-end:16px;-webkit-margin-start:0;margin-inline-start:0}::slotted([slot=end]:first-of-type){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:0;margin-inline-end:0}:host(.select-fill-solid){--background:var(--ion-color-step-50, var(--ion-background-color-step-50, #f2f2f2));--border-color:var(--ion-color-step-500, var(--ion-background-color-step-500, gray));--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-solid) .select-wrapper{border-bottom:var(--border-width) var(--border-style) var(--border-color)}:host(.select-expanded.select-fill-solid.ion-valid),:host(.has-focus.select-fill-solid.ion-valid),:host(.select-fill-solid.ion-touched.ion-invalid){--border-color:var(--highlight-color)}:host(.select-fill-solid) .select-bottom{border-top:none}@media (any-hover: hover){:host(.select-fill-solid:hover){--background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6));--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}}:host(.select-fill-solid.select-expanded),:host(.select-fill-solid.has-focus){--background:var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));--border-color:var(--highlight-color)}:host(.select-fill-solid) .select-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0px;border-end-start-radius:0px}:host(.label-floating.select-fill-solid) .label-text-wrapper{max-width:calc(100% / 0.75)}:host(.in-item.select-expanded.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.has-focus.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid.select-fill-solid) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid.select-fill-solid) .select-wrapper .select-icon{color:var(--highlight-color)}:host(.select-fill-outline){--border-color:var(--ion-color-step-300, var(--ion-background-color-step-300, #b3b3b3));--border-radius:4px;--padding-start:16px;--padding-end:16px;min-height:56px}:host(.select-fill-outline.select-shape-round){--border-radius:28px;--padding-start:32px;--padding-end:32px}:host(.has-focus.select-fill-outline.ion-valid),:host(.select-fill-outline.ion-touched.ion-invalid){--border-color:var(--highlight-color)}@media (any-hover: hover){:host(.select-fill-outline:hover){--border-color:var(--ion-color-step-750, var(--ion-background-color-step-750, #404040))}}:host(.select-fill-outline.select-expanded),:host(.select-fill-outline.has-focus){--border-width:var(--highlight-height);--border-color:var(--highlight-color)}:host(.select-fill-outline) .select-bottom{border-top:none}:host(.select-fill-outline) .select-wrapper{border-bottom:none}:host(.select-ltr.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-ltr.select-fill-outline.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:left top;transform-origin:left top}:host(.select-rtl.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-rtl.select-fill-outline.select-label-placement-floating) .label-text-wrapper{-webkit-transform-origin:right top;transform-origin:right top}:host(.select-fill-outline.select-label-placement-stacked) .label-text-wrapper,:host(.select-fill-outline.select-label-placement-floating) .label-text-wrapper{position:absolute;max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .label-text-wrapper{position:relative;z-index:1}:host(.label-floating.select-fill-outline) .label-text-wrapper{-webkit-transform:translateY(-32%) scale(0.75);transform:translateY(-32%) scale(0.75);margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;max-width:calc((100% - var(--padding-start) - var(--padding-end) - 8px) / 0.75)}:host(.select-fill-outline.select-label-placement-stacked) select,:host(.select-fill-outline.select-label-placement-floating) select{margin-left:0;margin-right:0;margin-top:6px;margin-bottom:6px}:host(.select-fill-outline) .select-outline-container{left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;width:100%;height:100%}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-end{pointer-events:none}:host(.select-fill-outline) .select-outline-start,:host(.select-fill-outline) .select-outline-notch,:host(.select-fill-outline) .select-outline-end{border-top:var(--border-width) var(--border-style) var(--border-color);border-bottom:var(--border-width) var(--border-style) var(--border-color);-webkit-box-sizing:border-box;box-sizing:border-box}:host(.select-fill-outline) .select-outline-notch{max-width:calc(100% - var(--padding-start) - var(--padding-end))}:host(.select-fill-outline) .notch-spacer{-webkit-padding-end:8px;padding-inline-end:8px;font-size:calc(1em * 0.75);opacity:0;pointer-events:none}:host(.select-fill-outline) .select-outline-start{-webkit-border-start:var(--border-width) var(--border-style) var(--border-color);border-inline-start:var(--border-width) var(--border-style) var(--border-color)}:host(.select-fill-outline) .select-outline-start{border-start-start-radius:var(--border-radius);border-start-end-radius:0px;border-end-end-radius:0px;border-end-start-radius:var(--border-radius)}:host(.select-fill-outline) .select-outline-start{width:calc(var(--padding-start) - 4px)}:host(.select-fill-outline) .select-outline-end{-webkit-border-end:var(--border-width) var(--border-style) var(--border-color);border-inline-end:var(--border-width) var(--border-style) var(--border-color)}:host(.select-fill-outline) .select-outline-end{border-start-start-radius:0px;border-start-end-radius:var(--border-radius);border-end-end-radius:var(--border-radius);border-end-start-radius:0px}:host(.select-fill-outline) .select-outline-end{-ms-flex-positive:1;flex-grow:1}:host(.label-floating.select-fill-outline) .select-outline-notch{border-top:none}:host(.in-item.select-expanded.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.has-focus.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid.select-fill-outline) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid.select-fill-outline) .select-wrapper .select-icon{color:var(--highlight-color)}:host{--border-width:1px;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-150, var(--ion-background-color-step-150, rgba(0, 0, 0, 0.13)))));--highlight-height:2px}:host(.select-label-placement-floating.select-expanded) .label-text-wrapper,:host(.select-label-placement-floating.has-focus) .label-text-wrapper,:host(.select-label-placement-stacked.select-expanded) .label-text-wrapper,:host(.select-label-placement-stacked.has-focus) .label-text-wrapper{color:var(--highlight-color)}:host(.has-focus.select-label-placement-floating.ion-valid) .label-text-wrapper,:host(.select-label-placement-floating.ion-touched.ion-invalid) .label-text-wrapper,:host(.has-focus.select-label-placement-stacked.ion-valid) .label-text-wrapper,:host(.select-label-placement-stacked.ion-touched.ion-invalid) .label-text-wrapper{color:var(--highlight-color)}.select-highlight{bottom:-1px;position:absolute;width:100%;height:var(--highlight-height);-webkit-transform:scale(0);transform:scale(0);-webkit-transition:-webkit-transform 200ms;transition:-webkit-transform 200ms;transition:transform 200ms;transition:transform 200ms, -webkit-transform 200ms;background:var(--highlight-color)}.select-highlight{inset-inline-start:0}:host(.select-expanded) .select-highlight,:host(.has-focus) .select-highlight{-webkit-transform:scale(1);transform:scale(1)}:host(.in-item) .select-highlight{bottom:0}:host(.in-item) .select-highlight{inset-inline-start:0}.select-icon{width:0.8125rem;-webkit-transition:-webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);transition:transform 0.15s cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 0.15s cubic-bezier(0.4, 0, 0.2, 1);color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray))}:host(.select-expanded:not(.has-expanded-icon)) .select-icon{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.in-item.select-expanded) .select-wrapper .select-icon,:host(.in-item.has-focus) .select-wrapper .select-icon,:host(.in-item.has-focus.ion-valid) .select-wrapper .select-icon,:host(.in-item.ion-touched.ion-invalid) .select-wrapper .select-icon{color:var(--ion-color-step-500, var(--ion-text-color-step-500, gray))}:host(.select-expanded) .select-wrapper .select-icon,:host(.has-focus.ion-valid) .select-wrapper .select-icon,:host(.ion-touched.ion-invalid) .select-wrapper .select-icon,:host(.has-focus) .select-wrapper .select-icon{color:var(--highlight-color)}:host(.select-shape-round){--border-radius:16px}:host(.select-label-placement-stacked) .select-wrapper-inner,:host(.select-label-placement-floating) .select-wrapper-inner{width:calc(100% - 0.8125rem - 4px)}:host(.select-disabled){opacity:0.38}::slotted(ion-button[slot=start].button-has-icon-only),::slotted(ion-button[slot=end].button-has-icon-only){--border-radius:50%;--padding-start:8px;--padding-end:8px;--padding-top:8px;--padding-bottom:8px;aspect-ratio:1;min-height:40px}`;
29
25
 
30
26
  const Select = class {
31
27
  constructor(hostRef) {
@@ -36,226 +32,138 @@ const Select = class {
36
32
  this.ionFocus = index.createEvent(this, "ionFocus", 7);
37
33
  this.ionBlur = index.createEvent(this, "ionBlur", 7);
38
34
  this.ionStyle = index.createEvent(this, "ionStyle", 7);
35
+ this.inputId = `ion-sel-${selectIds++}`;
36
+ this.helperTextId = `${this.inputId}-helper-text`;
37
+ this.errorTextId = `${this.inputId}-error-text`;
38
+ this.inheritedAttributes = {};
39
+ this.isExpanded = false;
40
+ /**
41
+ * The `hasFocus` state ensures the focus class is
42
+ * added regardless of how the element is focused.
43
+ * The `ion-focused` class only applies when focused
44
+ * via tabbing, not by clicking.
45
+ * The `has-focus` logic was added to ensure the class
46
+ * is applied in both cases.
47
+ */
48
+ this.hasFocus = false;
49
+ /**
50
+ * Track validation state for proper aria-live announcements.
51
+ */
52
+ this.isInvalid = false;
53
+ /**
54
+ * The text to display on the cancel button.
55
+ */
56
+ this.cancelText = 'Cancel';
57
+ /**
58
+ * If `true`, the user cannot interact with the select.
59
+ */
60
+ this.disabled = false;
61
+ /**
62
+ * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`.
63
+ */
64
+ this.interface = 'alert';
65
+ /**
66
+ * Any additional options that the `alert`, `action-sheet` or `popover` interface
67
+ * can take. See the [ion-alert docs](./alert), the
68
+ * [ion-action-sheet docs](./action-sheet), the
69
+ * [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the
70
+ * create options for each interface.
71
+ *
72
+ * Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface.
73
+ */
74
+ this.interfaceOptions = {};
75
+ /**
76
+ * Where to place the label relative to the select.
77
+ * `"start"`: The label will appear to the left of the select in LTR and to the right in RTL.
78
+ * `"end"`: The label will appear to the right of the select in LTR and to the left in RTL.
79
+ * `"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.
80
+ * `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value.
81
+ * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
82
+ * When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`.
83
+ */
84
+ this.labelPlacement = 'start';
85
+ /**
86
+ * If `true`, the select can accept multiple values.
87
+ */
88
+ this.multiple = false;
89
+ /**
90
+ * The name of the control, which is submitted with the form data.
91
+ */
92
+ this.name = this.inputId;
93
+ /**
94
+ * The text to display on the ok button.
95
+ */
96
+ this.okText = 'OK';
97
+ /**
98
+ * If true, screen readers will announce it as a required field. This property
99
+ * works only for accessibility purposes, it will not prevent the form from
100
+ * submitting if the value is invalid.
101
+ */
102
+ this.required = false;
103
+ this.onClick = (ev) => {
104
+ const target = ev.target;
105
+ const closestSlot = target.closest('[slot="start"], [slot="end"]');
106
+ if (target === this.el || closestSlot === null) {
107
+ this.setFocus();
108
+ this.open(ev);
109
+ }
110
+ else {
111
+ /**
112
+ * Prevent clicks to the start/end slots from opening the select.
113
+ * We ensure the target isn't this element in case the select is slotted
114
+ * in, for example, an item. This would prevent the select from ever
115
+ * being opened since the element itself has slot="start"/"end".
116
+ *
117
+ * Clicking a slotted element also causes a click
118
+ * on the <label> element (since it wraps the slots).
119
+ * Clicking <label> dispatches another click event on
120
+ * the native form control that then bubbles up to this
121
+ * listener. This additional event targets the host
122
+ * element, so the select overlay is opened.
123
+ *
124
+ * When the slotted elements are clicked (and therefore
125
+ * the ancestor <label> element) we want to prevent the label
126
+ * from dispatching another click event.
127
+ *
128
+ * Do not call stopPropagation() because this will cause
129
+ * click handlers on the slotted elements to never fire in React.
130
+ * When developers do onClick in React a native "click" listener
131
+ * is added on the root element, not the slotted element. When that
132
+ * native click listener fires, React then dispatches the synthetic
133
+ * click event on the slotted element. However, if stopPropagation
134
+ * is called then the native click event will never bubble up
135
+ * to the root element.
136
+ */
137
+ ev.preventDefault();
138
+ }
139
+ };
140
+ this.onFocus = () => {
141
+ this.hasFocus = true;
142
+ this.ionFocus.emit();
143
+ };
144
+ this.onBlur = () => {
145
+ this.hasFocus = false;
146
+ this.ionBlur.emit();
147
+ };
148
+ /**
149
+ * Stops propagation when the label is clicked,
150
+ * otherwise, two clicks will be triggered.
151
+ */
152
+ this.onLabelClick = (ev) => {
153
+ // Only stop propagation if the click was directly on the label
154
+ // and not on the input or other child elements
155
+ if (ev.target === ev.currentTarget) {
156
+ ev.stopPropagation();
157
+ }
158
+ };
39
159
  }
40
- inputId = `ion-sel-${selectIds++}`;
41
- helperTextId = `${this.inputId}-helper-text`;
42
- errorTextId = `${this.inputId}-error-text`;
43
- overlay;
44
- focusEl;
45
- mutationO;
46
- inheritedAttributes = {};
47
- nativeWrapperEl;
48
- notchSpacerEl;
49
- validationObserver;
50
- notchController;
51
- customHTMLEnabled = index.config.get('innerHTMLTemplatesEnabled', config.ENABLE_HTML_CONTENT_DEFAULT);
52
- get el() { return index.getElement(this); }
53
- isExpanded = false;
54
- /**
55
- * The `hasFocus` state ensures the focus class is
56
- * added regardless of how the element is focused.
57
- * The `ion-focused` class only applies when focused
58
- * via tabbing, not by clicking.
59
- * The `has-focus` logic was added to ensure the class
60
- * is applied in both cases.
61
- */
62
- hasFocus = false;
63
- /**
64
- * Track validation state for proper aria-live announcements.
65
- */
66
- isInvalid = false;
67
- hintTextId;
68
- /**
69
- * The text to display on the cancel button.
70
- */
71
- cancelText = 'Cancel';
72
- /**
73
- * The color to use from your application's color palette.
74
- * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
75
- * For more information on colors, see [theming](/docs/theming/basics).
76
- *
77
- * This property is only available when using the modern select syntax.
78
- */
79
- color;
80
- /**
81
- * This property allows developers to specify a custom function or property
82
- * name for comparing objects when determining the selected option in the
83
- * ion-select. When not specified, the default behavior will use strict
84
- * equality (===) for comparison.
85
- */
86
- compareWith;
87
- /**
88
- * If `true`, the user cannot interact with the select.
89
- */
90
- disabled = false;
91
- /**
92
- * The fill for the item. If `"solid"` the item will have a background. If
93
- * `"outline"` the item will be transparent with a border. Only available in `md` mode.
94
- */
95
- fill;
96
- /**
97
- * Text that is placed under the select and displayed when an error is detected.
98
- */
99
- errorText;
100
- /**
101
- * Text that is placed under the select and displayed when no error is detected.
102
- */
103
- helperText;
104
- /**
105
- * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`.
106
- */
107
- interface = 'alert';
108
- /**
109
- * Any additional options that the `alert`, `action-sheet` or `popover` interface
110
- * can take. See the [ion-alert docs](./alert), the
111
- * [ion-action-sheet docs](./action-sheet), the
112
- * [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the
113
- * create options for each interface.
114
- *
115
- * Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface.
116
- */
117
- interfaceOptions = {};
118
- /**
119
- * How to pack the label and select within a line.
120
- * `justify` does not apply when the label and select
121
- * are on different lines when `labelPlacement` is set to
122
- * `"floating"` or `"stacked"`.
123
- * `"start"`: The label and select will appear on the left in LTR and
124
- * on the right in RTL.
125
- * `"end"`: The label and select will appear on the right in LTR and
126
- * on the left in RTL.
127
- * `"space-between"`: The label and select will appear on opposite
128
- * ends of the line with space between the two elements.
129
- */
130
- justify;
131
- /**
132
- * The visible label associated with the select.
133
- *
134
- * Use this if you need to render a plaintext label.
135
- *
136
- * The `label` property will take priority over the `label` slot if both are used.
137
- */
138
- label;
139
- /**
140
- * Where to place the label relative to the select.
141
- * `"start"`: The label will appear to the left of the select in LTR and to the right in RTL.
142
- * `"end"`: The label will appear to the right of the select in LTR and to the left in RTL.
143
- * `"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.
144
- * `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value.
145
- * `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("...").
146
- * When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`.
147
- */
148
- labelPlacement = 'start';
149
- /**
150
- * If `true`, the select can accept multiple values.
151
- */
152
- multiple = false;
153
- /**
154
- * The name of the control, which is submitted with the form data.
155
- */
156
- name = this.inputId;
157
- /**
158
- * The text to display on the ok button.
159
- */
160
- okText = 'OK';
161
- /**
162
- * The text to display when the select is empty.
163
- */
164
- placeholder;
165
- /**
166
- * The text to display instead of the selected option's value.
167
- */
168
- selectedText;
169
- /**
170
- * The toggle icon to use. Defaults to `chevronExpand` for `ios` mode,
171
- * or `caretDownSharp` for `md` mode.
172
- */
173
- toggleIcon;
174
- /**
175
- * The toggle icon to show when the select is open. If defined, the icon
176
- * rotation behavior in `md` mode will be disabled. If undefined, `toggleIcon`
177
- * will be used for when the select is both open and closed.
178
- */
179
- expandedIcon;
180
- /**
181
- * The shape of the select. If "round" it will have an increased border radius.
182
- */
183
- shape;
184
- /**
185
- * The value of the select.
186
- */
187
- value;
188
- /**
189
- * If true, screen readers will announce it as a required field. This property
190
- * works only for accessibility purposes, it will not prevent the form from
191
- * submitting if the value is invalid.
192
- */
193
- required = false;
194
- /**
195
- * Emitted when the value has changed.
196
- *
197
- * This event will not emit when programmatically setting the `value` property.
198
- */
199
- ionChange;
200
- /**
201
- * Emitted when the selection is cancelled.
202
- */
203
- ionCancel;
204
- /**
205
- * Emitted when the overlay is dismissed.
206
- */
207
- ionDismiss;
208
- /**
209
- * Emitted when the select has focus.
210
- */
211
- ionFocus;
212
- /**
213
- * Emitted when the select loses focus.
214
- */
215
- ionBlur;
216
- /**
217
- * Emitted when the styles change.
218
- * @internal
219
- */
220
- ionStyle;
221
160
  styleChanged() {
222
161
  this.emitStyle();
223
162
  }
224
163
  setValue(value) {
225
- if (this.isValueEqual(this.value, value)) {
226
- return;
227
- }
228
164
  this.value = value;
229
165
  this.ionChange.emit({ value });
230
166
  }
231
- isValueEqual(currentValue, newValue) {
232
- if (this.multiple) {
233
- const currentArr = Array.isArray(currentValue) ? currentValue : [];
234
- const newArr = Array.isArray(newValue) ? newValue : [];
235
- if (currentArr.length !== newArr.length) {
236
- return false;
237
- }
238
- // Multiset compare: each new value must match a distinct current value.
239
- // A plain `every(isOptionSelected)` would accept ['a','a'] as equal to
240
- // ['a','b'] when both 'a' and 'b' map to options whose values overlap.
241
- const remaining = currentArr.slice();
242
- return newArr.every((val) => {
243
- const idx = remaining.findIndex((c) => compareWithUtils.compareOptions(c, val, this.compareWith));
244
- if (idx === -1) {
245
- return false;
246
- }
247
- remaining.splice(idx, 1);
248
- return true;
249
- });
250
- }
251
- if (currentValue == null && newValue == null) {
252
- return true;
253
- }
254
- if (currentValue == null || newValue == null) {
255
- return false;
256
- }
257
- return compareWithUtils.compareOptions(currentValue, newValue, this.compareWith);
258
- }
259
167
  async connectedCallback() {
260
168
  const { el } = this;
261
169
  this.notchController = notchController.createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
@@ -490,11 +398,10 @@ const Select = class {
490
398
  .join(' ');
491
399
  const optClass = `${OPTION_CLASS} ${copyClasses}`;
492
400
  const isSelected = compareWithUtils.isOptionSelected(selectValue, value, this.compareWith);
493
- const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
494
401
  return {
495
- text: content ?? '',
402
+ role: isSelected ? 'selected' : '',
403
+ text: option.textContent,
496
404
  cssClass: optClass,
497
- disabled: option.disabled,
498
405
  handler: () => {
499
406
  this.setValue(value);
500
407
  },
@@ -502,9 +409,6 @@ const Select = class {
502
409
  'aria-checked': isSelected ? 'true' : 'false',
503
410
  role: 'radio',
504
411
  },
505
- startContent,
506
- endContent,
507
- description: option.description,
508
412
  };
509
413
  });
510
414
  // Add "cancel" button
@@ -525,19 +429,13 @@ const Select = class {
525
429
  .filter((cls) => cls !== 'hydrated')
526
430
  .join(' ');
527
431
  const optClass = `${OPTION_CLASS} ${copyClasses}`;
528
- const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
529
432
  return {
530
433
  type: inputType,
531
434
  cssClass: optClass,
532
- label: content ?? '',
435
+ label: option.textContent || '',
533
436
  value,
534
437
  checked: compareWithUtils.isOptionSelected(selectValue, value, this.compareWith),
535
438
  disabled: option.disabled,
536
- startContent,
537
- endContent,
538
- description: option.description,
539
- labelPlacement: option.labelPlacement,
540
- justify: option.justify,
541
439
  };
542
440
  });
543
441
  return alertInputs;
@@ -550,9 +448,8 @@ const Select = class {
550
448
  .filter((cls) => cls !== 'hydrated')
551
449
  .join(' ');
552
450
  const optClass = `${OPTION_CLASS} ${copyClasses}`;
553
- const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
554
451
  return {
555
- text: content ?? '',
452
+ text: option.textContent || '',
556
453
  cssClass: optClass,
557
454
  value,
558
455
  checked: compareWithUtils.isOptionSelected(selectValue, value, this.compareWith),
@@ -563,11 +460,6 @@ const Select = class {
563
460
  this.close();
564
461
  }
565
462
  },
566
- startContent,
567
- endContent,
568
- description: option.description,
569
- labelPlacement: option.labelPlacement,
570
- justify: option.justify,
571
463
  };
572
464
  });
573
465
  return popoverOptions;
@@ -596,60 +488,33 @@ const Select = class {
596
488
  */
597
489
  }
598
490
  else {
599
- event = {
600
- ...ev,
601
- detail: {
491
+ event = Object.assign(Object.assign({}, ev), { detail: {
602
492
  ionShadowTarget: this.nativeWrapperEl,
603
- },
604
- };
493
+ } });
605
494
  }
606
- const options = this.createOverlaySelectOptions(this.childOpts, value);
607
- const hasRichContent = options.some((opt) => Boolean(opt.startContent) || Boolean(opt.endContent) || Boolean(opt.description));
608
- const popoverOpts = {
609
- mode,
610
- event,
611
- alignment: 'center',
612
- size,
613
- showBackdrop,
614
- ...interfaceOptions,
615
- component: 'ion-select-popover',
616
- cssClass: [
617
- 'select-popover',
618
- hasRichContent ? 'select-popover-rich-content' : undefined,
619
- interfaceOptions.cssClass,
620
- ],
621
- componentProps: {
495
+ const popoverOpts = Object.assign(Object.assign({ mode,
496
+ event, alignment: 'center', size,
497
+ showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: ['select-popover', interfaceOptions.cssClass], componentProps: {
622
498
  header: interfaceOptions.header,
623
499
  subHeader: interfaceOptions.subHeader,
624
500
  message: interfaceOptions.message,
625
501
  multiple,
626
502
  value,
627
- options,
628
- },
629
- };
503
+ options: this.createOverlaySelectOptions(this.childOpts, value),
504
+ } });
630
505
  return overlays.popoverController.create(popoverOpts);
631
506
  }
632
507
  async openActionSheet() {
633
508
  const mode = ionicGlobal.getIonMode(this);
634
509
  const interfaceOptions = this.interfaceOptions;
635
- const actionSheetOpts = {
636
- mode,
637
- ...interfaceOptions,
638
- buttons: this.createActionSheetButtons(this.childOpts, this.value),
639
- cssClass: ['select-action-sheet', interfaceOptions.cssClass],
640
- };
510
+ const actionSheetOpts = Object.assign(Object.assign({ mode }, interfaceOptions), { buttons: this.createActionSheetButtons(this.childOpts, this.value), cssClass: ['select-action-sheet', interfaceOptions.cssClass] });
641
511
  return overlays.actionSheetController.create(actionSheetOpts);
642
512
  }
643
513
  async openAlert() {
644
514
  const interfaceOptions = this.interfaceOptions;
645
515
  const inputType = this.multiple ? 'checkbox' : 'radio';
646
516
  const mode = ionicGlobal.getIonMode(this);
647
- const alertOpts = {
648
- mode,
649
- ...interfaceOptions,
650
- header: interfaceOptions.header ? interfaceOptions.header : this.labelText,
651
- inputs: this.createAlertInputs(this.childOpts, inputType, this.value),
652
- buttons: [
517
+ const alertOpts = Object.assign(Object.assign({ mode }, interfaceOptions), { header: interfaceOptions.header ? interfaceOptions.header : this.labelText, inputs: this.createAlertInputs(this.childOpts, inputType, this.value), buttons: [
653
518
  {
654
519
  text: this.cancelText,
655
520
  role: 'cancel',
@@ -663,31 +528,23 @@ const Select = class {
663
528
  this.setValue(selectedValues);
664
529
  },
665
530
  },
666
- ],
667
- cssClass: [
531
+ ], cssClass: [
668
532
  'select-alert',
669
533
  interfaceOptions.cssClass,
670
534
  this.multiple ? 'multiple-select-alert' : 'single-select-alert',
671
- ],
672
- };
535
+ ] });
673
536
  return overlays.alertController.create(alertOpts);
674
537
  }
675
538
  openModal() {
676
539
  const { multiple, value, interfaceOptions } = this;
677
540
  const mode = ionicGlobal.getIonMode(this);
678
- const modalOpts = {
679
- ...interfaceOptions,
680
- mode,
681
- cssClass: ['select-modal', interfaceOptions.cssClass],
682
- component: 'ion-select-modal',
683
- componentProps: {
541
+ const modalOpts = Object.assign(Object.assign({}, interfaceOptions), { mode, cssClass: ['select-modal', interfaceOptions.cssClass], component: 'ion-select-modal', componentProps: {
684
542
  header: interfaceOptions.header,
685
543
  cancelText: this.cancelText,
686
544
  multiple,
687
545
  value,
688
546
  options: this.createOverlaySelectOptions(this.childOpts, value),
689
- },
690
- };
547
+ } });
691
548
  return overlays.modalController.create(modalOpts);
692
549
  }
693
550
  /**
@@ -724,18 +581,12 @@ const Select = class {
724
581
  }
725
582
  return;
726
583
  }
727
- /**
728
- * Returns the text to display in the select based on the selected value.
729
- *
730
- * @param useHTML If `true`, the returned text will include any custom HTML content from the selected option. If `false`, the returned text will be plain text without any HTML. Defaults to `false`.
731
- * @returns The text to display in the select, either with or without HTML based on the `useHTML` parameter.
732
- */
733
- getText(useHTML = false) {
584
+ getText() {
734
585
  const selectedText = this.selectedText;
735
586
  if (selectedText != null && selectedText !== '') {
736
587
  return selectedText;
737
588
  }
738
- return generateText(this.childOpts, this.value, this.compareWith, useHTML);
589
+ return generateText(this.childOpts, this.value, this.compareWith);
739
590
  }
740
591
  setFocus() {
741
592
  if (this.focusEl) {
@@ -749,51 +600,6 @@ const Select = class {
749
600
  };
750
601
  this.ionStyle.emit(style);
751
602
  }
752
- onClick = (ev) => {
753
- const target = ev.target;
754
- const closestSlot = target.closest('[slot="start"], [slot="end"]');
755
- if (target === this.el || closestSlot === null) {
756
- this.setFocus();
757
- this.open(ev);
758
- }
759
- else {
760
- /**
761
- * Prevent clicks to the start/end slots from opening the select.
762
- * We ensure the target isn't this element in case the select is slotted
763
- * in, for example, an item. This would prevent the select from ever
764
- * being opened since the element itself has slot="start"/"end".
765
- *
766
- * Clicking a slotted element also causes a click
767
- * on the <label> element (since it wraps the slots).
768
- * Clicking <label> dispatches another click event on
769
- * the native form control that then bubbles up to this
770
- * listener. This additional event targets the host
771
- * element, so the select overlay is opened.
772
- *
773
- * When the slotted elements are clicked (and therefore
774
- * the ancestor <label> element) we want to prevent the label
775
- * from dispatching another click event.
776
- *
777
- * Do not call stopPropagation() because this will cause
778
- * click handlers on the slotted elements to never fire in React.
779
- * When developers do onClick in React a native "click" listener
780
- * is added on the root element, not the slotted element. When that
781
- * native click listener fires, React then dispatches the synthetic
782
- * click event on the slotted element. However, if stopPropagation
783
- * is called then the native click event will never bubble up
784
- * to the root element.
785
- */
786
- ev.preventDefault();
787
- }
788
- };
789
- onFocus = () => {
790
- this.hasFocus = true;
791
- this.ionFocus.emit();
792
- };
793
- onBlur = () => {
794
- this.hasFocus = false;
795
- this.ionBlur.emit();
796
- };
797
603
  renderLabel() {
798
604
  const { label } = this;
799
605
  return (index.h("div", { class: {
@@ -802,7 +608,8 @@ const Select = class {
802
608
  }, part: "label" }, label === undefined ? index.h("slot", { name: "label" }) : index.h("div", { class: "label-text" }, label)));
803
609
  }
804
610
  componentDidRender() {
805
- this.notchController?.calculateNotchWidth();
611
+ var _a;
612
+ (_a = this.notchController) === null || _a === void 0 ? void 0 : _a.calculateNotchWidth();
806
613
  }
807
614
  /**
808
615
  * Gets any content passed into the `label` slot,
@@ -820,17 +627,6 @@ const Select = class {
820
627
  get hasLabel() {
821
628
  return this.label !== undefined || this.labelSlot !== null;
822
629
  }
823
- /**
824
- * Stops propagation when the label is clicked,
825
- * otherwise, two clicks will be triggered.
826
- */
827
- onLabelClick = (ev) => {
828
- // Only stop propagation if the click was directly on the label
829
- // and not on the input or other child elements
830
- if (ev.target === ev.currentTarget) {
831
- ev.stopPropagation();
832
- }
833
- };
834
630
  /**
835
631
  * Renders the border container
836
632
  * when fill="outline".
@@ -860,46 +656,6 @@ const Select = class {
860
656
  */
861
657
  return this.renderLabel();
862
658
  }
863
- /**
864
- * Wraps text nodes in the select text with span elements
865
- * so spacing can be added between elements without
866
- * changing the display to prevent losing the ellipses
867
- * behavior.
868
- *
869
- * Only wraps when the string contains HTML elements
870
- * alongside text.
871
- */
872
- wrapSelectTextNodes(html) {
873
- const temp = document.createElement('div');
874
- temp.innerHTML = html;
875
- const hasElements = Array.from(temp.childNodes).some((n) => n.nodeType === Node.ELEMENT_NODE);
876
- // Return the plain text
877
- if (!hasElements) {
878
- return html;
879
- }
880
- Array.from(temp.childNodes).forEach((node) => {
881
- if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {
882
- const text = node.textContent;
883
- /**
884
- * Split comma separator from the text content
885
- * e.g., ", Bacon" becomes ", " text node + <span>Bacon</span>.
886
- */
887
- const commaMatch = text.match(/^(,\s*)(.*)/);
888
- if (commaMatch) {
889
- const commaNode = document.createTextNode(commaMatch[1]);
890
- const wrapper = document.createElement('span');
891
- wrapper.textContent = commaMatch[2];
892
- node.parentNode?.replaceChild(wrapper, node);
893
- wrapper.parentNode?.insertBefore(commaNode, wrapper);
894
- return;
895
- }
896
- const wrapper = document.createElement('span');
897
- node.parentNode?.replaceChild(wrapper, node);
898
- wrapper.appendChild(node);
899
- }
900
- });
901
- return temp.innerHTML;
902
- }
903
659
  /**
904
660
  * Renders either the placeholder
905
661
  * or the selected values based on
@@ -907,7 +663,7 @@ const Select = class {
907
663
  */
908
664
  renderSelectText() {
909
665
  const { placeholder } = this;
910
- const displayValue = this.getText(true);
666
+ const displayValue = this.getText();
911
667
  let addPlaceholderClass = false;
912
668
  let selectText = displayValue;
913
669
  if (selectText === '' && placeholder !== undefined) {
@@ -919,10 +675,6 @@ const Select = class {
919
675
  'select-placeholder': addPlaceholderClass,
920
676
  };
921
677
  const textPart = addPlaceholderClass ? 'placeholder' : 'text';
922
- if (this.customHTMLEnabled) {
923
- const wrapped = this.wrapSelectTextNodes(selectText);
924
- return index.h("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart, innerHTML: wrapped });
925
- }
926
678
  return (index.h("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart }, selectText));
927
679
  }
928
680
  /**
@@ -938,16 +690,16 @@ const Select = class {
938
690
  }
939
691
  else {
940
692
  const defaultIcon = mode === 'ios' ? index$1.chevronExpand : index$1.caretDownSharp;
941
- icon = toggleIcon ?? defaultIcon;
693
+ icon = toggleIcon !== null && toggleIcon !== void 0 ? toggleIcon : defaultIcon;
942
694
  }
943
695
  return index.h("ion-icon", { class: "select-icon", part: "icon", "aria-hidden": "true", icon: icon });
944
696
  }
945
697
  get ariaLabel() {
698
+ var _a;
946
699
  const { placeholder, inheritedAttributes } = this;
947
- // Get the plain text from the selected text
948
700
  const displayValue = this.getText();
949
701
  // The aria label should be preferred over visible text if both are specified
950
- const definedLabel = inheritedAttributes['aria-label'] ?? this.labelText;
702
+ const definedLabel = (_a = inheritedAttributes['aria-label']) !== null && _a !== void 0 ? _a : this.labelText;
951
703
  /**
952
704
  * If developer has specified a placeholder
953
705
  * and there is nothing selected, the selectText
@@ -1039,7 +791,7 @@ const Select = class {
1039
791
  */
1040
792
  const labelShouldFloat = labelPlacement === 'stacked' ||
1041
793
  (labelPlacement === 'floating' && (hasValue || hasFocus || isExpanded || hasStartEndSlots));
1042
- return (index.h(index.Host, { key: 'e693afee7852c89be122b785230ed8fc9be5ba61', onClick: this.onClick, class: theme.createColorClasses(this.color, {
794
+ return (index.h(index.Host, { key: 'f16327d6866ffee76e1618fcd3281590ca0fd56d', onClick: this.onClick, class: theme.createColorClasses(this.color, {
1043
795
  [mode]: true,
1044
796
  'in-item': inItem,
1045
797
  'in-item-color': theme.hostContext('ion-item.ion-color', el),
@@ -1057,8 +809,9 @@ const Select = class {
1057
809
  [`select-justify-${justify}`]: justifyEnabled,
1058
810
  [`select-shape-${shape}`]: shape !== undefined,
1059
811
  [`select-label-placement-${labelPlacement}`]: true,
1060
- }) }, index.h("label", { key: 'd79647bd83cab506f01a4588f631b3982fa1c011', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), index.h("div", { key: 'fa8d78b9ea041dc9e897643f22f33f38e645ce69', class: "select-wrapper-inner", part: "inner" }, index.h("slot", { key: '45666226a6898a538849bd3d3b89510bf689656f', name: "start" }), index.h("div", { key: '59f1f08109c4cda699cb2a9f2a6bce00a7fc4301', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), index.h("slot", { key: '79b18fd4ca2af9528ff89c609ea20b3e727701e1', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && index.h("div", { key: '0149f4ddb4ca1d1d2e2ca91b6cbec721d5c8aa9b', class: "select-highlight" })), this.renderBottomContent()));
812
+ }) }, index.h("label", { key: 'db13f76b384a7a7461c1ad752108eadf9c0213be', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), index.h("div", { key: '2fb0e57bd596c0f525be79293b7da4aca55a9385', class: "select-wrapper-inner", part: "inner" }, index.h("slot", { key: 'cd694c36242789a89461ed3412af9891ad68411b', name: "start" }), index.h("div", { key: 'fdf62911be54f4ab29eb3c2eb153f082e76a8f49', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), index.h("slot", { key: 'a32f5c4b101d4d6ad45870f4c4446960009377f5', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && index.h("div", { key: '61f792024a5f221ef4f28a3c249bd3a0de5edeab', class: "select-highlight" })), this.renderBottomContent()));
1061
813
  }
814
+ get el() { return index.getElement(this); }
1062
815
  static get watchers() { return {
1063
816
  "disabled": [{
1064
817
  "styleChanged": 0
@@ -1087,219 +840,25 @@ const parseValue = (value) => {
1087
840
  }
1088
841
  return value.toString();
1089
842
  };
1090
- const generateText = (opts, value, compareWith, useHTML = false) => {
843
+ const generateText = (opts, value, compareWith) => {
1091
844
  if (value === undefined) {
1092
845
  return '';
1093
846
  }
1094
847
  if (Array.isArray(value)) {
1095
848
  return value
1096
- .map((v) => textForValue(opts, v, compareWith, useHTML))
849
+ .map((v) => textForValue(opts, v, compareWith))
1097
850
  .filter((opt) => opt !== null)
1098
851
  .join(', ');
1099
852
  }
1100
853
  else {
1101
- return textForValue(opts, value, compareWith, useHTML) || '';
854
+ return textForValue(opts, value, compareWith) || '';
1102
855
  }
1103
856
  };
1104
- /**
1105
- * Returns the display text for a given value from the list of options.
1106
- * When `useHTML` is true, returns sanitized HTML for the select text.
1107
- * When `useHTML` is false, returns plain text for aria-label and other
1108
- * text-only contexts.
1109
- *
1110
- * @param opts - The list of ion-select-option elements.
1111
- * @param value - The value to find the matching option for.
1112
- * @param compareWith - Custom comparison function or property name.
1113
- * @param useHTML - If true, returns HTML string. If false, returns plain text.
1114
- */
1115
- const textForValue = (opts, value, compareWith, useHTML = false) => {
857
+ const textForValue = (opts, value, compareWith) => {
1116
858
  const selectOpt = opts.find((opt) => {
1117
859
  return compareWithUtils.compareOptions(value, getOptionValue(opt), compareWith);
1118
860
  });
1119
- const customHTMLEnabled = index.config.get('innerHTMLTemplatesEnabled', config.ENABLE_HTML_CONTENT_DEFAULT);
1120
- if (!selectOpt) {
1121
- return null;
1122
- }
1123
- // Return sanitized HTML for the select text
1124
- if (customHTMLEnabled && useHTML) {
1125
- return getOptionContent(selectOpt, undefined, true);
1126
- }
1127
- /**
1128
- * When custom HTML is enabled, extract only the default slot content.
1129
- * This ensures aria-label and other text-only contexts read only
1130
- * the relevant option text.
1131
- */
1132
- if (customHTMLEnabled) {
1133
- const content = getOptionContent(selectOpt);
1134
- if (typeof content === 'string') {
1135
- return content;
1136
- }
1137
- /**
1138
- * Elements were found in the default slot, extract and concatenate
1139
- * their text content while trimming whitespace.
1140
- */
1141
- if (content) {
1142
- const texts = Array.from(content.childNodes)
1143
- .map((n) => n.textContent?.trim())
1144
- .filter((t) => t);
1145
- return texts.join(' ') || null;
1146
- }
1147
- // Empty option
1148
- return null;
1149
- }
1150
- return getDefaultSlotPlainText(selectOpt);
1151
- };
1152
- /**
1153
- * Trims whitespace from all text nodes within a DOM tree.
1154
- * This prevents invisible layout shifts and unwanted gaps between
1155
- * elements when HTML content is injected via innerHTML or cloneNode,
1156
- * as browsers preserve whitespace (tabs, newlines, spaces) from
1157
- * the original source markup.
1158
- *
1159
- * @param node The root node to start trimming text nodes from.
1160
- */
1161
- const trimTextNodes = (node) => {
1162
- node.childNodes.forEach((child) => {
1163
- if (child.nodeType === Node.TEXT_NODE) {
1164
- child.textContent = child.textContent?.trim() || '';
1165
- }
1166
- else if (child.nodeType === Node.ELEMENT_NODE) {
1167
- trimTextNodes(child);
1168
- }
1169
- });
1170
- };
1171
- /**
1172
- * Extracts and clones content from an `ion-select-option` element
1173
- * for rendering within overlay interfaces or the select text when `customHTMLEnabled` is `true`.
1174
- *
1175
- * @param option - The `ion-select-option` element to extract content from.
1176
- * @param slotName - Optional slot name to extract. If omitted, extracts the default slot content.
1177
- * @param useHTML - If `true`, the returned string will include any custom HTML content. If `false`, the returned string will be plain text without any HTML.
1178
- * @returns When `useHTML` is `true`, a sanitized HTML string. When `false`, a
1179
- * div element containing cloned child nodes. Returns `null` if no matching
1180
- * content is found.
1181
- */
1182
- const getOptionContent = (option, slotName, useHTML = false) => {
1183
- let nodes;
1184
- if (slotName) {
1185
- // Named slot: get elements with matching slot attribute
1186
- nodes = Array.from(option.children).filter((el) => el.getAttribute('slot') === slotName);
1187
- }
1188
- else {
1189
- // Default slot: get nodes without a slot attribute
1190
- const defaultSlot = getOptionDefaultSlot(option) || [];
1191
- nodes = defaultSlot.filter((node) => {
1192
- /**
1193
- * Exclude whitespace-only text nodes (newline noise between
1194
- * markup elements). Element nodes are always kept, even when
1195
- * their textContent is empty (e.g. <svg>, <img>).
1196
- */
1197
- if (node.nodeType === Node.TEXT_NODE) {
1198
- return node.textContent?.trim().length !== 0;
1199
- }
1200
- return true;
1201
- });
1202
- }
1203
- if (nodes.length === 0) {
1204
- return null;
1205
- }
1206
- // Return plain text if no elements are found
1207
- if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
1208
- return nodes.map((n) => n.textContent?.trim()).join(' ') || null;
1209
- }
1210
- /**
1211
- * Mirror known custom-element properties (e.g. ion-icon's `icon`)
1212
- * onto attributes before cloning. Frameworks like Vue set these as
1213
- * DOM properties, which `cloneNode` doesn't copy, so without this
1214
- * step the cloned overlay copy renders without the prop's value.
1215
- */
1216
- nodes.forEach((n) => {
1217
- if (n.nodeType === Node.ELEMENT_NODE) {
1218
- index$2.reflectPropertiesToAttributes(n);
1219
- }
1220
- });
1221
- // Clone each node into a temporary container
1222
- const container = document.createElement('div');
1223
- nodes.forEach((n) => {
1224
- const clone = n.cloneNode(true);
1225
- if (clone.nodeType === Node.TEXT_NODE) {
1226
- clone.textContent = clone.textContent?.trim() || '';
1227
- }
1228
- else {
1229
- trimTextNodes(clone);
1230
- }
1231
- container.appendChild(clone);
1232
- });
1233
- /**
1234
- * Sanitize the cloned DOM in place. Trusted attributes (size, color,
1235
- * shape, etc.) are preserved; event handlers, javascript: URLs, and
1236
- * blocked tags are stripped.
1237
- */
1238
- index$2.sanitizeDOMTree(container);
1239
- if (useHTML) {
1240
- return container.innerHTML.trim() || null;
1241
- }
1242
- return container;
1243
- };
1244
- /**
1245
- * Returns the child nodes that belong to the default slot of an
1246
- * option element, excluding any nodes that are assigned to named
1247
- * slots.
1248
- *
1249
- * @param option - The `ion-select-option` element to extract default-slot nodes from.
1250
- * @returns An array of default slot nodes, or `null` if none are found.
1251
- */
1252
- const getOptionDefaultSlot = (option) => {
1253
- const defaultSlotNodes = Array.from(option.childNodes).filter((node) => {
1254
- if (node.nodeType === Node.ELEMENT_NODE) {
1255
- return !node.hasAttribute('slot');
1256
- }
1257
- return node.nodeType === Node.TEXT_NODE;
1258
- });
1259
- if (defaultSlotNodes.length === 0) {
1260
- return null;
1261
- }
1262
- return defaultSlotNodes;
1263
- };
1264
- /**
1265
- * Extracts plain text from only the default slot of an option,
1266
- * excluding content assigned to named slots (start/end).
1267
- */
1268
- const getDefaultSlotPlainText = (option) => {
1269
- const texts = Array.from(option.childNodes)
1270
- .filter((node) => {
1271
- if (node.nodeType === Node.ELEMENT_NODE) {
1272
- return !node.hasAttribute('slot');
1273
- }
1274
- return node.nodeType === Node.TEXT_NODE;
1275
- })
1276
- .filter((node) => node.nodeType === Node.TEXT_NODE)
1277
- .map((n) => n.textContent?.trim())
1278
- .filter((t) => t);
1279
- return texts.join(' ');
1280
- };
1281
- /**
1282
- * Extracts the rich content from an `ion-select-option`.
1283
- * When `customHTMLEnabled` is `false`, only the plain text from the
1284
- * default slot is read and the start and end slots are skipped.
1285
- *
1286
- * @param option - The `ion-select-option` element to extract content from.
1287
- * @param customHTMLEnabled - Whether custom HTML rendering is enabled
1288
- * via the `innerHTMLTemplatesEnabled` config.
1289
- */
1290
- const extractOptionContent = (option, customHTMLEnabled) => {
1291
- if (!customHTMLEnabled) {
1292
- return {
1293
- content: getDefaultSlotPlainText(option),
1294
- startContent: undefined,
1295
- endContent: undefined,
1296
- };
1297
- }
1298
- return {
1299
- content: getOptionContent(option),
1300
- startContent: getOptionContent(option, 'start') ?? undefined,
1301
- endContent: getOptionContent(option, 'end') ?? undefined,
1302
- };
861
+ return selectOpt ? selectOpt.textContent : null;
1303
862
  };
1304
863
  let selectIds = 0;
1305
864
  const OPTION_CLASS = 'select-interface-option';
@@ -1313,91 +872,36 @@ const selectOptionCss = () => `:host{display:none}`;
1313
872
  const SelectOption = class {
1314
873
  constructor(hostRef) {
1315
874
  index.registerInstance(this, hostRef);
875
+ this.inputId = `ion-selopt-${selectOptionIds++}`;
876
+ /**
877
+ * If `true`, the user cannot interact with the select option. This property does not apply when `interface="action-sheet"` as `ion-action-sheet` does not allow for disabled buttons.
878
+ */
879
+ this.disabled = false;
1316
880
  }
1317
- inputId = `ion-selopt-${selectOptionIds++}`;
1318
- get el() { return index.getElement(this); }
1319
- /**
1320
- * If `true`, the user cannot interact with the select option.
1321
- */
1322
- disabled = false;
1323
- /**
1324
- * The text value of the option.
1325
- */
1326
- value;
1327
- /**
1328
- * Text that is placed underneath the option text to provide additional details about the option.
1329
- */
1330
- description;
1331
- /**
1332
- * Where the label is placed relative to the option's selection control
1333
- * (radio circle or checkbox box) when the option is rendered in an
1334
- * `alert`, `popover`, or `modal` interface.
1335
- * `"start"`: The label will appear to the left of the radio in LTR and to the right in RTL.
1336
- * `"end"`: The label will appear to the right of the radio in LTR and to the left in RTL.
1337
- *
1338
- * Applies to the `alert`, `popover`, and `modal` interfaces, but has no
1339
- * visible effect on radio options in `popover` or `modal` on `md` (the radio control is hidden there).
1340
- *
1341
- * When unset, the interface picks a default based on mode and control
1342
- * type.
1343
- */
1344
- labelPlacement;
1345
- /**
1346
- * How to pack the label and the option's selection control within a line.
1347
- * `"start"`: The label and radio will appear on the left in LTR and
1348
- * on the right in RTL.
1349
- * `"end"`: The label and radio will appear on the right in LTR and
1350
- * on the left in RTL.
1351
- * `"space-between"`: The label and radio will appear on opposite
1352
- * ends of the line with space between the two elements.
1353
- *
1354
- * Applies to the `alert`, `popover`, and `modal` interfaces, but has no
1355
- * visible effect on radio options in `popover` or `modal` on `md` (the radio control is hidden there).
1356
- *
1357
- * When unset, the interface picks a default based on mode and control
1358
- * type.
1359
- */
1360
- justify;
1361
881
  render() {
1362
- return index.h(index.Host, { key: '8b8bef0f5a55f18048708c34d3ea3ff0ff2f1d47', role: "option", id: this.inputId, class: ionicGlobal.getIonMode(this) });
882
+ return index.h(index.Host, { key: '824730b6c1e4f15b716e91b05840e890af5f1577', role: "option", id: this.inputId, class: ionicGlobal.getIonMode(this) });
1363
883
  }
884
+ get el() { return index.getElement(this); }
1364
885
  };
1365
886
  let selectOptionIds = 0;
1366
887
  SelectOption.style = selectOptionCss();
1367
888
 
1368
- const selectPopoverIosCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-select-popover-ios,.alert-radio-label-has-rich-content.sc-ion-select-popover-ios,.alert-checkbox-label-has-rich-content.sc-ion-select-popover-ios,.select-option-label-has-rich-content.sc-ion-select-popover-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-select-popover-ios,.alert-radio-label-has-rich-content.sc-ion-select-popover-ios,.alert-checkbox-label-has-rich-content.sc-ion-select-popover-ios,.select-option-content.sc-ion-select-popover-ios{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-select-popover-ios,.alert-checkbox-label-text.sc-ion-select-popover-ios,.alert-radio-label-text.sc-ion-select-popover-ios,.select-option-label-text.sc-ion-select-popover-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-select-popover-ios{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-select-popover-ios:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-select-popover-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-select-popover-ios::part(label),ion-radio.select-option-has-rich-content.sc-ion-select-popover-ios [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-select-popover-ios::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-select-popover-ios [part~="label"],.select-option-content.sc-ion-select-popover-ios{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-select-popover-ios>ion-avatar.sc-ion-select-popover-ios,.select-option-start.sc-ion-select-popover-ios>ion-img.sc-ion-select-popover-ios,.select-option-start.sc-ion-select-popover-ios>ion-thumbnail.sc-ion-select-popover-ios,.select-option-start.sc-ion-select-popover-ios>img.sc-ion-select-popover-ios,.select-option-start.sc-ion-select-popover-ios>svg.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>ion-avatar.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>ion-img.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>ion-thumbnail.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>img.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>svg.sc-ion-select-popover-ios{width:44px;height:44px}.select-option-start.sc-ion-select-popover-ios>ion-icon.sc-ion-select-popover-ios,.select-option-end.sc-ion-select-popover-ios>ion-icon.sc-ion-select-popover-ios{font-size:28px}.action-sheet-button-label-text.sc-ion-select-popover-ios{-ms-flex-pack:center;justify-content:center}.select-option-has-rich-content.sc-ion-select-popover-ios{-webkit-padding-end:16px;padding-inline-end:16px}.sc-ion-select-popover-ios-h ion-list.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-ios,ion-label.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-ios-h{overflow-y:auto}`;
889
+ const selectPopoverIosCss = () => `.sc-ion-select-popover-ios-h ion-list.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-ios,ion-label.sc-ion-select-popover-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-ios-h{overflow-y:auto}`;
1369
890
 
1370
- const selectPopoverMdCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-select-popover-md,.alert-radio-label-has-rich-content.sc-ion-select-popover-md,.alert-checkbox-label-has-rich-content.sc-ion-select-popover-md,.select-option-label-has-rich-content.sc-ion-select-popover-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-select-popover-md,.alert-radio-label-has-rich-content.sc-ion-select-popover-md,.alert-checkbox-label-has-rich-content.sc-ion-select-popover-md,.select-option-content.sc-ion-select-popover-md{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-select-popover-md,.alert-checkbox-label-text.sc-ion-select-popover-md,.alert-radio-label-text.sc-ion-select-popover-md,.select-option-label-text.sc-ion-select-popover-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-select-popover-md{padding-left:0;padding-right:0;padding-top:5px;padding-bottom:0;display:block;color:var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));font-size:0.75rem}.select-option-label.sc-ion-select-popover-md:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-select-popover-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-select-popover-md::part(label),ion-radio.select-option-has-rich-content.sc-ion-select-popover-md [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-select-popover-md::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-select-popover-md [part~="label"],.select-option-content.sc-ion-select-popover-md{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-select-popover-md>ion-avatar.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>ion-avatar.sc-ion-select-popover-md{width:40px;height:40px}.select-option-start.sc-ion-select-popover-md>ion-icon.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>ion-icon.sc-ion-select-popover-md{font-size:24px}.select-option-start.sc-ion-select-popover-md>ion-img.sc-ion-select-popover-md,.select-option-start.sc-ion-select-popover-md>img.sc-ion-select-popover-md,.select-option-start.sc-ion-select-popover-md>svg.sc-ion-select-popover-md,.select-option-start.sc-ion-select-popover-md>ion-thumbnail.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>ion-img.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>img.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>svg.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>ion-thumbnail.sc-ion-select-popover-md{width:56px;height:56px}.select-option-start.sc-ion-select-popover-md>video.sc-ion-select-popover-md,.select-option-end.sc-ion-select-popover-md>video.sc-ion-select-popover-md{width:114px;height:56px}.sc-ion-select-popover-md-h ion-list.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-md,ion-label.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-md-h{overflow-y:auto}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(container),ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md [part~="container"]{display:none}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(label),ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md [part~="label"]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-popover-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-popover-md{--background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08);--background-focused:var(--ion-color-primary, #0054e9);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #0054e9);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-popover-md{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #0054e9)}`;
891
+ const selectPopoverMdCss = () => `.sc-ion-select-popover-md-h ion-list.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-list-header.sc-ion-select-popover-md,ion-label.sc-ion-select-popover-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}.sc-ion-select-popover-md-h{overflow-y:auto}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(container),ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md [part~="container"]{display:none}ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md::part(label),ion-list.sc-ion-select-popover-md ion-radio.sc-ion-select-popover-md [part~="label"]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-popover-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-popover-md{--background:rgba(var(--ion-color-primary-rgb, 0, 84, 233), 0.08);--background-focused:var(--ion-color-primary, #0054e9);--background-focused-opacity:0.2;--background-hover:var(--ion-color-primary, #0054e9);--background-hover-opacity:0.12}.item-checkbox-checked.sc-ion-select-popover-md{--background-activated:var(--ion-item-color, var(--ion-text-color, #000));--background-focused:var(--ion-item-color, var(--ion-text-color, #000));--background-hover:var(--ion-item-color, var(--ion-text-color, #000));--color:var(--ion-color-primary, #0054e9)}`;
1371
892
 
1372
893
  const SelectPopover = class {
1373
894
  constructor(hostRef) {
1374
895
  index.registerInstance(this, hostRef);
896
+ // Tracks the option that received Enter-keydown so keyup only
897
+ // dismisses when the press started on the same option. Prevents
898
+ // Enter on the triggering ion-select from auto-dismissing.
899
+ this.pendingEnterTarget = null;
900
+ /**
901
+ * An array of options for the popover
902
+ */
903
+ this.options = [];
1375
904
  }
1376
- get el() { return index.getElement(this); }
1377
- // Tracks the option that received Enter-keydown so keyup only
1378
- // dismisses when the press started on the same option. Prevents
1379
- // Enter on the triggering ion-select from auto-dismissing.
1380
- pendingEnterTarget = null;
1381
- /**
1382
- * The header text of the popover
1383
- */
1384
- header;
1385
- /**
1386
- * The subheader text of the popover
1387
- */
1388
- subHeader;
1389
- /**
1390
- * The text content of the popover body
1391
- */
1392
- message;
1393
- /**
1394
- * If true, the select accepts multiple values
1395
- */
1396
- multiple;
1397
- /**
1398
- * An array of options for the popover
1399
- */
1400
- options = [];
1401
905
  findOptionFromEvent(ev) {
1402
906
  const { options } = this;
1403
907
  return options.find((o) => o.value === ev.target.value);
@@ -1410,7 +914,7 @@ const SelectPopover = class {
1410
914
  callOptionHandler(ev) {
1411
915
  const option = this.findOptionFromEvent(ev);
1412
916
  const values = this.getValues(ev);
1413
- if (option?.handler) {
917
+ if (option === null || option === void 0 ? void 0 : option.handler) {
1414
918
  overlays.safeCall(option.handler, values);
1415
919
  }
1416
920
  }
@@ -1455,94 +959,45 @@ const SelectPopover = class {
1455
959
  }
1456
960
  }
1457
961
  renderCheckboxOptions(options) {
1458
- const mode = ionicGlobal.getIonMode(this);
1459
- return options.map((option, index$1) => {
1460
- /**
1461
- * Cast to `SelectOverlayOption` to access rich content
1462
- * fields (`startContent`, `endContent`, `description`)
1463
- * that are passed through from `ion-select` but not
1464
- * part of the public `SelectPopoverOption` interface.
1465
- */
1466
- const richOption = option;
1467
- const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
1468
- const optionLabelOptions = {
1469
- id: `popover-option-${index$1}`,
1470
- label: richOption.text,
1471
- startContent: richOption.startContent,
1472
- endContent: richOption.endContent,
1473
- description: richOption.description,
1474
- };
1475
- const defaultLabelPlacement = overlayControlLabel.getOverlayLabelPlacement(mode, 'checkbox');
1476
- const defaultJustify = overlayControlLabel.getOverlayLabelJustify(mode, 'checkbox');
1477
- return (index.h("ion-item", {
962
+ return options.map((option) => (index.h("ion-item", { class: Object.assign({
1478
963
  // TODO FW-4784
1479
- disabled: option.disabled, class: {
1480
- // TODO FW-4784
1481
- 'item-checkbox-checked': option.checked,
1482
- ...theme.getClassMap(option.cssClass),
1483
- }
1484
- }, index.h("ion-checkbox", { class: {
1485
- 'select-option-has-rich-content': hasRichContent,
1486
- }, value: option.value, disabled: option.disabled, checked: option.checked, justify: richOption.justify ?? defaultJustify, labelPlacement: richOption.labelPlacement ?? defaultLabelPlacement, onIonChange: (ev) => {
1487
- this.setChecked(ev);
1488
- this.callOptionHandler(ev);
1489
- // TODO FW-4784
1490
- index.forceUpdate(this);
1491
- } }, selectOptionRender.renderOptionLabel(optionLabelOptions, 'select-option-label'))));
1492
- });
964
+ 'item-checkbox-checked': option.checked
965
+ }, theme.getClassMap(option.cssClass)) }, index.h("ion-checkbox", { value: option.value, disabled: option.disabled, checked: option.checked, justify: "start", labelPlacement: "end", onIonChange: (ev) => {
966
+ this.setChecked(ev);
967
+ this.callOptionHandler(ev);
968
+ // TODO FW-4784
969
+ index.forceUpdate(this);
970
+ } }, option.text))));
1493
971
  }
1494
972
  renderRadioOptions(options) {
1495
- const mode = ionicGlobal.getIonMode(this);
1496
973
  const checked = options.filter((o) => o.checked).map((o) => o.value)[0];
1497
- return (index.h("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, options.map((option, index$1) => {
1498
- /**
1499
- * Cast to `SelectOverlayOption` to access rich content
1500
- * fields (`startContent`, `endContent`, `description`)
1501
- * that are passed through from `ion-select` but not
1502
- * part of the public `SelectPopoverOption` interface.
1503
- */
1504
- const richOption = option;
1505
- const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
1506
- const optionLabelOptions = {
1507
- id: `popover-option-${index$1}`,
1508
- label: richOption.text,
1509
- startContent: richOption.startContent,
1510
- endContent: richOption.endContent,
1511
- description: richOption.description,
1512
- };
1513
- return (index.h("ion-item", {
974
+ return (index.h("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, options.map((option) => (index.h("ion-item", { class: Object.assign({
1514
975
  // TODO FW-4784
1515
- disabled: option.disabled, class: {
1516
- // TODO FW-4784
1517
- 'item-radio-checked': option.value === checked,
1518
- ...theme.getClassMap(option.cssClass),
976
+ 'item-radio-checked': option.value === checked
977
+ }, theme.getClassMap(option.cssClass)) }, index.h("ion-radio", { value: option.value, disabled: option.disabled, onClick: () => this.dismissParentPopover(), onKeyDown: (ev) => {
978
+ if (ev.key === 'Enter' && !ev.repeat) {
979
+ this.pendingEnterTarget = ev.currentTarget;
1519
980
  }
1520
- }, index.h("ion-radio", { class: {
1521
- 'select-option-has-rich-content': hasRichContent,
1522
- }, value: option.value, disabled: option.disabled, justify: richOption.justify ?? overlayControlLabel.getOverlayLabelJustify(mode, 'radio'), labelPlacement: richOption.labelPlacement ?? overlayControlLabel.getOverlayLabelPlacement(mode, 'radio'), onClick: () => this.dismissParentPopover(), onKeyDown: (ev) => {
1523
- if (ev.key === 'Enter' && !ev.repeat) {
1524
- this.pendingEnterTarget = ev.currentTarget;
1525
- }
1526
- }, onKeyUp: (ev) => {
1527
- if (ev.key === ' ') {
1528
- // Space selects and dismisses in one press.
981
+ }, onKeyUp: (ev) => {
982
+ if (ev.key === ' ') {
983
+ // Space selects and dismisses in one press.
984
+ this.dismissParentPopover();
985
+ }
986
+ else if (ev.key === 'Enter') {
987
+ const shouldDismiss = this.pendingEnterTarget === ev.currentTarget;
988
+ this.pendingEnterTarget = null;
989
+ if (shouldDismiss) {
1529
990
  this.dismissParentPopover();
1530
991
  }
1531
- else if (ev.key === 'Enter') {
1532
- const shouldDismiss = this.pendingEnterTarget === ev.currentTarget;
1533
- this.pendingEnterTarget = null;
1534
- if (shouldDismiss) {
1535
- this.dismissParentPopover();
1536
- }
1537
- }
1538
- } }, selectOptionRender.renderOptionLabel(optionLabelOptions, 'select-option-label'))));
1539
- })));
992
+ }
993
+ } }, option.text))))));
1540
994
  }
1541
995
  render() {
1542
996
  const { header, message, options, subHeader } = this;
1543
997
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
1544
- return (index.h(index.Host, { key: 'd0c107e0ca78955a3cfcd9f098a527fb35eff14d', class: ionicGlobal.getIonMode(this) }, index.h("ion-list", { key: '1e103312e22bf78d2201a0f88cc4fed789f62a2b' }, header !== undefined && index.h("ion-list-header", { key: '657439905dc480112ed8d7f8d4a01464724de2bd' }, header), hasSubHeaderOrMessage && (index.h("ion-item", { key: 'e0eaa0250bf233cf846adba5ddc141bf3430c2a8' }, index.h("ion-label", { key: 'ad1cff877f9d582fbc64f9049603146fd1a1a6f9', class: "ion-text-wrap" }, subHeader !== undefined && index.h("h3", { key: 'ead921d395b614a99c89a8ffe2a102a620f80767' }, subHeader), message !== undefined && index.h("p", { key: '3a47e7091528930f33324ccd04d6734217155244' }, message)))), this.renderOptions(options))));
998
+ return (index.h(index.Host, { key: 'e7449a1ecfcdbf45a79f8e26a00253c4e146448a', class: ionicGlobal.getIonMode(this) }, index.h("ion-list", { key: '52abdfc8668c3429a0dcefef8ddedb6647fdd894' }, header !== undefined && index.h("ion-list-header", { key: '978e5c03728756feafcc60a0e10e6ec59bf2ae11' }, header), hasSubHeaderOrMessage && (index.h("ion-item", { key: 'e93c44e7f07a76def16e4b11f0fb4780d84ed402' }, index.h("ion-label", { key: 'bba1aac43b0bc7f4f00978dd8301985233f3725c', class: "ion-text-wrap" }, subHeader !== undefined && index.h("h3", { key: 'ad96f6017cf2cc5219540bded2c4f1ca3b532de2' }, subHeader), message !== undefined && index.h("p", { key: '3fd038921dc40c4d0c29734433984b279ccaeec3' }, message)))), this.renderOptions(options))));
1545
999
  }
1000
+ get el() { return index.getElement(this); }
1546
1001
  };
1547
1002
  SelectPopover.style = {
1548
1003
  ios: selectPopoverIosCss(),