@ionic/core 8.7.18-dev.11769790854.11895f8f → 8.7.18-dev.11770238549.14c2a85f
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/ion-item-divider.js +2 -2
- package/components/ion-item-group.js +1 -1
- package/components/ion-item-option.js +2 -2
- package/components/ion-item-options.js +1 -1
- package/components/ion-item-sliding.js +1 -1
- package/components/ion-loading.js +2 -2
- package/components/ion-menu-button.js +2 -2
- package/components/ion-menu-toggle.js +2 -2
- package/components/ion-menu.js +2 -2
- package/components/ion-nav-link.js +1 -1
- package/components/ion-nav.js +1 -1
- package/components/ion-note.js +2 -2
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-progress-bar.js +1 -1
- package/components/ion-range.js +3 -3
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-refresher.js +1 -1
- package/components/ion-reorder-group.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-router-link.js +2 -2
- package/components/ion-router-outlet.js +1 -1
- package/components/ion-row.js +1 -1
- package/components/ion-searchbar.js +4 -4
- package/components/ion-segment-button.js +2 -2
- package/components/ion-segment-content.js +1 -1
- package/components/ion-segment-view.js +2 -2
- package/components/ion-segment.js +2 -2
- package/components/ion-select-option.js +1 -1
- package/components/ion-select.js +2 -2
- package/components/ion-skeleton-text.js +2 -2
- package/components/ion-split-pane.js +2 -2
- package/components/ion-tab-bar.js +2 -2
- package/components/ion-tab-button.js +2 -2
- package/components/ion-tab.js +2 -2
- package/components/ion-tabs.js +1 -1
- package/components/ion-text.js +2 -2
- package/components/ion-textarea.js +2 -2
- package/components/ion-thumbnail.js +1 -1
- package/components/ion-toast.js +2 -2
- package/components/ion-toggle.js +3 -3
- package/components/label.js +2 -2
- package/components/list-header.js +2 -2
- package/components/modal.js +12 -220
- package/components/picker-column-option.js +2 -2
- package/components/picker-column2.js +2 -2
- package/components/popover.js +13 -85
- package/components/radio-group.js +1 -1
- package/components/radio.js +3 -3
- package/components/ripple-effect.js +1 -1
- package/components/select-modal.js +1 -1
- package/components/select-popover.js +1 -1
- package/components/spinner.js +1 -1
- package/components/title.js +2 -2
- package/components/toolbar.js +2 -2
- package/dist/cjs/ion-app_8.cjs.entry.js +5 -5
- package/dist/cjs/ion-avatar_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-col_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item-option_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-item_8.cjs.entry.js +11 -11
- package/dist/cjs/ion-loading.cjs.entry.js +2 -2
- package/dist/cjs/ion-menu_3.cjs.entry.js +6 -6
- package/dist/cjs/ion-modal.cjs.entry.js +12 -220
- package/dist/cjs/ion-nav_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-picker-column-option.cjs.entry.js +2 -2
- package/dist/cjs/ion-popover.cjs.entry.js +13 -85
- package/dist/cjs/ion-progress-bar.cjs.entry.js +1 -1
- package/dist/cjs/ion-radio_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-range.cjs.entry.js +3 -3
- package/dist/cjs/ion-refresher_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-reorder_2.cjs.entry.js +2 -2
- package/dist/cjs/ion-ripple-effect.cjs.entry.js +1 -1
- package/dist/cjs/ion-route_4.cjs.entry.js +2 -2
- package/dist/cjs/ion-searchbar.cjs.entry.js +4 -4
- package/dist/cjs/ion-segment-content.cjs.entry.js +1 -1
- package/dist/cjs/ion-segment-view.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-spinner.cjs.entry.js +1 -1
- package/dist/cjs/ion-split-pane.cjs.entry.js +2 -2
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +4 -4
- package/dist/cjs/ion-tab_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-text.cjs.entry.js +2 -2
- package/dist/cjs/ion-textarea.cjs.entry.js +2 -2
- package/dist/cjs/ion-toast.cjs.entry.js +2 -2
- package/dist/cjs/ion-toggle.cjs.entry.js +3 -3
- package/dist/collection/components/item-divider/item-divider.js +2 -2
- package/dist/collection/components/item-group/item-group.js +1 -1
- package/dist/collection/components/item-option/item-option.js +2 -2
- package/dist/collection/components/item-options/item-options.js +1 -1
- package/dist/collection/components/item-sliding/item-sliding.js +1 -1
- package/dist/collection/components/label/label.js +2 -2
- package/dist/collection/components/list-header/list-header.js +2 -2
- package/dist/collection/components/loading/loading.js +2 -2
- package/dist/collection/components/menu/menu.js +2 -2
- package/dist/collection/components/menu-button/menu-button.js +2 -2
- package/dist/collection/components/menu-toggle/menu-toggle.js +2 -2
- package/dist/collection/components/modal/gestures/sheet.js +1 -3
- package/dist/collection/components/modal/gestures/swipe-to-close.js +1 -3
- package/dist/collection/components/modal/modal.ios.css +4 -0
- package/dist/collection/components/modal/modal.js +7 -215
- package/dist/collection/components/modal/modal.md.css +4 -0
- package/dist/collection/components/nav/nav.js +1 -1
- package/dist/collection/components/nav-link/nav-link.js +1 -1
- package/dist/collection/components/note/note.js +2 -2
- package/dist/collection/components/picker-column-option/picker-column-option.js +2 -2
- package/dist/collection/components/picker-legacy/picker.js +2 -2
- package/dist/collection/components/picker-legacy-column/picker-column.js +2 -2
- package/dist/collection/components/popover/animations/ios.enter.js +5 -21
- package/dist/collection/components/popover/animations/md.enter.js +5 -30
- package/dist/collection/components/popover/popover.js +2 -2
- package/dist/collection/components/popover/utils.js +1 -32
- package/dist/collection/components/progress-bar/progress-bar.js +1 -1
- package/dist/collection/components/radio/radio.js +3 -3
- package/dist/collection/components/radio-group/radio-group.js +1 -1
- package/dist/collection/components/range/range.js +3 -3
- package/dist/collection/components/refresher/refresher.js +1 -1
- package/dist/collection/components/refresher-content/refresher-content.js +1 -1
- package/dist/collection/components/reorder/reorder.js +1 -1
- package/dist/collection/components/reorder-group/reorder-group.js +1 -1
- package/dist/collection/components/ripple-effect/ripple-effect.js +1 -1
- package/dist/collection/components/router-link/router-link.js +2 -2
- package/dist/collection/components/router-outlet/router-outlet.js +1 -1
- package/dist/collection/components/row/row.js +1 -1
- package/dist/collection/components/searchbar/searchbar.js +4 -4
- package/dist/collection/components/segment/segment.js +2 -2
- package/dist/collection/components/segment-button/segment-button.js +2 -2
- package/dist/collection/components/segment-content/segment-content.js +1 -1
- package/dist/collection/components/segment-view/segment-view.js +2 -2
- package/dist/collection/components/select/select.js +2 -2
- package/dist/collection/components/select-modal/select-modal.js +1 -1
- package/dist/collection/components/select-option/select-option.js +1 -1
- package/dist/collection/components/select-popover/select-popover.js +1 -1
- package/dist/collection/components/skeleton-text/skeleton-text.js +2 -2
- package/dist/collection/components/spinner/spinner.js +1 -1
- package/dist/collection/components/split-pane/split-pane.js +2 -2
- package/dist/collection/components/tab/tab.js +2 -2
- package/dist/collection/components/tab-bar/tab-bar.js +2 -2
- package/dist/collection/components/tab-button/tab-button.js +2 -2
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/text/text.js +2 -2
- package/dist/collection/components/textarea/textarea.js +2 -2
- package/dist/collection/components/thumbnail/thumbnail.js +1 -1
- package/dist/collection/components/title/title.js +2 -2
- package/dist/collection/components/toast/toast.js +2 -2
- package/dist/collection/components/toggle/toggle.js +3 -3
- package/dist/collection/components/toolbar/toolbar.js +2 -2
- package/dist/docs.json +1 -1
- package/dist/esm/ion-app_8.entry.js +5 -5
- package/dist/esm/ion-avatar_3.entry.js +1 -1
- package/dist/esm/ion-col_3.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +4 -4
- package/dist/esm/ion-item-option_3.entry.js +4 -4
- package/dist/esm/ion-item_8.entry.js +11 -11
- package/dist/esm/ion-loading.entry.js +2 -2
- package/dist/esm/ion-menu_3.entry.js +6 -6
- package/dist/esm/ion-modal.entry.js +12 -220
- package/dist/esm/ion-nav_2.entry.js +2 -2
- package/dist/esm/ion-picker-column-option.entry.js +2 -2
- package/dist/esm/ion-popover.entry.js +13 -85
- package/dist/esm/ion-progress-bar.entry.js +1 -1
- package/dist/esm/ion-radio_2.entry.js +4 -4
- package/dist/esm/ion-range.entry.js +3 -3
- package/dist/esm/ion-refresher_2.entry.js +2 -2
- package/dist/esm/ion-reorder_2.entry.js +2 -2
- package/dist/esm/ion-ripple-effect.entry.js +1 -1
- package/dist/esm/ion-route_4.entry.js +2 -2
- package/dist/esm/ion-searchbar.entry.js +4 -4
- package/dist/esm/ion-segment-content.entry.js +1 -1
- package/dist/esm/ion-segment-view.entry.js +2 -2
- package/dist/esm/ion-segment_2.entry.js +4 -4
- package/dist/esm/ion-select-modal.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +4 -4
- package/dist/esm/ion-spinner.entry.js +1 -1
- package/dist/esm/ion-split-pane.entry.js +2 -2
- package/dist/esm/ion-tab-bar_2.entry.js +4 -4
- package/dist/esm/ion-tab_2.entry.js +3 -3
- package/dist/esm/ion-text.entry.js +2 -2
- package/dist/esm/ion-textarea.entry.js +2 -2
- package/dist/esm/ion-toast.entry.js +2 -2
- package/dist/esm/ion-toggle.entry.js +3 -3
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-074839fc.entry.js → p-01e27965.entry.js} +1 -1
- package/dist/ionic/p-0ca0fe9c.entry.js +4 -0
- package/dist/ionic/{p-316c0420.entry.js → p-221a3d8c.entry.js} +1 -1
- package/dist/ionic/{p-3a6caca9.entry.js → p-2668188b.entry.js} +1 -1
- package/dist/ionic/{p-d3014190.entry.js → p-2bd1ea35.entry.js} +1 -1
- package/dist/ionic/{p-a127bee2.entry.js → p-30333874.entry.js} +1 -1
- package/dist/ionic/{p-0e8c8a10.entry.js → p-31db96da.entry.js} +1 -1
- package/dist/ionic/{p-1647c46c.entry.js → p-363d1209.entry.js} +1 -1
- package/dist/ionic/p-3ec563c1.entry.js +4 -0
- package/dist/ionic/{p-c19af093.entry.js → p-42db6404.entry.js} +1 -1
- package/dist/ionic/{p-db82892c.entry.js → p-46a38cfd.entry.js} +1 -1
- package/dist/ionic/{p-eb024a5b.entry.js → p-4eec1a5e.entry.js} +1 -1
- package/dist/ionic/{p-0dfa5a37.entry.js → p-530fcd71.entry.js} +1 -1
- package/dist/ionic/{p-72c38b88.entry.js → p-5c8f7253.entry.js} +1 -1
- package/dist/ionic/{p-172a579f.entry.js → p-5d6fb6e3.entry.js} +1 -1
- package/dist/ionic/{p-dbbe606a.entry.js → p-652318c3.entry.js} +1 -1
- package/dist/ionic/{p-2a939845.entry.js → p-6f37536a.entry.js} +1 -1
- package/dist/ionic/{p-4e41ea20.entry.js → p-72af946b.entry.js} +1 -1
- package/dist/ionic/p-7f98e710.entry.js +4 -0
- package/dist/ionic/{p-6d070558.entry.js → p-82d5bb3d.entry.js} +1 -1
- package/dist/ionic/p-906bb44d.entry.js +4 -0
- package/dist/ionic/{p-2dbb90cb.entry.js → p-97eb0812.entry.js} +1 -1
- package/dist/ionic/{p-31f7095f.entry.js → p-a4a9f5ae.entry.js} +1 -1
- package/dist/ionic/{p-86f53961.entry.js → p-b8551510.entry.js} +1 -1
- package/dist/ionic/p-bc293244.entry.js +4 -0
- package/dist/ionic/{p-d126e8d3.entry.js → p-bce86e56.entry.js} +1 -1
- package/dist/ionic/{p-02d76786.entry.js → p-be263062.entry.js} +1 -1
- package/dist/ionic/{p-639dd543.entry.js → p-c175d792.entry.js} +1 -1
- package/dist/ionic/{p-020af078.entry.js → p-cc2a9936.entry.js} +1 -1
- package/dist/ionic/{p-1ccd6829.entry.js → p-e338f669.entry.js} +1 -1
- package/dist/ionic/{p-6241ce47.entry.js → p-eaf3f5ff.entry.js} +1 -1
- package/dist/ionic/{p-f8f22cc0.entry.js → p-fb0271ae.entry.js} +1 -1
- package/dist/ionic/{p-370e4237.entry.js → p-fbb00634.entry.js} +1 -1
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/components/modal/gestures/swipe-to-close.d.ts +1 -1
- package/dist/types/components/modal/modal.d.ts +0 -47
- package/dist/types/components/popover/utils.d.ts +0 -2
- package/hydrate/index.js +112 -392
- package/hydrate/index.mjs +112 -392
- package/package.json +2 -4
- package/dist/ionic/p-51a60e0f.entry.js +0 -4
- package/dist/ionic/p-94de5cfa.entry.js +0 -4
- package/dist/ionic/p-dd1aef77.entry.js +0 -4
- package/dist/ionic/p-ec9ca3fe.entry.js +0 -4
- package/dist/ionic/p-ef4256eb.entry.js +0 -4
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
'use strict';
|
|
5
5
|
|
|
6
6
|
var index$3 = require('./index-D6Wc6v08.js');
|
|
7
|
-
var index = require('./index-DkNv4J_i.js');
|
|
8
7
|
var index$2 = require('./index-CO6eryBo.js');
|
|
9
8
|
var frameworkDelegate = require('./framework-delegate-DMJRBuDi.js');
|
|
10
9
|
var helpers = require('./helpers-DrTqNghc.js');
|
|
@@ -18,6 +17,7 @@ var keyboard = require('./keyboard-hHzlEQpk.js');
|
|
|
18
17
|
var animation = require('./animation-Bt3H9L1C.js');
|
|
19
18
|
var cubicBezier = require('./cubic-bezier-DAjy1V-e.js');
|
|
20
19
|
var index$1 = require('./index-CAvQ7Tka.js');
|
|
20
|
+
var index = require('./index-DkNv4J_i.js');
|
|
21
21
|
require('./hardware-back-button-VCK4V3mG.js');
|
|
22
22
|
require('./gesture-controller-dtqlP_q4.js');
|
|
23
23
|
require('./keyboard-UuAS4D_9.js');
|
|
@@ -249,7 +249,7 @@ const calculateSpringStep = (t) => {
|
|
|
249
249
|
const SwipeToCloseDefaults = {
|
|
250
250
|
MIN_PRESENTING_SCALE: 0.915,
|
|
251
251
|
};
|
|
252
|
-
const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss
|
|
252
|
+
const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss) => {
|
|
253
253
|
/**
|
|
254
254
|
* The step value at which a card modal
|
|
255
255
|
* is eligible for dismissing via gesture.
|
|
@@ -406,8 +406,6 @@ const createSwipeToCloseGesture = (el, animation, statusBarStyle, onDismiss, onG
|
|
|
406
406
|
const processedStep = isAttemptingDismissWithCanDismiss ? calculateSpringStep(step / maxStep) : step;
|
|
407
407
|
const clampedStep = helpers.clamp(0.0001, processedStep, maxStep);
|
|
408
408
|
animation.progressStep(clampedStep);
|
|
409
|
-
// Notify modal of position change for safe-area updates
|
|
410
|
-
onGestureMove === null || onGestureMove === void 0 ? void 0 : onGestureMove();
|
|
411
409
|
/**
|
|
412
410
|
* When swiping down half way, the status bar style
|
|
413
411
|
* should be reset to its default value.
|
|
@@ -951,7 +949,7 @@ const mdLeaveAnimation = (baseEl, opts) => {
|
|
|
951
949
|
return baseAnimation;
|
|
952
950
|
};
|
|
953
951
|
|
|
954
|
-
const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange
|
|
952
|
+
const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange) => {
|
|
955
953
|
// Defaults for the sheet swipe animation
|
|
956
954
|
const defaultBackdrop = [
|
|
957
955
|
{ offset: 0, opacity: 'var(--backdrop-opacity)' },
|
|
@@ -1282,8 +1280,6 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1282
1280
|
: step;
|
|
1283
1281
|
offset = helpers.clamp(0.0001, processedStep, maxStep);
|
|
1284
1282
|
animation.progressStep(offset);
|
|
1285
|
-
// Notify modal of position change for safe-area updates
|
|
1286
|
-
onGestureMove === null || onGestureMove === void 0 ? void 0 : onGestureMove();
|
|
1287
1283
|
};
|
|
1288
1284
|
const onEnd = (detail) => {
|
|
1289
1285
|
/**
|
|
@@ -1478,9 +1474,9 @@ const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, ba
|
|
|
1478
1474
|
};
|
|
1479
1475
|
};
|
|
1480
1476
|
|
|
1481
|
-
const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
|
|
1477
|
+
const modalIosCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.4)}:host(.modal-card),:host(.modal-sheet){--border-radius:10px}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:10px}}.modal-wrapper{-webkit-transform:translate3d(0, 100%, 0);transform:translate3d(0, 100%, 0)}@media screen and (max-width: 767px){@supports (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - max(30px, var(--ion-safe-area-top)) - 10px)}}@supports not (width: max(0px, 1px)){:host(.modal-card){--height:calc(100% - 40px)}}:host(.modal-card) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}:host(.modal-card){--backdrop-opacity:0;--width:100%;-ms-flex-align:end;align-items:flex-end}:host(.modal-card) .modal-shadow{display:none}:host(.modal-card) ion-backdrop{pointer-events:none}}@media screen and (min-width: 768px){:host(.modal-card){--width:calc(100% - 120px);--height:calc(100% - (120px + var(--ion-safe-area-top) + var(--ion-safe-area-bottom)));--max-width:720px;--max-height:1000px;--backdrop-opacity:0;--box-shadow:0px 0px 30px 10px rgba(0, 0, 0, 0.1);-webkit-transition:all 0.5s ease-in-out;transition:all 0.5s ease-in-out}:host(.modal-card) .modal-wrapper{-webkit-box-shadow:none;box-shadow:none}:host(.modal-card) .modal-shadow{-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow)}}:host(.modal-sheet) .modal-wrapper{border-start-start-radius:var(--border-radius);border-start-end-radius:var(--border-radius);border-end-end-radius:0;border-end-start-radius:0}";
|
|
1482
1478
|
|
|
1483
|
-
const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
|
|
1479
|
+
const modalMdCss = ":host{--width:100%;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--overflow:hidden;--border-radius:0;--border-width:0;--border-style:none;--border-color:transparent;--background:var(--ion-background-color, #fff);--box-shadow:none;--backdrop-opacity:0;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);contain:strict}.modal-wrapper,ion-backdrop{pointer-events:auto}:host(.overlay-hidden){display:none}.modal-wrapper,.modal-shadow{border-radius:var(--border-radius);width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);border-width:var(--border-width);border-style:var(--border-style);border-color:var(--border-color);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:var(--overflow);z-index:10}.modal-shadow{position:absolute;background:transparent}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--width:600px;--height:500px;--ion-safe-area-top:0px;--ion-safe-area-bottom:0px;--ion-safe-area-right:0px;--ion-safe-area-left:0px}}@media only screen and (min-width: 768px) and (min-height: 768px){:host{--width:600px;--height:600px}}.modal-handle{left:0px;right:0px;top:5px;border-radius:8px;-webkit-margin-start:auto;margin-inline-start:auto;-webkit-margin-end:auto;margin-inline-end:auto;position:absolute;width:36px;height:5px;-webkit-transform:translateZ(0);transform:translateZ(0);border:0;background:var(--ion-color-step-350, var(--ion-background-color-step-350, #c0c0be));cursor:pointer;z-index:11}.modal-handle::before{-webkit-padding-start:4px;padding-inline-start:4px;-webkit-padding-end:4px;padding-inline-end:4px;padding-top:4px;padding-bottom:4px;position:absolute;width:36px;height:5px;-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);content:\"\"}:host(.modal-sheet){--height:calc(100% - (var(--ion-safe-area-top) + 10px))}:host(.modal-sheet) .modal-wrapper,:host(.modal-sheet) .modal-shadow{position:absolute;bottom:0}:host(.modal-sheet.modal-no-expand-scroll) ion-footer{position:absolute;bottom:0;width:var(--width)}:host{--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}@media only screen and (min-width: 768px) and (min-height: 600px){:host{--border-radius:2px;--box-shadow:0 28px 48px rgba(0, 0, 0, 0.4)}}.modal-wrapper{-webkit-transform:translate3d(0, 40px, 0);transform:translate3d(0, 40px, 0);opacity:0.01}";
|
|
1484
1480
|
|
|
1485
1481
|
const Modal = class {
|
|
1486
1482
|
constructor(hostRef) {
|
|
@@ -1503,10 +1499,6 @@ const Modal = class {
|
|
|
1503
1499
|
this.inline = false;
|
|
1504
1500
|
// Whether or not modal is being dismissed via gesture
|
|
1505
1501
|
this.gestureAnimationDismissing = false;
|
|
1506
|
-
// Whether to skip coordinate-based safe-area detection (for fullscreen phone modals)
|
|
1507
|
-
this.skipSafeAreaCoordinateDetection = false;
|
|
1508
|
-
// Track previous safe-area state to avoid redundant DOM writes
|
|
1509
|
-
this.prevSafeAreaState = { top: false, bottom: false, left: false, right: false };
|
|
1510
1502
|
this.presented = false;
|
|
1511
1503
|
/** @internal */
|
|
1512
1504
|
this.hasController = false;
|
|
@@ -1697,10 +1689,7 @@ const Modal = class {
|
|
|
1697
1689
|
}
|
|
1698
1690
|
}
|
|
1699
1691
|
onWindowResize() {
|
|
1700
|
-
//
|
|
1701
|
-
this.cachedSafeAreas = undefined;
|
|
1702
|
-
this.updateSafeAreaOverrides();
|
|
1703
|
-
// Only handle view transition for iOS card modals when no custom animations are provided
|
|
1692
|
+
// Only handle resize for iOS card modals when no custom animations are provided
|
|
1704
1693
|
if (ionicGlobal.getIonMode(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
|
|
1705
1694
|
return;
|
|
1706
1695
|
}
|
|
@@ -1723,8 +1712,6 @@ const Modal = class {
|
|
|
1723
1712
|
this.triggerController.removeClickListener();
|
|
1724
1713
|
this.cleanupViewTransitionListener();
|
|
1725
1714
|
this.cleanupParentRemovalObserver();
|
|
1726
|
-
// Reset safe-area state to handle removal without dismiss (e.g., framework unmount)
|
|
1727
|
-
this.resetSafeAreaState();
|
|
1728
1715
|
}
|
|
1729
1716
|
componentWillLoad() {
|
|
1730
1717
|
var _a;
|
|
@@ -1884,8 +1871,6 @@ const Modal = class {
|
|
|
1884
1871
|
else if (!this.keepContentsMounted) {
|
|
1885
1872
|
await index$4.waitForMount();
|
|
1886
1873
|
}
|
|
1887
|
-
// Predict safe-area needs based on modal configuration to avoid visual snap
|
|
1888
|
-
this.setInitialSafeAreaOverrides(presentingElement);
|
|
1889
1874
|
index$3.writeTask(() => this.el.classList.add('show-modal'));
|
|
1890
1875
|
const hasCardModal = presentingElement !== undefined;
|
|
1891
1876
|
/**
|
|
@@ -1947,8 +1932,6 @@ const Modal = class {
|
|
|
1947
1932
|
else if (hasCardModal) {
|
|
1948
1933
|
this.initSwipeToClose();
|
|
1949
1934
|
}
|
|
1950
|
-
// Now that animation is complete, update safe-area based on actual position
|
|
1951
|
-
this.updateSafeAreaOverrides();
|
|
1952
1935
|
// Initialize view transition listener for iOS card modals
|
|
1953
1936
|
this.initViewTransitionListener();
|
|
1954
1937
|
// Initialize parent removal observer
|
|
@@ -2000,7 +1983,7 @@ const Modal = class {
|
|
|
2000
1983
|
await this.dismiss(undefined, overlays.GESTURE);
|
|
2001
1984
|
this.gestureAnimationDismissing = false;
|
|
2002
1985
|
});
|
|
2003
|
-
}
|
|
1986
|
+
});
|
|
2004
1987
|
this.gesture.enable(true);
|
|
2005
1988
|
}
|
|
2006
1989
|
initSheetGesture() {
|
|
@@ -2021,8 +2004,7 @@ const Modal = class {
|
|
|
2021
2004
|
this.currentBreakpoint = breakpoint;
|
|
2022
2005
|
this.ionBreakpointDidChange.emit({ breakpoint });
|
|
2023
2006
|
}
|
|
2024
|
-
|
|
2025
|
-
}, () => this.updateSafeAreaOverrides());
|
|
2007
|
+
});
|
|
2026
2008
|
this.gesture = gesture;
|
|
2027
2009
|
this.moveSheetToBreakpoint = moveSheetToBreakpoint;
|
|
2028
2010
|
this.gesture.enable(true);
|
|
@@ -2100,194 +2082,6 @@ const Modal = class {
|
|
|
2100
2082
|
// Clear the cached reference
|
|
2101
2083
|
this.cachedPageParent = undefined;
|
|
2102
2084
|
}
|
|
2103
|
-
/**
|
|
2104
|
-
* Sets initial safe-area overrides based on modal configuration before
|
|
2105
|
-
* the modal becomes visible. This predicts whether the modal will touch
|
|
2106
|
-
* screen edges to avoid a visual snap after animation completes.
|
|
2107
|
-
*/
|
|
2108
|
-
setInitialSafeAreaOverrides(presentingElement) {
|
|
2109
|
-
const style = this.el.style;
|
|
2110
|
-
const mode = ionicGlobal.getIonMode(this);
|
|
2111
|
-
const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
|
|
2112
|
-
// Card modals only exist in iOS mode - in MD mode, presentingElement is ignored
|
|
2113
|
-
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
2114
|
-
const isTablet = window.innerWidth >= 768;
|
|
2115
|
-
// Sheet modals always touch bottom edge, never top/left/right
|
|
2116
|
-
if (isSheetModal) {
|
|
2117
|
-
style.setProperty('--ion-safe-area-top', '0px');
|
|
2118
|
-
style.setProperty('--ion-safe-area-left', '0px');
|
|
2119
|
-
style.setProperty('--ion-safe-area-right', '0px');
|
|
2120
|
-
return;
|
|
2121
|
-
}
|
|
2122
|
-
// Card modals have rounded top corners
|
|
2123
|
-
if (isCardModal) {
|
|
2124
|
-
style.setProperty('--ion-safe-area-top', '0px');
|
|
2125
|
-
if (isTablet) {
|
|
2126
|
-
// On tablets, card modals are inset from all edges
|
|
2127
|
-
this.zeroAllSafeAreas();
|
|
2128
|
-
}
|
|
2129
|
-
else {
|
|
2130
|
-
// On phones, card modals still extend to the bottom edge
|
|
2131
|
-
style.setProperty('--ion-safe-area-left', '0px');
|
|
2132
|
-
style.setProperty('--ion-safe-area-right', '0px');
|
|
2133
|
-
this.applyFullscreenSafeArea();
|
|
2134
|
-
}
|
|
2135
|
-
return;
|
|
2136
|
-
}
|
|
2137
|
-
// Check if modal is fullscreen via CSS custom properties
|
|
2138
|
-
// This applies to both phone and tablet sizes - custom modals may have
|
|
2139
|
-
// non-fullscreen dimensions even on phones (e.g., --height: 70%)
|
|
2140
|
-
const computedStyle = getComputedStyle(this.el);
|
|
2141
|
-
const width = computedStyle.getPropertyValue('--width').trim();
|
|
2142
|
-
const height = computedStyle.getPropertyValue('--height').trim();
|
|
2143
|
-
const isFullscreen = width === '100%' && height === '100%';
|
|
2144
|
-
if (isFullscreen) {
|
|
2145
|
-
this.applyFullscreenSafeArea();
|
|
2146
|
-
}
|
|
2147
|
-
else if (isTablet) {
|
|
2148
|
-
// Centered dialog on tablet doesn't touch edges
|
|
2149
|
-
this.zeroAllSafeAreas();
|
|
2150
|
-
}
|
|
2151
|
-
else ;
|
|
2152
|
-
}
|
|
2153
|
-
/**
|
|
2154
|
-
* Applies safe-area handling for fullscreen modals.
|
|
2155
|
-
* Adds wrapper padding when no footer is present to prevent
|
|
2156
|
-
* content from overlapping system navigation areas.
|
|
2157
|
-
*/
|
|
2158
|
-
applyFullscreenSafeArea() {
|
|
2159
|
-
this.skipSafeAreaCoordinateDetection = true;
|
|
2160
|
-
this.updateFooterPadding();
|
|
2161
|
-
// Watch for dynamic footer additions/removals (e.g., async data loading)
|
|
2162
|
-
// Use subtree:true to support wrapped footers in framework components
|
|
2163
|
-
// (e.g., <my-footer><ion-footer>...</ion-footer></my-footer>)
|
|
2164
|
-
if (!this.footerObserver && index.win !== undefined && 'MutationObserver' in index.win) {
|
|
2165
|
-
this.footerObserver = new MutationObserver(() => this.updateFooterPadding());
|
|
2166
|
-
this.footerObserver.observe(this.el, { childList: true, subtree: true });
|
|
2167
|
-
}
|
|
2168
|
-
}
|
|
2169
|
-
/**
|
|
2170
|
-
* Updates wrapper and shadow padding based on footer presence.
|
|
2171
|
-
* Called initially and when footer is dynamically added/removed.
|
|
2172
|
-
* Both elements must be styled identically to prevent visual mismatches.
|
|
2173
|
-
*/
|
|
2174
|
-
updateFooterPadding() {
|
|
2175
|
-
if (!this.wrapperEl)
|
|
2176
|
-
return;
|
|
2177
|
-
const hasFooter = this.el.querySelector('ion-footer') !== null;
|
|
2178
|
-
// Apply to both wrapper and shadow to keep them in sync
|
|
2179
|
-
const elements = [this.wrapperEl, this.shadowEl].filter(Boolean);
|
|
2180
|
-
if (hasFooter) {
|
|
2181
|
-
elements.forEach((el) => {
|
|
2182
|
-
el.style.removeProperty('padding-bottom');
|
|
2183
|
-
el.style.removeProperty('box-sizing');
|
|
2184
|
-
});
|
|
2185
|
-
}
|
|
2186
|
-
else {
|
|
2187
|
-
elements.forEach((el) => {
|
|
2188
|
-
el.style.setProperty('padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
|
|
2189
|
-
el.style.setProperty('box-sizing', 'border-box');
|
|
2190
|
-
});
|
|
2191
|
-
}
|
|
2192
|
-
}
|
|
2193
|
-
/**
|
|
2194
|
-
* Sets all safe-area CSS variables to 0px for modals that
|
|
2195
|
-
* don't touch screen edges.
|
|
2196
|
-
*/
|
|
2197
|
-
zeroAllSafeAreas() {
|
|
2198
|
-
const style = this.el.style;
|
|
2199
|
-
style.setProperty('--ion-safe-area-top', '0px');
|
|
2200
|
-
style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2201
|
-
style.setProperty('--ion-safe-area-left', '0px');
|
|
2202
|
-
style.setProperty('--ion-safe-area-right', '0px');
|
|
2203
|
-
}
|
|
2204
|
-
/**
|
|
2205
|
-
* Resets all safe-area related state and styles.
|
|
2206
|
-
* Called during dismiss and disconnectedCallback to ensure clean state
|
|
2207
|
-
* for re-presentation of inline modals.
|
|
2208
|
-
*/
|
|
2209
|
-
resetSafeAreaState() {
|
|
2210
|
-
var _a;
|
|
2211
|
-
this.skipSafeAreaCoordinateDetection = false;
|
|
2212
|
-
this.cachedSafeAreas = undefined;
|
|
2213
|
-
this.prevSafeAreaState = { top: false, bottom: false, left: false, right: false };
|
|
2214
|
-
(_a = this.footerObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
2215
|
-
this.footerObserver = undefined;
|
|
2216
|
-
// Clear wrapper and shadow styles that may have been set for safe-area handling
|
|
2217
|
-
[this.wrapperEl, this.shadowEl].forEach((el) => {
|
|
2218
|
-
if (el) {
|
|
2219
|
-
el.style.removeProperty('padding-bottom');
|
|
2220
|
-
el.style.removeProperty('box-sizing');
|
|
2221
|
-
}
|
|
2222
|
-
});
|
|
2223
|
-
// Clear safe-area CSS variable overrides
|
|
2224
|
-
const style = this.el.style;
|
|
2225
|
-
style.removeProperty('--ion-safe-area-top');
|
|
2226
|
-
style.removeProperty('--ion-safe-area-bottom');
|
|
2227
|
-
style.removeProperty('--ion-safe-area-left');
|
|
2228
|
-
style.removeProperty('--ion-safe-area-right');
|
|
2229
|
-
}
|
|
2230
|
-
/**
|
|
2231
|
-
* Gets the root safe-area values from the document element.
|
|
2232
|
-
* Uses cached values during gestures to avoid getComputedStyle calls.
|
|
2233
|
-
*/
|
|
2234
|
-
getSafeAreaValues() {
|
|
2235
|
-
if (!this.cachedSafeAreas) {
|
|
2236
|
-
const rootStyle = getComputedStyle(document.documentElement);
|
|
2237
|
-
this.cachedSafeAreas = {
|
|
2238
|
-
top: parseFloat(rootStyle.getPropertyValue('--ion-safe-area-top')) || 0,
|
|
2239
|
-
bottom: parseFloat(rootStyle.getPropertyValue('--ion-safe-area-bottom')) || 0,
|
|
2240
|
-
left: parseFloat(rootStyle.getPropertyValue('--ion-safe-area-left')) || 0,
|
|
2241
|
-
right: parseFloat(rootStyle.getPropertyValue('--ion-safe-area-right')) || 0,
|
|
2242
|
-
};
|
|
2243
|
-
}
|
|
2244
|
-
return this.cachedSafeAreas;
|
|
2245
|
-
}
|
|
2246
|
-
/**
|
|
2247
|
-
* Updates safe-area CSS variable overrides based on whether the modal
|
|
2248
|
-
* extends into each safe-area region. Called after animation
|
|
2249
|
-
* and during gestures to handle dynamic position changes.
|
|
2250
|
-
*
|
|
2251
|
-
* Optimized to avoid redundant DOM writes by tracking previous state.
|
|
2252
|
-
*/
|
|
2253
|
-
updateSafeAreaOverrides() {
|
|
2254
|
-
if (this.skipSafeAreaCoordinateDetection) {
|
|
2255
|
-
return;
|
|
2256
|
-
}
|
|
2257
|
-
const wrapper = this.wrapperEl;
|
|
2258
|
-
if (!wrapper) {
|
|
2259
|
-
return;
|
|
2260
|
-
}
|
|
2261
|
-
const rect = wrapper.getBoundingClientRect();
|
|
2262
|
-
const safeAreas = this.getSafeAreaValues();
|
|
2263
|
-
const extendsIntoTop = rect.top < safeAreas.top;
|
|
2264
|
-
const extendsIntoBottom = rect.bottom > window.innerHeight - safeAreas.bottom;
|
|
2265
|
-
const extendsIntoLeft = rect.left < safeAreas.left;
|
|
2266
|
-
const extendsIntoRight = rect.right > window.innerWidth - safeAreas.right;
|
|
2267
|
-
// Only update DOM when state actually changes
|
|
2268
|
-
const prev = this.prevSafeAreaState;
|
|
2269
|
-
const style = this.el.style;
|
|
2270
|
-
if (extendsIntoTop !== prev.top) {
|
|
2271
|
-
extendsIntoTop ? style.removeProperty('--ion-safe-area-top') : style.setProperty('--ion-safe-area-top', '0px');
|
|
2272
|
-
prev.top = extendsIntoTop;
|
|
2273
|
-
}
|
|
2274
|
-
if (extendsIntoBottom !== prev.bottom) {
|
|
2275
|
-
extendsIntoBottom
|
|
2276
|
-
? style.removeProperty('--ion-safe-area-bottom')
|
|
2277
|
-
: style.setProperty('--ion-safe-area-bottom', '0px');
|
|
2278
|
-
prev.bottom = extendsIntoBottom;
|
|
2279
|
-
}
|
|
2280
|
-
if (extendsIntoLeft !== prev.left) {
|
|
2281
|
-
extendsIntoLeft ? style.removeProperty('--ion-safe-area-left') : style.setProperty('--ion-safe-area-left', '0px');
|
|
2282
|
-
prev.left = extendsIntoLeft;
|
|
2283
|
-
}
|
|
2284
|
-
if (extendsIntoRight !== prev.right) {
|
|
2285
|
-
extendsIntoRight
|
|
2286
|
-
? style.removeProperty('--ion-safe-area-right')
|
|
2287
|
-
: style.setProperty('--ion-safe-area-right', '0px');
|
|
2288
|
-
prev.right = extendsIntoRight;
|
|
2289
|
-
}
|
|
2290
|
-
}
|
|
2291
2085
|
sheetOnDismiss() {
|
|
2292
2086
|
/**
|
|
2293
2087
|
* While the gesture animation is finishing
|
|
@@ -2380,8 +2174,6 @@ const Modal = class {
|
|
|
2380
2174
|
}
|
|
2381
2175
|
this.currentBreakpoint = undefined;
|
|
2382
2176
|
this.animation = undefined;
|
|
2383
|
-
// Reset safe-area state for potential re-presentation
|
|
2384
|
-
this.resetSafeAreaState();
|
|
2385
2177
|
unlock();
|
|
2386
2178
|
return dismissed;
|
|
2387
2179
|
}
|
|
@@ -2631,20 +2423,20 @@ const Modal = class {
|
|
|
2631
2423
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
2632
2424
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
2633
2425
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
2634
|
-
return (index$3.h(index$3.Host, Object.assign({ key: '
|
|
2426
|
+
return (index$3.h(index$3.Host, Object.assign({ key: '978ba9cc81464b2d9b4caaf36285d5f7bf7e568d', "no-router": true,
|
|
2635
2427
|
// Allow the modal to be navigable when the handle is focusable
|
|
2636
2428
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
2637
2429
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
2638
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), index$3.h("ion-backdrop", { key: '
|
|
2430
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, theme.getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), index$3.h("ion-backdrop", { key: '9f95566d8e0c06bb9607f514484848c250f35f1f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && index$3.h("div", { key: '91ff26d4f3ab4367f3a2940f51c6a5a3d4c972c3', class: "modal-shadow" }), index$3.h("div", Object.assign({ key: '064b2dba13854505a4eb1f5e54296ac79cb7a2bd',
|
|
2639
2431
|
/*
|
|
2640
2432
|
role and aria-modal must be used on the
|
|
2641
2433
|
same element. They must also be set inside the
|
|
2642
2434
|
shadow DOM otherwise ion-button will not be highlighted
|
|
2643
2435
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
2644
2436
|
*/
|
|
2645
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: '
|
|
2437
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (index$3.h("button", { key: 'b579b08b114022032d078a527111456ceefc7b35', class: "modal-handle",
|
|
2646
2438
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
2647
|
-
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) })), index$3.h("slot", { key: '
|
|
2439
|
+
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) })), index$3.h("slot", { key: 'dacea58475b72d9c0209934ff31f3be6b9ac8c85', onSlotchange: this.onSlotChange }))));
|
|
2648
2440
|
}
|
|
2649
2441
|
get el() { return index$3.getElement(this); }
|
|
2650
2442
|
static get watchers() { return {
|
|
@@ -897,7 +897,7 @@ const Nav = class {
|
|
|
897
897
|
}
|
|
898
898
|
}
|
|
899
899
|
render() {
|
|
900
|
-
return index.h("slot", { key: '
|
|
900
|
+
return index.h("slot", { key: 'a549286b51b1bb23c9ef51f71148452228d0ab14' });
|
|
901
901
|
}
|
|
902
902
|
get el() { return index.getElement(this); }
|
|
903
903
|
static get watchers() { return {
|
|
@@ -939,7 +939,7 @@ const NavLink = class {
|
|
|
939
939
|
};
|
|
940
940
|
}
|
|
941
941
|
render() {
|
|
942
|
-
return index.h(index.Host, { key: '
|
|
942
|
+
return index.h(index.Host, { key: 'd4d80feb51c0d92b0bedf6952c892f9df3002046', onClick: this.onClick });
|
|
943
943
|
}
|
|
944
944
|
get el() { return index.getElement(this); }
|
|
945
945
|
};
|
|
@@ -99,10 +99,10 @@ const PickerColumnOption = class {
|
|
|
99
99
|
render() {
|
|
100
100
|
const { color, disabled, ariaLabel } = this;
|
|
101
101
|
const mode = ionicGlobal.getIonMode(this);
|
|
102
|
-
return (index.h(index.Host, { key: '
|
|
102
|
+
return (index.h(index.Host, { key: 'c45a1c14a351bf57d7113671164852349be5aa8a', class: theme.createColorClasses(color, {
|
|
103
103
|
[mode]: true,
|
|
104
104
|
['option-disabled']: disabled,
|
|
105
|
-
}) }, index.h("div", { key: '
|
|
105
|
+
}) }, index.h("div", { key: '824930b658c6e3fb493ac4c6c2451d38c6bc4829', class: 'picker-column-option-button', role: "button", "aria-label": ariaLabel, onClick: () => this.onClick() }, index.h("slot", { key: '019df4dcf46e629bdbebcd46ed3ab29669feab27' }))));
|
|
106
106
|
}
|
|
107
107
|
get el() { return index.getElement(this); }
|
|
108
108
|
static get watchers() { return {
|
|
@@ -660,8 +660,6 @@ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyW
|
|
|
660
660
|
let bottom;
|
|
661
661
|
let originX = contentOriginX;
|
|
662
662
|
let originY = contentOriginY;
|
|
663
|
-
let checkSafeAreaTop = false;
|
|
664
|
-
let checkSafeAreaBottom = false;
|
|
665
663
|
let checkSafeAreaLeft = false;
|
|
666
664
|
let checkSafeAreaRight = false;
|
|
667
665
|
const triggerTop = triggerCoordinates
|
|
@@ -706,18 +704,10 @@ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyW
|
|
|
706
704
|
* We chose 12 here so that the popover position looks a bit nicer as
|
|
707
705
|
* it is not right up against the edge of the screen.
|
|
708
706
|
*/
|
|
709
|
-
top = Math.max(
|
|
707
|
+
top = Math.max(12, triggerTop - contentHeight - triggerHeight - (arrowHeight - 1));
|
|
710
708
|
arrowTop = top + contentHeight;
|
|
711
709
|
originY = 'bottom';
|
|
712
710
|
addPopoverBottomClass = true;
|
|
713
|
-
/**
|
|
714
|
-
* If the popover is positioned near the top edge, account for safe area.
|
|
715
|
-
* This ensures the popover doesn't overlap with status bars or notches.
|
|
716
|
-
*/
|
|
717
|
-
if (top <= bodyPadding + safeAreaMargin) {
|
|
718
|
-
checkSafeAreaTop = true;
|
|
719
|
-
top = bodyPadding;
|
|
720
|
-
}
|
|
721
711
|
/**
|
|
722
712
|
* If not enough room for popover to appear
|
|
723
713
|
* above trigger, then cut it off.
|
|
@@ -725,35 +715,14 @@ const calculateWindowAdjustment = (side, coordTop, coordLeft, bodyPadding, bodyW
|
|
|
725
715
|
}
|
|
726
716
|
else {
|
|
727
717
|
bottom = bodyPadding;
|
|
728
|
-
/**
|
|
729
|
-
* When the popover is pinned to the bottom, account for safe area.
|
|
730
|
-
* This ensures the popover doesn't overlap with home indicators
|
|
731
|
-
* or navigation bars (e.g., Android API 36+ edge-to-edge).
|
|
732
|
-
*/
|
|
733
|
-
checkSafeAreaBottom = true;
|
|
734
718
|
}
|
|
735
719
|
}
|
|
736
|
-
/**
|
|
737
|
-
* Final check: If the popover extends into any safe-area region,
|
|
738
|
-
* ensure the corresponding flag is set regardless of side.
|
|
739
|
-
* This handles cases where a side-positioned popover (left/right)
|
|
740
|
-
* still needs bottom safe-area padding because it extends into that region.
|
|
741
|
-
*/
|
|
742
|
-
const popoverBottom = bottom !== undefined ? bodyHeight - bottom : top + contentHeight;
|
|
743
|
-
if (popoverBottom + safeAreaMargin > bodyHeight) {
|
|
744
|
-
checkSafeAreaBottom = true;
|
|
745
|
-
}
|
|
746
|
-
if (top < safeAreaMargin) {
|
|
747
|
-
checkSafeAreaTop = true;
|
|
748
|
-
}
|
|
749
720
|
return {
|
|
750
721
|
top,
|
|
751
722
|
left,
|
|
752
723
|
bottom,
|
|
753
724
|
originX,
|
|
754
725
|
originY,
|
|
755
|
-
checkSafeAreaTop,
|
|
756
|
-
checkSafeAreaBottom,
|
|
757
726
|
checkSafeAreaLeft,
|
|
758
727
|
checkSafeAreaRight,
|
|
759
728
|
arrowTop,
|
|
@@ -814,7 +783,7 @@ const iosEnterAnimation = (baseEl, opts) => {
|
|
|
814
783
|
const results = getPopoverPosition(isRTL, contentWidth, contentHeight, arrowWidth, arrowHeight, reference, side, align, defaultPosition, trigger, ev);
|
|
815
784
|
const padding = size === 'cover' ? 0 : POPOVER_IOS_BODY_PADDING;
|
|
816
785
|
const margin = size === 'cover' ? 0 : 25;
|
|
817
|
-
const { originX, originY, top, left, bottom,
|
|
786
|
+
const { originX, originY, top, left, bottom, checkSafeAreaLeft, checkSafeAreaRight, arrowTop, arrowLeft, addPopoverBottomClass, } = calculateWindowAdjustment(side, results.top, results.left, padding, bodyWidth, bodyHeight, contentWidth, contentHeight, margin, results.originX, results.originY, results.referenceCoordinates, results.arrowTop, results.arrowLeft, arrowHeight);
|
|
818
787
|
const baseAnimation = animation.createAnimation();
|
|
819
788
|
const backdropAnimation = animation.createAnimation();
|
|
820
789
|
const contentAnimation = animation.createAnimation();
|
|
@@ -844,35 +813,19 @@ const iosEnterAnimation = (baseEl, opts) => {
|
|
|
844
813
|
if (addPopoverBottomClass) {
|
|
845
814
|
baseEl.classList.add('popover-bottom');
|
|
846
815
|
}
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
* safe-area inset to ensure the popover doesn't overlap with system UI
|
|
851
|
-
* (status bars, home indicators, navigation bars on Android API 36+, etc.)
|
|
852
|
-
*/
|
|
853
|
-
const safeAreaTop = ' + var(--ion-safe-area-top, 0)';
|
|
854
|
-
const safeAreaBottom = ' + var(--ion-safe-area-bottom, 0)';
|
|
816
|
+
if (bottom !== undefined) {
|
|
817
|
+
contentEl.style.setProperty('bottom', `${bottom}px`);
|
|
818
|
+
}
|
|
855
819
|
const safeAreaLeft = ' + var(--ion-safe-area-left, 0)';
|
|
856
820
|
const safeAreaRight = ' - var(--ion-safe-area-right, 0)';
|
|
857
|
-
let topValue = `${top}px`;
|
|
858
|
-
let bottomValue = bottom !== undefined ? `${bottom}px` : undefined;
|
|
859
821
|
let leftValue = `${left}px`;
|
|
860
|
-
if (checkSafeAreaTop) {
|
|
861
|
-
topValue = `${top}px${safeAreaTop}`;
|
|
862
|
-
}
|
|
863
|
-
if (checkSafeAreaBottom && bottomValue !== undefined) {
|
|
864
|
-
bottomValue = `${bottom}px${safeAreaBottom}`;
|
|
865
|
-
}
|
|
866
822
|
if (checkSafeAreaLeft) {
|
|
867
823
|
leftValue = `${left}px${safeAreaLeft}`;
|
|
868
824
|
}
|
|
869
825
|
if (checkSafeAreaRight) {
|
|
870
826
|
leftValue = `${left}px${safeAreaRight}`;
|
|
871
827
|
}
|
|
872
|
-
|
|
873
|
-
contentEl.style.setProperty('bottom', `calc(${bottomValue})`);
|
|
874
|
-
}
|
|
875
|
-
contentEl.style.setProperty('top', `calc(${topValue} + var(--offset-y, 0))`);
|
|
828
|
+
contentEl.style.setProperty('top', `calc(${top}px + var(--offset-y, 0))`);
|
|
876
829
|
contentEl.style.setProperty('left', `calc(${leftValue} + var(--offset-x, 0))`);
|
|
877
830
|
contentEl.style.setProperty('transform-origin', `${originY} ${originX}`);
|
|
878
831
|
if (arrowEl !== null) {
|
|
@@ -948,32 +901,7 @@ const mdEnterAnimation = (baseEl, opts) => {
|
|
|
948
901
|
};
|
|
949
902
|
const results = getPopoverPosition(isRTL, contentWidth, contentHeight, 0, 0, reference, side, align, defaultPosition, trigger, ev);
|
|
950
903
|
const padding = size === 'cover' ? 0 : POPOVER_MD_BODY_PADDING;
|
|
951
|
-
const { originX, originY, top, left, bottom
|
|
952
|
-
/**
|
|
953
|
-
* Safe area CSS variable adjustments.
|
|
954
|
-
* When the popover is positioned near an edge, we add the corresponding
|
|
955
|
-
* safe-area inset to ensure the popover doesn't overlap with system UI
|
|
956
|
-
* (status bars, home indicators, navigation bars on Android API 36+, etc.)
|
|
957
|
-
*/
|
|
958
|
-
const safeAreaTop = ' + var(--ion-safe-area-top, 0)';
|
|
959
|
-
const safeAreaBottom = ' + var(--ion-safe-area-bottom, 0)';
|
|
960
|
-
const safeAreaLeft = ' + var(--ion-safe-area-left, 0)';
|
|
961
|
-
const safeAreaRight = ' - var(--ion-safe-area-right, 0)';
|
|
962
|
-
let topValue = `${top}px`;
|
|
963
|
-
let bottomValue = bottom !== undefined ? `${bottom}px` : undefined;
|
|
964
|
-
let leftValue = `${left}px`;
|
|
965
|
-
if (checkSafeAreaTop) {
|
|
966
|
-
topValue = `${top}px${safeAreaTop}`;
|
|
967
|
-
}
|
|
968
|
-
if (checkSafeAreaBottom && bottomValue !== undefined) {
|
|
969
|
-
bottomValue = `${bottom}px${safeAreaBottom}`;
|
|
970
|
-
}
|
|
971
|
-
if (checkSafeAreaLeft) {
|
|
972
|
-
leftValue = `${left}px${safeAreaLeft}`;
|
|
973
|
-
}
|
|
974
|
-
if (checkSafeAreaRight) {
|
|
975
|
-
leftValue = `${left}px${safeAreaRight}`;
|
|
976
|
-
}
|
|
904
|
+
const { originX, originY, top, left, bottom } = calculateWindowAdjustment(side, results.top, results.left, padding, bodyWidth, bodyHeight, contentWidth, contentHeight, 0, results.originX, results.originY, results.referenceCoordinates);
|
|
977
905
|
const baseAnimation = animation.createAnimation();
|
|
978
906
|
const backdropAnimation = animation.createAnimation();
|
|
979
907
|
const wrapperAnimation = animation.createAnimation();
|
|
@@ -990,13 +918,13 @@ const mdEnterAnimation = (baseEl, opts) => {
|
|
|
990
918
|
contentAnimation
|
|
991
919
|
.addElement(contentEl)
|
|
992
920
|
.beforeStyles({
|
|
993
|
-
top: `calc(${
|
|
994
|
-
left: `calc(${
|
|
921
|
+
top: `calc(${top}px + var(--offset-y, 0px))`,
|
|
922
|
+
left: `calc(${left}px + var(--offset-x, 0px))`,
|
|
995
923
|
'transform-origin': `${originY} ${originX}`,
|
|
996
924
|
})
|
|
997
925
|
.beforeAddWrite(() => {
|
|
998
|
-
if (
|
|
999
|
-
contentEl.style.setProperty('bottom',
|
|
926
|
+
if (bottom !== undefined) {
|
|
927
|
+
contentEl.style.setProperty('bottom', `${bottom}px`);
|
|
1000
928
|
}
|
|
1001
929
|
})
|
|
1002
930
|
.fromTo('transform', 'scale(0.8)', 'scale(1)');
|
|
@@ -1494,9 +1422,9 @@ const Popover = class {
|
|
|
1494
1422
|
const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
|
|
1495
1423
|
const desktop = ionicGlobal.isPlatform('desktop');
|
|
1496
1424
|
const enableArrow = arrow && !parentPopover;
|
|
1497
|
-
return (index.h(index.Host, Object.assign({ key: '
|
|
1425
|
+
return (index.h(index.Host, Object.assign({ key: '2edd8333c630efbce59071f8a383e4326e928dbc', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
|
|
1498
1426
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
1499
|
-
}, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && index.h("ion-backdrop", { key: '
|
|
1427
|
+
}, class: Object.assign(Object.assign({}, theme.getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [overlays.FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && index.h("ion-backdrop", { key: 'aac4e68b08197534375e8ea3f8c9ea0c10ab2af4', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), index.h("div", { key: 'b7f4ebf57d4148b32856b0075d286f454be8de5d', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && index.h("div", { key: '607d94c28d73e8e957175a7c0f6e8a99ec4dcd53', class: "popover-arrow", part: "arrow" }), index.h("div", { key: '4366a5a5de550c09895e923f345583508e1ec30c', class: "popover-content", part: "content" }, index.h("slot", { key: 'eb7886fbc99c15b667b7d825d24f1c12d9380f03' })))));
|
|
1500
1428
|
}
|
|
1501
1429
|
get el() { return index.getElement(this); }
|
|
1502
1430
|
static get watchers() { return {
|
|
@@ -42,7 +42,7 @@ const ProgressBar = class {
|
|
|
42
42
|
const mode = ionicGlobal.getIonMode(this);
|
|
43
43
|
// If the progress is displayed as a solid bar.
|
|
44
44
|
const progressSolid = buffer === 1;
|
|
45
|
-
return (index.h(index.Host, { key: '
|
|
45
|
+
return (index.h(index.Host, { key: 'c859e48f3d24a458239e36d925e5dc003ed07c6b', role: "progressbar", "aria-valuenow": type === 'determinate' ? value : null, "aria-valuemin": "0", "aria-valuemax": "1", class: theme.createColorClasses(color, {
|
|
46
46
|
[mode]: true,
|
|
47
47
|
[`progress-bar-${type}`]: true,
|
|
48
48
|
'progress-paused': paused,
|
|
@@ -138,7 +138,7 @@ const Radio = class {
|
|
|
138
138
|
const { checked, disabled, color, el, justify, labelPlacement, hasLabel, buttonTabindex, alignment } = this;
|
|
139
139
|
const mode = ionicGlobal.getIonMode(this);
|
|
140
140
|
const inItem = theme.hostContext('ion-item', el);
|
|
141
|
-
return (index.h(index.Host, { key: '
|
|
141
|
+
return (index.h(index.Host, { key: 'af5dc59ed528150872e907ed1036e3e2decba939', onFocus: this.onFocus, onBlur: this.onBlur, onClick: this.onClick, class: theme.createColorClasses(color, {
|
|
142
142
|
[mode]: true,
|
|
143
143
|
'in-item': inItem,
|
|
144
144
|
'radio-checked': checked,
|
|
@@ -149,10 +149,10 @@ const Radio = class {
|
|
|
149
149
|
// Focus and active styling should not apply when the radio is in an item
|
|
150
150
|
'ion-activatable': !inItem,
|
|
151
151
|
'ion-focusable': !inItem,
|
|
152
|
-
}), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, index.h("label", { key: '
|
|
152
|
+
}), role: "radio", "aria-checked": checked ? 'true' : 'false', "aria-disabled": disabled ? 'true' : null, tabindex: buttonTabindex }, index.h("label", { key: '1312aba3259a87fe23a6911cdfa477e309469c8b', class: "radio-wrapper" }, index.h("div", { key: 'b342aa27e240a300836d2a135658d346b95daf09', class: {
|
|
153
153
|
'label-text-wrapper': true,
|
|
154
154
|
'label-text-wrapper-hidden': !hasLabel,
|
|
155
|
-
}, part: "label" }, index.h("slot", { key: '
|
|
155
|
+
}, part: "label" }, index.h("slot", { key: '0a4613d29aa783d1882cf889377f7e4fd4fea51d' })), index.h("div", { key: '191faea79dc4cd8befc4b873f5bd9f5af8ca2acc', class: "native-wrapper" }, this.renderRadioControl()))));
|
|
156
156
|
}
|
|
157
157
|
get el() { return index.getElement(this); }
|
|
158
158
|
static get watchers() { return {
|
|
@@ -405,7 +405,7 @@ const RadioGroup = class {
|
|
|
405
405
|
const { label, labelId, el, name, value } = this;
|
|
406
406
|
const mode = ionicGlobal.getIonMode(this);
|
|
407
407
|
helpers.renderHiddenInput(true, el, name, value, false);
|
|
408
|
-
return (index.h(index.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(), index.h("
|
|
408
|
+
return (index.h(index.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(), index.h("slot", { key: 'd683b01c1ba34fe843c4b320bce4661a117472a5' })));
|
|
409
409
|
}
|
|
410
410
|
get el() { return index.getElement(this); }
|
|
411
411
|
static get watchers() { return {
|