@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.
- package/components/index.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-card.js +1 -1
- package/components/ion-chip.js +1 -1
- package/components/ion-datetime-button.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-gallery-item.d.ts +11 -0
- package/components/ion-gallery-item.js +4 -0
- package/components/ion-gallery.js +1 -1
- package/components/ion-grid.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-img.js +1 -1
- package/components/ion-infinite-scroll-content.js +1 -1
- package/components/ion-infinite-scroll.js +1 -1
- package/components/ion-input-otp.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-divider.js +1 -1
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-label.js +1 -1
- package/components/ion-list-header.js +1 -1
- package/components/ion-list.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-menu-toggle.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +1 -1
- package/components/ion-picker-column-option.js +1 -1
- package/components/ion-picker-legacy-column.js +1 -1
- package/components/ion-picker-legacy.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-radio-group.js +1 -1
- package/components/ion-radio.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-ripple-effect.js +1 -1
- package/components/ion-router-link.js +1 -1
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +1 -1
- package/components/ion-segment.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-option.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-skeleton-text.js +1 -1
- package/components/ion-spinner.js +1 -1
- package/components/ion-split-pane.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-tab.js +1 -1
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +1 -1
- package/components/ion-textarea.js +1 -1
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/ion-toolbar.js +1 -1
- package/components/p-BFZBl0TS.js +4 -0
- package/components/{p-pvh0bjpw.js → p-BVi3gqm6.js} +1 -1
- package/components/{p-D6g8ud1e.js → p-BVk7LVs0.js} +1 -1
- package/components/{p-B9MABkWm.js → p-BdUtZxku.js} +1 -1
- package/components/{p-CzC_ZSgb.js → p-Be8tHurp.js} +1 -1
- package/components/p-C0U8YqYW.js +4 -0
- package/components/{p-C8kBejTT.js → p-CG3ZV6ON.js} +1 -1
- package/components/{p-CBS0sBAa.js → p-CaqTORfV.js} +1 -1
- package/components/{p-D2mReIu8.js → p-CkA0SI9d.js} +1 -1
- package/components/p-Cmql_g3_.js +4 -0
- package/components/p-CsakePQg.js +4 -0
- package/components/{p-CgSn4J7d.js → p-D1gEOh9B.js} +1 -1
- package/components/p-D3qBmaqi.js +4 -0
- package/components/{p-Do7NMUwR.js → p-DGn-jQpr.js} +1 -1
- package/components/p-DH4JHV73.js +4 -0
- package/components/p-DYK0qX7x.js +4 -0
- package/components/{p-Dp2x0MpA.js → p-DfV7pOtM.js} +1 -1
- package/components/{p-BhkGOA7t.js → p-F3N54OKJ.js} +1 -1
- package/components/{p-CgZLVOCc.js → p-MPREydZp.js} +1 -1
- package/components/{p-kKYBfhbe.js → p-OFfrVDLw.js} +1 -1
- package/components/p-iZO3WzZT.js +4 -0
- package/components/{p-LB-QPk3e.js → p-qclL-gNR.js} +1 -1
- package/dist/cjs/index-BJlwOs11.js +171 -0
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -5
- package/dist/cjs/ion-alert.cjs.entry.js +9 -25
- package/dist/cjs/ion-app_8.cjs.entry.js +7 -7
- package/dist/cjs/ion-avatar_3.cjs.entry.js +2 -2
- package/dist/cjs/ion-col_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-gallery-item.cjs.entry.js +60 -0
- package/dist/cjs/ion-gallery.cjs.entry.js +91 -13
- package/dist/cjs/ion-img.cjs.entry.js +2 -2
- package/dist/cjs/ion-infinite-scroll_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-input-otp.cjs.entry.js +3 -3
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ion-input.cjs.entry.js +4 -4
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +16 -15
- package/dist/cjs/ion-loading.cjs.entry.js +3 -3
- package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
- package/dist/cjs/ion-modal.cjs.entry.js +4 -4
- package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +2 -2
- package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +5 -5
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-reorder_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-select-modal.cjs.entry.js +10 -30
- package/dist/cjs/ion-select_3.cjs.entry.js +43 -102
- package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +3 -3
- package/dist/cjs/ion-toast.cjs.entry.js +3 -3
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/select-option-render-C7klBX2H.js +81 -0
- package/dist/collection/collection-manifest.json +2 -1
- package/dist/collection/components/action-sheet/action-sheet.ionic.css +506 -163
- package/dist/collection/components/action-sheet/action-sheet.ios.css +27 -288
- package/dist/collection/components/action-sheet/action-sheet.md.css +27 -228
- package/dist/collection/components/alert/alert.ionic.css +797 -416
- package/dist/collection/components/alert/alert.ios.css +40 -402
- package/dist/collection/components/alert/alert.js +4 -20
- package/dist/collection/components/alert/alert.md.css +50 -385
- package/dist/collection/components/gallery/gallery.css +1 -86
- package/dist/collection/components/gallery/gallery.js +92 -13
- package/dist/collection/components/gallery/test/utils.js +16 -16
- package/dist/collection/components/gallery-item/gallery-item.css +88 -0
- package/dist/collection/components/gallery-item/gallery-item.js +100 -0
- package/dist/collection/components/grid/grid.js +2 -2
- package/dist/collection/components/header/header.js +2 -2
- package/dist/collection/components/img/img.js +2 -2
- package/dist/collection/components/infinite-scroll/infinite-scroll.js +1 -1
- package/dist/collection/components/infinite-scroll-content/infinite-scroll-content.js +2 -2
- package/dist/collection/components/input/input.js +4 -4
- package/dist/collection/components/input-otp/input-otp.js +3 -3
- package/dist/collection/components/input-password-toggle/input-password-toggle.js +3 -3
- package/dist/collection/components/item/item.ionic.css +17 -5
- package/dist/collection/components/item/item.js +3 -2
- package/dist/collection/components/item-divider/item-divider.js +2 -2
- package/dist/collection/components/item-group/item-group.js +1 -1
- package/dist/collection/components/item-option/item-option.js +2 -2
- package/dist/collection/components/item-options/item-options.js +1 -1
- package/dist/collection/components/item-sliding/item-sliding.js +1 -1
- package/dist/collection/components/label/label.js +2 -2
- package/dist/collection/components/list/list.js +1 -1
- package/dist/collection/components/list-header/list-header.js +2 -2
- package/dist/collection/components/loading/loading.js +2 -2
- package/dist/collection/components/menu/menu.js +2 -2
- package/dist/collection/components/menu-button/menu-button.js +2 -2
- package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
- package/dist/collection/components/modal/modal.js +4 -4
- package/dist/collection/components/nav/nav.js +1 -1
- package/dist/collection/components/nav-link/nav-link.js +1 -1
- package/dist/collection/components/note/note.js +2 -2
- package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
- package/dist/collection/components/picker-legacy/picker.js +2 -2
- package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
- package/dist/collection/components/popover/popover.js +2 -2
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +3 -3
- package/dist/collection/components/radio-group/radio-group.js +2 -2
- package/dist/collection/components/range/range.js +3 -3
- package/dist/collection/components/refresher/refresher.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +2 -2
- package/dist/collection/components/reorder/reorder.js +2 -2
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-outlet/router-outlet.js +1 -1
- package/dist/collection/components/row/row.js +2 -2
- package/dist/collection/components/searchbar/searchbar.js +4 -4
- package/dist/collection/components/segment/segment.js +2 -2
- package/dist/collection/components/segment-button/segment-button.js +2 -2
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.js +2 -2
- package/dist/collection/components/select/select.js +32 -72
- package/dist/collection/components/select-modal/select-modal.ionic.css +29 -139
- package/dist/collection/components/select-modal/select-modal.ios.css +7 -379
- package/dist/collection/components/select-modal/select-modal.js +5 -25
- package/dist/collection/components/select-modal/select-modal.md.css +7 -319
- package/dist/collection/components/select-option/select-option.js +1 -39
- package/dist/collection/components/select-popover/select-popover.ionic.css +376 -129
- package/dist/collection/components/select-popover/select-popover.ios.css +69 -252
- package/dist/collection/components/select-popover/select-popover.js +6 -25
- package/dist/collection/components/select-popover/select-popover.md.css +27 -273
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/split-pane/split-pane.js +2 -2
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +2 -2
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/text/text.js +2 -2
- package/dist/collection/components/textarea/textarea.js +3 -3
- package/dist/collection/components/thumbnail/thumbnail.js +2 -2
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +2 -2
- package/dist/collection/components/toggle/toggle.js +3 -3
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/collection/utils/sanitization/index.js +14 -255
- package/dist/collection/utils/select-option-render.js +24 -59
- package/dist/docs.json +87 -69
- package/dist/esm/index-D4ugF_sT.js +168 -0
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +5 -5
- package/dist/esm/ion-alert.entry.js +9 -25
- package/dist/esm/ion-app_8.entry.js +7 -7
- package/dist/esm/ion-avatar_3.entry.js +2 -2
- package/dist/esm/ion-col_3.entry.js +4 -4
- package/dist/esm/ion-datetime_3.entry.js +4 -4
- package/dist/esm/ion-gallery-item.entry.js +58 -0
- package/dist/esm/ion-gallery.entry.js +91 -13
- package/dist/esm/ion-img.entry.js +2 -2
- package/dist/esm/ion-infinite-scroll_2.entry.js +4 -4
- package/dist/esm/ion-input-otp.entry.js +3 -3
- package/dist/esm/ion-input-password-toggle.entry.js +3 -3
- package/dist/esm/ion-input.entry.js +4 -4
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +16 -15
- package/dist/esm/ion-loading.entry.js +3 -3
- package/dist/esm/ion-menu_3.entry.js +6 -6
- package/dist/esm/ion-modal.entry.js +4 -4
- package/dist/esm/ion-nav_2.entry.js +2 -2
- package/dist/esm/ion-picker-column-option.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +2 -2
- package/dist/esm/ion-progress-bar.entry.js +1 -1
- package/dist/esm/ion-radio_2.entry.js +5 -5
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +4 -4
- package/dist/esm/ion-reorder_2.entry.js +3 -3
- package/dist/esm/ion-ripple-effect.entry.js +1 -1
- package/dist/esm/ion-route_4.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +4 -4
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +2 -2
- package/dist/esm/ion-segment_2.entry.js +4 -4
- package/dist/esm/ion-select-modal.entry.js +10 -30
- package/dist/esm/ion-select_3.entry.js +43 -102
- package/dist/esm/ion-spinner.entry.js +1 -1
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +4 -4
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +3 -3
- package/dist/esm/ion-toast.entry.js +3 -3
- package/dist/esm/ion-toggle.entry.js +3 -3
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/select-option-render-B2qc5ZP7.js +79 -0
- package/dist/html.html-data.json +42 -27
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-f52856cb.entry.js → p-0592c549.entry.js} +1 -1
- package/dist/ionic/{p-67c2d349.entry.js → p-0aa510cd.entry.js} +1 -1
- package/dist/ionic/{p-9ccfb733.entry.js → p-0cd5fd9d.entry.js} +1 -1
- package/dist/ionic/p-0e9d4e11.entry.js +4 -0
- package/dist/ionic/{p-497f6391.entry.js → p-11a38333.entry.js} +1 -1
- package/dist/ionic/{p-0030507d.entry.js → p-1a009a51.entry.js} +1 -1
- package/dist/ionic/{p-7186786e.entry.js → p-23e524f8.entry.js} +1 -1
- package/dist/ionic/{p-1439fecb.entry.js → p-2826761a.entry.js} +1 -1
- package/dist/ionic/{p-93315d96.entry.js → p-2c4170d8.entry.js} +1 -1
- package/dist/ionic/p-2d5a2511.entry.js +4 -0
- package/dist/ionic/{p-7f294078.entry.js → p-3706ea52.entry.js} +1 -1
- package/dist/ionic/{p-b69add0e.entry.js → p-3e376501.entry.js} +1 -1
- package/dist/ionic/{p-c684a3b6.entry.js → p-44597202.entry.js} +1 -1
- package/dist/ionic/{p-8458f1b6.entry.js → p-4a27a79a.entry.js} +1 -1
- package/dist/ionic/{p-b7235e85.entry.js → p-4f07113d.entry.js} +1 -1
- package/dist/ionic/{p-88e7f52a.entry.js → p-52b85650.entry.js} +1 -1
- package/dist/ionic/{p-199bffb3.entry.js → p-5a6e0ae1.entry.js} +1 -1
- package/dist/ionic/p-6906dca7.entry.js +4 -0
- package/dist/ionic/p-75a1ca50.entry.js +4 -0
- package/dist/ionic/{p-19a1ff9a.entry.js → p-7b09c19d.entry.js} +1 -1
- package/dist/ionic/{p-76c70824.entry.js → p-7b886782.entry.js} +1 -1
- package/dist/ionic/p-7da8b262.entry.js +4 -0
- package/dist/ionic/{p-89eab395.entry.js → p-82c05be2.entry.js} +1 -1
- package/dist/ionic/{p-b653f4c2.entry.js → p-83c0eb9b.entry.js} +1 -1
- package/dist/ionic/{p-b4fd91b8.entry.js → p-85ff1314.entry.js} +1 -1
- package/dist/ionic/p-88048796.entry.js +4 -0
- package/dist/ionic/{p-3f18dfe9.entry.js → p-8eca5ba1.entry.js} +1 -1
- package/dist/ionic/p-96f52444.entry.js +4 -0
- package/dist/ionic/p-CFjI63GE.js +4 -0
- package/dist/ionic/p-CWJdc8f_.js +4 -0
- package/dist/ionic/{p-f2f740aa.entry.js → p-a3b047e0.entry.js} +1 -1
- package/dist/ionic/{p-40d9e029.entry.js → p-a73caa5e.entry.js} +1 -1
- package/dist/ionic/{p-1ad16c09.entry.js → p-b0dfd018.entry.js} +1 -1
- package/dist/ionic/{p-a3f9be52.entry.js → p-b6130fe4.entry.js} +1 -1
- package/dist/ionic/p-c0558552.entry.js +4 -0
- package/dist/ionic/{p-084c2623.entry.js → p-c5f745b4.entry.js} +1 -1
- package/dist/ionic/{p-bc3d68ff.entry.js → p-c781241c.entry.js} +1 -1
- package/dist/ionic/p-cb154afe.entry.js +4 -0
- package/dist/ionic/{p-b847907d.entry.js → p-cde69f38.entry.js} +1 -1
- package/dist/ionic/{p-70ee89c9.entry.js → p-d6f0a698.entry.js} +1 -1
- package/dist/ionic/{p-dd2981d0.entry.js → p-d9804d04.entry.js} +1 -1
- package/dist/ionic/{p-7054a1b9.entry.js → p-e342b205.entry.js} +1 -1
- package/dist/ionic/{p-9dfbe98d.entry.js → p-e8916b04.entry.js} +1 -1
- package/dist/ionic/{p-dac1d4de.entry.js → p-f10f8f95.entry.js} +1 -1
- package/dist/types/components/gallery/gallery.d.ts +41 -8
- package/dist/types/components/gallery/test/utils.d.ts +2 -1
- package/dist/types/components/gallery-item/gallery-item.d.ts +33 -0
- package/dist/types/components/select/select-interface.d.ts +0 -8
- package/dist/types/components/select-option/select-option.d.ts +0 -32
- package/dist/types/components.d.ts +33 -18
- package/dist/types/utils/sanitization/index.d.ts +2 -54
- package/dist/types/utils/select-option-render.d.ts +0 -31
- package/hydrate/index.js +380 -645
- package/hydrate/index.mjs +380 -645
- package/package.json +1 -1
- package/components/p-BP_TU_4l.js +0 -4
- package/components/p-BqTwa6uT.js +0 -4
- package/components/p-Bxiu1dAN.js +0 -4
- package/components/p-C91NnY87.js +0 -4
- package/components/p-CODBQrPj.js +0 -4
- package/components/p-GElQZ38c.js +0 -4
- package/components/p-WdrzoonY.js +0 -4
- package/components/p-h64_gZrH.js +0 -4
- package/components/p-sehKq5RI.js +0 -4
- package/dist/cjs/index-Dm4Dm7Vg.js +0 -414
- package/dist/cjs/overlay-control-label-DnRLQR1t.js +0 -52
- package/dist/cjs/select-option-render-DQyZnlF5.js +0 -116
- package/dist/collection/utils/overlay-control-label.js +0 -47
- package/dist/esm/index-Bmyj8b0z.js +0 -409
- package/dist/esm/overlay-control-label-CODBQrPj.js +0 -49
- package/dist/esm/select-option-render-QGJ9tZHa.js +0 -114
- package/dist/ionic/p-18ed37e3.entry.js +0 -4
- package/dist/ionic/p-2049aa81.entry.js +0 -4
- package/dist/ionic/p-290778c1.entry.js +0 -4
- package/dist/ionic/p-2aa7567e.entry.js +0 -4
- package/dist/ionic/p-2e7e3da1.entry.js +0 -4
- package/dist/ionic/p-CODBQrPj.js +0 -4
- package/dist/ionic/p-CxRK9GyE.js +0 -4
- package/dist/ionic/p-NqPMS7BP.js +0 -4
- package/dist/ionic/p-c94fbdab.entry.js +0 -4
- package/dist/ionic/p-e89848b2.entry.js +0 -4
- package/dist/ionic/p-ff09d2a5.entry.js +0 -4
- 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 -
|
|
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
|
-
*
|
|
61
|
-
*
|
|
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
|
|
146
|
-
*
|
|
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
|
|
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
|
|
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
|
-
*
|
|
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.
|