@ionic/core 8.8.9-dev.11781024903.1e4268e5 → 8.8.9-dev.11781201980.1b6e8398

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 (366) 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-gallery-item.d.ts +11 -0
  12. package/components/ion-gallery-item.js +4 -0
  13. package/components/ion-gallery.js +1 -1
  14. package/components/ion-grid.js +1 -1
  15. package/components/ion-header.js +1 -1
  16. package/components/ion-img.js +1 -1
  17. package/components/ion-infinite-scroll-content.js +1 -1
  18. package/components/ion-infinite-scroll.js +1 -1
  19. package/components/ion-input-otp.js +1 -1
  20. package/components/ion-input-password-toggle.js +1 -1
  21. package/components/ion-input.js +1 -1
  22. package/components/ion-item-divider.js +1 -1
  23. package/components/ion-item-group.js +1 -1
  24. package/components/ion-item-option.js +1 -1
  25. package/components/ion-item-options.js +1 -1
  26. package/components/ion-item-sliding.js +1 -1
  27. package/components/ion-item.js +1 -1
  28. package/components/ion-label.js +1 -1
  29. package/components/ion-list-header.js +1 -1
  30. package/components/ion-list.js +1 -1
  31. package/components/ion-loading.js +1 -1
  32. package/components/ion-menu-button.js +1 -1
  33. package/components/ion-menu-toggle.js +1 -1
  34. package/components/ion-menu.js +1 -1
  35. package/components/ion-modal.js +1 -1
  36. package/components/ion-nav-link.js +1 -1
  37. package/components/ion-nav.js +1 -1
  38. package/components/ion-note.js +1 -1
  39. package/components/ion-picker-column-option.js +1 -1
  40. package/components/ion-picker-legacy-column.js +1 -1
  41. package/components/ion-picker-legacy.js +1 -1
  42. package/components/ion-popover.js +1 -1
  43. package/components/ion-progress-bar.js +1 -1
  44. package/components/ion-radio-group.js +1 -1
  45. package/components/ion-radio.js +1 -1
  46. package/components/ion-range.js +1 -1
  47. package/components/ion-refresher-content.js +1 -1
  48. package/components/ion-refresher.js +1 -1
  49. package/components/ion-reorder-group.js +1 -1
  50. package/components/ion-reorder.js +1 -1
  51. package/components/ion-ripple-effect.js +1 -1
  52. package/components/ion-router-link.js +1 -1
  53. package/components/ion-router-outlet.js +1 -1
  54. package/components/ion-row.js +1 -1
  55. package/components/ion-searchbar.js +1 -1
  56. package/components/ion-segment-button.js +1 -1
  57. package/components/ion-segment-content.js +1 -1
  58. package/components/ion-segment-view.js +1 -1
  59. package/components/ion-segment.js +1 -1
  60. package/components/ion-select-modal.js +1 -1
  61. package/components/ion-select-option.js +1 -1
  62. package/components/ion-select-popover.js +1 -1
  63. package/components/ion-select.js +1 -1
  64. package/components/ion-skeleton-text.js +1 -1
  65. package/components/ion-spinner.js +1 -1
  66. package/components/ion-split-pane.js +1 -1
  67. package/components/ion-tab-bar.js +1 -1
  68. package/components/ion-tab-button.js +1 -1
  69. package/components/ion-tab.js +1 -1
  70. package/components/ion-tabs.js +1 -1
  71. package/components/ion-text.js +1 -1
  72. package/components/ion-textarea.js +1 -1
  73. package/components/ion-thumbnail.js +1 -1
  74. package/components/ion-title.js +1 -1
  75. package/components/ion-toast.js +1 -1
  76. package/components/ion-toggle.js +1 -1
  77. package/components/ion-toolbar.js +1 -1
  78. package/components/p-BFZBl0TS.js +4 -0
  79. package/components/{p-pvh0bjpw.js → p-BVi3gqm6.js} +1 -1
  80. package/components/{p-D6g8ud1e.js → p-BVk7LVs0.js} +1 -1
  81. package/components/{p-B9MABkWm.js → p-BdUtZxku.js} +1 -1
  82. package/components/{p-CzC_ZSgb.js → p-Be8tHurp.js} +1 -1
  83. package/components/p-C0U8YqYW.js +4 -0
  84. package/components/{p-C8kBejTT.js → p-CG3ZV6ON.js} +1 -1
  85. package/components/{p-CBS0sBAa.js → p-CaqTORfV.js} +1 -1
  86. package/components/{p-D2mReIu8.js → p-CkA0SI9d.js} +1 -1
  87. package/components/p-Cmql_g3_.js +4 -0
  88. package/components/p-CsakePQg.js +4 -0
  89. package/components/{p-CgSn4J7d.js → p-D1gEOh9B.js} +1 -1
  90. package/components/p-D3qBmaqi.js +4 -0
  91. package/components/{p-Do7NMUwR.js → p-DGn-jQpr.js} +1 -1
  92. package/components/p-DH4JHV73.js +4 -0
  93. package/components/p-DYK0qX7x.js +4 -0
  94. package/components/{p-Dp2x0MpA.js → p-DfV7pOtM.js} +1 -1
  95. package/components/{p-BhkGOA7t.js → p-F3N54OKJ.js} +1 -1
  96. package/components/{p-CgZLVOCc.js → p-MPREydZp.js} +1 -1
  97. package/components/{p-kKYBfhbe.js → p-OFfrVDLw.js} +1 -1
  98. package/components/p-iZO3WzZT.js +4 -0
  99. package/components/{p-LB-QPk3e.js → p-qclL-gNR.js} +1 -1
  100. package/dist/cjs/index-BJlwOs11.js +171 -0
  101. package/dist/cjs/index.cjs.js +1 -1
  102. package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -5
  103. package/dist/cjs/ion-alert.cjs.entry.js +9 -25
  104. package/dist/cjs/ion-app_8.cjs.entry.js +7 -7
  105. package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
  106. package/dist/cjs/ion-col_3.cjs.entry.js +4 -4
  107. package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
  108. package/dist/cjs/ion-gallery-item.cjs.entry.js +60 -0
  109. package/dist/cjs/ion-gallery.cjs.entry.js +91 -13
  110. package/dist/cjs/ion-img.cjs.entry.js +2 -2
  111. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +4 -4
  112. package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
  113. package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
  114. package/dist/cjs/ion-input.cjs.entry.js +4 -4
  115. package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
  116. package/dist/cjs/ion-item_8.cjs.entry.js +16 -15
  117. package/dist/cjs/ion-loading.cjs.entry.js +3 -3
  118. package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
  119. package/dist/cjs/ion-modal.cjs.entry.js +4 -4
  120. package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
  121. package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
  122. package/dist/cjs/ion-popover.cjs.entry.js +2 -2
  123. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  124. package/dist/cjs/ion-radio_2.cjs.entry.js +5 -5
  125. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  126. package/dist/cjs/ion-refresher_2.cjs.entry.js +4 -4
  127. package/dist/cjs/ion-reorder_2.cjs.entry.js +3 -3
  128. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  129. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  130. package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
  131. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  132. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
  133. package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
  134. package/dist/cjs/ion-select-modal.cjs.entry.js +10 -30
  135. package/dist/cjs/ion-select_3.cjs.entry.js +43 -102
  136. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  137. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  138. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  139. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  140. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  141. package/dist/cjs/ion-textarea.cjs.entry.js +3 -3
  142. package/dist/cjs/ion-toast.cjs.entry.js +3 -3
  143. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  144. package/dist/cjs/ionic.cjs.js +1 -1
  145. package/dist/cjs/loader.cjs.js +1 -1
  146. package/dist/cjs/select-option-render-C7klBX2H.js +81 -0
  147. package/dist/collection/collection-manifest.json +2 -1
  148. package/dist/collection/components/action-sheet/action-sheet.ionic.css +506 -163
  149. package/dist/collection/components/action-sheet/action-sheet.ios.css +27 -288
  150. package/dist/collection/components/action-sheet/action-sheet.md.css +27 -228
  151. package/dist/collection/components/alert/alert.ionic.css +797 -416
  152. package/dist/collection/components/alert/alert.ios.css +40 -402
  153. package/dist/collection/components/alert/alert.js +4 -20
  154. package/dist/collection/components/alert/alert.md.css +50 -385
  155. package/dist/collection/components/gallery/gallery.css +1 -86
  156. package/dist/collection/components/gallery/gallery.js +92 -13
  157. package/dist/collection/components/gallery/test/utils.js +16 -16
  158. package/dist/collection/components/gallery-item/gallery-item.css +88 -0
  159. package/dist/collection/components/gallery-item/gallery-item.js +100 -0
  160. package/dist/collection/components/grid/grid.js +2 -2
  161. package/dist/collection/components/header/header.js +2 -2
  162. package/dist/collection/components/img/img.js +2 -2
  163. package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
  164. package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
  165. package/dist/collection/components/input/input.js +4 -4
  166. package/dist/collection/components/input-otp/input-otp.js +3 -3
  167. package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
  168. package/dist/collection/components/item/item.ionic.css +17 -5
  169. package/dist/collection/components/item/item.js +3 -2
  170. package/dist/collection/components/item-divider/item-divider.js +2 -2
  171. package/dist/collection/components/item-group/item-group.js +1 -1
  172. package/dist/collection/components/item-option/item-option.js +2 -2
  173. package/dist/collection/components/item-options/item-options.js +1 -1
  174. package/dist/collection/components/item-sliding/item-sliding.js +1 -1
  175. package/dist/collection/components/label/label.js +2 -2
  176. package/dist/collection/components/list/list.js +1 -1
  177. package/dist/collection/components/list-header/list-header.js +2 -2
  178. package/dist/collection/components/loading/loading.js +2 -2
  179. package/dist/collection/components/menu/menu.js +2 -2
  180. package/dist/collection/components/menu-button/menu-button.js +2 -2
  181. package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
  182. package/dist/collection/components/modal/modal.js +4 -4
  183. package/dist/collection/components/nav/nav.js +1 -1
  184. package/dist/collection/components/nav-link/nav-link.js +1 -1
  185. package/dist/collection/components/note/note.js +2 -2
  186. package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
  187. package/dist/collection/components/picker-legacy/picker.js +2 -2
  188. package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
  189. package/dist/collection/components/popover/popover.js +2 -2
  190. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  191. package/dist/collection/components/radio/radio.js +3 -3
  192. package/dist/collection/components/radio-group/radio-group.js +2 -2
  193. package/dist/collection/components/range/range.js +3 -3
  194. package/dist/collection/components/refresher/refresher.js +1 -1
  195. package/dist/collection/components/refresher-content/refresher-content.js +2 -2
  196. package/dist/collection/components/reorder/reorder.js +2 -2
  197. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  198. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  199. package/dist/collection/components/router-link/router-link.js +2 -2
  200. package/dist/collection/components/router-outlet/router-outlet.js +1 -1
  201. package/dist/collection/components/row/row.js +2 -2
  202. package/dist/collection/components/searchbar/searchbar.js +4 -4
  203. package/dist/collection/components/segment/segment.js +2 -2
  204. package/dist/collection/components/segment-button/segment-button.js +2 -2
  205. package/dist/collection/components/segment-content/segment-content.js +1 -1
  206. package/dist/collection/components/segment-view/segment-view.js +2 -2
  207. package/dist/collection/components/select/select.js +32 -72
  208. package/dist/collection/components/select-modal/select-modal.ionic.css +29 -139
  209. package/dist/collection/components/select-modal/select-modal.ios.css +7 -379
  210. package/dist/collection/components/select-modal/select-modal.js +5 -25
  211. package/dist/collection/components/select-modal/select-modal.md.css +7 -319
  212. package/dist/collection/components/select-option/select-option.js +1 -39
  213. package/dist/collection/components/select-popover/select-popover.ionic.css +376 -129
  214. package/dist/collection/components/select-popover/select-popover.ios.css +69 -252
  215. package/dist/collection/components/select-popover/select-popover.js +6 -25
  216. package/dist/collection/components/select-popover/select-popover.md.css +27 -273
  217. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  218. package/dist/collection/components/spinner/spinner.js +1 -1
  219. package/dist/collection/components/split-pane/split-pane.js +2 -2
  220. package/dist/collection/components/tab/tab.js +2 -2
  221. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  222. package/dist/collection/components/tab-button/tab-button.js +2 -2
  223. package/dist/collection/components/tabs/tabs.js +1 -1
  224. package/dist/collection/components/text/text.js +2 -2
  225. package/dist/collection/components/textarea/textarea.js +3 -3
  226. package/dist/collection/components/thumbnail/thumbnail.js +2 -2
  227. package/dist/collection/components/title/title.js +2 -2
  228. package/dist/collection/components/toast/toast.js +2 -2
  229. package/dist/collection/components/toggle/toggle.js +3 -3
  230. package/dist/collection/components/toolbar/toolbar.js +2 -2
  231. package/dist/collection/utils/sanitization/index.js +14 -255
  232. package/dist/collection/utils/select-option-render.js +24 -59
  233. package/dist/docs.json +87 -69
  234. package/dist/esm/index-D4ugF_sT.js +168 -0
  235. package/dist/esm/index.js +1 -1
  236. package/dist/esm/ion-action-sheet.entry.js +5 -5
  237. package/dist/esm/ion-alert.entry.js +9 -25
  238. package/dist/esm/ion-app_8.entry.js +7 -7
  239. package/dist/esm/ion-avatar_3.entry.js +2 -2
  240. package/dist/esm/ion-col_3.entry.js +4 -4
  241. package/dist/esm/ion-datetime_3.entry.js +4 -4
  242. package/dist/esm/ion-gallery-item.entry.js +58 -0
  243. package/dist/esm/ion-gallery.entry.js +91 -13
  244. package/dist/esm/ion-img.entry.js +2 -2
  245. package/dist/esm/ion-infinite-scroll_2.entry.js +4 -4
  246. package/dist/esm/ion-input-otp.entry.js +3 -3
  247. package/dist/esm/ion-input-password-toggle.entry.js +3 -3
  248. package/dist/esm/ion-input.entry.js +4 -4
  249. package/dist/esm/ion-item-option_3.entry.js +4 -4
  250. package/dist/esm/ion-item_8.entry.js +16 -15
  251. package/dist/esm/ion-loading.entry.js +3 -3
  252. package/dist/esm/ion-menu_3.entry.js +6 -6
  253. package/dist/esm/ion-modal.entry.js +4 -4
  254. package/dist/esm/ion-nav_2.entry.js +2 -2
  255. package/dist/esm/ion-picker-column-option.entry.js +2 -2
  256. package/dist/esm/ion-popover.entry.js +2 -2
  257. package/dist/esm/ion-progress-bar.entry.js +1 -1
  258. package/dist/esm/ion-radio_2.entry.js +5 -5
  259. package/dist/esm/ion-range.entry.js +3 -3
  260. package/dist/esm/ion-refresher_2.entry.js +4 -4
  261. package/dist/esm/ion-reorder_2.entry.js +3 -3
  262. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  263. package/dist/esm/ion-route_4.entry.js +2 -2
  264. package/dist/esm/ion-searchbar.entry.js +4 -4
  265. package/dist/esm/ion-segment-content.entry.js +1 -1
  266. package/dist/esm/ion-segment-view.entry.js +2 -2
  267. package/dist/esm/ion-segment_2.entry.js +4 -4
  268. package/dist/esm/ion-select-modal.entry.js +10 -30
  269. package/dist/esm/ion-select_3.entry.js +43 -102
  270. package/dist/esm/ion-spinner.entry.js +1 -1
  271. package/dist/esm/ion-split-pane.entry.js +2 -2
  272. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  273. package/dist/esm/ion-tab_2.entry.js +3 -3
  274. package/dist/esm/ion-text.entry.js +2 -2
  275. package/dist/esm/ion-textarea.entry.js +3 -3
  276. package/dist/esm/ion-toast.entry.js +3 -3
  277. package/dist/esm/ion-toggle.entry.js +3 -3
  278. package/dist/esm/ionic.js +1 -1
  279. package/dist/esm/loader.js +1 -1
  280. package/dist/esm/select-option-render-B2qc5ZP7.js +79 -0
  281. package/dist/html.html-data.json +42 -27
  282. package/dist/ionic/index.esm.js +1 -1
  283. package/dist/ionic/ionic.esm.js +1 -1
  284. package/dist/ionic/{p-f52856cb.entry.js → p-0592c549.entry.js} +1 -1
  285. package/dist/ionic/{p-67c2d349.entry.js → p-0aa510cd.entry.js} +1 -1
  286. package/dist/ionic/{p-9ccfb733.entry.js → p-0cd5fd9d.entry.js} +1 -1
  287. package/dist/ionic/p-0e9d4e11.entry.js +4 -0
  288. package/dist/ionic/{p-497f6391.entry.js → p-11a38333.entry.js} +1 -1
  289. package/dist/ionic/{p-0030507d.entry.js → p-1a009a51.entry.js} +1 -1
  290. package/dist/ionic/{p-7186786e.entry.js → p-23e524f8.entry.js} +1 -1
  291. package/dist/ionic/{p-1439fecb.entry.js → p-2826761a.entry.js} +1 -1
  292. package/dist/ionic/{p-93315d96.entry.js → p-2c4170d8.entry.js} +1 -1
  293. package/dist/ionic/p-2d5a2511.entry.js +4 -0
  294. package/dist/ionic/{p-7f294078.entry.js → p-3706ea52.entry.js} +1 -1
  295. package/dist/ionic/{p-b69add0e.entry.js → p-3e376501.entry.js} +1 -1
  296. package/dist/ionic/{p-c684a3b6.entry.js → p-44597202.entry.js} +1 -1
  297. package/dist/ionic/{p-8458f1b6.entry.js → p-4a27a79a.entry.js} +1 -1
  298. package/dist/ionic/{p-b7235e85.entry.js → p-4f07113d.entry.js} +1 -1
  299. package/dist/ionic/{p-88e7f52a.entry.js → p-52b85650.entry.js} +1 -1
  300. package/dist/ionic/{p-199bffb3.entry.js → p-5a6e0ae1.entry.js} +1 -1
  301. package/dist/ionic/p-6906dca7.entry.js +4 -0
  302. package/dist/ionic/p-75a1ca50.entry.js +4 -0
  303. package/dist/ionic/{p-19a1ff9a.entry.js → p-7b09c19d.entry.js} +1 -1
  304. package/dist/ionic/{p-76c70824.entry.js → p-7b886782.entry.js} +1 -1
  305. package/dist/ionic/p-7da8b262.entry.js +4 -0
  306. package/dist/ionic/{p-89eab395.entry.js → p-82c05be2.entry.js} +1 -1
  307. package/dist/ionic/{p-b653f4c2.entry.js → p-83c0eb9b.entry.js} +1 -1
  308. package/dist/ionic/{p-b4fd91b8.entry.js → p-85ff1314.entry.js} +1 -1
  309. package/dist/ionic/p-88048796.entry.js +4 -0
  310. package/dist/ionic/{p-3f18dfe9.entry.js → p-8eca5ba1.entry.js} +1 -1
  311. package/dist/ionic/p-96f52444.entry.js +4 -0
  312. package/dist/ionic/p-CFjI63GE.js +4 -0
  313. package/dist/ionic/p-CWJdc8f_.js +4 -0
  314. package/dist/ionic/{p-f2f740aa.entry.js → p-a3b047e0.entry.js} +1 -1
  315. package/dist/ionic/{p-40d9e029.entry.js → p-a73caa5e.entry.js} +1 -1
  316. package/dist/ionic/{p-1ad16c09.entry.js → p-b0dfd018.entry.js} +1 -1
  317. package/dist/ionic/{p-a3f9be52.entry.js → p-b6130fe4.entry.js} +1 -1
  318. package/dist/ionic/p-c0558552.entry.js +4 -0
  319. package/dist/ionic/{p-084c2623.entry.js → p-c5f745b4.entry.js} +1 -1
  320. package/dist/ionic/{p-bc3d68ff.entry.js → p-c781241c.entry.js} +1 -1
  321. package/dist/ionic/p-cb154afe.entry.js +4 -0
  322. package/dist/ionic/{p-b847907d.entry.js → p-cde69f38.entry.js} +1 -1
  323. package/dist/ionic/{p-70ee89c9.entry.js → p-d6f0a698.entry.js} +1 -1
  324. package/dist/ionic/{p-dd2981d0.entry.js → p-d9804d04.entry.js} +1 -1
  325. package/dist/ionic/{p-7054a1b9.entry.js → p-e342b205.entry.js} +1 -1
  326. package/dist/ionic/{p-9dfbe98d.entry.js → p-e8916b04.entry.js} +1 -1
  327. package/dist/ionic/{p-dac1d4de.entry.js → p-f10f8f95.entry.js} +1 -1
  328. package/dist/types/components/gallery/gallery.d.ts +41 -8
  329. package/dist/types/components/gallery/test/utils.d.ts +2 -1
  330. package/dist/types/components/gallery-item/gallery-item.d.ts +33 -0
  331. package/dist/types/components/select/select-interface.d.ts +0 -8
  332. package/dist/types/components/select-option/select-option.d.ts +0 -32
  333. package/dist/types/components.d.ts +33 -18
  334. package/dist/types/utils/sanitization/index.d.ts +2 -54
  335. package/dist/types/utils/select-option-render.d.ts +0 -31
  336. package/hydrate/index.js +380 -645
  337. package/hydrate/index.mjs +380 -645
  338. package/package.json +1 -1
  339. package/components/p-BP_TU_4l.js +0 -4
  340. package/components/p-BqTwa6uT.js +0 -4
  341. package/components/p-Bxiu1dAN.js +0 -4
  342. package/components/p-C91NnY87.js +0 -4
  343. package/components/p-CODBQrPj.js +0 -4
  344. package/components/p-GElQZ38c.js +0 -4
  345. package/components/p-WdrzoonY.js +0 -4
  346. package/components/p-h64_gZrH.js +0 -4
  347. package/components/p-sehKq5RI.js +0 -4
  348. package/dist/cjs/index-Dm4Dm7Vg.js +0 -414
  349. package/dist/cjs/overlay-control-label-DnRLQR1t.js +0 -52
  350. package/dist/cjs/select-option-render-DQyZnlF5.js +0 -116
  351. package/dist/collection/utils/overlay-control-label.js +0 -47
  352. package/dist/esm/index-Bmyj8b0z.js +0 -409
  353. package/dist/esm/overlay-control-label-CODBQrPj.js +0 -49
  354. package/dist/esm/select-option-render-QGJ9tZHa.js +0 -114
  355. package/dist/ionic/p-18ed37e3.entry.js +0 -4
  356. package/dist/ionic/p-2049aa81.entry.js +0 -4
  357. package/dist/ionic/p-290778c1.entry.js +0 -4
  358. package/dist/ionic/p-2aa7567e.entry.js +0 -4
  359. package/dist/ionic/p-2e7e3da1.entry.js +0 -4
  360. package/dist/ionic/p-CODBQrPj.js +0 -4
  361. package/dist/ionic/p-CxRK9GyE.js +0 -4
  362. package/dist/ionic/p-NqPMS7BP.js +0 -4
  363. package/dist/ionic/p-c94fbdab.entry.js +0 -4
  364. package/dist/ionic/p-e89848b2.entry.js +0 -4
  365. package/dist/ionic/p-ff09d2a5.entry.js +0 -4
  366. package/dist/types/utils/overlay-control-label.d.ts +0 -34
@@ -542,8 +542,8 @@ export class Searchbar {
542
542
  const shouldShowCancelButton = this.shouldShowCancelButton();
543
543
  const shape = this.getShape();
544
544
  const size = this.getSize();
545
- const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '9b71660f86c93ab8e1c4bca45a778584b1473a48', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: theme === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: '27c4121c6b49906b2a9c225bd7ba9ab2a41e4292', "aria-hidden": "true" }, theme === 'md' || theme === 'ionic' ? (h("ion-icon", { "aria-hidden": "true", icon: searchbarCancelIcon, lazy: false })) : (cancelButtonText))));
546
- return (h(Host, { key: 'd5fc37533478d088fd40697b21cffc8f9c673add', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
545
+ const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '21affee126970b3de80d4af9c7659875dd9a07aa', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: theme === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: '62f81458b16cd51dd8cc5c309c42eeceda52e6fc', "aria-hidden": "true" }, theme === 'md' || theme === 'ionic' ? (h("ion-icon", { "aria-hidden": "true", icon: searchbarCancelIcon, lazy: false })) : (cancelButtonText))));
546
+ return (h(Host, { key: '287a9c6ec7e54f621759224922003b5ce6c0fb25', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
547
547
  [theme]: true,
548
548
  'searchbar-animated': animated,
549
549
  'searchbar-disabled': this.disabled,
@@ -557,14 +557,14 @@ export class Searchbar {
557
557
  [`searchbar-shape-${shape}`]: shape !== undefined,
558
558
  [`searchbar-size-${size}`]: size !== undefined,
559
559
  'in-toolbar': hostContext('ion-toolbar', this.el),
560
- }) }, h("div", { key: 'b7e0dbfa02f9ea4db7eb01cb293d81d4a54e23d2', class: "searchbar-input-container" }, h("input", Object.assign({ key: '3b790197d1f8bad980086ebd898cb2487d56ea24', "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)), (theme === 'md' || theme === 'ionic') && cancelButton, this.shouldShowSearchIcon() && (h("ion-icon", { key: 'fce3e3510516d768d8b51a6334cf9d9ac934345e', "aria-hidden": "true", icon: searchbarSearchIcon, lazy: false, class: "searchbar-search-icon" })), this.shouldShowClearButton() && (h("button", { key: 'b47cb7c79fd07e44f2273e55782a784f6d567155', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
560
+ }) }, h("div", { key: 'a2e1d71d90435b78fe7f9adb70740f4dda599a8a', class: "searchbar-input-container" }, h("input", Object.assign({ key: 'd3b5506f488229f6e3a348b39c52b49e8c86b43d', "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)), (theme === 'md' || theme === 'ionic') && cancelButton, this.shouldShowSearchIcon() && (h("ion-icon", { key: '2b52b78ad65b26e9d4f890b4dc8e8ec494b8ccb8', "aria-hidden": "true", icon: searchbarSearchIcon, lazy: false, class: "searchbar-search-icon" })), this.shouldShowClearButton() && (h("button", { key: 'cd59304ab31763bd0d06393d6cf65459a5cd857b', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
561
561
  /**
562
562
  * This prevents mobile browsers from
563
563
  * blurring the input when the clear
564
564
  * button is activated.
565
565
  */
566
566
  ev.preventDefault();
567
- }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '6d4f026bd1fde68d43c4e49531ca7b1689590e80', "aria-hidden": "true", icon: searchbarClearIcon, lazy: false, class: "searchbar-clear-icon" })))), theme === 'ios' && cancelButton));
567
+ }, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '6a9be85be51de19f84a852c43f93c46fb92c8d1a', "aria-hidden": "true", icon: searchbarClearIcon, lazy: false, class: "searchbar-clear-icon" })))), theme === 'ios' && cancelButton));
568
568
  }
569
569
  static get is() { return "ion-searchbar"; }
570
570
  static get encapsulation() { return "scoped"; }
@@ -548,14 +548,14 @@ export class Segment {
548
548
  }
549
549
  render() {
550
550
  const theme = getIonTheme(this);
551
- return (h(Host, { key: '2c0631392507f2e903670070232029928470bf11', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
551
+ return (h(Host, { key: '65c576c0bb9ff0602793f75321d676a34b306b3b', role: "tablist", onClick: this.onClick, class: createColorClasses(this.color, {
552
552
  [theme]: true,
553
553
  'in-toolbar': hostContext('ion-toolbar', this.el),
554
554
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
555
555
  'segment-activated': this.activated,
556
556
  'segment-disabled': this.disabled,
557
557
  'segment-scrollable': this.scrollable,
558
- }) }, h("slot", { key: 'ed99c28b8976c4d51ad12089680cb8fb51d835a7', onSlotchange: this.onSlottedItemsChange })));
558
+ }) }, h("slot", { key: '210750a65ccada549bccf026871477ee2b7bdc69', onSlotchange: this.onSlottedItemsChange })));
559
559
  }
560
560
  static get is() { return "ion-segment"; }
561
561
  static get encapsulation() { return "shadow"; }
@@ -112,7 +112,7 @@ export class SegmentButton {
112
112
  const { checked, type, disabled, hasIcon, hasLabel, layout, segmentEl } = this;
113
113
  const theme = getIonTheme(this);
114
114
  const hasSegmentColor = () => (segmentEl === null || segmentEl === void 0 ? void 0 : segmentEl.color) !== undefined;
115
- return (h(Host, { key: 'bbb2ae95aa27852c31dcc0ba3ee5acce24349752', class: {
115
+ return (h(Host, { key: 'da5c8352e5e0f3a01211edbc39c5043cadc5b06f', class: {
116
116
  [theme]: true,
117
117
  'in-toolbar': hostContext('ion-toolbar', this.el),
118
118
  'in-toolbar-color': hostContext('ion-toolbar[color]', this.el),
@@ -128,7 +128,7 @@ export class SegmentButton {
128
128
  'ion-activatable': true,
129
129
  'ion-activatable-instant': true,
130
130
  'ion-focusable': true,
131
- } }, h("button", Object.assign({ key: '0335787c4606314d2715062b536b544cf0fb1f27', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '47d06436538ed9fc97789af76b6681674a2bd0a7', class: "button-inner" }, h("slot", { key: 'de1164da25cb74e6fa3066e43744483fc5b821fa' })), theme === 'md' && h("ion-ripple-effect", { key: '82d3f9d812f851a6bbbf3603e5845e6e6e925442' })), h("div", { key: '77bbfb251707d274635f21e4cd7153791d9fdb49', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, h("div", { key: '2d7b64dbdb084bd3a851e215b9d049a9aff6f03f', part: "indicator-background", class: "segment-button-indicator-background" }))));
131
+ } }, h("button", Object.assign({ key: 'cfd963a166ebfeba590d6538069b26a107306583', "aria-selected": checked ? 'true' : 'false', role: "tab", ref: (el) => (this.nativeEl = el), type: type, class: "button-native", part: "native", disabled: disabled }, this.inheritedAttributes), h("span", { key: '845b729e96ba5b594d441ca41c73e2c33a4f5817', class: "button-inner" }, h("slot", { key: 'f38369982dd602c32dbbc6aca2fae6dbb53faa8a' })), theme === 'md' && h("ion-ripple-effect", { key: 'b1b15b731688dd02806409c9c3eda5519a958239' })), h("div", { key: 'fff597d493a85be8005ef3b9eb4f2a93c2a7a4d0', part: "indicator", class: "segment-button-indicator segment-button-indicator-animated" }, h("div", { key: 'f06b53d0ef9d08354f562ac6d3469998257dd688', part: "indicator-background", class: "segment-button-indicator-background" }))));
132
132
  }
133
133
  static get is() { return "ion-segment-button"; }
134
134
  static get encapsulation() { return "shadow"; }
@@ -4,7 +4,7 @@
4
4
  import { Host, h } from "@stencil/core";
5
5
  export class SegmentContent {
6
6
  render() {
7
- return (h(Host, { key: '66e6783365c0842eb785d50191206d82321b35e7' }, h("slot", { key: '21528369e7efdb93599179720b26c3f3c3e574ed' })));
7
+ return (h(Host, { key: '2f43cadcbcb1a9423b30e7abc169ff923a8c431f' }, h("slot", { key: 'c3a6d3e9c336f5124cdec9f37ef516324558073c' })));
8
8
  }
9
9
  static get is() { return "ion-segment-content"; }
10
10
  static get encapsulation() { return "shadow"; }
@@ -110,11 +110,11 @@ export class SegmentView {
110
110
  }
111
111
  render() {
112
112
  const { disabled, isManualScroll, swipeGesture } = this;
113
- return (h(Host, { key: '48ce45ca6c45d4bbc804390c31a43729a60abb8a', class: {
113
+ return (h(Host, { key: '8d1aa594c5674bca376ee3e9b18b60b0925dd875', class: {
114
114
  'segment-view-disabled': disabled,
115
115
  'segment-view-scroll-disabled': isManualScroll === false,
116
116
  'segment-view-swipe-disabled': swipeGesture === false,
117
- } }, h("slot", { key: 'e248ce5b24b355bd6b51cbfd25741addf4ffd4fb' })));
117
+ } }, h("slot", { key: '6375fa794ae615b74a70968718aadefa0a9fc1d6' })));
118
118
  }
119
119
  static get is() { return "ion-segment-view"; }
120
120
  static get encapsulation() { return "shadow"; }
@@ -9,7 +9,7 @@ import { focusVisibleElement, renderHiddenInput, inheritAttributes } from "../..
9
9
  import { printIonWarning } from "../../utils/logging/index";
10
10
  import { actionSheetController, alertController, popoverController, modalController } from "../../utils/overlays";
11
11
  import { isRTL } from "../../utils/rtl/index";
12
- import { reflectPropertiesToAttributes, sanitizeDOMTree } from "../../utils/sanitization/index";
12
+ import { sanitizeDOMString } from "../../utils/sanitization/index";
13
13
  import { createColorClasses, hostContext } from "../../utils/theme";
14
14
  import { watchForOptions } from "../../utils/watch-options";
15
15
  import { caretDownSharp, chevronExpand } from "ionicons/icons";
@@ -413,12 +413,15 @@ export class Select {
413
413
  .join(' ');
414
414
  const optClass = `${OPTION_CLASS} ${copyClasses}`;
415
415
  const isSelected = isOptionSelected(selectValue, value, this.compareWith);
416
- const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
416
+ const text = this.customHTMLEnabled ? getOptionContent(option) : getDefaultSlotPlainText(option);
417
+ const startContent = this.customHTMLEnabled
418
+ ? getOptionContent(option, 'start')
419
+ : undefined;
420
+ const endContent = this.customHTMLEnabled ? getOptionContent(option, 'end') : undefined;
417
421
  return {
418
422
  role: isSelected ? 'selected' : '',
419
- text: content !== null && content !== void 0 ? content : '',
423
+ text: text !== null && text !== void 0 ? text : '',
420
424
  cssClass: optClass,
421
- disabled: option.disabled,
422
425
  handler: () => {
423
426
  this.setValue(value);
424
427
  },
@@ -426,8 +429,8 @@ export class Select {
426
429
  'aria-checked': isSelected ? 'true' : 'false',
427
430
  role: 'radio',
428
431
  },
429
- startContent,
430
- endContent,
432
+ startContent: startContent !== null && startContent !== void 0 ? startContent : undefined,
433
+ endContent: endContent !== null && endContent !== void 0 ? endContent : undefined,
431
434
  description: option.description,
432
435
  };
433
436
  });
@@ -449,19 +452,21 @@ export class Select {
449
452
  .filter((cls) => cls !== 'hydrated')
450
453
  .join(' ');
451
454
  const optClass = `${OPTION_CLASS} ${copyClasses}`;
452
- const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
455
+ const label = this.customHTMLEnabled ? getOptionContent(option) : getDefaultSlotPlainText(option);
456
+ const startContent = this.customHTMLEnabled
457
+ ? getOptionContent(option, 'start')
458
+ : undefined;
459
+ const endContent = this.customHTMLEnabled ? getOptionContent(option, 'end') : undefined;
453
460
  return {
454
461
  type: inputType,
455
462
  cssClass: optClass,
456
- label: content !== null && content !== void 0 ? content : '',
463
+ label: label !== null && label !== void 0 ? label : '',
457
464
  value,
458
465
  checked: isOptionSelected(selectValue, value, this.compareWith),
459
466
  disabled: option.disabled,
460
- startContent,
461
- endContent,
467
+ startContent: startContent !== null && startContent !== void 0 ? startContent : undefined,
468
+ endContent: endContent !== null && endContent !== void 0 ? endContent : undefined,
462
469
  description: option.description,
463
- labelPlacement: option.labelPlacement,
464
- justify: option.justify,
465
470
  };
466
471
  });
467
472
  return alertInputs;
@@ -474,9 +479,13 @@ export class Select {
474
479
  .filter((cls) => cls !== 'hydrated')
475
480
  .join(' ');
476
481
  const optClass = `${OPTION_CLASS} ${copyClasses}`;
477
- const { content, startContent, endContent } = extractOptionContent(option, this.customHTMLEnabled);
482
+ const text = this.customHTMLEnabled ? getOptionContent(option) : getDefaultSlotPlainText(option);
483
+ const startContent = this.customHTMLEnabled
484
+ ? getOptionContent(option, 'start')
485
+ : undefined;
486
+ const endContent = this.customHTMLEnabled ? getOptionContent(option, 'end') : undefined;
478
487
  return {
479
- text: content !== null && content !== void 0 ? content : '',
488
+ text: text !== null && text !== void 0 ? text : '',
480
489
  cssClass: optClass,
481
490
  value,
482
491
  checked: isOptionSelected(selectValue, value, this.compareWith),
@@ -487,11 +496,9 @@ export class Select {
487
496
  this.close();
488
497
  }
489
498
  },
490
- startContent,
491
- endContent,
499
+ startContent: startContent !== null && startContent !== void 0 ? startContent : undefined,
500
+ endContent: endContent !== null && endContent !== void 0 ? endContent : undefined,
492
501
  description: option.description,
493
- labelPlacement: option.labelPlacement,
494
- justify: option.justify,
495
502
  };
496
503
  });
497
504
  return popoverOptions;
@@ -995,7 +1002,7 @@ export class Select {
995
1002
  * TODO(FW-5592): Remove hasStartEndSlots condition
996
1003
  */
997
1004
  const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
998
- return (h(Host, { key: '03e44fdbb6e0451998711d3233cbf508538ee768', onClick: this.onClick, class: createColorClasses(this.color, {
1005
+ return (h(Host, { key: 'c8fc8ffc5e66fa0deef9556f365d8d95ff652b5d', onClick: this.onClick, class: createColorClasses(this.color, {
999
1006
  [theme]: true,
1000
1007
  'in-item': inItem,
1001
1008
  'in-item-color': hostContext('ion-item.ion-color', el),
@@ -1014,7 +1021,7 @@ export class Select {
1014
1021
  [`select-shape-${shape}`]: shape !== undefined,
1015
1022
  [`select-label-placement-${labelPlacement}`]: true,
1016
1023
  [`select-size-${size}`]: size !== undefined,
1017
- }) }, h("label", { key: '7bb66ac4302033164def96ee2e7e4c75e91486bf', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: 'f471303b19939f7f2dbbff84c71baee0245744f8', class: "select-wrapper-inner", part: "inner" },
1024
+ }) }, h("label", { key: 'dd1b83a6bfadcce8e8a9559e529c86d86a5c142d', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick, part: "wrapper" }, this.renderLabelContainer(), h("div", { key: 'c7ae6112920eb9260be01ef4a723549a71e6e275', class: "select-wrapper-inner", part: "inner" },
1018
1025
  /**
1019
1026
  * For the ionic theme, we render the outline container here
1020
1027
  * instead of higher up, so it can be positioned relative to
@@ -1024,7 +1031,7 @@ export class Select {
1024
1031
  * <label> element, ensuring that clicking the label text
1025
1032
  * focuses the select.
1026
1033
  */
1027
- theme === 'ionic' && fill === 'outline' && h("div", { key: '07ec46ff5185031edeaeb9c329ae05a1dc4500bc', class: "select-outline" }), h("slot", { key: '69bb4d4a2948f9fbcdd8aa7450a08bdd4e812eea', name: "start" }), h("div", { key: '44c1be22c26165e68fc7fced999019a1da8ea58d', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: 'be3d1f07547ecb117056a7baf0013d162db67dc4', name: "end" }), shouldRenderInnerIcon && this.renderSelectIcon()), shouldRenderOuterIcon && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '621376ed95b35dc867ed8a6f450155405f9f37fe', class: "select-highlight" })), this.renderBottomContent()));
1034
+ theme === 'ionic' && fill === 'outline' && h("div", { key: 'da07a6cea39e13cc62de7104ef4c06ac8b3c8fe1', class: "select-outline" }), h("slot", { key: '35c4261e4eb3f5d91e8fe61e02cfe3d93a2c6763', name: "start" }), h("div", { key: 'e70c2896f0c7ad908811f5eb19abde9a432d086e', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: 'ddb79446bfc9dc97714c0395570d67ce6a5aa1bf', name: "end" }), shouldRenderInnerIcon && this.renderSelectIcon()), shouldRenderOuterIcon && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '297abbcf88af9911c6ecbbb27e2f37846f213bdb', class: "select-highlight" })), this.renderBottomContent()));
1028
1035
  }
1029
1036
  static get is() { return "ion-select"; }
1030
1037
  static get encapsulation() { return "shadow"; }
@@ -1829,15 +1836,8 @@ const getOptionContent = (option, slotName, useHTML = false) => {
1829
1836
  const defaultSlot = getOptionDefaultSlot(option) || [];
1830
1837
  nodes = defaultSlot.filter((node) => {
1831
1838
  var _a;
1832
- /**
1833
- * Exclude whitespace-only text nodes (newline noise between
1834
- * markup elements). Element nodes are always kept, even when
1835
- * their textContent is empty (e.g. <svg>, <img>).
1836
- */
1837
- if (node.nodeType === Node.TEXT_NODE) {
1838
- return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().length) !== 0;
1839
- }
1840
- return true;
1839
+ // Exclude whitespace-only text nodes to prevent empty container returns
1840
+ return ((_a = node.textContent) === null || _a === void 0 ? void 0 : _a.trim().length) !== 0;
1841
1841
  });
1842
1842
  }
1843
1843
  if (nodes.length === 0) {
@@ -1847,17 +1847,6 @@ const getOptionContent = (option, slotName, useHTML = false) => {
1847
1847
  if (!slotName && nodes.every((n) => n.nodeType === Node.TEXT_NODE)) {
1848
1848
  return nodes.map((n) => { var _a; return (_a = n.textContent) === null || _a === void 0 ? void 0 : _a.trim(); }).join(' ') || null;
1849
1849
  }
1850
- /**
1851
- * Mirror known custom-element properties (e.g. ion-icon's `icon`)
1852
- * onto attributes before cloning. Frameworks like Vue set these as
1853
- * DOM properties, which `cloneNode` doesn't copy, so without this
1854
- * step the cloned overlay copy renders without the prop's value.
1855
- */
1856
- nodes.forEach((n) => {
1857
- if (n.nodeType === Node.ELEMENT_NODE) {
1858
- reflectPropertiesToAttributes(n);
1859
- }
1860
- });
1861
1850
  // Clone each node into a temporary container
1862
1851
  const container = document.createElement('div');
1863
1852
  nodes.forEach((n) => {
@@ -1871,15 +1860,10 @@ const getOptionContent = (option, slotName, useHTML = false) => {
1871
1860
  }
1872
1861
  container.appendChild(clone);
1873
1862
  });
1874
- /**
1875
- * Sanitize the cloned DOM in place. Trusted attributes (size, color,
1876
- * shape, etc.) are preserved; event handlers, javascript: URLs, and
1877
- * blocked tags are stripped.
1878
- */
1879
- sanitizeDOMTree(container);
1880
1863
  if (useHTML) {
1881
- return container.innerHTML.trim() || null;
1864
+ return sanitizeDOMString(container.innerHTML.trim()) || null;
1882
1865
  }
1866
+ // Already sanitized through `renderOptionLabel`
1883
1867
  return container;
1884
1868
  };
1885
1869
  /**
@@ -1919,29 +1903,5 @@ const getDefaultSlotPlainText = (option) => {
1919
1903
  .filter((t) => t);
1920
1904
  return texts.join(' ');
1921
1905
  };
1922
- /**
1923
- * Extracts the rich content from an `ion-select-option`.
1924
- * When `customHTMLEnabled` is `false`, only the plain text from the
1925
- * default slot is read and the start and end slots are skipped.
1926
- *
1927
- * @param option - The `ion-select-option` element to extract content from.
1928
- * @param customHTMLEnabled - Whether custom HTML rendering is enabled
1929
- * via the `innerHTMLTemplatesEnabled` config.
1930
- */
1931
- const extractOptionContent = (option, customHTMLEnabled) => {
1932
- var _a, _b;
1933
- if (!customHTMLEnabled) {
1934
- return {
1935
- content: getDefaultSlotPlainText(option),
1936
- startContent: undefined,
1937
- endContent: undefined,
1938
- };
1939
- }
1940
- return {
1941
- content: getOptionContent(option),
1942
- startContent: (_a = getOptionContent(option, 'start')) !== null && _a !== void 0 ? _a : undefined,
1943
- endContent: (_b = getOptionContent(option, 'end')) !== null && _b !== void 0 ? _b : undefined,
1944
- };
1945
- };
1946
1906
  let selectIds = 0;
1947
1907
  const OPTION_CLASS = 'select-interface-option';
@@ -59,93 +59,11 @@
59
59
  * @param unit (optional) - The unit to convert the initial font size to. Use this if you want to
60
60
  * convert to a unit other than $baselineUnit.
61
61
  */
62
- .action-sheet-button-label-has-rich-content,
63
- .alert-radio-label-has-rich-content,
64
- .alert-checkbox-label-has-rich-content,
65
- .select-option-label-has-rich-content {
66
- gap: var(--token-space-300, var(--token-scale-300, 12px));
67
- }
68
-
69
- .action-sheet-button-label-text,
70
- .alert-checkbox-label-text,
71
- .alert-radio-label-text,
72
- .select-option-label-text {
73
- gap: var(--token-space-300, var(--token-scale-300, 12px));
74
- }
75
-
76
- .select-option-description {
77
- font-size: var(--token-font-size-350, 0.875rem);
78
- font-weight: var(--token-font-weight-regular, 400);
79
- letter-spacing: var(--token-font-letter-spacing-0, 0%);
80
- line-height: var(--token-font-line-height-600, var(--token-scale-600, 24px));
81
- text-decoration: none;
82
- text-transform: none;
83
- -webkit-padding-start: var(--token-space-0, var(--token-scale-0, 0px));
84
- padding-inline-start: var(--token-space-0, var(--token-scale-0, 0px));
85
- -webkit-padding-end: var(--token-space-0, var(--token-scale-0, 0px));
86
- padding-inline-end: var(--token-space-0, var(--token-scale-0, 0px));
87
- padding-top: var(--token-space-0, var(--token-scale-0, 0px));
88
- padding-bottom: var(--token-space-0, var(--token-scale-0, 0px));
89
- color: var(--token-text-subtle, var(--token-primitives-neutral-1000, #3b3b3b));
90
- font-size: var(--token-font-size-350, 0.875rem);
91
- }
92
-
93
- .select-option-start,
94
- .select-option-end {
95
- gap: var(--token-space-200, var(--token-scale-200, 8px));
96
- }
97
-
98
- /**
99
- * Cap slotted children so they can't stretch the option
100
- * row out of proportion, keeping rows visually uniform
101
- * regardless of the content.
102
- */
103
- .select-option-start > ion-avatar,
104
- .select-option-start > ion-img,
105
- .select-option-start > ion-thumbnail,
106
- .select-option-start > ion-icon,
107
- .select-option-start > img,
108
- .select-option-start > svg,
109
- .select-option-end > ion-avatar,
110
- .select-option-end > ion-img,
111
- .select-option-end > ion-thumbnail,
112
- .select-option-end > ion-icon,
113
- .select-option-end > img,
114
- .select-option-end > svg {
115
- width: var(--token-scale-1200, 48px);
116
- height: var(--token-scale-1200, 48px);
117
- }
118
-
119
- .action-sheet-button-label-has-rich-content,
120
- .alert-radio-label-has-rich-content,
121
- .alert-checkbox-label-has-rich-content,
122
- .select-option-label-has-rich-content {
123
- display: flex;
124
- align-items: center;
125
- }
126
-
127
- /**
128
- * Outer label container has rich content
129
- * (start, content, description, end) that needs the
130
- * label to span the available row width.
131
- */
132
- .action-sheet-button-label-has-rich-content,
133
- .alert-radio-label-has-rich-content,
134
- .alert-checkbox-label-has-rich-content,
135
- .select-option-content {
136
- flex: 1;
137
- }
138
-
139
- .action-sheet-button-label-text,
140
- .alert-checkbox-label-text,
141
- .alert-radio-label-text,
142
- .select-option-label-text {
143
- display: flex;
144
- align-items: center;
62
+ :host {
63
+ height: 100%;
145
64
  }
146
65
 
147
- .select-option-start,
148
- .select-option-end {
66
+ .select-option-label {
149
67
  display: flex;
150
68
  align-items: center;
151
69
  }
@@ -154,61 +72,16 @@
154
72
  display: block;
155
73
  }
156
74
 
157
- /**
158
- * Non-rich labels are plain text and should ellipsize when they
159
- * overflow the row. Rich-content labels switch to flex so the
160
- * start / content / end pieces can lay out side-by-side and wrap.
161
- */
162
- .select-option-label:not(.select-option-label-has-rich-content) {
163
- text-overflow: ellipsis;
164
- white-space: nowrap;
165
- overflow: hidden;
166
- }
167
-
168
- .select-option-label-has-rich-content {
169
- display: flex;
170
- align-items: center;
171
- }
172
-
173
- ion-radio.select-option-has-rich-content::part(label),
174
- ion-checkbox.select-option-has-rich-content::part(label),
175
- .select-option-content {
176
- flex: 1;
177
- /**
178
- * Let rich content wrap instead of inheriting the label part's
179
- * single-line truncation, so arbitrary slotted elements render
180
- * without clipping.
181
- */
182
- white-space: normal;
183
- }
184
-
185
- :host {
186
- height: 100%;
187
- }
188
-
189
75
  :host(.in-modal-default) ion-content::part(scroll) {
190
76
  --padding-bottom: var(--token-space-400, var(--token-scale-400, 16px));
191
77
  }
192
78
 
193
79
  ion-item {
194
- --border-width: var(--token-border-size-0, var(--token-scale-0, 0px));
195
- --background-focused: transparent;
196
- --background-focused-opacity: 1;
197
- --background-hover: var(--token-bg-neutral-subtlest-press, var(--token-primitives-neutral-200, #eae9e9));
198
- --background-hover-opacity: 1;
199
- --background-activated: var(--token-bg-neutral-subtlest-press, var(--token-primitives-neutral-200, #eae9e9));
200
- --background-activated-opacity: 1;
201
- --border-radius: var(--token-border-radius-400, var(--token-scale-400, 16px));
80
+ --border-width: 0;
202
81
  }
203
82
 
204
83
  ion-item.ion-focused::part(native)::after {
205
- outline: none;
206
- }
207
-
208
- ion-item.ion-focused.item-checkbox-checked,
209
- ion-item.ion-focused.item-radio-checked {
210
- --background-focused: var(--token-bg-primary-subtle-default, var(--token-semantics-primary-100, var(--token-primitives-blue-100, #e9ecfc)));
211
- --background-focused-opacity: 1;
84
+ border: none;
212
85
  }
213
86
 
214
87
  ion-toolbar {
@@ -225,12 +98,10 @@ ion-list ion-radio::part(container) {
225
98
  }
226
99
 
227
100
  ion-list ion-radio::part(label) {
228
- -webkit-margin-start: var(--token-space-0, var(--token-scale-0, 0px));
229
- margin-inline-start: var(--token-space-0, var(--token-scale-0, 0px));
230
- -webkit-margin-end: var(--token-space-0, var(--token-scale-0, 0px));
231
- margin-inline-end: var(--token-space-0, var(--token-scale-0, 0px));
232
- margin-top: var(--token-space-0, var(--token-scale-0, 0px));
233
- margin-bottom: var(--token-space-0, var(--token-scale-0, 0px));
101
+ margin-left: 0;
102
+ margin-right: 0;
103
+ margin-top: 0;
104
+ margin-bottom: 0;
234
105
  }
235
106
 
236
107
  ion-list ion-radio::part(label),
@@ -245,7 +116,8 @@ ion-list ion-checkbox::part(label) {
245
116
 
246
117
  .item-radio-checked,
247
118
  .item-checkbox-checked {
248
- --background: var(--token-bg-primary-subtle-default, var(--token-semantics-primary-100, var(--token-primitives-blue-100, #e9ecfc)));
119
+ --background: var(--token-semantics-primary-100, var(--token-primitives-blue-100, #e9ecfc));
120
+ --border-radius: var(--token-border-radius-400, var(--token-scale-400, 16px));
249
121
  }
250
122
 
251
123
  ion-content {
@@ -261,4 +133,22 @@ ion-content {
261
133
  --padding-end: var(--token-space-400, var(--token-scale-400, 16px)) !important;
262
134
  /* stylelint-disable-next-line declaration-no-important */
263
135
  --padding-bottom: var(--token-space-1200, var(--token-scale-1200, 48px)) !important;
136
+ }
137
+ ion-content:has(.radio-checked) .ion-focused:not(.item-radio-checked) {
138
+ --background-focused-opacity: 1;
139
+ }
140
+
141
+ .select-option-label {
142
+ gap: var(--token-space-300, var(--token-scale-300, 12px));
143
+ }
144
+
145
+ .select-option-description {
146
+ font-size: var(--token-font-size-350, 0.875rem);
147
+ font-weight: var(--token-font-weight-regular, 400);
148
+ letter-spacing: var(--token-font-letter-spacing-0, 0%);
149
+ line-height: var(--token-font-line-height-600, var(--token-scale-600, 24px));
150
+ text-decoration: none;
151
+ text-transform: none;
152
+ color: var(--token-text-subtle, var(--token-primitives-neutral-1000, #3b3b3b));
153
+ font-size: var(--token-font-size-350, 0.875rem);
264
154
  }