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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/components/index.js +1 -1
  2. package/components/ion-action-sheet.js +1 -1
  3. package/components/ion-alert.js +1 -1
  4. package/components/ion-back-button.js +1 -1
  5. package/components/ion-button.js +1 -1
  6. package/components/ion-card.js +1 -1
  7. package/components/ion-chip.js +1 -1
  8. package/components/ion-datetime-button.js +1 -1
  9. package/components/ion-datetime.js +1 -1
  10. package/components/ion-fab-button.js +1 -1
  11. package/components/ion-infinite-scroll-content.js +1 -1
  12. package/components/ion-input-password-toggle.js +1 -1
  13. package/components/ion-input.js +1 -1
  14. package/components/ion-item-option.js +1 -1
  15. package/components/ion-item.js +1 -1
  16. package/components/ion-loading.js +1 -1
  17. package/components/ion-menu-button.js +1 -1
  18. package/components/ion-menu.js +1 -1
  19. package/components/ion-modal.js +1 -1
  20. package/components/ion-popover.js +1 -1
  21. package/components/ion-progress-bar.js +1 -1
  22. package/components/ion-radio.js +1 -1
  23. package/components/ion-range.js +1 -1
  24. package/components/ion-refresher-content.js +1 -1
  25. package/components/ion-refresher.js +1 -1
  26. package/components/ion-reorder-group.js +1 -1
  27. package/components/ion-reorder.js +1 -1
  28. package/components/ion-ripple-effect.js +1 -1
  29. package/components/ion-router-link.js +1 -1
  30. package/components/ion-router-outlet.js +1 -1
  31. package/components/ion-row.js +1 -1
  32. package/components/ion-searchbar.js +1 -1
  33. package/components/ion-segment-button.js +1 -1
  34. package/components/ion-segment-content.js +1 -1
  35. package/components/ion-segment-view.js +1 -1
  36. package/components/ion-segment.js +1 -1
  37. package/components/ion-select-modal.js +1 -1
  38. package/components/ion-select-option.js +1 -1
  39. package/components/ion-select-popover.js +1 -1
  40. package/components/ion-select.js +1 -1
  41. package/components/ion-skeleton-text.js +1 -1
  42. package/components/ion-spinner.js +1 -1
  43. package/components/ion-split-pane.js +1 -1
  44. package/components/ion-tab-bar.js +1 -1
  45. package/components/ion-tab-button.js +1 -1
  46. package/components/ion-tab.js +1 -1
  47. package/components/ion-tabs.js +1 -1
  48. package/components/ion-text.js +1 -1
  49. package/components/ion-textarea.js +1 -1
  50. package/components/ion-thumbnail.js +1 -1
  51. package/components/ion-title.js +1 -1
  52. package/components/ion-toast.js +1 -1
  53. package/components/ion-toggle.js +1 -1
  54. package/components/ion-toolbar.js +1 -1
  55. package/components/p-279dFMvg.js +4 -0
  56. package/components/p-BSQPZ79H.js +4 -0
  57. package/components/p-BwKpO3Is.js +4 -0
  58. package/components/p-C-Rx1zny.js +4 -0
  59. package/components/p-CHzfYZbv.js +4 -0
  60. package/components/p-COdmnpcX.js +4 -0
  61. package/components/p-D4h1H_hh.js +4 -0
  62. package/components/{p-C2lKgrXx.js → p-DEBD4LvH.js} +1 -1
  63. package/components/{p-BSEgsdFI.js → p-DhkITZ-y.js} +1 -1
  64. package/components/{p-5bE_Wz4Y.js → p-DpV-p5Xs.js} +1 -1
  65. package/components/{p-Cfx4M1Bn.js → p-Dz74mwlk.js} +1 -1
  66. package/components/p-LMGfIvTf.js +4 -0
  67. package/components/{p-BLmJ0zRm.js → p-XJWMAP8m.js} +1 -1
  68. package/components/p-j9Da6cYO.js +4 -0
  69. package/components/p-jOtMJMv8.js +4 -0
  70. package/components/{p-B60hm8Qv.js → p-r0aq7dpt.js} +1 -1
  71. package/components/p-uTR_dEqg.js +4 -0
  72. package/components/{p-rCa2eL0j.js → p-wk2QqrAo.js} +1 -1
  73. package/dist/cjs/config-DWdFbSNK.js +35 -0
  74. package/dist/cjs/index-Cueg3U4w.js +429 -0
  75. package/dist/cjs/index.cjs.js +6 -6
  76. package/dist/cjs/ion-action-sheet.cjs.entry.js +27 -7
  77. package/dist/cjs/ion-alert.cjs.entry.js +64 -25
  78. package/dist/cjs/ion-app_8.cjs.entry.js +23 -9
  79. package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
  80. package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
  81. package/dist/cjs/{ion-datetime_3.cjs.entry.js → ion-datetime.cjs.entry.js} +1 -639
  82. package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +3 -2
  83. package/dist/cjs/ion-input.cjs.entry.js +4 -4
  84. package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
  85. package/dist/cjs/ion-loading.cjs.entry.js +10 -5
  86. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  87. package/dist/cjs/ion-modal.cjs.entry.js +21 -10
  88. package/dist/cjs/ion-popover.cjs.entry.js +9 -5
  89. package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
  90. package/dist/cjs/ion-radio_2.cjs.entry.js +3 -3
  91. package/dist/cjs/ion-range.cjs.entry.js +3 -3
  92. package/dist/cjs/ion-refresher_2.cjs.entry.js +6 -5
  93. package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
  94. package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
  95. package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
  96. package/dist/cjs/ion-searchbar.cjs.entry.js +5 -5
  97. package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
  98. package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
  99. package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
  100. package/dist/cjs/ion-select-modal.cjs.entry.js +84 -30
  101. package/dist/cjs/ion-select_3.cjs.entry.js +407 -49
  102. package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
  103. package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
  104. package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
  105. package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
  106. package/dist/cjs/ion-text.cjs.entry.js +2 -2
  107. package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
  108. package/dist/cjs/ion-toast.cjs.entry.js +6 -5
  109. package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
  110. package/dist/cjs/ionic.cjs.js +1 -1
  111. package/dist/cjs/loader.cjs.js +1 -1
  112. package/dist/cjs/overlay-control-label-D2sdL2O8.js +50 -0
  113. package/dist/cjs/{overlays-TbKsuC-K.js → overlays-DSmSrd_4.js} +26 -7
  114. package/dist/cjs/select-option-render-DTF50t5r.js +124 -0
  115. package/dist/collection/collection-manifest.json +6 -10
  116. package/dist/collection/components/action-sheet/action-sheet.ios.css +229 -2
  117. package/dist/collection/components/action-sheet/action-sheet.js +24 -5
  118. package/dist/collection/components/action-sheet/action-sheet.md.css +175 -2
  119. package/dist/collection/components/alert/alert.ios.css +280 -10
  120. package/dist/collection/components/alert/alert.js +59 -21
  121. package/dist/collection/components/alert/alert.md.css +269 -20
  122. package/dist/collection/components/input/input.js +8 -8
  123. package/dist/collection/components/loading/loading.js +7 -3
  124. package/dist/collection/components/modal/modal.js +23 -12
  125. package/dist/collection/components/popover/popover.ios.css +15 -0
  126. package/dist/collection/components/popover/popover.js +7 -3
  127. package/dist/collection/components/popover/popover.md.css +15 -0
  128. package/dist/collection/components/progress-bar/progress-bar.js +1 -1
  129. package/dist/collection/components/radio/radio.js +4 -4
  130. package/dist/collection/components/range/range.js +3 -3
  131. package/dist/collection/components/refresher/refresher.js +1 -1
  132. package/dist/collection/components/refresher-content/refresher-content.js +1 -1
  133. package/dist/collection/components/reorder/reorder.js +1 -1
  134. package/dist/collection/components/reorder-group/reorder-group.js +1 -1
  135. package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
  136. package/dist/collection/components/router-link/router-link.js +2 -2
  137. package/dist/collection/components/router-outlet/router-outlet.js +38 -5
  138. package/dist/collection/components/row/row.js +1 -1
  139. package/dist/collection/components/searchbar/searchbar.js +9 -9
  140. package/dist/collection/components/segment/segment.js +2 -2
  141. package/dist/collection/components/segment-button/segment-button.js +2 -2
  142. package/dist/collection/components/segment-content/segment-content.js +1 -1
  143. package/dist/collection/components/segment-view/segment-view.js +2 -2
  144. package/dist/collection/components/select/select.ios.css +33 -0
  145. package/dist/collection/components/select/select.js +323 -16
  146. package/dist/collection/components/select/select.md.css +33 -0
  147. package/dist/collection/components/select-modal/select-modal.ios.css +219 -0
  148. package/dist/collection/components/select-modal/select-modal.js +79 -26
  149. package/dist/collection/components/select-modal/select-modal.md.css +165 -0
  150. package/dist/collection/components/select-option/select-option.js +67 -3
  151. package/dist/collection/components/select-popover/select-popover.ios.css +219 -0
  152. package/dist/collection/components/select-popover/select-popover.js +78 -26
  153. package/dist/collection/components/select-popover/select-popover.md.css +165 -0
  154. package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
  155. package/dist/collection/components/spinner/spinner.js +1 -1
  156. package/dist/collection/components/split-pane/split-pane.js +2 -2
  157. package/dist/collection/components/tab/tab.js +2 -2
  158. package/dist/collection/components/tab-bar/tab-bar.js +2 -2
  159. package/dist/collection/components/tab-button/tab-button.js +2 -2
  160. package/dist/collection/components/tabs/tabs.js +1 -1
  161. package/dist/collection/components/text/text.js +2 -2
  162. package/dist/collection/components/textarea/textarea.js +2 -2
  163. package/dist/collection/components/thumbnail/thumbnail.js +1 -1
  164. package/dist/collection/components/title/title.js +2 -2
  165. package/dist/collection/components/toast/toast.js +2 -2
  166. package/dist/collection/components/toggle/toggle.js +3 -3
  167. package/dist/collection/components/toolbar/toolbar.js +2 -2
  168. package/dist/collection/index.js +1 -1
  169. package/dist/collection/utils/overlay-control-label.js +45 -0
  170. package/dist/collection/utils/overlays.js +25 -6
  171. package/dist/collection/utils/sanitization/index.js +274 -18
  172. package/dist/collection/utils/select-option-render.js +119 -0
  173. package/dist/docs.json +480 -1176
  174. package/dist/esm/config-BwKpO3Is.js +31 -0
  175. package/dist/esm/{index-DV3sJJW8.js → index-AlrZKoWR.js} +1 -1
  176. package/dist/esm/index-DQSkZyOJ.js +424 -0
  177. package/dist/esm/index.js +3 -2
  178. package/dist/esm/ion-accordion_2.entry.js +1 -1
  179. package/dist/esm/ion-action-sheet.entry.js +27 -7
  180. package/dist/esm/ion-alert.entry.js +63 -24
  181. package/dist/esm/ion-app_8.entry.js +23 -9
  182. package/dist/esm/ion-avatar_3.entry.js +1 -1
  183. package/dist/esm/ion-back-button.entry.js +1 -1
  184. package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
  185. package/dist/esm/ion-col_3.entry.js +1 -1
  186. package/dist/esm/{ion-datetime_3.entry.js → ion-datetime.entry.js} +5 -641
  187. package/dist/esm/ion-fab_3.entry.js +1 -1
  188. package/dist/esm/ion-infinite-scroll_2.entry.js +2 -1
  189. package/dist/esm/ion-input-password-toggle.entry.js +1 -1
  190. package/dist/esm/ion-input.entry.js +5 -5
  191. package/dist/esm/ion-item_8.entry.js +3 -3
  192. package/dist/esm/ion-loading.entry.js +9 -4
  193. package/dist/esm/ion-menu_3.entry.js +2 -2
  194. package/dist/esm/ion-modal.entry.js +21 -10
  195. package/dist/esm/ion-popover.entry.js +9 -5
  196. package/dist/esm/ion-progress-bar.entry.js +1 -1
  197. package/dist/esm/ion-radio_2.entry.js +3 -3
  198. package/dist/esm/ion-range.entry.js +3 -3
  199. package/dist/esm/ion-refresher_2.entry.js +5 -4
  200. package/dist/esm/ion-reorder_2.entry.js +3 -3
  201. package/dist/esm/ion-ripple-effect.entry.js +1 -1
  202. package/dist/esm/ion-route_4.entry.js +2 -2
  203. package/dist/esm/ion-searchbar.entry.js +6 -6
  204. package/dist/esm/ion-segment-content.entry.js +1 -1
  205. package/dist/esm/ion-segment-view.entry.js +2 -2
  206. package/dist/esm/ion-segment_2.entry.js +4 -4
  207. package/dist/esm/ion-select-modal.entry.js +84 -30
  208. package/dist/esm/ion-select_3.entry.js +410 -52
  209. package/dist/esm/ion-spinner.entry.js +1 -1
  210. package/dist/esm/ion-split-pane.entry.js +2 -2
  211. package/dist/esm/ion-tab-bar_2.entry.js +4 -4
  212. package/dist/esm/ion-tab_2.entry.js +3 -3
  213. package/dist/esm/ion-text.entry.js +2 -2
  214. package/dist/esm/ion-textarea.entry.js +2 -2
  215. package/dist/esm/ion-toast.entry.js +5 -4
  216. package/dist/esm/ion-toggle.entry.js +4 -4
  217. package/dist/esm/ionic.js +1 -1
  218. package/dist/esm/loader.js +1 -1
  219. package/dist/esm/overlay-control-label-BSQPZ79H.js +47 -0
  220. package/dist/esm/{overlays-TbiM4mdr.js → overlays-DLNOHWNc.js} +26 -7
  221. package/dist/esm/select-option-render-B8nWZRnd.js +122 -0
  222. package/dist/html.html-data.json +51 -79
  223. package/dist/ionic/index.esm.js +1 -1
  224. package/dist/ionic/ionic.esm.js +1 -1
  225. package/dist/ionic/p-038eb991.entry.js +4 -0
  226. package/dist/ionic/{p-8fce95d5.entry.js → p-14095ba5.entry.js} +1 -1
  227. package/dist/ionic/{p-3a126bca.entry.js → p-259d0d98.entry.js} +1 -1
  228. package/dist/ionic/{p-fabcce6c.entry.js → p-341032b3.entry.js} +1 -1
  229. package/dist/ionic/{p-3a7d1e91.entry.js → p-4502a274.entry.js} +1 -1
  230. package/dist/ionic/p-4621c387.entry.js +4 -0
  231. package/dist/ionic/p-4ace7762.entry.js +4 -0
  232. package/dist/ionic/p-4bb3eb60.entry.js +4 -0
  233. package/dist/ionic/p-4e9ec5c5.entry.js +4 -0
  234. package/dist/ionic/{p-874b4bd8.entry.js → p-51cd1643.entry.js} +1 -1
  235. package/dist/ionic/p-5c3ec490.entry.js +4 -0
  236. package/dist/ionic/p-5d1ac2c7.entry.js +4 -0
  237. package/dist/ionic/{p-3ae5f277.entry.js → p-627fabd9.entry.js} +1 -1
  238. package/dist/ionic/{p-e0be05c5.entry.js → p-629e4703.entry.js} +1 -1
  239. package/dist/ionic/{p-5d1da0a2.entry.js → p-76e92a84.entry.js} +1 -1
  240. package/dist/ionic/p-79a36078.entry.js +4 -0
  241. package/dist/ionic/{p-9f1103ce.entry.js → p-7a37b3ce.entry.js} +1 -1
  242. package/dist/ionic/{p-3353c229.entry.js → p-80b44b3c.entry.js} +1 -1
  243. package/dist/ionic/p-8d624ee5.entry.js +4 -0
  244. package/dist/ionic/p-913b218a.entry.js +4 -0
  245. package/dist/ionic/{p-390ca786.entry.js → p-9177f4ac.entry.js} +1 -1
  246. package/dist/ionic/{p-DV3sJJW8.js → p-AlrZKoWR.js} +1 -1
  247. package/dist/ionic/p-BDtODLZ4.js +4 -0
  248. package/dist/ionic/p-BSQPZ79H.js +4 -0
  249. package/dist/ionic/p-BwKpO3Is.js +4 -0
  250. package/dist/ionic/p-Cg5-OQYy.js +4 -0
  251. package/dist/ionic/p-DCOvXkOm.js +4 -0
  252. package/dist/ionic/{p-4858af1f.entry.js → p-a5213260.entry.js} +1 -1
  253. package/dist/ionic/{p-37e720da.entry.js → p-a7628bc7.entry.js} +1 -1
  254. package/dist/ionic/p-a9a33367.entry.js +4 -0
  255. package/dist/ionic/p-ad728198.entry.js +4 -0
  256. package/dist/ionic/{p-ef4c3bee.entry.js → p-b1599fca.entry.js} +1 -1
  257. package/dist/ionic/{p-84d5ce05.entry.js → p-b9ac1fe0.entry.js} +1 -1
  258. package/dist/ionic/p-bfc8c629.entry.js +4 -0
  259. package/dist/ionic/p-c08e666a.entry.js +4 -0
  260. package/dist/ionic/{p-94f2a736.entry.js → p-c93553d2.entry.js} +1 -1
  261. package/dist/ionic/p-ce7992c4.entry.js +4 -0
  262. package/dist/ionic/{p-75dc25ba.entry.js → p-d2c7f046.entry.js} +1 -1
  263. package/dist/ionic/{p-c4d8641b.entry.js → p-d8387b99.entry.js} +1 -1
  264. package/dist/ionic/{p-9a65ac7f.entry.js → p-db1b6738.entry.js} +1 -1
  265. package/dist/ionic/p-ed797c72.entry.js +4 -0
  266. package/dist/ionic/{p-8eb8ee76.entry.js → p-ef93ca92.entry.js} +1 -1
  267. package/dist/ionic/p-f09f9642.entry.js +4 -0
  268. package/dist/ionic/p-f1c06f82.entry.js +4 -0
  269. package/dist/ionic/{p-0fa9c382.entry.js → p-fe4aa1db.entry.js} +1 -1
  270. package/dist/types/components/input/input.d.ts +1 -1
  271. package/dist/types/components/modal/modal.d.ts +11 -4
  272. package/dist/types/components/router-outlet/router-outlet.d.ts +7 -0
  273. package/dist/types/components/searchbar/searchbar.d.ts +1 -1
  274. package/dist/types/components/select/select-interface.d.ts +31 -0
  275. package/dist/types/components/select/select.d.ts +18 -0
  276. package/dist/types/components/select-option/select-option.d.ts +42 -1
  277. package/dist/types/components.d.ts +60 -288
  278. package/dist/types/index.d.ts +1 -1
  279. package/dist/types/interface.d.ts +0 -1
  280. package/dist/types/utils/config.d.ts +0 -8
  281. package/dist/types/utils/overlay-control-label.d.ts +32 -0
  282. package/dist/types/utils/overlays.d.ts +11 -9
  283. package/dist/types/utils/sanitization/index.d.ts +58 -2
  284. package/dist/types/utils/select-option-render.d.ts +53 -0
  285. package/hydrate/index.js +1400 -1142
  286. package/hydrate/index.mjs +1400 -1142
  287. package/package.json +37 -5
  288. package/components/ion-picker-legacy-column.d.ts +0 -11
  289. package/components/ion-picker-legacy-column.js +0 -4
  290. package/components/ion-picker-legacy.d.ts +0 -11
  291. package/components/ion-picker-legacy.js +0 -4
  292. package/components/p-0NRupjzW.js +0 -4
  293. package/components/p-Bth-EzJ0.js +0 -4
  294. package/components/p-CU5rbWAW.js +0 -4
  295. package/components/p-DDWp95gH.js +0 -4
  296. package/components/p-W9CZ2mWX.js +0 -4
  297. package/components/p-dhLYXa7A.js +0 -4
  298. package/components/p-k_E4tX5Z.js +0 -4
  299. package/components/p-nQi4oKcG.js +0 -4
  300. package/components/p-uVRyUM3z.js +0 -4
  301. package/dist/cjs/config-xninhj0J.js +0 -201
  302. package/dist/collection/components/picker-legacy/animations/ios.enter.js +0 -27
  303. package/dist/collection/components/picker-legacy/animations/ios.leave.js +0 -23
  304. package/dist/collection/components/picker-legacy/picker-interface.js +0 -1
  305. package/dist/collection/components/picker-legacy/picker.ios.css +0 -300
  306. package/dist/collection/components/picker-legacy/picker.js +0 -890
  307. package/dist/collection/components/picker-legacy/picker.md.css +0 -287
  308. package/dist/collection/components/picker-legacy-column/picker-column.ios.css +0 -231
  309. package/dist/collection/components/picker-legacy-column/picker-column.js +0 -422
  310. package/dist/collection/components/picker-legacy-column/picker-column.md.css +0 -222
  311. package/dist/collection/components/picker-legacy-column/test/test.utils.js +0 -43
  312. package/dist/esm/config-DQCONYYp.js +0 -195
  313. package/dist/ionic/p-00dbb17e.entry.js +0 -4
  314. package/dist/ionic/p-01f81ea5.entry.js +0 -4
  315. package/dist/ionic/p-0d005398.entry.js +0 -4
  316. package/dist/ionic/p-20b1a044.entry.js +0 -4
  317. package/dist/ionic/p-21eb76d5.entry.js +0 -4
  318. package/dist/ionic/p-27d30585.entry.js +0 -4
  319. package/dist/ionic/p-2bb2cb18.entry.js +0 -4
  320. package/dist/ionic/p-2f55dc1a.entry.js +0 -4
  321. package/dist/ionic/p-30bf9737.entry.js +0 -4
  322. package/dist/ionic/p-3a541154.entry.js +0 -4
  323. package/dist/ionic/p-485fda23.entry.js +0 -4
  324. package/dist/ionic/p-4baa5b82.entry.js +0 -4
  325. package/dist/ionic/p-4dc1c33c.entry.js +0 -4
  326. package/dist/ionic/p-5fc7e542.entry.js +0 -4
  327. package/dist/ionic/p-DzWaWHGc.js +0 -4
  328. package/dist/ionic/p-a21add2f.entry.js +0 -4
  329. package/dist/ionic/p-aa5d6b8f.entry.js +0 -4
  330. package/dist/ionic/p-e847a888.entry.js +0 -4
  331. package/dist/ionic/p-ec090e0a.entry.js +0 -4
  332. package/dist/ionic/p-xOfi7-Zn.js +0 -4
  333. package/dist/types/components/picker-legacy/animations/ios.enter.d.ts +0 -5
  334. package/dist/types/components/picker-legacy/animations/ios.leave.d.ts +0 -5
  335. package/dist/types/components/picker-legacy/picker-interface.d.ts +0 -52
  336. package/dist/types/components/picker-legacy/picker.d.ts +0 -158
  337. package/dist/types/components/picker-legacy-column/picker-column.d.ts +0 -46
  338. package/dist/types/components/picker-legacy-column/test/test.utils.d.ts +0 -9
@@ -1,8 +1,64 @@
1
1
  /**
2
- * Does a simple sanitization of all elements
3
- * in an untrusted string
2
+ * Sanitize an untrusted HTML string.
3
+ *
4
+ * Parses the string into a detached DOM, removes blocked tags, strips
5
+ * attributes outside the narrow `domStringAllowedAttributes` list (refer
6
+ * `sanitizeElement`), and scrubs script-scheme URLs. Returns the sanitized
7
+ * HTML string.
8
+ *
9
+ * Use this when you have an HTML string from an unknown source and need to
10
+ * render it via `innerHTML`. Use `sanitizeDOMTree` instead when you already
11
+ * have a DOM tree and want to sanitize it in place without a string round
12
+ * trip. The two apply the same dangerous-vector scrubbing but different
13
+ * attribute allowlists: this path stays narrow so existing consumers
14
+ * (toast, loading, alert message, etc.) are unaffected, while
15
+ * `sanitizeDOMTree` uses the wider rich-content allowlist.
16
+ *
17
+ * @param untrustedString - The HTML string to sanitize. Pass an
18
+ * `IonicSafeString` to bypass sanitization, or `undefined` to short-circuit.
19
+ * @returns The sanitized HTML string, or `undefined` if the input was
20
+ * `undefined`. Returns `''` if sanitization fails or the input contains
21
+ * an inline `onload=` handler.
4
22
  */
5
23
  export declare const sanitizeDOMString: (untrustedString: IonicSafeString | string | undefined) => string | undefined;
24
+ /**
25
+ * Sanitize an entire trusted DOM tree in place.
26
+ *
27
+ * Removes blocked tags (`script`, `iframe`, etc.) from the subtree and
28
+ * then sanitizes attributes on every remaining element using the wider
29
+ * `richContentAllowedAttributes` allowlist (refer `sanitizeElement`).
30
+ * Component presentational attributes (`size`, `color`, `shape`, inline
31
+ * SVG, `aria-*`, `data-*`) are preserved; `style`, event handlers (`on*`),
32
+ * form/navigation-hijack attributes, script-scheme URLs, and non-image
33
+ * `data:` URLs are stripped.
34
+ *
35
+ * Use this when you have a DOM tree the developer controls (e.g.
36
+ * cloned slot content from a component) and you need to render it
37
+ * elsewhere safely.
38
+ *
39
+ * @param root - The root element whose subtree will be sanitized in
40
+ * place. No-op when the sanitizer is disabled via `Ionic.config`.
41
+ */
42
+ export declare const sanitizeDOMTree: (root: HTMLElement) => void;
43
+ /**
44
+ * Mirror known custom-element DOM properties onto attributes so they
45
+ * survive `cloneNode`. Call this on a DOM subtree before cloning it for
46
+ * rendering elsewhere (e.g. cloning slotted option content into an
47
+ * overlay).
48
+ *
49
+ * Only sets the attribute when the property holds a non-empty string
50
+ * and the attribute isn't already present, so existing attributes
51
+ * take precedence.
52
+ *
53
+ * @param root - The root element whose subtree (and itself) will be
54
+ * inspected.
55
+ */
56
+ export declare const reflectPropertiesToAttributes: (root: Element) => void;
57
+ /**
58
+ * Tags removed entirely (with their subtree) before attribute sanitization.
59
+ * Exported so tests can assert the set without hardcoding it.
60
+ */
61
+ export declare const blockedTags: string[];
6
62
  export declare class IonicSafeString {
7
63
  value: string;
8
64
  constructor(value: string);
@@ -0,0 +1,53 @@
1
+ import type { VNode } from '../stencil-public-runtime';
2
+ import type { RichContentOption as RichContentOpt } from '../components/select/select-interface';
3
+ interface RichContentOption extends RichContentOpt {
4
+ /** Unique identifier for stable virtual DOM keys across re-renders. */
5
+ id: string;
6
+ /** The main label for the option as a string or an HTMLElement. */
7
+ label?: string | HTMLElement;
8
+ }
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
+ /**
40
+ * Renders the label content for a select option within an overlay
41
+ * interface based on the presence of rich content.
42
+ *
43
+ * Span elements should be used when this content renders within buttons,
44
+ * depending on the select interface. Buttons can only have phrasing
45
+ * content to prevent accessibility issues.
46
+ *
47
+ * @param option - The content option data containing label, slots,
48
+ * and description.
49
+ * @param className - The base CSS class for the label element.
50
+ * @param useSpan - Whether to use a span element instead of a div for the label.
51
+ */
52
+ export declare const renderOptionLabel: (option: RichContentOption, className: string, useSpan?: boolean) => HTMLElement | string | undefined;
53
+ export {};