voyager-ionic-core 8.7.9 → 8.7.13
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/action-sheet.js +186 -5
- package/components/checkbox.js +63 -9
- package/components/content.js +13 -3
- package/components/ion-accordion.js +1 -1
- package/components/ion-datetime.js +35 -2
- package/components/ion-fab-button.js +1 -1
- package/components/ion-input.js +2 -1
- package/components/ion-select.js +15 -9
- package/components/ion-textarea.js +2 -1
- package/components/ion-toggle.js +62 -12
- package/components/item.js +1 -1
- package/components/modal.js +97 -5
- package/components/notch-controller.js +153 -0
- package/components/overlays.js +11 -5
- package/components/popover.js +36 -2
- package/components/radio-group.js +60 -7
- package/components/validity.js +1 -150
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +184 -5
- package/dist/cjs/ion-alert.cjs.entry.js +1 -1
- package/dist/cjs/ion-app_8.cjs.entry.js +12 -3
- package/dist/cjs/ion-checkbox.cjs.entry.js +60 -8
- package/dist/cjs/ion-datetime_3.cjs.entry.js +36 -3
- package/dist/cjs/ion-input.cjs.entry.js +3 -2
- package/dist/cjs/ion-loading.cjs.entry.js +1 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-modal.cjs.entry.js +97 -6
- package/dist/cjs/ion-popover.cjs.entry.js +37 -3
- package/dist/cjs/ion-radio_2.cjs.entry.js +57 -6
- package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +16 -10
- package/dist/cjs/ion-textarea.cjs.entry.js +3 -2
- package/dist/cjs/ion-toast.cjs.entry.js +1 -1
- package/dist/cjs/ion-toggle.cjs.entry.js +58 -10
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{validity-C8QoAYT2.js → notch-controller-Bzqhjm4f.js} +0 -14
- package/dist/cjs/{overlays-DxIZwUXI.js → overlays--dagG4QM.js} +11 -5
- package/dist/cjs/validity-BpS37YFM.js +19 -0
- package/dist/collection/components/accordion/accordion.js +3 -3
- package/dist/collection/components/action-sheet/action-sheet.js +199 -4
- package/dist/collection/components/checkbox/checkbox.js +67 -9
- package/dist/collection/components/content/content.js +32 -3
- package/dist/collection/components/datetime/datetime.js +35 -2
- package/dist/collection/components/fab-button/fab-button.js +3 -3
- package/dist/collection/components/item/item.js +3 -3
- package/dist/collection/components/modal/modal.js +97 -5
- package/dist/collection/components/popover/popover.js +36 -2
- package/dist/collection/components/radio-group/radio-group.js +64 -7
- package/dist/collection/components/select/select.js +13 -8
- package/dist/collection/components/toggle/toggle.js +62 -12
- package/dist/collection/utils/overlays.js +11 -5
- package/dist/collection/utils/test/playwright/page/utils/set-content.js +7 -0
- package/dist/docs.json +26 -20
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +184 -5
- package/dist/esm/ion-alert.entry.js +1 -1
- package/dist/esm/ion-app_8.entry.js +12 -3
- package/dist/esm/ion-checkbox.entry.js +60 -8
- package/dist/esm/ion-datetime_3.entry.js +36 -3
- package/dist/esm/ion-input.entry.js +2 -1
- package/dist/esm/ion-loading.entry.js +1 -1
- package/dist/esm/ion-menu_3.entry.js +1 -1
- package/dist/esm/ion-modal.entry.js +97 -6
- package/dist/esm/ion-popover.entry.js +37 -3
- package/dist/esm/ion-radio_2.entry.js +57 -6
- package/dist/esm/ion-select-modal.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +15 -9
- package/dist/esm/ion-textarea.entry.js +2 -1
- package/dist/esm/ion-toast.entry.js +1 -1
- package/dist/esm/ion-toggle.entry.js +58 -10
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{validity-B8oWougr.js → notch-controller-BwelN_JM.js} +1 -14
- package/dist/esm/{overlays-BymNv-BL.js → overlays-DCabi1dI.js} +11 -5
- package/dist/esm/validity-DJztqcrH.js +17 -0
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-071e8c1b.entry.js +4 -0
- package/dist/ionic/{p-7da39a4d.entry.js → p-07753df3.entry.js} +1 -1
- package/dist/ionic/{p-0b80d700.entry.js → p-0abeb0fc.entry.js} +1 -1
- package/dist/ionic/p-0bf76d0f.entry.js +4 -0
- package/dist/ionic/p-40c261a3.entry.js +4 -0
- package/dist/ionic/p-4b658a7c.entry.js +4 -0
- package/dist/ionic/p-4e41ea20.entry.js +4 -0
- package/dist/ionic/{p-98fc09eb.entry.js → p-576e0965.entry.js} +1 -1
- package/dist/ionic/p-60e0728c.entry.js +4 -0
- package/dist/ionic/p-75ae4733.entry.js +4 -0
- package/dist/ionic/p-C6F4hat2.js +4 -0
- package/dist/ionic/{p-DieJyvMP.js → p-DCv9sLH2.js} +1 -1
- package/dist/ionic/p-DJztqcrH.js +4 -0
- package/dist/ionic/{p-83be404e.entry.js → p-a8ed848b.entry.js} +1 -1
- package/dist/ionic/p-c19f63d0.entry.js +4 -0
- package/dist/ionic/p-c85a2127.entry.js +4 -0
- package/dist/ionic/p-d1f54e28.entry.js +4 -0
- package/dist/ionic/p-d3014190.entry.js +4 -0
- package/dist/ionic/{p-15193d01.entry.js → p-ec654c42.entry.js} +1 -1
- package/dist/ionic/svg/document-sharp.svg +1 -0
- package/dist/ionic/svg/document-text-outline.svg +1 -0
- package/dist/ionic/svg/document-text-sharp.svg +1 -0
- package/dist/ionic/svg/document-text.svg +1 -0
- package/dist/ionic/svg/document.svg +1 -0
- package/dist/ionic/svg/documents-outline.svg +1 -0
- package/dist/ionic/svg/documents-sharp.svg +1 -0
- package/dist/ionic/svg/documents.svg +1 -0
- package/dist/ionic/svg/download-outline.svg +1 -0
- package/dist/ionic/svg/download-sharp.svg +1 -0
- package/dist/ionic/svg/download.svg +1 -0
- package/dist/ionic/svg/duplicate-outline.svg +1 -0
- package/dist/ionic/svg/duplicate-sharp.svg +1 -0
- package/dist/ionic/svg/duplicate.svg +1 -0
- package/dist/ionic/svg/ear-outline.svg +1 -0
- package/dist/ionic/svg/ear-sharp.svg +1 -0
- package/dist/ionic/svg/ear.svg +1 -0
- package/dist/ionic/svg/earth-outline.svg +1 -0
- package/dist/ionic/svg/earth-sharp.svg +1 -0
- package/dist/ionic/svg/earth.svg +1 -0
- package/dist/ionic/svg/easel-outline.svg +1 -0
- package/dist/ionic/svg/easel-sharp.svg +1 -0
- package/dist/ionic/svg/easel.svg +1 -0
- package/dist/ionic/svg/egg-outline.svg +1 -0
- package/dist/ionic/svg/egg-sharp.svg +1 -0
- package/dist/ionic/svg/egg.svg +1 -0
- package/dist/ionic/svg/ellipse-outline.svg +1 -0
- package/dist/ionic/svg/ellipse-sharp.svg +1 -0
- package/dist/ionic/svg/ellipse.svg +1 -0
- package/dist/ionic/svg/ellipsis-horizontal-circle-outline.svg +1 -0
- package/dist/ionic/svg/ellipsis-horizontal-circle-sharp.svg +1 -0
- package/dist/ionic/svg/ellipsis-horizontal-circle.svg +1 -0
- package/dist/ionic/svg/ellipsis-horizontal-outline.svg +1 -0
- package/dist/ionic/svg/ellipsis-horizontal-sharp.svg +1 -0
- package/dist/ionic/svg/ellipsis-horizontal.svg +1 -0
- package/dist/ionic/svg/ellipsis-vertical-circle-outline.svg +1 -0
- package/dist/ionic/svg/ellipsis-vertical-circle-sharp.svg +1 -0
- package/dist/ionic/svg/ellipsis-vertical-circle.svg +1 -0
- package/dist/ionic/svg/ellipsis-vertical-outline.svg +1 -0
- package/dist/ionic/svg/ellipsis-vertical-sharp.svg +1 -0
- package/dist/ionic/svg/ellipsis-vertical.svg +1 -0
- package/dist/ionic/svg/enter-outline.svg +1 -0
- package/dist/ionic/svg/enter-sharp.svg +1 -0
- package/dist/ionic/svg/enter.svg +1 -0
- package/dist/ionic/svg/exit-outline.svg +1 -0
- package/dist/ionic/svg/exit-sharp.svg +1 -0
- package/dist/ionic/svg/exit.svg +1 -0
- package/dist/ionic/svg/expand-outline.svg +1 -0
- package/dist/ionic/svg/expand-sharp.svg +1 -0
- package/dist/ionic/svg/expand.svg +1 -0
- package/dist/ionic/svg/extension-puzzle-outline.svg +1 -0
- package/dist/ionic/svg/extension-puzzle-sharp.svg +1 -0
- package/dist/ionic/svg/extension-puzzle.svg +1 -0
- package/dist/ionic/svg/eye-off-outline.svg +1 -0
- package/dist/ionic/svg/eye-off-sharp.svg +1 -0
- package/dist/ionic/svg/eye-off.svg +1 -0
- package/dist/ionic/svg/eye-outline.svg +1 -0
- package/dist/ionic/svg/eye-sharp.svg +1 -0
- package/dist/ionic/svg/eye.svg +1 -0
- package/dist/ionic/svg/eyedrop-outline.svg +1 -0
- package/dist/ionic/svg/eyedrop-sharp.svg +1 -0
- package/dist/ionic/svg/eyedrop.svg +1 -0
- package/dist/ionic/svg/fast-food-outline.svg +1 -0
- package/dist/ionic/svg/fast-food-sharp.svg +1 -0
- package/dist/ionic/svg/fast-food.svg +1 -0
- package/dist/ionic/svg/female-outline.svg +1 -0
- package/dist/ionic/svg/female-sharp.svg +1 -0
- package/dist/ionic/svg/female.svg +1 -0
- package/dist/ionic/svg/file-tray-full-outline.svg +1 -0
- package/dist/ionic/svg/file-tray-full-sharp.svg +1 -0
- package/dist/ionic/svg/file-tray-full.svg +1 -0
- package/dist/ionic/svg/file-tray-outline.svg +1 -0
- package/dist/ionic/svg/file-tray-sharp.svg +1 -0
- package/dist/ionic/svg/file-tray-stacked-outline.svg +1 -0
- package/dist/ionic/svg/file-tray-stacked-sharp.svg +1 -0
- package/dist/ionic/svg/file-tray-stacked.svg +1 -0
- package/dist/ionic/svg/file-tray.svg +1 -0
- package/dist/ionic/svg/film-outline.svg +1 -0
- package/dist/ionic/svg/film-sharp.svg +1 -0
- package/dist/ionic/svg/film.svg +1 -0
- package/dist/ionic/svg/filter-circle-outline.svg +1 -0
- package/dist/ionic/svg/filter-circle-sharp.svg +1 -0
- package/dist/ionic/svg/filter-circle.svg +1 -0
- package/dist/ionic/svg/filter-outline.svg +1 -0
- package/dist/ionic/svg/filter-sharp.svg +1 -0
- package/dist/ionic/svg/filter.svg +1 -0
- package/dist/ionic/svg/finger-print-outline.svg +1 -0
- package/dist/ionic/svg/finger-print-sharp.svg +1 -0
- package/dist/ionic/svg/finger-print.svg +1 -0
- package/dist/ionic/svg/fish-outline.svg +1 -0
- package/dist/ionic/svg/fish-sharp.svg +1 -0
- package/dist/ionic/svg/fish.svg +1 -0
- package/dist/ionic/svg/fitness-outline.svg +1 -0
- package/dist/ionic/svg/fitness-sharp.svg +1 -0
- package/dist/ionic/svg/fitness.svg +1 -0
- package/dist/ionic/svg/flag-outline.svg +1 -0
- package/dist/ionic/svg/flag-sharp.svg +1 -0
- package/dist/ionic/svg/flag.svg +1 -0
- package/dist/ionic/svg/flame-outline.svg +1 -0
- package/dist/ionic/svg/flame-sharp.svg +1 -0
- package/dist/ionic/svg/flame.svg +1 -0
- package/dist/ionic/svg/flash-off-outline.svg +1 -0
- package/dist/ionic/svg/flash-off-sharp.svg +1 -0
- package/dist/ionic/svg/flash-off.svg +1 -0
- package/dist/ionic/svg/flash-outline.svg +1 -0
- package/dist/ionic/svg/flash-sharp.svg +1 -0
- package/dist/ionic/svg/flash.svg +1 -0
- package/dist/ionic/svg/flashlight-outline.svg +1 -0
- package/dist/ionic/svg/flashlight-sharp.svg +1 -0
- package/dist/ionic/svg/flashlight.svg +1 -0
- package/dist/ionic/svg/flask-outline.svg +1 -0
- package/dist/ionic/svg/flask-sharp.svg +1 -0
- package/dist/ionic/svg/flask.svg +1 -0
- package/dist/ionic/svg/flower-outline.svg +1 -0
- package/dist/ionic/svg/flower-sharp.svg +1 -0
- package/dist/ionic/svg/flower.svg +1 -0
- package/dist/ionic/svg/folder-open-outline.svg +1 -0
- package/dist/ionic/svg/folder-open-sharp.svg +1 -0
- package/dist/ionic/svg/folder-open.svg +1 -0
- package/dist/ionic/svg/folder-outline.svg +1 -0
- package/dist/ionic/svg/folder-sharp.svg +1 -0
- package/dist/ionic/svg/folder.svg +1 -0
- package/dist/ionic/svg/football-outline.svg +1 -0
- package/dist/ionic/svg/football-sharp.svg +1 -0
- package/dist/ionic/svg/football.svg +1 -0
- package/dist/ionic/svg/footsteps-outline.svg +1 -0
- package/dist/ionic/svg/footsteps-sharp.svg +1 -0
- package/dist/ionic/svg/footsteps.svg +1 -0
- package/dist/ionic/svg/funnel-outline.svg +1 -0
- package/dist/ionic/svg/funnel-sharp.svg +1 -0
- package/dist/ionic/svg/funnel.svg +1 -0
- package/dist/ionic/svg/game-controller-outline.svg +1 -0
- package/dist/ionic/svg/game-controller-sharp.svg +1 -0
- package/dist/ionic/svg/game-controller.svg +1 -0
- package/dist/ionic/svg/gift-outline.svg +1 -0
- package/dist/ionic/svg/gift-sharp.svg +1 -0
- package/dist/ionic/svg/gift.svg +1 -0
- package/dist/ionic/svg/git-branch-outline.svg +1 -0
- package/dist/ionic/svg/git-branch-sharp.svg +1 -0
- package/dist/ionic/svg/git-branch.svg +1 -0
- package/dist/ionic/svg/git-commit-outline.svg +1 -0
- package/dist/ionic/svg/git-commit-sharp.svg +1 -0
- package/dist/ionic/svg/git-commit.svg +1 -0
- package/dist/ionic/svg/git-compare-outline.svg +1 -0
- package/dist/ionic/svg/git-compare-sharp.svg +1 -0
- package/dist/ionic/svg/git-compare.svg +1 -0
- package/dist/ionic/svg/git-merge-outline.svg +1 -0
- package/dist/ionic/svg/git-merge-sharp.svg +1 -0
- package/dist/ionic/svg/git-merge.svg +1 -0
- package/dist/ionic/svg/git-network-outline.svg +1 -0
- package/dist/ionic/svg/git-network-sharp.svg +1 -0
- package/dist/ionic/svg/git-network.svg +1 -0
- package/dist/ionic/svg/git-pull-request-outline.svg +1 -0
- package/dist/ionic/svg/git-pull-request-sharp.svg +1 -0
- package/dist/ionic/svg/git-pull-request.svg +1 -0
- package/dist/ionic/svg/glasses-outline.svg +1 -0
- package/dist/ionic/svg/glasses-sharp.svg +1 -0
- package/dist/ionic/svg/glasses.svg +1 -0
- package/dist/ionic/svg/globe-outline.svg +1 -0
- package/dist/ionic/svg/globe-sharp.svg +1 -0
- package/dist/ionic/svg/globe.svg +1 -0
- package/dist/ionic/svg/golf-outline.svg +1 -0
- package/dist/ionic/svg/golf-sharp.svg +1 -0
- package/dist/ionic/svg/golf.svg +1 -0
- package/dist/ionic/svg/grid-outline.svg +1 -0
- package/dist/ionic/svg/grid-sharp.svg +1 -0
- package/dist/ionic/svg/grid.svg +1 -0
- package/dist/ionic/svg/hammer-outline.svg +1 -0
- package/dist/ionic/svg/hammer-sharp.svg +1 -0
- package/dist/ionic/svg/hammer.svg +1 -0
- package/dist/ionic/svg/hand-left-outline.svg +1 -0
- package/dist/ionic/svg/hand-left-sharp.svg +1 -0
- package/dist/ionic/svg/hand-left.svg +1 -0
- package/dist/ionic/svg/hand-right-outline.svg +1 -0
- package/dist/ionic/svg/hand-right-sharp.svg +1 -0
- package/dist/ionic/svg/hand-right.svg +1 -0
- package/dist/ionic/svg/happy-outline.svg +1 -0
- package/dist/ionic/svg/happy-sharp.svg +1 -0
- package/dist/ionic/svg/happy.svg +1 -0
- package/dist/ionic/svg/hardware-chip-outline.svg +1 -0
- package/dist/ionic/svg/hardware-chip-sharp.svg +1 -0
- package/dist/ionic/svg/hardware-chip.svg +1 -0
- package/dist/ionic/svg/headset-outline.svg +1 -0
- package/dist/ionic/svg/headset-sharp.svg +1 -0
- package/dist/ionic/svg/headset.svg +1 -0
- package/dist/ionic/svg/heart-circle-outline.svg +1 -0
- package/dist/ionic/svg/heart-circle-sharp.svg +1 -0
- package/dist/ionic/svg/heart-circle.svg +1 -0
- package/dist/ionic/svg/heart-dislike-circle-outline.svg +1 -0
- package/dist/ionic/svg/heart-dislike-circle-sharp.svg +1 -0
- package/dist/ionic/svg/heart-dislike-circle.svg +1 -0
- package/dist/ionic/svg/heart-dislike-outline.svg +1 -0
- package/dist/ionic/svg/heart-dislike-sharp.svg +1 -0
- package/dist/ionic/svg/heart-dislike.svg +1 -0
- package/dist/ionic/svg/heart-half-outline.svg +1 -0
- package/dist/ionic/svg/heart-half-sharp.svg +1 -0
- package/dist/ionic/svg/heart-half.svg +1 -0
- package/dist/ionic/svg/heart-outline.svg +1 -0
- package/dist/ionic/svg/heart-sharp.svg +1 -0
- package/dist/ionic/svg/heart.svg +1 -0
- package/dist/ionic/svg/help-buoy-outline.svg +1 -0
- package/dist/ionic/svg/help-buoy-sharp.svg +1 -0
- package/dist/ionic/svg/help-buoy.svg +1 -0
- package/dist/ionic/svg/help-circle-outline.svg +1 -0
- package/dist/ionic/svg/help-circle-sharp.svg +1 -0
- package/dist/ionic/svg/help-circle.svg +1 -0
- package/dist/ionic/svg/help-outline.svg +1 -0
- package/dist/ionic/svg/help-sharp.svg +1 -0
- package/dist/ionic/svg/help.svg +1 -0
- package/dist/ionic/svg/home-outline.svg +1 -0
- package/dist/ionic/svg/home-sharp.svg +1 -0
- package/dist/ionic/svg/home.svg +1 -0
- package/dist/ionic/svg/hourglass-outline.svg +1 -0
- package/dist/ionic/svg/hourglass-sharp.svg +1 -0
- package/dist/ionic/svg/hourglass.svg +1 -0
- package/dist/ionic/svg/ice-cream-outline.svg +1 -0
- package/dist/ionic/svg/ice-cream-sharp.svg +1 -0
- package/dist/ionic/svg/ice-cream.svg +1 -0
- package/dist/ionic/svg/id-card-outline.svg +1 -0
- package/dist/ionic/svg/id-card-sharp.svg +1 -0
- package/dist/ionic/svg/id-card.svg +1 -0
- package/dist/ionic/svg/image-outline.svg +1 -0
- package/dist/ionic/svg/image-sharp.svg +1 -0
- package/dist/ionic/svg/image.svg +1 -0
- package/dist/ionic/svg/images-outline.svg +1 -0
- package/dist/ionic/svg/images-sharp.svg +1 -0
- package/dist/ionic/svg/images.svg +1 -0
- package/dist/ionic/svg/infinite-outline.svg +1 -0
- package/dist/ionic/svg/infinite-sharp.svg +1 -0
- package/dist/ionic/svg/infinite.svg +1 -0
- package/dist/ionic/svg/information-circle-outline.svg +1 -0
- package/dist/ionic/svg/information-circle-sharp.svg +1 -0
- package/dist/ionic/svg/information-circle.svg +1 -0
- package/dist/ionic/svg/information-outline.svg +1 -0
- package/dist/ionic/svg/information-sharp.svg +1 -0
- package/dist/ionic/svg/information.svg +1 -0
- package/dist/ionic/svg/invert-mode-outline.svg +1 -0
- package/dist/ionic/svg/invert-mode-sharp.svg +1 -0
- package/dist/ionic/svg/invert-mode.svg +1 -0
- package/dist/ionic/svg/journal-outline.svg +1 -0
- package/dist/ionic/svg/journal-sharp.svg +1 -0
- package/dist/ionic/svg/journal.svg +1 -0
- package/dist/ionic/svg/key-outline.svg +1 -0
- package/dist/ionic/svg/key-sharp.svg +1 -0
- package/dist/ionic/svg/key.svg +1 -0
- package/dist/ionic/svg/keypad-outline.svg +1 -0
- package/dist/ionic/svg/keypad-sharp.svg +1 -0
- package/dist/ionic/svg/keypad.svg +1 -0
- package/dist/ionic/svg/language-outline.svg +1 -0
- package/dist/ionic/svg/language-sharp.svg +1 -0
- package/dist/ionic/svg/language.svg +1 -0
- package/dist/ionic/svg/laptop-outline.svg +1 -0
- package/dist/ionic/svg/laptop-sharp.svg +1 -0
- package/dist/ionic/svg/laptop.svg +1 -0
- package/dist/ionic/svg/layers-outline.svg +1 -0
- package/dist/ionic/svg/layers-sharp.svg +1 -0
- package/dist/ionic/svg/layers.svg +1 -0
- package/dist/ionic/svg/leaf-outline.svg +1 -0
- package/dist/ionic/svg/leaf-sharp.svg +1 -0
- package/dist/ionic/svg/leaf.svg +1 -0
- package/dist/ionic/svg/library-outline.svg +1 -0
- package/dist/ionic/svg/library-sharp.svg +1 -0
- package/dist/ionic/svg/library.svg +1 -0
- package/dist/ionic/svg/link-outline.svg +1 -0
- package/dist/ionic/svg/link-sharp.svg +1 -0
- package/dist/ionic/svg/link.svg +1 -0
- package/dist/ionic/svg/list-circle-outline.svg +1 -0
- package/dist/ionic/svg/list-circle-sharp.svg +1 -0
- package/dist/ionic/svg/list-circle.svg +1 -0
- package/dist/ionic/svg/list-outline.svg +1 -0
- package/dist/ionic/svg/list-sharp.svg +1 -0
- package/dist/ionic/svg/list.svg +1 -0
- package/dist/ionic/svg/locate-outline.svg +1 -0
- package/dist/ionic/svg/locate-sharp.svg +1 -0
- package/dist/ionic/svg/locate.svg +1 -0
- package/dist/ionic/svg/location-outline.svg +1 -0
- package/dist/ionic/svg/location-sharp.svg +1 -0
- package/dist/ionic/svg/location.svg +1 -0
- package/dist/ionic/svg/lock-closed-outline.svg +1 -0
- package/dist/ionic/svg/lock-closed-sharp.svg +1 -0
- package/dist/ionic/svg/lock-closed.svg +1 -0
- package/dist/ionic/svg/lock-open-outline.svg +1 -0
- package/dist/ionic/svg/lock-open-sharp.svg +1 -0
- package/dist/ionic/svg/lock-open.svg +1 -0
- package/dist/ionic/svg/log-in-outline.svg +1 -0
- package/dist/ionic/svg/log-in-sharp.svg +1 -0
- package/dist/ionic/svg/log-in.svg +1 -0
- package/dist/ionic/svg/log-out-outline.svg +1 -0
- package/dist/ionic/svg/log-out-sharp.svg +1 -0
- package/dist/ionic/svg/log-out.svg +1 -0
- package/dist/ionic/svg/logo-alipay.svg +1 -0
- package/dist/ionic/svg/logo-amazon.svg +1 -0
- package/dist/ionic/svg/logo-amplify.svg +1 -0
- package/dist/ionic/svg/logo-android.svg +1 -0
- package/dist/ionic/svg/logo-angular.svg +1 -0
- package/dist/ionic/svg/logo-appflow.svg +1 -0
- package/dist/ionic/svg/logo-apple-appstore.svg +1 -0
- package/dist/ionic/svg/logo-apple-ar.svg +1 -0
- package/dist/ionic/svg/logo-apple.svg +1 -0
- package/dist/ionic/svg/logo-behance.svg +1 -0
- package/dist/ionic/svg/logo-bitbucket.svg +1 -0
- package/dist/ionic/svg/logo-bitcoin.svg +1 -0
- package/dist/ionic/svg/logo-buffer.svg +1 -0
- package/dist/ionic/svg/logo-capacitor.svg +1 -0
- package/dist/ionic/svg/logo-chrome.svg +1 -0
- package/dist/ionic/svg/logo-closed-captioning.svg +1 -0
- package/dist/ionic/svg/logo-codepen.svg +1 -0
- package/dist/ionic/svg/logo-css3.svg +1 -0
- package/dist/ionic/svg/logo-designernews.svg +1 -0
- package/dist/ionic/svg/logo-deviantart.svg +1 -0
- package/dist/ionic/svg/logo-discord.svg +1 -0
- package/dist/ionic/svg/logo-docker.svg +1 -0
- package/dist/ionic/svg/logo-dribbble.svg +1 -0
- package/dist/ionic/svg/logo-dropbox.svg +1 -0
- package/dist/ionic/svg/logo-edge.svg +1 -0
- package/dist/ionic/svg/logo-electron.svg +1 -0
- package/dist/ionic/svg/logo-euro.svg +1 -0
- package/dist/ionic/svg/logo-facebook.svg +1 -0
- package/dist/ionic/svg/logo-figma.svg +1 -0
- package/dist/ionic/svg/logo-firebase.svg +1 -0
- package/dist/ionic/svg/logo-firefox.svg +1 -0
- package/dist/ionic/svg/logo-flickr.svg +1 -0
- package/dist/ionic/svg/logo-foursquare.svg +1 -0
- package/dist/ionic/svg/logo-github.svg +1 -0
- package/dist/ionic/svg/logo-gitlab.svg +1 -0
- package/dist/ionic/svg/logo-google-playstore.svg +1 -0
- package/dist/ionic/svg/logo-google.svg +1 -0
- package/dist/ionic/svg/logo-hackernews.svg +1 -0
- package/dist/ionic/svg/logo-html5.svg +1 -0
- package/dist/ionic/svg/logo-instagram.svg +1 -0
- package/dist/ionic/svg/logo-ionic.svg +1 -0
- package/dist/ionic/svg/logo-ionitron.svg +1 -0
- package/dist/ionic/svg/logo-javascript.svg +1 -0
- package/dist/ionic/svg/logo-laravel.svg +1 -0
- package/dist/ionic/svg/logo-linkedin.svg +1 -0
- package/dist/ionic/svg/logo-markdown.svg +1 -0
- package/dist/ionic/svg/logo-mastodon.svg +1 -0
- package/dist/ionic/svg/logo-medium.svg +1 -0
- package/dist/ionic/svg/logo-microsoft.svg +1 -0
- package/dist/ionic/svg/logo-no-smoking.svg +1 -0
- package/dist/ionic/svg/logo-nodejs.svg +1 -0
- package/dist/ionic/svg/logo-npm.svg +1 -0
- package/dist/ionic/svg/logo-octocat.svg +1 -0
- package/dist/ionic/svg/logo-paypal.svg +1 -0
- package/dist/ionic/svg/logo-pinterest.svg +1 -0
- package/dist/ionic/svg/logo-playstation.svg +1 -0
- package/dist/ionic/svg/logo-pwa.svg +1 -0
- package/dist/ionic/svg/logo-python.svg +1 -0
- package/dist/ionic/svg/logo-react.svg +1 -0
- package/dist/ionic/svg/logo-reddit.svg +1 -0
- package/dist/ionic/svg/logo-rss.svg +1 -0
- package/dist/ionic/svg/logo-sass.svg +1 -0
- package/dist/ionic/svg/logo-skype.svg +1 -0
- package/dist/ionic/svg/logo-slack.svg +1 -0
- package/dist/ionic/svg/logo-snapchat.svg +1 -0
- package/dist/ionic/svg/logo-soundcloud.svg +1 -0
- package/dist/ionic/svg/logo-stackoverflow.svg +1 -0
- package/dist/ionic/svg/logo-steam.svg +1 -0
- package/dist/ionic/svg/logo-stencil.svg +1 -0
- package/dist/ionic/svg/logo-tableau.svg +1 -0
- package/dist/ionic/svg/logo-threads.svg +1 -0
- package/dist/ionic/svg/logo-tiktok.svg +1 -0
- package/dist/ionic/svg/logo-trapeze.svg +1 -0
- package/dist/ionic/svg/logo-tumblr.svg +1 -0
- package/dist/ionic/svg/logo-tux.svg +1 -0
- package/dist/ionic/svg/logo-twitch.svg +1 -0
- package/dist/ionic/svg/logo-twitter.svg +1 -0
- package/dist/ionic/svg/logo-usd.svg +1 -0
- package/dist/ionic/svg/logo-venmo.svg +1 -0
- package/dist/ionic/svg/logo-vercel.svg +1 -0
- package/dist/ionic/svg/logo-vimeo.svg +1 -0
- package/dist/ionic/svg/logo-vk.svg +1 -0
- package/dist/ionic/svg/logo-vue.svg +1 -0
- package/dist/ionic/svg/logo-web-component.svg +1 -0
- package/dist/ionic/svg/logo-wechat.svg +1 -0
- package/dist/ionic/svg/logo-whatsapp.svg +1 -0
- package/dist/ionic/svg/logo-windows.svg +1 -0
- package/dist/ionic/svg/logo-wordpress.svg +1 -0
- package/dist/ionic/svg/logo-x.svg +1 -0
- package/dist/ionic/svg/logo-xbox.svg +1 -0
- package/dist/ionic/svg/logo-xing.svg +1 -0
- package/dist/ionic/svg/logo-yahoo.svg +1 -0
- package/dist/ionic/svg/logo-yen.svg +1 -0
- package/dist/ionic/svg/logo-youtube.svg +1 -0
- package/dist/ionic/svg/magnet-outline.svg +1 -0
- package/dist/ionic/svg/magnet-sharp.svg +1 -0
- package/dist/ionic/svg/magnet.svg +1 -0
- package/dist/ionic/svg/mail-open-outline.svg +1 -0
- package/dist/ionic/svg/mail-open-sharp.svg +1 -0
- package/dist/ionic/svg/mail-open.svg +1 -0
- package/dist/ionic/svg/mail-outline.svg +1 -0
- package/dist/ionic/svg/mail-sharp.svg +1 -0
- package/dist/ionic/svg/mail-unread-outline.svg +1 -0
- package/dist/ionic/svg/mail-unread-sharp.svg +1 -0
- package/dist/ionic/svg/mail-unread.svg +1 -0
- package/dist/ionic/svg/mail.svg +1 -0
- package/dist/ionic/svg/male-female-outline.svg +1 -0
- package/dist/ionic/svg/male-female-sharp.svg +1 -0
- package/dist/ionic/svg/male-female.svg +1 -0
- package/dist/ionic/svg/male-outline.svg +1 -0
- package/dist/ionic/svg/male-sharp.svg +1 -0
- package/dist/ionic/svg/male.svg +1 -0
- package/dist/ionic/svg/man-outline.svg +1 -0
- package/dist/ionic/svg/man-sharp.svg +1 -0
- package/dist/ionic/svg/man.svg +1 -0
- package/dist/ionic/svg/map-outline.svg +1 -0
- package/dist/ionic/svg/map-sharp.svg +1 -0
- package/dist/ionic/svg/map.svg +1 -0
- package/dist/ionic/svg/medal-outline.svg +1 -0
- package/dist/ionic/svg/medal-sharp.svg +1 -0
- package/dist/ionic/svg/medal.svg +1 -0
- package/dist/ionic/svg/medical-outline.svg +1 -0
- package/dist/ionic/svg/medical-sharp.svg +1 -0
- package/dist/ionic/svg/medical.svg +1 -0
- package/dist/ionic/svg/medkit-outline.svg +1 -0
- package/dist/ionic/svg/medkit-sharp.svg +1 -0
- package/dist/ionic/svg/medkit.svg +1 -0
- package/dist/ionic/svg/megaphone-outline.svg +1 -0
- package/dist/ionic/svg/megaphone-sharp.svg +1 -0
- package/dist/ionic/svg/megaphone.svg +1 -0
- package/dist/ionic/svg/menu-outline.svg +1 -0
- package/dist/ionic/svg/menu-sharp.svg +1 -0
- package/dist/ionic/svg/menu.svg +1 -0
- package/dist/ionic/svg/mic-circle-outline.svg +1 -0
- package/dist/ionic/svg/mic-circle-sharp.svg +1 -0
- package/dist/ionic/svg/mic-circle.svg +1 -0
- package/dist/ionic/svg/mic-off-circle-outline.svg +1 -0
- package/dist/ionic/svg/mic-off-circle-sharp.svg +1 -0
- package/dist/ionic/svg/mic-off-circle.svg +1 -0
- package/dist/ionic/svg/mic-off-outline.svg +1 -0
- package/dist/ionic/svg/mic-off-sharp.svg +1 -0
- package/dist/ionic/svg/mic-off.svg +1 -0
- package/dist/ionic/svg/mic-outline.svg +1 -0
- package/dist/ionic/svg/mic-sharp.svg +1 -0
- package/dist/ionic/svg/mic.svg +1 -0
- package/dist/ionic/svg/moon-outline.svg +1 -0
- package/dist/ionic/svg/moon-sharp.svg +1 -0
- package/dist/ionic/svg/moon.svg +1 -0
- package/dist/ionic/svg/move-outline.svg +1 -0
- package/dist/ionic/svg/move-sharp.svg +1 -0
- package/dist/ionic/svg/move.svg +1 -0
- package/dist/ionic/svg/musical-note-outline.svg +1 -0
- package/dist/ionic/svg/musical-note-sharp.svg +1 -0
- package/dist/ionic/svg/musical-note.svg +1 -0
- package/dist/ionic/svg/musical-notes-outline.svg +1 -0
- package/dist/ionic/svg/musical-notes-sharp.svg +1 -0
- package/dist/ionic/svg/musical-notes.svg +1 -0
- package/dist/ionic/svg/navigate-circle-outline.svg +1 -0
- package/dist/ionic/svg/navigate-circle-sharp.svg +1 -0
- package/dist/ionic/svg/navigate-circle.svg +1 -0
- package/dist/ionic/svg/navigate-outline.svg +1 -0
- package/dist/ionic/svg/navigate-sharp.svg +1 -0
- package/dist/ionic/svg/navigate.svg +1 -0
- package/dist/ionic/svg/newspaper-outline.svg +1 -0
- package/dist/ionic/svg/newspaper-sharp.svg +1 -0
- package/dist/ionic/svg/newspaper.svg +1 -0
- package/dist/ionic/svg/notifications-circle-outline.svg +1 -0
- package/dist/ionic/svg/notifications-circle-sharp.svg +1 -0
- package/dist/ionic/svg/notifications-circle.svg +1 -0
- package/dist/ionic/svg/notifications-off-circle-outline.svg +1 -0
- package/dist/ionic/svg/notifications-off-circle-sharp.svg +1 -0
- package/dist/ionic/svg/notifications-off-circle.svg +1 -0
- package/dist/ionic/svg/notifications-off-outline.svg +1 -0
- package/dist/ionic/svg/notifications-off-sharp.svg +1 -0
- package/dist/ionic/svg/notifications-off.svg +1 -0
- package/dist/ionic/svg/notifications-outline.svg +1 -0
- package/dist/ionic/svg/notifications-sharp.svg +1 -0
- package/dist/ionic/svg/notifications.svg +1 -0
- package/dist/ionic/svg/nuclear-outline.svg +1 -0
- package/dist/ionic/svg/nuclear-sharp.svg +1 -0
- package/dist/ionic/svg/nuclear.svg +1 -0
- package/dist/ionic/svg/nutrition-outline.svg +1 -0
- package/dist/ionic/svg/nutrition-sharp.svg +1 -0
- package/dist/ionic/svg/nutrition.svg +1 -0
- package/dist/ionic/svg/open-outline.svg +1 -0
- package/dist/ionic/svg/open-sharp.svg +1 -0
- package/dist/ionic/svg/open.svg +1 -0
- package/dist/ionic/svg/options-outline.svg +1 -0
- package/dist/ionic/svg/options-sharp.svg +1 -0
- package/dist/ionic/svg/options.svg +1 -0
- package/dist/ionic/svg/paper-plane-outline.svg +1 -0
- package/dist/ionic/svg/paper-plane-sharp.svg +1 -0
- package/dist/ionic/svg/paper-plane.svg +1 -0
- package/dist/ionic/svg/partly-sunny-outline.svg +1 -0
- package/dist/ionic/svg/partly-sunny-sharp.svg +1 -0
- package/dist/ionic/svg/partly-sunny.svg +1 -0
- package/dist/ionic/svg/pause-circle-outline.svg +1 -0
- package/dist/ionic/svg/pause-circle-sharp.svg +1 -0
- package/dist/ionic/svg/pause-circle.svg +1 -0
- package/dist/ionic/svg/pause-outline.svg +1 -0
- package/dist/ionic/svg/pause-sharp.svg +1 -0
- package/dist/ionic/svg/pause.svg +1 -0
- package/dist/ionic/svg/paw-outline.svg +1 -0
- package/dist/ionic/svg/paw-sharp.svg +1 -0
- package/dist/ionic/svg/paw.svg +1 -0
- package/dist/ionic/svg/pencil-outline.svg +1 -0
- package/dist/ionic/svg/pencil-sharp.svg +1 -0
- package/dist/ionic/svg/pencil.svg +1 -0
- package/dist/ionic/svg/people-circle-outline.svg +1 -0
- package/dist/ionic/svg/people-circle-sharp.svg +1 -0
- package/dist/ionic/svg/people-circle.svg +1 -0
- package/dist/ionic/svg/people-outline.svg +1 -0
- package/dist/ionic/svg/people-sharp.svg +1 -0
- package/dist/ionic/svg/people.svg +1 -0
- package/dist/ionic/svg/person-add-outline.svg +1 -0
- package/dist/ionic/svg/person-add-sharp.svg +1 -0
- package/dist/ionic/svg/person-add.svg +1 -0
- package/dist/ionic/svg/person-circle-outline.svg +1 -0
- package/dist/ionic/svg/person-circle-sharp.svg +1 -0
- package/dist/ionic/svg/person-circle.svg +1 -0
- package/dist/ionic/svg/person-outline.svg +1 -0
- package/dist/ionic/svg/person-remove-outline.svg +1 -0
- package/dist/ionic/svg/person-remove-sharp.svg +1 -0
- package/dist/ionic/svg/person-remove.svg +1 -0
- package/dist/ionic/svg/person-sharp.svg +1 -0
- package/dist/ionic/svg/person.svg +1 -0
- package/dist/ionic/svg/phone-landscape-outline.svg +1 -0
- package/dist/ionic/svg/phone-landscape-sharp.svg +1 -0
- package/dist/ionic/svg/phone-landscape.svg +1 -0
- package/dist/ionic/svg/phone-portrait-outline.svg +1 -0
- package/dist/ionic/svg/phone-portrait-sharp.svg +1 -0
- package/dist/ionic/svg/phone-portrait.svg +1 -0
- package/dist/ionic/svg/pie-chart-outline.svg +1 -0
- package/dist/ionic/svg/pie-chart-sharp.svg +1 -0
- package/dist/ionic/svg/pie-chart.svg +1 -0
- package/dist/ionic/svg/pin-outline.svg +1 -0
- package/dist/ionic/svg/pin-sharp.svg +1 -0
- package/dist/ionic/svg/pin.svg +1 -0
- package/dist/ionic/svg/pint-outline.svg +1 -0
- package/dist/ionic/svg/pint-sharp.svg +1 -0
- package/dist/ionic/svg/pint.svg +1 -0
- package/dist/ionic/svg/pizza-outline.svg +1 -0
- package/dist/ionic/svg/pizza-sharp.svg +1 -0
- package/dist/ionic/svg/pizza.svg +1 -0
- package/dist/ionic/svg/planet-outline.svg +1 -0
- package/dist/ionic/svg/planet-sharp.svg +1 -0
- package/dist/ionic/svg/planet.svg +1 -0
- package/dist/ionic/svg/play-back-circle-outline.svg +1 -0
- package/dist/ionic/svg/play-back-circle-sharp.svg +1 -0
- package/dist/ionic/svg/play-back-circle.svg +1 -0
- package/dist/ionic/svg/play-back-outline.svg +1 -0
- package/dist/ionic/svg/play-back-sharp.svg +1 -0
- package/dist/ionic/svg/play-back.svg +1 -0
- package/dist/ionic/svg/play-circle-outline.svg +1 -0
- package/dist/ionic/svg/play-circle-sharp.svg +1 -0
- package/dist/ionic/svg/play-circle.svg +1 -0
- package/dist/ionic/svg/play-forward-circle-outline.svg +1 -0
- package/dist/ionic/svg/play-forward-circle-sharp.svg +1 -0
- package/dist/ionic/svg/play-forward-circle.svg +1 -0
- package/dist/ionic/svg/play-forward-outline.svg +1 -0
- package/dist/ionic/svg/play-forward-sharp.svg +1 -0
- package/dist/ionic/svg/play-forward.svg +1 -0
- package/dist/ionic/svg/play-outline.svg +1 -0
- package/dist/ionic/svg/play-sharp.svg +1 -0
- package/dist/ionic/svg/play-skip-back-circle-outline.svg +1 -0
- package/dist/ionic/svg/play-skip-back-circle-sharp.svg +1 -0
- package/dist/ionic/svg/play-skip-back-circle.svg +1 -0
- package/dist/ionic/svg/play-skip-back-outline.svg +1 -0
- package/dist/ionic/svg/play-skip-back-sharp.svg +1 -0
- package/dist/ionic/svg/play-skip-back.svg +1 -0
- package/dist/ionic/svg/play-skip-forward-circle-outline.svg +1 -0
- package/dist/ionic/svg/play-skip-forward-circle-sharp.svg +1 -0
- package/dist/ionic/svg/play-skip-forward-circle.svg +1 -0
- package/dist/ionic/svg/play-skip-forward-outline.svg +1 -0
- package/dist/ionic/svg/play-skip-forward-sharp.svg +1 -0
- package/dist/ionic/svg/play-skip-forward.svg +1 -0
- package/dist/ionic/svg/play.svg +1 -0
- package/dist/ionic/svg/podium-outline.svg +1 -0
- package/dist/ionic/svg/podium-sharp.svg +1 -0
- package/dist/ionic/svg/podium.svg +1 -0
- package/dist/ionic/svg/power-outline.svg +1 -0
- package/dist/ionic/svg/power-sharp.svg +1 -0
- package/dist/ionic/svg/power.svg +1 -0
- package/dist/ionic/svg/pricetag-outline.svg +1 -0
- package/dist/ionic/svg/pricetag-sharp.svg +1 -0
- package/dist/ionic/svg/pricetag.svg +1 -0
- package/dist/ionic/svg/pricetags-outline.svg +1 -0
- package/dist/ionic/svg/pricetags-sharp.svg +1 -0
- package/dist/ionic/svg/pricetags.svg +1 -0
- package/dist/ionic/svg/print-outline.svg +1 -0
- package/dist/ionic/svg/print-sharp.svg +1 -0
- package/dist/ionic/svg/print.svg +1 -0
- package/dist/ionic/svg/prism-outline.svg +1 -0
- package/dist/ionic/svg/prism-sharp.svg +1 -0
- package/dist/ionic/svg/prism.svg +1 -0
- package/dist/ionic/svg/pulse-outline.svg +1 -0
- package/dist/ionic/svg/pulse-sharp.svg +1 -0
- package/dist/ionic/svg/pulse.svg +1 -0
- package/dist/ionic/svg/push-outline.svg +1 -0
- package/dist/ionic/svg/push-sharp.svg +1 -0
- package/dist/ionic/svg/push.svg +1 -0
- package/dist/ionic/svg/qr-code-outline.svg +1 -0
- package/dist/ionic/svg/qr-code-sharp.svg +1 -0
- package/dist/ionic/svg/qr-code.svg +1 -0
- package/dist/ionic/svg/radio-button-off-outline.svg +1 -0
- package/dist/ionic/svg/radio-button-off-sharp.svg +1 -0
- package/dist/ionic/svg/radio-button-off.svg +1 -0
- package/dist/ionic/svg/radio-button-on-outline.svg +1 -0
- package/dist/ionic/svg/radio-button-on-sharp.svg +1 -0
- package/dist/ionic/svg/radio-button-on.svg +1 -0
- package/dist/ionic/svg/radio-outline.svg +1 -0
- package/dist/ionic/svg/radio-sharp.svg +1 -0
- package/dist/ionic/svg/radio.svg +1 -0
- package/dist/ionic/svg/rainy-outline.svg +1 -0
- package/dist/ionic/svg/rainy-sharp.svg +1 -0
- package/dist/ionic/svg/rainy.svg +1 -0
- package/dist/ionic/svg/reader-outline.svg +1 -0
- package/dist/ionic/svg/reader-sharp.svg +1 -0
- package/dist/ionic/svg/reader.svg +1 -0
- package/dist/ionic/svg/receipt-outline.svg +1 -0
- package/dist/ionic/svg/receipt-sharp.svg +1 -0
- package/dist/ionic/svg/receipt.svg +1 -0
- package/dist/ionic/svg/recording-outline.svg +1 -0
- package/dist/ionic/svg/recording-sharp.svg +1 -0
- package/dist/ionic/svg/recording.svg +1 -0
- package/dist/ionic/svg/refresh-circle-outline.svg +1 -0
- package/dist/ionic/svg/refresh-circle-sharp.svg +1 -0
- package/dist/ionic/svg/refresh-circle.svg +1 -0
- package/dist/ionic/svg/refresh-outline.svg +1 -0
- package/dist/ionic/svg/refresh-sharp.svg +1 -0
- package/dist/ionic/svg/refresh.svg +1 -0
- package/dist/ionic/svg/reload-circle-outline.svg +1 -0
- package/dist/ionic/svg/reload-circle-sharp.svg +1 -0
- package/dist/ionic/svg/reload-circle.svg +1 -0
- package/dist/ionic/svg/reload-outline.svg +1 -0
- package/dist/ionic/svg/reload-sharp.svg +1 -0
- package/dist/ionic/svg/reload.svg +1 -0
- package/dist/ionic/svg/remove-circle-outline.svg +1 -0
- package/dist/ionic/svg/remove-circle-sharp.svg +1 -0
- package/dist/ionic/svg/remove-circle.svg +1 -0
- package/dist/ionic/svg/remove-outline.svg +1 -0
- package/dist/ionic/svg/remove-sharp.svg +1 -0
- package/dist/ionic/svg/remove.svg +1 -0
- package/dist/ionic/svg/reorder-four-outline.svg +1 -0
- package/dist/ionic/svg/reorder-four-sharp.svg +1 -0
- package/dist/ionic/svg/reorder-four.svg +1 -0
- package/dist/ionic/svg/reorder-three-outline.svg +1 -0
- package/dist/ionic/svg/reorder-three-sharp.svg +1 -0
- package/dist/ionic/svg/reorder-three.svg +1 -0
- package/dist/ionic/svg/reorder-two-outline.svg +1 -0
- package/dist/ionic/svg/reorder-two-sharp.svg +1 -0
- package/dist/ionic/svg/reorder-two.svg +1 -0
- package/dist/ionic/svg/repeat-outline.svg +1 -0
- package/dist/ionic/svg/repeat-sharp.svg +1 -0
- package/dist/ionic/svg/repeat.svg +1 -0
- package/dist/ionic/svg/resize-outline.svg +1 -0
- package/dist/ionic/svg/resize-sharp.svg +1 -0
- package/dist/ionic/svg/resize.svg +1 -0
- package/dist/ionic/svg/restaurant-outline.svg +1 -0
- package/dist/ionic/svg/restaurant-sharp.svg +1 -0
- package/dist/ionic/svg/restaurant.svg +1 -0
- package/dist/ionic/svg/return-down-back-outline.svg +1 -0
- package/dist/ionic/svg/return-down-back-sharp.svg +1 -0
- package/dist/ionic/svg/return-down-back.svg +1 -0
- package/dist/ionic/svg/return-down-forward-outline.svg +1 -0
- package/dist/ionic/svg/return-down-forward-sharp.svg +1 -0
- package/dist/ionic/svg/return-down-forward.svg +1 -0
- package/dist/ionic/svg/return-up-back-outline.svg +1 -0
- package/dist/ionic/svg/return-up-back-sharp.svg +1 -0
- package/dist/ionic/svg/return-up-back.svg +1 -0
- package/dist/ionic/svg/return-up-forward-outline.svg +1 -0
- package/dist/ionic/svg/return-up-forward-sharp.svg +1 -0
- package/dist/ionic/svg/return-up-forward.svg +1 -0
- package/dist/ionic/svg/ribbon-outline.svg +1 -0
- package/dist/ionic/svg/ribbon-sharp.svg +1 -0
- package/dist/ionic/svg/ribbon.svg +1 -0
- package/dist/ionic/svg/rocket-outline.svg +1 -0
- package/dist/ionic/svg/rocket-sharp.svg +1 -0
- package/dist/ionic/svg/rocket.svg +1 -0
- package/dist/ionic/svg/rose-outline.svg +1 -0
- package/dist/ionic/svg/rose-sharp.svg +1 -0
- package/dist/ionic/svg/rose.svg +1 -0
- package/dist/ionic/svg/sad-outline.svg +1 -0
- package/dist/ionic/svg/sad-sharp.svg +1 -0
- package/dist/ionic/svg/sad.svg +1 -0
- package/dist/ionic/svg/save-outline.svg +1 -0
- package/dist/ionic/svg/save-sharp.svg +1 -0
- package/dist/ionic/svg/save.svg +1 -0
- package/dist/ionic/svg/scale-outline.svg +1 -0
- package/dist/ionic/svg/scale-sharp.svg +1 -0
- package/dist/ionic/svg/scale.svg +1 -0
- package/dist/ionic/svg/scan-circle-outline.svg +1 -0
- package/dist/ionic/svg/scan-circle-sharp.svg +1 -0
- package/dist/ionic/svg/scan-circle.svg +1 -0
- package/dist/ionic/svg/scan-outline.svg +1 -0
- package/dist/ionic/svg/scan-sharp.svg +1 -0
- package/dist/ionic/svg/scan.svg +1 -0
- package/dist/ionic/svg/school-outline.svg +1 -0
- package/dist/ionic/svg/school-sharp.svg +1 -0
- package/dist/ionic/svg/school.svg +1 -0
- package/dist/ionic/svg/search-circle-outline.svg +1 -0
- package/dist/ionic/svg/search-circle-sharp.svg +1 -0
- package/dist/ionic/svg/search-circle.svg +1 -0
- package/dist/ionic/svg/search-outline.svg +1 -0
- package/dist/ionic/svg/search-sharp.svg +1 -0
- package/dist/ionic/svg/search.svg +1 -0
- package/dist/ionic/svg/send-outline.svg +1 -0
- package/dist/ionic/svg/send-sharp.svg +1 -0
- package/dist/ionic/svg/send.svg +1 -0
- package/dist/ionic/svg/server-outline.svg +1 -0
- package/dist/ionic/svg/server-sharp.svg +1 -0
- package/dist/ionic/svg/server.svg +1 -0
- package/dist/ionic/svg/settings-outline.svg +1 -0
- package/dist/ionic/svg/settings-sharp.svg +1 -0
- package/dist/ionic/svg/settings.svg +1 -0
- package/dist/ionic/svg/shapes-outline.svg +1 -0
- package/dist/ionic/svg/shapes-sharp.svg +1 -0
- package/dist/ionic/svg/shapes.svg +1 -0
- package/dist/ionic/svg/share-outline.svg +1 -0
- package/dist/ionic/svg/share-sharp.svg +1 -0
- package/dist/ionic/svg/share-social-outline.svg +1 -0
- package/dist/ionic/svg/share-social-sharp.svg +1 -0
- package/dist/ionic/svg/share-social.svg +1 -0
- package/dist/ionic/svg/share.svg +1 -0
- package/dist/ionic/svg/shield-checkmark-outline.svg +1 -0
- package/dist/ionic/svg/shield-checkmark-sharp.svg +1 -0
- package/dist/ionic/svg/shield-checkmark.svg +1 -0
- package/dist/ionic/svg/shield-half-outline.svg +1 -0
- package/dist/ionic/svg/shield-half-sharp.svg +1 -0
- package/dist/ionic/svg/shield-half.svg +1 -0
- package/dist/ionic/svg/shield-outline.svg +1 -0
- package/dist/ionic/svg/shield-sharp.svg +1 -0
- package/dist/ionic/svg/shield.svg +1 -0
- package/dist/ionic/svg/shirt-outline.svg +1 -0
- package/dist/ionic/svg/shirt-sharp.svg +1 -0
- package/dist/ionic/svg/shirt.svg +1 -0
- package/dist/ionic/svg/shuffle-outline.svg +1 -0
- package/dist/ionic/svg/shuffle-sharp.svg +1 -0
- package/dist/ionic/svg/shuffle.svg +1 -0
- package/dist/ionic/svg/skull-outline.svg +1 -0
- package/dist/ionic/svg/skull-sharp.svg +1 -0
- package/dist/ionic/svg/skull.svg +1 -0
- package/dist/ionic/svg/snow-outline.svg +1 -0
- package/dist/ionic/svg/snow-sharp.svg +1 -0
- package/dist/ionic/svg/snow.svg +1 -0
- package/dist/ionic/svg/sparkles-outline.svg +1 -0
- package/dist/ionic/svg/sparkles-sharp.svg +1 -0
- package/dist/ionic/svg/sparkles.svg +1 -0
- package/dist/ionic/svg/speedometer-outline.svg +1 -0
- package/dist/ionic/svg/speedometer-sharp.svg +1 -0
- package/dist/ionic/svg/speedometer.svg +1 -0
- package/dist/ionic/svg/square-outline.svg +1 -0
- package/dist/ionic/svg/square-sharp.svg +1 -0
- package/dist/ionic/svg/square.svg +1 -0
- package/dist/ionic/svg/star-half-outline.svg +1 -0
- package/dist/ionic/svg/star-half-sharp.svg +1 -0
- package/dist/ionic/svg/star-half.svg +1 -0
- package/dist/ionic/svg/star-outline.svg +1 -0
- package/dist/ionic/svg/star-sharp.svg +1 -0
- package/dist/ionic/svg/star.svg +1 -0
- package/dist/ionic/svg/stats-chart-outline.svg +1 -0
- package/dist/ionic/svg/stats-chart-sharp.svg +1 -0
- package/dist/ionic/svg/stats-chart.svg +1 -0
- package/dist/ionic/svg/stop-circle-outline.svg +1 -0
- package/dist/ionic/svg/stop-circle-sharp.svg +1 -0
- package/dist/ionic/svg/stop-circle.svg +1 -0
- package/dist/ionic/svg/stop-outline.svg +1 -0
- package/dist/ionic/svg/stop-sharp.svg +1 -0
- package/dist/ionic/svg/stop.svg +1 -0
- package/dist/ionic/svg/stopwatch-outline.svg +1 -0
- package/dist/ionic/svg/stopwatch-sharp.svg +1 -0
- package/dist/ionic/svg/stopwatch.svg +1 -0
- package/dist/ionic/svg/storefront-outline.svg +1 -0
- package/dist/ionic/svg/storefront-sharp.svg +1 -0
- package/dist/ionic/svg/storefront.svg +1 -0
- package/dist/ionic/svg/subway-outline.svg +1 -0
- package/dist/ionic/svg/subway-sharp.svg +1 -0
- package/dist/ionic/svg/subway.svg +1 -0
- package/dist/ionic/svg/sunny-outline.svg +1 -0
- package/dist/ionic/svg/sunny-sharp.svg +1 -0
- package/dist/ionic/svg/sunny.svg +1 -0
- package/dist/ionic/svg/swap-horizontal-outline.svg +1 -0
- package/dist/ionic/svg/swap-horizontal-sharp.svg +1 -0
- package/dist/ionic/svg/swap-horizontal.svg +1 -0
- package/dist/ionic/svg/swap-vertical-outline.svg +1 -0
- package/dist/ionic/svg/swap-vertical-sharp.svg +1 -0
- package/dist/ionic/svg/swap-vertical.svg +1 -0
- package/dist/ionic/svg/sync-circle-outline.svg +1 -0
- package/dist/ionic/svg/sync-circle-sharp.svg +1 -0
- package/dist/ionic/svg/sync-circle.svg +1 -0
- package/dist/ionic/svg/sync-outline.svg +1 -0
- package/dist/ionic/svg/sync-sharp.svg +1 -0
- package/dist/ionic/svg/sync.svg +1 -0
- package/dist/ionic/svg/tablet-landscape-outline.svg +1 -0
- package/dist/ionic/svg/tablet-landscape-sharp.svg +1 -0
- package/dist/ionic/svg/tablet-landscape.svg +1 -0
- package/dist/ionic/svg/tablet-portrait-outline.svg +1 -0
- package/dist/ionic/svg/tablet-portrait-sharp.svg +1 -0
- package/dist/ionic/svg/tablet-portrait.svg +1 -0
- package/dist/ionic/svg/telescope-outline.svg +1 -0
- package/dist/ionic/svg/telescope-sharp.svg +1 -0
- package/dist/ionic/svg/telescope.svg +1 -0
- package/dist/ionic/svg/tennisball-outline.svg +1 -0
- package/dist/ionic/svg/tennisball-sharp.svg +1 -0
- package/dist/ionic/svg/tennisball.svg +1 -0
- package/dist/ionic/svg/terminal-outline.svg +1 -0
- package/dist/ionic/svg/terminal-sharp.svg +1 -0
- package/dist/ionic/svg/terminal.svg +1 -0
- package/dist/ionic/svg/text-outline.svg +1 -0
- package/dist/ionic/svg/text-sharp.svg +1 -0
- package/dist/ionic/svg/text.svg +1 -0
- package/dist/ionic/svg/thermometer-outline.svg +1 -0
- package/dist/ionic/svg/thermometer-sharp.svg +1 -0
- package/dist/ionic/svg/thermometer.svg +1 -0
- package/dist/ionic/svg/thumbs-down-outline.svg +1 -0
- package/dist/ionic/svg/thumbs-down-sharp.svg +1 -0
- package/dist/ionic/svg/thumbs-down.svg +1 -0
- package/dist/ionic/svg/thumbs-up-outline.svg +1 -0
- package/dist/ionic/svg/thumbs-up-sharp.svg +1 -0
- package/dist/ionic/svg/thumbs-up.svg +1 -0
- package/dist/ionic/svg/thunderstorm-outline.svg +1 -0
- package/dist/ionic/svg/thunderstorm-sharp.svg +1 -0
- package/dist/ionic/svg/thunderstorm.svg +1 -0
- package/dist/ionic/svg/ticket-outline.svg +1 -0
- package/dist/ionic/svg/ticket-sharp.svg +1 -0
- package/dist/ionic/svg/ticket.svg +1 -0
- package/dist/ionic/svg/time-outline.svg +1 -0
- package/dist/ionic/svg/time-sharp.svg +1 -0
- package/dist/ionic/svg/time.svg +1 -0
- package/dist/ionic/svg/timer-outline.svg +1 -0
- package/dist/ionic/svg/timer-sharp.svg +1 -0
- package/dist/ionic/svg/timer.svg +1 -0
- package/dist/ionic/svg/today-outline.svg +1 -0
- package/dist/ionic/svg/today-sharp.svg +1 -0
- package/dist/ionic/svg/today.svg +1 -0
- package/dist/ionic/svg/toggle-outline.svg +1 -0
- package/dist/ionic/svg/toggle-sharp.svg +1 -0
- package/dist/ionic/svg/toggle.svg +1 -0
- package/dist/ionic/svg/trail-sign-outline.svg +1 -0
- package/dist/ionic/svg/trail-sign-sharp.svg +1 -0
- package/dist/ionic/svg/trail-sign.svg +1 -0
- package/dist/ionic/svg/train-outline.svg +1 -0
- package/dist/ionic/svg/train-sharp.svg +1 -0
- package/dist/ionic/svg/train.svg +1 -0
- package/dist/ionic/svg/transgender-outline.svg +1 -0
- package/dist/ionic/svg/transgender-sharp.svg +1 -0
- package/dist/ionic/svg/transgender.svg +1 -0
- package/dist/ionic/svg/trash-bin-outline.svg +1 -0
- package/dist/ionic/svg/trash-bin-sharp.svg +1 -0
- package/dist/ionic/svg/trash-bin.svg +1 -0
- package/dist/ionic/svg/trash-outline.svg +1 -0
- package/dist/ionic/svg/trash-sharp.svg +1 -0
- package/dist/ionic/svg/trash.svg +1 -0
- package/dist/ionic/svg/trending-down-outline.svg +1 -0
- package/dist/ionic/svg/trending-down-sharp.svg +1 -0
- package/dist/ionic/svg/trending-down.svg +1 -0
- package/dist/ionic/svg/trending-up-outline.svg +1 -0
- package/dist/ionic/svg/trending-up-sharp.svg +1 -0
- package/dist/ionic/svg/trending-up.svg +1 -0
- package/dist/ionic/svg/triangle-outline.svg +1 -0
- package/dist/ionic/svg/triangle-sharp.svg +1 -0
- package/dist/ionic/svg/triangle.svg +1 -0
- package/dist/ionic/svg/trophy-outline.svg +1 -0
- package/dist/ionic/svg/trophy-sharp.svg +1 -0
- package/dist/ionic/svg/trophy.svg +1 -0
- package/dist/ionic/svg/tv-outline.svg +1 -0
- package/dist/ionic/svg/tv-sharp.svg +1 -0
- package/dist/ionic/svg/tv.svg +1 -0
- package/dist/ionic/svg/umbrella-outline.svg +1 -0
- package/dist/ionic/svg/umbrella-sharp.svg +1 -0
- package/dist/ionic/svg/umbrella.svg +1 -0
- package/dist/ionic/svg/unlink-outline.svg +1 -0
- package/dist/ionic/svg/unlink-sharp.svg +1 -0
- package/dist/ionic/svg/unlink.svg +1 -0
- package/dist/ionic/svg/videocam-off-outline.svg +1 -0
- package/dist/ionic/svg/videocam-off-sharp.svg +1 -0
- package/dist/ionic/svg/videocam-off.svg +1 -0
- package/dist/ionic/svg/videocam-outline.svg +1 -0
- package/dist/ionic/svg/videocam-sharp.svg +1 -0
- package/dist/ionic/svg/videocam.svg +1 -0
- package/dist/ionic/svg/volume-high-outline.svg +1 -0
- package/dist/ionic/svg/volume-high-sharp.svg +1 -0
- package/dist/ionic/svg/volume-high.svg +1 -0
- package/dist/ionic/svg/volume-low-outline.svg +1 -0
- package/dist/ionic/svg/volume-low-sharp.svg +1 -0
- package/dist/ionic/svg/volume-low.svg +1 -0
- package/dist/ionic/svg/volume-medium-outline.svg +1 -0
- package/dist/ionic/svg/volume-medium-sharp.svg +1 -0
- package/dist/ionic/svg/volume-medium.svg +1 -0
- package/dist/ionic/svg/volume-mute-outline.svg +1 -0
- package/dist/ionic/svg/volume-mute-sharp.svg +1 -0
- package/dist/ionic/svg/volume-mute.svg +1 -0
- package/dist/ionic/svg/volume-off-outline.svg +1 -0
- package/dist/ionic/svg/volume-off-sharp.svg +1 -0
- package/dist/ionic/svg/volume-off.svg +1 -0
- package/dist/ionic/svg/walk-outline.svg +1 -0
- package/dist/ionic/svg/walk-sharp.svg +1 -0
- package/dist/ionic/svg/walk.svg +1 -0
- package/dist/ionic/svg/wallet-outline.svg +1 -0
- package/dist/ionic/svg/wallet-sharp.svg +1 -0
- package/dist/ionic/svg/wallet.svg +1 -0
- package/dist/ionic/svg/warning-outline.svg +1 -0
- package/dist/ionic/svg/warning-sharp.svg +1 -0
- package/dist/ionic/svg/warning.svg +1 -0
- package/dist/ionic/svg/watch-outline.svg +1 -0
- package/dist/ionic/svg/watch-sharp.svg +1 -0
- package/dist/ionic/svg/watch.svg +1 -0
- package/dist/ionic/svg/water-outline.svg +1 -0
- package/dist/ionic/svg/water-sharp.svg +1 -0
- package/dist/ionic/svg/water.svg +1 -0
- package/dist/ionic/svg/wifi-outline.svg +1 -0
- package/dist/ionic/svg/wifi-sharp.svg +1 -0
- package/dist/ionic/svg/wifi.svg +1 -0
- package/dist/ionic/svg/wine-outline.svg +1 -0
- package/dist/ionic/svg/wine-sharp.svg +1 -0
- package/dist/ionic/svg/wine.svg +1 -0
- package/dist/ionic/svg/woman-outline.svg +1 -0
- package/dist/ionic/svg/woman-sharp.svg +1 -0
- package/dist/ionic/svg/woman.svg +1 -0
- package/dist/types/components/accordion/accordion.d.ts +1 -1
- package/dist/types/components/action-sheet/action-sheet.d.ts +37 -0
- package/dist/types/components/checkbox/checkbox.d.ts +9 -1
- package/dist/types/components/content/content.d.ts +7 -0
- package/dist/types/components/datetime/datetime.d.ts +10 -0
- package/dist/types/components/fab-button/fab-button.d.ts +1 -1
- package/dist/types/components/item/item.d.ts +1 -1
- package/dist/types/components/modal/modal.d.ts +14 -0
- package/dist/types/components/popover/popover.d.ts +7 -0
- package/dist/types/components/radio-group/radio-group.d.ts +9 -1
- package/dist/types/components/select/select.d.ts +2 -2
- package/dist/types/components/toggle/toggle.d.ts +7 -1
- package/dist/types/components.d.ts +10 -6
- package/dist/types/utils/forms/validity.d.ts +1 -1
- package/hydrate/index.js +863 -451
- package/hydrate/index.mjs +863 -451
- package/package.json +10 -6
- package/dist/ionic/p-4cc26913.entry.js +0 -4
- package/dist/ionic/p-4efea47a.entry.js +0 -4
- package/dist/ionic/p-510d86e1.entry.js +0 -4
- package/dist/ionic/p-5fb517e4.entry.js +0 -4
- package/dist/ionic/p-7bcfc421.entry.js +0 -4
- package/dist/ionic/p-8bdfc8f6.entry.js +0 -4
- package/dist/ionic/p-95bddd49.entry.js +0 -4
- package/dist/ionic/p-D87hU-Ly.js +0 -4
- package/dist/ionic/p-dc2e126d.entry.js +0 -4
- package/dist/ionic/p-e16b69e1.entry.js +0 -4
- package/dist/ionic/p-f65f9308.entry.js +0 -4
- package/dist/ionic/p-fc278823.entry.js +0 -4
|
@@ -463,7 +463,13 @@ export class Modal {
|
|
|
463
463
|
};
|
|
464
464
|
window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
|
|
465
465
|
}
|
|
466
|
-
|
|
466
|
+
/**
|
|
467
|
+
* Recalculate isSheetModal because framework bindings (e.g., Angular)
|
|
468
|
+
* may not have been applied when componentWillLoad ran.
|
|
469
|
+
*/
|
|
470
|
+
const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
|
|
471
|
+
this.isSheetModal = isSheetModal;
|
|
472
|
+
if (isSheetModal) {
|
|
467
473
|
this.initSheetGesture();
|
|
468
474
|
}
|
|
469
475
|
else if (hasCardModal) {
|
|
@@ -545,6 +551,79 @@ export class Modal {
|
|
|
545
551
|
this.gesture = gesture;
|
|
546
552
|
this.moveSheetToBreakpoint = moveSheetToBreakpoint;
|
|
547
553
|
this.gesture.enable(true);
|
|
554
|
+
/**
|
|
555
|
+
* When backdrop interaction is allowed, nested router outlets from child routes
|
|
556
|
+
* may block pointer events to parent content. Apply passthrough styles only when
|
|
557
|
+
* the modal was the sole content of a child route page.
|
|
558
|
+
* See https://github.com/ionic-team/ionic-framework/issues/30700
|
|
559
|
+
*/
|
|
560
|
+
const backdropNotBlocking = this.showBackdrop === false || this.focusTrap === false || backdropBreakpoint > 0;
|
|
561
|
+
if (backdropNotBlocking) {
|
|
562
|
+
this.setupChildRoutePassthrough();
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
/**
|
|
566
|
+
* For sheet modals that allow background interaction, sets up pointer-events
|
|
567
|
+
* passthrough on child route page wrappers and nested router outlets.
|
|
568
|
+
*/
|
|
569
|
+
setupChildRoutePassthrough() {
|
|
570
|
+
var _a;
|
|
571
|
+
// Cache the page parent for cleanup
|
|
572
|
+
this.cachedPageParent = this.getOriginalPageParent();
|
|
573
|
+
const pageParent = this.cachedPageParent;
|
|
574
|
+
// Skip ion-app (controller modals) and pages with visible sibling content next to the modal
|
|
575
|
+
if (!pageParent || pageParent.tagName === 'ION-APP') {
|
|
576
|
+
return;
|
|
577
|
+
}
|
|
578
|
+
const hasVisibleContent = Array.from(pageParent.children).some((child) => {
|
|
579
|
+
var _a;
|
|
580
|
+
return child !== this.el &&
|
|
581
|
+
!(child instanceof HTMLElement && window.getComputedStyle(child).display === 'none') &&
|
|
582
|
+
child.tagName !== 'TEMPLATE' &&
|
|
583
|
+
child.tagName !== 'SLOT' &&
|
|
584
|
+
!(child.nodeType === Node.TEXT_NODE && !((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()));
|
|
585
|
+
});
|
|
586
|
+
if (hasVisibleContent) {
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
// Child route case: page only contained the modal
|
|
590
|
+
pageParent.classList.add('ion-page-overlay-passthrough');
|
|
591
|
+
// Also make nested router outlets passthrough
|
|
592
|
+
const routerOutlet = pageParent.parentElement;
|
|
593
|
+
if ((routerOutlet === null || routerOutlet === void 0 ? void 0 : routerOutlet.tagName) === 'ION-ROUTER-OUTLET' && ((_a = routerOutlet.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) !== 'ION-APP') {
|
|
594
|
+
routerOutlet.style.setProperty('pointer-events', 'none');
|
|
595
|
+
routerOutlet.setAttribute('data-overlay-passthrough', 'true');
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
/**
|
|
599
|
+
* Finds the ion-page ancestor of the modal's original parent location.
|
|
600
|
+
*/
|
|
601
|
+
getOriginalPageParent() {
|
|
602
|
+
if (!this.cachedOriginalParent) {
|
|
603
|
+
return null;
|
|
604
|
+
}
|
|
605
|
+
let pageParent = this.cachedOriginalParent;
|
|
606
|
+
while (pageParent && !pageParent.classList.contains('ion-page')) {
|
|
607
|
+
pageParent = pageParent.parentElement;
|
|
608
|
+
}
|
|
609
|
+
return pageParent;
|
|
610
|
+
}
|
|
611
|
+
/**
|
|
612
|
+
* Removes passthrough styles added by setupChildRoutePassthrough.
|
|
613
|
+
*/
|
|
614
|
+
cleanupChildRoutePassthrough() {
|
|
615
|
+
const pageParent = this.cachedPageParent;
|
|
616
|
+
if (!pageParent) {
|
|
617
|
+
return;
|
|
618
|
+
}
|
|
619
|
+
pageParent.classList.remove('ion-page-overlay-passthrough');
|
|
620
|
+
const routerOutlet = pageParent.parentElement;
|
|
621
|
+
if (routerOutlet === null || routerOutlet === void 0 ? void 0 : routerOutlet.hasAttribute('data-overlay-passthrough')) {
|
|
622
|
+
routerOutlet.style.removeProperty('pointer-events');
|
|
623
|
+
routerOutlet.removeAttribute('data-overlay-passthrough');
|
|
624
|
+
}
|
|
625
|
+
// Clear the cached reference
|
|
626
|
+
this.cachedPageParent = undefined;
|
|
548
627
|
}
|
|
549
628
|
sheetOnDismiss() {
|
|
550
629
|
/**
|
|
@@ -634,6 +713,7 @@ export class Modal {
|
|
|
634
713
|
}
|
|
635
714
|
this.cleanupViewTransitionListener();
|
|
636
715
|
this.cleanupParentRemovalObserver();
|
|
716
|
+
this.cleanupChildRoutePassthrough();
|
|
637
717
|
}
|
|
638
718
|
this.currentBreakpoint = undefined;
|
|
639
719
|
this.animation = undefined;
|
|
@@ -838,6 +918,17 @@ export class Modal {
|
|
|
838
918
|
this.cachedOriginalParent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
|
|
839
919
|
return;
|
|
840
920
|
}
|
|
921
|
+
/**
|
|
922
|
+
* Don't observe for controller-based modals or when the parent is the
|
|
923
|
+
* app root (document.body or ion-app). These parents won't be removed,
|
|
924
|
+
* and observing document.body with subtree: true causes performance
|
|
925
|
+
* issues with frameworks like Angular during change detection.
|
|
926
|
+
*/
|
|
927
|
+
if (this.hasController ||
|
|
928
|
+
this.cachedOriginalParent === document.body ||
|
|
929
|
+
this.cachedOriginalParent.tagName === 'ION-APP') {
|
|
930
|
+
return;
|
|
931
|
+
}
|
|
841
932
|
this.parentRemovalObserver = new MutationObserver((mutations) => {
|
|
842
933
|
mutations.forEach((mutation) => {
|
|
843
934
|
if (mutation.type === 'childList' && mutation.removedNodes.length > 0) {
|
|
@@ -879,20 +970,20 @@ export class Modal {
|
|
|
879
970
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
880
971
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
881
972
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
882
|
-
return (h(Host, Object.assign({ key: '
|
|
973
|
+
return (h(Host, Object.assign({ key: '9a75095a13de0cfc96f1fa69fd92777d25da8daa', "no-router": true,
|
|
883
974
|
// Allow the modal to be navigable when the handle is focusable
|
|
884
975
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
885
976
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
886
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '
|
|
977
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: 'd02612d8063ef20f59f173ff47795f71cdaaf63e', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '708761b70a93e34c08faae079569f444c7416a4c', class: "modal-shadow" }), h("div", Object.assign({ key: 'a72226ff1a98229f9bfd9207b98fc57e02baa430',
|
|
887
978
|
/*
|
|
888
979
|
role and aria-modal must be used on the
|
|
889
980
|
same element. They must also be set inside the
|
|
890
981
|
shadow DOM otherwise ion-button will not be highlighted
|
|
891
982
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
892
983
|
*/
|
|
893
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
984
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '0547f32323882660221385d84d492929caa77c6b', class: "modal-handle",
|
|
894
985
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
895
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
986
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: 'fccbd64518b6fa22f9e874deb6b4ba55d8d89c3b', onSlotchange: this.onSlotChange }))));
|
|
896
987
|
}
|
|
897
988
|
static get is() { return "ion-modal"; }
|
|
898
989
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1451,6 +1542,7 @@ export class Modal {
|
|
|
1451
1542
|
}
|
|
1452
1543
|
static get states() {
|
|
1453
1544
|
return {
|
|
1545
|
+
"isSheetModal": {},
|
|
1454
1546
|
"presented": {}
|
|
1455
1547
|
};
|
|
1456
1548
|
}
|
|
@@ -225,6 +225,10 @@ export class Popover {
|
|
|
225
225
|
if (destroyTriggerInteraction) {
|
|
226
226
|
destroyTriggerInteraction();
|
|
227
227
|
}
|
|
228
|
+
if (this.headerResizeObserver) {
|
|
229
|
+
this.headerResizeObserver.disconnect();
|
|
230
|
+
this.headerResizeObserver = undefined;
|
|
231
|
+
}
|
|
228
232
|
}
|
|
229
233
|
componentWillLoad() {
|
|
230
234
|
var _a, _b;
|
|
@@ -327,6 +331,7 @@ export class Popover {
|
|
|
327
331
|
*/
|
|
328
332
|
this.ionMount.emit();
|
|
329
333
|
this.usersElement = await attachComponent(delegate, el, this.component, ['popover-viewport'], this.componentProps, inline);
|
|
334
|
+
this.recalculateContentOnHeaderReady();
|
|
330
335
|
if (!this.keyboardEvents) {
|
|
331
336
|
this.configureKeyboardInteraction();
|
|
332
337
|
}
|
|
@@ -372,6 +377,35 @@ export class Popover {
|
|
|
372
377
|
}
|
|
373
378
|
unlock();
|
|
374
379
|
}
|
|
380
|
+
/**
|
|
381
|
+
* Watch the header for height changes and trigger content dimension
|
|
382
|
+
* recalculation when the header has a height > 0. This sets the offset-top
|
|
383
|
+
* of the content to the height of the header correctly.
|
|
384
|
+
*/
|
|
385
|
+
recalculateContentOnHeaderReady() {
|
|
386
|
+
var _a;
|
|
387
|
+
const popoverContent = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.popover-content');
|
|
388
|
+
if (!popoverContent) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
const contentContainer = this.usersElement || popoverContent;
|
|
392
|
+
const header = contentContainer.querySelector('ion-header');
|
|
393
|
+
const contentElements = contentContainer.querySelectorAll('ion-content');
|
|
394
|
+
if (!header || contentElements.length === 0) {
|
|
395
|
+
return;
|
|
396
|
+
}
|
|
397
|
+
this.headerResizeObserver = new ResizeObserver(async () => {
|
|
398
|
+
var _a;
|
|
399
|
+
if (header.offsetHeight > 0) {
|
|
400
|
+
(_a = this.headerResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
401
|
+
this.headerResizeObserver = undefined;
|
|
402
|
+
for (const contentEl of contentElements) {
|
|
403
|
+
await contentEl.recalculateDimensions();
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
});
|
|
407
|
+
this.headerResizeObserver.observe(header);
|
|
408
|
+
}
|
|
375
409
|
/**
|
|
376
410
|
* Dismiss the popover overlay after it has been presented.
|
|
377
411
|
* This is a no-op if the overlay has not been presented yet. If you want
|
|
@@ -433,9 +467,9 @@ export class Popover {
|
|
|
433
467
|
const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
|
|
434
468
|
const desktop = isPlatform('desktop');
|
|
435
469
|
const enableArrow = arrow && !parentPopover;
|
|
436
|
-
return (h(Host, Object.assign({ key: '
|
|
470
|
+
return (h(Host, Object.assign({ key: '42863f748c93f709d433931d969230137b37d42d', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
|
|
437
471
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
438
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '
|
|
472
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '22b6d82178b52158b76ab3fd9a7dd738fd6e4bbf', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: 'b76335c64e992a964ed3fb91d17a992c3474b4cd', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '018c846c32e7ff7fa010528e6b37a17e5f03c84c', class: "popover-arrow", part: "arrow" }), h("div", { key: '350c468c80052da3a07768bceab98fe159c35a43', class: "popover-content", part: "content" }, h("slot", { key: '686443c17ac9873d33905c1cdb67e6d6da675282' })))));
|
|
439
473
|
}
|
|
440
474
|
static get is() { return "ion-popover"; }
|
|
441
475
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { Host, h } from "@stencil/core";
|
|
4
|
+
import { Build, Host, h } from "@stencil/core";
|
|
5
|
+
import { checkInvalidState } from "../../utils/forms/index";
|
|
5
6
|
import { renderHiddenInput } from "../../utils/helpers";
|
|
6
7
|
import { getIonMode } from "../../global/ionic-global";
|
|
7
8
|
export class RadioGroup {
|
|
@@ -10,6 +11,10 @@ export class RadioGroup {
|
|
|
10
11
|
this.helperTextId = `${this.inputId}-helper-text`;
|
|
11
12
|
this.errorTextId = `${this.inputId}-error-text`;
|
|
12
13
|
this.labelId = `${this.inputId}-lbl`;
|
|
14
|
+
/**
|
|
15
|
+
* Track validation state for proper aria-live announcements.
|
|
16
|
+
*/
|
|
17
|
+
this.isInvalid = false;
|
|
13
18
|
/**
|
|
14
19
|
* If `true`, the radios can be deselected.
|
|
15
20
|
*/
|
|
@@ -91,6 +96,52 @@ export class RadioGroup {
|
|
|
91
96
|
this.labelId = label.id = this.name + '-lbl';
|
|
92
97
|
}
|
|
93
98
|
}
|
|
99
|
+
// Watch for class changes to update validation state.
|
|
100
|
+
if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
|
|
101
|
+
this.validationObserver = new MutationObserver(() => {
|
|
102
|
+
const newIsInvalid = checkInvalidState(this.el);
|
|
103
|
+
if (this.isInvalid !== newIsInvalid) {
|
|
104
|
+
this.isInvalid = newIsInvalid;
|
|
105
|
+
/**
|
|
106
|
+
* Screen readers tend to announce changes
|
|
107
|
+
* to `aria-describedby` when the attribute
|
|
108
|
+
* is changed during a blur event for a
|
|
109
|
+
* native form control.
|
|
110
|
+
* However, the announcement can be spotty
|
|
111
|
+
* when using a non-native form control
|
|
112
|
+
* and `forceUpdate()`.
|
|
113
|
+
* This is due to `forceUpdate()` internally
|
|
114
|
+
* rescheduling the DOM update to a lower
|
|
115
|
+
* priority queue regardless if it's called
|
|
116
|
+
* inside a Promise or not, thus causing
|
|
117
|
+
* the screen reader to potentially miss the
|
|
118
|
+
* change.
|
|
119
|
+
* By using a State variable inside a Promise,
|
|
120
|
+
* it guarantees a re-render immediately at
|
|
121
|
+
* a higher priority.
|
|
122
|
+
*/
|
|
123
|
+
Promise.resolve().then(() => {
|
|
124
|
+
this.hintTextId = this.getHintTextId();
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
this.validationObserver.observe(this.el, {
|
|
129
|
+
attributes: true,
|
|
130
|
+
attributeFilter: ['class'],
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
// Always set initial state
|
|
134
|
+
this.isInvalid = checkInvalidState(this.el);
|
|
135
|
+
}
|
|
136
|
+
componentWillLoad() {
|
|
137
|
+
this.hintTextId = this.getHintTextId();
|
|
138
|
+
}
|
|
139
|
+
disconnectedCallback() {
|
|
140
|
+
// Clean up validation observer to prevent memory leaks.
|
|
141
|
+
if (this.validationObserver) {
|
|
142
|
+
this.validationObserver.disconnect();
|
|
143
|
+
this.validationObserver = undefined;
|
|
144
|
+
}
|
|
94
145
|
}
|
|
95
146
|
getRadios() {
|
|
96
147
|
return Array.from(this.el.querySelectorAll('ion-radio'));
|
|
@@ -166,16 +217,16 @@ export class RadioGroup {
|
|
|
166
217
|
* Renders the helper text or error text values
|
|
167
218
|
*/
|
|
168
219
|
renderHintText() {
|
|
169
|
-
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
220
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
170
221
|
const hasHintText = !!helperText || !!errorText;
|
|
171
222
|
if (!hasHintText) {
|
|
172
223
|
return;
|
|
173
224
|
}
|
|
174
|
-
return (h("div", { class: "radio-group-top" }, h("div", { id: helperTextId, class: "helper-text" }, helperText), h("div", { id: errorTextId, class: "error-text" }, errorText)));
|
|
225
|
+
return (h("div", { class: "radio-group-top" }, h("div", { id: helperTextId, class: "helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null), h("div", { id: errorTextId, class: "error-text", role: "alert" }, isInvalid ? errorText : null)));
|
|
175
226
|
}
|
|
176
|
-
|
|
177
|
-
const {
|
|
178
|
-
if (
|
|
227
|
+
getHintTextId() {
|
|
228
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
229
|
+
if (isInvalid && errorText) {
|
|
179
230
|
return errorTextId;
|
|
180
231
|
}
|
|
181
232
|
if (helperText) {
|
|
@@ -187,7 +238,7 @@ export class RadioGroup {
|
|
|
187
238
|
const { label, labelId, el, name, value } = this;
|
|
188
239
|
const mode = getIonMode(this);
|
|
189
240
|
renderHiddenInput(true, el, name, value, false);
|
|
190
|
-
return (h(Host, { key: '
|
|
241
|
+
return (h(Host, { key: 'db593b3ed511e9395e3c7bfd91b787328692cd6d', role: "radiogroup", "aria-labelledby": label ? labelId : null, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, class: mode }, this.renderHintText(), h("div", { key: '85045b45a0100a45f3b9a35d1c5a25ec63d525c4', class: "radio-group-wrapper" }, h("slot", { key: '53dacb87ce62398e78771fb2efaf839ab922d946' }))));
|
|
191
242
|
}
|
|
192
243
|
static get is() { return "ion-radio-group"; }
|
|
193
244
|
static get originalStyleUrls() {
|
|
@@ -328,6 +379,12 @@ export class RadioGroup {
|
|
|
328
379
|
}
|
|
329
380
|
};
|
|
330
381
|
}
|
|
382
|
+
static get states() {
|
|
383
|
+
return {
|
|
384
|
+
"isInvalid": {},
|
|
385
|
+
"hintTextId": {}
|
|
386
|
+
};
|
|
387
|
+
}
|
|
331
388
|
static get events() {
|
|
332
389
|
return [{
|
|
333
390
|
"method": "ionChange",
|
|
@@ -202,7 +202,7 @@ export class Select {
|
|
|
202
202
|
* a higher priority.
|
|
203
203
|
*/
|
|
204
204
|
Promise.resolve().then(() => {
|
|
205
|
-
this.
|
|
205
|
+
this.hintTextId = this.getHintTextId();
|
|
206
206
|
});
|
|
207
207
|
}
|
|
208
208
|
});
|
|
@@ -216,7 +216,7 @@ export class Select {
|
|
|
216
216
|
}
|
|
217
217
|
componentWillLoad() {
|
|
218
218
|
this.inheritedAttributes = inheritAttributes(this.el, ['aria-label']);
|
|
219
|
-
this.
|
|
219
|
+
this.hintTextId = this.getHintTextId();
|
|
220
220
|
}
|
|
221
221
|
componentDidLoad() {
|
|
222
222
|
/**
|
|
@@ -395,13 +395,18 @@ export class Select {
|
|
|
395
395
|
.filter((cls) => cls !== 'hydrated')
|
|
396
396
|
.join(' ');
|
|
397
397
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
398
|
+
const isSelected = isOptionSelected(selectValue, value, this.compareWith);
|
|
398
399
|
return {
|
|
399
|
-
role:
|
|
400
|
+
role: isSelected ? 'selected' : '',
|
|
400
401
|
text: option.textContent,
|
|
401
402
|
cssClass: optClass,
|
|
402
403
|
handler: () => {
|
|
403
404
|
this.setValue(value);
|
|
404
405
|
},
|
|
406
|
+
htmlAttributes: {
|
|
407
|
+
'aria-checked': isSelected ? 'true' : 'false',
|
|
408
|
+
role: 'radio',
|
|
409
|
+
},
|
|
405
410
|
};
|
|
406
411
|
});
|
|
407
412
|
// Add "cancel" button
|
|
@@ -761,9 +766,9 @@ export class Select {
|
|
|
761
766
|
}
|
|
762
767
|
renderListbox() {
|
|
763
768
|
const { disabled, inputId, isExpanded, required } = this;
|
|
764
|
-
return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.
|
|
769
|
+
return (h("button", { disabled: disabled, id: inputId, "aria-label": this.ariaLabel, "aria-haspopup": "dialog", "aria-expanded": `${isExpanded}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, "aria-required": `${required}`, onFocus: this.onFocus, onBlur: this.onBlur, ref: (focusEl) => (this.focusEl = focusEl) }));
|
|
765
770
|
}
|
|
766
|
-
|
|
771
|
+
getHintTextId() {
|
|
767
772
|
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
768
773
|
if (isInvalid && errorText) {
|
|
769
774
|
return errorTextId;
|
|
@@ -828,7 +833,7 @@ export class Select {
|
|
|
828
833
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
829
834
|
*/
|
|
830
835
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
831
|
-
return (h(Host, { key: '
|
|
836
|
+
return (h(Host, { key: 'd8026835993d0e6dce747098f741a06ae4e4f54d', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
832
837
|
[mode]: true,
|
|
833
838
|
'in-item': inItem,
|
|
834
839
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
@@ -846,7 +851,7 @@ export class Select {
|
|
|
846
851
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
847
852
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
848
853
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
849
|
-
}) }, h("label", { key: '
|
|
854
|
+
}) }, h("label", { key: 'fcfb40209d6d07d49c7fdca4884b31abf6ac2567', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: 'f191664f2290c3890bde1156157c83a6ff17dbe2', class: "select-wrapper-inner" }, h("slot", { key: '317a28d1115b4214f291e228ce0fe6fc782e57d5', name: "start" }), h("div", { key: 'db68e18abd5ca3a1023d7c7b58bf89893ae18073', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '4274e042267c2234a198b0f65c89477898d08130', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '2e2eb1ee2b2791e0683d9afb186fde6e938ca59c', class: "select-highlight" })), this.renderBottomContent()));
|
|
850
855
|
}
|
|
851
856
|
static get is() { return "ion-select"; }
|
|
852
857
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1316,7 +1321,7 @@ export class Select {
|
|
|
1316
1321
|
"isExpanded": {},
|
|
1317
1322
|
"hasFocus": {},
|
|
1318
1323
|
"isInvalid": {},
|
|
1319
|
-
"
|
|
1324
|
+
"hintTextId": {}
|
|
1320
1325
|
};
|
|
1321
1326
|
}
|
|
1322
1327
|
static get events() {
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import { Host, h } from "@stencil/core";
|
|
4
|
+
import { Build, Host, h } from "@stencil/core";
|
|
5
|
+
import { checkInvalidState } from "../../utils/forms/index";
|
|
5
6
|
import { renderHiddenInput, inheritAriaAttributes } from "../../utils/helpers";
|
|
6
7
|
import { hapticSelection } from "../../utils/native/haptic";
|
|
7
8
|
import { isPlatform } from "../../utils/platform";
|
|
@@ -32,6 +33,10 @@ export class Toggle {
|
|
|
32
33
|
this.inheritedAttributes = {};
|
|
33
34
|
this.didLoad = false;
|
|
34
35
|
this.activated = false;
|
|
36
|
+
/**
|
|
37
|
+
* Track validation state for proper aria-live announcements.
|
|
38
|
+
*/
|
|
39
|
+
this.isInvalid = false;
|
|
35
40
|
/**
|
|
36
41
|
* The name of the control, which is submitted with the form data.
|
|
37
42
|
*/
|
|
@@ -145,15 +150,52 @@ export class Toggle {
|
|
|
145
150
|
});
|
|
146
151
|
}
|
|
147
152
|
async connectedCallback() {
|
|
153
|
+
const { didLoad, el } = this;
|
|
148
154
|
/**
|
|
149
155
|
* If we have not yet rendered
|
|
150
156
|
* ion-toggle, then toggleTrack is not defined.
|
|
151
157
|
* But if we are moving ion-toggle via appendChild,
|
|
152
158
|
* then toggleTrack will be defined.
|
|
153
159
|
*/
|
|
154
|
-
if (
|
|
160
|
+
if (didLoad) {
|
|
155
161
|
this.setupGesture();
|
|
156
162
|
}
|
|
163
|
+
// Watch for class changes to update validation state.
|
|
164
|
+
if (Build.isBrowser && typeof MutationObserver !== 'undefined') {
|
|
165
|
+
this.validationObserver = new MutationObserver(() => {
|
|
166
|
+
const newIsInvalid = checkInvalidState(el);
|
|
167
|
+
if (this.isInvalid !== newIsInvalid) {
|
|
168
|
+
this.isInvalid = newIsInvalid;
|
|
169
|
+
/**
|
|
170
|
+
* Screen readers tend to announce changes
|
|
171
|
+
* to `aria-describedby` when the attribute
|
|
172
|
+
* is changed during a blur event for a
|
|
173
|
+
* native form control.
|
|
174
|
+
* However, the announcement can be spotty
|
|
175
|
+
* when using a non-native form control
|
|
176
|
+
* and `forceUpdate()`.
|
|
177
|
+
* This is due to `forceUpdate()` internally
|
|
178
|
+
* rescheduling the DOM update to a lower
|
|
179
|
+
* priority queue regardless if it's called
|
|
180
|
+
* inside a Promise or not, thus causing
|
|
181
|
+
* the screen reader to potentially miss the
|
|
182
|
+
* change.
|
|
183
|
+
* By using a State variable inside a Promise,
|
|
184
|
+
* it guarantees a re-render immediately at
|
|
185
|
+
* a higher priority.
|
|
186
|
+
*/
|
|
187
|
+
Promise.resolve().then(() => {
|
|
188
|
+
this.hintTextId = this.getHintTextId();
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
});
|
|
192
|
+
this.validationObserver.observe(el, {
|
|
193
|
+
attributes: true,
|
|
194
|
+
attributeFilter: ['class'],
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
// Always set initial state
|
|
198
|
+
this.isInvalid = checkInvalidState(el);
|
|
157
199
|
}
|
|
158
200
|
componentDidLoad() {
|
|
159
201
|
this.setupGesture();
|
|
@@ -164,9 +206,15 @@ export class Toggle {
|
|
|
164
206
|
this.gesture.destroy();
|
|
165
207
|
this.gesture = undefined;
|
|
166
208
|
}
|
|
209
|
+
// Clean up validation observer to prevent memory leaks.
|
|
210
|
+
if (this.validationObserver) {
|
|
211
|
+
this.validationObserver.disconnect();
|
|
212
|
+
this.validationObserver = undefined;
|
|
213
|
+
}
|
|
167
214
|
}
|
|
168
215
|
componentWillLoad() {
|
|
169
216
|
this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
|
|
217
|
+
this.hintTextId = this.getHintTextId();
|
|
170
218
|
}
|
|
171
219
|
onStart() {
|
|
172
220
|
this.activated = true;
|
|
@@ -207,9 +255,9 @@ export class Toggle {
|
|
|
207
255
|
get hasLabel() {
|
|
208
256
|
return this.el.textContent !== '';
|
|
209
257
|
}
|
|
210
|
-
|
|
211
|
-
const {
|
|
212
|
-
if (
|
|
258
|
+
getHintTextId() {
|
|
259
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
260
|
+
if (isInvalid && errorText) {
|
|
213
261
|
return errorTextId;
|
|
214
262
|
}
|
|
215
263
|
if (helperText) {
|
|
@@ -222,7 +270,7 @@ export class Toggle {
|
|
|
222
270
|
* This element should only be rendered if hint text is set.
|
|
223
271
|
*/
|
|
224
272
|
renderHintText() {
|
|
225
|
-
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
273
|
+
const { helperText, errorText, helperTextId, errorTextId, isInvalid } = this;
|
|
226
274
|
/**
|
|
227
275
|
* undefined and empty string values should
|
|
228
276
|
* be treated as not having helper/error text.
|
|
@@ -231,15 +279,15 @@ export class Toggle {
|
|
|
231
279
|
if (!hasHintText) {
|
|
232
280
|
return;
|
|
233
281
|
}
|
|
234
|
-
return (h("div", { class: "toggle-bottom" }, h("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text" }, helperText), h("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text" }, errorText)));
|
|
282
|
+
return (h("div", { class: "toggle-bottom" }, h("div", { id: helperTextId, class: "helper-text", part: "supporting-text helper-text", "aria-live": "polite" }, !isInvalid ? helperText : null), h("div", { id: errorTextId, class: "error-text", part: "supporting-text error-text", role: "alert" }, isInvalid ? errorText : null)));
|
|
235
283
|
}
|
|
236
284
|
render() {
|
|
237
|
-
const { activated, alignment, checked, color, disabled, el,
|
|
285
|
+
const { activated, alignment, checked, color, disabled, el, hasLabel, inheritedAttributes, inputId, inputLabelId, justify, labelPlacement, name, required, } = this;
|
|
238
286
|
const mode = getIonMode(this);
|
|
239
287
|
const value = this.getValue();
|
|
240
288
|
const rtl = isRTL(el) ? 'rtl' : 'ltr';
|
|
241
289
|
renderHiddenInput(true, el, name, checked ? value : '', disabled);
|
|
242
|
-
return (h(Host, { key: '
|
|
290
|
+
return (h(Host, { key: 'f569148edd89ee041a4719ffc4733c16b05229bd', role: "switch", "aria-checked": `${checked}`, "aria-describedby": this.hintTextId, "aria-invalid": this.isInvalid ? 'true' : undefined, onClick: this.onClick, "aria-labelledby": hasLabel ? inputLabelId : null, "aria-label": inheritedAttributes['aria-label'] || null, "aria-disabled": disabled ? 'true' : null, "aria-required": required ? 'true' : undefined, tabindex: disabled ? undefined : 0, onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, class: createColorClasses(color, {
|
|
243
291
|
[mode]: true,
|
|
244
292
|
'in-item': hostContext('ion-item', el),
|
|
245
293
|
'toggle-activated': activated,
|
|
@@ -249,10 +297,10 @@ export class Toggle {
|
|
|
249
297
|
[`toggle-alignment-${alignment}`]: alignment !== undefined,
|
|
250
298
|
[`toggle-label-placement-${labelPlacement}`]: true,
|
|
251
299
|
[`toggle-${rtl}`]: true,
|
|
252
|
-
}) }, h("label", { key: '
|
|
300
|
+
}) }, h("label", { key: '3027f2ac4be6de422a14486d847fbee77f615db1', class: "toggle-wrapper", htmlFor: inputId }, h("input", Object.assign({ key: '4b0304c9e879e432b80184b4e5de37d55c11b436', type: "checkbox", role: "switch", "aria-checked": `${checked}`, checked: checked, disabled: disabled, id: inputId, required: required }, inheritedAttributes)), h("div", { key: '8ef265ec942e7f01ff31cbb202ed146c6bf94e02', class: {
|
|
253
301
|
'label-text-wrapper': true,
|
|
254
302
|
'label-text-wrapper-hidden': !hasLabel,
|
|
255
|
-
}, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, h("slot", { key: '
|
|
303
|
+
}, part: "label", id: inputLabelId, onClick: this.onDivLabelClick }, h("slot", { key: '7b162b7dd27199cca2a4c995276a18b9f8e44aaf' }), this.renderHintText()), h("div", { key: 'd13c34bd42fca01cc73ddb4ea7e471b33a282a3e', class: "native-wrapper" }, this.renderToggleControl()))));
|
|
256
304
|
}
|
|
257
305
|
static get is() { return "ion-toggle"; }
|
|
258
306
|
static get encapsulation() { return "shadow"; }
|
|
@@ -515,7 +563,9 @@ export class Toggle {
|
|
|
515
563
|
}
|
|
516
564
|
static get states() {
|
|
517
565
|
return {
|
|
518
|
-
"activated": {}
|
|
566
|
+
"activated": {},
|
|
567
|
+
"isInvalid": {},
|
|
568
|
+
"hintTextId": {}
|
|
519
569
|
};
|
|
520
570
|
}
|
|
521
571
|
static get events() {
|
|
@@ -14,6 +14,14 @@ import { addEventListener, componentOnReady, focusVisibleElement, getElementRoot
|
|
|
14
14
|
let lastOverlayIndex = 0;
|
|
15
15
|
let lastId = 0;
|
|
16
16
|
export const activeAnimations = new WeakMap();
|
|
17
|
+
/**
|
|
18
|
+
* Determines if the overlay's backdrop is always blocking (no background interaction).
|
|
19
|
+
* Returns false if showBackdrop=false or backdropBreakpoint > 0.
|
|
20
|
+
*/
|
|
21
|
+
const isBackdropAlwaysBlocking = (el) => {
|
|
22
|
+
var _a;
|
|
23
|
+
return el.showBackdrop !== false && !(((_a = el.backdropBreakpoint) !== null && _a !== void 0 ? _a : 0) > 0);
|
|
24
|
+
};
|
|
17
25
|
const createController = (tagName) => {
|
|
18
26
|
return {
|
|
19
27
|
create(options) {
|
|
@@ -457,9 +465,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
457
465
|
*/
|
|
458
466
|
const overlayEl = overlay.el;
|
|
459
467
|
const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
|
|
460
|
-
|
|
461
|
-
// expect background interaction to remain enabled.
|
|
462
|
-
const shouldLockRoot = shouldTrapFocus && overlayEl.showBackdrop !== false;
|
|
468
|
+
const shouldLockRoot = shouldTrapFocus && isBackdropAlwaysBlocking(overlayEl);
|
|
463
469
|
overlay.presented = true;
|
|
464
470
|
overlay.willPresent.emit();
|
|
465
471
|
if (shouldLockRoot) {
|
|
@@ -575,10 +581,10 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
575
581
|
*/
|
|
576
582
|
const overlaysLockingRoot = presentedOverlays.filter((o) => {
|
|
577
583
|
const el = o;
|
|
578
|
-
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && el
|
|
584
|
+
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && isBackdropAlwaysBlocking(el);
|
|
579
585
|
});
|
|
580
586
|
const overlayEl = overlay.el;
|
|
581
|
-
const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && overlayEl
|
|
587
|
+
const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && isBackdropAlwaysBlocking(overlayEl);
|
|
582
588
|
/**
|
|
583
589
|
* If this is the last visible overlay that is trapping focus
|
|
584
590
|
* then we want to re-add the root to the accessibility tree.
|
|
@@ -95,6 +95,13 @@ export const setContent = async (page, html, testInfo, options) => {
|
|
|
95
95
|
route.continue();
|
|
96
96
|
}
|
|
97
97
|
});
|
|
98
|
+
/**
|
|
99
|
+
* URL query parameters cause the custom Playwright `page.route`
|
|
100
|
+
* interceptor to fail, which is necessary to inject the test HTML.
|
|
101
|
+
*
|
|
102
|
+
* To avoid this, the final navigation URL is kept simple by using
|
|
103
|
+
* hash params to ensure the route interceptor always works.
|
|
104
|
+
*/
|
|
98
105
|
await page.goto(`${baseUrl}#`, options);
|
|
99
106
|
}
|
|
100
107
|
};
|