@ionic/core 8.4.4-dev.11741032668.18899f9b → 8.4.4-dev.11741046329.16b83b14
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/checkbox.js +40 -6
- package/components/helpers.js +1 -11
- package/components/index6.js +11 -3
- package/components/index9.js +1 -1
- package/components/ion-segment-button.js +9 -40
- package/components/ion-select.js +6 -4
- package/components/ion-toggle.js +6 -4
- package/components/ionic-global.js +1 -2
- package/components/modal.js +259 -35
- package/components/toolbar.js +2 -2
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/cjs/{app-globals-4283fe37.js → app-globals-21afee77.js} +1 -1
- package/dist/cjs/{data-21dc0f81.js → data-108e531d.js} +1 -1
- package/dist/cjs/{framework-delegate-05579976.js → framework-delegate-55f5683a.js} +1 -1
- package/dist/cjs/{hardware-back-button-f2cbbdce.js → hardware-back-button-9e8a2c4f.js} +1 -1
- package/dist/cjs/{helpers-4be3f90d.js → helpers-afaa9001.js} +0 -11
- package/dist/cjs/{index-c441c903.js → index-0d762bba.js} +2 -2
- package/dist/cjs/{index-5915f9b3.js → index-2a46a047.js} +11 -3
- package/dist/cjs/{index-9c6c9e9c.js → index-3652c918.js} +4 -4
- package/dist/cjs/{index-ad7a712e.js → index-9509ecad.js} +1 -1
- package/dist/cjs/{index-90ec3b6c.js → index-e975c92b.js} +5 -5
- package/dist/cjs/index.cjs.js +10 -10
- package/dist/cjs/{input-shims-e748a364.js → input-shims-cd05268a.js} +5 -3
- package/dist/cjs/{input.utils-74e4ec28.js → input.utils-ffb2f81b.js} +2 -2
- package/dist/cjs/ion-accordion_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-action-sheet.cjs.entry.js +6 -6
- package/dist/cjs/ion-alert.cjs.entry.js +6 -6
- package/dist/cjs/ion-app_8.cjs.entry.js +14 -14
- package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-back-button.cjs.entry.js +2 -2
- package/dist/cjs/ion-backdrop.cjs.entry.js +1 -1
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-card_5.cjs.entry.js +2 -2
- package/dist/cjs/ion-checkbox.cjs.entry.js +39 -8
- package/dist/cjs/ion-chip.cjs.entry.js +1 -1
- package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime-button.cjs.entry.js +4 -4
- package/dist/cjs/ion-datetime_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-fab_3.cjs.entry.js +2 -2
- 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-password-toggle.cjs.entry.js +2 -2
- package/dist/cjs/ion-input.cjs.entry.js +5 -5
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +2 -2
- package/dist/cjs/ion-loading.cjs.entry.js +6 -6
- package/dist/cjs/ion-menu_3.cjs.entry.js +7 -7
- package/dist/cjs/ion-modal.cjs.entry.js +266 -43
- package/dist/cjs/ion-nav_2.cjs.entry.js +6 -6
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
- package/dist/cjs/ion-picker-column.cjs.entry.js +2 -2
- package/dist/cjs/ion-picker.cjs.entry.js +1 -1
- package/dist/cjs/ion-popover.cjs.entry.js +7 -7
- package/dist/cjs/ion-progress-bar.cjs.entry.js +2 -2
- package/dist/cjs/ion-radio_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-range.cjs.entry.js +4 -4
- package/dist/cjs/ion-refresher_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-reorder_2.cjs.entry.js +4 -4
- 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 +2 -2
- package/dist/cjs/ion-segment_2.cjs.entry.js +10 -41
- package/dist/cjs/ion-select-modal.cjs.entry.js +6 -6
- package/dist/cjs/ion-select_3.cjs.entry.js +12 -11
- package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ion-split-pane.cjs.entry.js +1 -1
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-text.cjs.entry.js +1 -1
- package/dist/cjs/ion-textarea.cjs.entry.js +5 -5
- package/dist/cjs/ion-toast.cjs.entry.js +6 -6
- package/dist/cjs/ion-toggle.cjs.entry.js +7 -6
- package/dist/cjs/{ionic-global-96da1b2e.js → ionic-global-d9a8bb5b.js} +1 -2
- package/dist/cjs/ionic.cjs.js +3 -3
- package/dist/cjs/{ios.transition-2dae3b92.js → ios.transition-0e664e88.js} +4 -4
- package/dist/cjs/loader.cjs.js +3 -3
- package/dist/cjs/{md.transition-ea3260a7.js → md.transition-2e8aef2c.js} +4 -4
- package/dist/cjs/{notch-controller-a0c464d1.js → notch-controller-d69150f5.js} +1 -1
- package/dist/cjs/{overlays-3880b5b5.js → overlays-65fdaff6.js} +5 -5
- package/dist/cjs/{status-tap-fb807fad.js → status-tap-d74f1429.js} +4 -3
- package/dist/cjs/{swipe-back-47a52b83.js → swipe-back-0303a5e4.js} +1 -1
- package/dist/collection/components/checkbox/checkbox.ios.css +52 -15
- package/dist/collection/components/checkbox/checkbox.js +90 -4
- package/dist/collection/components/checkbox/checkbox.md.css +52 -15
- package/dist/collection/components/modal/animations/ios.enter.js +50 -4
- package/dist/collection/components/modal/animations/ios.leave.js +24 -2
- package/dist/collection/components/modal/animations/md.enter.js +52 -5
- package/dist/collection/components/modal/animations/md.leave.js +26 -3
- package/dist/collection/components/modal/animations/sheet.js +11 -2
- package/dist/collection/components/modal/gestures/sheet.js +79 -10
- package/dist/collection/components/modal/modal.ios.css +16 -0
- package/dist/collection/components/modal/modal.js +32 -7
- package/dist/collection/components/modal/modal.md.css +6 -0
- package/dist/collection/components/segment-button/segment-button.js +9 -40
- package/dist/collection/components/select/select.js +23 -4
- package/dist/collection/components/toggle/toggle.js +23 -4
- package/dist/collection/components/toolbar/toolbar.js +6 -2
- package/dist/collection/utils/helpers.js +0 -10
- package/dist/collection/utils/logging/index.js +10 -3
- package/dist/collection/utils/platform.js +1 -2
- package/dist/collection/utils/test/platform.utils.js +1 -1
- package/dist/docs.json +187 -2
- package/dist/esm/{app-globals-c10a1137.js → app-globals-5dbb61a5.js} +1 -1
- package/dist/esm/{data-ae11fd43.js → data-b3284b5e.js} +1 -1
- package/dist/esm/{framework-delegate-f683816e.js → framework-delegate-63d1a679.js} +1 -1
- package/dist/esm/{hardware-back-button-44195e92.js → hardware-back-button-06ef3c3e.js} +1 -1
- package/dist/esm/{helpers-9b49d7d2.js → helpers-da915de8.js} +1 -11
- package/dist/esm/{index-b019fc18.js → index-2f7fde3d.js} +5 -5
- package/dist/esm/{index-9b0d46f4.js → index-6ad967f3.js} +11 -3
- package/dist/esm/{index-5a0f5fd0.js → index-79b30591.js} +1 -1
- package/dist/esm/{index-e1e9a0d3.js → index-cb21eccb.js} +4 -4
- package/dist/esm/{index-33f7e3ff.js → index-efb8ecdf.js} +2 -2
- package/dist/esm/index.js +10 -10
- package/dist/esm/{input-shims-0e65111b.js → input-shims-2fd7c6ef.js} +5 -3
- package/dist/esm/{input.utils-1ad8dafc.js → input.utils-961c9f17.js} +2 -2
- package/dist/esm/ion-accordion_2.entry.js +3 -3
- package/dist/esm/ion-action-sheet.entry.js +6 -6
- package/dist/esm/ion-alert.entry.js +6 -6
- package/dist/esm/ion-app_8.entry.js +14 -14
- package/dist/esm/ion-avatar_3.entry.js +1 -1
- package/dist/esm/ion-back-button.entry.js +2 -2
- package/dist/esm/ion-backdrop.entry.js +1 -1
- package/dist/esm/ion-breadcrumb_2.entry.js +2 -2
- package/dist/esm/ion-button_2.entry.js +3 -3
- package/dist/esm/ion-card_5.entry.js +2 -2
- package/dist/esm/ion-checkbox.entry.js +39 -8
- package/dist/esm/ion-chip.entry.js +1 -1
- package/dist/esm/ion-col_3.entry.js +1 -1
- package/dist/esm/ion-datetime-button.entry.js +4 -4
- package/dist/esm/ion-datetime_3.entry.js +7 -7
- package/dist/esm/ion-fab_3.entry.js +2 -2
- 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-password-toggle.entry.js +2 -2
- package/dist/esm/ion-input.entry.js +5 -5
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +2 -2
- package/dist/esm/ion-loading.entry.js +6 -6
- package/dist/esm/ion-menu_3.entry.js +7 -7
- package/dist/esm/ion-modal.entry.js +266 -43
- package/dist/esm/ion-nav_2.entry.js +6 -6
- package/dist/esm/ion-picker-column-option.entry.js +2 -2
- package/dist/esm/ion-picker-column.entry.js +2 -2
- package/dist/esm/ion-picker.entry.js +1 -1
- package/dist/esm/ion-popover.entry.js +7 -7
- package/dist/esm/ion-progress-bar.entry.js +2 -2
- package/dist/esm/ion-radio_2.entry.js +2 -2
- package/dist/esm/ion-range.entry.js +4 -4
- package/dist/esm/ion-refresher_2.entry.js +4 -4
- package/dist/esm/ion-reorder_2.entry.js +4 -4
- 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 +2 -2
- package/dist/esm/ion-segment_2.entry.js +10 -41
- package/dist/esm/ion-select-modal.entry.js +6 -6
- package/dist/esm/ion-select_3.entry.js +12 -11
- package/dist/esm/ion-spinner.entry.js +1 -1
- package/dist/esm/ion-split-pane.entry.js +1 -1
- package/dist/esm/ion-tab-bar_2.entry.js +2 -2
- package/dist/esm/ion-tab_2.entry.js +2 -2
- package/dist/esm/ion-text.entry.js +1 -1
- package/dist/esm/ion-textarea.entry.js +5 -5
- package/dist/esm/ion-toast.entry.js +6 -6
- package/dist/esm/ion-toggle.entry.js +7 -6
- package/dist/esm/{ionic-global-bf78a847.js → ionic-global-c81d82ab.js} +1 -2
- package/dist/esm/ionic.js +3 -3
- package/dist/esm/{ios.transition-b7103952.js → ios.transition-b1da3753.js} +4 -4
- package/dist/esm/loader.js +3 -3
- package/dist/esm/{md.transition-e4034e0a.js → md.transition-571b3859.js} +4 -4
- package/dist/esm/{notch-controller-3dc61260.js → notch-controller-55b09e11.js} +1 -1
- package/dist/esm/{overlays-aea27b63.js → overlays-5deab4de.js} +5 -5
- package/dist/esm/{status-tap-163e8128.js → status-tap-79eac0ac.js} +4 -3
- package/dist/esm/{swipe-back-23ee7ab1.js → swipe-back-e5394307.js} +1 -1
- package/dist/esm-es5/app-globals-5dbb61a5.js +4 -0
- package/dist/esm-es5/{data-ae11fd43.js → data-b3284b5e.js} +1 -1
- package/dist/esm-es5/{framework-delegate-f683816e.js → framework-delegate-63d1a679.js} +1 -1
- package/dist/esm-es5/{hardware-back-button-44195e92.js → hardware-back-button-06ef3c3e.js} +1 -1
- package/dist/esm-es5/{helpers-9b49d7d2.js → helpers-da915de8.js} +1 -1
- package/dist/esm-es5/{index-b019fc18.js → index-2f7fde3d.js} +1 -1
- package/dist/esm-es5/index-6ad967f3.js +4 -0
- package/dist/esm-es5/{index-5a0f5fd0.js → index-79b30591.js} +1 -1
- package/dist/esm-es5/{index-e1e9a0d3.js → index-cb21eccb.js} +1 -1
- package/dist/esm-es5/{index-33f7e3ff.js → index-efb8ecdf.js} +1 -1
- package/dist/esm-es5/index.js +1 -1
- package/dist/esm-es5/input-shims-2fd7c6ef.js +4 -0
- package/dist/esm-es5/{input.utils-1ad8dafc.js → input.utils-961c9f17.js} +1 -1
- package/dist/esm-es5/ion-accordion_2.entry.js +1 -1
- package/dist/esm-es5/ion-action-sheet.entry.js +1 -1
- package/dist/esm-es5/ion-alert.entry.js +1 -1
- package/dist/esm-es5/ion-app_8.entry.js +1 -1
- package/dist/esm-es5/ion-avatar_3.entry.js +1 -1
- package/dist/esm-es5/ion-back-button.entry.js +1 -1
- package/dist/esm-es5/ion-backdrop.entry.js +1 -1
- package/dist/esm-es5/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm-es5/ion-button_2.entry.js +1 -1
- package/dist/esm-es5/ion-card_5.entry.js +1 -1
- package/dist/esm-es5/ion-checkbox.entry.js +1 -1
- package/dist/esm-es5/ion-chip.entry.js +1 -1
- package/dist/esm-es5/ion-col_3.entry.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-fab_3.entry.js +1 -1
- package/dist/esm-es5/ion-img.entry.js +1 -1
- package/dist/esm-es5/ion-infinite-scroll_2.entry.js +1 -1
- package/dist/esm-es5/ion-input-password-toggle.entry.js +1 -1
- package/dist/esm-es5/ion-input.entry.js +1 -1
- package/dist/esm-es5/ion-item-option_3.entry.js +1 -1
- package/dist/esm-es5/ion-item_8.entry.js +1 -1
- package/dist/esm-es5/ion-loading.entry.js +1 -1
- package/dist/esm-es5/ion-menu_3.entry.js +1 -1
- package/dist/esm-es5/ion-modal.entry.js +1 -1
- package/dist/esm-es5/ion-nav_2.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column-option.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column.entry.js +1 -1
- package/dist/esm-es5/ion-picker.entry.js +1 -1
- package/dist/esm-es5/ion-popover.entry.js +1 -1
- package/dist/esm-es5/ion-progress-bar.entry.js +1 -1
- package/dist/esm-es5/ion-radio_2.entry.js +1 -1
- package/dist/esm-es5/ion-range.entry.js +1 -1
- package/dist/esm-es5/ion-refresher_2.entry.js +1 -1
- package/dist/esm-es5/ion-reorder_2.entry.js +1 -1
- package/dist/esm-es5/ion-ripple-effect.entry.js +1 -1
- package/dist/esm-es5/ion-route_4.entry.js +1 -1
- package/dist/esm-es5/ion-searchbar.entry.js +1 -1
- package/dist/esm-es5/ion-segment_2.entry.js +1 -1
- package/dist/esm-es5/ion-select-modal.entry.js +1 -1
- package/dist/esm-es5/ion-select_3.entry.js +1 -1
- package/dist/esm-es5/ion-spinner.entry.js +1 -1
- package/dist/esm-es5/ion-split-pane.entry.js +1 -1
- package/dist/esm-es5/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm-es5/ion-tab_2.entry.js +1 -1
- package/dist/esm-es5/ion-text.entry.js +1 -1
- package/dist/esm-es5/ion-textarea.entry.js +1 -1
- package/dist/esm-es5/ion-toast.entry.js +1 -1
- package/dist/esm-es5/ion-toggle.entry.js +1 -1
- package/dist/esm-es5/{ionic-global-bf78a847.js → ionic-global-c81d82ab.js} +1 -1
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/{ios.transition-b7103952.js → ios.transition-b1da3753.js} +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/esm-es5/md.transition-571b3859.js +4 -0
- package/dist/esm-es5/{notch-controller-3dc61260.js → notch-controller-55b09e11.js} +1 -1
- package/dist/esm-es5/{overlays-aea27b63.js → overlays-5deab4de.js} +1 -1
- package/dist/esm-es5/status-tap-79eac0ac.js +4 -0
- package/dist/esm-es5/{swipe-back-23ee7ab1.js → swipe-back-e5394307.js} +1 -1
- package/dist/html.html-data.json +24 -0
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/ionic.js +1 -1
- package/dist/ionic/{p-3c6d2c1e.system.entry.js → p-01186920.system.entry.js} +1 -1
- package/dist/ionic/p-0430c2e0.entry.js +4 -0
- package/dist/ionic/p-0574e87e.js +4 -0
- package/dist/ionic/{p-77b1bb00.system.entry.js → p-05b74e45.system.entry.js} +1 -1
- package/dist/ionic/{p-b7d2ba68.entry.js → p-081a4ce4.entry.js} +1 -1
- package/dist/ionic/p-0af823e1.js +4 -0
- package/dist/ionic/{p-aa63b365.system.js → p-0eb35a7f.system.js} +1 -1
- package/dist/ionic/p-1132ffee.entry.js +4 -0
- package/dist/ionic/{p-60f1b2fa.entry.js → p-120fb79a.entry.js} +1 -1
- package/dist/ionic/{p-98c08d09.entry.js → p-15d18206.entry.js} +1 -1
- package/dist/ionic/{p-035c0885.entry.js → p-15e76dd1.entry.js} +1 -1
- package/dist/ionic/{p-6b1f082e.entry.js → p-16188af7.entry.js} +1 -1
- package/dist/ionic/p-16bfb979.system.entry.js +4 -0
- package/dist/ionic/{p-5126cf1e.system.js → p-19ea7bff.system.js} +1 -1
- package/dist/ionic/{p-d60342e3.js → p-1a5bc5f7.js} +1 -1
- package/dist/ionic/{p-42808996.js → p-1ab13b2b.js} +1 -1
- package/dist/ionic/{p-13892787.system.entry.js → p-1e67b266.system.entry.js} +1 -1
- package/dist/ionic/{p-e2e19375.system.entry.js → p-2172893e.system.entry.js} +1 -1
- package/dist/ionic/{p-ea7c658c.system.entry.js → p-2346ab53.system.entry.js} +2 -2
- package/dist/ionic/{p-944d66b5.system.entry.js → p-248318e0.system.entry.js} +1 -1
- package/dist/ionic/{p-a873feda.system.entry.js → p-2507278c.system.entry.js} +1 -1
- package/dist/ionic/{p-eb599bcb.js → p-28706c6f.js} +1 -1
- package/dist/ionic/{p-4eed0eb2.system.entry.js → p-2abae1cc.system.entry.js} +1 -1
- package/dist/ionic/{p-a197ff3b.system.entry.js → p-2b838f86.system.entry.js} +1 -1
- package/dist/ionic/{p-a3705e10.entry.js → p-2da9c8a7.entry.js} +1 -1
- package/dist/ionic/{p-92e4df0c.system.entry.js → p-2e46590d.system.entry.js} +1 -1
- package/dist/ionic/{p-e78bff37.system.entry.js → p-302b50bb.system.entry.js} +1 -1
- package/dist/ionic/p-322c5fb4.system.js +4 -0
- package/dist/ionic/{p-c66604e4.entry.js → p-33a8a71b.entry.js} +1 -1
- package/dist/ionic/{p-f687573e.system.js → p-343b6b1d.system.js} +1 -1
- package/dist/ionic/{p-2bc73fb5.js → p-34b11c24.js} +1 -1
- package/dist/ionic/{p-b3680e2f.system.js → p-3ad285e3.system.js} +1 -1
- package/dist/ionic/{p-8911101b.system.js → p-3c8e5c23.system.js} +1 -1
- package/dist/ionic/{p-d4ca0475.js → p-3cc276f4.js} +1 -1
- package/dist/ionic/p-49a0e74c.entry.js +4 -0
- package/dist/ionic/p-4c2d5b80.system.js +4 -0
- package/dist/ionic/p-4c98e2cf.system.js +4 -0
- package/dist/ionic/p-4ec778aa.entry.js +4 -0
- package/dist/ionic/{p-4ad78edc.entry.js → p-52d7a191.entry.js} +1 -1
- package/dist/ionic/{p-1543d6b2.system.entry.js → p-567de071.system.entry.js} +1 -1
- package/dist/ionic/p-577bc414.entry.js +4 -0
- package/dist/ionic/{p-22e4210e.system.entry.js → p-585b455c.system.entry.js} +1 -1
- package/dist/ionic/{p-42585688.system.entry.js → p-58d5df0c.system.entry.js} +1 -1
- package/dist/ionic/{p-026517fb.entry.js → p-5b932840.entry.js} +1 -1
- package/dist/ionic/{p-97acff20.system.js → p-5c08627a.system.js} +1 -1
- package/dist/ionic/{p-eb6f173b.entry.js → p-5c9eb9af.entry.js} +1 -1
- package/dist/ionic/{p-9c7efe25.system.entry.js → p-5fce0c0b.system.entry.js} +1 -1
- package/dist/ionic/{p-f00ba947.entry.js → p-61db139d.entry.js} +1 -1
- package/dist/ionic/{p-85b1ffae.entry.js → p-62af944c.entry.js} +1 -1
- package/dist/ionic/{p-4c9ccc7f.system.entry.js → p-63b0abde.system.entry.js} +1 -1
- package/dist/ionic/p-67222c16.system.js +4 -0
- package/dist/ionic/{p-ca908a50.system.entry.js → p-6933c482.system.entry.js} +1 -1
- package/dist/ionic/{p-c2583512.entry.js → p-6d32975a.entry.js} +1 -1
- package/dist/ionic/{p-dd0cad9c.entry.js → p-6d6cedc5.entry.js} +1 -1
- package/dist/ionic/{p-9c82a07c.system.entry.js → p-6dfb0f39.system.entry.js} +1 -1
- package/dist/ionic/{p-7a1766d6.js → p-72812e99.js} +1 -1
- package/dist/ionic/p-72bc8a1c.js +4 -0
- package/dist/ionic/{p-c3f4ea6c.system.entry.js → p-744c8672.system.entry.js} +1 -1
- package/dist/ionic/{p-d4896d36.system.entry.js → p-7458862e.system.entry.js} +1 -1
- package/dist/ionic/{p-d0a7f584.system.entry.js → p-74e3f0af.system.entry.js} +2 -2
- package/dist/ionic/p-7513b0c4.js +4 -0
- package/dist/ionic/{p-5a8efe64.system.entry.js → p-797eeea8.system.entry.js} +1 -1
- package/dist/ionic/{p-fd988d29.entry.js → p-7a02f476.entry.js} +1 -1
- package/dist/ionic/{p-0dc23518.entry.js → p-7a6eaf9e.entry.js} +1 -1
- package/dist/ionic/{p-288a2cff.entry.js → p-7b9a2b23.entry.js} +1 -1
- package/dist/ionic/{p-b637aa3f.system.entry.js → p-7ddc46c3.system.entry.js} +1 -1
- package/dist/ionic/p-7de1e42c.system.js +4 -0
- package/dist/ionic/{p-0eb2553a.system.entry.js → p-7ed1657c.system.entry.js} +1 -1
- package/dist/ionic/{p-95da3ae2.system.js → p-8635f5e6.system.js} +1 -1
- package/dist/ionic/{p-5bc12439.entry.js → p-8694928f.entry.js} +1 -1
- package/dist/ionic/{p-ebd0a280.entry.js → p-89bf08c7.entry.js} +1 -1
- package/dist/ionic/{p-830f1a37.system.entry.js → p-8cfba7e9.system.entry.js} +1 -1
- package/dist/ionic/{p-4f2f4e3b.entry.js → p-92763d3d.entry.js} +1 -1
- package/dist/ionic/{p-0d0a6fb9.system.entry.js → p-933727f9.system.entry.js} +1 -1
- package/dist/ionic/p-9343a445.js +4 -0
- package/dist/ionic/{p-656516a2.entry.js → p-937a7e21.entry.js} +1 -1
- package/dist/ionic/{p-2c9abc61.entry.js → p-948e6c6a.entry.js} +1 -1
- package/dist/ionic/{p-56a8aa85.entry.js → p-95775830.entry.js} +1 -1
- package/dist/ionic/{p-9065e1ed.system.entry.js → p-98231c01.system.entry.js} +1 -1
- package/dist/ionic/{p-808c9efc.system.entry.js → p-985a7e17.system.entry.js} +1 -1
- package/dist/ionic/{p-703d60a2.entry.js → p-98ff6b32.entry.js} +1 -1
- package/dist/ionic/{p-28cb707b.system.entry.js → p-9b122e3c.system.entry.js} +1 -1
- package/dist/ionic/{p-b609d03b.entry.js → p-9b428d25.entry.js} +1 -1
- package/dist/ionic/{p-85632b54.entry.js → p-9df2c6fb.entry.js} +1 -1
- package/dist/ionic/{p-eb4ac14d.system.js → p-9f3008d4.system.js} +1 -1
- package/dist/ionic/{p-d17f0dca.system.entry.js → p-9f364443.system.entry.js} +1 -1
- package/dist/ionic/{p-50c24ade.system.entry.js → p-a090bce8.system.entry.js} +1 -1
- package/dist/ionic/{p-5b03d498.system.entry.js → p-a0eb506c.system.entry.js} +1 -1
- package/dist/ionic/{p-4452a8ac.system.js → p-a15ddedb.system.js} +1 -1
- package/dist/ionic/p-a3db8ee3.js +4 -0
- package/dist/ionic/{p-9393bfbe.system.entry.js → p-a4a2420e.system.entry.js} +1 -1
- package/dist/ionic/{p-d86d7845.system.js → p-a69b9fc5.system.js} +1 -1
- package/dist/ionic/{p-1a790eef.system.js → p-a88dec0d.system.js} +2 -2
- package/dist/ionic/{p-c15a77e2.entry.js → p-a8f2c254.entry.js} +1 -1
- package/dist/ionic/{p-1c2f74e4.system.entry.js → p-ab674093.system.entry.js} +1 -1
- package/dist/ionic/{p-647b0625.system.js → p-ada36597.system.js} +1 -1
- package/dist/ionic/{p-42a9bb35.entry.js → p-afecb188.entry.js} +1 -1
- package/dist/ionic/{p-5b867a40.entry.js → p-b1eb86fd.entry.js} +1 -1
- package/dist/ionic/{p-c6ff3239.system.js → p-b3c60433.system.js} +1 -1
- package/dist/ionic/{p-bb11d9fb.js → p-b51e4004.js} +1 -1
- package/dist/ionic/{p-8db44ad3.js → p-b6efeab8.js} +1 -1
- package/dist/ionic/{p-406f9aa1.entry.js → p-b9d7015f.entry.js} +1 -1
- package/dist/ionic/{p-200dfb8f.entry.js → p-bb0db172.entry.js} +1 -1
- package/dist/ionic/{p-9d4a8059.entry.js → p-bdad26e3.entry.js} +1 -1
- package/dist/ionic/{p-842bb3c8.system.entry.js → p-bdf2cb2e.system.entry.js} +1 -1
- package/dist/ionic/{p-b5639a4f.entry.js → p-c41ac815.entry.js} +1 -1
- package/dist/ionic/{p-f1d1c614.system.js → p-c4238c12.system.js} +1 -1
- package/dist/ionic/p-c4b53b16.system.entry.js +4 -0
- package/dist/ionic/{p-dcc9aaf1.system.entry.js → p-cac0e0b3.system.entry.js} +1 -1
- package/dist/ionic/p-cb13696c.js +4 -0
- package/dist/ionic/{p-ef144104.system.entry.js → p-cba1f9bc.system.entry.js} +1 -1
- package/dist/ionic/p-cdc83025.entry.js +4 -0
- package/dist/ionic/p-d1c5b60e.system.js +4 -0
- package/dist/ionic/{p-881d9e52.system.js → p-d22e2a38.system.js} +1 -1
- package/dist/ionic/{p-8154947f.system.entry.js → p-d6eaffb1.system.entry.js} +2 -2
- package/dist/ionic/{p-e25cd3c7.js → p-d743e981.js} +1 -1
- package/dist/ionic/{p-72b65035.entry.js → p-d7aa6b00.entry.js} +1 -1
- package/dist/ionic/p-d7dd8fb1.entry.js +4 -0
- package/dist/ionic/{p-c3f5dcf9.entry.js → p-de930745.entry.js} +1 -1
- package/dist/ionic/{p-9fe2050a.entry.js → p-e06057c9.entry.js} +1 -1
- package/dist/ionic/{p-4a465405.system.entry.js → p-e09d6392.system.entry.js} +2 -2
- package/dist/ionic/p-e3171ff3.entry.js +4 -0
- package/dist/ionic/{p-16f1ba65.system.entry.js → p-e4ee80be.system.entry.js} +1 -1
- package/dist/ionic/p-e4fde4fb.system.entry.js +4 -0
- package/dist/ionic/p-e6376b93.system.entry.js +4 -0
- package/dist/ionic/{p-faa5e2b9.entry.js → p-e76dae93.entry.js} +1 -1
- package/dist/ionic/p-e8d56122.js +4 -0
- package/dist/ionic/{p-6f3d8334.js → p-ecceeb90.js} +1 -1
- package/dist/ionic/{p-d7fef52e.system.entry.js → p-ed75fcfb.system.entry.js} +1 -1
- package/dist/ionic/{p-acc78e36.entry.js → p-eef505e8.entry.js} +1 -1
- package/dist/ionic/{p-a33837c9.entry.js → p-f1060cd8.entry.js} +1 -1
- package/dist/ionic/{p-9ce56f65.system.entry.js → p-f1120724.system.entry.js} +1 -1
- package/dist/ionic/{p-0a499487.js → p-f1c4dcd4.js} +1 -1
- package/dist/ionic/{p-478dfa8c.system.entry.js → p-f3102647.system.entry.js} +1 -1
- package/dist/ionic/{p-13052792.entry.js → p-f63c2d12.entry.js} +1 -1
- package/dist/ionic/{p-5976e3b7.system.entry.js → p-fbd41a7e.system.entry.js} +1 -1
- package/dist/ionic/{p-712b57f9.system.entry.js → p-fca6ef5f.system.entry.js} +1 -1
- package/dist/ionic/{p-bed40aa8.entry.js → p-fceec762.entry.js} +1 -1
- package/dist/types/components/checkbox/checkbox.d.ts +25 -0
- package/dist/types/components/modal/animations/sheet.d.ts +1 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/modal-interface.d.ts +1 -0
- package/dist/types/components/modal/modal.d.ts +11 -0
- package/dist/types/components/segment-button/segment-button.d.ts +1 -2
- package/dist/types/components/select/select.d.ts +6 -0
- package/dist/types/components/toggle/toggle.d.ts +6 -0
- package/dist/types/components/toolbar/toolbar.d.ts +4 -0
- package/dist/types/components.d.ts +48 -0
- package/dist/types/utils/config.d.ts +9 -0
- package/dist/types/utils/helpers.d.ts +0 -1
- package/dist/types/utils/logging/index.d.ts +13 -1
- package/dist/types/utils/test/platform.utils.d.ts +1 -1
- package/hydrate/index.js +338 -105
- package/hydrate/index.mjs +338 -105
- package/package.json +1 -1
- package/dist/esm-es5/app-globals-c10a1137.js +0 -4
- package/dist/esm-es5/index-9b0d46f4.js +0 -4
- package/dist/esm-es5/input-shims-0e65111b.js +0 -4
- package/dist/esm-es5/md.transition-e4034e0a.js +0 -4
- package/dist/esm-es5/status-tap-163e8128.js +0 -4
- package/dist/ionic/p-0440660b.js +0 -4
- package/dist/ionic/p-06fee233.js +0 -4
- package/dist/ionic/p-075a94bd.js +0 -4
- package/dist/ionic/p-0ee3b5a2.system.js +0 -4
- package/dist/ionic/p-135e5731.js +0 -4
- package/dist/ionic/p-1f405274.js +0 -4
- package/dist/ionic/p-2c9eb774.system.js +0 -4
- package/dist/ionic/p-30ec5574.entry.js +0 -4
- package/dist/ionic/p-3667bc71.system.js +0 -4
- package/dist/ionic/p-3c7371c4.system.entry.js +0 -4
- package/dist/ionic/p-47e6c342.js +0 -4
- package/dist/ionic/p-4e8946f7.js +0 -4
- package/dist/ionic/p-51f13ac7.entry.js +0 -4
- package/dist/ionic/p-6167f80e.entry.js +0 -4
- package/dist/ionic/p-627c1f42.entry.js +0 -4
- package/dist/ionic/p-68dc53a5.js +0 -4
- package/dist/ionic/p-699c97a3.entry.js +0 -4
- package/dist/ionic/p-6bc9998f.entry.js +0 -4
- package/dist/ionic/p-75a0fffe.system.entry.js +0 -4
- package/dist/ionic/p-af09741c.entry.js +0 -4
- package/dist/ionic/p-c42a4dad.system.entry.js +0 -4
- package/dist/ionic/p-cc964e4f.system.js +0 -4
- package/dist/ionic/p-ddc058a7.system.entry.js +0 -4
- package/dist/ionic/p-e3357909.entry.js +0 -4
- package/dist/ionic/p-f4f255cb.system.js +0 -4
- package/dist/ionic/p-ff4b7e40.system.js +0 -4
|
@@ -13,10 +13,15 @@ import { getIonMode } from "../../global/ionic-global";
|
|
|
13
13
|
* @part container - The container for the checkbox mark.
|
|
14
14
|
* @part label - The label text describing the checkbox.
|
|
15
15
|
* @part mark - The checkmark used to indicate the checked state.
|
|
16
|
+
* @part supporting-text - Supporting text displayed beneath the checkbox label.
|
|
17
|
+
* @part helper-text - Supporting text displayed beneath the checkbox label when the checkbox is valid.
|
|
18
|
+
* @part error-text - Supporting text displayed beneath the checkbox label when the checkbox is invalid and touched.
|
|
16
19
|
*/
|
|
17
20
|
export class Checkbox {
|
|
18
21
|
constructor() {
|
|
19
22
|
this.inputId = `ion-cb-${checkboxIds++}`;
|
|
23
|
+
this.helperTextId = `${this.inputId}-helper-text`;
|
|
24
|
+
this.errorTextId = `${this.inputId}-error-text`;
|
|
20
25
|
this.inheritedAttributes = {};
|
|
21
26
|
/**
|
|
22
27
|
* Sets the checked property and emits
|
|
@@ -54,10 +59,13 @@ export class Checkbox {
|
|
|
54
59
|
this.checked = false;
|
|
55
60
|
this.indeterminate = false;
|
|
56
61
|
this.disabled = false;
|
|
62
|
+
this.errorText = undefined;
|
|
63
|
+
this.helperText = undefined;
|
|
57
64
|
this.value = 'on';
|
|
58
65
|
this.labelPlacement = 'start';
|
|
59
66
|
this.justify = undefined;
|
|
60
67
|
this.alignment = undefined;
|
|
68
|
+
this.required = false;
|
|
61
69
|
}
|
|
62
70
|
componentWillLoad() {
|
|
63
71
|
this.inheritedAttributes = Object.assign({}, inheritAriaAttributes(this.el));
|
|
@@ -68,12 +76,38 @@ export class Checkbox {
|
|
|
68
76
|
this.focusEl.focus();
|
|
69
77
|
}
|
|
70
78
|
}
|
|
79
|
+
getHintTextID() {
|
|
80
|
+
const { el, helperText, errorText, helperTextId, errorTextId } = this;
|
|
81
|
+
if (el.classList.contains('ion-touched') && el.classList.contains('ion-invalid') && errorText) {
|
|
82
|
+
return errorTextId;
|
|
83
|
+
}
|
|
84
|
+
if (helperText) {
|
|
85
|
+
return helperTextId;
|
|
86
|
+
}
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Responsible for rendering helper text and error text.
|
|
91
|
+
* This element should only be rendered if hint text is set.
|
|
92
|
+
*/
|
|
93
|
+
renderHintText() {
|
|
94
|
+
const { helperText, errorText, helperTextId, errorTextId } = this;
|
|
95
|
+
/**
|
|
96
|
+
* undefined and empty string values should
|
|
97
|
+
* be treated as not having helper/error text.
|
|
98
|
+
*/
|
|
99
|
+
const hasHintText = !!helperText || !!errorText;
|
|
100
|
+
if (!hasHintText) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
return (h("div", { class: "checkbox-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)));
|
|
104
|
+
}
|
|
71
105
|
render() {
|
|
72
|
-
const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, } = this;
|
|
106
|
+
const { color, checked, disabled, el, getSVGPath, indeterminate, inheritedAttributes, inputId, justify, labelPlacement, name, value, alignment, required, } = this;
|
|
73
107
|
const mode = getIonMode(this);
|
|
74
108
|
const path = getSVGPath(mode, indeterminate);
|
|
75
109
|
renderHiddenInput(true, el, name, checked ? value : '', disabled);
|
|
76
|
-
return (h(Host, { key: '
|
|
110
|
+
return (h(Host, { key: '7ac31df89b07c781ddcd30a6a8c109494d0c500a', "aria-checked": indeterminate ? 'mixed' : `${checked}`, "aria-describedby": this.getHintTextID(), "aria-invalid": this.getHintTextID() === this.errorTextId, class: createColorClasses(color, {
|
|
77
111
|
[mode]: true,
|
|
78
112
|
'in-item': hostContext('ion-item', el),
|
|
79
113
|
'checkbox-checked': checked,
|
|
@@ -83,10 +117,10 @@ export class Checkbox {
|
|
|
83
117
|
[`checkbox-justify-${justify}`]: justify !== undefined,
|
|
84
118
|
[`checkbox-alignment-${alignment}`]: alignment !== undefined,
|
|
85
119
|
[`checkbox-label-placement-${labelPlacement}`]: true,
|
|
86
|
-
}), onClick: this.onClick }, h("label", { key: '
|
|
120
|
+
}), onClick: this.onClick }, h("label", { key: '674e923fe1ec83a33c31d67b0d414d61ba8f9e4b', class: "checkbox-wrapper" }, h("input", Object.assign({ key: 'c4866e392fbdf3b76edcd1507cb67f40a213a4e7', type: "checkbox", checked: checked ? true : undefined, disabled: disabled, id: inputId, onChange: this.toggleChecked, onFocus: () => this.onFocus(), onBlur: () => this.onBlur(), ref: (focusEl) => (this.focusEl = focusEl), required: required }, inheritedAttributes)), h("div", { key: '79cb96e5963b9331a760438ec8cc9e456215de91', class: {
|
|
87
121
|
'label-text-wrapper': true,
|
|
88
122
|
'label-text-wrapper-hidden': el.textContent === '',
|
|
89
|
-
}, part: "label" }, h("slot", { key: '
|
|
123
|
+
}, part: "label" }, h("slot", { key: '896cb26292c9a4a6c105afb39611472b93bf5e90' }), this.renderHintText()), h("div", { key: '52cd22e79fd5db30b45d7b092aa5af3944392336', class: "native-wrapper" }, h("svg", { key: '18d862ab7cc32055eaf200eea560ff1b2b6cbde0', class: "checkbox-icon", viewBox: "0 0 24 24", part: "container" }, path)))));
|
|
90
124
|
}
|
|
91
125
|
getSVGPath(mode, indeterminate) {
|
|
92
126
|
let path = indeterminate ? (h("path", { d: "M6 12L18 12", part: "mark" })) : (h("path", { d: "M5.9,12.5l3.8,3.8l8.8-8.8", part: "mark" }));
|
|
@@ -206,6 +240,40 @@ export class Checkbox {
|
|
|
206
240
|
"reflect": false,
|
|
207
241
|
"defaultValue": "false"
|
|
208
242
|
},
|
|
243
|
+
"errorText": {
|
|
244
|
+
"type": "string",
|
|
245
|
+
"mutable": false,
|
|
246
|
+
"complexType": {
|
|
247
|
+
"original": "string",
|
|
248
|
+
"resolved": "string | undefined",
|
|
249
|
+
"references": {}
|
|
250
|
+
},
|
|
251
|
+
"required": false,
|
|
252
|
+
"optional": true,
|
|
253
|
+
"docs": {
|
|
254
|
+
"tags": [],
|
|
255
|
+
"text": "Text that is placed under the checkbox label and displayed when an error is detected."
|
|
256
|
+
},
|
|
257
|
+
"attribute": "error-text",
|
|
258
|
+
"reflect": false
|
|
259
|
+
},
|
|
260
|
+
"helperText": {
|
|
261
|
+
"type": "string",
|
|
262
|
+
"mutable": false,
|
|
263
|
+
"complexType": {
|
|
264
|
+
"original": "string",
|
|
265
|
+
"resolved": "string | undefined",
|
|
266
|
+
"references": {}
|
|
267
|
+
},
|
|
268
|
+
"required": false,
|
|
269
|
+
"optional": true,
|
|
270
|
+
"docs": {
|
|
271
|
+
"tags": [],
|
|
272
|
+
"text": "Text that is placed under the checkbox label and displayed when no error is detected."
|
|
273
|
+
},
|
|
274
|
+
"attribute": "helper-text",
|
|
275
|
+
"reflect": false
|
|
276
|
+
},
|
|
209
277
|
"value": {
|
|
210
278
|
"type": "any",
|
|
211
279
|
"mutable": false,
|
|
@@ -275,6 +343,24 @@ export class Checkbox {
|
|
|
275
343
|
},
|
|
276
344
|
"attribute": "alignment",
|
|
277
345
|
"reflect": false
|
|
346
|
+
},
|
|
347
|
+
"required": {
|
|
348
|
+
"type": "boolean",
|
|
349
|
+
"mutable": false,
|
|
350
|
+
"complexType": {
|
|
351
|
+
"original": "boolean",
|
|
352
|
+
"resolved": "boolean",
|
|
353
|
+
"references": {}
|
|
354
|
+
},
|
|
355
|
+
"required": false,
|
|
356
|
+
"optional": false,
|
|
357
|
+
"docs": {
|
|
358
|
+
"tags": [],
|
|
359
|
+
"text": "If true, screen readers will announce it as a required field. This property\nworks only for accessibility purposes, it will not prevent the form from\nsubmitting if the value is invalid."
|
|
360
|
+
},
|
|
361
|
+
"attribute": "required",
|
|
362
|
+
"reflect": false,
|
|
363
|
+
"defaultValue": "false"
|
|
278
364
|
}
|
|
279
365
|
};
|
|
280
366
|
}
|
|
@@ -189,32 +189,39 @@ input {
|
|
|
189
189
|
opacity: 0;
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
|
|
192
|
+
.checkbox-bottom {
|
|
193
|
+
padding-top: 4px;
|
|
194
|
+
display: flex;
|
|
193
195
|
justify-content: space-between;
|
|
196
|
+
font-size: 0.75rem;
|
|
197
|
+
white-space: normal;
|
|
194
198
|
}
|
|
195
199
|
|
|
196
|
-
:host(.checkbox-
|
|
197
|
-
|
|
200
|
+
:host(.checkbox-label-placement-stacked) .checkbox-bottom {
|
|
201
|
+
font-size: 1rem;
|
|
198
202
|
}
|
|
199
203
|
|
|
200
|
-
|
|
201
|
-
|
|
204
|
+
/**
|
|
205
|
+
* Error text should only be shown when .ion-invalid is
|
|
206
|
+
* present on the checkbox. Otherwise the helper text should
|
|
207
|
+
* be shown.
|
|
208
|
+
*/
|
|
209
|
+
.checkbox-bottom .error-text {
|
|
210
|
+
display: none;
|
|
211
|
+
color: var(--ion-color-danger, #c5000f);
|
|
202
212
|
}
|
|
203
213
|
|
|
204
|
-
|
|
205
|
-
|
|
214
|
+
.checkbox-bottom .helper-text {
|
|
215
|
+
display: block;
|
|
216
|
+
color: var(--ion-color-step-700, var(--ion-text-color-step-300, #4d4d4d));
|
|
206
217
|
}
|
|
207
218
|
|
|
208
|
-
:host(.
|
|
209
|
-
|
|
219
|
+
:host(.ion-touched.ion-invalid) .checkbox-bottom .error-text {
|
|
220
|
+
display: block;
|
|
210
221
|
}
|
|
211
222
|
|
|
212
|
-
:host(.checkbox-
|
|
213
|
-
:
|
|
214
|
-
:host(.checkbox-justify-end),
|
|
215
|
-
:host(.checkbox-alignment-start),
|
|
216
|
-
:host(.checkbox-alignment-center) {
|
|
217
|
-
display: block;
|
|
223
|
+
:host(.ion-touched.ion-invalid) .checkbox-bottom .helper-text {
|
|
224
|
+
display: none;
|
|
218
225
|
}
|
|
219
226
|
|
|
220
227
|
/**
|
|
@@ -243,6 +250,7 @@ input {
|
|
|
243
250
|
*/
|
|
244
251
|
:host(.checkbox-label-placement-end) .checkbox-wrapper {
|
|
245
252
|
flex-direction: row-reverse;
|
|
253
|
+
justify-content: start;
|
|
246
254
|
}
|
|
247
255
|
|
|
248
256
|
/**
|
|
@@ -285,6 +293,7 @@ input {
|
|
|
285
293
|
*/
|
|
286
294
|
:host(.checkbox-label-placement-stacked) .checkbox-wrapper {
|
|
287
295
|
flex-direction: column;
|
|
296
|
+
text-align: center;
|
|
288
297
|
}
|
|
289
298
|
|
|
290
299
|
:host(.checkbox-label-placement-stacked) .label-text-wrapper {
|
|
@@ -330,6 +339,34 @@ input {
|
|
|
330
339
|
}
|
|
331
340
|
}
|
|
332
341
|
|
|
342
|
+
:host(.checkbox-justify-space-between) .checkbox-wrapper {
|
|
343
|
+
justify-content: space-between;
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
:host(.checkbox-justify-start) .checkbox-wrapper {
|
|
347
|
+
justify-content: start;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
:host(.checkbox-justify-end) .checkbox-wrapper {
|
|
351
|
+
justify-content: end;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
:host(.checkbox-alignment-start) .checkbox-wrapper {
|
|
355
|
+
align-items: start;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
:host(.checkbox-alignment-center) .checkbox-wrapper {
|
|
359
|
+
align-items: center;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
:host(.checkbox-justify-space-between),
|
|
363
|
+
:host(.checkbox-justify-start),
|
|
364
|
+
:host(.checkbox-justify-end),
|
|
365
|
+
:host(.checkbox-alignment-start),
|
|
366
|
+
:host(.checkbox-alignment-center) {
|
|
367
|
+
display: block;
|
|
368
|
+
}
|
|
369
|
+
|
|
333
370
|
:host(.checkbox-checked) .checkbox-icon,
|
|
334
371
|
:host(.checkbox-indeterminate) .checkbox-icon {
|
|
335
372
|
border-color: var(--border-color-checked);
|
|
@@ -13,22 +13,68 @@ const createEnterAnimation = () => {
|
|
|
13
13
|
})
|
|
14
14
|
.afterClearStyles(['pointer-events']);
|
|
15
15
|
const wrapperAnimation = createAnimation().fromTo('transform', 'translateY(100vh)', 'translateY(0vh)');
|
|
16
|
-
return { backdropAnimation, wrapperAnimation };
|
|
16
|
+
return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
|
|
17
17
|
};
|
|
18
18
|
/**
|
|
19
19
|
* iOS Modal Enter Animation for the Card presentation style
|
|
20
20
|
*/
|
|
21
21
|
export const iosEnterAnimation = (baseEl, opts) => {
|
|
22
|
-
const { presentingEl, currentBreakpoint } = opts;
|
|
22
|
+
const { presentingEl, currentBreakpoint, expandToScroll } = opts;
|
|
23
23
|
const root = getElementRoot(baseEl);
|
|
24
|
-
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
|
|
24
|
+
const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
|
|
25
25
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
26
26
|
wrapperAnimation.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow')).beforeStyles({ opacity: 1 });
|
|
27
|
+
// The content animation is only added if scrolling is enabled for
|
|
28
|
+
// all the breakpoints.
|
|
29
|
+
!expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
|
|
27
30
|
const baseAnimation = createAnimation('entering-base')
|
|
28
31
|
.addElement(baseEl)
|
|
29
32
|
.easing('cubic-bezier(0.32,0.72,0,1)')
|
|
30
33
|
.duration(500)
|
|
31
|
-
.addAnimation(wrapperAnimation)
|
|
34
|
+
.addAnimation([wrapperAnimation])
|
|
35
|
+
.beforeAddWrite(() => {
|
|
36
|
+
if (expandToScroll) {
|
|
37
|
+
// Scroll can only be done when the modal is fully expanded.
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* There are some browsers that causes flickering when
|
|
42
|
+
* dragging the content when scroll is enabled at every
|
|
43
|
+
* breakpoint. This is due to the wrapper element being
|
|
44
|
+
* transformed off the screen and having a snap animation.
|
|
45
|
+
*
|
|
46
|
+
* A workaround is to clone the footer element and append
|
|
47
|
+
* it outside of the wrapper element. This way, the footer
|
|
48
|
+
* is still visible and the drag can be done without
|
|
49
|
+
* flickering. The original footer is hidden until the modal
|
|
50
|
+
* is dismissed. This maintains the animation of the footer
|
|
51
|
+
* when the modal is dismissed.
|
|
52
|
+
*
|
|
53
|
+
* The workaround needs to be done before the animation starts
|
|
54
|
+
* so there are no flickering issues.
|
|
55
|
+
*/
|
|
56
|
+
const ionFooter = baseEl.querySelector('ion-footer');
|
|
57
|
+
/**
|
|
58
|
+
* This check is needed to prevent more than one footer
|
|
59
|
+
* from being appended to the shadow root.
|
|
60
|
+
* Otherwise, iOS and MD enter animations would append
|
|
61
|
+
* the footer twice.
|
|
62
|
+
*/
|
|
63
|
+
const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
|
|
64
|
+
if (ionFooter && !ionFooterAlreadyAppended) {
|
|
65
|
+
const footerHeight = ionFooter.clientHeight;
|
|
66
|
+
const clonedFooter = ionFooter.cloneNode(true);
|
|
67
|
+
baseEl.shadowRoot.appendChild(clonedFooter);
|
|
68
|
+
ionFooter.style.setProperty('display', 'none');
|
|
69
|
+
ionFooter.setAttribute('aria-hidden', 'true');
|
|
70
|
+
// Padding is added to prevent some content from being hidden.
|
|
71
|
+
const page = baseEl.querySelector('.ion-page');
|
|
72
|
+
page.style.setProperty('padding-bottom', `${footerHeight}px`);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
if (contentAnimation) {
|
|
76
|
+
baseAnimation.addAnimation(contentAnimation);
|
|
77
|
+
}
|
|
32
78
|
if (presentingEl) {
|
|
33
79
|
const isMobile = window.innerWidth < 768;
|
|
34
80
|
const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
|
|
@@ -14,7 +14,7 @@ const createLeaveAnimation = () => {
|
|
|
14
14
|
* iOS Modal Leave Animation
|
|
15
15
|
*/
|
|
16
16
|
export const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
|
|
17
|
-
const { presentingEl, currentBreakpoint } = opts;
|
|
17
|
+
const { presentingEl, currentBreakpoint, expandToScroll } = opts;
|
|
18
18
|
const root = getElementRoot(baseEl);
|
|
19
19
|
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
|
|
20
20
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
@@ -23,7 +23,29 @@ export const iosLeaveAnimation = (baseEl, opts, duration = 500) => {
|
|
|
23
23
|
.addElement(baseEl)
|
|
24
24
|
.easing('cubic-bezier(0.32,0.72,0,1)')
|
|
25
25
|
.duration(duration)
|
|
26
|
-
.addAnimation(wrapperAnimation)
|
|
26
|
+
.addAnimation(wrapperAnimation)
|
|
27
|
+
.beforeAddWrite(() => {
|
|
28
|
+
if (expandToScroll) {
|
|
29
|
+
// Scroll can only be done when the modal is fully expanded.
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* If expandToScroll is disabled, we need to swap
|
|
34
|
+
* the visibility to the original, so the footer
|
|
35
|
+
* dismisses with the modal and doesn't stay
|
|
36
|
+
* until the modal is removed from the DOM.
|
|
37
|
+
*/
|
|
38
|
+
const ionFooter = baseEl.querySelector('ion-footer');
|
|
39
|
+
if (ionFooter) {
|
|
40
|
+
const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
|
|
41
|
+
ionFooter.style.removeProperty('display');
|
|
42
|
+
ionFooter.removeAttribute('aria-hidden');
|
|
43
|
+
clonedFooter.style.setProperty('display', 'none');
|
|
44
|
+
clonedFooter.setAttribute('aria-hidden', 'true');
|
|
45
|
+
const page = baseEl.querySelector('.ion-page');
|
|
46
|
+
page.style.removeProperty('padding-bottom');
|
|
47
|
+
}
|
|
48
|
+
});
|
|
27
49
|
if (presentingEl) {
|
|
28
50
|
const isMobile = window.innerWidth < 768;
|
|
29
51
|
const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
|
|
@@ -15,20 +15,67 @@ const createEnterAnimation = () => {
|
|
|
15
15
|
{ offset: 0, opacity: 0.01, transform: 'translateY(40px)' },
|
|
16
16
|
{ offset: 1, opacity: 1, transform: `translateY(0px)` },
|
|
17
17
|
]);
|
|
18
|
-
return { backdropAnimation, wrapperAnimation };
|
|
18
|
+
return { backdropAnimation, wrapperAnimation, contentAnimation: undefined };
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
21
21
|
* Md Modal Enter Animation
|
|
22
22
|
*/
|
|
23
23
|
export const mdEnterAnimation = (baseEl, opts) => {
|
|
24
|
-
const { currentBreakpoint } = opts;
|
|
24
|
+
const { currentBreakpoint, expandToScroll } = opts;
|
|
25
25
|
const root = getElementRoot(baseEl);
|
|
26
|
-
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
|
|
26
|
+
const { wrapperAnimation, backdropAnimation, contentAnimation } = currentBreakpoint !== undefined ? createSheetEnterAnimation(opts) : createEnterAnimation();
|
|
27
27
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
28
28
|
wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
|
|
29
|
-
|
|
29
|
+
// The content animation is only added if scrolling is enabled for
|
|
30
|
+
// all the breakpoints.
|
|
31
|
+
expandToScroll && (contentAnimation === null || contentAnimation === void 0 ? void 0 : contentAnimation.addElement(baseEl.querySelector('.ion-page')));
|
|
32
|
+
const baseAnimation = createAnimation()
|
|
30
33
|
.addElement(baseEl)
|
|
31
34
|
.easing('cubic-bezier(0.36,0.66,0.04,1)')
|
|
32
35
|
.duration(280)
|
|
33
|
-
.addAnimation([backdropAnimation, wrapperAnimation])
|
|
36
|
+
.addAnimation([backdropAnimation, wrapperAnimation])
|
|
37
|
+
.beforeAddWrite(() => {
|
|
38
|
+
if (expandToScroll) {
|
|
39
|
+
// Scroll can only be done when the modal is fully expanded.
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* There are some browsers that causes flickering when
|
|
44
|
+
* dragging the content when scroll is enabled at every
|
|
45
|
+
* breakpoint. This is due to the wrapper element being
|
|
46
|
+
* transformed off the screen and having a snap animation.
|
|
47
|
+
*
|
|
48
|
+
* A workaround is to clone the footer element and append
|
|
49
|
+
* it outside of the wrapper element. This way, the footer
|
|
50
|
+
* is still visible and the drag can be done without
|
|
51
|
+
* flickering. The original footer is hidden until the modal
|
|
52
|
+
* is dismissed. This maintains the animation of the footer
|
|
53
|
+
* when the modal is dismissed.
|
|
54
|
+
*
|
|
55
|
+
* The workaround needs to be done before the animation starts
|
|
56
|
+
* so there are no flickering issues.
|
|
57
|
+
*/
|
|
58
|
+
const ionFooter = baseEl.querySelector('ion-footer');
|
|
59
|
+
/**
|
|
60
|
+
* This check is needed to prevent more than one footer
|
|
61
|
+
* from being appended to the shadow root.
|
|
62
|
+
* Otherwise, iOS and MD enter animations would append
|
|
63
|
+
* the footer twice.
|
|
64
|
+
*/
|
|
65
|
+
const ionFooterAlreadyAppended = baseEl.shadowRoot.querySelector('ion-footer');
|
|
66
|
+
if (ionFooter && !ionFooterAlreadyAppended) {
|
|
67
|
+
const footerHeight = ionFooter.clientHeight;
|
|
68
|
+
const clonedFooter = ionFooter.cloneNode(true);
|
|
69
|
+
baseEl.shadowRoot.appendChild(clonedFooter);
|
|
70
|
+
ionFooter.style.setProperty('display', 'none');
|
|
71
|
+
ionFooter.setAttribute('aria-hidden', 'true');
|
|
72
|
+
// Padding is added to prevent some content from being hidden.
|
|
73
|
+
const page = baseEl.querySelector('.ion-page');
|
|
74
|
+
page.style.setProperty('padding-bottom', `${footerHeight}px`);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
if (contentAnimation) {
|
|
78
|
+
baseAnimation.addAnimation(contentAnimation);
|
|
79
|
+
}
|
|
80
|
+
return baseAnimation;
|
|
34
81
|
};
|
|
@@ -16,13 +16,36 @@ const createLeaveAnimation = () => {
|
|
|
16
16
|
* Md Modal Leave Animation
|
|
17
17
|
*/
|
|
18
18
|
export const mdLeaveAnimation = (baseEl, opts) => {
|
|
19
|
-
const { currentBreakpoint } = opts;
|
|
19
|
+
const { currentBreakpoint, expandToScroll } = opts;
|
|
20
20
|
const root = getElementRoot(baseEl);
|
|
21
21
|
const { wrapperAnimation, backdropAnimation } = currentBreakpoint !== undefined ? createSheetLeaveAnimation(opts) : createLeaveAnimation();
|
|
22
22
|
backdropAnimation.addElement(root.querySelector('ion-backdrop'));
|
|
23
23
|
wrapperAnimation.addElement(root.querySelector('.modal-wrapper'));
|
|
24
|
-
|
|
24
|
+
const baseAnimation = createAnimation()
|
|
25
25
|
.easing('cubic-bezier(0.47,0,0.745,0.715)')
|
|
26
26
|
.duration(200)
|
|
27
|
-
.addAnimation([backdropAnimation, wrapperAnimation])
|
|
27
|
+
.addAnimation([backdropAnimation, wrapperAnimation])
|
|
28
|
+
.beforeAddWrite(() => {
|
|
29
|
+
if (expandToScroll) {
|
|
30
|
+
// Scroll can only be done when the modal is fully expanded.
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* If expandToScroll is disabled, we need to swap
|
|
35
|
+
* the visibility to the original, so the footer
|
|
36
|
+
* dismisses with the modal and doesn't stay
|
|
37
|
+
* until the modal is removed from the DOM.
|
|
38
|
+
*/
|
|
39
|
+
const ionFooter = baseEl.querySelector('ion-footer');
|
|
40
|
+
if (ionFooter) {
|
|
41
|
+
const clonedFooter = baseEl.shadowRoot.querySelector('ion-footer');
|
|
42
|
+
ionFooter.style.removeProperty('display');
|
|
43
|
+
ionFooter.removeAttribute('aria-hidden');
|
|
44
|
+
clonedFooter.style.setProperty('display', 'none');
|
|
45
|
+
clonedFooter.setAttribute('aria-hidden', 'true');
|
|
46
|
+
const page = baseEl.querySelector('.ion-page');
|
|
47
|
+
page.style.removeProperty('padding-bottom');
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return baseAnimation;
|
|
28
51
|
};
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
5
|
import { getBackdropValueForSheet } from "../utils";
|
|
6
6
|
export const createSheetEnterAnimation = (opts) => {
|
|
7
|
-
const { currentBreakpoint, backdropBreakpoint } = opts;
|
|
7
|
+
const { currentBreakpoint, backdropBreakpoint, expandToScroll } = opts;
|
|
8
8
|
/**
|
|
9
9
|
* If the backdropBreakpoint is undefined, then the backdrop
|
|
10
10
|
* should always fade in. If the backdropBreakpoint came before the
|
|
@@ -24,7 +24,16 @@ export const createSheetEnterAnimation = (opts) => {
|
|
|
24
24
|
{ offset: 0, opacity: 1, transform: 'translateY(100%)' },
|
|
25
25
|
{ offset: 1, opacity: 1, transform: `translateY(${100 - currentBreakpoint * 100}%)` },
|
|
26
26
|
]);
|
|
27
|
-
|
|
27
|
+
/**
|
|
28
|
+
* This allows the content to be scrollable at any breakpoint.
|
|
29
|
+
*/
|
|
30
|
+
const contentAnimation = !expandToScroll
|
|
31
|
+
? createAnimation('contentAnimation').keyframes([
|
|
32
|
+
{ offset: 0, opacity: 1, maxHeight: `${(1 - currentBreakpoint) * 100}%` },
|
|
33
|
+
{ offset: 1, opacity: 1, maxHeight: `${currentBreakpoint * 100}%` },
|
|
34
|
+
])
|
|
35
|
+
: undefined;
|
|
36
|
+
return { wrapperAnimation, backdropAnimation, contentAnimation };
|
|
28
37
|
};
|
|
29
38
|
export const createSheetLeaveAnimation = (opts) => {
|
|
30
39
|
const { currentBreakpoint, backdropBreakpoint } = opts;
|