@ionic/core 8.8.4-dev.11776246162.138c2737 → 8.8.4-dev.11776330355.18181725
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/index.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-loading.js +1 -1
- package/components/ion-menu.js +1 -1
- package/components/ion-modal.js +1 -1
- package/components/ion-picker-legacy.js +1 -1
- package/components/ion-popover.js +1 -1
- package/components/ion-range.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/p-B6czg-mf.js +4 -0
- package/components/p-BGHaEUgp.js +4 -0
- package/components/{p-CEUppJkx.js → p-BR9Yxas9.js} +1 -1
- package/components/p-Ch9P0ikq.js +4 -0
- package/components/p-GytrfCp8.js +4 -0
- package/components/p-ZeIAjDcZ.js +4 -0
- package/components/{p-B36-MWK0.js → p-iwGbwewM.js} +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +5 -29
- package/dist/cjs/ion-alert.cjs.entry.js +4 -29
- package/dist/cjs/ion-datetime_3.cjs.entry.js +4 -28
- package/dist/cjs/ion-loading.cjs.entry.js +4 -29
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-modal.cjs.entry.js +79 -176
- package/dist/cjs/ion-popover.cjs.entry.js +4 -90
- package/dist/cjs/ion-range.cjs.entry.js +8 -5
- package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-toast.cjs.entry.js +4 -32
- package/dist/cjs/{overlays-BbhewSIQ.js → overlays-Dhoy6v_5.js} +4 -4
- package/dist/collection/components/action-sheet/action-sheet.js +4 -5
- package/dist/collection/components/alert/alert.js +3 -4
- package/dist/collection/components/loading/loading.js +3 -4
- package/dist/collection/components/modal/gestures/sheet.js +9 -71
- package/dist/collection/components/modal/modal.ionic.css +1 -1
- package/dist/collection/components/modal/modal.js +5 -6
- package/dist/collection/components/picker-legacy/picker.js +3 -4
- package/dist/collection/components/popover/popover.js +3 -4
- package/dist/collection/components/range/range.ionic.css +14 -10
- package/dist/collection/components/range/range.js +7 -4
- package/dist/collection/components/tab-bar/tab-bar.ionic.css +9 -0
- package/dist/collection/components/toast/toast.js +3 -4
- package/dist/collection/utils/overlays.js +5 -5
- package/dist/docs.json +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +5 -29
- package/dist/esm/ion-alert.entry.js +4 -29
- package/dist/esm/ion-datetime_3.entry.js +4 -28
- package/dist/esm/ion-loading.entry.js +4 -29
- package/dist/esm/ion-menu_3.entry.js +1 -1
- package/dist/esm/ion-modal.entry.js +80 -177
- package/dist/esm/ion-popover.entry.js +4 -90
- package/dist/esm/ion-range.entry.js +8 -5
- package/dist/esm/ion-select-modal.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +1 -1
- package/dist/esm/ion-tab-bar_2.entry.js +1 -1
- package/dist/esm/ion-toast.entry.js +4 -32
- package/dist/esm/{overlays-VA-4NWjf.js → overlays-CvFHfO3y.js} +5 -5
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-bae3ebe5.entry.js → p-2095969c.entry.js} +1 -1
- package/dist/ionic/p-3884bfa4.entry.js +4 -0
- package/dist/ionic/p-4b0f5ffd.entry.js +4 -0
- package/dist/ionic/p-57aeb097.entry.js +4 -0
- package/{components/p-CSexRbnt.js → dist/ionic/p-6be2b2d3.entry.js} +1 -1
- package/dist/ionic/p-6bffc700.entry.js +4 -0
- package/dist/ionic/{p-ba9f8cbb.entry.js → p-9acd3fd3.entry.js} +1 -1
- package/dist/ionic/p-BYtS2rae.js +4 -0
- package/dist/ionic/{p-0cb50208.entry.js → p-a283aa4d.entry.js} +1 -1
- package/dist/ionic/p-d954cd19.entry.js +4 -0
- package/dist/ionic/{p-1efe83c8.entry.js → p-db4f4eaf.entry.js} +1 -1
- package/dist/ionic/p-e9d6ce67.entry.js +4 -0
- package/dist/ionic/p-ef0c281a.entry.js +4 -0
- package/dist/types/components/modal/gestures/sheet.d.ts +1 -1
- package/dist/types/utils/overlays.d.ts +1 -1
- package/hydrate/index.js +110 -416
- package/hydrate/index.mjs +110 -416
- package/package.json +1 -1
- package/components/p-BDPU2685.js +0 -4
- package/components/p-BrNzoF1U.js +0 -4
- package/components/p-DNdBtsfu.js +0 -4
- package/components/p-Njik5v4C.js +0 -4
- package/dist/collection/components/action-sheet/animations/ionic.enter.js +0 -27
- package/dist/collection/components/action-sheet/animations/ionic.leave.js +0 -21
- package/dist/collection/components/alert/animations/ionic.enter.js +0 -28
- package/dist/collection/components/alert/animations/ionic.leave.js +0 -19
- package/dist/collection/components/loading/animations/ionic.enter.js +0 -28
- package/dist/collection/components/loading/animations/ionic.leave.js +0 -22
- package/dist/collection/components/modal/animations/ionic.enter.js +0 -40
- package/dist/collection/components/modal/animations/ionic.leave.js +0 -28
- package/dist/collection/components/picker-legacy/animations/ionic.enter.js +0 -27
- package/dist/collection/components/picker-legacy/animations/ionic.leave.js +0 -23
- package/dist/collection/components/popover/animations/ionic.enter.js +0 -91
- package/dist/collection/components/popover/animations/ionic.leave.js +0 -29
- package/dist/collection/components/toast/animations/ionic.enter.js +0 -33
- package/dist/collection/components/toast/animations/ionic.leave.js +0 -16
- package/dist/ionic/p-07b129d5.entry.js +0 -4
- package/dist/ionic/p-27edb91a.entry.js +0 -4
- package/dist/ionic/p-3d4c8528.entry.js +0 -4
- package/dist/ionic/p-6992d9d6.entry.js +0 -4
- package/dist/ionic/p-9dd4276b.entry.js +0 -4
- package/dist/ionic/p-BExfzy0B.js +0 -4
- package/dist/ionic/p-a3d794ba.entry.js +0 -4
- package/dist/ionic/p-cdfbe4cc.entry.js +0 -4
- package/dist/ionic/p-fa701753.entry.js +0 -4
- package/dist/types/components/action-sheet/animations/ionic.enter.d.ts +0 -5
- package/dist/types/components/action-sheet/animations/ionic.leave.d.ts +0 -5
- package/dist/types/components/alert/animations/ionic.enter.d.ts +0 -5
- package/dist/types/components/alert/animations/ionic.leave.d.ts +0 -5
- package/dist/types/components/loading/animations/ionic.enter.d.ts +0 -5
- package/dist/types/components/loading/animations/ionic.leave.d.ts +0 -5
- package/dist/types/components/modal/animations/ionic.enter.d.ts +0 -6
- package/dist/types/components/modal/animations/ionic.leave.d.ts +0 -6
- package/dist/types/components/picker-legacy/animations/ionic.enter.d.ts +0 -5
- package/dist/types/components/picker-legacy/animations/ionic.leave.d.ts +0 -5
- package/dist/types/components/popover/animations/ionic.enter.d.ts +0 -5
- package/dist/types/components/popover/animations/ionic.leave.d.ts +0 -5
- package/dist/types/components/toast/animations/ionic.enter.d.ts +0 -6
- package/dist/types/components/toast/animations/ionic.leave.d.ts +0 -5
|
@@ -7,16 +7,16 @@ import { clamp, getElementRoot, raf } from "../../../utils/helpers";
|
|
|
7
7
|
import { FOCUS_TRAP_DISABLE_CLASS } from "../../../utils/overlays";
|
|
8
8
|
import { getBackdropValueForSheet } from "../utils";
|
|
9
9
|
import { calculateSpringStep, handleCanDismiss } from "./utils";
|
|
10
|
-
export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange,
|
|
10
|
+
export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpoint, backdropBreakpoint, animation, breakpoints = [], expandToScroll, getCurrentBreakpoint, onDismiss, onBreakpointChange, staticBackdropOpacity, onDragStart, onDragMove, onDragEnd) => {
|
|
11
11
|
// Defaults for the sheet swipe animation
|
|
12
12
|
const defaultBackdrop = [
|
|
13
13
|
{ offset: 0, opacity: 'var(--backdrop-opacity)' },
|
|
14
|
-
{ offset: 1, opacity:
|
|
14
|
+
{ offset: 1, opacity: staticBackdropOpacity ? 'var(--backdrop-opacity)' : 0.01 },
|
|
15
15
|
];
|
|
16
16
|
const customBackdrop = [
|
|
17
17
|
{ offset: 0, opacity: 'var(--backdrop-opacity)' },
|
|
18
|
-
{ offset: 1 - backdropBreakpoint, opacity:
|
|
19
|
-
{ offset: 1, opacity:
|
|
18
|
+
{ offset: 1 - backdropBreakpoint, opacity: staticBackdropOpacity ? 'var(--backdrop-opacity)' : 0 },
|
|
19
|
+
{ offset: 1, opacity: staticBackdropOpacity ? 'var(--backdrop-opacity)' : 0 },
|
|
20
20
|
];
|
|
21
21
|
const SheetDefaults = {
|
|
22
22
|
WRAPPER_KEYFRAMES: [
|
|
@@ -339,9 +339,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
339
339
|
: step;
|
|
340
340
|
offset = clamp(0.0001, processedStep, maxStep);
|
|
341
341
|
animation.progressStep(offset);
|
|
342
|
-
const snapBreakpoint =
|
|
343
|
-
? calculateIonicSnapBreakpoint(detail.deltaY, detail.velocityY, detail.currentY)
|
|
344
|
-
: calculateSnapBreakpoint(detail.deltaY);
|
|
342
|
+
const snapBreakpoint = calculateSnapBreakpoint(detail.deltaY);
|
|
345
343
|
const eventDetail = {
|
|
346
344
|
currentY: detail.currentY,
|
|
347
345
|
deltaY: detail.deltaY,
|
|
@@ -352,9 +350,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
352
350
|
onDragMove(eventDetail);
|
|
353
351
|
};
|
|
354
352
|
const onEnd = (detail) => {
|
|
355
|
-
const snapBreakpoint =
|
|
356
|
-
? calculateIonicSnapBreakpoint(detail.deltaY, detail.velocityY, detail.currentY)
|
|
357
|
-
: calculateSnapBreakpoint(detail.deltaY);
|
|
353
|
+
const snapBreakpoint = calculateSnapBreakpoint(detail.deltaY);
|
|
358
354
|
const eventDetail = {
|
|
359
355
|
currentY: detail.currentY,
|
|
360
356
|
deltaY: detail.deltaY,
|
|
@@ -401,14 +397,6 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
401
397
|
*/
|
|
402
398
|
const shouldPreventDismiss = canDismiss && breakpoint === 0;
|
|
403
399
|
const snapToBreakpoint = shouldPreventDismiss ? currentBreakpoint : breakpoint;
|
|
404
|
-
/**
|
|
405
|
-
* Detect snap-back behavior: when the snap target is the same as the current breakpoint,
|
|
406
|
-
* the user released before crossing the threshold to a new breakpoint.
|
|
407
|
-
* Apply different timing and easing for snap-back vs. snap-to-new.
|
|
408
|
-
*/
|
|
409
|
-
const isSnapBack = snapToBreakpoint === currentBreakpoint;
|
|
410
|
-
const duration = isIonicTheme ? (isSnapBack ? 300 : 400) : 500;
|
|
411
|
-
const easing = isSnapBack ? 'cubic-bezier(0.34, 1.4, 0.64, 1)' : 'cubic-bezier(0.32, 0.68, 0, 1)';
|
|
412
400
|
const shouldRemainOpen = snapToBreakpoint !== 0;
|
|
413
401
|
currentBreakpoint = 0;
|
|
414
402
|
/**
|
|
@@ -423,13 +411,13 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
423
411
|
backdropAnimation.keyframes([
|
|
424
412
|
{
|
|
425
413
|
offset: 0,
|
|
426
|
-
opacity:
|
|
414
|
+
opacity: staticBackdropOpacity
|
|
427
415
|
? 'var(--backdrop-opacity)'
|
|
428
416
|
: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(1 - breakpointOffset, backdropBreakpoint)})`,
|
|
429
417
|
},
|
|
430
418
|
{
|
|
431
419
|
offset: 1,
|
|
432
|
-
opacity:
|
|
420
|
+
opacity: staticBackdropOpacity
|
|
433
421
|
? 'var(--backdrop-opacity)'
|
|
434
422
|
: `calc(var(--backdrop-opacity) * ${getBackdropValueForSheet(snapToBreakpoint, backdropBreakpoint)})`,
|
|
435
423
|
},
|
|
@@ -449,12 +437,6 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
449
437
|
}
|
|
450
438
|
animation.progressStep(0);
|
|
451
439
|
}
|
|
452
|
-
/**
|
|
453
|
-
* Apply the appropriate easing curve for this snap behavior.
|
|
454
|
-
*/
|
|
455
|
-
if (isIonicTheme) {
|
|
456
|
-
animation.easing(easing);
|
|
457
|
-
}
|
|
458
440
|
/**
|
|
459
441
|
* Gesture should remain disabled until the
|
|
460
442
|
* snapping animation completes.
|
|
@@ -544,7 +526,7 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
544
526
|
* be added every time onEnd runs.
|
|
545
527
|
*/
|
|
546
528
|
}, { oneTimeCallback: true })
|
|
547
|
-
.progressEnd(1, 0, animated ?
|
|
529
|
+
.progressEnd(1, 0, animated ? 500 : 0);
|
|
548
530
|
});
|
|
549
531
|
};
|
|
550
532
|
/**
|
|
@@ -575,50 +557,6 @@ export const createSheetGesture = (baseEl, backdropEl, wrapperEl, initialBreakpo
|
|
|
575
557
|
});
|
|
576
558
|
return snapBreakpoint;
|
|
577
559
|
};
|
|
578
|
-
/**
|
|
579
|
-
* Calculates the Ionic-specific snap breakpoint using velocity-based logic.
|
|
580
|
-
* This provides a more intuitive and responsive sheet behavior for the Ionic theme.
|
|
581
|
-
*
|
|
582
|
-
* Rules:
|
|
583
|
-
* 1. Fast downward flick (> 500 px/s) always dismisses, regardless of position
|
|
584
|
-
* 2. Fast upward flick (> 400 px/s) snaps to the next breakpoint above
|
|
585
|
-
* 3. If dragged 40% below current snap point without fast upward flick, dismisses
|
|
586
|
-
* 4. Otherwise, falls back to position-based snap (closest breakpoint)
|
|
587
|
-
*
|
|
588
|
-
* @param deltaY The change in Y position since gesture started
|
|
589
|
-
* @param velocityY The velocity in pixels per millisecond
|
|
590
|
-
* @param currentY The current Y position of the gesture
|
|
591
|
-
* @returns The snap breakpoint value
|
|
592
|
-
*/
|
|
593
|
-
const calculateIonicSnapBreakpoint = (deltaY, velocityY, currentY) => {
|
|
594
|
-
// Convert velocity from px/ms to px/s for easier threshold comparison
|
|
595
|
-
const velocityYPerSecond = velocityY * 1000;
|
|
596
|
-
// Calculate current progress (0 = fully closed, 1 = fully expanded)
|
|
597
|
-
const currentProgress = calculateProgress(currentY);
|
|
598
|
-
// Rule 1: Fast downward flick always dismisses
|
|
599
|
-
if (velocityYPerSecond > 500) {
|
|
600
|
-
return minBreakpoint;
|
|
601
|
-
}
|
|
602
|
-
// Rule 2: Fast upward flick moves to next breakpoint above
|
|
603
|
-
if (velocityYPerSecond < -400) {
|
|
604
|
-
// Find next breakpoint above current position
|
|
605
|
-
const nextBreakpoint = breakpoints.find((bp) => bp > currentProgress);
|
|
606
|
-
// If no breakpoint above, stay at max breakpoint
|
|
607
|
-
return nextBreakpoint !== null && nextBreakpoint !== void 0 ? nextBreakpoint : maxBreakpoint;
|
|
608
|
-
}
|
|
609
|
-
// Rule 3: 40% dismissal rule (only if not flicking up and 0 breakpoint exists)
|
|
610
|
-
if (minBreakpoint === 0 && currentBreakpoint > 0) {
|
|
611
|
-
// Calculate how far we've moved below the current snap point
|
|
612
|
-
const distanceBelowSnap = currentBreakpoint - currentProgress;
|
|
613
|
-
const percentageBelowSnap = distanceBelowSnap / currentBreakpoint;
|
|
614
|
-
// If dragged more than 40% below and not flicking up, dismiss
|
|
615
|
-
if (percentageBelowSnap > 0.4 && velocityYPerSecond <= 400) {
|
|
616
|
-
return 0;
|
|
617
|
-
}
|
|
618
|
-
}
|
|
619
|
-
// Rule 4: Fallback to position-based snap (existing logic)
|
|
620
|
-
return calculateSnapBreakpoint(deltaY);
|
|
621
|
-
};
|
|
622
560
|
/**
|
|
623
561
|
* Calculates the progress of the swipe gesture.
|
|
624
562
|
*
|
|
@@ -191,7 +191,7 @@ ion-backdrop {
|
|
|
191
191
|
:host {
|
|
192
192
|
--background: var(--token-bg-surface-default, var(--token-primitives-base-white, #ffffff));
|
|
193
193
|
--box-shadow: var(--token-elevation-3, 0px 2px 7px 0px rgba(0, 0, 0, 0.05), 0px 6px 32px 0px rgba(0, 0, 0, 0.16));
|
|
194
|
-
--backdrop-opacity:
|
|
194
|
+
--backdrop-opacity: 1;
|
|
195
195
|
color: var(--token-text-default, var(--token-primitives-neutral-1200, #242424));
|
|
196
196
|
}
|
|
197
197
|
|
|
@@ -14,7 +14,6 @@ import { deepReady, waitForMount } from "../../utils/transition/index";
|
|
|
14
14
|
import { config } from "../../global/config";
|
|
15
15
|
import { getIonMode, getIonTheme } from "../../global/ionic-global";
|
|
16
16
|
import { KEYBOARD_DID_OPEN } from "../../utils/keyboard/keyboard";
|
|
17
|
-
import { ionicEnterAnimation } from "./animations/ionic.enter";
|
|
18
17
|
import { iosEnterAnimation } from "./animations/ios.enter";
|
|
19
18
|
import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
20
19
|
import { portraitToLandscapeTransition, landscapeToPortraitTransition } from "./animations/ios.transition";
|
|
@@ -455,7 +454,7 @@ export class Modal {
|
|
|
455
454
|
this.statusBarStyle = await StatusBar.getStyle();
|
|
456
455
|
setCardStatusBarDark();
|
|
457
456
|
}
|
|
458
|
-
await present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation,
|
|
457
|
+
await present(this, 'modalEnter', iosEnterAnimation, mdEnterAnimation, {
|
|
459
458
|
presentingEl: presentingElement,
|
|
460
459
|
currentBreakpoint: this.initialBreakpoint,
|
|
461
460
|
backdropBreakpoint: this.backdropBreakpoint,
|
|
@@ -1150,20 +1149,20 @@ export class Modal {
|
|
|
1150
1149
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
1151
1150
|
const shape = this.getShape();
|
|
1152
1151
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
1153
|
-
return (h(Host, Object.assign({ key: '
|
|
1152
|
+
return (h(Host, Object.assign({ key: '4b323edb66d28260c34b31fd2af8f4ae53a7ef90', "no-router": true,
|
|
1154
1153
|
// Allow the modal to be navigable when the handle is focusable
|
|
1155
1154
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
1156
1155
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
1157
|
-
}, class: Object.assign({ [theme]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-${shape}`]: shape !== undefined, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '
|
|
1156
|
+
}, class: Object.assign({ [theme]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-${shape}`]: shape !== undefined, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '6059e348dc3d020f995577dde1b7949bdb2c0f2f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), theme === 'ios' && h("div", { key: '5a08a99dfc3de51ac7516fc76fdba3672f84db71', class: "modal-shadow" }), h("div", Object.assign({ key: 'a7a841a5b2f740fbf576b82b82782aa235b701ee',
|
|
1158
1157
|
/*
|
|
1159
1158
|
role and aria-modal must be used on the
|
|
1160
1159
|
same element. They must also be set inside the
|
|
1161
1160
|
shadow DOM otherwise ion-button will not be highlighted
|
|
1162
1161
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
1163
1162
|
*/
|
|
1164
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
1163
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'ca5567e9ab3e9e80b41314d396106faf2da09ffe', class: "modal-handle",
|
|
1165
1164
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
1166
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: '
|
|
1165
|
+
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle", ref: (el) => (this.dragHandleEl = el) })), h("slot", { key: 'da5471ea4292166798d3f949e79e7b3e55a0e83f', onSlotchange: this.onSlotChange }))));
|
|
1167
1166
|
}
|
|
1168
1167
|
static get is() { return "ion-modal"; }
|
|
1169
1168
|
static get encapsulation() { return "shadow"; }
|
|
@@ -8,7 +8,6 @@ import { printIonWarning } from "../../utils/logging/index";
|
|
|
8
8
|
import { createDelegateController, createTriggerController, BACKDROP, dismiss, eventMethod, isCancel, prepareOverlay, present, safeCall, setOverlayId, } from "../../utils/overlays";
|
|
9
9
|
import { getClassMap } from "../../utils/theme";
|
|
10
10
|
import { getIonTheme } from "../../global/ionic-global";
|
|
11
|
-
import { ionicEnterAnimation } from "./animations/ionic.enter";
|
|
12
11
|
import { iosEnterAnimation } from "./animations/ios.enter";
|
|
13
12
|
import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
14
13
|
// TODO(FW-2832): types
|
|
@@ -124,7 +123,7 @@ export class Picker {
|
|
|
124
123
|
async present() {
|
|
125
124
|
const unlock = await this.lockController.lock();
|
|
126
125
|
await this.delegateController.attachViewToDom();
|
|
127
|
-
await present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation,
|
|
126
|
+
await present(this, 'pickerEnter', iosEnterAnimation, iosEnterAnimation, undefined);
|
|
128
127
|
if (this.duration > 0) {
|
|
129
128
|
this.durationTimeout = setTimeout(() => this.dismiss(), this.duration);
|
|
130
129
|
}
|
|
@@ -209,11 +208,11 @@ export class Picker {
|
|
|
209
208
|
render() {
|
|
210
209
|
const { htmlAttributes } = this;
|
|
211
210
|
const theme = getIonTheme(this);
|
|
212
|
-
return (h(Host, Object.assign({ key: '
|
|
211
|
+
return (h(Host, Object.assign({ key: 'efcc823fad9cb37c1379bef4f4b84c6461f3a3a6', "aria-modal": "true", tabindex: "-1" }, htmlAttributes, { style: {
|
|
213
212
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
214
213
|
}, class: Object.assign({ [theme]: true,
|
|
215
214
|
// Used internally for styling
|
|
216
|
-
[`picker-${theme}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: '
|
|
215
|
+
[`picker-${theme}`]: true, 'overlay-hidden': true }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonPickerWillDismiss: this.dispatchCancelHandler }), h("ion-backdrop", { key: '3f44bf34e039210ae149c590c393ee9f7fb85da0', visible: this.showBackdrop, tappable: this.backdropDismiss }), h("div", { key: 'c2a51a89c525b1a22cbc8583cd30f41c3c356d4f', tabindex: "0", "aria-hidden": "true" }), h("div", { key: '23837ffe309d0aad9b8ea09d7ac94d21040ef0d7', class: "picker-wrapper ion-overlay-wrapper", role: "dialog" }, h("div", { key: '91ba7e553d570768142715ded4bcc27fceedbce4', class: "picker-toolbar" }, this.buttons.map((b) => (h("div", { class: buttonWrapperClass(b) }, h("button", { type: "button", onClick: () => this.buttonClick(b), class: buttonClass(b) }, b.text))))), h("div", { key: '22661cafeb555f1435ec1e0a122404a48136095b', class: "picker-columns" }, h("div", { key: '5f3db32468b8c60f63c70d81a27b18cce6f2e259', class: "picker-above-highlight" }), this.presented && this.columns.map((c) => h("ion-picker-legacy-column", { col: c })), h("div", { key: '1bae6b170125b1671a480506ba73636b42b65909', class: "picker-below-highlight" }))), h("div", { key: '91beb94ce537122fbd6cd0c2bd3c00f908d0fefe', tabindex: "0", "aria-hidden": "true" })));
|
|
217
216
|
}
|
|
218
217
|
static get is() { return "ion-picker-legacy"; }
|
|
219
218
|
static get encapsulation() { return "scoped"; }
|
|
@@ -12,7 +12,6 @@ import { isPlatform } from "../../utils/platform";
|
|
|
12
12
|
import { getClassMap } from "../../utils/theme";
|
|
13
13
|
import { deepReady, waitForMount } from "../../utils/transition/index";
|
|
14
14
|
import { getIonTheme } from "../../global/ionic-global";
|
|
15
|
-
import { ionicEnterAnimation } from "./animations/ionic.enter";
|
|
16
15
|
import { iosEnterAnimation } from "./animations/ios.enter";
|
|
17
16
|
import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
18
17
|
import { mdEnterAnimation } from "./animations/md.enter";
|
|
@@ -360,7 +359,7 @@ export class Popover {
|
|
|
360
359
|
else if (!this.keepContentsMounted) {
|
|
361
360
|
await waitForMount();
|
|
362
361
|
}
|
|
363
|
-
await present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation,
|
|
362
|
+
await present(this, 'popoverEnter', iosEnterAnimation, mdEnterAnimation, {
|
|
364
363
|
event: event || this.event,
|
|
365
364
|
size: this.size,
|
|
366
365
|
trigger: this.triggerEl,
|
|
@@ -469,9 +468,9 @@ export class Popover {
|
|
|
469
468
|
const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
|
|
470
469
|
const desktop = isPlatform('desktop');
|
|
471
470
|
const enableArrow = arrow && !parentPopover;
|
|
472
|
-
return (h(Host, Object.assign({ key: '
|
|
471
|
+
return (h(Host, Object.assign({ key: 'cc70f9b037b16ea78b999916106a1062ceb74cb6', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
|
|
473
472
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
474
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '
|
|
473
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: 'e641e7ee28cbd54911ec3f8c0bfd9d7e3f2e85cd', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: '750494585c3524b27e42d79f02e729f3eff9e660', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '2e49b4ad1287e31a3cdbfebc91120405a998dc95', class: "popover-arrow", part: "arrow" }), h("div", { key: '306586776e74acab787b2a96433553005bca580d', class: "popover-content", part: "content" }, h("slot", { key: '0273c0975cd7dc37db5cfa0b91d418867a77c4d8' })))));
|
|
475
474
|
}
|
|
476
475
|
static get is() { return "ion-popover"; }
|
|
477
476
|
static get encapsulation() { return "shadow"; }
|
|
@@ -430,28 +430,32 @@
|
|
|
430
430
|
margin-bottom: calc(var(--token-space-200, var(--token-scale-200, 8px)) + var(--token-font-size-300, 0.75rem));
|
|
431
431
|
}
|
|
432
432
|
|
|
433
|
-
.range-bar.
|
|
434
|
-
|
|
435
|
-
width: auto;
|
|
436
|
-
background: var(--bar-background-active);
|
|
433
|
+
.range-bar.has-ticks {
|
|
434
|
+
border-radius: 0;
|
|
437
435
|
}
|
|
436
|
+
|
|
438
437
|
.range-bar.range-bar-active.has-ticks {
|
|
439
|
-
border-radius: 0;
|
|
440
438
|
-webkit-margin-start: calc(-1 * var(--token-scale-100, 4px) * 0.5);
|
|
441
439
|
margin-inline-start: calc(-1 * var(--token-scale-100, 4px) * 0.5);
|
|
442
440
|
-webkit-margin-end: calc(-1 * var(--token-scale-100, 4px) * 0.5);
|
|
443
441
|
margin-inline-end: calc(-1 * var(--token-scale-100, 4px) * 0.5);
|
|
444
442
|
}
|
|
445
443
|
|
|
444
|
+
.range-bar.range-bar-active {
|
|
445
|
+
bottom: 0;
|
|
446
|
+
width: auto;
|
|
447
|
+
background: var(--bar-background-active);
|
|
448
|
+
}
|
|
449
|
+
|
|
446
450
|
.range-tick {
|
|
447
451
|
-webkit-margin-start: calc(var(--token-scale-100, 4px) * -0.5);
|
|
448
452
|
margin-inline-start: calc(var(--token-scale-100, 4px) * -0.5);
|
|
449
|
-
border-radius: var(--token-border-radius-
|
|
453
|
+
border-radius: var(--token-border-radius-400, var(--token-scale-400, 16px));
|
|
450
454
|
position: absolute;
|
|
451
|
-
top: calc(var(--height) * 0.5 - var(--token-scale-
|
|
452
|
-
width: var(--token-scale-
|
|
453
|
-
height: var(--token-scale-
|
|
454
|
-
background: var(--
|
|
455
|
+
top: calc(var(--height) * 0.5 - var(--token-scale-400, 16px) * 0.5);
|
|
456
|
+
width: var(--token-scale-050, 2px);
|
|
457
|
+
height: var(--token-scale-400, 16px);
|
|
458
|
+
background: var(--bar-background);
|
|
455
459
|
pointer-events: none;
|
|
456
460
|
}
|
|
457
461
|
|
|
@@ -692,7 +692,10 @@ export class Range {
|
|
|
692
692
|
} }, ticks.map((tick) => (h("div", { style: tickStyle(tick), role: "presentation", class: {
|
|
693
693
|
'range-tick': true,
|
|
694
694
|
'range-tick-active': tick.active,
|
|
695
|
-
}, part: tick.active ? 'tick-active' : 'tick' }))), h("div", { class: "range-bar-container" }, h("div", { class:
|
|
695
|
+
}, part: tick.active ? 'tick-active' : 'tick' }))), h("div", { class: "range-bar-container" }, h("div", { class: {
|
|
696
|
+
'range-bar': true,
|
|
697
|
+
'has-ticks': ticks.length > 0,
|
|
698
|
+
}, role: "presentation", part: "bar" }), h("div", { class: {
|
|
696
699
|
'range-bar': true,
|
|
697
700
|
'range-bar-active': true,
|
|
698
701
|
'has-ticks': ticks.length > 0,
|
|
@@ -770,7 +773,7 @@ export class Range {
|
|
|
770
773
|
const valueAtMin = dualKnobs ? this.valA === min || this.valB === min : this.valA === min;
|
|
771
774
|
const valueAtMax = dualKnobs ? this.valA === max || this.valB === max : this.valA === max;
|
|
772
775
|
renderHiddenInput(true, el, this.name, JSON.stringify(this.getValue()), disabled);
|
|
773
|
-
return (h(Host, { key: '
|
|
776
|
+
return (h(Host, { key: '1b8ca217fa6965fc038fb4ca8f0bc9142b3893ad', onFocusin: this.onFocus, onFocusout: this.onBlur, id: rangeId, class: createColorClasses(this.color, {
|
|
774
777
|
[theme]: true,
|
|
775
778
|
'in-item': inItem,
|
|
776
779
|
'range-disabled': disabled,
|
|
@@ -784,10 +787,10 @@ export class Range {
|
|
|
784
787
|
'range-item-end-adjustment': needsEndAdjustment,
|
|
785
788
|
'range-value-min': valueAtMin,
|
|
786
789
|
'range-value-max': valueAtMax,
|
|
787
|
-
}) }, h("label", { key: '
|
|
790
|
+
}) }, h("label", { key: '98b02130c9bb5a9ba6557be28f1ac09be0d10806', class: "range-wrapper", id: "range-label" }, h("div", { key: '570083103b51b335c805672918d69e997dc30e66', class: {
|
|
788
791
|
'label-text-wrapper': true,
|
|
789
792
|
'label-text-wrapper-hidden': !hasLabel,
|
|
790
|
-
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '
|
|
793
|
+
}, part: "label" }, label !== undefined ? h("div", { class: "label-text" }, label) : h("slot", { name: "label" })), h("div", { key: '1e3233a747d0adca6611234d0675ce049ef979cf', class: "native-wrapper" }, h("slot", { key: '4f06a217592a98d889420468eb282ba8652ef1cc', name: "start" }), this.renderRangeSlider(), h("slot", { key: '4286279dbadf0e92bffbd5e98d5e36cba095be3c', name: "end" })))));
|
|
791
794
|
}
|
|
792
795
|
static get is() { return "ion-range"; }
|
|
793
796
|
static get encapsulation() { return "shadow"; }
|
|
@@ -185,6 +185,15 @@
|
|
|
185
185
|
bottom: calc(var(--token-space-400, var(--token-scale-400, 16px)) + var(--ion-safe-area-bottom, 0));
|
|
186
186
|
}
|
|
187
187
|
|
|
188
|
+
@supports (backdrop-filter: blur(0)) {
|
|
189
|
+
:host(.tab-bar-translucent) {
|
|
190
|
+
--background: rgba(255, 255, 255, 0.6);
|
|
191
|
+
backdrop-filter: var(--tab-bar-backdrop-filter, blur(12px));
|
|
192
|
+
}
|
|
193
|
+
:host(.tab-bar-translucent) ::slotted(ion-tab-button.ion-focused) {
|
|
194
|
+
--background: transparent;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
188
197
|
/* Soft */
|
|
189
198
|
:host(.tab-bar-soft) {
|
|
190
199
|
border-radius: var(--token-border-radius-400, var(--token-scale-400, 16px));
|
|
@@ -11,7 +11,6 @@ import { sanitizeDOMString } from "../../utils/sanitization/index";
|
|
|
11
11
|
import { createColorClasses, getClassMap } from "../../utils/theme";
|
|
12
12
|
import { config } from "../../global/config";
|
|
13
13
|
import { getIonMode, getIonTheme } from "../../global/ionic-global";
|
|
14
|
-
import { ionicEnterAnimation } from "./animations/ionic.enter";
|
|
15
14
|
import { iosEnterAnimation } from "./animations/ios.enter";
|
|
16
15
|
import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
17
16
|
import { mdEnterAnimation } from "./animations/md.enter";
|
|
@@ -225,7 +224,7 @@ export class Toast {
|
|
|
225
224
|
* in the dismiss animation.
|
|
226
225
|
*/
|
|
227
226
|
this.lastPresentedPosition = animationPosition;
|
|
228
|
-
await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation,
|
|
227
|
+
await present(this, 'toastEnter', iosEnterAnimation, mdEnterAnimation, {
|
|
229
228
|
position,
|
|
230
229
|
top: animationPosition.top,
|
|
231
230
|
bottom: animationPosition.bottom,
|
|
@@ -440,9 +439,9 @@ export class Toast {
|
|
|
440
439
|
if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
|
|
441
440
|
printIonWarning('[ion-toast] - This toast is using start and end buttons with the stacked toast layout. We recommend following the best practice of using either start or end buttons with the stacked toast layout.', el);
|
|
442
441
|
}
|
|
443
|
-
return (h(Host, Object.assign({ key: '
|
|
442
|
+
return (h(Host, Object.assign({ key: '3507eaa18a5559a9052d34db180e176952dc466f', tabindex: "-1" }, this.htmlAttributes, { style: {
|
|
444
443
|
zIndex: `${60000 + this.overlayIndex}`,
|
|
445
|
-
}, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true, [theme]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent, [`toast-shape-${shape}`]: shape !== undefined, [`toast-hue-${hue}`]: hue !== undefined })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '
|
|
444
|
+
}, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true, [theme]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent, [`toast-shape-${shape}`]: shape !== undefined, [`toast-hue-${hue}`]: hue !== undefined })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '195eb90ccd82a13254e843b80be0f380325accb4', class: wrapperClass, part: "wrapper" }, h("div", { key: 'd6072aa4a4848d72e68e04a7842d3f769f844ffc', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { key: '02a1d72aaf401d27671906c8b84abd823def6da8', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: '1f133c27927ad840f58ea2e9112719ef880bf9a5', class: "toast-content", part: "content", role: "status", "aria-atomic": "true", "aria-live": "polite" }, !revealContentToScreenReader && header !== undefined && this.renderHeader('oldHeader', 'true'), !revealContentToScreenReader && message !== undefined && this.renderToastMessage('oldMessage', 'true'), revealContentToScreenReader && header !== undefined && this.renderHeader('header'), revealContentToScreenReader && message !== undefined && this.renderToastMessage('header')), this.renderButtons(endButtons, 'end')))));
|
|
446
445
|
}
|
|
447
446
|
static get is() { return "ion-toast"; }
|
|
448
447
|
static get encapsulation() { return "shadow"; }
|
|
@@ -6,7 +6,7 @@ import { focusFirstDescendant, focusLastDescendant, focusableQueryString } from
|
|
|
6
6
|
import { shouldUseCloseWatcher } from "./hardware-back-button";
|
|
7
7
|
import { printIonError, printIonWarning } from "./logging/index";
|
|
8
8
|
import { config } from "../global/config";
|
|
9
|
-
import { getIonMode
|
|
9
|
+
import { getIonMode } from "../global/ionic-global";
|
|
10
10
|
import { CoreDelegate } from "./framework-delegate";
|
|
11
11
|
import { BACKDROP_NO_SCROLL } from "./gesture/gesture-controller";
|
|
12
12
|
import { OVERLAY_BACK_BUTTON_PRIORITY } from "./hardware-back-button";
|
|
@@ -512,7 +512,7 @@ export const setRootAriaHidden = (hidden = false) => {
|
|
|
512
512
|
viewContainer.removeAttribute('aria-hidden');
|
|
513
513
|
}
|
|
514
514
|
};
|
|
515
|
-
export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation,
|
|
515
|
+
export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
|
|
516
516
|
var _a, _b;
|
|
517
517
|
if (overlay.presented) {
|
|
518
518
|
return;
|
|
@@ -560,11 +560,11 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
560
560
|
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
561
561
|
}
|
|
562
562
|
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
563
|
-
const theme = getIonTheme(overlay);
|
|
564
563
|
const mode = getIonMode(overlay);
|
|
565
|
-
const selectedAnimation = mode === 'ios' ? iosEnterAnimation : theme === 'ionic' ? ionicEnterAnimation : mdEnterAnimation;
|
|
566
564
|
// get the user's animation fn if one was provided
|
|
567
|
-
const animationBuilder = overlay.enterAnimation
|
|
565
|
+
const animationBuilder = overlay.enterAnimation
|
|
566
|
+
? overlay.enterAnimation
|
|
567
|
+
: config.get(name, mode === 'ios' ? iosEnterAnimation : mdEnterAnimation);
|
|
568
568
|
const completed = await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
|
|
569
569
|
if (completed) {
|
|
570
570
|
overlay.didPresent.emit();
|
package/dist/docs.json
CHANGED
package/dist/esm/index.js
CHANGED
|
@@ -13,7 +13,7 @@ export { L as LogLevel } from './index-Omi_TcwW.js';
|
|
|
13
13
|
export { I as IonicSafeString, g as getMode, s as setupConfig } from './config-BvDxfLa-.js';
|
|
14
14
|
export { o as openURL } from './theme-DaJxRxSQ.js';
|
|
15
15
|
export { m as menuController } from './index-hpH08p5s.js';
|
|
16
|
-
export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-
|
|
16
|
+
export { b as actionSheetController, a as alertController, l as loadingController, m as modalController, p as pickerController, c as popoverController, t as toastController } from './overlays-CvFHfO3y.js';
|
|
17
17
|
import './gesture-controller-BTEOs1at.js';
|
|
18
18
|
import './focus-visible-vXpMhGrs.js';
|
|
19
19
|
import './framework-delegate-CjVwn_KZ.js';
|
|
@@ -5,7 +5,7 @@ import { r as registerInstance, c as createEvent, a as readTask, h, d as Host, g
|
|
|
5
5
|
import { c as createButtonActiveGesture } from './button-active-g6ZnZzDZ.js';
|
|
6
6
|
import { r as raf } from './helpers-Do7zwvM1.js';
|
|
7
7
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
8
|
-
import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-
|
|
8
|
+
import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, f as present, g as dismiss, h as eventMethod, s as safeCall, j as prepareOverlay, k as setOverlayId } from './overlays-CvFHfO3y.js';
|
|
9
9
|
import { g as getClassMap } from './theme-DaJxRxSQ.js';
|
|
10
10
|
import { b as getIonMode, c as getIonTheme } from './ionic-global-CAZb-5i-.js';
|
|
11
11
|
import { c as createAnimation } from './animation-Cqe2x-Pt.js';
|
|
@@ -16,30 +16,6 @@ import './gesture-controller-BTEOs1at.js';
|
|
|
16
16
|
import './focus-visible-vXpMhGrs.js';
|
|
17
17
|
import './framework-delegate-CjVwn_KZ.js';
|
|
18
18
|
|
|
19
|
-
/**
|
|
20
|
-
* MD Action Sheet Enter Animation
|
|
21
|
-
*/
|
|
22
|
-
const ionicEnterAnimation = (baseEl) => {
|
|
23
|
-
const baseAnimation = createAnimation();
|
|
24
|
-
const backdropAnimation = createAnimation();
|
|
25
|
-
const wrapperAnimation = createAnimation();
|
|
26
|
-
backdropAnimation
|
|
27
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
28
|
-
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
29
|
-
.beforeStyles({
|
|
30
|
-
'pointer-events': 'none',
|
|
31
|
-
})
|
|
32
|
-
.afterClearStyles(['pointer-events']);
|
|
33
|
-
wrapperAnimation
|
|
34
|
-
.addElement(baseEl.querySelector('.action-sheet-wrapper'))
|
|
35
|
-
.fromTo('transform', 'translateY(100%)', 'translateY(0%)');
|
|
36
|
-
return baseAnimation
|
|
37
|
-
.addElement(baseEl)
|
|
38
|
-
.easing('cubic-bezier(.36,.66,.04,1)')
|
|
39
|
-
.duration(400)
|
|
40
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
41
|
-
};
|
|
42
|
-
|
|
43
19
|
/**
|
|
44
20
|
* iOS Action Sheet Enter Animation
|
|
45
21
|
*/
|
|
@@ -222,7 +198,7 @@ const ActionSheet = class {
|
|
|
222
198
|
async present() {
|
|
223
199
|
const unlock = await this.lockController.lock();
|
|
224
200
|
await this.delegateController.attachViewToDom();
|
|
225
|
-
await present(this, 'actionSheetEnter', iosEnterAnimation, mdEnterAnimation
|
|
201
|
+
await present(this, 'actionSheetEnter', iosEnterAnimation, mdEnterAnimation);
|
|
226
202
|
unlock();
|
|
227
203
|
}
|
|
228
204
|
/**
|
|
@@ -512,12 +488,12 @@ const ActionSheet = class {
|
|
|
512
488
|
const cancelButton = allButtons.find((b) => b.role === 'cancel');
|
|
513
489
|
const buttons = allButtons.filter((b) => b.role !== 'cancel');
|
|
514
490
|
const headerID = `action-sheet-${overlayIndex}-header`;
|
|
515
|
-
return (h(Host, Object.assign({ key: '
|
|
491
|
+
return (h(Host, Object.assign({ key: '3ef5b086f7a4ac4f361de8dcff5255ed1d2bcbdf', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
516
492
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
517
|
-
}, class: Object.assign(Object.assign({ [theme]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '
|
|
493
|
+
}, class: Object.assign(Object.assign({ [theme]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: 'd98bb285f8a09a4207f35f930da77548bcdf529a', tappable: this.backdropDismiss }), h("div", { key: '6cd6aba45144244a51d76bfe0b606c3fb9a882ea', tabindex: "0", "aria-hidden": "true" }), h("div", { key: 'e6a007bcde062bd2ea7c094394aa0024ee595c9e', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '31948475a84d28488fd53e7fde16cb1deff14a2f', class: "action-sheet-container" }, h("div", { key: '4f2bbc00d36792cf6e24c402f5396546653f1e00', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (h("div", { key: '68bcafe38b49be0fe21e3e4820ee3f05f6abffad', id: headerID, class: {
|
|
518
494
|
'action-sheet-title': true,
|
|
519
495
|
'action-sheet-has-sub-title': this.subHeader !== undefined,
|
|
520
|
-
} }, header, this.subHeader && h("div", { key: '
|
|
496
|
+
} }, header, this.subHeader && h("div", { key: 'd253c010d0bba4a38836b6319b2d8073e1a526b9', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (h("div", { key: 'b30f50a64b425a992e26673bf072332d7c3b3409', class: "action-sheet-group action-sheet-group-cancel" }, h("button", Object.assign({ key: 'e35087c05c7c8f04ca9aef322917f8172c0c4f8f' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), h("span", { key: '1f7a50fac729e19d0ee12d54bc67e071ff7b3f08', class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { key: '452641544297efc017529b674235e269285c4100', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), theme === 'md' && h("ion-ripple-effect", { key: '15795e15d27297e6e87f7fe39386bb8581993dfa' })))))), h("div", { key: '301fef1a45d1c523221ec2312276dd3a62f3134d', tabindex: "0", "aria-hidden": "true" })));
|
|
521
497
|
}
|
|
522
498
|
get el() { return getElement(this); }
|
|
523
499
|
static get watchers() { return {
|
|
@@ -6,7 +6,7 @@ import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './conf
|
|
|
6
6
|
import { c as createButtonActiveGesture } from './button-active-g6ZnZzDZ.js';
|
|
7
7
|
import { r as raf } from './helpers-Do7zwvM1.js';
|
|
8
8
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
9
|
-
import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-
|
|
9
|
+
import { d as createDelegateController, e as createTriggerController, B as BACKDROP, i as isCancel, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod, s as safeCall } from './overlays-CvFHfO3y.js';
|
|
10
10
|
import { g as getClassMap } from './theme-DaJxRxSQ.js';
|
|
11
11
|
import { b as getIonMode, c as getIonTheme } from './ionic-global-CAZb-5i-.js';
|
|
12
12
|
import { c as createAnimation } from './animation-Cqe2x-Pt.js';
|
|
@@ -17,31 +17,6 @@ import './gesture-controller-BTEOs1at.js';
|
|
|
17
17
|
import './focus-visible-vXpMhGrs.js';
|
|
18
18
|
import './framework-delegate-CjVwn_KZ.js';
|
|
19
19
|
|
|
20
|
-
/**
|
|
21
|
-
* Ionic Alert Enter Animation
|
|
22
|
-
*/
|
|
23
|
-
const ionicEnterAnimation = (baseEl) => {
|
|
24
|
-
const baseAnimation = createAnimation();
|
|
25
|
-
const backdropAnimation = createAnimation();
|
|
26
|
-
const wrapperAnimation = createAnimation();
|
|
27
|
-
backdropAnimation
|
|
28
|
-
.addElement(baseEl.querySelector('ion-backdrop'))
|
|
29
|
-
.fromTo('opacity', 0.01, 'var(--backdrop-opacity)')
|
|
30
|
-
.beforeStyles({
|
|
31
|
-
'pointer-events': 'none',
|
|
32
|
-
})
|
|
33
|
-
.afterClearStyles(['pointer-events']);
|
|
34
|
-
wrapperAnimation.addElement(baseEl.querySelector('.alert-wrapper')).keyframes([
|
|
35
|
-
{ offset: 0, opacity: '0.01', transform: 'scale(0.9)' },
|
|
36
|
-
{ offset: 1, opacity: '1', transform: 'scale(1)' },
|
|
37
|
-
]);
|
|
38
|
-
return baseAnimation
|
|
39
|
-
.addElement(baseEl)
|
|
40
|
-
.easing('ease-in-out')
|
|
41
|
-
.duration(150)
|
|
42
|
-
.addAnimation([backdropAnimation, wrapperAnimation]);
|
|
43
|
-
};
|
|
44
|
-
|
|
45
20
|
/**
|
|
46
21
|
* iOS Alert Enter Animation
|
|
47
22
|
*/
|
|
@@ -365,7 +340,7 @@ const Alert = class {
|
|
|
365
340
|
async present() {
|
|
366
341
|
const unlock = await this.lockController.lock();
|
|
367
342
|
await this.delegateController.attachViewToDom();
|
|
368
|
-
await present(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation
|
|
343
|
+
await present(this, 'alertEnter', iosEnterAnimation, mdEnterAnimation).then(() => {
|
|
369
344
|
var _a, _b;
|
|
370
345
|
/**
|
|
371
346
|
* Check if alert has only one button and no inputs.
|
|
@@ -562,9 +537,9 @@ const Alert = class {
|
|
|
562
537
|
* If neither are defined, do not set aria-labelledby.
|
|
563
538
|
*/
|
|
564
539
|
const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
|
|
565
|
-
return (h(Host, { key: '
|
|
540
|
+
return (h(Host, { key: '53f8b0e1035ca965ba44f8e1314c59a227b08173', tabindex: "-1", style: {
|
|
566
541
|
zIndex: `${20000 + overlayIndex}`,
|
|
567
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '
|
|
542
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [theme]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, h("ion-backdrop", { key: '39499a198543709f538fa0328214d742754543ab', tappable: this.backdropDismiss }), h("div", { key: '16417758e5ac05cfa049db5086c1ffde81fc6156', tabindex: "0", "aria-hidden": "true" }), h("div", Object.assign({ key: 'cc7dde0877f70be21019cd2e8e6c843815ec9682', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), h("div", { key: '525d28d77b6467b441ff9d357049aec7565e6f6a', class: "alert-head" }, header && (h("h2", { key: '974fc725163da00216c3c8b7b6c72c005628e0fc', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (h("h2", { key: 'eedf04dbe331917c7b1348f8020d959119cc9f0f', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (h("h3", { key: '80dbbd75184a3857172eca25f30dee950c08709b', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), h("div", { key: '0d83a74b7ae595d0593edadfe6b812435534abea', tabindex: "0", "aria-hidden": "true" })));
|
|
568
543
|
}
|
|
569
544
|
get el() { return getElement(this); }
|
|
570
545
|
static get watchers() { return {
|