@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
@@ -4,7 +4,8 @@ import type { GalleryColumns, GalleryGap } from './gallery-interface';
4
4
  * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
5
5
  * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
6
6
  *
7
- * @slot - Content is placed in a responsive gallery layout.
7
+ * @slot - One or more `ion-gallery-item` components, placed in a responsive
8
+ * gallery layout.
8
9
  */
9
10
  export declare class Gallery implements ComponentInterface {
10
11
  el: HTMLIonGalleryElement;
@@ -14,6 +15,7 @@ export declare class Gallery implements ComponentInterface {
14
15
  private hasWarnedInvalidColumns;
15
16
  private hasWarnedInvalidGap;
16
17
  private hasWarnedUnusedOrder;
18
+ private hasWarnedInvalidItems;
17
19
  /**
18
20
  * The visual layout of the gallery. When `uniform`, rows take up the height
19
21
  * of the tallest item and are spaced evenly across the gallery. Additionally,
@@ -46,8 +48,21 @@ export declare class Gallery implements ComponentInterface {
46
48
  gap: GalleryGap;
47
49
  protected onColumnsOrGapChanged(): void;
48
50
  protected onLayoutOrOrderChanged(): void;
51
+ /**
52
+ * Sync the current layout with each item when the gallery's `layout`
53
+ * changes.
54
+ */
55
+ private syncItemLayout;
49
56
  componentDidLoad(): void;
50
57
  disconnectedCallback(): void;
58
+ /**
59
+ * Observe the host and each item for size changes. Items are observed in
60
+ * addition to the host so masonry placement is recomputed when an item's
61
+ * rendered height changes — most importantly when a dynamically added
62
+ * `ion-gallery-item` finishes hydrating, which (unlike an `<img>`) emits no
63
+ * `load` event and does not change the host's measured size while collapsed.
64
+ */
65
+ private observeResizes;
51
66
  /**
52
67
  * Listen for the load event on child elements.
53
68
  * When the layout is `masonry`, this listener is used to schedule a resize
@@ -56,10 +71,9 @@ export declare class Gallery implements ComponentInterface {
56
71
  */
57
72
  protected onChildLoad(ev: Event): void;
58
73
  /**
59
- * Listen for the slotchange event on the slot.
60
- * When the layout is `masonry`, this listener is used to schedule a resize
61
- * of the masonry grid when the slot changes. This is useful for when items
62
- * are added or removed from the gallery.
74
+ * Listen for the slotchange event on the slot. When the gallery's items are
75
+ * added or removed, re-collapse wrappers, re-observe items for size changes,
76
+ * and recompute the masonry grid.
63
77
  */
64
78
  private onSlotChange;
65
79
  /**
@@ -142,10 +156,24 @@ export declare class Gallery implements ComponentInterface {
142
156
  */
143
157
  private updateResponsiveStyles;
144
158
  /**
145
- * Return all directly slotted children of the gallery that can be grid items
146
- * with inline placement styles (HTML elements and SVG elements).
159
+ * Return the `ion-gallery-item` elements to place in the grid. Each item is a
160
+ * direct grid cell, whether a direct child or nested inside a pass-through
161
+ * wrapper (e.g. a layout `<div>`). Items belonging to a nested `ion-gallery`
162
+ * are excluded.
147
163
  */
148
164
  private getItems;
165
+ /**
166
+ * Collapse each pass-through wrapper's box with `display: contents` so its
167
+ * items participate in the gallery grid. Restore the box of a wrapper that
168
+ * no longer contains items, and warn about children that contain none.
169
+ */
170
+ private collapseWrappers;
171
+ /**
172
+ * Warn when the gallery has content that is not wrapped in an
173
+ * `ion-gallery-item` component. Items belonging to a nested
174
+ * gallery are considered invalid content for the parent gallery.
175
+ */
176
+ private warnInvalidItems;
149
177
  /**
150
178
  * Clear the item styles for the given item element.
151
179
  * This is used to switch between uniform and masonry layouts.
@@ -155,9 +183,14 @@ export declare class Gallery implements ComponentInterface {
155
183
  * Clear placement styles for all items when leaving masonry mode.
156
184
  */
157
185
  private clearMasonryStyles;
186
+ /**
187
+ * Whether the item contains any images that have not finished loading.
188
+ * Used to defer masonry placement until the rendered height is final.
189
+ */
190
+ private hasUnloadedImages;
158
191
  /**
159
192
  * Convert a rendered item height to the number of grid rows it should span.
160
- * Returns undefined for images that are not fully loaded yet.
193
+ * Returns undefined when the item has images that are not fully loaded yet.
161
194
  */
162
195
  private calculateRowSpan;
163
196
  /**
@@ -1,2 +1,3 @@
1
- export declare const sharedStyles = "\n ion-gallery {\n width: 343px;\n }\n\n div {\n color: #fff;\n height: 150px;\n }\n\n div:nth-child(1) {\n background: #ff6b6b;\n }\n\n div:nth-child(2) {\n background: #4ecdc4;\n }\n\n div:nth-child(3) {\n background: #ffe66d;\n color: #333;\n }\n\n div:nth-child(4) {\n background: #5f27cd;\n }\n\n div:nth-child(5) {\n background: #7f8c8d;\n }\n\n div:nth-child(6) {\n background: #ff9f43;\n }\n\n div:nth-child(7) {\n background: #ff3f34;\n }\n\n div:nth-child(8) {\n background: #2ecc71;\n }\n\n div:nth-child(9) {\n background: #34495e;\n }\n\n div:nth-child(10) {\n background: #1abc9c;\n }\n\n div:nth-child(11) {\n background: #e67e22;\n }\n\n div:nth-child(12) {\n background: #9b59b6;\n }\n";
1
+ export declare const sharedGalleryStyles = "\n ion-gallery {\n width: 343px;\n }\n";
2
+ export declare const sharedGalleryItemStyles = "\n ion-gallery-item {\n color: #fff;\n }\n\n ion-gallery-item:nth-child(1) {\n background: #ff6b6b;\n }\n\n ion-gallery-item:nth-child(2) {\n background: #4ecdc4;\n }\n\n ion-gallery-item:nth-child(3) {\n background: #ffe66d;\n color: #333;\n }\n\n ion-gallery-item:nth-child(4) {\n background: #5f27cd;\n }\n\n ion-gallery-item:nth-child(5) {\n background: #7f8c8d;\n }\n\n ion-gallery-item:nth-child(6) {\n background: #ff9f43;\n }\n\n ion-gallery-item:nth-child(7) {\n background: #ff3f34;\n }\n\n ion-gallery-item:nth-child(8) {\n background: #2ecc71;\n }\n\n ion-gallery-item:nth-child(9) {\n background: #34495e;\n }\n\n ion-gallery-item:nth-child(10) {\n background: #1abc9c;\n }\n\n ion-gallery-item:nth-child(11) {\n background: #e67e22;\n }\n\n ion-gallery-item:nth-child(12) {\n background: #9b59b6;\n }\n";
2
3
  export declare const numberToWords: (value: number) => string;
@@ -0,0 +1,33 @@
1
+ import type { ComponentInterface } from '../../stencil-public-runtime';
2
+ /**
3
+ * @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
4
+ * @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
5
+ *
6
+ * @slot - The content placed inside of the gallery item. This is typically an
7
+ * `img`, but can be any element (e.g. a `figure` wrapping an image and caption).
8
+ */
9
+ export declare class GalleryItem implements ComponentInterface {
10
+ private hasWarnedInvalidParent;
11
+ el: HTMLIonGalleryItemElement;
12
+ /**
13
+ * The layout of the parent `ion-gallery`, mirrored as a class so the item
14
+ * can apply layout-specific styles (e.g. a square aspect ratio in the
15
+ * `uniform` layout, a bottom margin in the `masonry` layout).
16
+ */
17
+ galleryLayout?: 'uniform' | 'masonry';
18
+ componentWillLoad(): void;
19
+ componentDidLoad(): void;
20
+ connectedCallback(): void;
21
+ /**
22
+ * Resolve the layout from the parent `ion-gallery`. Called internally on
23
+ * load and connect, and by the gallery when its layout changes.
24
+ * @internal
25
+ */
26
+ syncGalleryLayout(): Promise<void>;
27
+ private onSlotChange;
28
+ /**
29
+ * Warn when the item is not a descendant of an `ion-gallery`.
30
+ */
31
+ private warnInvalidParent;
32
+ render(): any;
33
+ }
@@ -17,18 +17,10 @@ export interface SelectActionSheetButton extends Omit<ActionSheetButton, 'text'>
17
17
  export interface SelectAlertInput extends Omit<AlertInput, 'label'>, RichContentOption {
18
18
  /** The main label for the option as a string or an HTMLElement. */
19
19
  label?: string | HTMLElement;
20
- /** Where the label sits relative to the option's selection control. */
21
- labelPlacement?: 'start' | 'end';
22
- /** How to pack the label and the option's selection control within a line. */
23
- justify?: 'start' | 'end' | 'space-between';
24
20
  }
25
21
  export interface SelectOverlayOption extends Omit<SelectPopoverOption, 'text'>, RichContentOption {
26
22
  /** The main text for the option as a string or an HTMLElement. */
27
23
  text?: string | HTMLElement;
28
- /** Where the label sits relative to the option's selection control. */
29
- labelPlacement?: 'start' | 'end';
30
- /** How to pack the label and the option's selection control within a line. */
31
- justify?: 'start' | 'end' | 'space-between';
32
24
  }
33
25
  export interface RichContentOption {
34
26
  /** Content to display at the start of the option. */
@@ -22,37 +22,5 @@ export declare class SelectOption implements ComponentInterface {
22
22
  * Text that is placed underneath the option text to provide additional details about the option.
23
23
  */
24
24
  description?: string;
25
- /**
26
- * Where the label is placed relative to the option's selection control
27
- * (radio circle or checkbox box) when the option is rendered in an
28
- * `alert`, `popover`, or `modal` interface.
29
- * `"start"`: The label will appear to the left of the radio in LTR and to the right in RTL.
30
- * `"end"`: The label will appear to the right of the radio in LTR and to the left in RTL.
31
- *
32
- * Applies to the `alert`, `popover`, and `modal` interfaces, but has no
33
- * visible effect on radio options in `popover` or `modal` on the `md`
34
- * and `ionic` themes (the radio control is hidden there).
35
- *
36
- * When unset, the interface picks a default based on theme and control
37
- * type.
38
- */
39
- labelPlacement?: 'start' | 'end';
40
- /**
41
- * How to pack the label and the option's selection control within a line.
42
- * `"start"`: The label and radio will appear on the left in LTR and
43
- * on the right in RTL.
44
- * `"end"`: The label and radio will appear on the right in LTR and
45
- * on the left in RTL.
46
- * `"space-between"`: The label and radio will appear on opposite
47
- * ends of the line with space between the two elements.
48
- *
49
- * Applies to the `alert`, `popover`, and `modal` interfaces, but has no
50
- * visible effect on radio options in `popover` or `modal` on the `md`
51
- * and `ionic` themes (the radio control is hidden there).
52
- *
53
- * When unset, the interface picks a default based on theme and control
54
- * type.
55
- */
56
- justify?: 'start' | 'end' | 'space-between';
57
25
  render(): any;
58
26
  }
@@ -1500,6 +1500,20 @@ export namespace Components {
1500
1500
  */
1501
1501
  "theme"?: "ios" | "md" | "ionic";
1502
1502
  }
1503
+ interface IonGalleryItem {
1504
+ /**
1505
+ * The mode determines the platform behaviors of the component.
1506
+ */
1507
+ "mode"?: "ios" | "md";
1508
+ /**
1509
+ * Resolve the layout from the parent `ion-gallery`. Called internally on load and connect, and by the gallery when its layout changes.
1510
+ */
1511
+ "syncGalleryLayout": () => Promise<void>;
1512
+ /**
1513
+ * The theme determines the visual appearance of the component.
1514
+ */
1515
+ "theme"?: "ios" | "md" | "ionic";
1516
+ }
1503
1517
  interface IonGrid {
1504
1518
  /**
1505
1519
  * If `true`, the grid will have a fixed width based on the screen size.
@@ -3863,14 +3877,6 @@ export namespace Components {
3863
3877
  * @default false
3864
3878
  */
3865
3879
  "disabled": boolean;
3866
- /**
3867
- * How to pack the label and the option's selection control within a line. `"start"`: The label and radio will appear on the left in LTR and on the right in RTL. `"end"`: The label and radio will appear on the right in LTR and on the left in RTL. `"space-between"`: The label and radio will appear on opposite ends of the line with space between the two elements. Applies to the `alert`, `popover`, and `modal` interfaces, but has no visible effect on radio options in `popover` or `modal` on the `md` and `ionic` themes (the radio control is hidden there). When unset, the interface picks a default based on theme and control type.
3868
- */
3869
- "justify"?: 'start' | 'end' | 'space-between';
3870
- /**
3871
- * Where the label is placed relative to the option's selection control (radio circle or checkbox box) when the option is rendered in an `alert`, `popover`, or `modal` interface. `"start"`: The label will appear to the left of the radio in LTR and to the right in RTL. `"end"`: The label will appear to the right of the radio in LTR and to the left in RTL. Applies to the `alert`, `popover`, and `modal` interfaces, but has no visible effect on radio options in `popover` or `modal` on the `md` and `ionic` themes (the radio control is hidden there). When unset, the interface picks a default based on theme and control type.
3872
- */
3873
- "labelPlacement"?: 'start' | 'end';
3874
3880
  /**
3875
3881
  * The mode determines the platform behaviors of the component.
3876
3882
  */
@@ -5054,6 +5060,12 @@ declare global {
5054
5060
  prototype: HTMLIonGalleryElement;
5055
5061
  new (): HTMLIonGalleryElement;
5056
5062
  };
5063
+ interface HTMLIonGalleryItemElement extends Components.IonGalleryItem, HTMLStencilElement {
5064
+ }
5065
+ var HTMLIonGalleryItemElement: {
5066
+ prototype: HTMLIonGalleryItemElement;
5067
+ new (): HTMLIonGalleryItemElement;
5068
+ };
5057
5069
  interface HTMLIonGridElement extends Components.IonGrid, HTMLStencilElement {
5058
5070
  }
5059
5071
  var HTMLIonGridElement: {
@@ -6012,6 +6024,7 @@ declare global {
6012
6024
  "ion-fab-list": HTMLIonFabListElement;
6013
6025
  "ion-footer": HTMLIonFooterElement;
6014
6026
  "ion-gallery": HTMLIonGalleryElement;
6027
+ "ion-gallery-item": HTMLIonGalleryItemElement;
6015
6028
  "ion-grid": HTMLIonGridElement;
6016
6029
  "ion-header": HTMLIonHeaderElement;
6017
6030
  "ion-img": HTMLIonImgElement;
@@ -7518,6 +7531,16 @@ declare namespace LocalJSX {
7518
7531
  */
7519
7532
  "theme"?: "ios" | "md" | "ionic";
7520
7533
  }
7534
+ interface IonGalleryItem {
7535
+ /**
7536
+ * The mode determines the platform behaviors of the component.
7537
+ */
7538
+ "mode"?: "ios" | "md";
7539
+ /**
7540
+ * The theme determines the visual appearance of the component.
7541
+ */
7542
+ "theme"?: "ios" | "md" | "ionic";
7543
+ }
7521
7544
  interface IonGrid {
7522
7545
  /**
7523
7546
  * If `true`, the grid will have a fixed width based on the screen size.
@@ -9864,14 +9887,6 @@ declare namespace LocalJSX {
9864
9887
  * @default false
9865
9888
  */
9866
9889
  "disabled"?: boolean;
9867
- /**
9868
- * How to pack the label and the option's selection control within a line. `"start"`: The label and radio will appear on the left in LTR and on the right in RTL. `"end"`: The label and radio will appear on the right in LTR and on the left in RTL. `"space-between"`: The label and radio will appear on opposite ends of the line with space between the two elements. Applies to the `alert`, `popover`, and `modal` interfaces, but has no visible effect on radio options in `popover` or `modal` on the `md` and `ionic` themes (the radio control is hidden there). When unset, the interface picks a default based on theme and control type.
9869
- */
9870
- "justify"?: 'start' | 'end' | 'space-between';
9871
- /**
9872
- * Where the label is placed relative to the option's selection control (radio circle or checkbox box) when the option is rendered in an `alert`, `popover`, or `modal` interface. `"start"`: The label will appear to the left of the radio in LTR and to the right in RTL. `"end"`: The label will appear to the right of the radio in LTR and to the left in RTL. Applies to the `alert`, `popover`, and `modal` interfaces, but has no visible effect on radio options in `popover` or `modal` on the `md` and `ionic` themes (the radio control is hidden there). When unset, the interface picks a default based on theme and control type.
9873
- */
9874
- "labelPlacement"?: 'start' | 'end';
9875
9890
  /**
9876
9891
  * The mode determines the platform behaviors of the component.
9877
9892
  */
@@ -11198,8 +11213,6 @@ declare namespace LocalJSX {
11198
11213
  "disabled": boolean;
11199
11214
  "value": string;
11200
11215
  "description": string;
11201
- "labelPlacement": 'start' | 'end';
11202
- "justify": 'start' | 'end' | 'space-between';
11203
11216
  }
11204
11217
  interface IonSelectPopoverAttributes {
11205
11218
  "header": string;
@@ -11354,6 +11367,7 @@ declare namespace LocalJSX {
11354
11367
  "ion-fab-list": Omit<IonFabList, keyof IonFabListAttributes> & { [K in keyof IonFabList & keyof IonFabListAttributes]?: IonFabList[K] } & { [K in keyof IonFabList & keyof IonFabListAttributes as `attr:${K}`]?: IonFabListAttributes[K] } & { [K in keyof IonFabList & keyof IonFabListAttributes as `prop:${K}`]?: IonFabList[K] };
11355
11368
  "ion-footer": Omit<IonFooter, keyof IonFooterAttributes> & { [K in keyof IonFooter & keyof IonFooterAttributes]?: IonFooter[K] } & { [K in keyof IonFooter & keyof IonFooterAttributes as `attr:${K}`]?: IonFooterAttributes[K] } & { [K in keyof IonFooter & keyof IonFooterAttributes as `prop:${K}`]?: IonFooter[K] };
11356
11369
  "ion-gallery": Omit<IonGallery, keyof IonGalleryAttributes> & { [K in keyof IonGallery & keyof IonGalleryAttributes]?: IonGallery[K] } & { [K in keyof IonGallery & keyof IonGalleryAttributes as `attr:${K}`]?: IonGalleryAttributes[K] } & { [K in keyof IonGallery & keyof IonGalleryAttributes as `prop:${K}`]?: IonGallery[K] };
11370
+ "ion-gallery-item": IonGalleryItem;
11357
11371
  "ion-grid": Omit<IonGrid, keyof IonGridAttributes> & { [K in keyof IonGrid & keyof IonGridAttributes]?: IonGrid[K] } & { [K in keyof IonGrid & keyof IonGridAttributes as `attr:${K}`]?: IonGridAttributes[K] } & { [K in keyof IonGrid & keyof IonGridAttributes as `prop:${K}`]?: IonGrid[K] };
11358
11372
  "ion-header": Omit<IonHeader, keyof IonHeaderAttributes> & { [K in keyof IonHeader & keyof IonHeaderAttributes]?: IonHeader[K] } & { [K in keyof IonHeader & keyof IonHeaderAttributes as `attr:${K}`]?: IonHeaderAttributes[K] } & { [K in keyof IonHeader & keyof IonHeaderAttributes as `prop:${K}`]?: IonHeader[K] };
11359
11373
  "ion-img": Omit<IonImg, keyof IonImgAttributes> & { [K in keyof IonImg & keyof IonImgAttributes]?: IonImg[K] } & { [K in keyof IonImg & keyof IonImgAttributes as `attr:${K}`]?: IonImgAttributes[K] } & { [K in keyof IonImg & keyof IonImgAttributes as `prop:${K}`]?: IonImg[K] };
@@ -11459,6 +11473,7 @@ declare module "@stencil/core" {
11459
11473
  "ion-fab-list": LocalJSX.IntrinsicElements["ion-fab-list"] & JSXBase.HTMLAttributes<HTMLIonFabListElement>;
11460
11474
  "ion-footer": LocalJSX.IntrinsicElements["ion-footer"] & JSXBase.HTMLAttributes<HTMLIonFooterElement>;
11461
11475
  "ion-gallery": LocalJSX.IntrinsicElements["ion-gallery"] & JSXBase.HTMLAttributes<HTMLIonGalleryElement>;
11476
+ "ion-gallery-item": LocalJSX.IntrinsicElements["ion-gallery-item"] & JSXBase.HTMLAttributes<HTMLIonGalleryItemElement>;
11462
11477
  "ion-grid": LocalJSX.IntrinsicElements["ion-grid"] & JSXBase.HTMLAttributes<HTMLIonGridElement>;
11463
11478
  "ion-header": LocalJSX.IntrinsicElements["ion-header"] & JSXBase.HTMLAttributes<HTMLIonHeaderElement>;
11464
11479
  "ion-img": LocalJSX.IntrinsicElements["ion-img"] & JSXBase.HTMLAttributes<HTMLIonImgElement>;
@@ -1,60 +1,8 @@
1
1
  /**
2
- * Sanitize an untrusted HTML string.
3
- *
4
- * Parses the string into a detached DOM, removes blocked tags, strips
5
- * attributes outside the `allowedAttributes` list (refer `sanitizeElement`),
6
- * and scrubs script-scheme URLs. Returns the sanitized HTML string.
7
- *
8
- * Use this when you have an HTML string from an unknown source and need to
9
- * render it via `innerHTML`. Use `sanitizeDOMTree` instead when you already
10
- * have a DOM tree and want to sanitize it in place without a string round
11
- * trip; both apply the same attribute policy.
12
- *
13
- * @param untrustedString - The HTML string to sanitize. Pass an
14
- * `IonicSafeString` to bypass sanitization, or `undefined` to short-circuit.
15
- * @returns The sanitized HTML string, or `undefined` if the input was
16
- * `undefined`. Returns `''` if sanitization fails or the input contains
17
- * an inline `onload=` handler.
2
+ * Does a simple sanitization of all elements
3
+ * in an untrusted string
18
4
  */
19
5
  export declare const sanitizeDOMString: (untrustedString: IonicSafeString | string | undefined) => string | undefined;
20
- /**
21
- * Sanitize an entire trusted DOM tree in place.
22
- *
23
- * Removes blocked tags (`script`, `iframe`, etc.) from the subtree and
24
- * then sanitizes attributes on every remaining element using the same
25
- * allowlist policy as `sanitizeDOMString` (refer `sanitizeElement`).
26
- * Component presentational attributes (`size`, `color`, `shape`, inline
27
- * SVG, `aria-*`, `data-*`) are preserved; `style`, event handlers (`on*`),
28
- * form/navigation-hijack attributes, script-scheme URLs, and non-image
29
- * `data:` URLs are stripped.
30
- *
31
- * Use this when you have a DOM tree the developer controls (e.g.
32
- * cloned slot content from a component) and you need to render it
33
- * elsewhere safely.
34
- *
35
- * @param root - The root element whose subtree will be sanitized in
36
- * place. No-op when the sanitizer is disabled via `Ionic.config`.
37
- */
38
- export declare const sanitizeDOMTree: (root: HTMLElement) => void;
39
- /**
40
- * Mirror known custom-element DOM properties onto attributes so they
41
- * survive `cloneNode`. Call this on a DOM subtree before cloning it for
42
- * rendering elsewhere (e.g. cloning slotted option content into an
43
- * overlay).
44
- *
45
- * Only sets the attribute when the property holds a non-empty string
46
- * and the attribute isn't already present, so existing attributes
47
- * take precedence.
48
- *
49
- * @param root - The root element whose subtree (and itself) will be
50
- * inspected.
51
- */
52
- export declare const reflectPropertiesToAttributes: (root: Element) => void;
53
- /**
54
- * Tags removed entirely (with their subtree) before attribute sanitization.
55
- * Exported so tests can assert the set without hardcoding it.
56
- */
57
- export declare const blockedTags: string[];
58
6
  export declare class IonicSafeString {
59
7
  value: string;
60
8
  constructor(value: string);
@@ -1,4 +1,3 @@
1
- import type { VNode } from '../stencil-public-runtime';
2
1
  import type { RichContentOption as RichContentOpt } from '../components/select/select-interface';
3
2
  interface RichContentOption extends RichContentOpt {
4
3
  /** Unique identifier for stable virtual DOM keys across re-renders. */
@@ -6,36 +5,6 @@ interface RichContentOption extends RichContentOpt {
6
5
  /** The main label for the option as a string or an HTMLElement. */
7
6
  label?: string | HTMLElement;
8
7
  }
9
- /**
10
- * Converts a DOM node into a Stencil VNode (or text string) so the
11
- * resulting tree is rendered through the component's normal render
12
- * path. Rendering through Stencil ensures that scoped CSS classes
13
- * (e.g. `sc-ion-action-sheet-ionic`) are applied to every element.
14
- *
15
- * Highly recommended to pre-sanitize the source DOM (see
16
- * `getOptionContent` in select.tsx). This function performs pure
17
- * structural conversion — no security filtering.
18
- *
19
- * Preserves attributes only — properties set imperatively on the source
20
- * element (e.g. `input.value` after a user types) won't carry through.
21
- * In practice this isn't a concern: interactive controls shouldn't
22
- * appear in select-option rich content since they'd nest inside the
23
- * overlay's button/radio/checkbox wrapper, which is invalid HTML and
24
- * an accessibility issue.
25
- *
26
- * @param node - The DOM node to convert. Text nodes become strings,
27
- * element nodes become VNodes, and any other node types are skipped.
28
- * @param keyPrefix - String prefix used to build a stable VNode key,
29
- * so Stencil's diff can preserve elements across re-renders.
30
- * @param index - Position of this node among its siblings. Combined
31
- * with `keyPrefix` to form the final unique key.
32
- * @returns The converted VNode, a text string, or `null` if the node
33
- * type isn't supported.
34
- *
35
- * @internal Exported only so it can be unit tested; not part of the
36
- * public API.
37
- */
38
- export declare const cloneToVNode: (node: Node, keyPrefix: string, index: number) => VNode | string | null;
39
8
  /**
40
9
  * Renders the label content for a select option within an overlay
41
10
  * interface based on the presence of rich content.