@ionic/core 8.6.3-dev.11750799190.186437ae → 8.6.3-dev.11751305829.1112929c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/action-sheet.js +8 -9
- package/components/alert.js +7 -8
- package/components/ion-app.js +3 -1
- package/components/ion-datetime.js +8 -2
- package/components/ion-loading.js +7 -8
- package/components/ion-menu.js +27 -5
- package/components/ion-reorder-group.js +1 -2
- package/components/ion-router.js +1 -0
- package/components/ion-searchbar.js +4 -6
- package/components/ion-toast.js +6 -7
- package/components/modal.js +213 -15
- package/components/popover.js +8 -7
- package/dist/cjs/ion-action-sheet.cjs.entry.js +8 -9
- package/dist/cjs/ion-alert.cjs.entry.js +7 -8
- package/dist/cjs/ion-app_8.cjs.entry.js +3 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +8 -2
- package/dist/cjs/ion-loading.cjs.entry.js +7 -8
- package/dist/cjs/ion-menu_3.cjs.entry.js +27 -5
- package/dist/cjs/ion-modal.cjs.entry.js +213 -15
- package/dist/cjs/ion-popover.cjs.entry.js +8 -7
- package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -2
- package/dist/cjs/ion-route_4.cjs.entry.js +1 -0
- package/dist/cjs/ion-searchbar.cjs.entry.js +4 -6
- package/dist/cjs/ion-toast.cjs.entry.js +6 -7
- package/dist/collection/components/action-sheet/action-sheet.js +11 -12
- package/dist/collection/components/alert/alert.js +10 -11
- package/dist/collection/components/app/app.js +8 -3
- package/dist/collection/components/datetime/datetime.js +23 -8
- package/dist/collection/components/loading/loading.js +10 -11
- package/dist/collection/components/menu/menu.js +62 -19
- package/dist/collection/components/modal/animations/ios.enter.js +2 -2
- package/dist/collection/components/modal/animations/ios.leave.js +2 -2
- package/dist/collection/components/modal/animations/ios.transition.js +124 -0
- package/dist/collection/components/modal/modal.js +108 -17
- package/dist/collection/components/popover/popover.js +18 -14
- package/dist/collection/components/reorder-group/reorder-group.js +2 -3
- package/dist/collection/components/router/router.js +5 -1
- package/dist/collection/components/searchbar/searchbar.js +5 -7
- package/dist/collection/components/toast/toast.js +9 -10
- package/dist/docs.json +138 -72
- package/dist/esm/ion-action-sheet.entry.js +8 -9
- package/dist/esm/ion-alert.entry.js +7 -8
- package/dist/esm/ion-app_8.entry.js +3 -1
- package/dist/esm/ion-datetime_3.entry.js +8 -2
- package/dist/esm/ion-loading.entry.js +7 -8
- package/dist/esm/ion-menu_3.entry.js +27 -5
- package/dist/esm/ion-modal.entry.js +213 -15
- package/dist/esm/ion-popover.entry.js +8 -7
- package/dist/esm/ion-reorder_2.entry.js +1 -2
- package/dist/esm/ion-route_4.entry.js +1 -0
- package/dist/esm/ion-searchbar.entry.js +4 -6
- package/dist/esm/ion-toast.entry.js +6 -7
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-96389029.entry.js → p-01123ecf.entry.js} +1 -1
- package/dist/ionic/{p-cb787a4b.entry.js → p-03d21728.entry.js} +1 -1
- package/dist/ionic/{p-9e699d4a.entry.js → p-0d131a02.entry.js} +1 -1
- package/dist/ionic/p-0df5b2a5.entry.js +4 -0
- package/dist/ionic/{p-6b666996.entry.js → p-2d0eccfb.entry.js} +1 -1
- package/dist/ionic/{p-ead42a37.entry.js → p-5f671887.entry.js} +1 -1
- package/dist/ionic/p-69f91268.entry.js +4 -0
- package/dist/ionic/{p-2020aa51.entry.js → p-b758a177.entry.js} +1 -1
- package/dist/ionic/p-b9ba04ca.entry.js +4 -0
- package/dist/ionic/{p-cd12ed1c.entry.js → p-d8429eb4.entry.js} +1 -1
- package/dist/ionic/{p-3a4feac2.entry.js → p-e37d6c67.entry.js} +1 -1
- package/dist/types/components/action-sheet/action-sheet.d.ts +5 -6
- package/dist/types/components/alert/alert.d.ts +5 -6
- package/dist/types/components/app/app.d.ts +2 -0
- package/dist/types/components/datetime/datetime.d.ts +6 -0
- package/dist/types/components/loading/loading.d.ts +5 -6
- package/dist/types/components/menu/menu.d.ts +25 -3
- package/dist/types/components/modal/animations/ios.transition.d.ts +14 -0
- package/dist/types/components/modal/modal.d.ts +20 -6
- package/dist/types/components/popover/popover.d.ts +6 -5
- package/dist/types/components/reorder-group/reorder-group.d.ts +0 -1
- package/dist/types/components/router/router.d.ts +1 -0
- package/dist/types/components/searchbar/searchbar.d.ts +0 -2
- package/dist/types/components/toast/toast.d.ts +4 -5
- package/dist/types/components.d.ts +32 -18
- package/hydrate/index.js +293 -70
- package/hydrate/index.mjs +293 -70
- package/package.json +2 -2
- package/dist/ionic/p-6dd2e493.entry.js +0 -4
- package/dist/ionic/p-7149db7e.entry.js +0 -4
- package/dist/ionic/p-bec79123.entry.js +0 -4
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
|
+
*/
|
|
4
|
+
import { createAnimation } from "../../../utils/animation/animation";
|
|
5
|
+
import { getElementRoot } from "../../../utils/helpers";
|
|
6
|
+
import { SwipeToCloseDefaults } from "../gestures/swipe-to-close";
|
|
7
|
+
/**
|
|
8
|
+
* Transition animation from portrait view to landscape view
|
|
9
|
+
* This handles the case where a card modal is open in portrait view
|
|
10
|
+
* and the user switches to landscape view
|
|
11
|
+
*/
|
|
12
|
+
export const portraitToLandscapeTransition = (baseEl, opts, duration = 300) => {
|
|
13
|
+
const { presentingEl } = opts;
|
|
14
|
+
if (!presentingEl) {
|
|
15
|
+
// No transition needed for non-card modals
|
|
16
|
+
return createAnimation('portrait-to-landscape-transition');
|
|
17
|
+
}
|
|
18
|
+
const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
|
|
19
|
+
const presentingElRoot = getElementRoot(presentingEl);
|
|
20
|
+
const bodyEl = document.body;
|
|
21
|
+
const baseAnimation = createAnimation('portrait-to-landscape-transition')
|
|
22
|
+
.addElement(baseEl)
|
|
23
|
+
.easing('cubic-bezier(0.32,0.72,0,1)')
|
|
24
|
+
.duration(duration);
|
|
25
|
+
const presentingAnimation = createAnimation();
|
|
26
|
+
if (!hasCardModal) {
|
|
27
|
+
// Non-card modal: transition from portrait state to landscape state
|
|
28
|
+
// Portrait: presentingEl has transform and body has black background
|
|
29
|
+
// Landscape: no transform, no body background, modal wrapper opacity changes
|
|
30
|
+
const root = getElementRoot(baseEl);
|
|
31
|
+
const wrapperAnimation = createAnimation()
|
|
32
|
+
.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))
|
|
33
|
+
.fromTo('opacity', '1', '1'); // Keep wrapper visible in landscape
|
|
34
|
+
const backdropAnimation = createAnimation()
|
|
35
|
+
.addElement(root.querySelector('ion-backdrop'))
|
|
36
|
+
.fromTo('opacity', 'var(--backdrop-opacity)', 'var(--backdrop-opacity)'); // Keep backdrop visible
|
|
37
|
+
// Animate presentingEl from portrait state back to normal
|
|
38
|
+
const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';
|
|
39
|
+
const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
|
|
40
|
+
const fromTransform = `translateY(${transformOffset}) scale(${toPresentingScale})`;
|
|
41
|
+
presentingAnimation
|
|
42
|
+
.addElement(presentingEl)
|
|
43
|
+
.beforeAddWrite(() => bodyEl.style.setProperty('background-color', ''))
|
|
44
|
+
.fromTo('transform', fromTransform, 'translateY(0px) scale(1)')
|
|
45
|
+
.fromTo('filter', 'contrast(0.85)', 'contrast(1)')
|
|
46
|
+
.fromTo('border-radius', '10px 10px 0 0', '0px');
|
|
47
|
+
baseAnimation.addAnimation([presentingAnimation, wrapperAnimation, backdropAnimation]);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Card modal: transition from portrait card state to landscape card state
|
|
51
|
+
const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
|
|
52
|
+
const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';
|
|
53
|
+
const fromTransform = `translateY(${transformOffset}) scale(${toPresentingScale})`;
|
|
54
|
+
const toTransform = `translateY(-10px) scale(${toPresentingScale})`;
|
|
55
|
+
presentingAnimation
|
|
56
|
+
.addElement(presentingElRoot.querySelector('.modal-wrapper'))
|
|
57
|
+
.fromTo('transform', fromTransform, toTransform)
|
|
58
|
+
.fromTo('filter', 'contrast(0.85)', 'contrast(0.85)'); // Keep same contrast for card
|
|
59
|
+
const shadowAnimation = createAnimation()
|
|
60
|
+
.addElement(presentingElRoot.querySelector('.modal-shadow'))
|
|
61
|
+
.fromTo('opacity', '0', '0') // Shadow stays hidden in landscape for card modals
|
|
62
|
+
.fromTo('transform', fromTransform, toTransform);
|
|
63
|
+
baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);
|
|
64
|
+
}
|
|
65
|
+
return baseAnimation;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Transition animation from landscape view to portrait view
|
|
69
|
+
* This handles the case where a card modal is open in landscape view
|
|
70
|
+
* and the user switches to portrait view
|
|
71
|
+
*/
|
|
72
|
+
export const landscapeToPortraitTransition = (baseEl, opts, duration = 300) => {
|
|
73
|
+
const { presentingEl } = opts;
|
|
74
|
+
if (!presentingEl) {
|
|
75
|
+
// No transition needed for non-card modals
|
|
76
|
+
return createAnimation('landscape-to-portrait-transition');
|
|
77
|
+
}
|
|
78
|
+
const hasCardModal = presentingEl.tagName === 'ION-MODAL' && presentingEl.presentingElement !== undefined;
|
|
79
|
+
const presentingElRoot = getElementRoot(presentingEl);
|
|
80
|
+
const bodyEl = document.body;
|
|
81
|
+
const baseAnimation = createAnimation('landscape-to-portrait-transition')
|
|
82
|
+
.addElement(baseEl)
|
|
83
|
+
.easing('cubic-bezier(0.32,0.72,0,1)')
|
|
84
|
+
.duration(duration);
|
|
85
|
+
const presentingAnimation = createAnimation();
|
|
86
|
+
if (!hasCardModal) {
|
|
87
|
+
// Non-card modal: transition from landscape state to portrait state
|
|
88
|
+
const root = getElementRoot(baseEl);
|
|
89
|
+
const wrapperAnimation = createAnimation()
|
|
90
|
+
.addElement(root.querySelectorAll('.modal-wrapper, .modal-shadow'))
|
|
91
|
+
.fromTo('opacity', '1', '1'); // Keep wrapper visible
|
|
92
|
+
const backdropAnimation = createAnimation()
|
|
93
|
+
.addElement(root.querySelector('ion-backdrop'))
|
|
94
|
+
.fromTo('opacity', 'var(--backdrop-opacity)', 'var(--backdrop-opacity)'); // Keep backdrop visible
|
|
95
|
+
// Animate presentingEl from normal state to portrait state
|
|
96
|
+
const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';
|
|
97
|
+
const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
|
|
98
|
+
const toTransform = `translateY(${transformOffset}) scale(${toPresentingScale})`;
|
|
99
|
+
presentingAnimation
|
|
100
|
+
.addElement(presentingEl)
|
|
101
|
+
.beforeAddWrite(() => bodyEl.style.setProperty('background-color', 'black'))
|
|
102
|
+
.fromTo('transform', 'translateY(0px) scale(1)', toTransform)
|
|
103
|
+
.fromTo('filter', 'contrast(1)', 'contrast(0.85)')
|
|
104
|
+
.fromTo('border-radius', '0px', '10px 10px 0 0');
|
|
105
|
+
baseAnimation.addAnimation([presentingAnimation, wrapperAnimation, backdropAnimation]);
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
// Card modal: transition from landscape card state to portrait card state
|
|
109
|
+
const toPresentingScale = SwipeToCloseDefaults.MIN_PRESENTING_SCALE;
|
|
110
|
+
const transformOffset = !CSS.supports('width', 'max(0px, 1px)') ? '30px' : 'max(30px, var(--ion-safe-area-top))';
|
|
111
|
+
const fromTransform = `translateY(-10px) scale(${toPresentingScale})`;
|
|
112
|
+
const toTransform = `translateY(${transformOffset}) scale(${toPresentingScale})`;
|
|
113
|
+
presentingAnimation
|
|
114
|
+
.addElement(presentingElRoot.querySelector('.modal-wrapper'))
|
|
115
|
+
.fromTo('transform', fromTransform, toTransform)
|
|
116
|
+
.fromTo('filter', 'contrast(0.85)', 'contrast(0.85)'); // Keep same contrast for card
|
|
117
|
+
const shadowAnimation = createAnimation()
|
|
118
|
+
.addElement(presentingElRoot.querySelector('.modal-shadow'))
|
|
119
|
+
.fromTo('opacity', '0', '0') // Shadow stays hidden
|
|
120
|
+
.fromTo('transform', fromTransform, toTransform);
|
|
121
|
+
baseAnimation.addAnimation([presentingAnimation, shadowAnimation]);
|
|
122
|
+
}
|
|
123
|
+
return baseAnimation;
|
|
124
|
+
};
|
|
@@ -16,6 +16,7 @@ import { getIonMode } from "../../global/ionic-global";
|
|
|
16
16
|
import { KEYBOARD_DID_OPEN } from "../../utils/keyboard/keyboard";
|
|
17
17
|
import { iosEnterAnimation } from "./animations/ios.enter";
|
|
18
18
|
import { iosLeaveAnimation } from "./animations/ios.leave";
|
|
19
|
+
import { portraitToLandscapeTransition, landscapeToPortraitTransition } from "./animations/ios.transition";
|
|
19
20
|
import { mdEnterAnimation } from "./animations/md.enter";
|
|
20
21
|
import { mdLeaveAnimation } from "./animations/md.leave";
|
|
21
22
|
import { createSheetGesture } from "./gestures/sheet";
|
|
@@ -184,6 +185,17 @@ export class Modal {
|
|
|
184
185
|
el.dispatchEvent(ev);
|
|
185
186
|
}
|
|
186
187
|
};
|
|
188
|
+
/**
|
|
189
|
+
* When the modal receives focus directly, pass focus to the handle
|
|
190
|
+
* if it exists and is focusable, otherwise let the focus trap handle it.
|
|
191
|
+
*/
|
|
192
|
+
this.onModalFocus = (ev) => {
|
|
193
|
+
const { dragHandleEl, el } = this;
|
|
194
|
+
// Only handle focus if the modal itself was focused (not a child element)
|
|
195
|
+
if (ev.target === el && dragHandleEl && dragHandleEl.tabIndex !== -1) {
|
|
196
|
+
dragHandleEl.focus();
|
|
197
|
+
}
|
|
198
|
+
};
|
|
187
199
|
}
|
|
188
200
|
onIsOpenChange(newValue, oldValue) {
|
|
189
201
|
if (newValue === true && oldValue === false) {
|
|
@@ -211,6 +223,7 @@ export class Modal {
|
|
|
211
223
|
}
|
|
212
224
|
disconnectedCallback() {
|
|
213
225
|
this.triggerController.removeClickListener();
|
|
226
|
+
this.cleanupViewTransitionListener();
|
|
214
227
|
}
|
|
215
228
|
componentWillLoad() {
|
|
216
229
|
var _a;
|
|
@@ -421,6 +434,8 @@ export class Modal {
|
|
|
421
434
|
else if (hasCardModal) {
|
|
422
435
|
this.initSwipeToClose();
|
|
423
436
|
}
|
|
437
|
+
// Initialize view transition listener for iOS card modals
|
|
438
|
+
this.initViewTransitionListener();
|
|
424
439
|
unlock();
|
|
425
440
|
}
|
|
426
441
|
initSwipeToClose() {
|
|
@@ -515,13 +530,13 @@ export class Modal {
|
|
|
515
530
|
}
|
|
516
531
|
/**
|
|
517
532
|
* Dismiss the modal overlay after it has been presented.
|
|
518
|
-
*
|
|
519
|
-
* @param data Any data to emit in the dismiss events.
|
|
520
|
-
* @param role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'.
|
|
521
|
-
*
|
|
522
533
|
* This is a no-op if the overlay has not been presented yet. If you want
|
|
523
534
|
* to remove an overlay from the DOM that was never presented, use the
|
|
524
535
|
* [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
|
|
536
|
+
*
|
|
537
|
+
* @param data Any data to emit in the dismiss events.
|
|
538
|
+
* @param role The role of the element that is dismissing the modal.
|
|
539
|
+
* For example, `cancel` or `backdrop`.
|
|
525
540
|
*/
|
|
526
541
|
async dismiss(data, role) {
|
|
527
542
|
var _a;
|
|
@@ -574,6 +589,7 @@ export class Modal {
|
|
|
574
589
|
if (this.gesture) {
|
|
575
590
|
this.gesture.destroy();
|
|
576
591
|
}
|
|
592
|
+
this.cleanupViewTransitionListener();
|
|
577
593
|
}
|
|
578
594
|
this.currentBreakpoint = undefined;
|
|
579
595
|
this.animation = undefined;
|
|
@@ -593,8 +609,10 @@ export class Modal {
|
|
|
593
609
|
return eventMethod(this.el, 'ionModalWillDismiss');
|
|
594
610
|
}
|
|
595
611
|
/**
|
|
596
|
-
* Move a sheet style modal to a specific breakpoint.
|
|
597
|
-
*
|
|
612
|
+
* Move a sheet style modal to a specific breakpoint.
|
|
613
|
+
*
|
|
614
|
+
* @param breakpoint The breakpoint value to move the sheet modal to.
|
|
615
|
+
* Must be a value defined in your `breakpoints` array.
|
|
598
616
|
*/
|
|
599
617
|
async setCurrentBreakpoint(breakpoint) {
|
|
600
618
|
if (!this.isSheetModal) {
|
|
@@ -647,26 +665,96 @@ export class Modal {
|
|
|
647
665
|
await this.setCurrentBreakpoint(nextBreakpoint);
|
|
648
666
|
return true;
|
|
649
667
|
}
|
|
668
|
+
initViewTransitionListener() {
|
|
669
|
+
// Only enable for iOS card modals when no custom animations are provided
|
|
670
|
+
if (getIonMode(this) !== 'ios' || !this.presentingElement || this.enterAnimation || this.leaveAnimation) {
|
|
671
|
+
return;
|
|
672
|
+
}
|
|
673
|
+
// Set initial view state
|
|
674
|
+
this.currentViewIsPortrait = window.innerWidth < 768;
|
|
675
|
+
// Create debounced resize handler
|
|
676
|
+
let resizeTimeout;
|
|
677
|
+
this.resizeListener = () => {
|
|
678
|
+
clearTimeout(resizeTimeout);
|
|
679
|
+
resizeTimeout = setTimeout(() => {
|
|
680
|
+
this.handleViewTransition();
|
|
681
|
+
}, 100); // Debounce for 100ms to avoid excessive calls
|
|
682
|
+
};
|
|
683
|
+
window.addEventListener('resize', this.resizeListener);
|
|
684
|
+
}
|
|
685
|
+
handleViewTransition() {
|
|
686
|
+
const isPortrait = window.innerWidth < 768;
|
|
687
|
+
// Only transition if view state actually changed
|
|
688
|
+
if (this.currentViewIsPortrait === isPortrait) {
|
|
689
|
+
return;
|
|
690
|
+
}
|
|
691
|
+
// Cancel any ongoing transition animation
|
|
692
|
+
if (this.viewTransitionAnimation) {
|
|
693
|
+
this.viewTransitionAnimation.destroy();
|
|
694
|
+
this.viewTransitionAnimation = undefined;
|
|
695
|
+
}
|
|
696
|
+
const { presentingElement } = this;
|
|
697
|
+
if (!presentingElement) {
|
|
698
|
+
return;
|
|
699
|
+
}
|
|
700
|
+
// Create transition animation
|
|
701
|
+
let transitionAnimation;
|
|
702
|
+
if (this.currentViewIsPortrait && !isPortrait) {
|
|
703
|
+
// Portrait to landscape transition
|
|
704
|
+
transitionAnimation = portraitToLandscapeTransition(this.el, {
|
|
705
|
+
presentingEl: presentingElement,
|
|
706
|
+
currentBreakpoint: this.currentBreakpoint,
|
|
707
|
+
backdropBreakpoint: this.backdropBreakpoint,
|
|
708
|
+
expandToScroll: this.expandToScroll,
|
|
709
|
+
});
|
|
710
|
+
}
|
|
711
|
+
else {
|
|
712
|
+
// Landscape to portrait transition
|
|
713
|
+
transitionAnimation = landscapeToPortraitTransition(this.el, {
|
|
714
|
+
presentingEl: presentingElement,
|
|
715
|
+
currentBreakpoint: this.currentBreakpoint,
|
|
716
|
+
backdropBreakpoint: this.backdropBreakpoint,
|
|
717
|
+
expandToScroll: this.expandToScroll,
|
|
718
|
+
});
|
|
719
|
+
}
|
|
720
|
+
// Update state and play animation
|
|
721
|
+
this.currentViewIsPortrait = isPortrait;
|
|
722
|
+
this.viewTransitionAnimation = transitionAnimation;
|
|
723
|
+
transitionAnimation.play().then(() => {
|
|
724
|
+
this.viewTransitionAnimation = undefined;
|
|
725
|
+
});
|
|
726
|
+
}
|
|
727
|
+
cleanupViewTransitionListener() {
|
|
728
|
+
if (this.resizeListener) {
|
|
729
|
+
window.removeEventListener('resize', this.resizeListener);
|
|
730
|
+
this.resizeListener = undefined;
|
|
731
|
+
}
|
|
732
|
+
if (this.viewTransitionAnimation) {
|
|
733
|
+
this.viewTransitionAnimation.destroy();
|
|
734
|
+
this.viewTransitionAnimation = undefined;
|
|
735
|
+
}
|
|
736
|
+
}
|
|
650
737
|
render() {
|
|
651
738
|
const { handle, isSheetModal, presentingElement, htmlAttributes, handleBehavior, inheritedAttributes, focusTrap, expandToScroll, } = this;
|
|
652
739
|
const showHandle = handle !== false && isSheetModal;
|
|
653
740
|
const mode = getIonMode(this);
|
|
654
741
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
655
742
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
656
|
-
|
|
743
|
+
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
744
|
+
return (h(Host, Object.assign({ key: 'd5bcaa588471573e1bcbd99997b306c8ecdd124f', "no-router": true,
|
|
657
745
|
// Allow the modal to be navigable when the handle is focusable
|
|
658
|
-
tabIndex:
|
|
746
|
+
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
659
747
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
660
|
-
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle }), h("ion-backdrop", { key: '
|
|
748
|
+
}, class: Object.assign({ [mode]: true, ['modal-default']: !isCardModal && !isSheetModal, [`modal-card`]: isCardModal, [`modal-sheet`]: isSheetModal, [`modal-no-expand-scroll`]: isSheetModal && !expandToScroll, 'overlay-hidden': true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false }, getClassMap(this.cssClass)), onIonBackdropTap: this.onBackdropTap, onIonModalDidPresent: this.onLifecycle, onIonModalWillPresent: this.onLifecycle, onIonModalWillDismiss: this.onLifecycle, onIonModalDidDismiss: this.onLifecycle, onFocus: this.onModalFocus }), h("ion-backdrop", { key: '78b954a1c50a0325eb51db04314e86701c66d840', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '21887227c272f5eba1b3d164be3572bd710d415c', class: "modal-shadow" }), h("div", Object.assign({ key: 'a40472a9065c04ad12fb7b2b2a05e5021f077ad5',
|
|
661
749
|
/*
|
|
662
750
|
role and aria-modal must be used on the
|
|
663
751
|
same element. They must also be set inside the
|
|
664
752
|
shadow DOM otherwise ion-button will not be highlighted
|
|
665
753
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
666
754
|
*/
|
|
667
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
755
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'a4973f66587546031d1cc0197e1ba7c2521a3fbc', class: "modal-handle",
|
|
668
756
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
669
|
-
tabIndex: !isHandleCycle ? -1 : 0, "aria-label": "Activate to adjust the size of the dialog overlaying the screen", onClick: isHandleCycle ? this.onHandleClick : undefined, part: "handle" })), h("slot", { key: '
|
|
757
|
+
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: 'ee5e007e3a4e592d98f1b5a5d31ad55e6faa3bdb' }))));
|
|
670
758
|
}
|
|
671
759
|
static get is() { return "ion-modal"; }
|
|
672
760
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1454,7 +1542,7 @@ export class Modal {
|
|
|
1454
1542
|
}, {
|
|
1455
1543
|
"name": "role",
|
|
1456
1544
|
"type": "string | undefined",
|
|
1457
|
-
"docs": "The role of the element that is dismissing the modal
|
|
1545
|
+
"docs": "The role of the element that is dismissing the modal.\nFor example, `cancel` or `backdrop`."
|
|
1458
1546
|
}],
|
|
1459
1547
|
"references": {
|
|
1460
1548
|
"Promise": {
|
|
@@ -1469,13 +1557,13 @@ export class Modal {
|
|
|
1469
1557
|
"return": "Promise<boolean>"
|
|
1470
1558
|
},
|
|
1471
1559
|
"docs": {
|
|
1472
|
-
"text": "Dismiss the modal overlay after it has been presented.",
|
|
1560
|
+
"text": "Dismiss the modal overlay after it has been presented.\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.",
|
|
1473
1561
|
"tags": [{
|
|
1474
1562
|
"name": "param",
|
|
1475
1563
|
"text": "data Any data to emit in the dismiss events."
|
|
1476
1564
|
}, {
|
|
1477
1565
|
"name": "param",
|
|
1478
|
-
"text": "role The role of the element that is dismissing the modal
|
|
1566
|
+
"text": "role The role of the element that is dismissing the modal.\nFor example, `cancel` or `backdrop`."
|
|
1479
1567
|
}]
|
|
1480
1568
|
}
|
|
1481
1569
|
},
|
|
@@ -1537,7 +1625,7 @@ export class Modal {
|
|
|
1537
1625
|
"parameters": [{
|
|
1538
1626
|
"name": "breakpoint",
|
|
1539
1627
|
"type": "number",
|
|
1540
|
-
"docs": ""
|
|
1628
|
+
"docs": "The breakpoint value to move the sheet modal to.\nMust be a value defined in your `breakpoints` array."
|
|
1541
1629
|
}],
|
|
1542
1630
|
"references": {
|
|
1543
1631
|
"Promise": {
|
|
@@ -1548,8 +1636,11 @@ export class Modal {
|
|
|
1548
1636
|
"return": "Promise<void>"
|
|
1549
1637
|
},
|
|
1550
1638
|
"docs": {
|
|
1551
|
-
"text": "Move a sheet style modal to a specific breakpoint.
|
|
1552
|
-
"tags": [
|
|
1639
|
+
"text": "Move a sheet style modal to a specific breakpoint.",
|
|
1640
|
+
"tags": [{
|
|
1641
|
+
"name": "param",
|
|
1642
|
+
"text": "breakpoint The breakpoint value to move the sheet modal to.\nMust be a value defined in your `breakpoints` array."
|
|
1643
|
+
}]
|
|
1553
1644
|
}
|
|
1554
1645
|
},
|
|
1555
1646
|
"getCurrentBreakpoint": {
|
|
@@ -309,6 +309,8 @@ export class Popover {
|
|
|
309
309
|
* Developers can pass a mouse, touch, or pointer event
|
|
310
310
|
* to position the popover relative to where that event
|
|
311
311
|
* was dispatched.
|
|
312
|
+
*
|
|
313
|
+
* @param event The event to position the popover relative to.
|
|
312
314
|
*/
|
|
313
315
|
async present(event) {
|
|
314
316
|
const unlock = await this.lockController.lock();
|
|
@@ -372,15 +374,14 @@ export class Popover {
|
|
|
372
374
|
}
|
|
373
375
|
/**
|
|
374
376
|
* Dismiss the popover overlay after it has been presented.
|
|
377
|
+
* This is a no-op if the overlay has not been presented yet. If you want
|
|
378
|
+
* to remove an overlay from the DOM that was never presented, use the
|
|
379
|
+
* [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
|
|
375
380
|
*
|
|
376
381
|
* @param data Any data to emit in the dismiss events.
|
|
377
|
-
* @param role The role of the element that is dismissing the popover. For example,
|
|
382
|
+
* @param role The role of the element that is dismissing the popover. For example, `cancel` or `backdrop`.
|
|
378
383
|
* @param dismissParentPopover If `true`, dismissing this popover will also dismiss
|
|
379
384
|
* a parent popover if this popover is nested. Defaults to `true`.
|
|
380
|
-
*
|
|
381
|
-
* This is a no-op if the overlay has not been presented yet. If you want
|
|
382
|
-
* to remove an overlay from the DOM that was never presented, use the
|
|
383
|
-
* [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
|
|
384
385
|
*/
|
|
385
386
|
async dismiss(data, role, dismissParentPopover = true) {
|
|
386
387
|
const unlock = await this.lockController.lock();
|
|
@@ -432,9 +433,9 @@ export class Popover {
|
|
|
432
433
|
const { onLifecycle, parentPopover, dismissOnSelect, side, arrow, htmlAttributes, focusTrap } = this;
|
|
433
434
|
const desktop = isPlatform('desktop');
|
|
434
435
|
const enableArrow = arrow && !parentPopover;
|
|
435
|
-
return (h(Host, Object.assign({ key: '
|
|
436
|
+
return (h(Host, Object.assign({ key: '16866c02534968c982cf4730d2936d03a5107c8b', "aria-modal": "true", "no-router": true, tabindex: "-1" }, htmlAttributes, { style: {
|
|
436
437
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
437
|
-
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '
|
|
438
|
+
}, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'popover-translucent': this.translucent, 'overlay-hidden': true, 'popover-desktop': desktop, [`popover-side-${side}`]: true, [FOCUS_TRAP_DISABLE_CLASS]: focusTrap === false, 'popover-nested': !!parentPopover }), onIonPopoverDidPresent: onLifecycle, onIonPopoverWillPresent: onLifecycle, onIonPopoverWillDismiss: onLifecycle, onIonPopoverDidDismiss: onLifecycle, onIonBackdropTap: this.onBackdropTap }), !parentPopover && h("ion-backdrop", { key: '0df258601a4d30df3c27aa8234a7d5e056c3ecbb', tappable: this.backdropDismiss, visible: this.showBackdrop, part: "backdrop" }), h("div", { key: 'f94e80ed996b957b5cd09b826472b4f60e8fcc78', class: "popover-wrapper ion-overlay-wrapper", onClick: dismissOnSelect ? () => this.dismiss() : undefined }, enableArrow && h("div", { key: '185ce22f6386e8444a9cc7b8818dbfc16c463c99', class: "popover-arrow", part: "arrow" }), h("div", { key: '206202b299404e110de5397b229678cca18568d3', class: "popover-content", part: "content" }, h("slot", { key: 'ee543a0b92d6e35a837c0a0e4617c7b0fc4ad0b0' })))));
|
|
438
439
|
}
|
|
439
440
|
static get is() { return "ion-popover"; }
|
|
440
441
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1259,7 +1260,7 @@ export class Popover {
|
|
|
1259
1260
|
"parameters": [{
|
|
1260
1261
|
"name": "event",
|
|
1261
1262
|
"type": "MouseEvent | PointerEvent | TouchEvent | CustomEvent<any> | undefined",
|
|
1262
|
-
"docs": ""
|
|
1263
|
+
"docs": "The event to position the popover relative to."
|
|
1263
1264
|
}],
|
|
1264
1265
|
"references": {
|
|
1265
1266
|
"Promise": {
|
|
@@ -1291,7 +1292,10 @@ export class Popover {
|
|
|
1291
1292
|
},
|
|
1292
1293
|
"docs": {
|
|
1293
1294
|
"text": "Present the popover overlay after it has been created.\nDevelopers can pass a mouse, touch, or pointer event\nto position the popover relative to where that event\nwas dispatched.",
|
|
1294
|
-
"tags": [
|
|
1295
|
+
"tags": [{
|
|
1296
|
+
"name": "param",
|
|
1297
|
+
"text": "event The event to position the popover relative to."
|
|
1298
|
+
}]
|
|
1295
1299
|
}
|
|
1296
1300
|
},
|
|
1297
1301
|
"dismiss": {
|
|
@@ -1304,11 +1308,11 @@ export class Popover {
|
|
|
1304
1308
|
}, {
|
|
1305
1309
|
"name": "role",
|
|
1306
1310
|
"type": "string | undefined",
|
|
1307
|
-
"docs": "The role of the element that is dismissing the popover. For example,
|
|
1311
|
+
"docs": "The role of the element that is dismissing the popover. For example, `cancel` or `backdrop`."
|
|
1308
1312
|
}, {
|
|
1309
1313
|
"name": "dismissParentPopover",
|
|
1310
1314
|
"type": "boolean",
|
|
1311
|
-
"docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true
|
|
1315
|
+
"docs": "If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`."
|
|
1312
1316
|
}],
|
|
1313
1317
|
"references": {
|
|
1314
1318
|
"Promise": {
|
|
@@ -1323,16 +1327,16 @@ export class Popover {
|
|
|
1323
1327
|
"return": "Promise<boolean>"
|
|
1324
1328
|
},
|
|
1325
1329
|
"docs": {
|
|
1326
|
-
"text": "Dismiss the popover overlay after it has been presented.",
|
|
1330
|
+
"text": "Dismiss the popover overlay after it has been presented.\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.",
|
|
1327
1331
|
"tags": [{
|
|
1328
1332
|
"name": "param",
|
|
1329
1333
|
"text": "data Any data to emit in the dismiss events."
|
|
1330
1334
|
}, {
|
|
1331
1335
|
"name": "param",
|
|
1332
|
-
"text": "role The role of the element that is dismissing the popover. For example,
|
|
1336
|
+
"text": "role The role of the element that is dismissing the popover. For example, `cancel` or `backdrop`."
|
|
1333
1337
|
}, {
|
|
1334
1338
|
"name": "param",
|
|
1335
|
-
"text": "dismissParentPopover If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true
|
|
1339
|
+
"text": "dismissParentPopover If `true`, dismissing this popover will also dismiss\na parent popover if this popover is nested. Defaults to `true`."
|
|
1336
1340
|
}]
|
|
1337
1341
|
}
|
|
1338
1342
|
},
|
|
@@ -54,7 +54,6 @@ export class ReorderGroup {
|
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Completes the reorder operation. Must be called by the `ionItemReorder` event.
|
|
57
|
-
*
|
|
58
57
|
* If a list of items is passed, the list will be reordered and returned in the
|
|
59
58
|
* proper order.
|
|
60
59
|
*
|
|
@@ -241,7 +240,7 @@ export class ReorderGroup {
|
|
|
241
240
|
}
|
|
242
241
|
render() {
|
|
243
242
|
const mode = getIonMode(this);
|
|
244
|
-
return (h(Host, { key: '
|
|
243
|
+
return (h(Host, { key: 'dfcdc3a6aa1b2fba15f861ec868d6a11e667c9de', class: {
|
|
245
244
|
[mode]: true,
|
|
246
245
|
'reorder-enabled': !this.disabled,
|
|
247
246
|
'reorder-list-active': this.state !== 0 /* ReorderGroupState.Idle */,
|
|
@@ -330,7 +329,7 @@ export class ReorderGroup {
|
|
|
330
329
|
"return": "Promise<any>"
|
|
331
330
|
},
|
|
332
331
|
"docs": {
|
|
333
|
-
"text": "Completes the reorder operation. Must be called by the `ionItemReorder` event.\
|
|
332
|
+
"text": "Completes the reorder operation. Must be called by the `ionItemReorder` event.\nIf a list of items is passed, the list will be reordered and returned in the\nproper order.\n\nIf no parameters are passed or if `true` is passed in, the reorder will complete\nand the item will remain in the position it was dragged to. If `false` is passed,\nthe reorder will complete and the item will bounce back to its original position.",
|
|
334
333
|
"tags": [{
|
|
335
334
|
"name": "param",
|
|
336
335
|
"text": "listOrReorder A list of items to be sorted and returned in the new order or a\nboolean of whether or not the reorder should reposition the item."
|
|
@@ -90,6 +90,7 @@ export class Router {
|
|
|
90
90
|
*
|
|
91
91
|
* @param path The path to navigate to.
|
|
92
92
|
* @param direction The direction of the animation. Defaults to `"forward"`.
|
|
93
|
+
* @param animation A custom animation to use for the transition.
|
|
93
94
|
*/
|
|
94
95
|
async push(path, direction = 'forward', animation) {
|
|
95
96
|
var _a;
|
|
@@ -411,7 +412,7 @@ export class Router {
|
|
|
411
412
|
}, {
|
|
412
413
|
"name": "animation",
|
|
413
414
|
"type": "AnimationBuilder | undefined",
|
|
414
|
-
"docs": ""
|
|
415
|
+
"docs": "A custom animation to use for the transition."
|
|
415
416
|
}],
|
|
416
417
|
"references": {
|
|
417
418
|
"Promise": {
|
|
@@ -439,6 +440,9 @@ export class Router {
|
|
|
439
440
|
}, {
|
|
440
441
|
"name": "param",
|
|
441
442
|
"text": "direction The direction of the animation. Defaults to `\"forward\"`."
|
|
443
|
+
}, {
|
|
444
|
+
"name": "param",
|
|
445
|
+
"text": "animation A custom animation to use for the transition."
|
|
442
446
|
}]
|
|
443
447
|
}
|
|
444
448
|
},
|
|
@@ -247,10 +247,8 @@ export class Searchbar {
|
|
|
247
247
|
/**
|
|
248
248
|
* Sets focus on the native `input` in `ion-searchbar`. Use this method instead of the global
|
|
249
249
|
* `input.focus()`.
|
|
250
|
-
*
|
|
251
250
|
* Developers who wish to focus an input when a page enters
|
|
252
251
|
* should call `setFocus()` in the `ionViewDidEnter()` lifecycle method.
|
|
253
|
-
*
|
|
254
252
|
* Developers who wish to focus an input when an overlay is presented
|
|
255
253
|
* should call `setFocus` after `didPresent` has resolved.
|
|
256
254
|
*
|
|
@@ -429,8 +427,8 @@ export class Searchbar {
|
|
|
429
427
|
const clearIcon = this.clearIcon || (mode === 'ios' ? closeCircle : closeSharp);
|
|
430
428
|
const searchIcon = this.searchIcon || (mode === 'ios' ? searchOutline : searchSharp);
|
|
431
429
|
const shouldShowCancelButton = this.shouldShowCancelButton();
|
|
432
|
-
const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '
|
|
433
|
-
return (h(Host, { key: '
|
|
430
|
+
const cancelButton = this.showCancelButton !== 'never' && (h("button", { key: '19e18775856db87daeb4b9e3d7bca0461915a0df', "aria-label": cancelButtonText, "aria-hidden": shouldShowCancelButton ? undefined : 'true', type: "button", tabIndex: mode === 'ios' && !shouldShowCancelButton ? -1 : undefined, onMouseDown: this.onCancelSearchbar, onTouchStart: this.onCancelSearchbar, class: "searchbar-cancel-button" }, h("div", { key: 'b3bbdcc033f3bd3441d619e4a252cef0dad4d07e', "aria-hidden": "true" }, mode === 'md' ? (h("ion-icon", { "aria-hidden": "true", mode: mode, icon: this.cancelButtonIcon, lazy: false })) : (cancelButtonText))));
|
|
431
|
+
return (h(Host, { key: '074aa60e051bfb3225e87d44bbb6346c59c73574', role: "search", "aria-disabled": this.disabled ? 'true' : null, class: createColorClasses(this.color, {
|
|
434
432
|
[mode]: true,
|
|
435
433
|
'searchbar-animated': animated,
|
|
436
434
|
'searchbar-disabled': this.disabled,
|
|
@@ -440,14 +438,14 @@ export class Searchbar {
|
|
|
440
438
|
'searchbar-has-focus': this.focused,
|
|
441
439
|
'searchbar-should-show-clear': this.shouldShowClearButton(),
|
|
442
440
|
'searchbar-should-show-cancel': this.shouldShowCancelButton(),
|
|
443
|
-
}) }, h("div", { key: '
|
|
441
|
+
}) }, h("div", { key: '54f58a79fe36e85d9295157303f1be89c98bbdaf', class: "searchbar-input-container" }, h("input", Object.assign({ key: 'f991a37fcf54d26b7ad10d89084764e03d97b9de', "aria-label": "search text", disabled: this.disabled, ref: (el) => (this.nativeInput = el), class: "searchbar-input", inputMode: this.inputmode, enterKeyHint: this.enterkeyhint, name: this.name, onInput: this.onInput, onChange: this.onChange, onBlur: this.onBlur, onFocus: this.onFocus, minLength: this.minlength, maxLength: this.maxlength, placeholder: this.placeholder, type: this.type, value: this.getValue(), autoCapitalize: autocapitalize === 'default' ? undefined : autocapitalize, autoComplete: this.autocomplete, autoCorrect: this.autocorrect, spellcheck: this.spellcheck }, this.inheritedAttributes)), mode === 'md' && cancelButton, h("ion-icon", { key: '8b44dd90a3292c5cf872ef16a8520675f5673494', "aria-hidden": "true", mode: mode, icon: searchIcon, lazy: false, class: "searchbar-search-icon" }), h("button", { key: '79d9cfed8f01268044f82811a35d323a12dca749', "aria-label": "reset", type: "button", "no-blur": true, class: "searchbar-clear-button", onPointerDown: (ev) => {
|
|
444
442
|
/**
|
|
445
443
|
* This prevents mobile browsers from
|
|
446
444
|
* blurring the input when the clear
|
|
447
445
|
* button is activated.
|
|
448
446
|
*/
|
|
449
447
|
ev.preventDefault();
|
|
450
|
-
}, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: '
|
|
448
|
+
}, onClick: () => this.onClearInput(true) }, h("ion-icon", { key: 'aa3b9fa8a61f853236783ac7bcd0b113ea65ece2', "aria-hidden": "true", mode: mode, icon: clearIcon, lazy: false, class: "searchbar-clear-icon" }))), mode === 'ios' && cancelButton));
|
|
451
449
|
}
|
|
452
450
|
static get is() { return "ion-searchbar"; }
|
|
453
451
|
static get encapsulation() { return "scoped"; }
|
|
@@ -1061,7 +1059,7 @@ export class Searchbar {
|
|
|
1061
1059
|
"return": "Promise<void>"
|
|
1062
1060
|
},
|
|
1063
1061
|
"docs": {
|
|
1064
|
-
"text": "Sets focus on the native `input` in `ion-searchbar`. Use this method instead of the global\n`input.focus()`.\
|
|
1062
|
+
"text": "Sets focus on the native `input` in `ion-searchbar`. Use this method instead of the global\n`input.focus()`.\nDevelopers who wish to focus an input when a page enters\nshould call `setFocus()` in the `ionViewDidEnter()` lifecycle method.\nDevelopers who wish to focus an input when an overlay is presented\nshould call `setFocus` after `didPresent` has resolved.\n\nSee [managing focus](/docs/developing/managing-focus) for more information.",
|
|
1065
1063
|
"tags": []
|
|
1066
1064
|
}
|
|
1067
1065
|
},
|
|
@@ -239,16 +239,15 @@ export class Toast {
|
|
|
239
239
|
}
|
|
240
240
|
/**
|
|
241
241
|
* Dismiss the toast overlay after it has been presented.
|
|
242
|
+
* This is a no-op if the overlay has not been presented yet. If you want
|
|
243
|
+
* to remove an overlay from the DOM that was never presented, use the
|
|
244
|
+
* [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
|
|
242
245
|
*
|
|
243
246
|
* @param data Any data to emit in the dismiss events.
|
|
244
247
|
* @param role The role of the element that is dismissing the toast.
|
|
245
248
|
* This can be useful in a button handler for determining which button was
|
|
246
249
|
* clicked to dismiss the toast.
|
|
247
|
-
* Some examples include:
|
|
248
|
-
*
|
|
249
|
-
* This is a no-op if the overlay has not been presented yet. If you want
|
|
250
|
-
* to remove an overlay from the DOM that was never presented, use the
|
|
251
|
-
* [remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.
|
|
250
|
+
* Some examples include: `"cancel"`, `"destructive"`, `"selected"`, and `"backdrop"`.
|
|
252
251
|
*/
|
|
253
252
|
async dismiss(data, role) {
|
|
254
253
|
var _a, _b;
|
|
@@ -416,9 +415,9 @@ export class Toast {
|
|
|
416
415
|
if (layout === 'stacked' && startButtons.length > 0 && endButtons.length > 0) {
|
|
417
416
|
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);
|
|
418
417
|
}
|
|
419
|
-
return (h(Host, Object.assign({ key: '
|
|
418
|
+
return (h(Host, Object.assign({ key: 'd1ecd90c87700aad4685e230cdd430aa286b8791', tabindex: "-1" }, this.htmlAttributes, { style: {
|
|
420
419
|
zIndex: `${60000 + this.overlayIndex}`,
|
|
421
|
-
}, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '
|
|
420
|
+
}, class: createColorClasses(this.color, Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'toast-translucent': this.translucent })), onIonToastWillDismiss: this.dispatchCancelHandler }), h("div", { key: '4bfc863417324de69e222054d5cf9c452038b41e', class: wrapperClass }, h("div", { key: '3417940afec0392e81b7d54c7cb00f3ab6c30d47', class: "toast-container", part: "container" }, this.renderButtons(startButtons, 'start'), this.icon !== undefined && (h("ion-icon", { key: '6bf878fbc85c01e1e5faa9d97d46255a6511a952', class: "toast-icon", part: "icon", icon: this.icon, lazy: false, "aria-hidden": "true" })), h("div", { key: '54b500348a9c37660c3aff37436d9188e4374947', class: "toast-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')))));
|
|
422
421
|
}
|
|
423
422
|
static get is() { return "ion-toast"; }
|
|
424
423
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1113,7 +1112,7 @@ export class Toast {
|
|
|
1113
1112
|
}, {
|
|
1114
1113
|
"name": "role",
|
|
1115
1114
|
"type": "string | undefined",
|
|
1116
|
-
"docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include:
|
|
1115
|
+
"docs": "The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: `\"cancel\"`, `\"destructive\"`, `\"selected\"`, and `\"backdrop\"`."
|
|
1117
1116
|
}],
|
|
1118
1117
|
"references": {
|
|
1119
1118
|
"Promise": {
|
|
@@ -1129,13 +1128,13 @@ export class Toast {
|
|
|
1129
1128
|
"return": "Promise<boolean>"
|
|
1130
1129
|
},
|
|
1131
1130
|
"docs": {
|
|
1132
|
-
"text": "Dismiss the toast overlay after it has been presented.",
|
|
1131
|
+
"text": "Dismiss the toast overlay after it has been presented.\nThis is a no-op if the overlay has not been presented yet. If you want\nto remove an overlay from the DOM that was never presented, use the\n[remove](https://developer.mozilla.org/en-US/docs/Web/API/Element/remove) method.",
|
|
1133
1132
|
"tags": [{
|
|
1134
1133
|
"name": "param",
|
|
1135
1134
|
"text": "data Any data to emit in the dismiss events."
|
|
1136
1135
|
}, {
|
|
1137
1136
|
"name": "param",
|
|
1138
|
-
"text": "role The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include:
|
|
1137
|
+
"text": "role The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: `\"cancel\"`, `\"destructive\"`, `\"selected\"`, and `\"backdrop\"`."
|
|
1139
1138
|
}]
|
|
1140
1139
|
}
|
|
1141
1140
|
},
|