@ionic/core 8.8.12-dev.11781813448.16e7a064 → 8.8.12-dev.11782931922.18ba507c

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 (338) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-action-sheet.js +1 -1
  3. package/components/ion-alert.js +1 -1
  4. package/components/ion-back-button.js +1 -1
  5. package/components/ion-button.js +1 -1
  6. package/components/ion-card.js +1 -1
  7. package/components/ion-chip.js +1 -1
  8. package/components/ion-datetime-button.js +1 -1
  9. package/components/ion-datetime.js +1 -1
  10. package/components/ion-fab-button.js +1 -1
  11. package/components/ion-infinite-scroll-content.js +1 -1
  12. package/components/ion-input-password-toggle.js +1 -1
  13. package/components/ion-input.js +1 -1
  14. package/components/ion-item-option.js +1 -1
  15. package/components/ion-item.js +1 -1
  16. package/components/ion-loading.js +1 -1
  17. package/components/ion-menu-button.js +1 -1
  18. package/components/ion-menu.js +1 -1
  19. package/components/ion-modal.js +1 -1
  20. package/components/ion-popover.js +1 -1
  21. package/components/ion-progress-bar.js +1 -1
  22. package/components/ion-radio.js +1 -1
  23. package/components/ion-range.js +1 -1
  24. package/components/ion-refresher-content.js +1 -1
  25. package/components/ion-refresher.js +1 -1
  26. package/components/ion-reorder-group.js +1 -1
  27. package/components/ion-reorder.js +1 -1
  28. package/components/ion-ripple-effect.js +1 -1
  29. package/components/ion-router-link.js +1 -1
  30. package/components/ion-router-outlet.js +1 -1
  31. package/components/ion-row.js +1 -1
  32. package/components/ion-searchbar.js +1 -1
  33. package/components/ion-segment-button.js +1 -1
  34. package/components/ion-segment-content.js +1 -1
  35. package/components/ion-segment-view.js +1 -1
  36. package/components/ion-segment.js +1 -1
  37. package/components/ion-select-modal.js +1 -1
  38. package/components/ion-select-option.js +1 -1
  39. package/components/ion-select-popover.js +1 -1
  40. package/components/ion-select.js +1 -1
  41. package/components/ion-skeleton-text.js +1 -1
  42. package/components/ion-spinner.js +1 -1
  43. package/components/ion-split-pane.js +1 -1
  44. package/components/ion-tab-bar.js +1 -1
  45. package/components/ion-tab-button.js +1 -1
  46. package/components/ion-tab.js +1 -1
  47. package/components/ion-tabs.js +1 -1
  48. package/components/ion-text.js +1 -1
  49. package/components/ion-textarea.js +1 -1
  50. package/components/ion-thumbnail.js +1 -1
  51. package/components/ion-title.js +1 -1
  52. package/components/ion-toast.js +1 -1
  53. package/components/ion-toggle.js +1 -1
  54. package/components/ion-toolbar.js +1 -1
  55. package/components/p-279dFMvg.js +4 -0
  56. package/components/p-BSQPZ79H.js +4 -0
  57. package/components/p-BwKpO3Is.js +4 -0
  58. package/components/p-C-Rx1zny.js +4 -0
  59. package/components/p-CHzfYZbv.js +4 -0
  60. package/components/p-COdmnpcX.js +4 -0
  61. package/components/p-D4h1H_hh.js +4 -0
  62. package/components/{p-C2lKgrXx.js → p-DEBD4LvH.js} +1 -1
  63. package/components/{p-BSEgsdFI.js → p-DhkITZ-y.js} +1 -1
  64. package/components/{p-5bE_Wz4Y.js → p-DpV-p5Xs.js} +1 -1
  65. package/components/{p-Cfx4M1Bn.js → p-Dz74mwlk.js} +1 -1
  66. package/components/p-LMGfIvTf.js +4 -0
  67. package/components/{p-BLmJ0zRm.js → p-XJWMAP8m.js} +1 -1
  68. package/components/p-j9Da6cYO.js +4 -0
  69. package/components/p-jOtMJMv8.js +4 -0
  70. package/components/{p-B60hm8Qv.js → p-r0aq7dpt.js} +1 -1
  71. package/components/p-uTR_dEqg.js +4 -0
  72. package/components/{p-rCa2eL0j.js → p-wk2QqrAo.js} +1 -1
  73. package/dist/cjs/config-DWdFbSNK.js +35 -0
  74. package/dist/cjs/index-Cueg3U4w.js +429 -0
  75. package/dist/cjs/index.cjs.js +6 -6
  76. package/dist/cjs/ion-action-sheet.cjs.entry.js +27 -7
  77. package/dist/cjs/ion-alert.cjs.entry.js +64 -25
  78. package/dist/cjs/ion-app_8.cjs.entry.js +23 -9
  79. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  80. package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
  81. package/dist/cjs/{ion-datetime_3.cjs.entry.js → ion-datetime.cjs.entry.js} +1 -639
  82. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -2
  83. package/dist/cjs/ion-input.cjs.entry.js +4 -4
  84. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  85. package/dist/cjs/ion-loading.cjs.entry.js +10 -5
  86. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  87. package/dist/cjs/ion-modal.cjs.entry.js +21 -10
  88. package/dist/cjs/ion-popover.cjs.entry.js +9 -5
  89. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  90. package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
  91. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  92. package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -5
  93. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  94. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  95. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  96. package/dist/cjs/ion-searchbar.cjs.entry.js +5 -5
  97. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  98. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
  99. package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
  100. package/dist/cjs/ion-select-modal.cjs.entry.js +84 -30
  101. package/dist/cjs/ion-select_3.cjs.entry.js +407 -49
  102. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  103. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  104. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  105. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  106. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  107. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  108. package/dist/cjs/ion-toast.cjs.entry.js +6 -5
  109. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  110. package/dist/cjs/ionic.cjs.js +1 -1
  111. package/dist/cjs/loader.cjs.js +1 -1
  112. package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
  113. package/dist/cjs/{overlays-TbKsuC-K.js → overlays-DSmSrd_4.js} +26 -7
  114. package/dist/cjs/select-option-render-DTF50t5r.js +124 -0
  115. package/dist/collection/collection-manifest.json +6 -10
  116. package/dist/collection/components/action-sheet/action-sheet.ios.css +229 -2
  117. package/dist/collection/components/action-sheet/action-sheet.js +24 -5
  118. package/dist/collection/components/action-sheet/action-sheet.md.css +175 -2
  119. package/dist/collection/components/alert/alert.ios.css +280 -10
  120. package/dist/collection/components/alert/alert.js +59 -21
  121. package/dist/collection/components/alert/alert.md.css +269 -20
  122. package/dist/collection/components/input/input.js +8 -8
  123. package/dist/collection/components/loading/loading.js +7 -3
  124. package/dist/collection/components/modal/modal.js +23 -12
  125. package/dist/collection/components/popover/popover.ios.css +15 -0
  126. package/dist/collection/components/popover/popover.js +7 -3
  127. package/dist/collection/components/popover/popover.md.css +15 -0
  128. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  129. package/dist/collection/components/radio/radio.js +4 -4
  130. package/dist/collection/components/range/range.js +3 -3
  131. package/dist/collection/components/refresher/refresher.js +1 -1
  132. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  133. package/dist/collection/components/reorder/reorder.js +1 -1
  134. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  135. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  136. package/dist/collection/components/router-link/router-link.js +2 -2
  137. package/dist/collection/components/router-outlet/router-outlet.js +38 -5
  138. package/dist/collection/components/row/row.js +1 -1
  139. package/dist/collection/components/searchbar/searchbar.js +9 -9
  140. package/dist/collection/components/segment/segment.js +2 -2
  141. package/dist/collection/components/segment-button/segment-button.js +2 -2
  142. package/dist/collection/components/segment-content/segment-content.js +1 -1
  143. package/dist/collection/components/segment-view/segment-view.js +2 -2
  144. package/dist/collection/components/select/select.ios.css +33 -0
  145. package/dist/collection/components/select/select.js +323 -16
  146. package/dist/collection/components/select/select.md.css +33 -0
  147. package/dist/collection/components/select-modal/select-modal.ios.css +219 -0
  148. package/dist/collection/components/select-modal/select-modal.js +79 -26
  149. package/dist/collection/components/select-modal/select-modal.md.css +165 -0
  150. package/dist/collection/components/select-option/select-option.js +67 -3
  151. package/dist/collection/components/select-popover/select-popover.ios.css +219 -0
  152. package/dist/collection/components/select-popover/select-popover.js +78 -26
  153. package/dist/collection/components/select-popover/select-popover.md.css +165 -0
  154. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  155. package/dist/collection/components/spinner/spinner.js +1 -1
  156. package/dist/collection/components/split-pane/split-pane.js +2 -2
  157. package/dist/collection/components/tab/tab.js +2 -2
  158. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  159. package/dist/collection/components/tab-button/tab-button.js +2 -2
  160. package/dist/collection/components/tabs/tabs.js +1 -1
  161. package/dist/collection/components/text/text.js +2 -2
  162. package/dist/collection/components/textarea/textarea.js +2 -2
  163. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  164. package/dist/collection/components/title/title.js +2 -2
  165. package/dist/collection/components/toast/toast.js +2 -2
  166. package/dist/collection/components/toggle/toggle.js +3 -3
  167. package/dist/collection/components/toolbar/toolbar.js +2 -2
  168. package/dist/collection/index.js +1 -1
  169. package/dist/collection/utils/overlay-control-label.js +45 -0
  170. package/dist/collection/utils/overlays.js +25 -6
  171. package/dist/collection/utils/sanitization/index.js +274 -18
  172. package/dist/collection/utils/select-option-render.js +119 -0
  173. package/dist/docs.json +480 -1176
  174. package/dist/esm/config-BwKpO3Is.js +31 -0
  175. package/dist/esm/{index-DV3sJJW8.js → index-AlrZKoWR.js} +1 -1
  176. package/dist/esm/index-DQSkZyOJ.js +424 -0
  177. package/dist/esm/index.js +3 -2
  178. package/dist/esm/ion-accordion_2.entry.js +1 -1
  179. package/dist/esm/ion-action-sheet.entry.js +27 -7
  180. package/dist/esm/ion-alert.entry.js +63 -24
  181. package/dist/esm/ion-app_8.entry.js +23 -9
  182. package/dist/esm/ion-avatar_3.entry.js +1 -1
  183. package/dist/esm/ion-back-button.entry.js +1 -1
  184. package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
  185. package/dist/esm/ion-col_3.entry.js +1 -1
  186. package/dist/esm/{ion-datetime_3.entry.js → ion-datetime.entry.js} +5 -641
  187. package/dist/esm/ion-fab_3.entry.js +1 -1
  188. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -1
  189. package/dist/esm/ion-input-password-toggle.entry.js +1 -1
  190. package/dist/esm/ion-input.entry.js +5 -5
  191. package/dist/esm/ion-item_8.entry.js +3 -3
  192. package/dist/esm/ion-loading.entry.js +9 -4
  193. package/dist/esm/ion-menu_3.entry.js +2 -2
  194. package/dist/esm/ion-modal.entry.js +21 -10
  195. package/dist/esm/ion-popover.entry.js +9 -5
  196. package/dist/esm/ion-progress-bar.entry.js +1 -1
  197. package/dist/esm/ion-radio_2.entry.js +3 -3
  198. package/dist/esm/ion-range.entry.js +3 -3
  199. package/dist/esm/ion-refresher_2.entry.js +5 -4
  200. package/dist/esm/ion-reorder_2.entry.js +3 -3
  201. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  202. package/dist/esm/ion-route_4.entry.js +2 -2
  203. package/dist/esm/ion-searchbar.entry.js +6 -6
  204. package/dist/esm/ion-segment-content.entry.js +1 -1
  205. package/dist/esm/ion-segment-view.entry.js +2 -2
  206. package/dist/esm/ion-segment_2.entry.js +4 -4
  207. package/dist/esm/ion-select-modal.entry.js +84 -30
  208. package/dist/esm/ion-select_3.entry.js +410 -52
  209. package/dist/esm/ion-spinner.entry.js +1 -1
  210. package/dist/esm/ion-split-pane.entry.js +2 -2
  211. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  212. package/dist/esm/ion-tab_2.entry.js +3 -3
  213. package/dist/esm/ion-text.entry.js +2 -2
  214. package/dist/esm/ion-textarea.entry.js +2 -2
  215. package/dist/esm/ion-toast.entry.js +5 -4
  216. package/dist/esm/ion-toggle.entry.js +4 -4
  217. package/dist/esm/ionic.js +1 -1
  218. package/dist/esm/loader.js +1 -1
  219. package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
  220. package/dist/esm/{overlays-TbiM4mdr.js → overlays-DLNOHWNc.js} +26 -7
  221. package/dist/esm/select-option-render-B8nWZRnd.js +122 -0
  222. package/dist/html.html-data.json +51 -79
  223. package/dist/ionic/index.esm.js +1 -1
  224. package/dist/ionic/ionic.esm.js +1 -1
  225. package/dist/ionic/p-038eb991.entry.js +4 -0
  226. package/dist/ionic/{p-8fce95d5.entry.js → p-14095ba5.entry.js} +1 -1
  227. package/dist/ionic/{p-3a126bca.entry.js → p-259d0d98.entry.js} +1 -1
  228. package/dist/ionic/{p-fabcce6c.entry.js → p-341032b3.entry.js} +1 -1
  229. package/dist/ionic/{p-3a7d1e91.entry.js → p-4502a274.entry.js} +1 -1
  230. package/dist/ionic/p-4621c387.entry.js +4 -0
  231. package/dist/ionic/p-4ace7762.entry.js +4 -0
  232. package/dist/ionic/p-4bb3eb60.entry.js +4 -0
  233. package/dist/ionic/p-4e9ec5c5.entry.js +4 -0
  234. package/dist/ionic/{p-874b4bd8.entry.js → p-51cd1643.entry.js} +1 -1
  235. package/dist/ionic/p-5c3ec490.entry.js +4 -0
  236. package/dist/ionic/p-5d1ac2c7.entry.js +4 -0
  237. package/dist/ionic/{p-3ae5f277.entry.js → p-627fabd9.entry.js} +1 -1
  238. package/dist/ionic/{p-e0be05c5.entry.js → p-629e4703.entry.js} +1 -1
  239. package/dist/ionic/{p-5d1da0a2.entry.js → p-76e92a84.entry.js} +1 -1
  240. package/dist/ionic/p-79a36078.entry.js +4 -0
  241. package/dist/ionic/{p-9f1103ce.entry.js → p-7a37b3ce.entry.js} +1 -1
  242. package/dist/ionic/{p-3353c229.entry.js → p-80b44b3c.entry.js} +1 -1
  243. package/dist/ionic/p-8d624ee5.entry.js +4 -0
  244. package/dist/ionic/p-913b218a.entry.js +4 -0
  245. package/dist/ionic/{p-390ca786.entry.js → p-9177f4ac.entry.js} +1 -1
  246. package/dist/ionic/{p-DV3sJJW8.js → p-AlrZKoWR.js} +1 -1
  247. package/dist/ionic/p-BDtODLZ4.js +4 -0
  248. package/dist/ionic/p-BSQPZ79H.js +4 -0
  249. package/dist/ionic/p-BwKpO3Is.js +4 -0
  250. package/dist/ionic/p-Cg5-OQYy.js +4 -0
  251. package/dist/ionic/p-DCOvXkOm.js +4 -0
  252. package/dist/ionic/{p-4858af1f.entry.js → p-a5213260.entry.js} +1 -1
  253. package/dist/ionic/{p-37e720da.entry.js → p-a7628bc7.entry.js} +1 -1
  254. package/dist/ionic/p-a9a33367.entry.js +4 -0
  255. package/dist/ionic/p-ad728198.entry.js +4 -0
  256. package/dist/ionic/{p-ef4c3bee.entry.js → p-b1599fca.entry.js} +1 -1
  257. package/dist/ionic/{p-84d5ce05.entry.js → p-b9ac1fe0.entry.js} +1 -1
  258. package/dist/ionic/p-bfc8c629.entry.js +4 -0
  259. package/dist/ionic/p-c08e666a.entry.js +4 -0
  260. package/dist/ionic/{p-94f2a736.entry.js → p-c93553d2.entry.js} +1 -1
  261. package/dist/ionic/p-ce7992c4.entry.js +4 -0
  262. package/dist/ionic/{p-75dc25ba.entry.js → p-d2c7f046.entry.js} +1 -1
  263. package/dist/ionic/{p-c4d8641b.entry.js → p-d8387b99.entry.js} +1 -1
  264. package/dist/ionic/{p-9a65ac7f.entry.js → p-db1b6738.entry.js} +1 -1
  265. package/dist/ionic/p-ed797c72.entry.js +4 -0
  266. package/dist/ionic/{p-8eb8ee76.entry.js → p-ef93ca92.entry.js} +1 -1
  267. package/dist/ionic/p-f09f9642.entry.js +4 -0
  268. package/dist/ionic/p-f1c06f82.entry.js +4 -0
  269. package/dist/ionic/{p-0fa9c382.entry.js → p-fe4aa1db.entry.js} +1 -1
  270. package/dist/types/components/input/input.d.ts +1 -1
  271. package/dist/types/components/modal/modal.d.ts +11 -4
  272. package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
  273. package/dist/types/components/searchbar/searchbar.d.ts +1 -1
  274. package/dist/types/components/select/select-interface.d.ts +31 -0
  275. package/dist/types/components/select/select.d.ts +18 -0
  276. package/dist/types/components/select-option/select-option.d.ts +42 -1
  277. package/dist/types/components.d.ts +60 -288
  278. package/dist/types/index.d.ts +1 -1
  279. package/dist/types/interface.d.ts +0 -1
  280. package/dist/types/utils/config.d.ts +0 -8
  281. package/dist/types/utils/overlay-control-label.d.ts +32 -0
  282. package/dist/types/utils/overlays.d.ts +11 -9
  283. package/dist/types/utils/sanitization/index.d.ts +58 -2
  284. package/dist/types/utils/select-option-render.d.ts +53 -0
  285. package/hydrate/index.js +1400 -1142
  286. package/hydrate/index.mjs +1400 -1142
  287. package/package.json +37 -5
  288. package/components/ion-picker-legacy-column.d.ts +0 -11
  289. package/components/ion-picker-legacy-column.js +0 -4
  290. package/components/ion-picker-legacy.d.ts +0 -11
  291. package/components/ion-picker-legacy.js +0 -4
  292. package/components/p-0NRupjzW.js +0 -4
  293. package/components/p-Bth-EzJ0.js +0 -4
  294. package/components/p-CU5rbWAW.js +0 -4
  295. package/components/p-DDWp95gH.js +0 -4
  296. package/components/p-W9CZ2mWX.js +0 -4
  297. package/components/p-dhLYXa7A.js +0 -4
  298. package/components/p-k_E4tX5Z.js +0 -4
  299. package/components/p-nQi4oKcG.js +0 -4
  300. package/components/p-uVRyUM3z.js +0 -4
  301. package/dist/cjs/config-xninhj0J.js +0 -201
  302. package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
  303. package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
  304. package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
  305. package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
  306. package/dist/collection/components/picker-legacy/picker.js +0 -890
  307. package/dist/collection/components/picker-legacy/picker.md.css +0 -287
  308. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
  309. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
  310. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
  311. package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
  312. package/dist/esm/config-DQCONYYp.js +0 -195
  313. package/dist/ionic/p-00dbb17e.entry.js +0 -4
  314. package/dist/ionic/p-01f81ea5.entry.js +0 -4
  315. package/dist/ionic/p-0d005398.entry.js +0 -4
  316. package/dist/ionic/p-20b1a044.entry.js +0 -4
  317. package/dist/ionic/p-21eb76d5.entry.js +0 -4
  318. package/dist/ionic/p-27d30585.entry.js +0 -4
  319. package/dist/ionic/p-2bb2cb18.entry.js +0 -4
  320. package/dist/ionic/p-2f55dc1a.entry.js +0 -4
  321. package/dist/ionic/p-30bf9737.entry.js +0 -4
  322. package/dist/ionic/p-3a541154.entry.js +0 -4
  323. package/dist/ionic/p-485fda23.entry.js +0 -4
  324. package/dist/ionic/p-4baa5b82.entry.js +0 -4
  325. package/dist/ionic/p-4dc1c33c.entry.js +0 -4
  326. package/dist/ionic/p-5fc7e542.entry.js +0 -4
  327. package/dist/ionic/p-DzWaWHGc.js +0 -4
  328. package/dist/ionic/p-a21add2f.entry.js +0 -4
  329. package/dist/ionic/p-aa5d6b8f.entry.js +0 -4
  330. package/dist/ionic/p-e847a888.entry.js +0 -4
  331. package/dist/ionic/p-ec090e0a.entry.js +0 -4
  332. package/dist/ionic/p-xOfi7-Zn.js +0 -4
  333. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
  334. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
  335. package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
  336. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  337. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  338. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
package/hydrate/index.mjs CHANGED
@@ -8039,7 +8039,7 @@ const focusElementInOverlay = (hostToFocus, overlay) => {
8039
8039
  * Should NOT include: Toast
8040
8040
  */
8041
8041
  const trapKeyboardFocus = (ev, doc) => {
8042
- const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover');
8042
+ const lastOverlay = getPresentedOverlay(doc, 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover');
8043
8043
  const target = ev.target;
8044
8044
  /**
8045
8045
  * If no active overlay, ignore this event.
@@ -8273,7 +8273,7 @@ const dismissOverlay = (doc, data, role, overlayTag, id) => {
8273
8273
  */
8274
8274
  const getOverlays = (doc, selector) => {
8275
8275
  if (selector === undefined) {
8276
- selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-picker-legacy,ion-popover,ion-toast';
8276
+ selector = 'ion-alert,ion-action-sheet,ion-loading,ion-modal,ion-popover,ion-toast';
8277
8277
  }
8278
8278
  return Array.from(doc.querySelectorAll(selector)).filter((c) => c.overlayIndex > 0);
8279
8279
  };
@@ -8335,6 +8335,29 @@ const setRootAriaHidden = (hidden = false) => {
8335
8335
  viewContainer.removeAttribute('aria-hidden');
8336
8336
  }
8337
8337
  };
8338
+ /**
8339
+ * Cleans up root `aria-hidden` and `backdrop-no-scroll` when
8340
+ * an overlay is removed from the DOM without going through
8341
+ * the `dismiss()` flow (e.g., when a framework unmounts the
8342
+ * overlay during a route change).
8343
+ *
8344
+ * Should be called from an overlay's `disconnectedCallback`
8345
+ * when the overlay was still presented at the time of removal.
8346
+ */
8347
+ const cleanupRootFocusTrapAccessibility = () => {
8348
+ if (typeof document === 'undefined') {
8349
+ return;
8350
+ }
8351
+ const remainingOverlays = getPresentedOverlays(document);
8352
+ const hasRemainingLocking = remainingOverlays.some((o) => {
8353
+ const el = o;
8354
+ return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
8355
+ });
8356
+ if (!hasRemainingLocking) {
8357
+ setRootAriaHidden(false);
8358
+ document.body.classList.remove(BACKDROP_NO_SCROLL);
8359
+ }
8360
+ };
8338
8361
  const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
8339
8362
  var _a, _b;
8340
8363
  if (overlay.presented) {
@@ -8736,6 +8759,539 @@ const createTriggerController = () => {
8736
8759
  };
8737
8760
  const FOCUS_TRAP_DISABLE_CLASS = 'ion-disable-focus-trap';
8738
8761
 
8762
+ /**
8763
+ * Sanitize an untrusted HTML string.
8764
+ *
8765
+ * Parses the string into a detached DOM, removes blocked tags, strips
8766
+ * attributes outside the narrow `domStringAllowedAttributes` list (refer
8767
+ * `sanitizeElement`), and scrubs script-scheme URLs. Returns the sanitized
8768
+ * HTML string.
8769
+ *
8770
+ * Use this when you have an HTML string from an unknown source and need to
8771
+ * render it via `innerHTML`. Use `sanitizeDOMTree` instead when you already
8772
+ * have a DOM tree and want to sanitize it in place without a string round
8773
+ * trip. The two apply the same dangerous-vector scrubbing but different
8774
+ * attribute allowlists: this path stays narrow so existing consumers
8775
+ * (toast, loading, alert message, etc.) are unaffected, while
8776
+ * `sanitizeDOMTree` uses the wider rich-content allowlist.
8777
+ *
8778
+ * @param untrustedString - The HTML string to sanitize. Pass an
8779
+ * `IonicSafeString` to bypass sanitization, or `undefined` to short-circuit.
8780
+ * @returns The sanitized HTML string, or `undefined` if the input was
8781
+ * `undefined`. Returns `''` if sanitization fails or the input contains
8782
+ * an inline `onload=` handler.
8783
+ */
8784
+ const sanitizeDOMString = (untrustedString) => {
8785
+ try {
8786
+ if (untrustedString instanceof IonicSafeString) {
8787
+ return untrustedString.value;
8788
+ }
8789
+ if (!isSanitizerEnabled() || typeof untrustedString !== 'string' || untrustedString === '') {
8790
+ return untrustedString;
8791
+ }
8792
+ /**
8793
+ * onload is fired when appending to a document
8794
+ * fragment in Chrome. If a string
8795
+ * contains onload then we should not
8796
+ * attempt to add this to the fragment.
8797
+ */
8798
+ if (untrustedString.includes('onload=')) {
8799
+ return '';
8800
+ }
8801
+ /**
8802
+ * Create a document fragment
8803
+ * separate from the main DOM,
8804
+ * create a div to do our work in
8805
+ */
8806
+ const documentFragment = document.createDocumentFragment();
8807
+ const workingDiv = document.createElement('div');
8808
+ documentFragment.appendChild(workingDiv);
8809
+ workingDiv.innerHTML = untrustedString;
8810
+ /**
8811
+ * Remove any elements
8812
+ * that are blocked
8813
+ */
8814
+ blockedTags.forEach((blockedTag) => {
8815
+ const getElementsToRemove = documentFragment.querySelectorAll(blockedTag);
8816
+ for (let elementIndex = getElementsToRemove.length - 1; elementIndex >= 0; elementIndex--) {
8817
+ const element = getElementsToRemove[elementIndex];
8818
+ if (element.parentNode) {
8819
+ element.parentNode.removeChild(element);
8820
+ }
8821
+ else {
8822
+ documentFragment.removeChild(element);
8823
+ }
8824
+ /**
8825
+ * We still need to sanitize
8826
+ * the children of this element
8827
+ * as they are left behind
8828
+ */
8829
+ const childElements = getElementChildren(element);
8830
+ /* eslint-disable-next-line */
8831
+ for (let childIndex = 0; childIndex < childElements.length; childIndex++) {
8832
+ sanitizeElement(childElements[childIndex], domStringAllowedAttributes);
8833
+ }
8834
+ }
8835
+ });
8836
+ /**
8837
+ * Go through remaining elements and remove
8838
+ * non-allowed attribs
8839
+ */
8840
+ // IE does not support .children on document fragments, only .childNodes
8841
+ const dfChildren = getElementChildren(documentFragment);
8842
+ /* eslint-disable-next-line */
8843
+ for (let childIndex = 0; childIndex < dfChildren.length; childIndex++) {
8844
+ sanitizeElement(dfChildren[childIndex], domStringAllowedAttributes);
8845
+ }
8846
+ // Append document fragment to div
8847
+ const fragmentDiv = document.createElement('div');
8848
+ fragmentDiv.appendChild(documentFragment);
8849
+ // First child is always the div we did our work in
8850
+ const getInnerDiv = fragmentDiv.querySelector('div');
8851
+ return getInnerDiv !== null ? getInnerDiv.innerHTML : fragmentDiv.innerHTML;
8852
+ }
8853
+ catch (err) {
8854
+ printIonError('sanitizeDOMString', err);
8855
+ return '';
8856
+ }
8857
+ };
8858
+ /**
8859
+ * Sanitize an entire trusted DOM tree in place.
8860
+ *
8861
+ * Removes blocked tags (`script`, `iframe`, etc.) from the subtree and
8862
+ * then sanitizes attributes on every remaining element using the wider
8863
+ * `richContentAllowedAttributes` allowlist (refer `sanitizeElement`).
8864
+ * Component presentational attributes (`size`, `color`, `shape`, inline
8865
+ * SVG, `aria-*`, `data-*`) are preserved; `style`, event handlers (`on*`),
8866
+ * form/navigation-hijack attributes, script-scheme URLs, and non-image
8867
+ * `data:` URLs are stripped.
8868
+ *
8869
+ * Use this when you have a DOM tree the developer controls (e.g.
8870
+ * cloned slot content from a component) and you need to render it
8871
+ * elsewhere safely.
8872
+ *
8873
+ * @param root - The root element whose subtree will be sanitized in
8874
+ * place. No-op when the sanitizer is disabled via `Ionic.config`.
8875
+ */
8876
+ const sanitizeDOMTree = (root) => {
8877
+ if (!isSanitizerEnabled()) {
8878
+ return;
8879
+ }
8880
+ blockedTags.forEach((tag) => {
8881
+ const matches = root.querySelectorAll(tag);
8882
+ for (let i = matches.length - 1; i >= 0; i--) {
8883
+ matches[i].remove();
8884
+ }
8885
+ });
8886
+ sanitizeElement(root, richContentAllowedAttributes, richContentAllowedAttributePrefixes);
8887
+ };
8888
+ /**
8889
+ * Clean up current element based on allowed attributes
8890
+ * and then recursively dig down into any child elements to
8891
+ * clean those up as well
8892
+ */
8893
+ // TODO(FW-2832): type (using Element triggers other type errors as well)
8894
+ const sanitizeElement = (element, allowedAttributes, allowedAttributePrefixes = []) => {
8895
+ // IE uses childNodes, so ignore nodes that are not elements
8896
+ if (element.nodeType && element.nodeType !== 1) {
8897
+ return;
8898
+ }
8899
+ /**
8900
+ * If attributes is not a NamedNodeMap
8901
+ * then we should remove the element entirely.
8902
+ * This helps avoid DOM Clobbering attacks where
8903
+ * attributes is overridden.
8904
+ */
8905
+ if (typeof NamedNodeMap !== 'undefined' && !(element.attributes instanceof NamedNodeMap)) {
8906
+ element.remove();
8907
+ return;
8908
+ }
8909
+ /**
8910
+ * Always strip `style` (CSS injection, `background:url()` beaconing, UI
8911
+ * spoofing). It is never on the allowlist, but it is removed explicitly
8912
+ * here because some engines (e.g. jsdom) don't enumerate the CSSOM-backed
8913
+ * `style` attribute in `element.attributes`, which would let the loop
8914
+ * below skip over it.
8915
+ */
8916
+ element.removeAttribute('style');
8917
+ for (let i = element.attributes.length - 1; i >= 0; i--) {
8918
+ const attribute = element.attributes.item(i);
8919
+ const attributeName = attribute.name;
8920
+ const lowerName = attributeName.toLowerCase();
8921
+ /**
8922
+ * Remove any attribute that is not on the allowlist. This drops event
8923
+ * handlers (`on*`), `style`, the form/navigation-hijack attributes
8924
+ * (`formaction`, `action`, `target`), namespaced attributes like
8925
+ * `xlink:href`, and anything else not explicitly known to be safe.
8926
+ */
8927
+ if (!isAttributeAllowed(lowerName, allowedAttributes, allowedAttributePrefixes)) {
8928
+ element.removeAttribute(attributeName);
8929
+ continue;
8930
+ }
8931
+ // clean up any allowed attribs
8932
+ // that attempt to do any JS funny-business
8933
+ const attributeValue = attribute.value;
8934
+ if (attributeValue == null) {
8935
+ continue;
8936
+ }
8937
+ /**
8938
+ * Scrub dangerous schemes from the value. The value is normalized first
8939
+ * (whitespace and ASCII control characters removed) so entity-obfuscated
8940
+ * payloads such as `java&#9;script:`, which the parser decodes to
8941
+ * `java\tscript:`, are still caught. Normalizing the value also covers
8942
+ * namespaced attributes, where the previous `element[attributeName]`
8943
+ * property reflection returned `undefined` and let them slip through.
8944
+ */
8945
+ const normalizedValue = attributeValue.replace(controlCharactersAndWhitespace, '').toLowerCase();
8946
+ // Script schemes are never allowed, on any attribute.
8947
+ if (normalizedValue.includes('javascript:') || normalizedValue.includes('vbscript:')) {
8948
+ element.removeAttribute(attributeName);
8949
+ continue;
8950
+ }
8951
+ /**
8952
+ * For URL-bearing attributes, allow `data:` URIs only for raster
8953
+ * images. Document-bearing types (`text/html`, `image/svg+xml`,
8954
+ * `application/*`, etc.) can carry markup or script when navigated to
8955
+ * or rendered, so they are stripped, while safe image types are kept so
8956
+ * inline images keep working.
8957
+ */
8958
+ if (urlAttributes.includes(lowerName) &&
8959
+ normalizedValue.startsWith('data:') &&
8960
+ !safeDataImageUri.test(normalizedValue)) {
8961
+ element.removeAttribute(attributeName);
8962
+ }
8963
+ }
8964
+ /**
8965
+ * Sanitize any nested children
8966
+ */
8967
+ const childElements = getElementChildren(element);
8968
+ /* eslint-disable-next-line */
8969
+ for (let i = 0; i < childElements.length; i++) {
8970
+ sanitizeElement(childElements[i], allowedAttributes, allowedAttributePrefixes);
8971
+ }
8972
+ };
8973
+ /**
8974
+ * IE doesn't always support .children
8975
+ * so we revert to .childNodes instead
8976
+ */
8977
+ // TODO(FW-2832): type
8978
+ const getElementChildren = (el) => {
8979
+ return el.children != null ? el.children : el.childNodes;
8980
+ };
8981
+ const isSanitizerEnabled = () => {
8982
+ var _a;
8983
+ const win = window;
8984
+ const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;
8985
+ if (config) {
8986
+ if (config.get) {
8987
+ return config.get('sanitizerEnabled', true);
8988
+ }
8989
+ else {
8990
+ return config.sanitizerEnabled === true || config.sanitizerEnabled === undefined;
8991
+ }
8992
+ }
8993
+ return true;
8994
+ };
8995
+ /**
8996
+ * Mirror known custom-element DOM properties onto attributes so they
8997
+ * survive `cloneNode`. Call this on a DOM subtree before cloning it for
8998
+ * rendering elsewhere (e.g. cloning slotted option content into an
8999
+ * overlay).
9000
+ *
9001
+ * Only sets the attribute when the property holds a non-empty string
9002
+ * and the attribute isn't already present, so existing attributes
9003
+ * take precedence.
9004
+ *
9005
+ * @param root - The root element whose subtree (and itself) will be
9006
+ * inspected.
9007
+ */
9008
+ const reflectPropertiesToAttributes = (root) => {
9009
+ const candidates = [];
9010
+ if (root.tagName in elementPropsToReflect) {
9011
+ candidates.push(root);
9012
+ }
9013
+ for (const tagName of Object.keys(elementPropsToReflect)) {
9014
+ candidates.push(...Array.from(root.querySelectorAll(tagName.toLowerCase())));
9015
+ }
9016
+ for (const el of candidates) {
9017
+ if (!(el.tagName in elementPropsToReflect)) {
9018
+ continue;
9019
+ }
9020
+ const props = elementPropsToReflect[el.tagName];
9021
+ for (const prop of props) {
9022
+ const value = el[prop];
9023
+ if (typeof value === 'string' && value.length > 0 && !el.hasAttribute(prop)) {
9024
+ el.setAttribute(prop, value);
9025
+ }
9026
+ }
9027
+ }
9028
+ };
9029
+ /**
9030
+ * Attribute allowlist for `sanitizeDOMString`. Intentionally narrow: this
9031
+ * path sanitizes developer HTML strings rendered via `innerHTML` by
9032
+ * `ion-toast`, `ion-loading`, the `ion-alert` message,
9033
+ * `ion-refresher-content`, and `ion-infinite-scroll-content`, so the list
9034
+ * is kept to the minimum those have always needed. Broadening it here would
9035
+ * change sanitization output for all of those consumers, so the wider
9036
+ * rich-content allowlist below is deliberately scoped to `sanitizeDOMTree`
9037
+ * instead.
9038
+ */
9039
+ const domStringAllowedAttributes = ['class', 'id', 'href', 'src', 'name', 'slot'];
9040
+ /**
9041
+ * Attribute allowlist for `sanitizeDOMTree` (the select rich-content path).
9042
+ * Covers global HTML attributes, the Ionic component presentational props
9043
+ * that cloned rich content (e.g. `ion-select-option` markup) relies on, and
9044
+ * the inert SVG presentation attributes used by inline icons.
9045
+ *
9046
+ * `aria-*` and `data-*` are allowed separately by prefix (refer
9047
+ * `richContentAllowedAttributePrefixes`) since they are inert and not worth
9048
+ * enumerating. URL-bearing names (`href`, `src`) are allowed here, but
9049
+ * their values are still scrubbed for script schemes in `sanitizeElement`.
9050
+ *
9051
+ * Notably absent: `style`, event handlers (`on*`), and the
9052
+ * form/navigation-hijack attributes (`formaction`, `action`, `target`),
9053
+ * which are therefore stripped.
9054
+ */
9055
+ const richContentAllowedAttributes = [
9056
+ // Global / structural
9057
+ 'class',
9058
+ 'id',
9059
+ 'slot',
9060
+ 'name',
9061
+ 'title',
9062
+ 'alt',
9063
+ 'lang',
9064
+ 'dir',
9065
+ 'role',
9066
+ 'type',
9067
+ 'value',
9068
+ 'disabled',
9069
+ 'width',
9070
+ 'height',
9071
+ 'href',
9072
+ 'src',
9073
+ // Ionic component presentational props
9074
+ 'color',
9075
+ 'size',
9076
+ 'shape',
9077
+ 'fill',
9078
+ 'expand',
9079
+ 'mode',
9080
+ 'theme',
9081
+ 'icon',
9082
+ 'label',
9083
+ 'label-placement',
9084
+ 'justify',
9085
+ 'inset',
9086
+ 'lines',
9087
+ 'ios',
9088
+ 'md',
9089
+ // SVG presentation attributes (compared lowercased, e.g. `viewBox`)
9090
+ 'xmlns',
9091
+ 'viewbox',
9092
+ 'preserveaspectratio',
9093
+ 'stroke',
9094
+ 'stroke-width',
9095
+ 'stroke-linecap',
9096
+ 'stroke-linejoin',
9097
+ 'stroke-opacity',
9098
+ 'stroke-dasharray',
9099
+ 'fill-rule',
9100
+ 'fill-opacity',
9101
+ 'clip-rule',
9102
+ 'd',
9103
+ 'points',
9104
+ 'cx',
9105
+ 'cy',
9106
+ 'r',
9107
+ 'rx',
9108
+ 'ry',
9109
+ 'x',
9110
+ 'y',
9111
+ 'x1',
9112
+ 'y1',
9113
+ 'x2',
9114
+ 'y2',
9115
+ 'transform',
9116
+ 'opacity',
9117
+ ];
9118
+ /**
9119
+ * Attribute-name prefixes that are always safe to keep in the rich-content
9120
+ * path. `aria-*` and `data-*` attributes cannot execute script or load
9121
+ * resources, so they are allowed wholesale rather than enumerated by name.
9122
+ */
9123
+ const richContentAllowedAttributePrefixes = ['aria-', 'data-'];
9124
+ /**
9125
+ * Whether an attribute name (already lowercased) is safe to keep, by exact
9126
+ * match or by an allowed prefix.
9127
+ */
9128
+ const isAttributeAllowed = (lowerName, allowedAttributes, allowedAttributePrefixes) => {
9129
+ if (allowedAttributes.includes(lowerName)) {
9130
+ return true;
9131
+ }
9132
+ return allowedAttributePrefixes.some((prefix) => lowerName.startsWith(prefix));
9133
+ };
9134
+ /**
9135
+ * Matches ASCII control characters and whitespace (including the
9136
+ * non-breaking space). Used to normalize attribute values before matching
9137
+ * a URL scheme so entity-obfuscated payloads such as `java&#9;script:`
9138
+ * (decoded by the parser to `java\tscript:`) can't smuggle a scheme past
9139
+ * the check.
9140
+ */
9141
+ // eslint-disable-next-line no-control-regex -- matching control characters is the point
9142
+ const controlCharactersAndWhitespace = /[\u0000-\u0020\u007f-\u00a0]/g;
9143
+ /**
9144
+ * Attributes whose values are URLs. Their values are scheme-checked in
9145
+ * `sanitizeElement` (e.g. `data:` filtering) beyond the script-scheme scrub
9146
+ * applied to every attribute.
9147
+ */
9148
+ const urlAttributes = ['href', 'src'];
9149
+ /**
9150
+ * Matches a `data:` URI for a raster image type that cannot carry script.
9151
+ * `image/svg+xml` is deliberately excluded (SVG can execute script), as are
9152
+ * document types like `text/html` and `application/*`. The value is already
9153
+ * lowercased and whitespace-stripped before this is tested.
9154
+ */
9155
+ const safeDataImageUri = /^data:image\/(?:png|jpe?g|gif|webp|bmp|avif|x-icon|vnd\.microsoft\.icon)[;,]/;
9156
+ /**
9157
+ * Tags removed entirely (with their subtree) before attribute sanitization.
9158
+ * Exported so tests can assert the set without hardcoding it.
9159
+ */
9160
+ const blockedTags = ['script', 'style', 'iframe', 'meta', 'link', 'object', 'embed', 'base'];
9161
+ /**
9162
+ * Properties on custom elements that frameworks (Vue, Angular) often
9163
+ * set as DOM properties rather than attributes. `cloneNode` only copies
9164
+ * attributes, so these values are lost when slotted content is cloned
9165
+ * into an overlay. For each known custom element, we mirror the listed
9166
+ * properties onto attributes so the cloned copy still has the data it
9167
+ * needs to render.
9168
+ *
9169
+ * Keyed by uppercased tagName so the lookup matches `Element.tagName`.
9170
+ */
9171
+ const elementPropsToReflect = {
9172
+ 'ION-ICON': ['icon', 'name', 'src', 'ios', 'md'],
9173
+ };
9174
+ class IonicSafeString {
9175
+ constructor(value) {
9176
+ this.value = value;
9177
+ }
9178
+ }
9179
+
9180
+ /**
9181
+ * Converts a DOM node into a Stencil VNode (or text string) so the
9182
+ * resulting tree is rendered through the component's normal render
9183
+ * path. Rendering through Stencil ensures that scoped CSS classes
9184
+ * (e.g. `sc-ion-action-sheet-ionic`) are applied to every element.
9185
+ *
9186
+ * Highly recommended to pre-sanitize the source DOM (see
9187
+ * `getOptionContent` in select.tsx). This function performs pure
9188
+ * structural conversion — no security filtering.
9189
+ *
9190
+ * Preserves attributes only — properties set imperatively on the source
9191
+ * element (e.g. `input.value` after a user types) won't carry through.
9192
+ * In practice this isn't a concern: interactive controls shouldn't
9193
+ * appear in select-option rich content since they'd nest inside the
9194
+ * overlay's button/radio/checkbox wrapper, which is invalid HTML and
9195
+ * an accessibility issue.
9196
+ *
9197
+ * @param node - The DOM node to convert. Text nodes become strings,
9198
+ * element nodes become VNodes, and any other node types are skipped.
9199
+ * @param keyPrefix - String prefix used to build a stable VNode key,
9200
+ * so Stencil's diff can preserve elements across re-renders.
9201
+ * @param index - Position of this node among its siblings. Combined
9202
+ * with `keyPrefix` to form the final unique key.
9203
+ * @returns The converted VNode, a text string, or `null` if the node
9204
+ * type isn't supported.
9205
+ *
9206
+ * @internal Exported only so it can be unit tested; not part of the
9207
+ * public API.
9208
+ */
9209
+ const cloneToVNode = (node, keyPrefix, index) => {
9210
+ var _a;
9211
+ if (node.nodeType === Node.TEXT_NODE) {
9212
+ return (_a = node.textContent) !== null && _a !== void 0 ? _a : '';
9213
+ }
9214
+ if (node.nodeType !== Node.ELEMENT_NODE) {
9215
+ return null;
9216
+ }
9217
+ const el = node;
9218
+ const tag = el.tagName.toLowerCase();
9219
+ const key = `${keyPrefix}-${index}`;
9220
+ const attrs = { key };
9221
+ for (let i = 0; i < el.attributes.length; i++) {
9222
+ const attr = el.attributes.item(i);
9223
+ attrs[attr.name] = attr.value;
9224
+ }
9225
+ const children = Array.from(el.childNodes)
9226
+ .map((child, i) => cloneToVNode(child, key, i))
9227
+ .filter((c) => c !== null);
9228
+ return hAsync(tag, attrs, children);
9229
+ };
9230
+ /**
9231
+ * Renders cloned DOM content as Stencil JSX. Walking the source DOM
9232
+ * into VNodes (rather than injecting it via innerHTML) keeps the
9233
+ * content inside Stencil's render path, so scoped CSS classes are
9234
+ * applied automatically and component attributes like `size` or
9235
+ * `color` survive intact.
9236
+ *
9237
+ * Span elements should be used when this content renders within buttons,
9238
+ * depending on the select interface. Buttons can only have phrasing
9239
+ * content to prevent accessibility issues.
9240
+ *
9241
+ * @param id - Unique identifier for generating stable virtual DOM keys.
9242
+ * @param content - The HTMLElement container whose child nodes will be cloned.
9243
+ * @param className - CSS class applied to the wrapper element.
9244
+ * @param useSpan - Whether to use a span element instead of a div for the wrapper.
9245
+ */
9246
+ const renderClonedContent = (id, content, className, useSpan = false) => {
9247
+ const Tag = useSpan ? 'span' : 'div';
9248
+ const keyPrefix = `${className}-${id}`;
9249
+ /**
9250
+ * Do not remove. This is the only sanitization pass for callers that pass
9251
+ * an `HTMLElement` straight to `renderOptionLabel` (e.g. vanilla JS)
9252
+ * without going through `getOptionContent`, which sanitizes upstream.
9253
+ * `cloneToVNode` does pure structural conversion and no security
9254
+ * filtering, so dropping this call would reopen an XSS hole on the
9255
+ * direct `HTMLElement` path.
9256
+ */
9257
+ sanitizeDOMTree(content);
9258
+ return (hAsync(Tag, { class: className, key: keyPrefix }, Array.from(content.childNodes).map((child, i) => cloneToVNode(child, keyPrefix, i))));
9259
+ };
9260
+ /**
9261
+ * Renders the label content for a select option within an overlay
9262
+ * interface based on the presence of rich content.
9263
+ *
9264
+ * Span elements should be used when this content renders within buttons,
9265
+ * depending on the select interface. Buttons can only have phrasing
9266
+ * content to prevent accessibility issues.
9267
+ *
9268
+ * @param option - The content option data containing label, slots,
9269
+ * and description.
9270
+ * @param className - The base CSS class for the label element.
9271
+ * @param useSpan - Whether to use a span element instead of a div for the label.
9272
+ */
9273
+ const renderOptionLabel = (option, className, useSpan = false) => {
9274
+ const { id, label, startContent, endContent, description } = option;
9275
+ const hasRichContent = !!startContent || !!endContent || !!description;
9276
+ const Tag = useSpan ? 'span' : 'div';
9277
+ // Render simple string label if there is no rich content to display
9278
+ if (!hasRichContent && (typeof label === 'string' || !label)) {
9279
+ return (hAsync(Tag, { class: className, key: `${className}-${id}` }, label));
9280
+ }
9281
+ // Render the main label
9282
+ const labelEl = typeof label === 'string' || !label ? (
9283
+ // Label is a simple string or undefined
9284
+ hAsync(Tag, { key: `${className}-label-${id}` }, label)) : (
9285
+ // Label is an HTMLElement with potential rich content
9286
+ renderClonedContent(id, label, `${className}-text`, useSpan));
9287
+ // No rich content, render just the label
9288
+ if (!hasRichContent) {
9289
+ return (hAsync(Tag, { class: className, key: `${className}-${id}` }, labelEl));
9290
+ }
9291
+ // Render label with rich content (start, end, description)
9292
+ return (hAsync(Tag, { class: `${className} ${className}-has-rich-content`, key: `${className}-${id}` }, startContent && renderClonedContent(id, startContent, 'select-option-start', useSpan), hAsync(Tag, { class: "select-option-content", key: `${className}-content-${id}` }, labelEl, description && (hAsync(Tag, { class: "select-option-description", key: `${className}-desc-${id}` }, description))), endContent && renderClonedContent(id, endContent, 'select-option-end', useSpan)));
9293
+ };
9294
+
8739
9295
  const hostContext = (selector, el) => {
8740
9296
  return el.closest(selector) !== null;
8741
9297
  };
@@ -9591,7 +10147,7 @@ const createAnimation = (animationId) => {
9591
10147
  /**
9592
10148
  * iOS Action Sheet Enter Animation
9593
10149
  */
9594
- const iosEnterAnimation$6 = (baseEl) => {
10150
+ const iosEnterAnimation$5 = (baseEl) => {
9595
10151
  const baseAnimation = createAnimation();
9596
10152
  const backdropAnimation = createAnimation();
9597
10153
  const wrapperAnimation = createAnimation();
@@ -9615,7 +10171,7 @@ const iosEnterAnimation$6 = (baseEl) => {
9615
10171
  /**
9616
10172
  * iOS Action Sheet Leave Animation
9617
10173
  */
9618
- const iosLeaveAnimation$6 = (baseEl) => {
10174
+ const iosLeaveAnimation$5 = (baseEl) => {
9619
10175
  const baseAnimation = createAnimation();
9620
10176
  const backdropAnimation = createAnimation();
9621
10177
  const wrapperAnimation = createAnimation();
@@ -9672,9 +10228,9 @@ const mdLeaveAnimation$5 = (baseEl) => {
9672
10228
  .addAnimation([backdropAnimation, wrapperAnimation]);
9673
10229
  };
9674
10230
 
9675
- const actionSheetIosCss = () => `.sc-ion-action-sheet-ios-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-ios-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-ios{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button-inner.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-ios{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-ios::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-ios{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-ios{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--backdrop-opacity:var(--ion-backdrop-opacity, 0.4);--button-background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent;--button-background-activated:var(--ion-text-color, #000);--button-background-activated-opacity:.08;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-background-selected:var(--ion-color-step-150, var(--ion-background-color-step-150, var(--ion-background-color, #fff)));--button-background-selected-opacity:1;--button-color:var(--ion-color-primary, #0054e9);--button-color-disabled:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--color:var(--ion-color-step-400, var(--ion-text-color-step-600, #999999));text-align:center}.action-sheet-wrapper.sc-ion-action-sheet-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);padding-bottom:var(--ion-safe-area-bottom, 0);-webkit-box-sizing:content-box;box-sizing:content-box}.action-sheet-container.sc-ion-action-sheet-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0}.action-sheet-group.sc-ion-action-sheet-ios{border-radius:13px;margin-bottom:8px}.action-sheet-group.sc-ion-action-sheet-ios:first-child{margin-top:10px}.action-sheet-group.sc-ion-action-sheet-ios:last-child{margin-bottom:10px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-group.sc-ion-action-sheet-ios{background-color:transparent;-webkit-backdrop-filter:saturate(280%) blur(20px);backdrop-filter:saturate(280%) blur(20px)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-title.sc-ion-action-sheet-ios,.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.sc-ion-action-sheet-ios{background-color:transparent;background-image:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8))), -webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background-image:linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%), linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4) 50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 50%);background-repeat:no-repeat;background-position:top, bottom;background-size:100% calc(100% - 1px), 100% 1px;-webkit-backdrop-filter:saturate(120%);backdrop-filter:saturate(120%)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.ion-activated.sc-ion-action-sheet-ios{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.7);background-image:none}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-cancel.sc-ion-action-sheet-ios{background:var(--button-background-selected)}}.action-sheet-title.sc-ion-action-sheet-ios{background:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, transparent)) bottom/100% 1px no-repeat transparent;background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent}.action-sheet-title.sc-ion-action-sheet-ios{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:14px;padding-bottom:13px;color:var(--color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-size:max(13px, 0.8125rem);font-weight:400;text-align:center}.action-sheet-title.action-sheet-has-sub-title.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-sub-title.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:6px;padding-bottom:0;font-size:max(13px, 0.8125rem);font-weight:400}.action-sheet-button.sc-ion-action-sheet-ios{-webkit-padding-start:14px;padding-inline-start:14px;-webkit-padding-end:14px;padding-inline-end:14px;padding-top:14px;padding-bottom:14px;min-height:56px;font-size:max(20px, 1.25rem);contain:content}.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:max(28px, 1.75rem);pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios:last-child{background-image:none}.action-sheet-selected.sc-ion-action-sheet-ios{font-weight:bold}.action-sheet-cancel.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-cancel.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-destructive.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-activated.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-focused.sc-ion-action-sheet-ios{color:var(--ion-color-danger, #c5000f)}@media (any-hover: hover){.action-sheet-destructive.sc-ion-action-sheet-ios:hover{color:var(--ion-color-danger, #c5000f)}}`;
10231
+ const actionSheetIosCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-ios,.alert-radio-label-has-rich-content.sc-ion-action-sheet-ios,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-ios,.select-option-label-has-rich-content.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-ios,.alert-radio-label-has-rich-content.sc-ion-action-sheet-ios,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-ios,.select-option-content.sc-ion-action-sheet-ios{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-action-sheet-ios,.alert-checkbox-label-text.sc-ion-action-sheet-ios,.alert-radio-label-text.sc-ion-action-sheet-ios,.select-option-label-text.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-action-sheet-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-action-sheet-ios:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-action-sheet-ios::part(label),ion-radio.select-option-has-rich-content.sc-ion-action-sheet-ios [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-ios::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-ios [part~="label"],.select-option-content.sc-ion-action-sheet-ios{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-action-sheet-ios>ion-avatar.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>ion-img.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>ion-thumbnail.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>img.sc-ion-action-sheet-ios,.select-option-start.sc-ion-action-sheet-ios>svg.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-avatar.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-img.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-thumbnail.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>img.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>svg.sc-ion-action-sheet-ios{width:44px;height:44px}.select-option-start.sc-ion-action-sheet-ios>ion-icon.sc-ion-action-sheet-ios,.select-option-end.sc-ion-action-sheet-ios>ion-icon.sc-ion-action-sheet-ios{width:28px;height:28px}.action-sheet-button-label-text.sc-ion-action-sheet-ios{-ms-flex-pack:center;justify-content:center}.select-option-has-rich-content.sc-ion-action-sheet-ios{-webkit-padding-end:16px;padding-inline-end:16px}.sc-ion-action-sheet-ios-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-ios-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-ios{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button.sc-ion-action-sheet-ios:disabled ion-icon.sc-ion-action-sheet-ios{color:currentColor}.action-sheet-button-inner.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-ios{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-ios::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-ios{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-ios::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-ios{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-ios::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios:not(.ion-activated){color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios:not(.ion-activated)::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-ios:not(.ion-activated).action-sheet-selected::after{background:var(--button-background-focused, var(--button-background-selected));opacity:var(--button-background-focused-opacity, var(--button-background-selected-opacity))}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-ios:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--backdrop-opacity:var(--ion-backdrop-opacity, 0.4);--button-background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent;--button-background-activated:var(--ion-text-color, #000);--button-background-activated-opacity:.08;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-background-selected:var(--ion-color-step-150, var(--ion-background-color-step-150, var(--ion-background-color, #fff)));--button-background-selected-opacity:1;--button-color:var(--ion-color-primary, #0054e9);--button-color-disabled:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--color:var(--ion-color-step-400, var(--ion-text-color-step-600, #999999));text-align:center}.action-sheet-wrapper.sc-ion-action-sheet-ios{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);padding-bottom:var(--ion-safe-area-bottom, 0);-webkit-box-sizing:content-box;box-sizing:content-box}.action-sheet-container.sc-ion-action-sheet-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0}.action-sheet-group.sc-ion-action-sheet-ios{border-radius:13px;margin-bottom:8px}.action-sheet-group.sc-ion-action-sheet-ios:first-child{margin-top:10px}.action-sheet-group.sc-ion-action-sheet-ios:last-child{margin-bottom:10px}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-group.sc-ion-action-sheet-ios{background-color:transparent;-webkit-backdrop-filter:saturate(280%) blur(20px);backdrop-filter:saturate(280%) blur(20px)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-title.sc-ion-action-sheet-ios,.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.sc-ion-action-sheet-ios{background-color:transparent;background-image:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8))), -webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4)), color-stop(50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background-image:linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%), linear-gradient(0deg, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4), rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.4) 50%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 50%);background-repeat:no-repeat;background-position:top, bottom;background-size:100% calc(100% - 1px), 100% 1px;-webkit-backdrop-filter:saturate(120%);backdrop-filter:saturate(120%)}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-button.ion-activated.sc-ion-action-sheet-ios{background-color:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.7);background-image:none}.action-sheet-translucent.sc-ion-action-sheet-ios-h .action-sheet-cancel.sc-ion-action-sheet-ios{background:var(--button-background-selected)}}.action-sheet-title.sc-ion-action-sheet-ios{background:-webkit-gradient(linear, left bottom, left top, from(rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08)), color-stop(50%, transparent)) bottom/100% 1px no-repeat transparent;background:linear-gradient(0deg, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08), rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.08) 50%, transparent 50%) bottom/100% 1px no-repeat transparent}.action-sheet-title.sc-ion-action-sheet-ios{-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:14px;padding-bottom:13px;color:var(--color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-size:max(13px, 0.8125rem);font-weight:400;text-align:center}.action-sheet-title.action-sheet-has-sub-title.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-sub-title.sc-ion-action-sheet-ios{padding-left:0;padding-right:0;padding-top:6px;padding-bottom:0;font-size:max(13px, 0.8125rem);font-weight:400}.action-sheet-button.sc-ion-action-sheet-ios{-webkit-padding-start:14px;padding-inline-start:14px;-webkit-padding-end:14px;padding-inline-end:14px;padding-top:14px;padding-bottom:14px;min-height:56px;font-size:max(20px, 1.25rem);contain:content}.action-sheet-button.sc-ion-action-sheet-ios .action-sheet-icon.sc-ion-action-sheet-ios{-webkit-margin-end:0.3em;margin-inline-end:0.3em;font-size:max(28px, 1.75rem);pointer-events:none}.action-sheet-button.sc-ion-action-sheet-ios:last-child{background-image:none}.action-sheet-selected.sc-ion-action-sheet-ios{font-weight:bold}.action-sheet-cancel.sc-ion-action-sheet-ios{font-weight:600}.action-sheet-cancel.sc-ion-action-sheet-ios::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-destructive.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-activated.sc-ion-action-sheet-ios,.action-sheet-destructive.ion-focused.sc-ion-action-sheet-ios{color:var(--ion-color-danger, #c5000f)}@media (any-hover: hover){.action-sheet-destructive.sc-ion-action-sheet-ios:hover{color:var(--ion-color-danger, #c5000f)}}`;
9676
10232
 
9677
- const actionSheetMdCss = () => `.sc-ion-action-sheet-md-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-md-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-md{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-md{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button-inner.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-md{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-md::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-md{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-md{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-md::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md{color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);--button-background:transparent;--button-background-selected:currentColor;--button-background-selected-opacity:0;--button-background-activated:transparent;--button-background-activated-opacity:0;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--button-color-disabled:var(--button-color);--color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54)}.action-sheet-wrapper.sc-ion-action-sheet-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:0}.action-sheet-title.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:20px;padding-bottom:17px;min-height:60px;color:var(--color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54));font-size:1rem;text-align:start}.action-sheet-sub-title.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:16px;padding-bottom:0;font-size:0.875rem}.action-sheet-group.sc-ion-action-sheet-md:first-child{padding-top:0}.action-sheet-group.sc-ion-action-sheet-md:last-child{padding-bottom:var(--ion-safe-area-bottom)}.action-sheet-button.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;position:relative;min-height:52px;font-size:1rem;text-align:start;contain:content;overflow:hidden}.action-sheet-icon.sc-ion-action-sheet-md{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:0;margin-bottom:0;color:var(--color);font-size:1.5rem}.action-sheet-button-inner.sc-ion-action-sheet-md{-ms-flex-pack:start;justify-content:flex-start}.action-sheet-selected.sc-ion-action-sheet-md{font-weight:bold}`;
10233
+ const actionSheetMdCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-md,.alert-radio-label-has-rich-content.sc-ion-action-sheet-md,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-md,.select-option-label-has-rich-content.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-action-sheet-md,.alert-radio-label-has-rich-content.sc-ion-action-sheet-md,.alert-checkbox-label-has-rich-content.sc-ion-action-sheet-md,.select-option-content.sc-ion-action-sheet-md{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-action-sheet-md,.alert-checkbox-label-text.sc-ion-action-sheet-md,.alert-radio-label-text.sc-ion-action-sheet-md,.select-option-label-text.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-action-sheet-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-action-sheet-md:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-action-sheet-md::part(label),ion-radio.select-option-has-rich-content.sc-ion-action-sheet-md [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-md::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-action-sheet-md [part~="label"],.select-option-content.sc-ion-action-sheet-md{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-action-sheet-md>ion-avatar.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-avatar.sc-ion-action-sheet-md{width:40px;height:40px}.select-option-start.sc-ion-action-sheet-md>ion-icon.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-icon.sc-ion-action-sheet-md{width:24px;height:24px}.select-option-start.sc-ion-action-sheet-md>ion-img.sc-ion-action-sheet-md,.select-option-start.sc-ion-action-sheet-md>img.sc-ion-action-sheet-md,.select-option-start.sc-ion-action-sheet-md>svg.sc-ion-action-sheet-md,.select-option-start.sc-ion-action-sheet-md>ion-thumbnail.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-img.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>img.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>svg.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>ion-thumbnail.sc-ion-action-sheet-md{width:56px;height:56px}.select-option-start.sc-ion-action-sheet-md>video.sc-ion-action-sheet-md,.select-option-end.sc-ion-action-sheet-md>video.sc-ion-action-sheet-md{width:114px;height:56px}.sc-ion-action-sheet-md-h{--color:initial;--button-color-activated:var(--button-color);--button-color-focused:var(--button-color);--button-color-hover:var(--button-color);--button-color-selected:var(--button-color);--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--height:auto;--max-height:calc(100% - (var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:block;position:fixed;outline:none;font-family:var(--ion-font-family, inherit);-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-action-sheet-md-h{display:none}.action-sheet-wrapper.sc-ion-action-sheet-md{left:0;right:0;bottom:0;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:block;position:absolute;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);z-index:10;pointer-events:none}.action-sheet-button.sc-ion-action-sheet-md{display:block;position:relative;width:100%;border:0;outline:none;background:var(--button-background);color:var(--button-color);font-family:inherit;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md:disabled{color:var(--button-color-disabled);opacity:0.4}.action-sheet-button.sc-ion-action-sheet-md:disabled ion-icon.sc-ion-action-sheet-md{color:currentColor}.action-sheet-button-inner.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;pointer-events:none;width:100%;height:100%;z-index:1}.action-sheet-container.sc-ion-action-sheet-md{display:-ms-flexbox;display:flex;-ms-flex-flow:column;flex-flow:column;-ms-flex-pack:end;justify-content:flex-end;height:100%;max-height:calc(100vh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)));max-height:calc(100dvh - (var(--ion-safe-area-top, 0) + var(--ion-safe-area-bottom, 0)))}.action-sheet-group.sc-ion-action-sheet-md{-ms-flex-negative:2;flex-shrink:2;overscroll-behavior-y:contain;overflow-y:auto;-webkit-overflow-scrolling:touch;pointer-events:all;background:var(--background)}@media (any-pointer: coarse){.action-sheet-group.sc-ion-action-sheet-md::-webkit-scrollbar{display:none}}.action-sheet-group-cancel.sc-ion-action-sheet-md{-ms-flex-negative:0;flex-shrink:0;overflow:hidden}.action-sheet-button.sc-ion-action-sheet-md::after{left:0;right:0;top:0;bottom:0;position:absolute;content:"";opacity:0}.action-sheet-selected.sc-ion-action-sheet-md{color:var(--button-color-selected)}.action-sheet-selected.sc-ion-action-sheet-md::after{background:var(--button-background-selected);opacity:var(--button-background-selected-opacity)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md{color:var(--button-color-activated)}.action-sheet-button.ion-activated.sc-ion-action-sheet-md::after{background:var(--button-background-activated);opacity:var(--button-background-activated-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md:not(.ion-activated){color:var(--button-color-focused)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md:not(.ion-activated)::after{background:var(--button-background-focused);opacity:var(--button-background-focused-opacity)}.action-sheet-button.ion-focused.sc-ion-action-sheet-md:not(.ion-activated).action-sheet-selected::after{background:var(--button-background-focused, var(--button-background-selected));opacity:var(--button-background-focused-opacity, var(--button-background-selected-opacity))}@media (any-hover: hover){.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover{color:var(--button-color-hover)}.action-sheet-button.sc-ion-action-sheet-md:not(:disabled):hover::after{background:var(--button-background-hover);opacity:var(--button-background-hover-opacity)}}.sc-ion-action-sheet-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);--button-background:transparent;--button-background-selected:currentColor;--button-background-selected-opacity:0;--button-background-activated:transparent;--button-background-activated-opacity:0;--button-background-hover:currentColor;--button-background-hover-opacity:.04;--button-background-focused:currentColor;--button-background-focused-opacity:.12;--button-color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));--button-color-disabled:var(--button-color);--color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54)}.action-sheet-wrapper.sc-ion-action-sheet-md{-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:var(--ion-safe-area-top, 0);margin-bottom:0}.action-sheet-title.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:20px;padding-bottom:17px;min-height:60px;color:var(--color, rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.54));font-size:1rem;text-align:start}.action-sheet-sub-title.sc-ion-action-sheet-md{padding-left:0;padding-right:0;padding-top:16px;padding-bottom:0;font-size:0.875rem}.action-sheet-group.sc-ion-action-sheet-md:first-child{padding-top:0}.action-sheet-group.sc-ion-action-sheet-md:last-child{padding-bottom:var(--ion-safe-area-bottom)}.action-sheet-button.sc-ion-action-sheet-md{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:12px;position:relative;min-height:52px;font-size:1rem;text-align:start;contain:content;overflow:hidden}.action-sheet-icon.sc-ion-action-sheet-md{-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:32px;margin-inline-end:32px;margin-top:0;margin-bottom:0;color:var(--color);font-size:1.5rem}.action-sheet-button-inner.sc-ion-action-sheet-md{-ms-flex-pack:start;justify-content:flex-start}.action-sheet-selected.sc-ion-action-sheet-md{font-weight:bold}`;
9678
10234
 
9679
10235
  /**
9680
10236
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
@@ -9771,7 +10327,7 @@ class ActionSheet {
9771
10327
  async present() {
9772
10328
  const unlock = await this.lockController.lock();
9773
10329
  await this.delegateController.attachViewToDom();
9774
- await present(this, 'actionSheetEnter', iosEnterAnimation$6, mdEnterAnimation$5);
10330
+ await present(this, 'actionSheetEnter', iosEnterAnimation$5, mdEnterAnimation$5);
9775
10331
  unlock();
9776
10332
  }
9777
10333
  /**
@@ -9788,7 +10344,7 @@ class ActionSheet {
9788
10344
  */
9789
10345
  async dismiss(data, role) {
9790
10346
  const unlock = await this.lockController.lock();
9791
- const dismissed = await dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation$6, mdLeaveAnimation$5);
10347
+ const dismissed = await dismiss(this, data, role, 'actionSheetLeave', iosLeaveAnimation$5, mdLeaveAnimation$5);
9792
10348
  if (dismissed) {
9793
10349
  this.delegateController.removeViewFromDom();
9794
10350
  }
@@ -9957,6 +10513,10 @@ class ActionSheet {
9957
10513
  this.gesture = undefined;
9958
10514
  }
9959
10515
  this.triggerController.removeClickListener();
10516
+ // Clean up aria-hidden if removed without dismiss() being called
10517
+ if (this.presented) {
10518
+ cleanupRootFocusTrapAccessibility();
10519
+ }
9960
10520
  }
9961
10521
  componentWillLoad() {
9962
10522
  var _a;
@@ -10045,12 +10605,26 @@ class ActionSheet {
10045
10605
  if (isRadio) {
10046
10606
  htmlAttrs['aria-checked'] = isActiveRadio ? 'true' : 'false';
10047
10607
  }
10048
- return (hAsync("button", Object.assign({}, htmlAttrs, { role: isRadio ? 'radio' : undefined, type: "button", id: buttonId, class: Object.assign(Object.assign({}, buttonClass$3(b)), (isRadio && { 'action-sheet-selected': isActiveRadio })), onClick: () => {
10608
+ /**
10609
+ * Cast to `SelectActionSheetButton` to access rich content
10610
+ * fields (`startContent`, `endContent`, `description`)
10611
+ * that are passed through from `ion-select` but not
10612
+ * part of the public `ActionSheetButton` interface.
10613
+ */
10614
+ const richButton = b;
10615
+ const optionLabelOptions = {
10616
+ id: buttonId,
10617
+ label: richButton.text,
10618
+ startContent: richButton.startContent,
10619
+ endContent: richButton.endContent,
10620
+ description: richButton.description,
10621
+ };
10622
+ return (hAsync("button", Object.assign({}, htmlAttrs, { role: isRadio ? 'radio' : undefined, type: "button", id: buttonId, class: Object.assign(Object.assign({}, buttonClass$2(b)), (isRadio && { 'action-sheet-selected': isActiveRadio })), onClick: () => {
10049
10623
  if (isRadio) {
10050
10624
  this.selectRadioButton(b);
10051
10625
  }
10052
10626
  this.buttonClick(b);
10053
- }, disabled: b.disabled, tabIndex: tabIndex }), hAsync("span", { class: "action-sheet-button-inner" }, b.icon && hAsync("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), b.text), mode === 'md' && hAsync("ion-ripple-effect", null)));
10627
+ }, disabled: b.disabled, tabIndex: tabIndex }), hAsync("span", { class: "action-sheet-button-inner" }, b.icon && hAsync("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), renderOptionLabel(optionLabelOptions, 'action-sheet-button-label', true)), mode === 'md' && hAsync("ion-ripple-effect", null)));
10054
10628
  });
10055
10629
  }
10056
10630
  render() {
@@ -10060,12 +10634,12 @@ class ActionSheet {
10060
10634
  const cancelButton = allButtons.find((b) => b.role === 'cancel');
10061
10635
  const buttons = allButtons.filter((b) => b.role !== 'cancel');
10062
10636
  const headerID = `action-sheet-${overlayIndex}-header`;
10063
- return (hAsync(Host, Object.assign({ key: '48b63b870f2816b4cad3c606f3d9956854cee79a', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
10637
+ return (hAsync(Host, Object.assign({ key: '7685831da9a78b73473246a2cea95cefa79a53c3', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
10064
10638
  zIndex: `${20000 + this.overlayIndex}`,
10065
- }, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: '41dd5781f139d26b3feea33ab387451aeafacd51', tappable: this.backdropDismiss }), hAsync("div", { key: 'f797c2657782e4e83adf90d2d796108e857a1fc0', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '8e74209321fc5e8712e3e293c91a6fa036ea45ab', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: 'c811860be2eed0b6c73fc2cc5a59cb94db2e8912', class: "action-sheet-container" }, hAsync("div", { key: 'd36ee14b70d73eb5cd69e0c57bc5cc31daf86ab3', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (hAsync("div", { key: '922695de191edc86451eed2552acc4f54993ea52', id: headerID, class: {
10639
+ }, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), hAsync("ion-backdrop", { key: 'c70f00e401cac99b89412d1adb867f35bc855d57', tappable: this.backdropDismiss }), hAsync("div", { key: '3332893ce3098f1435875480b1269b2821d41660', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'eb406b0a9e303d6f94c5c7aa99c6f4c089bfbd41', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, hAsync("div", { key: '92ec855379f10e1e0bfce6ff68b45d3cda0c137c', class: "action-sheet-container" }, hAsync("div", { key: 'bc88a396d75396f574961471bf7e6c4edb513353', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (hAsync("div", { key: '33329e0193818888bdcaa443ff5ea301802e0787', id: headerID, class: {
10066
10640
  'action-sheet-title': true,
10067
10641
  'action-sheet-has-sub-title': this.subHeader !== undefined,
10068
- } }, header, this.subHeader && hAsync("div", { key: 'a119d4a93668e829f7106f11cbbdd437310f3e80', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (hAsync("div", { key: '1d27f36d09bedd2e4c61fea9dd9d05f8f9271aef', class: "action-sheet-group action-sheet-group-cancel" }, hAsync("button", Object.assign({ key: 'ed13658176c54cc45808a54a0331c297430d9bc6' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass$3(cancelButton), onClick: () => this.buttonClick(cancelButton) }), hAsync("span", { key: '5208e3e3535b775a443cef6fb1decd790db69b0c', class: "action-sheet-button-inner" }, cancelButton.icon && (hAsync("ion-icon", { key: 'b7ba489e1ee50524a5b4af670eef787844a16286', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && hAsync("ion-ripple-effect", { key: 'b3f88898114855853259f0001def26b4bd6e4a98' })))))), hAsync("div", { key: '0dfd0fcdc633bf565990eaa06679608e749cf8f9', tabindex: "0", "aria-hidden": "true" })));
10642
+ } }, header, this.subHeader && hAsync("div", { key: '92ac5a9217a12b7417f7aca9c4fdb7bf6b051364', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (hAsync("div", { key: '020463b830fa48fc3ae647ea64f2aaa4d0969305', class: "action-sheet-group action-sheet-group-cancel" }, hAsync("button", Object.assign({ key: 'cefa9c70a2233f6652a81b1a2eae6e717712144d' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass$2(cancelButton), onClick: () => this.buttonClick(cancelButton) }), hAsync("span", { key: '56d7e2f8bfb3644e4476895164d334445fda9b2f', class: "action-sheet-button-inner" }, cancelButton.icon && (hAsync("ion-icon", { key: '6a4a49254ec5cd96f4e0dce9447f90d8cac81913', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && hAsync("ion-ripple-effect", { key: '7d3c6e8d70b0922ea0f75520856285ce1005c891' })))))), hAsync("div", { key: '958fc43e603c6a7f5d1e649d3326fce0f163b5d0', tabindex: "0", "aria-hidden": "true" })));
10069
10643
  }
10070
10644
  get el() { return getElement(this); }
10071
10645
  static get watchers() { return {
@@ -10114,178 +10688,59 @@ class ActionSheet {
10114
10688
  "$attrsToReflect$": []
10115
10689
  }; }
10116
10690
  }
10117
- const buttonClass$3 = (button) => {
10691
+ const buttonClass$2 = (button) => {
10118
10692
  return Object.assign({ 'action-sheet-button': true, 'ion-activatable': !button.disabled, 'ion-focusable': !button.disabled, [`action-sheet-${button.role}`]: button.role !== undefined }, getClassMap(button.cssClass));
10119
10693
  };
10120
10694
 
10121
10695
  const ENABLE_HTML_CONTENT_DEFAULT = false;
10122
10696
 
10697
+ // TODO(FW-6886, FW-6892, FW-6891): Remove this file in favor of the Modular Ionic component config. Each overlay will be able to select its own defaults for label placement and justify based on the interface and mode, so this utility will no longer be necessary.
10123
10698
  /**
10124
- * Does a simple sanitization of all elements
10125
- * in an untrusted string
10699
+ * Returns the default `labelPlacement` for a radio or checkbox option
10700
+ * rendered inside an overlay. Defaults follow each mode's established
10701
+ * option-row layout:
10702
+ * - `ios`: `"start"` for radio in `alert` and `popover`. The `modal`
10703
+ * interface flips iOS radio back to `"end"`. Checkbox is always
10704
+ * `"end"` on iOS.
10705
+ * - everything else (e.g. `md`): `"end"`.
10706
+ *
10707
+ * `interfaceType` is optional; only `"modal"` changes the result, so
10708
+ * callers that aren't a modal can omit it.
10709
+ *
10710
+ * Used by `select-popover` and `select-modal` as the fallback when an
10711
+ * option doesn't explicitly set `labelPlacement`.
10126
10712
  */
10127
- const sanitizeDOMString = (untrustedString) => {
10128
- try {
10129
- if (untrustedString instanceof IonicSafeString) {
10130
- return untrustedString.value;
10131
- }
10132
- if (!isSanitizerEnabled() || typeof untrustedString !== 'string' || untrustedString === '') {
10133
- return untrustedString;
10134
- }
10135
- /**
10136
- * onload is fired when appending to a document
10137
- * fragment in Chrome. If a string
10138
- * contains onload then we should not
10139
- * attempt to add this to the fragment.
10140
- */
10141
- if (untrustedString.includes('onload=')) {
10142
- return '';
10143
- }
10144
- /**
10145
- * Create a document fragment
10146
- * separate from the main DOM,
10147
- * create a div to do our work in
10148
- */
10149
- const documentFragment = document.createDocumentFragment();
10150
- const workingDiv = document.createElement('div');
10151
- documentFragment.appendChild(workingDiv);
10152
- workingDiv.innerHTML = untrustedString;
10153
- /**
10154
- * Remove any elements
10155
- * that are blocked
10156
- */
10157
- blockedTags.forEach((blockedTag) => {
10158
- const getElementsToRemove = documentFragment.querySelectorAll(blockedTag);
10159
- for (let elementIndex = getElementsToRemove.length - 1; elementIndex >= 0; elementIndex--) {
10160
- const element = getElementsToRemove[elementIndex];
10161
- if (element.parentNode) {
10162
- element.parentNode.removeChild(element);
10163
- }
10164
- else {
10165
- documentFragment.removeChild(element);
10166
- }
10167
- /**
10168
- * We still need to sanitize
10169
- * the children of this element
10170
- * as they are left behind
10171
- */
10172
- const childElements = getElementChildren(element);
10173
- /* eslint-disable-next-line */
10174
- for (let childIndex = 0; childIndex < childElements.length; childIndex++) {
10175
- sanitizeElement(childElements[childIndex]);
10176
- }
10177
- }
10178
- });
10179
- /**
10180
- * Go through remaining elements and remove
10181
- * non-allowed attribs
10182
- */
10183
- // IE does not support .children on document fragments, only .childNodes
10184
- const dfChildren = getElementChildren(documentFragment);
10185
- /* eslint-disable-next-line */
10186
- for (let childIndex = 0; childIndex < dfChildren.length; childIndex++) {
10187
- sanitizeElement(dfChildren[childIndex]);
10188
- }
10189
- // Append document fragment to div
10190
- const fragmentDiv = document.createElement('div');
10191
- fragmentDiv.appendChild(documentFragment);
10192
- // First child is always the div we did our work in
10193
- const getInnerDiv = fragmentDiv.querySelector('div');
10194
- return getInnerDiv !== null ? getInnerDiv.innerHTML : fragmentDiv.innerHTML;
10195
- }
10196
- catch (err) {
10197
- printIonError('sanitizeDOMString', err);
10198
- return '';
10199
- }
10200
- };
10201
- /**
10202
- * Clean up current element based on allowed attributes
10203
- * and then recursively dig down into any child elements to
10204
- * clean those up as well
10205
- */
10206
- // TODO(FW-2832): type (using Element triggers other type errors as well)
10207
- const sanitizeElement = (element) => {
10208
- // IE uses childNodes, so ignore nodes that are not elements
10209
- if (element.nodeType && element.nodeType !== 1) {
10210
- return;
10211
- }
10212
- /**
10213
- * If attributes is not a NamedNodeMap
10214
- * then we should remove the element entirely.
10215
- * This helps avoid DOM Clobbering attacks where
10216
- * attributes is overridden.
10217
- */
10218
- if (typeof NamedNodeMap !== 'undefined' && !(element.attributes instanceof NamedNodeMap)) {
10219
- element.remove();
10220
- return;
10221
- }
10222
- for (let i = element.attributes.length - 1; i >= 0; i--) {
10223
- const attribute = element.attributes.item(i);
10224
- const attributeName = attribute.name;
10225
- // remove non-allowed attribs
10226
- if (!allowedAttributes.includes(attributeName.toLowerCase())) {
10227
- element.removeAttribute(attributeName);
10228
- continue;
10229
- }
10230
- // clean up any allowed attribs
10231
- // that attempt to do any JS funny-business
10232
- const attributeValue = attribute.value;
10233
- /**
10234
- * We also need to check the property value
10235
- * as javascript: can allow special characters
10236
- * such as &Tab; and still be valid (i.e. java&Tab;script)
10237
- */
10238
- const propertyValue = element[attributeName];
10239
- /* eslint-disable */
10240
- if ((attributeValue != null && attributeValue.toLowerCase().includes('javascript:')) ||
10241
- (propertyValue != null && propertyValue.toLowerCase().includes('javascript:'))) {
10242
- element.removeAttribute(attributeName);
10243
- }
10244
- /* eslint-enable */
10245
- }
10246
- /**
10247
- * Sanitize any nested children
10248
- */
10249
- const childElements = getElementChildren(element);
10250
- /* eslint-disable-next-line */
10251
- for (let i = 0; i < childElements.length; i++) {
10252
- sanitizeElement(childElements[i]);
10713
+ const getOverlayLabelPlacement = (mode, control, interfaceType) => {
10714
+ if (mode === 'ios' && control === 'radio' && interfaceType !== 'modal') {
10715
+ return 'start';
10253
10716
  }
10717
+ return 'end';
10254
10718
  };
10255
10719
  /**
10256
- * IE doesn't always support .children
10257
- * so we revert to .childNodes instead
10720
+ * Returns the default `justify` for a radio or checkbox option rendered
10721
+ * inside an overlay. Defaults follow each mode's option-row layout:
10722
+ * - `ios`: `"space-between"` for radio in `alert` and `popover`. The
10723
+ * `modal` interface falls back to `"start"`. Checkbox is always `"start"`
10724
+ * on iOS.
10725
+ * - everything else (e.g. `md`): `"start"`.
10726
+ *
10727
+ * `interfaceType` is optional; only `"modal"` changes the result, so
10728
+ * callers that aren't a modal can omit it.
10729
+ *
10730
+ * Used by `select-popover` and `select-modal` as the fallback when an
10731
+ * option doesn't explicitly set `justify`.
10258
10732
  */
10259
- // TODO(FW-2832): type
10260
- const getElementChildren = (el) => {
10261
- return el.children != null ? el.children : el.childNodes;
10262
- };
10263
- const isSanitizerEnabled = () => {
10264
- var _a;
10265
- const win = window;
10266
- const config = (_a = win === null || win === void 0 ? void 0 : win.Ionic) === null || _a === void 0 ? void 0 : _a.config;
10267
- if (config) {
10268
- if (config.get) {
10269
- return config.get('sanitizerEnabled', true);
10270
- }
10271
- else {
10272
- return config.sanitizerEnabled === true || config.sanitizerEnabled === undefined;
10273
- }
10733
+ const getOverlayLabelJustify = (mode, control, interfaceType) => {
10734
+ if (mode === 'ios' && control === 'radio' && interfaceType !== 'modal') {
10735
+ return 'space-between';
10274
10736
  }
10275
- return true;
10737
+ return 'start';
10276
10738
  };
10277
- const allowedAttributes = ['class', 'id', 'href', 'src', 'name', 'slot'];
10278
- const blockedTags = ['script', 'style', 'iframe', 'meta', 'link', 'object', 'embed'];
10279
- class IonicSafeString {
10280
- constructor(value) {
10281
- this.value = value;
10282
- }
10283
- }
10284
10739
 
10285
10740
  /**
10286
10741
  * iOS Alert Enter Animation
10287
10742
  */
10288
- const iosEnterAnimation$5 = (baseEl) => {
10743
+ const iosEnterAnimation$4 = (baseEl) => {
10289
10744
  const baseAnimation = createAnimation();
10290
10745
  const backdropAnimation = createAnimation();
10291
10746
  const wrapperAnimation = createAnimation();
@@ -10310,7 +10765,7 @@ const iosEnterAnimation$5 = (baseEl) => {
10310
10765
  /**
10311
10766
  * iOS Alert Leave Animation
10312
10767
  */
10313
- const iosLeaveAnimation$5 = (baseEl) => {
10768
+ const iosLeaveAnimation$4 = (baseEl) => {
10314
10769
  const baseAnimation = createAnimation();
10315
10770
  const backdropAnimation = createAnimation();
10316
10771
  const wrapperAnimation = createAnimation();
@@ -10367,9 +10822,9 @@ const mdLeaveAnimation$4 = (baseEl) => {
10367
10822
  .addAnimation([backdropAnimation, wrapperAnimation]);
10368
10823
  };
10369
10824
 
10370
- const alertIosCss = () => `.sc-ion-alert-ios-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-ios-h{display:none}.alert-top.sc-ion-alert-ios-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-ios,.alert-radio-label.sc-ion-alert-ios{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-message.sc-ion-alert-ios::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-ios{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-ios{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-ios,.alert-tappable.ion-focused.sc-ion-alert-ios{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.alert-input-disabled.sc-ion-alert-ios,.alert-checkbox-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios,.alert-radio-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-ios,.alert-checkbox.sc-ion-alert-ios,.alert-input.sc-ion-alert-ios,.alert-radio.sc-ion-alert-ios{outline:none}.alert-radio-icon.sc-ion-alert-ios,.alert-checkbox-icon.sc-ion-alert-ios,.alert-checkbox-inner.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-ios{min-height:37px;resize:none}.sc-ion-alert-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--max-width:clamp(270px, 16.875rem, 324px);--backdrop-opacity:var(--ion-backdrop-opacity, 0.3);font-size:max(14px, 0.875rem)}.alert-wrapper.sc-ion-alert-ios{border-radius:13px;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.alert-button.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{pointer-events:none}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.alert-translucent.sc-ion-alert-ios-h .alert-wrapper.sc-ion-alert-ios{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.9);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.alert-head.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:7px;text-align:center}.alert-title.sc-ion-alert-ios{margin-top:8px;color:var(--ion-text-color, #000);font-size:max(17px, 1.0625rem);font-weight:600}.alert-sub-title.sc-ion-alert-ios{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666));font-size:max(14px, 0.875rem)}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:21px;color:var(--ion-text-color, #000);font-size:max(13px, 0.8125rem);text-align:center}.alert-message.sc-ion-alert-ios{max-height:240px}.alert-message.sc-ion-alert-ios:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:12px}.alert-input.sc-ion-alert-ios{border-radius:7px;margin-top:10px;-webkit-padding-start:7px;padding-inline-start:7px;-webkit-padding-end:7px;padding-inline-end:7px;padding-top:7px;padding-bottom:7px;border:0.55px solid var(--ion-color-step-250, var(--ion-background-color-step-250, #bfbfbf));background-color:var(--ion-background-color, #fff);-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:1rem}.alert-input.sc-ion-alert-ios::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-clear{display:none}.alert-input.sc-ion-alert-ios::-webkit-date-and-time-value{height:18px}.alert-radio-group.sc-ion-alert-ios,.alert-checkbox-group.sc-ion-alert-ios{-ms-scroll-chaining:none;overscroll-behavior:contain;max-height:240px;border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);overflow-y:auto;-webkit-overflow-scrolling:touch}.alert-tappable.sc-ion-alert-ios{min-height:44px}.alert-radio-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;-ms-flex-order:0;order:0;color:var(--ion-text-color, #000)}[aria-checked=true].sc-ion-alert-ios .alert-radio-label.sc-ion-alert-ios{color:var(--ion-color-primary, #0054e9)}.alert-radio-icon.sc-ion-alert-ios{position:relative;-ms-flex-order:1;order:1;min-width:30px}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{top:-7px;position:absolute;width:6px;height:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{inset-inline-start:7px}.alert-checkbox-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-text-color, #000)}.alert-checkbox-icon.sc-ion-alert-ios{border-radius:50%;-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:6px;margin-inline-end:6px;margin-top:10px;margin-bottom:10px;position:relative;width:min(1.375rem, 55.836px);height:min(1.375rem, 55.836px);border-width:0.125rem;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));background-color:var(--ion-item-background, var(--ion-background-color, #fff));contain:strict}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{top:calc(min(1.375rem, 55.836px) / 8);position:absolute;width:calc(min(1.375rem, 55.836px) / 6 + 1px);height:calc(min(1.375rem, 55.836px) * 0.5);-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:0.125rem;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-background-color, #fff)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{inset-inline-start:calc(min(1.375rem, 55.836px) / 3)}.alert-button-group.sc-ion-alert-ios{-webkit-margin-end:-0.55px;margin-inline-end:-0.55px;-ms-flex-wrap:wrap;flex-wrap:wrap}.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios{border-right:none}[dir=rtl].sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}[dir=rtl].sc-ion-alert-ios .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}@supports selector(:dir(rtl)){.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:none}}.alert-button.sc-ion-alert-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;border-radius:0;-ms-flex:1 1 auto;flex:1 1 auto;min-width:50%;height:max(44px, 2.75rem);border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);background-color:transparent;color:var(--ion-color-primary, #0054e9);font-size:max(17px, 1.0625rem);overflow:hidden}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child{border-right:0}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:first-child{border-right:0}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:first-child:dir(rtl){border-right:0}}.alert-button.sc-ion-alert-ios:last-child{border-right:0;font-weight:bold}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}}.alert-button.ion-activated.sc-ion-alert-ios{background-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.1)}.alert-button-role-destructive.sc-ion-alert-ios,.alert-button-role-destructive.ion-activated.sc-ion-alert-ios,.alert-button-role-destructive.ion-focused.sc-ion-alert-ios{color:var(--ion-color-danger, #c5000f)}`;
10825
+ const alertIosCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-alert-ios,.alert-radio-label-has-rich-content.sc-ion-alert-ios,.alert-checkbox-label-has-rich-content.sc-ion-alert-ios,.select-option-label-has-rich-content.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-alert-ios,.alert-radio-label-has-rich-content.sc-ion-alert-ios,.alert-checkbox-label-has-rich-content.sc-ion-alert-ios,.select-option-content.sc-ion-alert-ios{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-alert-ios,.alert-checkbox-label-text.sc-ion-alert-ios,.alert-radio-label-text.sc-ion-alert-ios,.select-option-label-text.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-alert-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-alert-ios:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-alert-ios::part(label),ion-radio.select-option-has-rich-content.sc-ion-alert-ios [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-alert-ios::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-alert-ios [part~="label"],.select-option-content.sc-ion-alert-ios{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-alert-ios>ion-avatar.sc-ion-alert-ios,.select-option-start.sc-ion-alert-ios>ion-img.sc-ion-alert-ios,.select-option-start.sc-ion-alert-ios>ion-thumbnail.sc-ion-alert-ios,.select-option-start.sc-ion-alert-ios>img.sc-ion-alert-ios,.select-option-start.sc-ion-alert-ios>svg.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>ion-avatar.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>ion-img.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>ion-thumbnail.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>img.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>svg.sc-ion-alert-ios{width:44px;height:44px}.select-option-start.sc-ion-alert-ios>ion-icon.sc-ion-alert-ios,.select-option-end.sc-ion-alert-ios>ion-icon.sc-ion-alert-ios{width:28px;height:28px}.action-sheet-button-label-text.sc-ion-alert-ios{-ms-flex-pack:center;justify-content:center}.select-option-has-rich-content.sc-ion-alert-ios{-webkit-padding-end:16px;padding-inline-end:16px}.sc-ion-alert-ios-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-ios-h{display:none}.alert-top.sc-ion-alert-ios-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-ios,.alert-radio-label.sc-ion-alert-ios{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-message.sc-ion-alert-ios::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-ios{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-ios{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-ios,.alert-tappable.ion-focused.sc-ion-alert-ios{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.radio-label-placement-start.sc-ion-alert-ios,.checkbox-label-placement-start.sc-ion-alert-ios{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.radio-label-placement-end.sc-ion-alert-ios,.checkbox-label-placement-end.sc-ion-alert-ios{-ms-flex-direction:row;flex-direction:row}.radio-justify-start.sc-ion-alert-ios,.checkbox-justify-start.sc-ion-alert-ios{-ms-flex-pack:start;justify-content:start}.radio-justify-end.sc-ion-alert-ios,.checkbox-justify-end.sc-ion-alert-ios{-ms-flex-pack:end;justify-content:end}.radio-justify-space-between.sc-ion-alert-ios,.checkbox-justify-space-between.sc-ion-alert-ios{-ms-flex-pack:justify;justify-content:space-between}.alert-input-disabled.sc-ion-alert-ios,.alert-checkbox-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios,.alert-radio-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-ios,.alert-checkbox.sc-ion-alert-ios,.alert-input.sc-ion-alert-ios,.alert-radio.sc-ion-alert-ios{outline:none}.alert-radio-icon.sc-ion-alert-ios,.alert-checkbox-icon.sc-ion-alert-ios,.alert-checkbox-inner.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-ios{min-height:37px;resize:none}.sc-ion-alert-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--max-width:clamp(270px, 16.875rem, 324px);--backdrop-opacity:var(--ion-backdrop-opacity, 0.3);font-size:max(14px, 0.875rem)}.alert-wrapper.sc-ion-alert-ios{border-radius:13px;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.alert-button.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{pointer-events:none}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.alert-translucent.sc-ion-alert-ios-h .alert-wrapper.sc-ion-alert-ios{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.9);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.alert-head.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:7px;text-align:center}.alert-title.sc-ion-alert-ios{margin-top:8px;color:var(--ion-text-color, #000);font-size:max(17px, 1.0625rem);font-weight:600}.alert-sub-title.sc-ion-alert-ios{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666));font-size:max(14px, 0.875rem)}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:21px;color:var(--ion-text-color, #000);font-size:max(13px, 0.8125rem);text-align:center}.alert-message.sc-ion-alert-ios{max-height:240px}.alert-message.sc-ion-alert-ios:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:12px}.alert-input.sc-ion-alert-ios{border-radius:7px;margin-top:10px;-webkit-padding-start:7px;padding-inline-start:7px;-webkit-padding-end:7px;padding-inline-end:7px;padding-top:7px;padding-bottom:7px;border:0.55px solid var(--ion-color-step-250, var(--ion-background-color-step-250, #bfbfbf));background-color:var(--ion-background-color, #fff);-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:1rem}.alert-input.sc-ion-alert-ios::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-clear{display:none}.alert-input.sc-ion-alert-ios::-webkit-date-and-time-value{height:18px}.alert-radio-group.sc-ion-alert-ios,.alert-checkbox-group.sc-ion-alert-ios{-ms-scroll-chaining:none;overscroll-behavior:contain;max-height:240px;border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);overflow-y:auto;-webkit-overflow-scrolling:touch}.alert-tappable.sc-ion-alert-ios{min-height:44px}.alert-radio-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;color:var(--ion-text-color, #000)}[aria-checked=true].sc-ion-alert-ios .alert-radio-label.sc-ion-alert-ios{color:var(--ion-color-primary, #0054e9)}.alert-radio-icon.sc-ion-alert-ios{position:relative;-ms-flex-negative:0;flex-shrink:0;min-width:30px}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{top:-7px;position:absolute;width:6px;height:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .radio-label-placement-end.sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{inset-inline-end:7px}[aria-checked=true].sc-ion-alert-ios .radio-label-placement-start.sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{inset-inline-start:7px}.alert-checkbox-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;color:var(--ion-text-color, #000)}.alert-checkbox-icon.sc-ion-alert-ios{border-radius:50%;margin-top:10px;margin-bottom:10px;position:relative;-ms-flex-negative:0;flex-shrink:0;width:min(1.375rem, 55.836px);height:min(1.375rem, 55.836px);border-width:0.125rem;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));background-color:var(--ion-item-background, var(--ion-background-color, #fff));contain:strict}.checkbox-label-placement-end.sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:6px;margin-inline-end:6px}.checkbox-label-placement-start.sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{-webkit-margin-start:6px;margin-inline-start:6px;-webkit-margin-end:16px;margin-inline-end:16px}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{top:calc(min(1.375rem, 55.836px) / 8);position:absolute;width:calc(min(1.375rem, 55.836px) / 6 + 1px);height:calc(min(1.375rem, 55.836px) * 0.5);-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:0.125rem;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-background-color, #fff)}[aria-checked=true].sc-ion-alert-ios .checkbox-label-placement-end.sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{inset-inline-start:calc(min(1.375rem, 55.836px) / 3)}[aria-checked=true].sc-ion-alert-ios .checkbox-label-placement-start.sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{inset-inline-end:calc(min(1.375rem, 55.836px) / 3)}.alert-button-group.sc-ion-alert-ios{-webkit-margin-end:-0.55px;margin-inline-end:-0.55px;-ms-flex-wrap:wrap;flex-wrap:wrap}.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios{border-right:none}[dir=rtl].sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}[dir=rtl].sc-ion-alert-ios .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}@supports selector(:dir(rtl)){.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:none}}.alert-button.sc-ion-alert-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;border-radius:0;-ms-flex:1 1 auto;flex:1 1 auto;min-width:50%;height:max(44px, 2.75rem);border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);background-color:transparent;color:var(--ion-color-primary, #0054e9);font-size:max(17px, 1.0625rem);overflow:hidden}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child{border-right:0}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:first-child{border-right:0}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:first-child:dir(rtl){border-right:0}}.alert-button.sc-ion-alert-ios:last-child{border-right:0;font-weight:bold}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}}.alert-button.ion-activated.sc-ion-alert-ios{background-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.1)}.alert-button-role-destructive.sc-ion-alert-ios,.alert-button-role-destructive.ion-activated.sc-ion-alert-ios,.alert-button-role-destructive.ion-focused.sc-ion-alert-ios{color:var(--ion-color-danger, #c5000f)}`;
10371
10826
 
10372
- const alertMdCss = () => `.sc-ion-alert-md-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-md-h{display:none}.alert-top.sc-ion-alert-md-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-md,.alert-radio-label.sc-ion-alert-md{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-md::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-md::-webkit-scrollbar,.alert-message.sc-ion-alert-md::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-md{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-md{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-md,.alert-tappable.ion-focused.sc-ion-alert-md{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.alert-input-disabled.sc-ion-alert-md,.alert-checkbox-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md,.alert-radio-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-md,.alert-checkbox.sc-ion-alert-md,.alert-input.sc-ion-alert-md,.alert-radio.sc-ion-alert-md{outline:none}.alert-radio-icon.sc-ion-alert-md,.alert-checkbox-icon.sc-ion-alert-md,.alert-checkbox-inner.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-md{min-height:37px;resize:none}.sc-ion-alert-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--max-width:280px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);font-size:0.875rem}.alert-wrapper.sc-ion-alert-md{border-radius:4px;-webkit-box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12)}.alert-head.sc-ion-alert-md{-webkit-padding-start:23px;padding-inline-start:23px;-webkit-padding-end:23px;padding-inline-end:23px;padding-top:20px;padding-bottom:15px;text-align:start}.alert-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1.25rem;font-weight:500}.alert-sub-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1rem}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:24px;padding-inline-end:24px;padding-top:20px;padding-bottom:20px;color:var(--ion-color-step-550, var(--ion-text-color-step-450, #737373))}.alert-message.sc-ion-alert-md{font-size:1rem}@media screen and (max-width: 767px){.alert-message.sc-ion-alert-md{max-height:266px}}.alert-message.sc-ion-alert-md:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-head.sc-ion-alert-md+.alert-message.sc-ion-alert-md{padding-top:0}.alert-input.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:5px;border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));color:var(--ion-text-color, #000)}.alert-input.sc-ion-alert-md::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-clear{display:none}.alert-input.sc-ion-alert-md:focus{margin-bottom:4px;border-bottom:2px solid var(--ion-color-primary, #0054e9)}.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{position:relative;border-top:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));overflow:auto}@media screen and (max-width: 767px){.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{max-height:266px}}.alert-tappable.sc-ion-alert-md{position:relative;min-height:48px}.alert-radio-label.sc-ion-alert-md{-webkit-padding-start:52px;padding-inline-start:52px;-webkit-padding-end:26px;padding-inline-end:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.alert-radio-icon.sc-ion-alert-md{top:0;border-radius:50%;display:block;position:relative;width:20px;height:20px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373))}.alert-radio-icon.sc-ion-alert-md{inset-inline-start:26px}.alert-radio-inner.sc-ion-alert-md{top:3px;border-radius:50%;position:absolute;width:10px;height:10px;-webkit-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);-webkit-transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--ion-color-primary, #0054e9)}.alert-radio-inner.sc-ion-alert-md{inset-inline-start:3px}[aria-checked=true].sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626))}[aria-checked=true].sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-radio-inner.sc-ion-alert-md{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}.alert-checkbox-label.sc-ion-alert-md{-webkit-padding-start:53px;padding-inline-start:53px;-webkit-padding-end:26px;padding-inline-end:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;width:calc(100% - 53px);color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.alert-checkbox-icon.sc-ion-alert-md{top:0;border-radius:2px;position:relative;width:16px;height:16px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373));contain:strict}.alert-checkbox-icon.sc-ion-alert-md{inset-inline-start:26px}[aria-checked=true].sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{top:0;position:absolute;width:6px;height:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary-contrast, #fff)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{inset-inline-start:3px}.alert-button-group.sc-ion-alert-md{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse;-ms-flex-pack:end;justify-content:flex-end}.alert-button.sc-ion-alert-md{border-radius:2px;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:0;margin-bottom:0;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;color:var(--ion-color-primary, #0054e9);font-weight:500;text-align:end;text-transform:uppercase;overflow:hidden}.alert-button-inner.sc-ion-alert-md{-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width: 768px){.sc-ion-alert-md-h{--max-width:min(100vw - 96px, 560px);--max-height:min(100vh - 96px, 560px)}}`;
10827
+ const alertMdCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-alert-md,.alert-radio-label-has-rich-content.sc-ion-alert-md,.alert-checkbox-label-has-rich-content.sc-ion-alert-md,.select-option-label-has-rich-content.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-alert-md,.alert-radio-label-has-rich-content.sc-ion-alert-md,.alert-checkbox-label-has-rich-content.sc-ion-alert-md,.select-option-content.sc-ion-alert-md{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-alert-md,.alert-checkbox-label-text.sc-ion-alert-md,.alert-radio-label-text.sc-ion-alert-md,.select-option-label-text.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-alert-md,.select-option-end.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-alert-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-alert-md:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-alert-md::part(label),ion-radio.select-option-has-rich-content.sc-ion-alert-md [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-alert-md::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-alert-md [part~="label"],.select-option-content.sc-ion-alert-md{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-alert-md>ion-avatar.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>ion-avatar.sc-ion-alert-md{width:40px;height:40px}.select-option-start.sc-ion-alert-md>ion-icon.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>ion-icon.sc-ion-alert-md{width:24px;height:24px}.select-option-start.sc-ion-alert-md>ion-img.sc-ion-alert-md,.select-option-start.sc-ion-alert-md>img.sc-ion-alert-md,.select-option-start.sc-ion-alert-md>svg.sc-ion-alert-md,.select-option-start.sc-ion-alert-md>ion-thumbnail.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>ion-img.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>img.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>svg.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>ion-thumbnail.sc-ion-alert-md{width:56px;height:56px}.select-option-start.sc-ion-alert-md>video.sc-ion-alert-md,.select-option-end.sc-ion-alert-md>video.sc-ion-alert-md{width:114px;height:56px}.sc-ion-alert-md-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-md-h{display:none}.alert-top.sc-ion-alert-md-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-md,.alert-radio-label.sc-ion-alert-md{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-md::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-md::-webkit-scrollbar,.alert-message.sc-ion-alert-md::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-md{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-md{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-md,.alert-tappable.ion-focused.sc-ion-alert-md{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.radio-label-placement-start.sc-ion-alert-md,.checkbox-label-placement-start.sc-ion-alert-md{-ms-flex-direction:row-reverse;flex-direction:row-reverse}.radio-label-placement-end.sc-ion-alert-md,.checkbox-label-placement-end.sc-ion-alert-md{-ms-flex-direction:row;flex-direction:row}.radio-justify-start.sc-ion-alert-md,.checkbox-justify-start.sc-ion-alert-md{-ms-flex-pack:start;justify-content:start}.radio-justify-end.sc-ion-alert-md,.checkbox-justify-end.sc-ion-alert-md{-ms-flex-pack:end;justify-content:end}.radio-justify-space-between.sc-ion-alert-md,.checkbox-justify-space-between.sc-ion-alert-md{-ms-flex-pack:justify;justify-content:space-between}.alert-input-disabled.sc-ion-alert-md,.alert-checkbox-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md,.alert-radio-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-md,.alert-checkbox.sc-ion-alert-md,.alert-input.sc-ion-alert-md,.alert-radio.sc-ion-alert-md{outline:none}.alert-radio-icon.sc-ion-alert-md,.alert-checkbox-icon.sc-ion-alert-md,.alert-checkbox-inner.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-md{min-height:37px;resize:none}.sc-ion-alert-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--max-width:280px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);font-size:0.875rem}.alert-wrapper.sc-ion-alert-md{border-radius:4px;-webkit-box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12)}.alert-head.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:24px;padding-inline-end:24px;padding-top:20px;padding-bottom:15px;text-align:start}.alert-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1.25rem;font-weight:500}.alert-sub-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1rem}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:24px;padding-inline-end:24px;padding-top:20px;padding-bottom:20px;color:var(--ion-color-step-550, var(--ion-text-color-step-450, #737373))}.alert-message.sc-ion-alert-md{font-size:1rem}@media screen and (max-width: 767px){.alert-message.sc-ion-alert-md{max-height:266px}}.alert-message.sc-ion-alert-md:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-head.sc-ion-alert-md+.alert-message.sc-ion-alert-md{padding-top:0}.alert-input.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:5px;border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));color:var(--ion-text-color, #000)}.alert-input.sc-ion-alert-md::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-clear{display:none}.alert-input.sc-ion-alert-md:focus{margin-bottom:4px;border-bottom:2px solid var(--ion-color-primary, #0054e9)}.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{position:relative;border-top:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));overflow:auto}@media screen and (max-width: 767px){.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{max-height:266px}}.alert-tappable.sc-ion-alert-md{position:relative;min-height:48px}.alert-radio-label.sc-ion-alert-md{padding-top:13px;padding-bottom:13px;max-width:calc(100% - 20px);color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.radio-label-placement-end.sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{-webkit-padding-start:56px;padding-inline-start:56px;-webkit-padding-end:24px;padding-inline-end:24px}.radio-label-placement-start.sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:56px;padding-inline-end:56px}.alert-radio-icon.sc-ion-alert-md{top:0;border-radius:50%;display:block;position:relative;-ms-flex-negative:0;flex-shrink:0;width:20px;height:20px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373))}.radio-label-placement-end.sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{inset-inline-start:24px}.radio-label-placement-start.sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{inset-inline-end:24px}.alert-radio-inner.sc-ion-alert-md{top:3px;border-radius:50%;position:absolute;width:10px;height:10px;-webkit-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);-webkit-transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--ion-color-primary, #0054e9)}.alert-radio-inner.sc-ion-alert-md{inset-inline-start:3px}[aria-checked=true].sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626))}[aria-checked=true].sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-radio-inner.sc-ion-alert-md{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}.alert-checkbox-label.sc-ion-alert-md{padding-top:13px;padding-bottom:13px;max-width:calc(100% - 16px);color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.checkbox-label-placement-end.sc-ion-alert-md .alert-checkbox-label.sc-ion-alert-md{-webkit-padding-start:56px;padding-inline-start:56px;-webkit-padding-end:24px;padding-inline-end:24px}.checkbox-label-placement-start.sc-ion-alert-md .alert-checkbox-label.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:56px;padding-inline-end:56px}.alert-checkbox-icon.sc-ion-alert-md{top:0;border-radius:2px;position:relative;-ms-flex-negative:0;flex-shrink:0;width:16px;height:16px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373));contain:strict}.checkbox-label-placement-end.sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{inset-inline-start:24px}.checkbox-label-placement-start.sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{inset-inline-end:24px}[aria-checked=true].sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{top:0;position:absolute;width:6px;height:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary-contrast, #fff)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{inset-inline-start:3px}.alert-button-group.sc-ion-alert-md{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse;-ms-flex-pack:end;justify-content:flex-end}.alert-button.sc-ion-alert-md{border-radius:2px;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:0;margin-bottom:0;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;color:var(--ion-color-primary, #0054e9);font-weight:500;text-align:end;text-transform:uppercase;overflow:hidden}.alert-button-group.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md{-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width: 768px){.sc-ion-alert-md-h{--max-width:min(100vw - 96px, 560px);--max-height:min(100vh - 96px, 560px)}}`;
10373
10828
 
10374
10829
  // TODO(FW-2832): types
10375
10830
  /**
@@ -10543,22 +10998,7 @@ class Alert {
10543
10998
  this.inputType = inputTypes.values().next().value;
10544
10999
  this.processedInputs = inputs.map((i, index) => {
10545
11000
  var _a;
10546
- return ({
10547
- type: i.type || 'text',
10548
- name: i.name || `${index}`,
10549
- placeholder: i.placeholder || '',
10550
- value: i.value,
10551
- label: i.label,
10552
- checked: !!i.checked,
10553
- disabled: !!i.disabled,
10554
- id: i.id || `alert-input-${this.overlayIndex}-${index}`,
10555
- handler: i.handler,
10556
- min: i.min,
10557
- max: i.max,
10558
- cssClass: (_a = i.cssClass) !== null && _a !== void 0 ? _a : '',
10559
- attributes: i.attributes || {},
10560
- tabindex: i.type === 'radio' && i !== focusable ? -1 : 0,
10561
- });
11001
+ return Object.assign(Object.assign({}, i), { type: i.type || 'text', name: i.name || `${index}`, placeholder: i.placeholder || '', checked: !!i.checked, disabled: !!i.disabled, id: i.id || `alert-input-${this.overlayIndex}-${index}`, cssClass: (_a = i.cssClass) !== null && _a !== void 0 ? _a : '', attributes: i.attributes || {}, tabindex: i.type === 'radio' && i !== focusable ? -1 : 0 });
10562
11002
  });
10563
11003
  }
10564
11004
  connectedCallback() {
@@ -10586,6 +11026,10 @@ class Alert {
10586
11026
  this.gesture.destroy();
10587
11027
  this.gesture = undefined;
10588
11028
  }
11029
+ // Clean up aria-hidden if removed without dismiss() being called
11030
+ if (this.presented) {
11031
+ cleanupRootFocusTrapAccessibility();
11032
+ }
10589
11033
  (_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
10590
11034
  this.buttonGroupResizeObserver = undefined;
10591
11035
  }
@@ -10625,7 +11069,7 @@ class Alert {
10625
11069
  async present() {
10626
11070
  const unlock = await this.lockController.lock();
10627
11071
  await this.delegateController.attachViewToDom();
10628
- await present(this, 'alertEnter', iosEnterAnimation$5, mdEnterAnimation$4).then(() => {
11072
+ await present(this, 'alertEnter', iosEnterAnimation$4, mdEnterAnimation$4).then(() => {
10629
11073
  var _a, _b;
10630
11074
  /**
10631
11075
  * Check if alert has only one button and no inputs.
@@ -10656,7 +11100,7 @@ class Alert {
10656
11100
  */
10657
11101
  async dismiss(data, role) {
10658
11102
  const unlock = await this.lockController.lock();
10659
- const dismissed = await dismiss(this, data, role, 'alertLeave', iosLeaveAnimation$5, mdLeaveAnimation$4);
11103
+ const dismissed = await dismiss(this, data, role, 'alertLeave', iosLeaveAnimation$4, mdLeaveAnimation$4);
10660
11104
  if (dismissed) {
10661
11105
  this.delegateController.removeViewFromDom();
10662
11106
  }
@@ -10754,14 +11198,61 @@ class Alert {
10754
11198
  if (inputs.length === 0) {
10755
11199
  return null;
10756
11200
  }
10757
- return (hAsync("div", { class: "alert-checkbox-group" }, inputs.map((i) => (hAsync("button", { type: "button", onClick: () => this.cbClick(i), "aria-checked": `${i.checked}`, id: i.id, disabled: i.disabled, tabIndex: i.tabindex, role: "checkbox", class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-tappable': true, 'alert-checkbox': true, 'alert-checkbox-button': true, 'ion-focusable': true, 'alert-checkbox-button-disabled': i.disabled || false }) }, hAsync("div", { class: "alert-button-inner" }, hAsync("div", { class: "alert-checkbox-icon" }, hAsync("div", { class: "alert-checkbox-inner" })), hAsync("div", { class: "alert-checkbox-label" }, i.label)), mode === 'md' && hAsync("ion-ripple-effect", null))))));
11201
+ return (hAsync("div", { class: "alert-checkbox-group" }, inputs.map((i) => {
11202
+ var _a, _b;
11203
+ /**
11204
+ * Cast to `SelectAlertInput` to access rich content
11205
+ * fields (`startContent`, `endContent`, `description`)
11206
+ * that are passed through from `ion-select` but not
11207
+ * part of the public `AlertInput` interface.
11208
+ */
11209
+ const richInput = i;
11210
+ const optionLabelOptions = {
11211
+ id: richInput.id,
11212
+ label: richInput.label,
11213
+ startContent: richInput.startContent,
11214
+ endContent: richInput.endContent,
11215
+ description: richInput.description,
11216
+ };
11217
+ const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox');
11218
+ const defaultJustify = getOverlayLabelJustify(mode, 'checkbox');
11219
+ return (hAsync("button", { type: "button", onClick: () => this.cbClick(i), "aria-checked": `${i.checked}`, id: i.id, disabled: i.disabled, tabIndex: i.tabindex, role: "checkbox", class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-tappable': true, 'alert-checkbox': true, 'alert-checkbox-button': true, 'ion-focusable': !i.disabled, 'ion-activatable': !i.disabled, 'alert-checkbox-button-disabled': i.disabled || false }) }, hAsync("div", { class: {
11220
+ 'alert-button-inner': true,
11221
+ [`checkbox-label-placement-${(_a = richInput.labelPlacement) !== null && _a !== void 0 ? _a : defaultLabelPlacement}`]: true,
11222
+ [`checkbox-justify-${(_b = richInput.justify) !== null && _b !== void 0 ? _b : defaultJustify}`]: true,
11223
+ } }, hAsync("div", { class: "alert-checkbox-icon" }, hAsync("div", { class: "alert-checkbox-inner" })), renderOptionLabel(optionLabelOptions, 'alert-checkbox-label')), mode === 'md' && hAsync("ion-ripple-effect", null)));
11224
+ })));
10758
11225
  }
10759
11226
  renderRadio() {
10760
11227
  const inputs = this.processedInputs;
11228
+ const mode = getIonMode$1(this);
10761
11229
  if (inputs.length === 0) {
10762
11230
  return null;
10763
11231
  }
10764
- return (hAsync("div", { class: "alert-radio-group", role: "radiogroup", "aria-activedescendant": this.activeId }, inputs.map((i) => (hAsync("button", { type: "button", onClick: () => this.rbClick(i), "aria-checked": `${i.checked}`, disabled: i.disabled, id: i.id, tabIndex: i.tabindex, class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-radio-button': true, 'alert-tappable': true, 'alert-radio': true, 'ion-focusable': true, 'alert-radio-button-disabled': i.disabled || false }), role: "radio" }, hAsync("div", { class: "alert-button-inner" }, hAsync("div", { class: "alert-radio-icon" }, hAsync("div", { class: "alert-radio-inner" })), hAsync("div", { class: "alert-radio-label" }, i.label)))))));
11232
+ return (hAsync("div", { class: "alert-radio-group", role: "radiogroup", "aria-activedescendant": this.activeId }, inputs.map((i) => {
11233
+ var _a, _b;
11234
+ /**
11235
+ * Cast to `SelectAlertInput` to access rich content
11236
+ * fields (`startContent`, `endContent`, `description`)
11237
+ * that are passed through from `ion-select` but not
11238
+ * part of the public `AlertInput` interface.
11239
+ */
11240
+ const richInput = i;
11241
+ const optionLabelOptions = {
11242
+ id: richInput.id,
11243
+ label: richInput.label,
11244
+ startContent: richInput.startContent,
11245
+ endContent: richInput.endContent,
11246
+ description: richInput.description,
11247
+ };
11248
+ const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'radio');
11249
+ const defaultJustify = getOverlayLabelJustify(mode, 'radio');
11250
+ return (hAsync("button", { type: "button", onClick: () => this.rbClick(i), "aria-checked": `${i.checked}`, disabled: i.disabled, id: i.id, tabIndex: i.tabindex, class: Object.assign(Object.assign({}, getClassMap(i.cssClass)), { 'alert-radio-button': true, 'alert-tappable': true, 'alert-radio': true, 'ion-focusable': !i.disabled, 'ion-activatable': !i.disabled, 'alert-radio-button-disabled': i.disabled || false }), role: "radio" }, hAsync("div", { class: {
11251
+ 'alert-button-inner': true,
11252
+ [`radio-label-placement-${(_a = richInput.labelPlacement) !== null && _a !== void 0 ? _a : defaultLabelPlacement}`]: true,
11253
+ [`radio-justify-${(_b = richInput.justify) !== null && _b !== void 0 ? _b : defaultJustify}`]: true,
11254
+ } }, hAsync("div", { class: "alert-radio-icon" }, hAsync("div", { class: "alert-radio-inner" })), renderOptionLabel(optionLabelOptions, 'alert-radio-label'))));
11255
+ })));
10765
11256
  }
10766
11257
  renderInput() {
10767
11258
  const inputs = this.processedInputs;
@@ -10841,7 +11332,7 @@ class Alert {
10841
11332
  'alert-button-group': true,
10842
11333
  'alert-button-group-vertical': buttons.length > 2 || this.isButtonGroupWrapped,
10843
11334
  };
10844
- return (hAsync("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (hAsync("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass$2(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), hAsync("span", { class: "alert-button-inner" }, button.text), mode === 'md' && hAsync("ion-ripple-effect", null))))));
11335
+ return (hAsync("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (hAsync("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass$1(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), hAsync("span", { class: "alert-button-inner" }, button.text), mode === 'md' && hAsync("ion-ripple-effect", null))))));
10845
11336
  }
10846
11337
  renderAlertMessage(msgId) {
10847
11338
  const { customHTMLEnabled, message } = this;
@@ -10864,9 +11355,9 @@ class Alert {
10864
11355
  * If neither are defined, do not set aria-labelledby.
10865
11356
  */
10866
11357
  const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
10867
- return (hAsync(Host, { key: '8d54ccd725ea634be080e67b56fa5efe498f496c', tabindex: "-1", style: {
11358
+ return (hAsync(Host, { key: '022f3463b8e6c52064b90ec304c524847c3d5ad3', tabindex: "-1", style: {
10868
11359
  zIndex: `${20000 + overlayIndex}`,
10869
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: '05a238583342285545587de9dce144a82d779193', tappable: this.backdropDismiss }), hAsync("div", { key: 'e52c53fd9845e66781af01b2a788a291b45a927c', tabindex: "0", "aria-hidden": "true" }), hAsync("div", Object.assign({ key: '8417e52eebca24ff436fab0703666db51072f980', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), hAsync("div", { key: '5c560d4800b24d41961423718108b54be6cd6f91', class: "alert-head" }, header && (hAsync("h2", { key: '8637b64cd5125b2258115d1c11f3743113658608', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '7a4e61a02c29b16b336d8acaf6569b30de6fe71e', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '30844b6a0a7e3dab46514cd548ecffa86dcd59cb', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: '39c824fee1e60ad8d6234c79d22ceb8bba8004af', tabindex: "0", "aria-hidden": "true" })));
11360
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: 'c3cd05738bc2834f54707edeb2fae06ec10d6fd2', tappable: this.backdropDismiss }), hAsync("div", { key: 'b44fadd9ba7ddf073854c5035538d11ae8e66bc2', tabindex: "0", "aria-hidden": "true" }), hAsync("div", Object.assign({ key: 'fafea048141a6c7957e62aef31faa8041dd610c1', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), hAsync("div", { key: '3ad9d2d4b7cf425eab8293ddc12eff0fe8df1517', class: "alert-head" }, header && (hAsync("h2", { key: '7d9154f5ee595b7e4da6ecf3a20871f104c1256e', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '1f891f38004be6964e9406b84dd580145c42516a', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '2ab4d344ecb7e384e8f6d3d3e59ee5a1bbcc832c', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: '78a4ff09aa3aaafcd0dc2a42d036767d83b3cfa2', tabindex: "0", "aria-hidden": "true" })));
10870
11361
  }
10871
11362
  get el() { return getElement(this); }
10872
11363
  static get watchers() { return {
@@ -10924,7 +11415,7 @@ const inputClass = (input) => {
10924
11415
  var _a, _b, _c;
10925
11416
  return Object.assign(Object.assign({ 'alert-input': true, 'alert-input-disabled': ((_b = (_a = input.attributes) === null || _a === void 0 ? void 0 : _a.disabled) !== null && _b !== void 0 ? _b : input.disabled) || false }, getClassMap(input.cssClass)), getClassMap(input.attributes ? (_c = input.attributes.class) === null || _c === void 0 ? void 0 : _c.toString() : ''));
10926
11417
  };
10927
- const buttonClass$2 = (button) => {
11418
+ const buttonClass$1 = (button) => {
10928
11419
  return Object.assign({ 'alert-button': true, 'ion-focusable': true, 'ion-activatable': true, [`alert-button-role-${button.role}`]: button.role !== undefined }, getClassMap(button.cssClass));
10929
11420
  };
10930
11421
 
@@ -19263,7 +19754,7 @@ class Input {
19263
19754
  /**
19264
19755
  * Whether auto correction should be enabled when the user is entering/editing the text value.
19265
19756
  */
19266
- this.autocorrect = 'off';
19757
+ this.autocorrect = false;
19267
19758
  /**
19268
19759
  * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element.
19269
19760
  *
@@ -19720,7 +20211,7 @@ class Input {
19720
20211
  * TODO(FW-5592): Remove hasStartEndSlots condition
19721
20212
  */
19722
20213
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
19723
- return (hAsync(Host, { key: '9ba9cf425b573d2ca9ac34455a0e6b8474c4de6d', class: createColorClasses$1(this.color, {
20214
+ return (hAsync(Host, { key: '6a05f61339d8045285d5820c2508296cc842c210', class: createColorClasses$1(this.color, {
19724
20215
  [mode]: true,
19725
20216
  'has-value': hasValue,
19726
20217
  'has-focus': hasFocus,
@@ -19731,14 +20222,14 @@ class Input {
19731
20222
  'in-item': inItem,
19732
20223
  'in-item-color': hostContext('ion-item.ion-color', this.el),
19733
20224
  'input-disabled': disabled,
19734
- }) }, hAsync("label", { key: '74b989d0aa5ab38f29f952519868f05119df6005', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '47f2b42e2f74ea866b4f871026e08ab375d7a726', class: "native-wrapper", onClick: this.onLabelClick }, hAsync("slot", { key: 'eaabe5a4a329a356cac3294d15c087d0d131fff2', name: "start" }), hAsync("input", Object.assign({ key: 'c821a984a8a9b7f96f30892c06d8deda093ff24b', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-labelledby": this.getLabelledById() }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '62069c11016ee190dc46ab941372e1c4ad8a36ed', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
20225
+ }) }, hAsync("label", { key: 'b546d66f53ea25082494e3a4cb0ce7532ee649d7', class: "input-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '6af832f2b25fadee7a49adb999166dbc97565e2d', class: "native-wrapper", onClick: this.onLabelClick }, hAsync("slot", { key: 'e7a8895038a8d2503f646acfda20c6c1a99c2839', name: "start" }), hAsync("input", Object.assign({ key: 'ce85703e0434a6322bb4275a924e3cd91c79fa20', class: "native-input", ref: (input) => (this.nativeInput = input), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect ? 'on' : 'off', autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, min: this.min, max: this.max, minLength: this.minlength, maxLength: this.maxlength, multiple: this.multiple, name: this.name, pattern: this.pattern, placeholder: this.placeholder || '', readOnly: readonly, required: this.required, spellcheck: this.spellcheck, step: this.step, type: this.type, value: value, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeydown, onCompositionstart: this.onCompositionStart, onCompositionend: this.onCompositionEnd, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-labelledby": this.getLabelledById() }, this.inheritedAttributes)), this.clearInput && !readonly && !disabled && (hAsync("button", { key: '1e59589fc89a37d7830dc915b4c19d26a8f568c7', "aria-label": "reset", type: "button", class: "input-clear-icon", onPointerDown: (ev) => {
19735
20226
  /**
19736
20227
  * This prevents mobile browsers from
19737
20228
  * blurring the input when the clear
19738
20229
  * button is activated.
19739
20230
  */
19740
20231
  ev.preventDefault();
19741
- }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: 'dd75a516d32110d85382b664c663bd41f177ce12', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '330d4b9389f2c62223a5ee24003e96ef3e6b2473', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '8e442bed130ddc84976ab70fd3f8578d6bcc6316', class: "input-highlight" })), this.renderBottomContent()));
20232
+ }, onClick: this.clearTextInput }, hAsync("ion-icon", { key: '7d443c5061bf6436d3b77a2444676c679b3e62e4', "aria-hidden": "true", icon: clearIconData }))), hAsync("slot", { key: '5516f88d46886348217570ec1fadda0b79b63c01', name: "end" })), shouldRenderHighlight && hAsync("div", { key: '2a1fdb7e7c974654dfbb3afb4fbfd9204e9d9092', class: "input-highlight" })), this.renderBottomContent()));
19742
20233
  }
19743
20234
  get el() { return getElement(this); }
19744
20235
  static get watchers() { return {
@@ -19766,7 +20257,7 @@ class Input {
19766
20257
  "color": [513],
19767
20258
  "autocapitalize": [1],
19768
20259
  "autocomplete": [1],
19769
- "autocorrect": [1],
20260
+ "autocorrect": [4],
19770
20261
  "autofocus": [4],
19771
20262
  "clearInput": [4, "clear-input"],
19772
20263
  "clearInputIcon": [1, "clear-input-icon"],
@@ -21770,7 +22261,7 @@ class ListHeader {
21770
22261
  /**
21771
22262
  * iOS Loading Enter Animation
21772
22263
  */
21773
- const iosEnterAnimation$4 = (baseEl) => {
22264
+ const iosEnterAnimation$3 = (baseEl) => {
21774
22265
  const baseAnimation = createAnimation();
21775
22266
  const backdropAnimation = createAnimation();
21776
22267
  const wrapperAnimation = createAnimation();
@@ -21795,7 +22286,7 @@ const iosEnterAnimation$4 = (baseEl) => {
21795
22286
  /**
21796
22287
  * iOS Loading Leave Animation
21797
22288
  */
21798
- const iosLeaveAnimation$4 = (baseEl) => {
22289
+ const iosLeaveAnimation$3 = (baseEl) => {
21799
22290
  const baseAnimation = createAnimation();
21800
22291
  const backdropAnimation = createAnimation();
21801
22292
  const wrapperAnimation = createAnimation();
@@ -21968,6 +22459,10 @@ class Loading {
21968
22459
  }
21969
22460
  disconnectedCallback() {
21970
22461
  this.triggerController.removeClickListener();
22462
+ // Clean up aria-hidden if removed without dismiss() being called
22463
+ if (this.presented) {
22464
+ cleanupRootFocusTrapAccessibility();
22465
+ }
21971
22466
  }
21972
22467
  /**
21973
22468
  * Present the loading overlay after it has been created.
@@ -21975,7 +22470,7 @@ class Loading {
21975
22470
  async present() {
21976
22471
  const unlock = await this.lockController.lock();
21977
22472
  await this.delegateController.attachViewToDom();
21978
- await present(this, 'loadingEnter', iosEnterAnimation$4, mdEnterAnimation$3);
22473
+ await present(this, 'loadingEnter', iosEnterAnimation$3, mdEnterAnimation$3);
21979
22474
  if (this.duration > 0) {
21980
22475
  this.durationTimeout = setTimeout(() => this.dismiss(), this.duration + 10);
21981
22476
  }
@@ -21998,7 +22493,7 @@ class Loading {
21998
22493
  if (this.durationTimeout) {
21999
22494
  clearTimeout(this.durationTimeout);
22000
22495
  }
22001
- const dismissed = await dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation$4, mdLeaveAnimation$3);
22496
+ const dismissed = await dismiss(this, data, role, 'loadingLeave', iosLeaveAnimation$3, mdLeaveAnimation$3);
22002
22497
  if (dismissed) {
22003
22498
  this.delegateController.removeViewFromDom();
22004
22499
  }
@@ -22033,9 +22528,9 @@ class Loading {
22033
22528
  * Otherwise, don't set aria-labelledby.
22034
22529
  */
22035
22530
  const ariaLabelledBy = message !== undefined ? msgId : null;
22036
- return (hAsync(Host, Object.assign({ key: 'f86ddbc600cb5c396b7de38fb5f49625388c3c3f', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
22531
+ return (hAsync(Host, Object.assign({ key: 'ab48bfcee8f7e3e33847a2f262fdc08b9ea804ca', role: "dialog", "aria-modal": "true", "aria-labelledby": ariaLabelledBy, tabindex: "-1" }, htmlAttributes, { style: {
22037
22532
  zIndex: `${40000 + this.overlayIndex}`,
22038
- }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: 'b53727aaddc37ef3c685fcc150c6d5193290a847', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '4c61bede8e0a4e47daa6f1f9d0f364ef6aec0bc3', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '84e51ceb07118f1eaeb757df28801c255496931b', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: 'fc97f1912e0fc558b7c309a5bc084415f5f620b2', class: "loading-spinner" }, hAsync("ion-spinner", { key: '6e186d856cd3f10f22c3e317ef00f31b4216459c', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: 'dcbe9d9a619daa1c08174e73827bdabeb59dde92', tabindex: "0", "aria-hidden": "true" })));
22533
+ }, onIonBackdropTap: this.onBackdropTap, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'loading-translucent': this.translucent }) }), hAsync("ion-backdrop", { key: '41baccc7fb6474389a3a3431c208e829ef738b75', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: '7b7290974abbe8db8739b19835aca9f8b5c271c2', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: 'e32466abfcc92aaad47ea03b1dcb49f66abe4b63', class: "loading-wrapper ion-overlay-wrapper" }, spinner && (hAsync("div", { key: 'c5e6e6f9e3f39dba0225d08d7dd2c1b96a1d83c7', class: "loading-spinner" }, hAsync("ion-spinner", { key: 'f428038959d879404ea898011363aac0b807ad11', name: spinner, "aria-hidden": "true" }))), message !== undefined && this.renderLoadingMessage(msgId)), hAsync("div", { key: '490e531367b86c319fa4260722dcff4dd631fa88', tabindex: "0", "aria-hidden": "true" })));
22039
22534
  }
22040
22535
  get el() { return getElement(this); }
22041
22536
  static get watchers() { return {
@@ -24309,7 +24804,7 @@ const createEnterAnimation$1 = () => {
24309
24804
  /**
24310
24805
  * iOS Modal Enter Animation for the Card presentation style
24311
24806
  */
24312
- const iosEnterAnimation$3 = (baseEl, opts) => {
24807
+ const iosEnterAnimation$2 = (baseEl, opts) => {
24313
24808
  const { presentingEl, currentBreakpoint, expandToScroll } = opts;
24314
24809
  const root = getElementRoot(baseEl);
24315
24810
  const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation$1();
@@ -24402,7 +24897,7 @@ const createLeaveAnimation$1 = () => {
24402
24897
  /**
24403
24898
  * iOS Modal Leave Animation
24404
24899
  */
24405
- const iosLeaveAnimation$3 = (baseEl, opts, duration = 500) => {
24900
+ const iosLeaveAnimation$2 = (baseEl, opts, duration = 500) => {
24406
24901
  const { presentingEl, currentBreakpoint } = opts;
24407
24902
  const root = getElementRoot(baseEl);
24408
24903
  const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation$1();
@@ -25577,13 +26072,20 @@ class Modal {
25577
26072
  /**
25578
26073
  * The interaction behavior for the sheet modal when the handle is pressed.
25579
26074
  *
25580
- * Defaults to `"none"`, which means the modal will not change size or position when the handle is pressed.
25581
- * Set to `"cycle"` to let the modal cycle between available breakpoints when pressed.
26075
+ * Handle behavior is unavailable when the `handle` property is set to
26076
+ * `false` or when the `breakpoints` property is not set (using a
26077
+ * fullscreen or card modal).
26078
+ *
26079
+ * Set to `"cycle"` to make the handle focusable and let the sheet modal
26080
+ * cycle between available breakpoints when pressed. This keeps the sheet
26081
+ * operable with assistive technology.
25582
26082
  *
25583
- * Handle behavior is unavailable when the `handle` property is set to `false` or
25584
- * when the `breakpoints` property is not set (using a fullscreen or card modal).
26083
+ * Set to `"none"` to make the handle purely decorative when pressed and
26084
+ * removed from the tab order.
26085
+ *
26086
+ * Defaults to `"cycle"`.
25585
26087
  */
25586
- this.handleBehavior = 'none';
26088
+ this.handleBehavior = 'cycle';
25587
26089
  /**
25588
26090
  * If `true`, the modal will be dismissed when the backdrop is clicked.
25589
26091
  */
@@ -25775,6 +26277,10 @@ class Modal {
25775
26277
  // Also called in dismiss() — intentional dual cleanup covers both
25776
26278
  // dismiss-then-remove and direct DOM removal without dismiss.
25777
26279
  this.cleanupSafeAreaOverrides();
26280
+ // Clean up aria-hidden if removed without dismiss() being called
26281
+ if (this.presented) {
26282
+ cleanupRootFocusTrapAccessibility();
26283
+ }
25778
26284
  }
25779
26285
  componentWillLoad() {
25780
26286
  var _a;
@@ -25951,7 +26457,7 @@ class Modal {
25951
26457
  this.statusBarStyle = await StatusBar.getStyle();
25952
26458
  setCardStatusBarDark();
25953
26459
  }
25954
- await present(this, 'modalEnter', iosEnterAnimation$3, mdEnterAnimation$2, {
26460
+ await present(this, 'modalEnter', iosEnterAnimation$2, mdEnterAnimation$2, {
25955
26461
  presentingEl: presentingElement,
25956
26462
  currentBreakpoint: this.initialBreakpoint,
25957
26463
  backdropBreakpoint: this.backdropBreakpoint,
@@ -26013,7 +26519,7 @@ class Modal {
26013
26519
  // All of the elements needed for the swipe gesture
26014
26520
  // should be in the DOM and referenced by now, except
26015
26521
  // for the presenting el
26016
- const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$3);
26522
+ const animationBuilder = this.leaveAnimation || config.get('modalLeave', iosLeaveAnimation$2);
26017
26523
  const ani = (this.animation = animationBuilder(el, {
26018
26524
  presentingEl: this.presentingElement,
26019
26525
  expandToScroll: this.expandToScroll,
@@ -26032,7 +26538,7 @@ class Modal {
26032
26538
  if (!wrapperEl || initialBreakpoint === undefined) {
26033
26539
  return;
26034
26540
  }
26035
- const animationBuilder = this.enterAnimation || config.get('modalEnter', iosEnterAnimation$3);
26541
+ const animationBuilder = this.enterAnimation || config.get('modalEnter', iosEnterAnimation$2);
26036
26542
  const ani = (this.animation = animationBuilder(this.el, {
26037
26543
  presentingEl: this.presentingElement,
26038
26544
  currentBreakpoint: initialBreakpoint,
@@ -26222,7 +26728,7 @@ class Modal {
26222
26728
  window.removeEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
26223
26729
  this.keyboardOpenCallback = undefined;
26224
26730
  }
26225
- const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation$3, mdLeaveAnimation$2, {
26731
+ const dismissed = await dismiss(this, data, role, 'modalLeave', iosLeaveAnimation$2, mdLeaveAnimation$2, {
26226
26732
  presentingEl: presentingElement,
26227
26733
  currentBreakpoint: (_a = this.currentBreakpoint) !== null && _a !== void 0 ? _a : this.initialBreakpoint,
26228
26734
  backdropBreakpoint: this.backdropBreakpoint,
@@ -26654,20 +27160,20 @@ class Modal {
26654
27160
  const isCardModal = presentingElement !== undefined && mode === 'ios';
26655
27161
  const isHandleCycle = handleBehavior === 'cycle';
26656
27162
  const isSheetModalWithHandle = isSheetModal && showHandle;
26657
- return (hAsync(Host, Object.assign({ key: 'ab93657f4a5b4c97168d292b398d975e4b5b4af4', "no-router": true,
27163
+ return (hAsync(Host, Object.assign({ key: '528f9e354f470e22563938e7531e3f23a97e4200', "no-router": true,
26658
27164
  // Allow the modal to be navigable when the handle is focusable
26659
27165
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
26660
27166
  zIndex: `${20000 + this.overlayIndex}`,
26661
- }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), hAsync("ion-backdrop", { key: '5ba6315c7c8c64fa04c62f85fd493da5275b2cbd', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'a76c48d41c67f86c18a7481e980e6925e614f85d', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '3f6c61ba60b063592784d76a9594073b3bf210a9',
27167
+ }, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), hAsync("ion-backdrop", { key: '53983c96bc6b30df89986c8d9c978a8e6f78fe80', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '34288a7343b7c47fed00d3abc73957f45f06d2fd', class: "modal-shadow" }), hAsync("div", Object.assign({ key: 'f9b37f547bd5c61037bbad1a71bfed80ba8c630b',
26662
27168
  /*
26663
27169
  role and aria-modal must be used on the
26664
27170
  same element. They must also be set inside the
26665
27171
  shadow DOM otherwise ion-button will not be highlighted
26666
27172
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
26667
27173
  */
26668
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '7f66b4fdb3dec61a2b9aec4e9dbacf5d013d637c', class: "modal-handle",
27174
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'b8741594108d3ea681ff41ff8f2241a4119578b1', class: "modal-handle",
26669
27175
  // Prevents the handle from receiving keyboard focus when it does not cycle
26670
- tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), hAsync("slot", { key: '2dfaaebe3d0b2a46be1224c25f9ab89bf1744332', onSlotchange: this.onSlotChange }))));
27176
+ tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), hAsync("slot", { key: 'bcc7960fae3fed09076c704d08c3afc46caa0738', onSlotchange: this.onSlotChange }))));
26671
27177
  }
26672
27178
  get el() { return getElement(this); }
26673
27179
  static get watchers() { return {
@@ -27750,14 +28256,14 @@ class Note {
27750
28256
  }; }
27751
28257
  }
27752
28258
 
27753
- const pickerIosCss$1 = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{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}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-highlight{background:var(--highlight-background, var(--ion-color-step-150, var(--ion-background-color-step-150, #eeeeef)))}`;
28259
+ const pickerIosCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{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}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), to(rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0.8) 100%)}:host .picker-highlight{background:var(--highlight-background, var(--ion-color-step-150, var(--ion-background-color-step-150, #eeeeef)))}`;
27754
28260
 
27755
- const pickerMdCss$1 = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{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}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}`;
28261
+ const pickerMdCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:200px;direction:ltr;z-index:0}:host .picker-before,:host .picker-after{position:absolute;width:100%;-webkit-transform:translateZ(0);transform:translateZ(0);z-index:1;pointer-events:none}:host .picker-before{top:0;height:83px}:host .picker-before{inset-inline-start:0}:host .picker-after{top:116px;height:84px}:host .picker-after{inset-inline-start:0}:host .picker-highlight{border-radius:var(--highlight-border-radius, 8px);left:0;right:0;top:50%;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:0;margin-bottom:0;position:absolute;width:calc(100% - 16px);height:34px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:var(--highlight-background);z-index:-1}:host input{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}:host ::slotted(ion-picker-column:first-of-type){text-align:start}:host ::slotted(ion-picker-column:last-of-type){text-align:end}:host ::slotted(ion-picker-column:only-child){text-align:center}:host .picker-before{background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to bottom, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 20%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}:host .picker-after{background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1)), color-stop(90%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0)));background:linear-gradient(to top, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 1) 30%, rgba(var(--fade-background-rgb, var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255))), 0) 90%)}`;
27756
28262
 
27757
28263
  /**
27758
28264
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
27759
28265
  */
27760
- let Picker$1 = class Picker {
28266
+ class Picker {
27761
28267
  constructor(hostRef) {
27762
28268
  registerInstance(this, hostRef);
27763
28269
  this.ionInputModeChange = createEvent(this, "ionInputModeChange", 7);
@@ -28223,8 +28729,8 @@ let Picker$1 = class Picker {
28223
28729
  }
28224
28730
  get el() { return getElement(this); }
28225
28731
  static get style() { return {
28226
- ios: pickerIosCss$1(),
28227
- md: pickerMdCss$1()
28732
+ ios: pickerIosCss(),
28733
+ md: pickerMdCss()
28228
28734
  }; }
28229
28735
  static get cmpMeta() { return {
28230
28736
  "$flags$": 297,
@@ -28236,359 +28742,44 @@ let Picker$1 = class Picker {
28236
28742
  "$lazyBundleId$": "-",
28237
28743
  "$attrsToReflect$": []
28238
28744
  }; }
28239
- };
28240
-
28241
- /**
28242
- * iOS Picker Enter Animation
28243
- */
28244
- const iosEnterAnimation$2 = (baseEl) => {
28245
- const baseAnimation = createAnimation();
28246
- const backdropAnimation = createAnimation();
28247
- const wrapperAnimation = createAnimation();
28248
- backdropAnimation
28249
- .addElement(baseEl.querySelector('ion-backdrop'))
28250
- .fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
28251
- .beforeStyles({
28252
- 'pointer-events': 'none',
28253
- })
28254
- .afterClearStyles(['pointer-events']);
28255
- wrapperAnimation
28256
- .addElement(baseEl.querySelector('.picker-wrapper'))
28257
- .fromTo('transform', 'translateY(100%)', 'translateY(0%)');
28258
- return baseAnimation
28259
- .addElement(baseEl)
28260
- .easing('cubic-bezier(.36,.66,.04,1)')
28261
- .duration(400)
28262
- .addAnimation([backdropAnimation, wrapperAnimation]);
28263
- };
28264
-
28265
- /**
28266
- * iOS Picker Leave Animation
28267
- */
28268
- const iosLeaveAnimation$2 = (baseEl) => {
28269
- const baseAnimation = createAnimation();
28270
- const backdropAnimation = createAnimation();
28271
- const wrapperAnimation = createAnimation();
28272
- backdropAnimation
28273
- .addElement(baseEl.querySelector('ion-backdrop'))
28274
- .fromTo('opacity', 'var(--backdrop-opacity)', 0.01);
28275
- wrapperAnimation
28276
- .addElement(baseEl.querySelector('.picker-wrapper'))
28277
- .fromTo('transform', 'translateY(0%)', 'translateY(100%)');
28278
- return baseAnimation
28279
- .addElement(baseEl)
28280
- .easing('cubic-bezier(.36,.66,.04,1)')
28281
- .duration(400)
28282
- .addAnimation([backdropAnimation, wrapperAnimation]);
28283
- };
28284
-
28285
- const pickerIosCss = () => `.sc-ion-picker-legacy-ios-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.sc-ion-picker-legacy-ios-h{inset-inline-start:0}.overlay-hidden.sc-ion-picker-legacy-ios-h{display:none}.picker-wrapper.sc-ion-picker-legacy-ios{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-legacy-ios{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-ios{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-ios:active,.picker-button.sc-ion-picker-legacy-ios:focus{outline:none}.picker-columns.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-legacy-ios,.picker-below-highlight.sc-ion-picker-legacy-ios{display:none;pointer-events:none}.sc-ion-picker-legacy-ios-h{--background:var(--ion-background-color, #fff);--border-width:1px 0 0;--border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-legacy-ios{display:-ms-flexbox;display:flex;height:44px;border-bottom:0.55px solid var(--border-color)}.picker-toolbar-button.sc-ion-picker-legacy-ios{-ms-flex:1;flex:1;text-align:end}.picker-toolbar-button.sc-ion-picker-legacy-ios:last-child .picker-button.sc-ion-picker-legacy-ios{font-weight:600}.picker-toolbar-button.sc-ion-picker-legacy-ios:first-child{font-weight:normal;text-align:start}.picker-button.sc-ion-picker-legacy-ios,.picker-button.ion-activated.sc-ion-picker-legacy-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1em;padding-inline-start:1em;-webkit-padding-end:1em;padding-inline-end:1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #0054e9);font-size:16px}.picker-columns.sc-ion-picker-legacy-ios{height:215px;-webkit-perspective:1000px;perspective:1000px}.picker-above-highlight.sc-ion-picker-legacy-ios{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:81px;border-bottom:1px solid var(--border-color);background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to bottom, var(--background, var(--ion-background-color, #fff)) 20%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:10}.picker-above-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}.picker-below-highlight.sc-ion-picker-legacy-ios{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);display:block;position:absolute;width:100%;height:119px;border-top:1px solid var(--border-color);background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--background, var(--ion-background-color, #fff))), to(rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8)));background:linear-gradient(to top, var(--background, var(--ion-background-color, #fff)) 30%, rgba(var(--background-rgb, var(--ion-background-color-rgb, 255, 255, 255)), 0.8) 100%);z-index:11}.picker-below-highlight.sc-ion-picker-legacy-ios{inset-inline-start:0}`;
28745
+ }
28286
28746
 
28287
- const pickerMdCss = () => `.sc-ion-picker-legacy-md-h{--border-radius:0;--border-style:solid;--min-width:auto;--width:100%;--max-width:500px;--min-height:auto;--max-height:auto;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;top:0;display:block;position:absolute;width:100%;height:100%;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.sc-ion-picker-legacy-md-h{inset-inline-start:0}.overlay-hidden.sc-ion-picker-legacy-md-h{display:none}.picker-wrapper.sc-ion-picker-legacy-md{border-radius:var(--border-radius);left:0;right:0;bottom:0;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;margin-top:auto;margin-bottom:auto;-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);contain:strict;overflow:hidden;z-index:10}.picker-toolbar.sc-ion-picker-legacy-md{width:100%;background:transparent;contain:strict;z-index:1}.picker-button.sc-ion-picker-legacy-md{border:0;font-family:inherit}.picker-button.sc-ion-picker-legacy-md:active,.picker-button.sc-ion-picker-legacy-md:focus{outline:none}.picker-columns.sc-ion-picker-legacy-md{display:-ms-flexbox;display:flex;position:relative;-ms-flex-pack:center;justify-content:center;margin-bottom:var(--ion-safe-area-bottom, 0);contain:strict;overflow:hidden}.picker-above-highlight.sc-ion-picker-legacy-md,.picker-below-highlight.sc-ion-picker-legacy-md{display:none;pointer-events:none}.sc-ion-picker-legacy-md-h{--background:var(--ion-background-color, #fff);--border-width:0.55px 0 0;--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)))));--height:260px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.26);color:var(--ion-item-color, var(--ion-text-color, #000))}.picker-toolbar.sc-ion-picker-legacy-md{display:-ms-flexbox;display:flex;-ms-flex-pack:end;justify-content:flex-end;height:44px}.picker-button.sc-ion-picker-legacy-md,.picker-button.ion-activated.sc-ion-picker-legacy-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-padding-start:1.1em;padding-inline-start:1.1em;-webkit-padding-end:1.1em;padding-inline-end:1.1em;padding-top:0;padding-bottom:0;height:44px;background:transparent;color:var(--ion-color-primary, #0054e9);font-size:14px;font-weight:500;text-transform:uppercase;-webkit-box-shadow:none;box-shadow:none}.picker-columns.sc-ion-picker-legacy-md{height:216px;-webkit-perspective:1800px;perspective:1800px}.picker-above-highlight.sc-ion-picker-legacy-md{top:0;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:81px;border-bottom:1px solid 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)))));background:-webkit-gradient(linear, left top, left bottom, color-stop(20%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to bottom, var(--ion-background-color, #fff) 20%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:10}.picker-above-highlight.sc-ion-picker-legacy-md{inset-inline-start:0}.picker-below-highlight.sc-ion-picker-legacy-md{top:115px;-webkit-transform:translate3d(0, 0, 90px);transform:translate3d(0, 0, 90px);position:absolute;width:100%;height:119px;border-top:1px solid 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)))));background:-webkit-gradient(linear, left bottom, left top, color-stop(30%, var(--ion-background-color, #fff)), to(rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8)));background:linear-gradient(to top, var(--ion-background-color, #fff) 30%, rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8) 100%);z-index:11}.picker-below-highlight.sc-ion-picker-legacy-md{inset-inline-start:0}`;
28747
+ const pickerColumnCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.assistive-focusable{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1;pointer-events:none}.assistive-focusable:focus{outline:none}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}`;
28288
28748
 
28289
- // TODO(FW-2832): types
28290
28749
  /**
28291
28750
  * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
28751
+ *
28752
+ * @slot prefix - Content to show on the left side of the picker options.
28753
+ * @slot suffix - Content to show on the right side of the picker options.
28292
28754
  */
28293
- class Picker {
28755
+ class PickerColumn {
28294
28756
  constructor(hostRef) {
28295
28757
  registerInstance(this, hostRef);
28296
- this.didPresent = createEvent(this, "ionPickerDidPresent", 7);
28297
- this.willPresent = createEvent(this, "ionPickerWillPresent", 7);
28298
- this.willDismiss = createEvent(this, "ionPickerWillDismiss", 7);
28299
- this.didDismiss = createEvent(this, "ionPickerDidDismiss", 7);
28300
- this.didPresentShorthand = createEvent(this, "didPresent", 7);
28301
- this.willPresentShorthand = createEvent(this, "willPresent", 7);
28302
- this.willDismissShorthand = createEvent(this, "willDismiss", 7);
28303
- this.didDismissShorthand = createEvent(this, "didDismiss", 7);
28304
- this.delegateController = createDelegateController(this);
28305
- this.lockController = createLockController();
28306
- this.triggerController = createTriggerController();
28307
- this.presented = false;
28308
- /** @internal */
28309
- this.hasController = false;
28310
- /**
28311
- * If `true`, the keyboard will be automatically dismissed when the overlay is presented.
28312
- */
28313
- this.keyboardClose = true;
28314
- /**
28315
- * Array of buttons to be displayed at the top of the picker.
28316
- */
28317
- this.buttons = [];
28318
- /**
28319
- * Array of columns to be displayed in the picker.
28320
- */
28321
- this.columns = [];
28322
- /**
28323
- * Number of milliseconds to wait before dismissing the picker.
28324
- */
28325
- this.duration = 0;
28758
+ this.ionChange = createEvent(this, "ionChange", 7);
28759
+ this.isScrolling = false;
28760
+ this.isColumnVisible = false;
28761
+ this.canExitInputMode = true;
28762
+ this.updateValueTextOnScroll = false;
28763
+ this.ariaLabel = null;
28764
+ this.isActive = false;
28326
28765
  /**
28327
- * If `true`, a backdrop will be displayed behind the picker.
28766
+ * If `true`, the user cannot interact with the picker.
28328
28767
  */
28329
- this.showBackdrop = true;
28768
+ this.disabled = false;
28330
28769
  /**
28331
- * If `true`, the picker will be dismissed when the backdrop is clicked.
28770
+ * The color to use from your application's color palette.
28771
+ * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
28772
+ * For more information on colors, see [theming](/docs/theming/basics).
28332
28773
  */
28333
- this.backdropDismiss = true;
28774
+ this.color = 'primary';
28334
28775
  /**
28335
- * If `true`, the picker will animate.
28336
- */
28337
- this.animated = true;
28338
- /**
28339
- * If `true`, the picker will open. If `false`, the picker will close.
28340
- * Use this if you need finer grained control over presentation, otherwise
28341
- * just use the pickerController or the `trigger` property.
28342
- * Note: `isOpen` will not automatically be set back to `false` when
28343
- * the picker dismisses. You will need to do that in your code.
28344
- */
28345
- this.isOpen = false;
28346
- this.onBackdropTap = () => {
28347
- this.dismiss(undefined, BACKDROP);
28348
- };
28349
- this.dispatchCancelHandler = (ev) => {
28350
- const role = ev.detail.role;
28351
- if (isCancel(role)) {
28352
- const cancelButton = this.buttons.find((b) => b.role === 'cancel');
28353
- this.callButtonHandler(cancelButton);
28354
- }
28355
- };
28356
- }
28357
- onIsOpenChange(newValue, oldValue) {
28358
- if (newValue === true && oldValue === false) {
28359
- this.present();
28360
- }
28361
- else if (newValue === false && oldValue === true) {
28362
- this.dismiss();
28363
- }
28364
- }
28365
- triggerChanged() {
28366
- const { trigger, el, triggerController } = this;
28367
- if (trigger) {
28368
- triggerController.addClickListener(el, trigger);
28369
- }
28370
- }
28371
- connectedCallback() {
28372
- prepareOverlay(this.el);
28373
- this.triggerChanged();
28374
- }
28375
- disconnectedCallback() {
28376
- this.triggerController.removeClickListener();
28377
- }
28378
- componentWillLoad() {
28379
- var _a;
28380
- if (!((_a = this.htmlAttributes) === null || _a === void 0 ? void 0 : _a.id)) {
28381
- setOverlayId(this.el);
28382
- }
28383
- }
28384
- componentDidLoad() {
28385
- printIonWarning('[ion-picker-legacy] - ion-picker-legacy and ion-picker-legacy-column have been deprecated in favor of new versions of the ion-picker and ion-picker-column components. These new components display inline with your page content allowing for more presentation flexibility than before.', this.el);
28386
- /**
28387
- * If picker was rendered with isOpen="true"
28388
- * then we should open picker immediately.
28389
- */
28390
- if (this.isOpen === true) {
28391
- raf(() => this.present());
28392
- }
28393
- /**
28394
- * When binding values in frameworks such as Angular
28395
- * it is possible for the value to be set after the Web Component
28396
- * initializes but before the value watcher is set up in Stencil.
28397
- * As a result, the watcher callback may not be fired.
28398
- * We work around this by manually calling the watcher
28399
- * callback when the component has loaded and the watcher
28400
- * is configured.
28401
- */
28402
- this.triggerChanged();
28403
- }
28404
- /**
28405
- * Present the picker overlay after it has been created.
28406
- */
28407
- async present() {
28408
- const unlock = await this.lockController.lock();
28409
- await this.delegateController.attachViewToDom();
28410
- await present(this, 'pickerEnter', iosEnterAnimation$2, iosEnterAnimation$2, undefined);
28411
- if (this.duration > 0) {
28412
- this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
28413
- }
28414
- unlock();
28415
- }
28416
- /**
28417
- * Dismiss the picker overlay after it has been presented.
28418
- *
28419
- * @param data Any data to emit in the dismiss events.
28420
- * @param role The role of the element that is dismissing the picker.
28421
- * This can be useful in a button handler for determining which button was
28422
- * clicked to dismiss the picker.
28423
- * Some examples include: ``"cancel"`, `"destructive"`, "selected"`, and `"backdrop"`.
28424
- */
28425
- async dismiss(data, role) {
28426
- const unlock = await this.lockController.lock();
28427
- if (this.durationTimeout) {
28428
- clearTimeout(this.durationTimeout);
28429
- }
28430
- const dismissed = await dismiss(this, data, role, 'pickerLeave', iosLeaveAnimation$2, iosLeaveAnimation$2);
28431
- if (dismissed) {
28432
- this.delegateController.removeViewFromDom();
28433
- }
28434
- unlock();
28435
- return dismissed;
28436
- }
28437
- /**
28438
- * Returns a promise that resolves when the picker did dismiss.
28439
- */
28440
- onDidDismiss() {
28441
- return eventMethod(this.el, 'ionPickerDidDismiss');
28442
- }
28443
- /**
28444
- * Returns a promise that resolves when the picker will dismiss.
28445
- */
28446
- onWillDismiss() {
28447
- return eventMethod(this.el, 'ionPickerWillDismiss');
28448
- }
28449
- /**
28450
- * Get the column that matches the specified name.
28451
- *
28452
- * @param name The name of the column.
28453
- */
28454
- getColumn(name) {
28455
- return Promise.resolve(this.columns.find((column) => column.name === name));
28456
- }
28457
- async buttonClick(button) {
28458
- const role = button.role;
28459
- if (isCancel(role)) {
28460
- return this.dismiss(undefined, role);
28461
- }
28462
- const shouldDismiss = await this.callButtonHandler(button);
28463
- if (shouldDismiss) {
28464
- return this.dismiss(this.getSelected(), button.role);
28465
- }
28466
- return Promise.resolve();
28467
- }
28468
- async callButtonHandler(button) {
28469
- if (button) {
28470
- // a handler has been provided, execute it
28471
- // pass the handler the values from the inputs
28472
- const rtn = await safeCall(button.handler, this.getSelected());
28473
- if (rtn === false) {
28474
- // if the return value of the handler is false then do not dismiss
28475
- return false;
28476
- }
28477
- }
28478
- return true;
28479
- }
28480
- getSelected() {
28481
- const selected = {};
28482
- this.columns.forEach((col, index) => {
28483
- const selectedColumn = col.selectedIndex !== undefined ? col.options[col.selectedIndex] : undefined;
28484
- selected[col.name] = {
28485
- text: selectedColumn ? selectedColumn.text : undefined,
28486
- value: selectedColumn ? selectedColumn.value : undefined,
28487
- columnIndex: index,
28488
- };
28489
- });
28490
- return selected;
28491
- }
28492
- render() {
28493
- const { htmlAttributes } = this;
28494
- const mode = getIonMode$1(this);
28495
- return (hAsync(Host, Object.assign({ key: '80f66d33780d8a1352d24be9cb63a0cc03d01ab5', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
28496
- zIndex: `${20000 + this.overlayIndex}`,
28497
- }, class: Object.assign({ [mode]: true,
28498
- // Used internally for styling
28499
- [`picker-${mode}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), hAsync("ion-backdrop", { key: '97fb8e10ba08b197610cb8c0cdea61103883d55f', visible: this.showBackdrop, tappable: this.backdropDismiss }), hAsync("div", { key: 'b3969cb6fbf7153623d14e3ca1493d3370efb211', tabindex: "0", "aria-hidden": "true" }), hAsync("div", { key: '299268483c3727e698d9135bfdf40349a7050ac1', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, hAsync("div", { key: '95394de3ef691899b7dbf416f56fd3e86bbdce3f', class: "picker-toolbar" }, this.buttons.map((b) => (hAsync("div", { class: buttonWrapperClass(b) }, hAsync("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass$1(b) }, b.text))))), hAsync("div", { key: '05f18bb8d00dc0e22f691b7e41f90f729a6c66d7', class: "picker-columns" }, hAsync("div", { key: '4a8fdf224effc0af67fd413e2e6aca8a78d1cf43', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => hAsync("ion-picker-legacy-column", { col: c })), hAsync("div", { key: 'e50a31db45e3f39e9d0fed36a21be9257eec09bf', class: "picker-below-highlight" }))), hAsync("div", { key: '5a78cb2176ac807ea0c195c6b76cd0e8eef9d4c0', tabindex: "0", "aria-hidden": "true" })));
28500
- }
28501
- get el() { return getElement(this); }
28502
- static get watchers() { return {
28503
- "isOpen": [{
28504
- "onIsOpenChange": 0
28505
- }],
28506
- "trigger": [{
28507
- "triggerChanged": 0
28508
- }]
28509
- }; }
28510
- static get style() { return {
28511
- ios: pickerIosCss(),
28512
- md: pickerMdCss()
28513
- }; }
28514
- static get cmpMeta() { return {
28515
- "$flags$": 34,
28516
- "$tagName$": "ion-picker-legacy",
28517
- "$members$": {
28518
- "overlayIndex": [2, "overlay-index"],
28519
- "delegate": [16],
28520
- "hasController": [4, "has-controller"],
28521
- "keyboardClose": [4, "keyboard-close"],
28522
- "enterAnimation": [16],
28523
- "leaveAnimation": [16],
28524
- "buttons": [16],
28525
- "columns": [16],
28526
- "cssClass": [1, "css-class"],
28527
- "duration": [2],
28528
- "showBackdrop": [4, "show-backdrop"],
28529
- "backdropDismiss": [4, "backdrop-dismiss"],
28530
- "animated": [4],
28531
- "htmlAttributes": [16],
28532
- "isOpen": [4, "is-open"],
28533
- "trigger": [1],
28534
- "presented": [32],
28535
- "present": [64],
28536
- "dismiss": [64],
28537
- "onDidDismiss": [64],
28538
- "onWillDismiss": [64],
28539
- "getColumn": [64]
28540
- },
28541
- "$listeners$": undefined,
28542
- "$lazyBundleId$": "-",
28543
- "$attrsToReflect$": []
28544
- }; }
28545
- }
28546
- const buttonWrapperClass = (button) => {
28547
- return {
28548
- [`picker-toolbar-${button.role}`]: button.role !== undefined,
28549
- 'picker-toolbar-button': true,
28550
- };
28551
- };
28552
- const buttonClass$1 = (button) => {
28553
- return Object.assign({ 'picker-button': true, 'ion-activatable': true }, getClassMap(button.cssClass));
28554
- };
28555
-
28556
- const pickerColumnCss = () => `:host{display:-ms-flexbox;display:flex;position:relative;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;max-width:100%;height:200px;font-size:22px;text-align:center}.assistive-focusable{left:0;right:0;top:0;bottom:0;position:absolute;z-index:1;pointer-events:none}.assistive-focusable:focus{outline:none}.picker-opts{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0px;padding-bottom:0px;min-width:26px;max-height:200px;outline:none;text-align:inherit;-webkit-scroll-snap-type:y mandatory;-ms-scroll-snap-type:y mandatory;scroll-snap-type:y mandatory;overflow-x:hidden;overflow-y:scroll;scrollbar-width:none}.picker-item-empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.picker-opts::-webkit-scrollbar{display:none}::slotted(ion-picker-column-option){display:block;scroll-snap-align:center}.picker-item-empty,:host(:not([disabled])) ::slotted(ion-picker-column-option.option-disabled){scroll-snap-align:none}::slotted([slot=prefix]),::slotted([slot=suffix]){max-width:200px;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}::slotted([slot=prefix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:end;justify-content:end}::slotted([slot=suffix]){-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:0;-ms-flex-pack:start;justify-content:start}:host(.picker-column-disabled) .picker-opts{overflow-y:hidden}:host(.picker-column-disabled) ::slotted(ion-picker-column-option){cursor:default;opacity:0.4;pointer-events:none}@media (any-hover: hover){:host(:focus) .picker-opts{outline:none;background:rgba(var(--ion-color-base-rgb), 0.2)}}`;
28557
-
28558
- /**
28559
- * @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
28560
- *
28561
- * @slot prefix - Content to show on the left side of the picker options.
28562
- * @slot suffix - Content to show on the right side of the picker options.
28563
- */
28564
- class PickerColumn {
28565
- constructor(hostRef) {
28566
- registerInstance(this, hostRef);
28567
- this.ionChange = createEvent(this, "ionChange", 7);
28568
- this.isScrolling = false;
28569
- this.isColumnVisible = false;
28570
- this.canExitInputMode = true;
28571
- this.updateValueTextOnScroll = false;
28572
- this.ariaLabel = null;
28573
- this.isActive = false;
28574
- /**
28575
- * If `true`, the user cannot interact with the picker.
28576
- */
28577
- this.disabled = false;
28578
- /**
28579
- * The color to use from your application's color palette.
28580
- * Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
28581
- * For more information on colors, see [theming](/docs/theming/basics).
28582
- */
28583
- this.color = 'primary';
28584
- /**
28585
- * If `true`, tapping the picker will
28586
- * reveal a number input keyboard that lets
28587
- * the user type in values for each picker
28588
- * column. This is useful when working
28589
- * with time pickers.
28590
- *
28591
- * @internal
28776
+ * If `true`, tapping the picker will
28777
+ * reveal a number input keyboard that lets
28778
+ * the user type in values for each picker
28779
+ * column. This is useful when working
28780
+ * with time pickers.
28781
+ *
28782
+ * @internal
28592
28783
  */
28593
28784
  this.numericInput = false;
28594
28785
  this.centerPickerItemInView = (target, smooth = true, canExitInputMode = true) => {
@@ -29044,464 +29235,99 @@ class PickerColumn {
29044
29235
  */
29045
29236
  if (firstOption !== null && firstOption.value !== value) {
29046
29237
  this.setValue(firstOption.value);
29047
- }
29048
- }
29049
- }
29050
- /** @internal */
29051
- async scrollActiveItemIntoView(smooth = false) {
29052
- const activeEl = this.activeItem;
29053
- if (activeEl) {
29054
- this.centerPickerItemInView(activeEl, smooth, false);
29055
- }
29056
- }
29057
- /**
29058
- * Sets the value prop and fires the ionChange event.
29059
- * This is used when we need to fire ionChange from
29060
- * user-generated events that cannot be caught with normal
29061
- * input/change event listeners.
29062
- * @internal
29063
- */
29064
- async setValue(value) {
29065
- if (this.disabled === true || this.value === value) {
29066
- return;
29067
- }
29068
- this.value = value;
29069
- this.ionChange.emit({ value });
29070
- }
29071
- /**
29072
- * Sets focus on the scrollable container within the picker column.
29073
- * Use this method instead of the global `pickerColumn.focus()`.
29074
- */
29075
- async setFocus() {
29076
- if (this.assistiveFocusable) {
29077
- this.assistiveFocusable.focus();
29078
- }
29079
- }
29080
- connectedCallback() {
29081
- var _a;
29082
- this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
29083
- }
29084
- get activeItem() {
29085
- const { value } = this;
29086
- const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
29087
- return options.find((option) => {
29088
- /**
29089
- * If the whole picker column is disabled, the current value should appear active
29090
- * If the current value item is specifically disabled, it should not appear active
29091
- */
29092
- if (!this.disabled && option.disabled) {
29093
- return false;
29094
- }
29095
- return option.value === value;
29096
- });
29097
- }
29098
- render() {
29099
- const { color, disabled, isActive, numericInput } = this;
29100
- const mode = getIonMode$1(this);
29101
- return (hAsync(Host, { key: '234c96a501d7ac413b9b0ea56b33017681e25b40', class: createColorClasses$1(color, {
29102
- [mode]: true,
29103
- ['picker-column-active']: isActive,
29104
- ['picker-column-numeric-input']: numericInput,
29105
- ['picker-column-disabled']: disabled,
29106
- }) }, hAsync("slot", { key: '9dc15ea0601ddd2cb2e0a745e91e036a8bd96f8b', name: "prefix" }), hAsync("div", { key: 'de4fe28ee4bc46b7c0420d6ab0df0e7809443da9', class: "picker-opts", ref: (el) => {
29107
- this.scrollEl = el;
29108
- }, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, hAsync("div", { key: '5297617462cc30e9444039ae032d8bdf718349af', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '55ea39ef867bcb1a11a912d52ecd20cb886c5fb3', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '3496730ce6182ebfd33e0ee4bafc130feb575a31', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '44c3628aa957d60f799dc7019f72fe8b676c7843' }), hAsync("div", { key: '5a1809f6c949678a67e0d4b5bfe93ea335c0161d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '98fd57f1c66dbaebc2db2dd5da142671b3159fd1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '85590708abddfa885994e549deac64866fec938f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'bb7e674f543696a80fcbfb1f68f2e975826898a6', name: "suffix" })));
29109
- }
29110
- get el() { return getElement(this); }
29111
- static get watchers() { return {
29112
- "aria-label": [{
29113
- "ariaLabelChanged": 0
29114
- }],
29115
- "value": [{
29116
- "valueChange": 0
29117
- }]
29118
- }; }
29119
- static get style() { return pickerColumnCss(); }
29120
- static get cmpMeta() { return {
29121
- "$flags$": 265,
29122
- "$tagName$": "ion-picker-column",
29123
- "$members$": {
29124
- "disabled": [4],
29125
- "value": [1032],
29126
- "color": [513],
29127
- "numericInput": [4, "numeric-input"],
29128
- "ariaLabel": [32],
29129
- "isActive": [32],
29130
- "scrollActiveItemIntoView": [64],
29131
- "setValue": [64],
29132
- "setFocus": [64]
29133
- },
29134
- "$listeners$": undefined,
29135
- "$lazyBundleId$": "-",
29136
- "$attrsToReflect$": [["color", "color"]]
29137
- }; }
29138
- }
29139
- const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
29140
-
29141
- const pickerColumnIosCss = () => `.picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}.picker-opt{inset-inline-start:0}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:20px;line-height:42px;pointer-events:none}.picker-opt{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-webkit-transform-origin:center center;transform-origin:center center;height:46px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:20px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}:host-context([dir=rtl]) .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}[dir=rtl] .picker-opt{-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}@supports selector(:dir(rtl)){.picker-opt:dir(rtl){-webkit-transform-origin:calc(100% - center) center;transform-origin:calc(100% - center) center}}`;
29142
-
29143
- const pickerColumnMdCss = () => `.picker-col{display:-ms-flexbox;display:flex;position:relative;-ms-flex:1;flex:1;-ms-flex-pack:center;justify-content:center;height:100%;-webkit-box-sizing:content-box;box-sizing:content-box;contain:content}.picker-opts{position:relative;-ms-flex:1;flex:1;max-width:100%}.picker-opt{top:0;display:block;position:absolute;width:100%;border:0;text-align:center;text-overflow:ellipsis;white-space:nowrap;contain:strict;overflow:hidden;will-change:transform}.picker-opt{inset-inline-start:0}.picker-opt.picker-opt-disabled{pointer-events:none}.picker-opt-disabled{opacity:0}.picker-opts-left{-ms-flex-pack:start;justify-content:flex-start}.picker-opts-right{-ms-flex-pack:end;justify-content:flex-end}.picker-opt:active,.picker-opt:focus{outline:none}.picker-prefix{position:relative;-ms-flex:1;flex:1;text-align:end;white-space:nowrap}.picker-suffix{position:relative;-ms-flex:1;flex:1;text-align:start;white-space:nowrap}.picker-col{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:0;padding-bottom:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.picker-prefix,.picker-suffix,.picker-opts{top:77px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;color:inherit;font-size:22px;line-height:42px;pointer-events:none}.picker-opt{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;height:43px;-webkit-transition-timing-function:ease-out;transition-timing-function:ease-out;background:transparent;color:inherit;font-size:22px;line-height:42px;-webkit-backface-visibility:hidden;backface-visibility:hidden;pointer-events:auto}.picker-prefix,.picker-suffix,.picker-opt.picker-opt-selected{color:var(--ion-color-primary, #0054e9)}`;
29144
-
29145
- /**
29146
- * @internal
29147
- */
29148
- class PickerColumnCmp {
29149
- constructor(hostRef) {
29150
- registerInstance(this, hostRef);
29151
- this.ionPickerColChange = createEvent(this, "ionPickerColChange", 7);
29152
- this.optHeight = 0;
29153
- this.rotateFactor = 0;
29154
- this.scaleFactor = 1;
29155
- this.velocity = 0;
29156
- this.y = 0;
29157
- this.noAnimate = true;
29158
- // `colDidChange` is a flag that gets set when the column is changed
29159
- // dynamically. When this flag is set, the column will refresh
29160
- // after the component re-renders to incorporate the new column data.
29161
- // This is necessary because `this.refresh` queries for the option elements,
29162
- // so it needs to wait for the latest elements to be available in the DOM.
29163
- // Ex: column is created with 3 options. User updates the column data
29164
- // to have 5 options. The column will still think it only has 3 options.
29165
- this.colDidChange = false;
29166
- }
29167
- colChanged() {
29168
- this.colDidChange = true;
29169
- }
29170
- async connectedCallback() {
29171
- let pickerRotateFactor = 0;
29172
- let pickerScaleFactor = 0.81;
29173
- const mode = getIonMode$1(this);
29174
- if (mode === 'ios') {
29175
- pickerRotateFactor = -0.46;
29176
- pickerScaleFactor = 1;
29177
- }
29178
- this.rotateFactor = pickerRotateFactor;
29179
- this.scaleFactor = pickerScaleFactor;
29180
- this.gesture = (await Promise.resolve().then(function () { return index; })).createGesture({
29181
- el: this.el,
29182
- gestureName: 'picker-swipe',
29183
- gesturePriority: 100,
29184
- threshold: 0,
29185
- passive: false,
29186
- onStart: (ev) => this.onStart(ev),
29187
- onMove: (ev) => this.onMove(ev),
29188
- onEnd: (ev) => this.onEnd(ev),
29189
- });
29190
- this.gesture.enable();
29191
- // Options have not been initialized yet
29192
- // Animation must be disabled through the `noAnimate` flag
29193
- // Otherwise, the options will render
29194
- // at the top of the column and transition down
29195
- this.tmrId = setTimeout(() => {
29196
- this.noAnimate = false;
29197
- // After initialization, `refresh()` will be called
29198
- // At this point, animation will be enabled. The options will
29199
- // animate as they are being selected.
29200
- this.refresh(true);
29201
- }, 250);
29202
- }
29203
- componentDidLoad() {
29204
- this.onDomChange();
29205
- }
29206
- componentDidUpdate() {
29207
- // Options may have changed since last update.
29208
- if (this.colDidChange) {
29209
- // Animation must be disabled through the `onDomChange` parameter.
29210
- // Otherwise, the recently added options will render
29211
- // at the top of the column and transition down
29212
- this.onDomChange(true, false);
29213
- this.colDidChange = false;
29214
- }
29215
- }
29216
- disconnectedCallback() {
29217
- if (this.rafId !== undefined)
29218
- cancelAnimationFrame(this.rafId);
29219
- if (this.tmrId)
29220
- clearTimeout(this.tmrId);
29221
- if (this.gesture) {
29222
- this.gesture.destroy();
29223
- this.gesture = undefined;
29224
- }
29225
- }
29226
- emitColChange() {
29227
- this.ionPickerColChange.emit(this.col);
29228
- }
29229
- setSelected(selectedIndex, duration) {
29230
- // if there is a selected index, then figure out it's y position
29231
- // if there isn't a selected index, then just use the top y position
29232
- const y = selectedIndex > -1 ? -(selectedIndex * this.optHeight) : 0;
29233
- this.velocity = 0;
29234
- // set what y position we're at
29235
- if (this.rafId !== undefined)
29236
- cancelAnimationFrame(this.rafId);
29237
- this.update(y, duration, true);
29238
- this.emitColChange();
29239
- }
29240
- update(y, duration, saveY) {
29241
- if (!this.optsEl) {
29242
- return;
29243
- }
29244
- // ensure we've got a good round number :)
29245
- let translateY = 0;
29246
- let translateZ = 0;
29247
- const { col, rotateFactor } = this;
29248
- const prevSelected = col.selectedIndex;
29249
- const selectedIndex = (col.selectedIndex = this.indexForY(-y));
29250
- const durationStr = duration === 0 ? '' : duration + 'ms';
29251
- const scaleStr = `scale(${this.scaleFactor})`;
29252
- const children = this.optsEl.children;
29253
- for (let i = 0; i < children.length; i++) {
29254
- const button = children[i];
29255
- const opt = col.options[i];
29256
- const optOffset = i * this.optHeight + y;
29257
- let transform = '';
29258
- if (rotateFactor !== 0) {
29259
- const rotateX = optOffset * rotateFactor;
29260
- if (Math.abs(rotateX) <= 90) {
29261
- translateY = 0;
29262
- translateZ = 90;
29263
- transform = `rotateX(${rotateX}deg) `;
29264
- }
29265
- else {
29266
- translateY = -9999;
29267
- }
29268
- }
29269
- else {
29270
- translateZ = 0;
29271
- translateY = optOffset;
29272
- }
29273
- const selected = selectedIndex === i;
29274
- transform += `translate3d(0px,${translateY}px,${translateZ}px) `;
29275
- if (this.scaleFactor !== 1 && !selected) {
29276
- transform += scaleStr;
29277
- }
29278
- // Update transition duration
29279
- if (this.noAnimate) {
29280
- opt.duration = 0;
29281
- button.style.transitionDuration = '';
29282
- }
29283
- else if (duration !== opt.duration) {
29284
- opt.duration = duration;
29285
- button.style.transitionDuration = durationStr;
29286
- }
29287
- // Update transform
29288
- if (transform !== opt.transform) {
29289
- opt.transform = transform;
29290
- }
29291
- button.style.transform = transform;
29292
- /**
29293
- * Ensure that the select column
29294
- * item has the selected class
29295
- */
29296
- opt.selected = selected;
29297
- if (selected) {
29298
- button.classList.add(PICKER_OPT_SELECTED);
29299
- }
29300
- else {
29301
- button.classList.remove(PICKER_OPT_SELECTED);
29302
- }
29303
- }
29304
- this.col.prevSelected = prevSelected;
29305
- if (saveY) {
29306
- this.y = y;
29307
- }
29308
- if (this.lastIndex !== selectedIndex) {
29309
- // have not set a last index yet
29310
- hapticSelectionChanged();
29311
- this.lastIndex = selectedIndex;
29312
- }
29313
- }
29314
- decelerate() {
29315
- if (this.velocity !== 0) {
29316
- // still decelerating
29317
- this.velocity *= DECELERATION_FRICTION;
29318
- // do not let it go slower than a velocity of 1
29319
- this.velocity = this.velocity > 0 ? Math.max(this.velocity, 1) : Math.min(this.velocity, -1);
29320
- let y = this.y + this.velocity;
29321
- if (y > this.minY) {
29322
- // whoops, it's trying to scroll up farther than the options we have!
29323
- y = this.minY;
29324
- this.velocity = 0;
29325
- }
29326
- else if (y < this.maxY) {
29327
- // gahh, it's trying to scroll down farther than we can!
29328
- y = this.maxY;
29329
- this.velocity = 0;
29330
- }
29331
- this.update(y, 0, true);
29332
- const notLockedIn = Math.round(y) % this.optHeight !== 0 || Math.abs(this.velocity) > 1;
29333
- if (notLockedIn) {
29334
- // isn't locked in yet, keep decelerating until it is
29335
- this.rafId = requestAnimationFrame(() => this.decelerate());
29336
- }
29337
- else {
29338
- this.velocity = 0;
29339
- this.emitColChange();
29340
- hapticSelectionEnd();
29341
- }
29342
- }
29343
- else if (this.y % this.optHeight !== 0) {
29344
- // needs to still get locked into a position so options line up
29345
- const currentPos = Math.abs(this.y % this.optHeight);
29346
- // create a velocity in the direction it needs to scroll
29347
- this.velocity = currentPos > this.optHeight / 2 ? 1 : -1;
29348
- this.decelerate();
29349
- }
29350
- }
29351
- indexForY(y) {
29352
- return Math.min(Math.max(Math.abs(Math.round(y / this.optHeight)), 0), this.col.options.length - 1);
29353
- }
29354
- onStart(detail) {
29355
- // We have to prevent default in order to block scrolling under the picker
29356
- // but we DO NOT have to stop propagation, since we still want
29357
- // some "click" events to capture
29358
- if (detail.event.cancelable) {
29359
- detail.event.preventDefault();
29360
- }
29361
- detail.event.stopPropagation();
29362
- hapticSelectionStart();
29363
- // reset everything
29364
- if (this.rafId !== undefined)
29365
- cancelAnimationFrame(this.rafId);
29366
- const options = this.col.options;
29367
- let minY = options.length - 1;
29368
- let maxY = 0;
29369
- for (let i = 0; i < options.length; i++) {
29370
- if (!options[i].disabled) {
29371
- minY = Math.min(minY, i);
29372
- maxY = Math.max(maxY, i);
29373
- }
29374
- }
29375
- this.minY = -(minY * this.optHeight);
29376
- this.maxY = -(maxY * this.optHeight);
29377
- }
29378
- onMove(detail) {
29379
- if (detail.event.cancelable) {
29380
- detail.event.preventDefault();
29381
- }
29382
- detail.event.stopPropagation();
29383
- // update the scroll position relative to pointer start position
29384
- let y = this.y + detail.deltaY;
29385
- if (y > this.minY) {
29386
- // scrolling up higher than scroll area
29387
- y = Math.pow(y, 0.8);
29388
- this.bounceFrom = y;
29389
- }
29390
- else if (y < this.maxY) {
29391
- // scrolling down below scroll area
29392
- y += Math.pow(this.maxY - y, 0.9);
29393
- this.bounceFrom = y;
29394
- }
29395
- else {
29396
- this.bounceFrom = 0;
29238
+ }
29397
29239
  }
29398
- this.update(y, 0, false);
29399
29240
  }
29400
- onEnd(detail) {
29401
- if (this.bounceFrom > 0) {
29402
- // bounce back up
29403
- this.update(this.minY, 100, true);
29404
- this.emitColChange();
29405
- return;
29241
+ /** @internal */
29242
+ async scrollActiveItemIntoView(smooth = false) {
29243
+ const activeEl = this.activeItem;
29244
+ if (activeEl) {
29245
+ this.centerPickerItemInView(activeEl, smooth, false);
29406
29246
  }
29407
- else if (this.bounceFrom < 0) {
29408
- // bounce back down
29409
- this.update(this.maxY, 100, true);
29410
- this.emitColChange();
29247
+ }
29248
+ /**
29249
+ * Sets the value prop and fires the ionChange event.
29250
+ * This is used when we need to fire ionChange from
29251
+ * user-generated events that cannot be caught with normal
29252
+ * input/change event listeners.
29253
+ * @internal
29254
+ */
29255
+ async setValue(value) {
29256
+ if (this.disabled === true || this.value === value) {
29411
29257
  return;
29412
29258
  }
29413
- this.velocity = clamp(-MAX_PICKER_SPEED, detail.velocityY * 23, MAX_PICKER_SPEED);
29414
- if (this.velocity === 0 && detail.deltaY === 0) {
29415
- const opt = detail.event.target.closest('.picker-opt');
29416
- if (opt === null || opt === void 0 ? void 0 : opt.hasAttribute('opt-index')) {
29417
- this.setSelected(parseInt(opt.getAttribute('opt-index'), 10), TRANSITION_DURATION);
29418
- }
29419
- }
29420
- else {
29421
- this.y += detail.deltaY;
29422
- if (Math.abs(detail.velocityY) < 0.05) {
29423
- const isScrollingUp = detail.deltaY > 0;
29424
- const optHeightFraction = (Math.abs(this.y) % this.optHeight) / this.optHeight;
29425
- if (isScrollingUp && optHeightFraction > 0.5) {
29426
- this.velocity = Math.abs(this.velocity) * -1;
29427
- }
29428
- else if (!isScrollingUp && optHeightFraction <= 0.5) {
29429
- this.velocity = Math.abs(this.velocity);
29430
- }
29431
- }
29432
- this.decelerate();
29259
+ this.value = value;
29260
+ this.ionChange.emit({ value });
29261
+ }
29262
+ /**
29263
+ * Sets focus on the scrollable container within the picker column.
29264
+ * Use this method instead of the global `pickerColumn.focus()`.
29265
+ */
29266
+ async setFocus() {
29267
+ if (this.assistiveFocusable) {
29268
+ this.assistiveFocusable.focus();
29433
29269
  }
29434
29270
  }
29435
- refresh(forceRefresh, animated) {
29271
+ connectedCallback() {
29436
29272
  var _a;
29437
- let min = this.col.options.length - 1;
29438
- let max = 0;
29439
- const options = this.col.options;
29440
- for (let i = 0; i < options.length; i++) {
29441
- if (!options[i].disabled) {
29442
- min = Math.min(min, i);
29443
- max = Math.max(max, i);
29444
- }
29445
- }
29446
- /**
29447
- * Only update selected value if column has a
29448
- * velocity of 0. If it does not, then the
29449
- * column is animating might land on
29450
- * a value different than the value at
29451
- * selectedIndex
29452
- */
29453
- if (this.velocity !== 0) {
29454
- return;
29455
- }
29456
- const selectedIndex = clamp(min, (_a = this.col.selectedIndex) !== null && _a !== void 0 ? _a : 0, max);
29457
- if (this.col.prevSelected !== selectedIndex || forceRefresh) {
29458
- const y = selectedIndex * this.optHeight * -1;
29459
- const duration = animated ? TRANSITION_DURATION : 0;
29460
- this.velocity = 0;
29461
- this.update(y, duration, true);
29462
- }
29273
+ this.ariaLabel = (_a = this.el.getAttribute('aria-label')) !== null && _a !== void 0 ? _a : 'Select a value';
29463
29274
  }
29464
- onDomChange(forceRefresh, animated) {
29465
- const colEl = this.optsEl;
29466
- if (colEl) {
29467
- // DOM READ
29468
- // We perfom a DOM read over a rendered item, this needs to happen after the first render or after the column has changed
29469
- this.optHeight = colEl.firstElementChild ? colEl.firstElementChild.clientHeight : 0;
29470
- }
29471
- this.refresh(forceRefresh, animated);
29275
+ get activeItem() {
29276
+ const { value } = this;
29277
+ const options = Array.from(this.el.querySelectorAll('ion-picker-column-option'));
29278
+ return options.find((option) => {
29279
+ /**
29280
+ * If the whole picker column is disabled, the current value should appear active
29281
+ * If the current value item is specifically disabled, it should not appear active
29282
+ */
29283
+ if (!this.disabled && option.disabled) {
29284
+ return false;
29285
+ }
29286
+ return option.value === value;
29287
+ });
29472
29288
  }
29473
29289
  render() {
29474
- const col = this.col;
29290
+ const { color, disabled, isActive, numericInput } = this;
29475
29291
  const mode = getIonMode$1(this);
29476
- return (hAsync(Host, { key: '86125e95f18837dfd021db01777d72a1562d8ee3', class: Object.assign({ [mode]: true, 'picker-col': true, 'picker-opts-left': this.col.align === 'left', 'picker-opts-right': this.col.align === 'right' }, getClassMap(col.cssClass)), style: {
29477
- 'max-width': this.col.columnWidth,
29478
- } }, col.prefix && (hAsync("div", { key: 'b0f3d39e0bd128781066ffefb7a1e40d12a9e76d', class: "picker-prefix", style: { width: col.prefixWidth } }, col.prefix)), hAsync("div", { key: '0b106ac4d56916eaaa7f09d1b68348b3754b7bba', class: "picker-opts", style: { maxWidth: col.optionsWidth }, ref: (el) => (this.optsEl = el) }, col.options.map((o, index) => (hAsync("button", { "aria-label": o.ariaLabel, class: { 'picker-opt': true, 'picker-opt-disabled': !!o.disabled }, "opt-index": index }, o.text)))), col.suffix && (hAsync("div", { key: '00ff2f9dbb4561787e5a5223327c6a2a33f8362e', class: "picker-suffix", style: { width: col.suffixWidth } }, col.suffix))));
29292
+ return (hAsync(Host, { key: '234c96a501d7ac413b9b0ea56b33017681e25b40', class: createColorClasses$1(color, {
29293
+ [mode]: true,
29294
+ ['picker-column-active']: isActive,
29295
+ ['picker-column-numeric-input']: numericInput,
29296
+ ['picker-column-disabled']: disabled,
29297
+ }) }, hAsync("slot", { key: '9dc15ea0601ddd2cb2e0a745e91e036a8bd96f8b', name: "prefix" }), hAsync("div", { key: 'de4fe28ee4bc46b7c0420d6ab0df0e7809443da9', class: "picker-opts", ref: (el) => {
29298
+ this.scrollEl = el;
29299
+ }, role: "slider", tabindex: this.disabled ? undefined : 0, "aria-label": this.ariaLabel, "aria-valuemin": 0, "aria-valuemax": 0, "aria-valuenow": 0, "aria-valuetext": this.getOptionValueText(this.activeItem), "aria-orientation": "vertical", onKeyDown: (ev) => this.onKeyDown(ev) }, hAsync("div", { key: '5297617462cc30e9444039ae032d8bdf718349af', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '55ea39ef867bcb1a11a912d52ecd20cb886c5fb3', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '3496730ce6182ebfd33e0ee4bafc130feb575a31', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("slot", { key: '44c3628aa957d60f799dc7019f72fe8b676c7843' }), hAsync("div", { key: '5a1809f6c949678a67e0d4b5bfe93ea335c0161d', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '98fd57f1c66dbaebc2db2dd5da142671b3159fd1', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0"), hAsync("div", { key: '85590708abddfa885994e549deac64866fec938f', class: "picker-item-empty", "aria-hidden": "true" }, "\u00A0")), hAsync("slot", { key: 'bb7e674f543696a80fcbfb1f68f2e975826898a6', name: "suffix" })));
29479
29300
  }
29480
29301
  get el() { return getElement(this); }
29481
29302
  static get watchers() { return {
29482
- "col": [{
29483
- "colChanged": 0
29303
+ "aria-label": [{
29304
+ "ariaLabelChanged": 0
29305
+ }],
29306
+ "value": [{
29307
+ "valueChange": 0
29484
29308
  }]
29485
29309
  }; }
29486
- static get style() { return {
29487
- ios: pickerColumnIosCss(),
29488
- md: pickerColumnMdCss()
29489
- }; }
29310
+ static get style() { return pickerColumnCss(); }
29490
29311
  static get cmpMeta() { return {
29491
- "$flags$": 32,
29492
- "$tagName$": "ion-picker-legacy-column",
29312
+ "$flags$": 265,
29313
+ "$tagName$": "ion-picker-column",
29493
29314
  "$members$": {
29494
- "col": [16]
29315
+ "disabled": [4],
29316
+ "value": [1032],
29317
+ "color": [513],
29318
+ "numericInput": [4, "numeric-input"],
29319
+ "ariaLabel": [32],
29320
+ "isActive": [32],
29321
+ "scrollActiveItemIntoView": [64],
29322
+ "setValue": [64],
29323
+ "setFocus": [64]
29495
29324
  },
29496
29325
  "$listeners$": undefined,
29497
29326
  "$lazyBundleId$": "-",
29498
- "$attrsToReflect$": []
29327
+ "$attrsToReflect$": [["color", "color"]]
29499
29328
  }; }
29500
29329
  }
29501
- const PICKER_OPT_SELECTED = 'picker-opt-selected';
29502
- const DECELERATION_FRICTION = 0.97;
29503
- const MAX_PICKER_SPEED = 90;
29504
- const TRANSITION_DURATION = 150;
29330
+ const PICKER_ITEM_ACTIVE_CLASS = 'option-active';
29505
29331
 
29506
29332
  const pickerColumnOptionIosCss = () => `.picker-column-option-button{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;width:100%;height:34px;border:0px;outline:none;background:transparent;color:inherit;font-family:var(--ion-font-family, inherit);font-size:inherit;line-height:34px;text-align:inherit;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;overflow:hidden}:host(.option-disabled){opacity:0.4}:host(.option-disabled) .picker-column-option-button{cursor:default}`;
29507
29333
 
@@ -30698,9 +30524,9 @@ const mdLeaveAnimation$1 = (baseEl) => {
30698
30524
  .addAnimation([backdropAnimation, wrapperAnimation]);
30699
30525
  };
30700
30526
 
30701
- const popoverIosCss = () => `:host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host{--width:200px;--max-height:90%;--box-shadow:none;--backdrop-opacity:var(--ion-backdrop-opacity, 0.08)}:host(.popover-desktop){--box-shadow:0px 4px 16px 0px rgba(0, 0, 0, 0.12)}.popover-content{border-radius:10px}:host(.popover-desktop) .popover-content{border:0.5px solid var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.popover-arrow{display:block;position:absolute;width:20px;height:10px;overflow:hidden;z-index:11}.popover-arrow::after{top:3px;border-radius:3px;position:absolute;width:14px;height:14px;-webkit-transform:rotate(45deg);transform:rotate(45deg);background:var(--background);content:"";z-index:10}.popover-arrow::after{inset-inline-start:3px}:host(.popover-bottom) .popover-arrow{top:auto;bottom:-10px}:host(.popover-bottom) .popover-arrow::after{top:-6px}:host(.popover-side-left) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host(.popover-side-right) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host(.popover-side-top) .popover-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.popover-side-start) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host-context([dir=rtl]):host(.popover-side-start) .popover-arrow,:host-context([dir=rtl]).popover-side-start .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}@supports selector(:dir(rtl)){:host(.popover-side-start:dir(rtl)) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}}:host(.popover-side-end) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host-context([dir=rtl]):host(.popover-side-end) .popover-arrow,:host-context([dir=rtl]).popover-side-end .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}@supports selector(:dir(rtl)){:host(.popover-side-end:dir(rtl)) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}.popover-arrow,.popover-content{opacity:0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.popover-translucent) .popover-content,:host(.popover-translucent) .popover-arrow::after{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}`;
30527
+ const popoverIosCss = () => `:host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host(.select-popover-rich-content){--width:clamp(250px, calc(100vw - 40px), 400px)}:host{--width:200px;--max-height:90%;--box-shadow:none;--backdrop-opacity:var(--ion-backdrop-opacity, 0.08)}:host(.popover-desktop){--box-shadow:0px 4px 16px 0px rgba(0, 0, 0, 0.12)}.popover-content{border-radius:10px}:host(.popover-desktop) .popover-content{border:0.5px solid var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.popover-arrow{display:block;position:absolute;width:20px;height:10px;overflow:hidden;z-index:11}.popover-arrow::after{top:3px;border-radius:3px;position:absolute;width:14px;height:14px;-webkit-transform:rotate(45deg);transform:rotate(45deg);background:var(--background);content:"";z-index:10}.popover-arrow::after{inset-inline-start:3px}:host(.popover-bottom) .popover-arrow{top:auto;bottom:-10px}:host(.popover-bottom) .popover-arrow::after{top:-6px}:host(.popover-side-left) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host(.popover-side-right) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host(.popover-side-top) .popover-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.popover-side-start) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host-context([dir=rtl]):host(.popover-side-start) .popover-arrow,:host-context([dir=rtl]).popover-side-start .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}@supports selector(:dir(rtl)){:host(.popover-side-start:dir(rtl)) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}}:host(.popover-side-end) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host-context([dir=rtl]):host(.popover-side-end) .popover-arrow,:host-context([dir=rtl]).popover-side-end .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}@supports selector(:dir(rtl)){:host(.popover-side-end:dir(rtl)) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}.popover-arrow,.popover-content{opacity:0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.popover-translucent) .popover-content,:host(.popover-translucent) .popover-arrow::after{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}`;
30702
30528
 
30703
- const popoverMdCss = () => `:host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host{--width:250px;--max-height:90%;--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}.popover-content{border-radius:4px;-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]) .popover-content{-webkit-transform-origin:right top;transform-origin:right top}[dir=rtl] .popover-content{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.popover-content:dir(rtl){-webkit-transform-origin:right top;transform-origin:right top}}.popover-viewport{-webkit-transition-delay:100ms;transition-delay:100ms}.popover-wrapper{opacity:0}`;
30529
+ const popoverMdCss = () => `:host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host(.select-popover-rich-content){--width:clamp(250px, calc(100vw - 40px), 400px)}:host{--width:250px;--max-height:90%;--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}.popover-content{border-radius:4px;-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]) .popover-content{-webkit-transform-origin:right top;transform-origin:right top}[dir=rtl] .popover-content{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.popover-content:dir(rtl){-webkit-transform-origin:right top;transform-origin:right top}}.popover-viewport{-webkit-transition-delay:100ms;transition-delay:100ms}.popover-wrapper{opacity:0}`;
30704
30530
 
30705
30531
  // TODO(FW-2832): types
30706
30532
  /**
@@ -30924,6 +30750,10 @@ class Popover {
30924
30750
  this.headerResizeObserver.disconnect();
30925
30751
  this.headerResizeObserver = undefined;
30926
30752
  }
30753
+ // Clean up aria-hidden if removed without dismiss() being called
30754
+ if (this.presented) {
30755
+ cleanupRootFocusTrapAccessibility();
30756
+ }
30927
30757
  }
30928
30758
  componentWillLoad() {
30929
30759
  var _a, _b;
@@ -31162,9 +30992,9 @@ class Popover {
31162
30992
  const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
31163
30993
  const desktop = isPlatform('desktop');
31164
30994
  const enableArrow = arrow && !parentPopover;
31165
- return (hAsync(Host, Object.assign({ key: '2edd8333c630efbce59071f8a383e4326e928dbc', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
30995
+ return (hAsync(Host, Object.assign({ key: 'd7f3aa2c2fa93a93585e3eda9e4a6d0daaa541be', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
31166
30996
  zIndex: `${20000 + this.overlayIndex}`,
31167
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && hAsync("ion-backdrop", { key: 'aac4e68b08197534375e8ea3f8c9ea0c10ab2af4', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: 'b7f4ebf57d4148b32856b0075d286f454be8de5d', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '607d94c28d73e8e957175a7c0f6e8a99ec4dcd53', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '4366a5a5de550c09895e923f345583508e1ec30c', class: "popover-content", part: "content" }, hAsync("slot", { key: 'eb7886fbc99c15b667b7d825d24f1c12d9380f03' })))));
30997
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && hAsync("ion-backdrop", { key: 'b87be2ef14219997b9c47dcbaf904eb770d0e057', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), hAsync("div", { key: 'e6243572faf1b871ae2b34923410b2a6638469f0', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && hAsync("div", { key: '3d4938c9d0764a644398e0e7a4361106da1bd926', class: "popover-arrow", part: "arrow" }), hAsync("div", { key: '24ad6d777828aad2881d56595693e6022fc9cb8e', class: "popover-content", part: "content" }, hAsync("slot", { key: '79f83df74a5c5e3dd7650f15c1aa50795b90a345' })))));
31168
30998
  }
31169
30999
  get el() { return getElement(this); }
31170
31000
  static get watchers() { return {
@@ -31275,7 +31105,7 @@ class ProgressBar {
31275
31105
  const mode = getIonMode$1(this);
31276
31106
  // If the progress is displayed as a solid bar.
31277
31107
  const progressSolid = buffer === 1;
31278
- return (hAsync(Host, { key: 'c859e48f3d24a458239e36d925e5dc003ed07c6b', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
31108
+ return (hAsync(Host, { key: 'd7476268ce53b6a4f425b7bc9f01d6935eb411c3', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: createColorClasses$1(color, {
31279
31109
  [mode]: true,
31280
31110
  [`progress-bar-${type}`]: true,
31281
31111
  'progress-paused': paused,
@@ -31460,7 +31290,7 @@ class Radio {
31460
31290
  const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
31461
31291
  const mode = getIonMode$1(this);
31462
31292
  const inItem = hostContext('ion-item', el);
31463
- return (hAsync(Host, { key: 'af5dc59ed528150872e907ed1036e3e2decba939', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
31293
+ return (hAsync(Host, { key: 'd9425b252ed38086420d91d5c680421d121c99f4', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: createColorClasses$1(color, {
31464
31294
  [mode]: true,
31465
31295
  'in-item': inItem,
31466
31296
  'radio-checked': checked,
@@ -31471,10 +31301,10 @@ class Radio {
31471
31301
  // Focus and active styling should not apply when the radio is in an item
31472
31302
  'ion-activatable': !inItem,
31473
31303
  'ion-focusable': !inItem,
31474
- }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: '1312aba3259a87fe23a6911cdfa477e309469c8b', class: "radio-wrapper" }, hAsync("div", { key: 'b342aa27e240a300836d2a135658d346b95daf09', class: {
31304
+ }), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, hAsync("label", { key: 'de391fca2aa0b681af5c1d089121596c46e68271', class: "radio-wrapper" }, hAsync("div", { key: '44e4c71645f86a9e73ad58c0e8b41c0558b920f6', class: {
31475
31305
  'label-text-wrapper': true,
31476
31306
  'label-text-wrapper-hidden': !hasLabel,
31477
- }, part: "label" }, hAsync("slot", { key: '0a4613d29aa783d1882cf889377f7e4fd4fea51d' })), hAsync("div", { key: '191faea79dc4cd8befc4b873f5bd9f5af8ca2acc', class: "native-wrapper" }, this.renderRadioControl()))));
31307
+ }, part: "label" }, hAsync("slot", { key: '589d7c1b45a1918b5811663daa8f30788e7729f8' })), hAsync("div", { key: '0f61a17b195582d6c9a0c597cd40e6629256e479', class: "native-wrapper" }, this.renderRadioControl()))));
31478
31308
  }
31479
31309
  get el() { return getElement(this); }
31480
31310
  static get watchers() { return {
@@ -31493,7 +31323,7 @@ class Radio {
31493
31323
  "color": [513],
31494
31324
  "name": [1],
31495
31325
  "disabled": [4],
31496
- "value": [8],
31326
+ "value": [520],
31497
31327
  "labelPlacement": [1, "label-placement"],
31498
31328
  "justify": [1],
31499
31329
  "alignment": [1],
@@ -31504,7 +31334,7 @@ class Radio {
31504
31334
  },
31505
31335
  "$listeners$": undefined,
31506
31336
  "$lazyBundleId$": "-",
31507
- "$attrsToReflect$": [["color", "color"]]
31337
+ "$attrsToReflect$": [["color", "color"], ["value", "value"]]
31508
31338
  }; }
31509
31339
  }
31510
31340
  let radioButtonIds = 0;
@@ -32569,7 +32399,7 @@ class Range {
32569
32399
  const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
32570
32400
  const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
32571
32401
  renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
32572
- return (hAsync(Host, { key: 'f8063d1234fb113fe55a7902845dd4b4da8b1edb', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
32402
+ return (hAsync(Host, { key: 'cd26f0187c0d37c7eb9df923f75c8a0f57c19ab6', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses$1(this.color, {
32573
32403
  [mode]: true,
32574
32404
  'in-item': inItem,
32575
32405
  'range-disabled': disabled,
@@ -32583,10 +32413,10 @@ class Range {
32583
32413
  'range-item-end-adjustment': needsEndAdjustment,
32584
32414
  'range-value-min': valueAtMin,
32585
32415
  'range-value-max': valueAtMax,
32586
- }) }, hAsync("label", { key: 'beead65ab01e3b18e4be59c0ee8ac6ebf32aad7c', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: '03633c689d9d2e4c50a2131bcd560329df49e314', class: {
32416
+ }) }, hAsync("label", { key: '90224fd24b0e625a17e7972feff73a0ac31e093d', class: "range-wrapper", id: "range-label" }, hAsync("div", { key: 'e07b9fa10983249c425eec26b741f0f628daf2b2', class: {
32587
32417
  'label-text-wrapper': true,
32588
32418
  'label-text-wrapper-hidden': !hasLabel,
32589
- }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: 'c066804263ab6ae7393f8dcc51184b7198844ffa', class: "native-wrapper" }, hAsync("slot", { key: '7e8ea224d72b3e965dd948bee7e45c1a096b6899', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: '21f242f6f60ff3adce6a2d90b2d4dac1ceaf6624', name: "end" })))));
32419
+ }, part: "label" }, label !== undefined ? hAsync("div", { class: "label-text" }, label) : hAsync("slot", { name: "label" })), hAsync("div", { key: '9e252f1190838fbae46e724bf665f9b1943600a4', class: "native-wrapper" }, hAsync("slot", { key: '950697dd9636da340de659812daa91fff50e5345', name: "start" }), this.renderRangeSlider(), hAsync("slot", { key: 'd3fce46b29db275af71e6149e725967839ec12b0', name: "end" })))));
32590
32420
  }
32591
32421
  get el() { return getElement(this); }
32592
32422
  static get watchers() { return {
@@ -33657,7 +33487,7 @@ class Refresher {
33657
33487
  }
33658
33488
  render() {
33659
33489
  const mode = getIonMode$1(this);
33660
- return (hAsync(Host, { key: '80fa313b0d77161680836bdd6aa334d02c549b41', slot: "fixed", class: {
33490
+ return (hAsync(Host, { key: '1dd475095f76491206644828cf89fc6d2ec276d1', slot: "fixed", class: {
33661
33491
  [mode]: true,
33662
33492
  // Used internally for styling
33663
33493
  [`refresher-${mode}`]: true,
@@ -33883,7 +33713,7 @@ class RefresherContent {
33883
33713
  const pullingIcon = this.pullingIcon;
33884
33714
  const hasSpinner = pullingIcon != null && SPINNERS[pullingIcon] !== undefined;
33885
33715
  const mode = getIonMode$1(this);
33886
- return (hAsync(Host, { key: '4add42b9fdfded359d1b054d04c2c6ff48e028c8', class: mode }, hAsync("div", { key: '45d4e4e0adfed7f96dd1849767aa2cde947de044', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: '6bd6c8ef5bf6e10699eec3bd8646431bfe1077a0', class: "refresher-pulling-icon" }, hAsync("div", { key: '852d20414da53352c8e58bc627e0fda38eff97cb', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: '0dde3578a80cc4b77a07c4d1db1af80c7eb10c27', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: 'c71dbfcf416a19c30fed38f722ebf0358c2181dd', class: "arrow-container" }, hAsync("ion-icon", { key: 'fa7c2cf624e7a9c41964e66cabc88c594da6d1fd', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: '3dd68c9968b421c379d1c4349ba619ee0a189c6d', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: 'f83bceceae4fa8245f91939fb6db589a595e975b', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: '98e22ceb0f7883e871f815f6199f5cb313e2e086', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: 'faabe8a9b61c02a00994ef978bb82b9ba4537214', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: '029a0c073ee1a07f01211e12ba2abc985cf21ed7', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
33716
+ return (hAsync(Host, { key: 'ec378d6a302be697c12c4f973a57c6ad2ada070f', class: mode }, hAsync("div", { key: '0055f98f8c5a1ed7979dc8146ec1f82a575860c7', class: "refresher-pulling" }, this.pullingIcon && hasSpinner && (hAsync("div", { key: '4f88468e26370df6889e72aa54ebb395ebf3757d', class: "refresher-pulling-icon" }, hAsync("div", { key: '05b3f8679576aaa6c2d84d60df6629a392df29e2', class: "spinner-arrow-container" }, hAsync("ion-spinner", { key: '0bf6ceea416ce1140c0f10a5bede063cae7054f4', name: this.pullingIcon, paused: true }), mode === 'md' && this.pullingIcon === 'circular' && (hAsync("div", { key: 'b71ede8455837968218edae28504e5e14bbc1f5c', class: "arrow-container" }, hAsync("ion-icon", { key: '30b808288d23d3eac681b1225cd8392fdacfefe1', icon: caretBackSharp, "aria-hidden": "true" })))))), this.pullingIcon && !hasSpinner && (hAsync("div", { key: 'fee1ae7e57ef8a02f5654808dff9dca3002b6702', class: "refresher-pulling-icon" }, hAsync("ion-icon", { key: '55b34a98028adb497fbc2ac66bdb3d5ae5b1705b', icon: this.pullingIcon, lazy: false, "aria-hidden": "true" }))), this.pullingText !== undefined && this.renderPullingText()), hAsync("div", { key: 'ef8f987daa8060cb6f8fd83c0864095042b9eecf', class: "refresher-refreshing" }, this.refreshingSpinner && (hAsync("div", { key: 'cd6fe0e81b34eeae11478fcc8a42044bff6f7a52', class: "refresher-refreshing-icon" }, hAsync("ion-spinner", { key: '9cd778229582b538d54589c4d8e4d470efb64aad', name: this.refreshingSpinner }))), this.refreshingText !== undefined && this.renderRefreshingText())));
33887
33717
  }
33888
33718
  get el() { return getElement(this); }
33889
33719
  static get cmpMeta() { return {
@@ -33924,7 +33754,7 @@ class Reorder {
33924
33754
  render() {
33925
33755
  const mode = getIonMode$1(this);
33926
33756
  const reorderIcon = mode === 'ios' ? reorderThreeOutline : reorderTwoSharp;
33927
- return (hAsync(Host, { key: 'b869db61ca6393cf1476f2111a66b387b567c6d1', class: mode }, hAsync("slot", { key: 'a78edd1776835282b8b5c841377018f36c83296c' }, hAsync("ion-icon", { key: '7fb067c47bbb9a7258e5063f028282cc097d0f94', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
33757
+ return (hAsync(Host, { key: '4d35db30b5b3df2020d2212abb3cfac94f9bc2b8', class: mode }, hAsync("slot", { key: '68a565ae4a47f6a9f5d6ba845b596fdfa629ece8' }, hAsync("ion-icon", { key: '168fb0f8eb9c02329274488900fcdb05d44cb895', icon: reorderIcon, lazy: false, class: "reorder-icon", part: "icon", "aria-hidden": "true" }))));
33928
33758
  }
33929
33759
  get el() { return getElement(this); }
33930
33760
  static get style() { return {
@@ -34195,7 +34025,7 @@ class ReorderGroup {
34195
34025
  }
34196
34026
  render() {
34197
34027
  const mode = getIonMode$1(this);
34198
- return (hAsync(Host, { key: '9527bbdedaab63d31f562c874a7332ea60c4b47b', class: {
34028
+ return (hAsync(Host, { key: '3afdc6a6c81bba2f88ea523d4b73c6fccff1b9ec', class: {
34199
34029
  [mode]: true,
34200
34030
  'reorder-enabled': !this.disabled,
34201
34031
  'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
@@ -34313,7 +34143,7 @@ class RippleEffect {
34313
34143
  }
34314
34144
  render() {
34315
34145
  const mode = getIonMode$1(this);
34316
- return (hAsync(Host, { key: '3b59cbb44741569a7350f9638b4392add673b6f1', role: "presentation", class: {
34146
+ return (hAsync(Host, { key: '5e88b5225414e29883256c86f111ded5bdf2ef91', role: "presentation", class: {
34317
34147
  [mode]: true,
34318
34148
  unbounded: this.unbounded,
34319
34149
  } }));
@@ -35447,10 +35277,10 @@ class RouterLink {
35447
35277
  rel: this.rel,
35448
35278
  target: this.target,
35449
35279
  };
35450
- return (hAsync(Host, { key: '8372835161d507c7b821b7536c55f912eb6ce704', onClick: this.onClick, class: createColorClasses$1(this.color, {
35280
+ return (hAsync(Host, { key: '6d5fdfa0dcf1eb216173bcc53f1f4d625f3ec551', onClick: this.onClick, class: createColorClasses$1(this.color, {
35451
35281
  [mode]: true,
35452
35282
  'ion-activatable': true,
35453
- }) }, hAsync("a", Object.assign({ key: '315966e14a17760f3f64197e8315200039787897' }, attrs), hAsync("slot", { key: '95fc1697b884225e85e647dddcaa8f4af8b9a979' }))));
35283
+ }) }, hAsync("a", Object.assign({ key: '85796b7b48581fe9830ba1102dad7d1069de4e17' }, attrs), hAsync("slot", { key: '0f93b0da3ec4ae8f50f624f9e7bed87d13d712d0' }))));
35454
35284
  }
35455
35285
  static get style() { return routerLinkCss(); }
35456
35286
  static get cmpMeta() { return {
@@ -35489,10 +35319,11 @@ class RouterOutlet {
35489
35319
  */
35490
35320
  this.animated = true;
35491
35321
  }
35322
+ swipeGestureChanged() {
35323
+ this.updateGestureEnabled();
35324
+ }
35492
35325
  swipeHandlerChanged() {
35493
- if (this.gesture) {
35494
- this.gesture.enable(this.swipeHandler !== undefined);
35495
- }
35326
+ this.updateGestureEnabled();
35496
35327
  }
35497
35328
  async connectedCallback() {
35498
35329
  const onStart = () => {
@@ -35532,11 +35363,21 @@ class RouterOutlet {
35532
35363
  this.gestureOrAnimationInProgress = false;
35533
35364
  }
35534
35365
  });
35535
- this.swipeHandlerChanged();
35366
+ if (this.swipeGesture === undefined) {
35367
+ this.swipeGesture = config.getBoolean('swipeBackEnabled', this.mode === 'ios');
35368
+ }
35369
+ else {
35370
+ this.updateGestureEnabled();
35371
+ }
35536
35372
  }
35537
35373
  componentWillLoad() {
35538
35374
  this.ionNavWillLoad.emit();
35539
35375
  }
35376
+ updateGestureEnabled() {
35377
+ if (this.gesture) {
35378
+ this.gesture.enable(this.swipeHandler !== undefined && this.swipeGesture === true);
35379
+ }
35380
+ }
35540
35381
  disconnectedCallback() {
35541
35382
  if (this.gesture) {
35542
35383
  this.gesture.destroy();
@@ -35647,10 +35488,13 @@ class RouterOutlet {
35647
35488
  return true;
35648
35489
  }
35649
35490
  render() {
35650
- return hAsync("slot", { key: '386c41745b61daba161cf75063da97fe29ba36cb' });
35491
+ return hAsync("slot", { key: 'ce09e6fbba7b0a2276cdde5245bb37c9a162c1c7' });
35651
35492
  }
35652
35493
  get el() { return getElement(this); }
35653
35494
  static get watchers() { return {
35495
+ "swipeGesture": [{
35496
+ "swipeGestureChanged": 0
35497
+ }],
35654
35498
  "swipeHandler": [{
35655
35499
  "swipeHandlerChanged": 0
35656
35500
  }]
@@ -35664,6 +35508,7 @@ class RouterOutlet {
35664
35508
  "delegate": [16],
35665
35509
  "animated": [4],
35666
35510
  "animation": [16],
35511
+ "swipeGesture": [1028, "swipe-gesture"],
35667
35512
  "swipeHandler": [16],
35668
35513
  "commit": [64],
35669
35514
  "setRouteId": [64],
@@ -35682,7 +35527,7 @@ class Row {
35682
35527
  registerInstance(this, hostRef);
35683
35528
  }
35684
35529
  render() {
35685
- return (hAsync(Host, { key: '8ba906a8cbea060a79ed658c9bf34906f0c11d38', class: getIonMode$1(this) }, hAsync("slot", { key: 'd1009176f45b588fa52c7d9eb336f3c6d3214bb8' })));
35530
+ return (hAsync(Host, { key: 'a9066661fff12baaf3e80b2e8c08591af72fe5b8', class: getIonMode$1(this) }, hAsync("slot", { key: '62b103af46d3a5ec9c146019ae300b68a4ae867a' })));
35686
35531
  }
35687
35532
  static get style() { return rowCss(); }
35688
35533
  static get cmpMeta() { return {
@@ -35734,7 +35579,7 @@ class Searchbar {
35734
35579
  /**
35735
35580
  * Set the input's autocorrect property.
35736
35581
  */
35737
- this.autocorrect = 'off';
35582
+ this.autocorrect = false;
35738
35583
  /**
35739
35584
  * Set the cancel button icon. Only applies to `md` mode.
35740
35585
  * Defaults to `arrow-back-sharp`.
@@ -36155,8 +36000,8 @@ class Searchbar {
36155
36000
  const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
36156
36001
  const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
36157
36002
  const shouldShowCancelButton = this.shouldShowCancelButton();
36158
- const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '226b7a676b4819cda4062b8334fa8d4c4cee6f1a', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, hAsync("div", { key: '89adb4efa17a78c973bbd5527cfac91d99ceb9bb', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
36159
- return (hAsync(Host, { key: '237dd767403dba3cb3d7de8905996e275669da3b', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
36003
+ const cancelButton = this.showCancelButton !== 'never' && (hAsync("button", { key: '73964da43dbd099fc7f3d30cbc4da11087701ac5', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, hAsync("div", { key: '27335a0e35f6c253c074685fa0b088404927bcbb', "aria-hidden": "true" }, mode === 'md' ? (hAsync("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
36004
+ return (hAsync(Host, { key: '1b4f6c4e7dffb02e092f0026ce3875822d98a631', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses$1(this.color, {
36160
36005
  [mode]: true,
36161
36006
  'searchbar-animated': animated,
36162
36007
  'searchbar-disabled': this.disabled,
@@ -36166,14 +36011,14 @@ class Searchbar {
36166
36011
  'searchbar-has-focus': this.focused,
36167
36012
  'searchbar-should-show-clear': this.shouldShowClearButton(),
36168
36013
  'searchbar-should-show-cancel': this.shouldShowCancelButton(),
36169
- }) }, hAsync("div", { key: '5b4bdf7280bea710304b6975e76390fe6ceb7417', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '01a0820a2cf904aec1c7d84b542ab7918d435632', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: 'cd64973206b1cc59d221112861733b7ee25f0323', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: '2061fa8449bbc576cf8c5130ea613378ea492944', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
36014
+ }) }, hAsync("div", { key: '587e1950e329cfb9d3658be5b2a6491e7af9321a', class: "searchbar-input-container" }, hAsync("input", Object.assign({ key: '7f78a3d22cce03af277a538b4d9f85faddf1fa80', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect ? 'on' : 'off', spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, hAsync("ion-icon", { key: '9fd3e458978b64e9e3358bcbb26471753f6ff2a6', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), hAsync("button", { key: 'c7864c85923668dfa25f5fc4a70c7dbf6da191b7', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
36170
36015
  /**
36171
36016
  * This prevents mobile browsers from
36172
36017
  * blurring the input when the clear
36173
36018
  * button is activated.
36174
36019
  */
36175
36020
  ev.preventDefault();
36176
- }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '00df6f7742bff70b1b088d544b8c00e962e7216c', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
36021
+ }, onClick: () => this.onClearInput(true) }, hAsync("ion-icon", { key: '47e7a15c6c6d4df4c54c62b042842e499627da05', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
36177
36022
  }
36178
36023
  get el() { return getElement(this); }
36179
36024
  static get watchers() { return {
@@ -36205,7 +36050,7 @@ class Searchbar {
36205
36050
  "animated": [4],
36206
36051
  "autocapitalize": [1],
36207
36052
  "autocomplete": [1],
36208
- "autocorrect": [1],
36053
+ "autocorrect": [4],
36209
36054
  "cancelButtonIcon": [1, "cancel-button-icon"],
36210
36055
  "cancelButtonText": [1, "cancel-button-text"],
36211
36056
  "clearIcon": [1, "clear-icon"],
@@ -36782,14 +36627,14 @@ class Segment {
36782
36627
  }
36783
36628
  render() {
36784
36629
  const mode = getIonMode$1(this);
36785
- return (hAsync(Host, { key: 'eda6b7b88b7967b55cf9098c59b655b348a42224', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
36630
+ return (hAsync(Host, { key: 'bb626072e73f09c3433e1a769e09789a00822d8f', role: "tablist", onClick: this.onClick, class: createColorClasses$1(this.color, {
36786
36631
  [mode]: true,
36787
36632
  'in-toolbar': hostContext('ion-toolbar', this.el),
36788
36633
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
36789
36634
  'segment-activated': this.activated,
36790
36635
  'segment-disabled': this.disabled,
36791
36636
  'segment-scrollable': this.scrollable,
36792
- }) }, hAsync("slot", { key: 'fdb451f235ce59c5bb50c61a13c69160ece2d5df', onSlotchange: this.onSlottedItemsChange })));
36637
+ }) }, hAsync("slot", { key: '652d5037c2c2dee4d47a5710b1d150e691202d25', onSlotchange: this.onSlottedItemsChange })));
36793
36638
  }
36794
36639
  get el() { return getElement(this); }
36795
36640
  static get watchers() { return {
@@ -36937,7 +36782,7 @@ class SegmentButton {
36937
36782
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
36938
36783
  const mode = getIonMode$1(this);
36939
36784
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
36940
- return (hAsync(Host, { key: 'f69e2a24198a7c57543dbe66902da039a6569c64', class: {
36785
+ return (hAsync(Host, { key: '792f621c36260b1fceff2b4ec4fa95d98d51d46b', class: {
36941
36786
  [mode]: true,
36942
36787
  'in-toolbar': hostContext('ion-toolbar', this.el),
36943
36788
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -36953,7 +36798,7 @@ class SegmentButton {
36953
36798
  'ion-activatable': true,
36954
36799
  'ion-activatable-instant': true,
36955
36800
  'ion-focusable': true,
36956
- } }, hAsync("button", Object.assign({ key: '0a6fea3a374074af19f7ece0ba3a7cf1e269ab6d', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: '991018a38c59a6f3d76b2e952e5569c874d2c13e', class: "button-inner" }, hAsync("slot", { key: '23c547c80108025027b913c7fcbec189286627a3' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '7faa9d06ab6aa7346d16b0b6808979759a79650c' })), hAsync("div", { key: '0d61badf2c227dc38e20185b2b2bb590a5efa434', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'a84035752b78491c344179d1e61d109fb4bd1cf1', part: "indicator-background", class: "segment-button-indicator-background" }))));
36801
+ } }, hAsync("button", Object.assign({ key: '860698be6ceb8f08c0ce3d16ba82d4bb56adf030', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), hAsync("span", { key: 'e903a2642ff46797878a941887b5c596d52fd3a3', class: "button-inner" }, hAsync("slot", { key: '5fc6b842ecb7f0ab8df23b344bf6714f38dda89a' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '710aaf6e4fa2b6cb15897a883e88dec17ef3829f' })), hAsync("div", { key: 'a7b036cba32420e9eb3f2d16487df0519ecc5289', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, hAsync("div", { key: 'a0a5f49ea7f2ecab8014f4f9ca473a27db8348b6', part: "indicator-background", class: "segment-button-indicator-background" }))));
36957
36802
  }
36958
36803
  get el() { return getElement(this); }
36959
36804
  static get watchers() { return {
@@ -36990,7 +36835,7 @@ class SegmentContent {
36990
36835
  registerInstance(this, hostRef);
36991
36836
  }
36992
36837
  render() {
36993
- return (hAsync(Host, { key: '665f41a854621f898eaf7ba9a49e77cc9326501e' }, hAsync("slot", { key: '635aa57fbf6167dcd36fe8dc5dfc1c313637ac04' })));
36838
+ return (hAsync(Host, { key: 'ef39f29c444177c3b083cd35680ba891e4bb6a2a' }, hAsync("slot", { key: '51f9dd9ca084ddd928b376aa9d716509669c32b2' })));
36994
36839
  }
36995
36840
  static get style() { return segmentContentCss(); }
36996
36841
  static get cmpMeta() { return {
@@ -37109,11 +36954,11 @@ class SegmentView {
37109
36954
  }
37110
36955
  render() {
37111
36956
  const { disabled, isManualScroll, swipeGesture } = this;
37112
- return (hAsync(Host, { key: '2a6e0a1046af75b1fa0eed20a5fbbb4634480297', class: {
36957
+ return (hAsync(Host, { key: 'a6c6ac0232c4bb6f2a954b3de7993019d71f423a', class: {
37113
36958
  'segment-view-disabled': disabled,
37114
36959
  'segment-view-scroll-disabled': isManualScroll === false,
37115
36960
  'segment-view-swipe-disabled': swipeGesture === false,
37116
- } }, hAsync("slot", { key: '644b60d179d0de3fa204e3bef26a3503ceeaf1d6' })));
36961
+ } }, hAsync("slot", { key: '386305be2a75069c79def12005d9f6b49276763f' })));
37117
36962
  }
37118
36963
  get el() { return getElement(this); }
37119
36964
  static get style() { return {
@@ -37135,9 +36980,9 @@ class SegmentView {
37135
36980
  }; }
37136
36981
  }
37137
36982
 
37138
- 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}`;
36983
+ 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}`;
37139
36984
 
37140
- 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}`;
36985
+ 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}`;
37141
36986
 
37142
36987
  // TODO(FW-2832): types
37143
36988
  /**
@@ -37172,6 +37017,7 @@ class Select {
37172
37017
  this.helperTextId = `${this.inputId}-helper-text`;
37173
37018
  this.errorTextId = `${this.inputId}-error-text`;
37174
37019
  this.inheritedAttributes = {};
37020
+ this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
37175
37021
  this.isExpanded = false;
37176
37022
  /**
37177
37023
  * The `hasFocus` state ensures the focus class is
@@ -37297,9 +37143,40 @@ class Select {
37297
37143
  this.emitStyle();
37298
37144
  }
37299
37145
  setValue(value) {
37146
+ if (this.isValueEqual(this.value, value)) {
37147
+ return;
37148
+ }
37300
37149
  this.value = value;
37301
37150
  this.ionChange.emit({ value });
37302
37151
  }
37152
+ isValueEqual(currentValue, newValue) {
37153
+ if (this.multiple) {
37154
+ const currentArr = Array.isArray(currentValue) ? currentValue : [];
37155
+ const newArr = Array.isArray(newValue) ? newValue : [];
37156
+ if (currentArr.length !== newArr.length) {
37157
+ return false;
37158
+ }
37159
+ // Multiset compare: each new value must match a distinct current value.
37160
+ // A plain `every(isOptionSelected)` would accept ['a','a'] as equal to
37161
+ // ['a','b'] when both 'a' and 'b' map to options whose values overlap.
37162
+ const remaining = currentArr.slice();
37163
+ return newArr.every((val) => {
37164
+ const idx = remaining.findIndex((c) => compareOptions(c, val, this.compareWith));
37165
+ if (idx === -1) {
37166
+ return false;
37167
+ }
37168
+ remaining.splice(idx, 1);
37169
+ return true;
37170
+ });
37171
+ }
37172
+ if (currentValue == null && newValue == null) {
37173
+ return true;
37174
+ }
37175
+ if (currentValue == null || newValue == null) {
37176
+ return false;
37177
+ }
37178
+ return compareOptions(currentValue, newValue, this.compareWith);
37179
+ }
37303
37180
  async connectedCallback() {
37304
37181
  const { el } = this;
37305
37182
  this.notchController = createNotchController(el, () => this.notchSpacerEl, () => this.labelSlot);
@@ -37493,10 +37370,11 @@ class Select {
37493
37370
  .join(' ');
37494
37371
  const optClass = `${OPTION_CLASS} ${copyClasses}`;
37495
37372
  const isSelected = isOptionSelected(selectValue, value, this.compareWith);
37373
+ const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
37496
37374
  return {
37497
- role: isSelected ? 'selected' : '',
37498
- text: option.textContent,
37375
+ text: content !== null && content !== void 0 ? content : '',
37499
37376
  cssClass: optClass,
37377
+ disabled: option.disabled,
37500
37378
  handler: () => {
37501
37379
  this.setValue(value);
37502
37380
  },
@@ -37504,6 +37382,9 @@ class Select {
37504
37382
  'aria-checked': isSelected ? 'true' : 'false',
37505
37383
  role: 'radio',
37506
37384
  },
37385
+ startContent,
37386
+ endContent,
37387
+ description: option.description,
37507
37388
  };
37508
37389
  });
37509
37390
  // Add "cancel" button
@@ -37524,13 +37405,19 @@ class Select {
37524
37405
  .filter((cls) => cls !== 'hydrated')
37525
37406
  .join(' ');
37526
37407
  const optClass = `${OPTION_CLASS} ${copyClasses}`;
37408
+ const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
37527
37409
  return {
37528
37410
  type: inputType,
37529
37411
  cssClass: optClass,
37530
- label: option.textContent || '',
37412
+ label: content !== null && content !== void 0 ? content : '',
37531
37413
  value,
37532
37414
  checked: isOptionSelected(selectValue, value, this.compareWith),
37533
37415
  disabled: option.disabled,
37416
+ startContent,
37417
+ endContent,
37418
+ description: option.description,
37419
+ labelPlacement: option.labelPlacement,
37420
+ justify: option.justify,
37534
37421
  };
37535
37422
  });
37536
37423
  return alertInputs;
@@ -37543,8 +37430,9 @@ class Select {
37543
37430
  .filter((cls) => cls !== 'hydrated')
37544
37431
  .join(' ');
37545
37432
  const optClass = `${OPTION_CLASS} ${copyClasses}`;
37433
+ const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
37546
37434
  return {
37547
- text: option.textContent || '',
37435
+ text: content !== null && content !== void 0 ? content : '',
37548
37436
  cssClass: optClass,
37549
37437
  value,
37550
37438
  checked: isOptionSelected(selectValue, value, this.compareWith),
@@ -37555,6 +37443,11 @@ class Select {
37555
37443
  this.close();
37556
37444
  }
37557
37445
  },
37446
+ startContent,
37447
+ endContent,
37448
+ description: option.description,
37449
+ labelPlacement: option.labelPlacement,
37450
+ justify: option.justify,
37558
37451
  };
37559
37452
  });
37560
37453
  return popoverOptions;
@@ -37587,15 +37480,21 @@ class Select {
37587
37480
  ionShadowTarget: this.nativeWrapperEl,
37588
37481
  } });
37589
37482
  }
37483
+ const options = this.createOverlaySelectOptions(this.childOpts, value);
37484
+ const hasRichContent = options.some((opt) => opt.startContent || opt.endContent || opt.description);
37590
37485
  const popoverOpts = Object.assign(Object.assign({ mode,
37591
37486
  event, alignment: 'center', size,
37592
- showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: ['select-popover', interfaceOptions.cssClass], componentProps: {
37487
+ showBackdrop }, interfaceOptions), { component: 'ion-select-popover', cssClass: [
37488
+ 'select-popover',
37489
+ hasRichContent ? 'select-popover-rich-content' : undefined,
37490
+ interfaceOptions.cssClass,
37491
+ ], componentProps: {
37593
37492
  header: interfaceOptions.header,
37594
37493
  subHeader: interfaceOptions.subHeader,
37595
37494
  message: interfaceOptions.message,
37596
37495
  multiple,
37597
37496
  value,
37598
- options: this.createOverlaySelectOptions(this.childOpts, value),
37497
+ options,
37599
37498
  } });
37600
37499
  return popoverController.create(popoverOpts);
37601
37500
  }
@@ -37676,12 +37575,18 @@ class Select {
37676
37575
  }
37677
37576
  return;
37678
37577
  }
37679
- getText() {
37578
+ /**
37579
+ * Returns the text to display in the select based on the selected value.
37580
+ *
37581
+ * @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`.
37582
+ * @returns The text to display in the select, either with or without HTML based on the `useHTML` parameter.
37583
+ */
37584
+ getText(useHTML = false) {
37680
37585
  const selectedText = this.selectedText;
37681
37586
  if (selectedText != null && selectedText !== '') {
37682
37587
  return selectedText;
37683
37588
  }
37684
- return generateText(this.childOpts, this.value, this.compareWith);
37589
+ return generateText(this.childOpts, this.value, this.compareWith, useHTML);
37685
37590
  }
37686
37591
  setFocus() {
37687
37592
  if (this.focusEl) {
@@ -37751,6 +37656,47 @@ class Select {
37751
37656
  */
37752
37657
  return this.renderLabel();
37753
37658
  }
37659
+ /**
37660
+ * Wraps text nodes in the select text with span elements
37661
+ * so spacing can be added between elements without
37662
+ * changing the display to prevent losing the ellipses
37663
+ * behavior.
37664
+ *
37665
+ * Only wraps when the string contains HTML elements
37666
+ * alongside text.
37667
+ */
37668
+ wrapSelectTextNodes(html) {
37669
+ const temp = document.createElement('div');
37670
+ temp.innerHTML = html;
37671
+ const hasElements = Array.from(temp.childNodes).some((n) => n.nodeType === Node.ELEMENT_NODE);
37672
+ // Return the plain text
37673
+ if (!hasElements) {
37674
+ return html;
37675
+ }
37676
+ Array.from(temp.childNodes).forEach((node) => {
37677
+ var _a, _b, _c, _d;
37678
+ if (node.nodeType === Node.TEXT_NODE && ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim())) {
37679
+ const text = node.textContent;
37680
+ /**
37681
+ * Split comma separator from the text content
37682
+ * e.g., ", Bacon" becomes ", " text node + <span>Bacon</span>.
37683
+ */
37684
+ const commaMatch = text.match(/^(,\s*)(.*)/);
37685
+ if (commaMatch) {
37686
+ const commaNode = document.createTextNode(commaMatch[1]);
37687
+ const wrapper = document.createElement('span');
37688
+ wrapper.textContent = commaMatch[2];
37689
+ (_b = node.parentNode) === null || _b === void 0 ? void 0 : _b.replaceChild(wrapper, node);
37690
+ (_c = wrapper.parentNode) === null || _c === void 0 ? void 0 : _c.insertBefore(commaNode, wrapper);
37691
+ return;
37692
+ }
37693
+ const wrapper = document.createElement('span');
37694
+ (_d = node.parentNode) === null || _d === void 0 ? void 0 : _d.replaceChild(wrapper, node);
37695
+ wrapper.appendChild(node);
37696
+ }
37697
+ });
37698
+ return temp.innerHTML;
37699
+ }
37754
37700
  /**
37755
37701
  * Renders either the placeholder
37756
37702
  * or the selected values based on
@@ -37758,7 +37704,7 @@ class Select {
37758
37704
  */
37759
37705
  renderSelectText() {
37760
37706
  const { placeholder } = this;
37761
- const displayValue = this.getText();
37707
+ const displayValue = this.getText(true);
37762
37708
  let addPlaceholderClass = false;
37763
37709
  let selectText = displayValue;
37764
37710
  if (selectText === '' && placeholder !== undefined) {
@@ -37770,6 +37716,10 @@ class Select {
37770
37716
  'select-placeholder': addPlaceholderClass,
37771
37717
  };
37772
37718
  const textPart = addPlaceholderClass ? 'placeholder' : 'text';
37719
+ if (this.customHTMLEnabled) {
37720
+ const wrapped = this.wrapSelectTextNodes(selectText);
37721
+ return hAsync("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart, innerHTML: wrapped });
37722
+ }
37773
37723
  return (hAsync("div", { "aria-hidden": "true", class: selectTextClasses, part: textPart }, selectText));
37774
37724
  }
37775
37725
  /**
@@ -37792,6 +37742,7 @@ class Select {
37792
37742
  get ariaLabel() {
37793
37743
  var _a;
37794
37744
  const { placeholder, inheritedAttributes } = this;
37745
+ // Get the plain text from the selected text
37795
37746
  const displayValue = this.getText();
37796
37747
  // The aria label should be preferred over visible text if both are specified
37797
37748
  const definedLabel = (_a = inheritedAttributes['aria-label']) !== null && _a !== void 0 ? _a : this.labelText;
@@ -37885,7 +37836,7 @@ class Select {
37885
37836
  * TODO(FW-5592): Remove hasStartEndSlots condition
37886
37837
  */
37887
37838
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
37888
- return (hAsync(Host, { key: '5f4ee901b65554eacc9fa52230d06b1a5ff1247c', onClick: this.onClick, class: createColorClasses$1(this.color, {
37839
+ return (hAsync(Host, { key: 'a3036d51e0db13332641e9523264ddd1ab031912', onClick: this.onClick, class: createColorClasses$1(this.color, {
37889
37840
  [mode]: true,
37890
37841
  'in-item': inItem,
37891
37842
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -37903,7 +37854,7 @@ class Select {
37903
37854
  [`select-justify-${justify}`]: justifyEnabled,
37904
37855
  [`select-shape-${shape}`]: shape !== undefined,
37905
37856
  [`select-label-placement-${labelPlacement}`]: true,
37906
- }) }, hAsync("label", { key: 'd56d89b5b58da2b5eaebada9d1be58ca45c67806', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), hAsync("div", { key: 'bc8bf089c693781ad5b3a5db76a12223867d748e', class: "select-wrapper-inner", part: "inner" }, hAsync("slot", { key: 'e1c12b96f1573eb192608c458ed1f3463174cd89', name: "start" }), hAsync("div", { key: '6ee5e3900d8e462f175649b502ac6faa2f2b9909', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: 'faeaea34aad412e1458beab95d4b1b9ca7b87c41', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'aeff51e51c990844869eff9940575ce6b2223135', class: "select-highlight" })), this.renderBottomContent()));
37857
+ }) }, hAsync("label", { key: '58b77f683499b958840721bdb59a9bf822c7f218', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), hAsync("div", { key: '9e68d96524c1b87d6cb1bdce79fa86f2022be04a', class: "select-wrapper-inner", part: "inner" }, hAsync("slot", { key: 'c9bcc5d684d2cefadff6ad3ec91498d5b405afc5', name: "start" }), hAsync("div", { key: '5405bc15ffb3437ca00c64fbbc83d8eb2631c4ea', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), hAsync("slot", { key: '95e2f041c8517afb1cc6bddb2c3c38cf41f2376e', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && hAsync("div", { key: 'f3d2410f678ea22a107121aea1bbda197a618ed6', class: "select-highlight" })), this.renderBottomContent()));
37907
37858
  }
37908
37859
  get el() { return getElement(this); }
37909
37860
  static get watchers() { return {
@@ -37974,34 +37925,232 @@ const parseValue = (value) => {
37974
37925
  }
37975
37926
  return value.toString();
37976
37927
  };
37977
- const generateText = (opts, value, compareWith) => {
37928
+ const generateText = (opts, value, compareWith, useHTML = false) => {
37978
37929
  if (value === undefined) {
37979
37930
  return '';
37980
37931
  }
37981
37932
  if (Array.isArray(value)) {
37982
37933
  return value
37983
- .map((v) => textForValue(opts, v, compareWith))
37934
+ .map((v) => textForValue(opts, v, compareWith, useHTML))
37984
37935
  .filter((opt) => opt !== null)
37985
37936
  .join(', ');
37986
37937
  }
37987
37938
  else {
37988
- return textForValue(opts, value, compareWith) || '';
37939
+ return textForValue(opts, value, compareWith, useHTML) || '';
37989
37940
  }
37990
37941
  };
37991
- const textForValue = (opts, value, compareWith) => {
37942
+ /**
37943
+ * Returns the display text for a given value from the list of options.
37944
+ * When `useHTML` is true, returns sanitized HTML for the select text.
37945
+ * When `useHTML` is false, returns plain text for aria-label and other
37946
+ * text-only contexts.
37947
+ *
37948
+ * @param opts - The list of ion-select-option elements.
37949
+ * @param value - The value to find the matching option for.
37950
+ * @param compareWith - Custom comparison function or property name.
37951
+ * @param useHTML - If true, returns HTML string. If false, returns plain text.
37952
+ */
37953
+ const textForValue = (opts, value, compareWith, useHTML = false) => {
37992
37954
  const selectOpt = opts.find((opt) => {
37993
37955
  return compareOptions(value, getOptionValue(opt), compareWith);
37994
37956
  });
37995
- return selectOpt ? selectOpt.textContent : null;
37957
+ const customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
37958
+ if (!selectOpt) {
37959
+ return null;
37960
+ }
37961
+ // Return sanitized HTML for the select text
37962
+ if (customHTMLEnabled && useHTML) {
37963
+ return getOptionContent(selectOpt, undefined, true);
37964
+ }
37965
+ /**
37966
+ * When custom HTML is enabled, extract only the default slot content.
37967
+ * This ensures aria-label and other text-only contexts read only
37968
+ * the relevant option text.
37969
+ */
37970
+ if (customHTMLEnabled) {
37971
+ const content = getOptionContent(selectOpt);
37972
+ if (typeof content === 'string') {
37973
+ return content;
37974
+ }
37975
+ /**
37976
+ * Elements were found in the default slot, extract and concatenate
37977
+ * their text content while trimming whitespace.
37978
+ */
37979
+ if (content) {
37980
+ const texts = Array.from(content.childNodes)
37981
+ .map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
37982
+ .filter((t) => t);
37983
+ return texts.join(' ') || null;
37984
+ }
37985
+ // Empty option
37986
+ return null;
37987
+ }
37988
+ return getDefaultSlotPlainText(selectOpt);
37989
+ };
37990
+ /**
37991
+ * Trims whitespace from all text nodes within a DOM tree.
37992
+ * This prevents invisible layout shifts and unwanted gaps between
37993
+ * elements when HTML content is injected via innerHTML or cloneNode,
37994
+ * as browsers preserve whitespace (tabs, newlines, spaces) from
37995
+ * the original source markup.
37996
+ *
37997
+ * @param node The root node to start trimming text nodes from.
37998
+ */
37999
+ const trimTextNodes = (node) => {
38000
+ node.childNodes.forEach((child) => {
38001
+ var _a;
38002
+ if (child.nodeType === Node.TEXT_NODE) {
38003
+ child.textContent = ((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
38004
+ }
38005
+ else if (child.nodeType === Node.ELEMENT_NODE) {
38006
+ trimTextNodes(child);
38007
+ }
38008
+ });
38009
+ };
38010
+ /**
38011
+ * Extracts and clones content from an `ion-select-option` element
38012
+ * for rendering within overlay interfaces or the select text when `customHTMLEnabled` is `true`.
38013
+ *
38014
+ * @param option - The `ion-select-option` element to extract content from.
38015
+ * @param slotName - Optional slot name to extract. If omitted, extracts the default slot content.
38016
+ * @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.
38017
+ * @returns When `useHTML` is `true`, a sanitized HTML string. When `false`, a
38018
+ * div element containing cloned child nodes. Returns `null` if no matching
38019
+ * content is found.
38020
+ */
38021
+ const getOptionContent = (option, slotName, useHTML = false) => {
38022
+ let nodes;
38023
+ if (slotName) {
38024
+ // Named slot: get elements with matching slot attribute
38025
+ nodes = Array.from(option.children).filter((el) => el.getAttribute('slot') === slotName);
38026
+ }
38027
+ else {
38028
+ // Default slot: get nodes without a slot attribute
38029
+ const defaultSlot = getOptionDefaultSlot(option) || [];
38030
+ nodes = defaultSlot.filter((node) => {
38031
+ var _a;
38032
+ /**
38033
+ * Exclude whitespace-only text nodes (newline noise between
38034
+ * markup elements). Element nodes are always kept, even when
38035
+ * their textContent is empty (e.g. <svg>, <img>).
38036
+ */
38037
+ if (node.nodeType === Node.TEXT_NODE) {
38038
+ return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().length) !== 0;
38039
+ }
38040
+ return true;
38041
+ });
38042
+ }
38043
+ if (nodes.length === 0) {
38044
+ return null;
38045
+ }
38046
+ // Return plain text if no elements are found
38047
+ if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
38048
+ return nodes.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); }).join(' ') || null;
38049
+ }
38050
+ /**
38051
+ * Mirror known custom-element properties (e.g. ion-icon's `icon`)
38052
+ * onto attributes before cloning. Frameworks like Vue set these as
38053
+ * DOM properties, which `cloneNode` doesn't copy, so without this
38054
+ * step the cloned overlay copy renders without the prop's value.
38055
+ */
38056
+ nodes.forEach((n) => {
38057
+ if (n.nodeType === Node.ELEMENT_NODE) {
38058
+ reflectPropertiesToAttributes(n);
38059
+ }
38060
+ });
38061
+ // Clone each node into a temporary container
38062
+ const container = document.createElement('div');
38063
+ nodes.forEach((n) => {
38064
+ var _a;
38065
+ const clone = n.cloneNode(true);
38066
+ if (clone.nodeType === Node.TEXT_NODE) {
38067
+ clone.textContent = ((_a = clone.textContent) === null || _a === void 0 ? void 0 : _a.trim()) || '';
38068
+ }
38069
+ else {
38070
+ trimTextNodes(clone);
38071
+ }
38072
+ container.appendChild(clone);
38073
+ });
38074
+ /**
38075
+ * Sanitize the cloned DOM in place. Trusted attributes (size, color,
38076
+ * shape, etc.) are preserved; event handlers, javascript: URLs, and
38077
+ * blocked tags are stripped.
38078
+ */
38079
+ sanitizeDOMTree(container);
38080
+ if (useHTML) {
38081
+ return container.innerHTML.trim() || null;
38082
+ }
38083
+ return container;
38084
+ };
38085
+ /**
38086
+ * Returns the child nodes that belong to the default slot of an
38087
+ * option element, excluding any nodes that are assigned to named
38088
+ * slots.
38089
+ *
38090
+ * @param option - The `ion-select-option` element to extract default-slot nodes from.
38091
+ * @returns An array of default slot nodes, or `null` if none are found.
38092
+ */
38093
+ const getOptionDefaultSlot = (option) => {
38094
+ const defaultSlotNodes = Array.from(option.childNodes).filter((node) => {
38095
+ if (node.nodeType === Node.ELEMENT_NODE) {
38096
+ return !node.hasAttribute('slot');
38097
+ }
38098
+ return node.nodeType === Node.TEXT_NODE;
38099
+ });
38100
+ if (defaultSlotNodes.length === 0) {
38101
+ return null;
38102
+ }
38103
+ return defaultSlotNodes;
38104
+ };
38105
+ /**
38106
+ * Extracts plain text from only the default slot of an option,
38107
+ * excluding content assigned to named slots (start/end).
38108
+ */
38109
+ const getDefaultSlotPlainText = (option) => {
38110
+ const texts = Array.from(option.childNodes)
38111
+ .filter((node) => {
38112
+ if (node.nodeType === Node.ELEMENT_NODE) {
38113
+ return !node.hasAttribute('slot');
38114
+ }
38115
+ return node.nodeType === Node.TEXT_NODE;
38116
+ })
38117
+ .filter((node) => node.nodeType === Node.TEXT_NODE)
38118
+ .map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); })
38119
+ .filter((t) => t);
38120
+ return texts.join(' ');
38121
+ };
38122
+ /**
38123
+ * Extracts the rich content from an `ion-select-option`.
38124
+ * When `customHTMLEnabled` is `false`, only the plain text from the
38125
+ * default slot is read and the start and end slots are skipped.
38126
+ *
38127
+ * @param option - The `ion-select-option` element to extract content from.
38128
+ * @param customHTMLEnabled - Whether custom HTML rendering is enabled
38129
+ * via the `innerHTMLTemplatesEnabled` config.
38130
+ */
38131
+ const extractOptionContent = (option, customHTMLEnabled) => {
38132
+ var _a, _b;
38133
+ if (!customHTMLEnabled) {
38134
+ return {
38135
+ content: getDefaultSlotPlainText(option),
38136
+ startContent: undefined,
38137
+ endContent: undefined,
38138
+ };
38139
+ }
38140
+ return {
38141
+ content: getOptionContent(option),
38142
+ startContent: (_a = getOptionContent(option, 'start')) !== null && _a !== void 0 ? _a : undefined,
38143
+ endContent: (_b = getOptionContent(option, 'end')) !== null && _b !== void 0 ? _b : undefined,
38144
+ };
37996
38145
  };
37997
38146
  let selectIds = 0;
37998
38147
  const OPTION_CLASS = 'select-interface-option';
37999
38148
 
38000
- const ionicSelectModalMdCss = () => `.sc-ion-select-modal-ionic-h{height:100%}ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic::part(container),ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic [part~="container"]{display:none}ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic::part(label),ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic [part~="label"]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-modal-ionic{--inner-border-width:0}.item-radio-checked.sc-ion-select-modal-ionic{--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-modal-ionic{--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)}`;
38149
+ const ionicSelectModalMdCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-select-modal-ionic,.alert-radio-label-has-rich-content.sc-ion-select-modal-ionic,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-ionic,.select-option-label-has-rich-content.sc-ion-select-modal-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:16px}.action-sheet-button-label-has-rich-content.sc-ion-select-modal-ionic,.alert-radio-label-has-rich-content.sc-ion-select-modal-ionic,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-ionic,.select-option-content.sc-ion-select-modal-ionic{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-select-modal-ionic,.alert-checkbox-label-text.sc-ion-select-modal-ionic,.alert-radio-label-text.sc-ion-select-modal-ionic,.select-option-label-text.sc-ion-select-modal-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-select-modal-ionic{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-modal-ionic:not(.select-option-label-has-rich-content){text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.select-option-label-has-rich-content.sc-ion-select-modal-ionic{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-select-modal-ionic::part(label),ion-radio.select-option-has-rich-content.sc-ion-select-modal-ionic [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-ionic::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-ionic [part~="label"],.select-option-content.sc-ion-select-modal-ionic{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-select-modal-ionic>ion-avatar.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>ion-avatar.sc-ion-select-modal-ionic{width:40px;height:40px}.select-option-start.sc-ion-select-modal-ionic>ion-icon.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>ion-icon.sc-ion-select-modal-ionic{width:24px;height:24px}.select-option-start.sc-ion-select-modal-ionic>ion-img.sc-ion-select-modal-ionic,.select-option-start.sc-ion-select-modal-ionic>img.sc-ion-select-modal-ionic,.select-option-start.sc-ion-select-modal-ionic>svg.sc-ion-select-modal-ionic,.select-option-start.sc-ion-select-modal-ionic>ion-thumbnail.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>ion-img.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>img.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>svg.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>ion-thumbnail.sc-ion-select-modal-ionic{width:56px;height:56px}.select-option-start.sc-ion-select-modal-ionic>video.sc-ion-select-modal-ionic,.select-option-end.sc-ion-select-modal-ionic>video.sc-ion-select-modal-ionic{width:114px;height:56px}.sc-ion-select-modal-ionic-h{height:100%}ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic::part(container),ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic [part~="container"]{display:none}ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic::part(label),ion-list.sc-ion-select-modal-ionic ion-radio.sc-ion-select-modal-ionic [part~="label"]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-modal-ionic{--inner-border-width:0}.item-radio-checked.sc-ion-select-modal-ionic{--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-modal-ionic{--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)}`;
38001
38150
 
38002
- const selectModalIosCss = () => `.sc-ion-select-modal-ios-h{height:100%}ion-item.sc-ion-select-modal-ios{--inner-padding-end:0}ion-radio.sc-ion-select-modal-ios::after{bottom:0;position:absolute;width:calc(100% - 0.9375rem - 16px);border-width:0px 0px 0.55px 0px;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));content:""}ion-radio.sc-ion-select-modal-ios::after{inset-inline-start:calc(0.9375rem + 16px)}`;
38151
+ const selectModalIosCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-select-modal-ios,.alert-radio-label-has-rich-content.sc-ion-select-modal-ios,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-ios,.select-option-label-has-rich-content.sc-ion-select-modal-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-modal-ios,.alert-radio-label-has-rich-content.sc-ion-select-modal-ios,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-ios,.select-option-content.sc-ion-select-modal-ios{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-select-modal-ios,.alert-checkbox-label-text.sc-ion-select-modal-ios,.alert-radio-label-text.sc-ion-select-modal-ios,.select-option-label-text.sc-ion-select-modal-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-select-modal-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-modal-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-modal-ios{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-select-modal-ios::part(label),ion-radio.select-option-has-rich-content.sc-ion-select-modal-ios [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-ios::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-ios [part~="label"],.select-option-content.sc-ion-select-modal-ios{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-select-modal-ios>ion-avatar.sc-ion-select-modal-ios,.select-option-start.sc-ion-select-modal-ios>ion-img.sc-ion-select-modal-ios,.select-option-start.sc-ion-select-modal-ios>ion-thumbnail.sc-ion-select-modal-ios,.select-option-start.sc-ion-select-modal-ios>img.sc-ion-select-modal-ios,.select-option-start.sc-ion-select-modal-ios>svg.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>ion-avatar.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>ion-img.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>ion-thumbnail.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>img.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>svg.sc-ion-select-modal-ios{width:44px;height:44px}.select-option-start.sc-ion-select-modal-ios>ion-icon.sc-ion-select-modal-ios,.select-option-end.sc-ion-select-modal-ios>ion-icon.sc-ion-select-modal-ios{width:28px;height:28px}.action-sheet-button-label-text.sc-ion-select-modal-ios{-ms-flex-pack:center;justify-content:center}.select-option-has-rich-content.sc-ion-select-modal-ios{-webkit-padding-end:16px;padding-inline-end:16px}.sc-ion-select-modal-ios-h{height:100%}ion-item.sc-ion-select-modal-ios{--inner-padding-end:0}ion-radio.sc-ion-select-modal-ios::after{bottom:0;position:absolute;width:calc(100% - 0.9375rem - 16px);border-width:0px 0px 0.55px 0px;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));content:""}ion-radio.sc-ion-select-modal-ios::after{inset-inline-start:calc(0.9375rem + 16px)}`;
38003
38152
 
38004
- const selectModalMdCss = () => `.sc-ion-select-modal-md-h{height:100%}ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md::part(container),ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md [part~="container"]{display:none}ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md::part(label),ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md [part~="label"]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-modal-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-modal-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-modal-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)}`;
38153
+ const selectModalMdCss = () => `.action-sheet-button-label-has-rich-content.sc-ion-select-modal-md,.alert-radio-label-has-rich-content.sc-ion-select-modal-md,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-md,.select-option-label-has-rich-content.sc-ion-select-modal-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-modal-md,.alert-radio-label-has-rich-content.sc-ion-select-modal-md,.alert-checkbox-label-has-rich-content.sc-ion-select-modal-md,.select-option-content.sc-ion-select-modal-md{-ms-flex:1;flex:1}.action-sheet-button-label-text.sc-ion-select-modal-md,.alert-checkbox-label-text.sc-ion-select-modal-md,.alert-radio-label-text.sc-ion-select-modal-md,.select-option-label-text.sc-ion-select-modal-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px}.select-option-start.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px}.select-option-description.sc-ion-select-modal-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-modal-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-modal-md{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}ion-radio.select-option-has-rich-content.sc-ion-select-modal-md::part(label),ion-radio.select-option-has-rich-content.sc-ion-select-modal-md [part~="label"],ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-md::part(label),ion-checkbox.select-option-has-rich-content.sc-ion-select-modal-md [part~="label"],.select-option-content.sc-ion-select-modal-md{-ms-flex:1;flex:1;white-space:normal}.select-option-start.sc-ion-select-modal-md>ion-avatar.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>ion-avatar.sc-ion-select-modal-md{width:40px;height:40px}.select-option-start.sc-ion-select-modal-md>ion-icon.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>ion-icon.sc-ion-select-modal-md{width:24px;height:24px}.select-option-start.sc-ion-select-modal-md>ion-img.sc-ion-select-modal-md,.select-option-start.sc-ion-select-modal-md>img.sc-ion-select-modal-md,.select-option-start.sc-ion-select-modal-md>svg.sc-ion-select-modal-md,.select-option-start.sc-ion-select-modal-md>ion-thumbnail.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>ion-img.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>img.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>svg.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>ion-thumbnail.sc-ion-select-modal-md{width:56px;height:56px}.select-option-start.sc-ion-select-modal-md>video.sc-ion-select-modal-md,.select-option-end.sc-ion-select-modal-md>video.sc-ion-select-modal-md{width:114px;height:56px}.sc-ion-select-modal-md-h{height:100%}ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md::part(container),ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md [part~="container"]{display:none}ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md::part(label),ion-list.sc-ion-select-modal-md ion-radio.sc-ion-select-modal-md [part~="label"]{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}ion-item.sc-ion-select-modal-md{--inner-border-width:0}.item-radio-checked.sc-ion-select-modal-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-modal-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)}`;
38005
38154
 
38006
38155
  class SelectModal {
38007
38156
  constructor(hostRef) {
@@ -38055,39 +38204,90 @@ class SelectModal {
38055
38204
  }
38056
38205
  }
38057
38206
  renderRadioOptions() {
38207
+ const mode = getIonMode$1(this);
38058
38208
  const checked = this.options.filter((o) => o.checked).map((o) => o.value)[0];
38059
- return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option) => (hAsync("ion-item", { lines: "none", class: Object.assign({
38209
+ return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, this.options.map((option, index) => {
38210
+ var _a, _b;
38211
+ /**
38212
+ * Cast to `SelectOverlayOption` to access rich content
38213
+ * fields (`startContent`, `endContent`, `description`)
38214
+ * that are passed through from `ion-select` but not
38215
+ * part of the public `SelectModalOption` interface.
38216
+ */
38217
+ const richOption = option;
38218
+ const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
38219
+ const optionLabelOptions = {
38220
+ id: `modal-option-${index}`,
38221
+ label: richOption.text,
38222
+ startContent: richOption.startContent,
38223
+ endContent: richOption.endContent,
38224
+ description: richOption.description,
38225
+ };
38226
+ const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'radio', 'modal');
38227
+ const defaultJustify = getOverlayLabelJustify(mode, 'radio', 'modal');
38228
+ return (hAsync("ion-item", { lines: "none",
38060
38229
  // TODO FW-4784
38061
- 'item-radio-checked': option.value === checked
38062
- }, getClassMap(option.cssClass)) }, hAsync("ion-radio", { value: option.value, disabled: option.disabled, justify: "start", labelPlacement: "end", onClick: () => this.closeModal(), onKeyDown: (ev) => {
38063
- if (ev.key === 'Enter' && !ev.repeat) {
38064
- this.pendingEnterTarget = ev.currentTarget;
38065
- }
38066
- }, onKeyUp: (ev) => {
38067
- if (ev.key === ' ') {
38068
- // Space selects and dismisses in one press.
38069
- this.closeModal();
38070
- }
38071
- else if (ev.key === 'Enter') {
38072
- const shouldClose = this.pendingEnterTarget === ev.currentTarget;
38073
- this.pendingEnterTarget = null;
38074
- if (shouldClose) {
38230
+ disabled: option.disabled, class: Object.assign({
38231
+ // TODO FW-4784
38232
+ 'item-radio-checked': option.value === checked
38233
+ }, getClassMap(option.cssClass)) }, hAsync("ion-radio", { class: {
38234
+ 'select-option-has-rich-content': hasRichContent,
38235
+ }, value: option.value, disabled: option.disabled, justify: (_a = richOption.justify) !== null && _a !== void 0 ? _a : defaultJustify, labelPlacement: (_b = richOption.labelPlacement) !== null && _b !== void 0 ? _b : defaultLabelPlacement, onClick: () => this.closeModal(), onKeyDown: (ev) => {
38236
+ if (ev.key === 'Enter' && !ev.repeat) {
38237
+ this.pendingEnterTarget = ev.currentTarget;
38238
+ }
38239
+ }, onKeyUp: (ev) => {
38240
+ if (ev.key === ' ') {
38241
+ // Space selects and dismisses in one press.
38075
38242
  this.closeModal();
38076
38243
  }
38077
- }
38078
- } }, option.text))))));
38244
+ else if (ev.key === 'Enter') {
38245
+ const shouldClose = this.pendingEnterTarget === ev.currentTarget;
38246
+ this.pendingEnterTarget = null;
38247
+ if (shouldClose) {
38248
+ this.closeModal();
38249
+ }
38250
+ }
38251
+ } }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
38252
+ })));
38079
38253
  }
38080
38254
  renderCheckboxOptions() {
38081
- return this.options.map((option) => (hAsync("ion-item", { class: Object.assign({
38255
+ const mode = getIonMode$1(this);
38256
+ return this.options.map((option, index) => {
38257
+ var _a, _b;
38258
+ /**
38259
+ * Cast to `SelectOverlayOption` to access rich content
38260
+ * fields (`startContent`, `endContent`, `description`)
38261
+ * that are passed through from `ion-select` but not
38262
+ * part of the public `SelectModalOption` interface.
38263
+ */
38264
+ const richOption = option;
38265
+ const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
38266
+ const optionLabelOptions = {
38267
+ id: `modal-option-${index}`,
38268
+ label: richOption.text,
38269
+ startContent: richOption.startContent,
38270
+ endContent: richOption.endContent,
38271
+ description: richOption.description,
38272
+ };
38273
+ const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox', 'modal');
38274
+ const defaultJustify = getOverlayLabelJustify(mode, 'checkbox', 'modal');
38275
+ return (hAsync("ion-item", {
38082
38276
  // TODO FW-4784
38083
- 'item-checkbox-checked': option.checked
38084
- }, getClassMap(option.cssClass)) }, hAsync("ion-checkbox", { value: option.value, disabled: option.disabled, checked: option.checked, justify: "start", labelPlacement: "end", onIonChange: (ev) => {
38085
- this.setChecked(ev);
38086
- this.callOptionHandler(ev);
38087
- } }, option.text))));
38277
+ disabled: option.disabled, class: Object.assign({
38278
+ // TODO FW-4784
38279
+ 'item-checkbox-checked': option.checked
38280
+ }, getClassMap(option.cssClass))
38281
+ }, hAsync("ion-checkbox", { class: {
38282
+ 'select-option-has-rich-content': hasRichContent,
38283
+ }, value: option.value, disabled: option.disabled, checked: option.checked, justify: (_a = richOption.justify) !== null && _a !== void 0 ? _a : defaultJustify, labelPlacement: (_b = richOption.labelPlacement) !== null && _b !== void 0 ? _b : defaultLabelPlacement, onIonChange: (ev) => {
38284
+ this.setChecked(ev);
38285
+ this.callOptionHandler(ev);
38286
+ } }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
38287
+ });
38088
38288
  }
38089
38289
  render() {
38090
- return (hAsync(Host, { key: 'fda0bf6f93cd5ec9f3c64f88a52de849e0e140a2', class: getIonMode$1(this) }, hAsync("ion-header", { key: '27c0b17175a53db9ff159feeeb96451a3f011dab' }, hAsync("ion-toolbar", { key: '91a4155ebc317fbc9f1bb3e26a7e94754b953c9b' }, this.header !== undefined && hAsync("ion-title", { key: 'f6dae8e4e381f322cc90efefd9bb6ef81d4d2f3e' }, this.header), hAsync("ion-buttons", { key: 'e7760532fb2e7e7385ed6e62097d92d96ff20148', slot: "end" }, hAsync("ion-button", { key: '4999b6fc46cba138186546dca67b7950855e6fb7', onClick: () => this.closeModal() }, this.cancelText)))), hAsync("ion-content", { key: 'c73f80a4bc25b9061ea65cf11e5d811c1a4d8704' }, hAsync("ion-list", { key: 'b21905d15b36ad5eb45845e768918d2763cf48b1' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
38290
+ return (hAsync(Host, { key: '2cb1ae057b7a66f5d12c926f618f6b945f019803', class: getIonMode$1(this) }, hAsync("ion-header", { key: 'e41f1c4ad1c71dcc927d210502d6366cea894a14' }, hAsync("ion-toolbar", { key: '1a191dfc8980541469ee4d8996ba4de52cac1ac5' }, this.header !== undefined && hAsync("ion-title", { key: '14ab9cb7d41d15b982c6ccd8ba6cee0e9cb528d9' }, this.header), hAsync("ion-buttons", { key: '80451a2ed3a82138eb1575135cf2ebbd5e8f6e60', slot: "end" }, hAsync("ion-button", { key: '01a315cd739569f3c0b23a4d243d52b69b63dfa7', onClick: () => this.closeModal() }, this.cancelText)))), hAsync("ion-content", { key: 'd953101bae9a91f8108f7a5e411bb1e34338655d' }, hAsync("ion-list", { key: '171a5668afc67b03d2ee87e91cf400b17541bc7f' }, this.multiple === true ? this.renderCheckboxOptions() : this.renderRadioOptions()))));
38091
38291
  }
38092
38292
  get el() { return getElement(this); }
38093
38293
  static get style() { return {
@@ -38112,17 +38312,24 @@ class SelectModal {
38112
38312
 
38113
38313
  const selectOptionCss = () => `:host{display:none}`;
38114
38314
 
38315
+ /**
38316
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
38317
+ *
38318
+ * @slot - Content is placed between the named slots if provided without a slot.
38319
+ * @slot start - Content is placed to the left of the select option text in LTR, and to the right in RTL.
38320
+ * @slot end - Content is placed to the right of the select option text in LTR, and to the left in RTL.
38321
+ */
38115
38322
  class SelectOption {
38116
38323
  constructor(hostRef) {
38117
38324
  registerInstance(this, hostRef);
38118
38325
  this.inputId = `ion-selopt-${selectOptionIds++}`;
38119
38326
  /**
38120
- * 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.
38327
+ * If `true`, the user cannot interact with the select option.
38121
38328
  */
38122
38329
  this.disabled = false;
38123
38330
  }
38124
38331
  render() {
38125
- return hAsync(Host, { key: '824730b6c1e4f15b716e91b05840e890af5f1577', role: "option", id: this.inputId, class: getIonMode$1(this) });
38332
+ return hAsync(Host, { key: '8b8bef0f5a55f18048708c34d3ea3ff0ff2f1d47', role: "option", id: this.inputId, class: getIonMode$1(this) });
38126
38333
  }
38127
38334
  get el() { return getElement(this); }
38128
38335
  static get style() { return selectOptionCss(); }
@@ -38131,7 +38338,10 @@ class SelectOption {
38131
38338
  "$tagName$": "ion-select-option",
38132
38339
  "$members$": {
38133
38340
  "disabled": [4],
38134
- "value": [8]
38341
+ "value": [8],
38342
+ "description": [1],
38343
+ "labelPlacement": [1, "label-placement"],
38344
+ "justify": [1]
38135
38345
  },
38136
38346
  "$listeners$": undefined,
38137
38347
  "$lazyBundleId$": "-",
@@ -38140,9 +38350,9 @@ class SelectOption {
38140
38350
  }
38141
38351
  let selectOptionIds = 0;
38142
38352
 
38143
- 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}`;
38353
+ 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{width:28px;height: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}`;
38144
38354
 
38145
- 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)}`;
38355
+ 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{width:24px;height: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)}`;
38146
38356
 
38147
38357
  /**
38148
38358
  * @internal
@@ -38216,41 +38426,91 @@ class SelectPopover {
38216
38426
  }
38217
38427
  }
38218
38428
  renderCheckboxOptions(options) {
38219
- return options.map((option) => (hAsync("ion-item", { class: Object.assign({
38429
+ const mode = getIonMode$1(this);
38430
+ return options.map((option, index) => {
38431
+ var _a, _b;
38432
+ /**
38433
+ * Cast to `SelectOverlayOption` to access rich content
38434
+ * fields (`startContent`, `endContent`, `description`)
38435
+ * that are passed through from `ion-select` but not
38436
+ * part of the public `SelectPopoverOption` interface.
38437
+ */
38438
+ const richOption = option;
38439
+ const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
38440
+ const optionLabelOptions = {
38441
+ id: `popover-option-${index}`,
38442
+ label: richOption.text,
38443
+ startContent: richOption.startContent,
38444
+ endContent: richOption.endContent,
38445
+ description: richOption.description,
38446
+ };
38447
+ const defaultLabelPlacement = getOverlayLabelPlacement(mode, 'checkbox');
38448
+ const defaultJustify = getOverlayLabelJustify(mode, 'checkbox');
38449
+ return (hAsync("ion-item", {
38220
38450
  // TODO FW-4784
38221
- 'item-checkbox-checked': option.checked
38222
- }, getClassMap(option.cssClass)) }, hAsync("ion-checkbox", { value: option.value, disabled: option.disabled, checked: option.checked, justify: "start", labelPlacement: "end", onIonChange: (ev) => {
38223
- this.setChecked(ev);
38224
- this.callOptionHandler(ev);
38225
- } }, option.text))));
38451
+ disabled: option.disabled, class: Object.assign({
38452
+ // TODO FW-4784
38453
+ 'item-checkbox-checked': option.checked
38454
+ }, getClassMap(option.cssClass))
38455
+ }, hAsync("ion-checkbox", { class: {
38456
+ 'select-option-has-rich-content': hasRichContent,
38457
+ }, value: option.value, disabled: option.disabled, checked: option.checked, justify: (_a = richOption.justify) !== null && _a !== void 0 ? _a : defaultJustify, labelPlacement: (_b = richOption.labelPlacement) !== null && _b !== void 0 ? _b : defaultLabelPlacement, onIonChange: (ev) => {
38458
+ this.setChecked(ev);
38459
+ this.callOptionHandler(ev);
38460
+ } }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
38461
+ });
38226
38462
  }
38227
38463
  renderRadioOptions(options) {
38464
+ const mode = getIonMode$1(this);
38228
38465
  const checked = options.filter((o) => o.checked).map((o) => o.value)[0];
38229
- return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, options.map((option) => (hAsync("ion-item", { class: Object.assign({
38466
+ return (hAsync("ion-radio-group", { value: checked, onIonChange: (ev) => this.callOptionHandler(ev) }, options.map((option, index) => {
38467
+ var _a, _b;
38468
+ /**
38469
+ * Cast to `SelectOverlayOption` to access rich content
38470
+ * fields (`startContent`, `endContent`, `description`)
38471
+ * that are passed through from `ion-select` but not
38472
+ * part of the public `SelectPopoverOption` interface.
38473
+ */
38474
+ const richOption = option;
38475
+ const hasRichContent = !!richOption.startContent || !!richOption.endContent || !!richOption.description;
38476
+ const optionLabelOptions = {
38477
+ id: `popover-option-${index}`,
38478
+ label: richOption.text,
38479
+ startContent: richOption.startContent,
38480
+ endContent: richOption.endContent,
38481
+ description: richOption.description,
38482
+ };
38483
+ return (hAsync("ion-item", {
38230
38484
  // TODO FW-4784
38231
- 'item-radio-checked': option.value === checked
38232
- }, getClassMap(option.cssClass)) }, hAsync("ion-radio", { value: option.value, disabled: option.disabled, onClick: () => this.dismissParentPopover(), onKeyDown: (ev) => {
38233
- if (ev.key === 'Enter' && !ev.repeat) {
38234
- this.pendingEnterTarget = ev.currentTarget;
38235
- }
38236
- }, onKeyUp: (ev) => {
38237
- if (ev.key === ' ') {
38238
- // Space selects and dismisses in one press.
38239
- this.dismissParentPopover();
38240
- }
38241
- else if (ev.key === 'Enter') {
38242
- const shouldDismiss = this.pendingEnterTarget === ev.currentTarget;
38243
- this.pendingEnterTarget = null;
38244
- if (shouldDismiss) {
38485
+ disabled: option.disabled, class: Object.assign({
38486
+ // TODO FW-4784
38487
+ 'item-radio-checked': option.value === checked
38488
+ }, getClassMap(option.cssClass))
38489
+ }, hAsync("ion-radio", { class: {
38490
+ 'select-option-has-rich-content': hasRichContent,
38491
+ }, value: option.value, disabled: option.disabled, justify: (_a = richOption.justify) !== null && _a !== void 0 ? _a : getOverlayLabelJustify(mode, 'radio'), labelPlacement: (_b = richOption.labelPlacement) !== null && _b !== void 0 ? _b : getOverlayLabelPlacement(mode, 'radio'), onClick: () => this.dismissParentPopover(), onKeyDown: (ev) => {
38492
+ if (ev.key === 'Enter' && !ev.repeat) {
38493
+ this.pendingEnterTarget = ev.currentTarget;
38494
+ }
38495
+ }, onKeyUp: (ev) => {
38496
+ if (ev.key === ' ') {
38497
+ // Space selects and dismisses in one press.
38245
38498
  this.dismissParentPopover();
38246
38499
  }
38247
- }
38248
- } }, option.text))))));
38500
+ else if (ev.key === 'Enter') {
38501
+ const shouldDismiss = this.pendingEnterTarget === ev.currentTarget;
38502
+ this.pendingEnterTarget = null;
38503
+ if (shouldDismiss) {
38504
+ this.dismissParentPopover();
38505
+ }
38506
+ }
38507
+ } }, renderOptionLabel(optionLabelOptions, 'select-option-label'))));
38508
+ })));
38249
38509
  }
38250
38510
  render() {
38251
38511
  const { header, message, options, subHeader } = this;
38252
38512
  const hasSubHeaderOrMessage = subHeader !== undefined || message !== undefined;
38253
- return (hAsync(Host, { key: 'e7449a1ecfcdbf45a79f8e26a00253c4e146448a', class: getIonMode$1(this) }, hAsync("ion-list", { key: '52abdfc8668c3429a0dcefef8ddedb6647fdd894' }, header !== undefined && hAsync("ion-list-header", { key: '978e5c03728756feafcc60a0e10e6ec59bf2ae11' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'e93c44e7f07a76def16e4b11f0fb4780d84ed402' }, hAsync("ion-label", { key: 'bba1aac43b0bc7f4f00978dd8301985233f3725c', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: 'ad96f6017cf2cc5219540bded2c4f1ca3b532de2' }, subHeader), message !== undefined && hAsync("p", { key: '3fd038921dc40c4d0c29734433984b279ccaeec3' }, message)))), this.renderOptions(options))));
38513
+ return (hAsync(Host, { key: 'd0c107e0ca78955a3cfcd9f098a527fb35eff14d', class: getIonMode$1(this) }, hAsync("ion-list", { key: '1e103312e22bf78d2201a0f88cc4fed789f62a2b' }, header !== undefined && hAsync("ion-list-header", { key: '657439905dc480112ed8d7f8d4a01464724de2bd' }, header), hasSubHeaderOrMessage && (hAsync("ion-item", { key: 'e0eaa0250bf233cf846adba5ddc141bf3430c2a8' }, hAsync("ion-label", { key: 'ad1cff877f9d582fbc64f9049603146fd1a1a6f9', class: "ion-text-wrap" }, subHeader !== undefined && hAsync("h3", { key: 'ead921d395b614a99c89a8ffe2a102a620f80767' }, subHeader), message !== undefined && hAsync("p", { key: '3a47e7091528930f33324ccd04d6734217155244' }, message)))), this.renderOptions(options))));
38254
38514
  }
38255
38515
  get el() { return getElement(this); }
38256
38516
  static get style() { return {
@@ -38300,11 +38560,11 @@ class SkeletonText {
38300
38560
  const animated = this.animated && config.getBoolean('animated', true);
38301
38561
  const inMedia = hostContext('ion-avatar', this.el) || hostContext('ion-thumbnail', this.el);
38302
38562
  const mode = getIonMode$1(this);
38303
- return (hAsync(Host, { key: 'cb8da9aba121811b9a4ffdae60ed88105897cb3c', class: {
38563
+ return (hAsync(Host, { key: '887d958d982345ce610730ab5c9ae35010430f75', class: {
38304
38564
  [mode]: true,
38305
38565
  'skeleton-text-animated': animated,
38306
38566
  'in-media': inMedia,
38307
- } }, hAsync("span", { key: '5379deee3c76d46d615be0cba14b4f60129ffa25' }, "\u00A0")));
38567
+ } }, hAsync("span", { key: 'a184f4b9780a2aada0a16729109ac81436e9c9e1' }, "\u00A0")));
38308
38568
  }
38309
38569
  get el() { return getElement(this); }
38310
38570
  static get style() { return skeletonTextCss(); }
@@ -38356,7 +38616,7 @@ class Spinner {
38356
38616
  svgs.push(buildLine(spinner, duration, i, spinner.lines));
38357
38617
  }
38358
38618
  }
38359
- return (hAsync(Host, { key: 'dd1954e557fa14b943e761474e29e4316ba53938', class: createColorClasses$1(self.color, {
38619
+ return (hAsync(Host, { key: 'c35ebd01186e860acb9cac260193f0836424fdf4', class: createColorClasses$1(self.color, {
38360
38620
  [mode]: true,
38361
38621
  [`spinner-${spinnerName}`]: true,
38362
38622
  'spinner-paused': self.paused || config.getBoolean('_testing'),
@@ -38455,12 +38715,12 @@ class SplitPane {
38455
38715
  }
38456
38716
  render() {
38457
38717
  const mode = getIonMode$1(this);
38458
- return (hAsync(Host, { key: '05c88c009fbe2e223fd261760a2b49da1653ff62', class: {
38718
+ return (hAsync(Host, { key: '694e989fafcfe2453e0a83b3cb736efaa1eb4fec', class: {
38459
38719
  [mode]: true,
38460
38720
  // Used internally for styling
38461
38721
  [`split-pane-${mode}`]: true,
38462
38722
  'split-pane-visible': this.visible,
38463
- } }, hAsync("slot", { key: 'b35865082661253c4468520d79234fa5dab5bd35' })));
38723
+ } }, hAsync("slot", { key: 'dde7e9382b62cc11971aa233cf98c2314ae4f720' })));
38464
38724
  }
38465
38725
  get el() { return getElement(this); }
38466
38726
  static get watchers() { return {
@@ -38532,10 +38792,10 @@ class Tab {
38532
38792
  }
38533
38793
  render() {
38534
38794
  const { tab, active, component } = this;
38535
- return (hAsync(Host, { key: 'fbd837bad7a0632336d46a597ace23673b153e48', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
38795
+ return (hAsync(Host, { key: '745262368a7f45244da459f4fa1730a46dd3e257', role: "tabpanel", "aria-hidden": !active ? 'true' : null, "aria-labelledby": `tab-button-${tab}`, class: {
38536
38796
  'ion-page': component === undefined,
38537
38797
  'tab-hidden': !active,
38538
- } }, hAsync("slot", { key: '35c218169fda826c9c1337558e0278d0c7f5f26a' })));
38798
+ } }, hAsync("slot", { key: '823d09a6f93bf7c0dc74f2b8717d1d3a62df1ad8' })));
38539
38799
  }
38540
38800
  get el() { return getElement(this); }
38541
38801
  static get watchers() { return {
@@ -38649,11 +38909,11 @@ class TabBar {
38649
38909
  const { color, translucent, keyboardVisible } = this;
38650
38910
  const mode = getIonMode$1(this);
38651
38911
  const shouldHide = keyboardVisible && this.el.getAttribute('slot') !== 'top';
38652
- return (hAsync(Host, { key: '24e164eaf81a0bec9237b561465618f10990806c', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
38912
+ return (hAsync(Host, { key: '148f65df0818e9d220a9b46db74cb89ab94e62d2', role: "tablist", "aria-hidden": shouldHide ? 'true' : null, class: createColorClasses$1(color, {
38653
38913
  [mode]: true,
38654
38914
  'tab-bar-translucent': translucent,
38655
38915
  'tab-bar-hidden': shouldHide,
38656
- }) }, hAsync("slot", { key: '0ca29a2d97a7c38bbf43f8d79e271b874b4d9be8' })));
38916
+ }) }, hAsync("slot", { key: 'a64e235f3703662e2dd7a834f752cc5b1490adbc' })));
38657
38917
  }
38658
38918
  get el() { return getElement(this); }
38659
38919
  static get watchers() { return {
@@ -38751,7 +39011,7 @@ class TabButton {
38751
39011
  rel,
38752
39012
  target,
38753
39013
  };
38754
- return (hAsync(Host, { key: '638b93ef40701ec3aefb89b1579eb91aaf6d4f8a', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
39014
+ return (hAsync(Host, { key: '1034b5a928ecec49bd8efec3730ea1b11a579cf3', onClick: this.onClick, onKeyup: this.onKeyUp, id: tab !== undefined ? `tab-button-${tab}` : null, class: {
38755
39015
  [mode]: true,
38756
39016
  'tab-selected': selected,
38757
39017
  'tab-disabled': disabled,
@@ -38763,7 +39023,7 @@ class TabButton {
38763
39023
  'ion-activatable': true,
38764
39024
  'ion-selectable': true,
38765
39025
  'ion-focusable': true,
38766
- } }, hAsync("a", Object.assign({ key: 'c053d32fbcdad8d5e4a409956b47164d7a080c6b' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: 'b3b460d33ec978a46b069442280d31b23bc8e794', class: "button-inner" }, hAsync("slot", { key: '87b3928475c941263261101b8fae27c6370d4671' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '6532e5b4546aebe4becaebe1c93ce0e6aedaffe7', type: "unbounded" }))));
39026
+ } }, hAsync("a", Object.assign({ key: '4cc8e695425956ffc7622af27c1b88a45f8a0c68' }, attrs, { class: "button-native", part: "native", role: "tab", "aria-selected": selected ? 'true' : null, "aria-disabled": disabled ? 'true' : null, tabindex: disabled ? '-1' : undefined }, inheritedAttributes), hAsync("span", { key: 'c529c166f557e1a5c744873c075b564c49786a2c', class: "button-inner" }, hAsync("slot", { key: 'f832355934d80267cd6e81e58b9c5afce0b42907' })), mode === 'md' && hAsync("ion-ripple-effect", { key: '90e79bdf38ba1cd89fca9ce63465e26a29b49316', type: "unbounded" }))));
38767
39027
  }
38768
39028
  get el() { return getElement(this); }
38769
39029
  static get style() { return {
@@ -38954,7 +39214,7 @@ class Tabs {
38954
39214
  return Array.from(this.el.querySelectorAll('ion-tab'));
38955
39215
  }
38956
39216
  render() {
38957
- return (hAsync(Host, { key: 'c7131135b31aa312dc0207602561e1c0f4ac3e53', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: '6c46e91c0389bbcea1f15f35cf3ea513a74ac545', name: "top" }), hAsync("div", { key: '4f1b649d8bb60b61402b97359de204979c5eda52', class: "tabs-inner" }, hAsync("slot", { key: '8d1ef4952be4fb33567376e1083ea4da697fcae0' })), hAsync("slot", { key: '260b8da8031494e9cb4635b3d22c49a433042db1', name: "bottom" })));
39217
+ return (hAsync(Host, { key: 'ba04a29fdd02d7c758cbaa98cfc589949872d832', onIonTabButtonClick: this.onTabClicked }, hAsync("slot", { key: 'd5794140152e2c251e567eeb06afc392af74749d', name: "top" }), hAsync("div", { key: '26fb83786637fe7288901fbbdb3694b8bc94329f', class: "tabs-inner" }, hAsync("slot", { key: '60c663a8647e684455b533eaf5fa3908f9333ae9' })), hAsync("slot", { key: '2d9f7d07c8cdc72f5df200fa71fa56a9dd822c4c', name: "bottom" })));
38958
39218
  }
38959
39219
  get el() { return getElement(this); }
38960
39220
  static get style() { return tabsCss(); }
@@ -38994,9 +39254,9 @@ class Text {
38994
39254
  }
38995
39255
  render() {
38996
39256
  const mode = getIonMode$1(this);
38997
- return (hAsync(Host, { key: 'bfaa49d35f43b8036725ae8a322c716fc6e43bdf', class: createColorClasses$1(this.color, {
39257
+ return (hAsync(Host, { key: '41ed8da617ed0e07bbfe96e32a000e1c6503e24e', class: createColorClasses$1(this.color, {
38998
39258
  [mode]: true,
38999
- }) }, hAsync("slot", { key: 'c04880cd1935b42cbe60f58fd523b4d8a96072dc' })));
39259
+ }) }, hAsync("slot", { key: 'db8de04a2493537b3037f276b03abd92dfa56847' })));
39000
39260
  }
39001
39261
  static get style() { return textCss(); }
39002
39262
  static get cmpMeta() { return {
@@ -39457,7 +39717,7 @@ class Textarea {
39457
39717
  * TODO(FW-5592): Remove hasStartEndSlots condition
39458
39718
  */
39459
39719
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || hasFocus || hasStartEndSlots));
39460
- return (hAsync(Host, { key: '4257e84acd46f43390fa2413d0b8f40e16a37499', class: createColorClasses$1(this.color, {
39720
+ return (hAsync(Host, { key: 'eca1dfed53189408f614661ef3902cdb73d5f5de', class: createColorClasses$1(this.color, {
39461
39721
  [mode]: true,
39462
39722
  'has-value': hasValue,
39463
39723
  'has-focus': hasFocus,
@@ -39466,7 +39726,7 @@ class Textarea {
39466
39726
  [`textarea-shape-${shape}`]: shape !== undefined,
39467
39727
  [`textarea-label-placement-${labelPlacement}`]: true,
39468
39728
  'textarea-disabled': disabled,
39469
- }) }, hAsync("label", { key: '003da35bad92ab36777b7ae40855541bf900c64a', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '3cae2d19f96ba2b18a2d64298fdcc4b64ad34ac7', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'e26cb06763d551f7f83b6ea80349871aab18a016', class: "start-slot-wrapper" }, hAsync("slot", { key: '135ba6db893eaca5f2a785fe61e24f33f56f3765', name: "start" })), hAsync("div", { key: '951eabdd01c5e370790cec8578268361dcc8abdc', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '13d78f1a934b9f8d85cd9ed386dabc786f953f1d', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes), value)), hAsync("div", { key: '699038558019470bccb4853fa65e7aeb069e0baa', class: "end-slot-wrapper" }, hAsync("slot", { key: '19d8c212d7c718aeb6924e10bf8e48cad01314ea', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '910a9437437ce7cab21e37a1cb4a6b309afda58f', class: "textarea-highlight" })), this.renderBottomContent()));
39729
+ }) }, hAsync("label", { key: 'd4d835ffedbf8b6de192096e21167ec4f7e01d30', class: "textarea-wrapper", htmlFor: inputId, onClick: this.onLabelClick }, this.renderLabelContainer(), hAsync("div", { key: '39b03e26c23473de31a0237543eaf1e0875e6ed9', class: "textarea-wrapper-inner" }, hAsync("div", { key: 'e9e0997e7dc6d25f09e8439d81e138590c33a151', class: "start-slot-wrapper" }, hAsync("slot", { key: '2d88aace11d74196758e40af27a777eebb270019', name: "start" })), hAsync("div", { key: '8434424404f9fe707f9209ac6495a33bae060538', class: "native-wrapper", ref: (el) => (this.textareaWrapper = el) }, hAsync("textarea", Object.assign({ key: '5bb8eaeba76c39bccadb7c041a10fb077c422dcc', class: "native-textarea", ref: (el) => (this.nativeInput = el), id: inputId, disabled: disabled, autoCapitalize: this.autocapitalize, autoFocus: this.autofocus, enterKeyHint: this.enterkeyhint, inputMode: this.inputmode, minLength: this.minlength, maxLength: this.maxlength, name: this.name, placeholder: this.placeholder || '', readOnly: this.readonly, required: this.required, spellcheck: this.spellcheck, cols: this.cols, rows: this.rows, wrap: this.wrap, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.onKeyDown, "aria-describedby": this.getHintTextID(), "aria-invalid": this.isInvalid ? 'true' : undefined }, this.inheritedAttributes), value)), hAsync("div", { key: '107707676552f8faca3e708285cc3266061a0394', class: "end-slot-wrapper" }, hAsync("slot", { key: 'dc890ffdce898f3d39a315e7bc432840559be466', name: "end" }))), shouldRenderHighlight && hAsync("div", { key: '4554ad09ac0908cea2e90bfa2301b4cd80ac7242', class: "textarea-highlight" })), this.renderBottomContent()));
39470
39730
  }
39471
39731
  get el() { return getElement(this); }
39472
39732
  static get watchers() { return {
@@ -39535,7 +39795,7 @@ class Thumbnail {
39535
39795
  registerInstance(this, hostRef);
39536
39796
  }
39537
39797
  render() {
39538
- return (hAsync(Host, { key: 'b250e01664238f1dca8f9757b15bc3d5d9387ffa', class: getIonMode$1(this) }, hAsync("slot", { key: '72cb568bccabc983c5186a7596ef6c6d4ebf5ad9' })));
39798
+ return (hAsync(Host, { key: '833e947c683b482a78f8f0df8c9a68e99478bbaa', class: getIonMode$1(this) }, hAsync("slot", { key: '6d1e9e686db88d91379f14121058dbf035d8ded2' })));
39539
39799
  }
39540
39800
  static get style() { return thumbnailCss(); }
39541
39801
  static get cmpMeta() { return {
@@ -40395,9 +40655,9 @@ class Toast {
40395
40655
  if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
40396
40656
  printIonWarning('[ion-toast] - This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
40397
40657
  }
40398
- return (hAsync(Host, Object.assign({ key: 'b5256edcf33d0ef51e6c5080c84e1ca58abe2ae0', tabindex: "-1" }, this.htmlAttributes, { style: {
40658
+ return (hAsync(Host, Object.assign({ key: '2acb2cd2e12ea0082986495929e4a596d4da2f38', tabindex: "-1" }, this.htmlAttributes, { style: {
40399
40659
  zIndex: `${60000 + this.overlayIndex}`,
40400
- }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '0860f7e895d8bc66e44c4d924ca569f4cbb1a749', class: wrapperClass, part: "wrapper" }, hAsync("div", { key: '28784199c880a3f664677c8f5560b7caa8903251', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '0a63ba1336ad43d2aec14e49055eb46c112359c2', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: 'ecec8107af582dc55d4b3828dd7f3054a29f26b1', class: "toast-content", part: "content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
40660
+ }, class: createColorClasses$1(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), hAsync("div", { key: '8b24ba5d3d51d1ab94b9bf6bb5d6e4b8bb3248a7', class: wrapperClass, part: "wrapper" }, hAsync("div", { key: 'e1ebdf4f0425cc7b1e2688667ee9a2b3c545804a', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (hAsync("ion-icon", { key: '552b1ab8f4e72882cc8e878579c7a594119677e1', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), hAsync("div", { key: '8ac8d64f632fbedadb180132c83043474466bee0', class: "toast-content", part: "content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
40401
40661
  }
40402
40662
  get el() { return getElement(this); }
40403
40663
  static get watchers() { return {
@@ -40715,7 +40975,7 @@ class Toggle {
40715
40975
  const value = this.getValue();
40716
40976
  const rtl = isRTL$1(el) ? 'rtl' : 'ltr';
40717
40977
  renderHiddenInput(true, el, name, checked ? value : '', disabled);
40718
- return (hAsync(Host, { key: '736e1dcfca34fd41f6f0632652e7f86d6996a232', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, "aria-required": required ? 'true' : undefined, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, class: createColorClasses$1(color, {
40978
+ return (hAsync(Host, { key: 'ab093ddb505af61685cbb8571af1e765fc0292f8', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, "aria-required": required ? 'true' : undefined, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, class: createColorClasses$1(color, {
40719
40979
  [mode]: true,
40720
40980
  'in-item': hostContext('ion-item', el),
40721
40981
  'toggle-activated': activated,
@@ -40725,10 +40985,10 @@ class Toggle {
40725
40985
  [`toggle-alignment-${alignment}`]: alignment !== undefined,
40726
40986
  [`toggle-label-placement-${labelPlacement}`]: true,
40727
40987
  [`toggle-${rtl}`]: true,
40728
- }) }, hAsync("label", { key: 'e697739fd3964c1c6c23331cf7e38a9841c46a6a', class: "toggle-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: '3d500b8c1bc879591249d183c1abb3f5f26aff6b', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, required: required }, inheritedAttributes)), hAsync("div", { key: 'e38f3fe0e66b4ca434fd81514f5ef771c2960841', class: {
40988
+ }) }, hAsync("label", { key: 'b4b05e458fcbc767e4392ae43e647b075780cad0', class: "toggle-wrapper", htmlFor: inputId }, hAsync("input", Object.assign({ key: 'c09100447011c51d5b49b4400ec7d72012e3bc6f', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, required: required }, inheritedAttributes)), hAsync("div", { key: '71cf059a999ae572a20127b76907e010ace486ad', class: {
40729
40989
  'label-text-wrapper': true,
40730
40990
  'label-text-wrapper-hidden': !hasLabel,
40731
- }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: '006dd3558264d69ab020c07005b348adc4ecdd5b' }), this.renderHintText()), hAsync("div", { key: 'dd4e52de31caabee41ec1bc58efecd1e213368c9', class: "native-wrapper" }, this.renderToggleControl()))));
40991
+ }, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, hAsync("slot", { key: 'c480b96a0ddd926568f73291d71253d6f74438c7' }), this.renderHintText()), hAsync("div", { key: '96a2cbd1673e051a78f8b2b16535ecd3f0ed4339', class: "native-wrapper" }, this.renderToggleControl()))));
40732
40992
  }
40733
40993
  get el() { return getElement(this); }
40734
40994
  static get watchers() { return {
@@ -40840,10 +41100,10 @@ class Toolbar {
40840
41100
  this.childrenStyles.forEach((value) => {
40841
41101
  Object.assign(childStyles, value);
40842
41102
  });
40843
- return (hAsync(Host, { key: 'b849db2863778dee6c5a251bffa1b3a657aeb036', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
41103
+ return (hAsync(Host, { key: '40bad6fa7e94262438da4bbe037dcf8a5fa2df22', class: Object.assign(Object.assign({}, childStyles), createColorClasses$1(this.color, {
40844
41104
  [mode]: true,
40845
41105
  'in-toolbar': hostContext('ion-toolbar', this.el),
40846
- })) }, hAsync("div", { key: '67f5bba9c4f527c3f35bfe1313a2b85741f9b246', class: "toolbar-background", part: "background" }), hAsync("div", { key: '085e8c68f056e5b0deb9d1606431fbeb45dae8e5', class: "toolbar-container", part: "container" }, hAsync("slot", { key: '15227c79c3baf883fd8c43fdb7e1313453933c79', name: "start" }), hAsync("slot", { key: '0b8a7f7e685aa31c80d9bc03446ccc3a9d07e0e8', name: "secondary" }), hAsync("div", { key: '57e4628c1fa89df79dd80456259db961bb691404', class: "toolbar-content", part: "content" }, hAsync("slot", { key: '82c2f6e1acf8d96db259bd8baf295881801edbd5' })), hAsync("slot", { key: 'b2d4afb15214199f206c0a5e08b581e4c9c2f58a', name: "primary" }), hAsync("slot", { key: 'bfb909a0c472f8834046c2ea23bef2f562167ad3', name: "end" }))));
41106
+ })) }, hAsync("div", { key: 'df44c9f0fe3958116ab860b0dad79c53b89f6c59', class: "toolbar-background", part: "background" }), hAsync("div", { key: '2169ffa576875b8d5624211cc0b4bf86191562bc', class: "toolbar-container", part: "container" }, hAsync("slot", { key: 'c8910dcf1ce98ab427fd89c3396a67c2a75bdd07', name: "start" }), hAsync("slot", { key: '05da24d5ef96b9eebd83b534ce02c1f7bcd06680', name: "secondary" }), hAsync("div", { key: '090fea1541e7e2b6ad74a6ded4eadffdb471ccce', class: "toolbar-content", part: "content" }, hAsync("slot", { key: '507e143f92f6fa59ff23d94026411fa2c74f2f8e' })), hAsync("slot", { key: 'f79fdee472e657e26a910cb89d7551943e40e440', name: "primary" }), hAsync("slot", { key: 'dd40fe9ed490cf4346c642e195fdb524dc6cc4f5', name: "end" }))));
40847
41107
  }
40848
41108
  get el() { return getElement(this); }
40849
41109
  static get style() { return {
@@ -40889,11 +41149,11 @@ class ToolbarTitle {
40889
41149
  render() {
40890
41150
  const mode = getIonMode$1(this);
40891
41151
  const size = this.getSize();
40892
- return (hAsync(Host, { key: '44e63f8439df64c470692904427b417e19406476', class: createColorClasses$1(this.color, {
41152
+ return (hAsync(Host, { key: 'd9317e8e66cb6112717f5a9c252658777efbd873', class: createColorClasses$1(this.color, {
40893
41153
  [mode]: true,
40894
41154
  [`title-${size}`]: true,
40895
41155
  'title-rtl': document.dir === 'rtl',
40896
- }) }, hAsync("div", { key: '784cf60a0db16045391891cc8fad0c7dbeba4039', class: "toolbar-title" }, hAsync("slot", { key: '0c720a50479ba257e8756337aeb9b0ab7516a227' }))));
41156
+ }) }, hAsync("div", { key: 'a4d011d6d409bf006d8efe33667002edb109820a', class: "toolbar-title" }, hAsync("slot", { key: '4ca3303b957a0e5387f1e9058e5adb4c6275afcc' }))));
40897
41157
  }
40898
41158
  get el() { return getElement(this); }
40899
41159
  static get watchers() { return {
@@ -40973,10 +41233,8 @@ registerComponents([
40973
41233
  Nav,
40974
41234
  NavLink,
40975
41235
  Note,
40976
- Picker$1,
40977
41236
  Picker,
40978
41237
  PickerColumn,
40979
- PickerColumnCmp,
40980
41238
  PickerColumnOption,
40981
41239
  Popover,
40982
41240
  ProgressBar,