@ionic/core 8.7.12-dev.11765060985.14ad27fb → 8.7.12-dev.11765231260.1def96ab
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/action-sheet.js +186 -5
- package/components/ion-select.js +8 -3
- package/components/modal.js +16 -86
- package/components/overlays.js +11 -15
- package/css/core.css +1 -1
- package/css/core.css.map +1 -1
- package/css/ionic.bundle.css +1 -1
- package/css/ionic.bundle.css.map +1 -1
- package/dist/cjs/index.cjs.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +184 -5
- package/dist/cjs/ion-alert.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-loading.cjs.entry.js +1 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-modal.cjs.entry.js +17 -86
- package/dist/cjs/ion-popover.cjs.entry.js +1 -1
- package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
- package/dist/cjs/ion-select_3.cjs.entry.js +9 -4
- package/dist/cjs/ion-toast.cjs.entry.js +1 -1
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/{overlays-D3xMmZCY.js → overlays-DxIZwUXI.js} +11 -15
- package/dist/collection/components/action-sheet/action-sheet.js +199 -4
- package/dist/collection/components/modal/modal.js +16 -86
- package/dist/collection/components/select/select.js +8 -3
- package/dist/collection/utils/overlays.js +11 -15
- package/dist/docs.json +14 -8
- package/dist/esm/index.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +184 -5
- package/dist/esm/ion-alert.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +1 -1
- package/dist/esm/ion-loading.entry.js +1 -1
- package/dist/esm/ion-menu_3.entry.js +1 -1
- package/dist/esm/ion-modal.entry.js +17 -86
- package/dist/esm/ion-popover.entry.js +1 -1
- package/dist/esm/ion-select-modal.entry.js +1 -1
- package/dist/esm/ion-select_3.entry.js +9 -4
- package/dist/esm/ion-toast.entry.js +1 -1
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{overlays-DYKBVm6h.js → overlays-BymNv-BL.js} +11 -15
- package/dist/ionic/index.esm.js +1 -1
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/{p-3fad4ab5.entry.js → p-0b80d700.entry.js} +1 -1
- package/dist/ionic/{p-a480563a.entry.js → p-15193d01.entry.js} +1 -1
- package/dist/ionic/p-5837f29f.entry.js +4 -0
- package/dist/ionic/{p-b4b6513a.entry.js → p-7da39a4d.entry.js} +1 -1
- package/dist/ionic/{p-caa8efa1.entry.js → p-83be404e.entry.js} +1 -1
- package/dist/ionic/p-8edc7565.entry.js +4 -0
- package/dist/ionic/{p-7928cc4d.entry.js → p-98fc09eb.entry.js} +1 -1
- package/dist/ionic/p-D87hU-Ly.js +4 -0
- package/dist/ionic/p-c69ff6d8.entry.js +4 -0
- package/dist/ionic/{p-985f02a8.entry.js → p-cb93126d.entry.js} +1 -1
- package/dist/ionic/{p-038f3a87.entry.js → p-e16b69e1.entry.js} +1 -1
- package/dist/types/components/action-sheet/action-sheet.d.ts +37 -0
- package/dist/types/components/modal/modal.d.ts +0 -13
- package/hydrate/index.js +220 -109
- package/hydrate/index.mjs +220 -109
- package/package.json +4 -1
- package/dist/ionic/p-1cf19c5a.entry.js +0 -4
- package/dist/ionic/p-9084d52f.entry.js +0 -4
- package/dist/ionic/p-CHK505Co.js +0 -4
- package/dist/ionic/p-ede27a66.entry.js +0 -4
|
@@ -463,13 +463,7 @@ export class Modal {
|
|
|
463
463
|
};
|
|
464
464
|
window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
|
|
465
465
|
}
|
|
466
|
-
|
|
467
|
-
* Recalculate isSheetModal because framework bindings (e.g., Angular)
|
|
468
|
-
* may not have been applied when componentWillLoad ran.
|
|
469
|
-
*/
|
|
470
|
-
const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
|
|
471
|
-
this.isSheetModal = isSheetModal;
|
|
472
|
-
if (isSheetModal) {
|
|
466
|
+
if (this.isSheetModal) {
|
|
473
467
|
this.initSheetGesture();
|
|
474
468
|
}
|
|
475
469
|
else if (hasCardModal) {
|
|
@@ -551,79 +545,6 @@ export class Modal {
|
|
|
551
545
|
this.gesture = gesture;
|
|
552
546
|
this.moveSheetToBreakpoint = moveSheetToBreakpoint;
|
|
553
547
|
this.gesture.enable(true);
|
|
554
|
-
/**
|
|
555
|
-
* When backdrop interaction is allowed, nested router outlets from child routes
|
|
556
|
-
* may block pointer events to parent content. Apply passthrough styles only when
|
|
557
|
-
* the modal was the sole content of a child route page.
|
|
558
|
-
* See https://github.com/ionic-team/ionic-framework/issues/30700
|
|
559
|
-
*/
|
|
560
|
-
const backdropNotBlocking = this.showBackdrop === false || this.focusTrap === false || backdropBreakpoint > 0;
|
|
561
|
-
if (backdropNotBlocking) {
|
|
562
|
-
this.setupChildRoutePassthrough();
|
|
563
|
-
}
|
|
564
|
-
}
|
|
565
|
-
/**
|
|
566
|
-
* For sheet modals that allow background interaction, sets up pointer-events
|
|
567
|
-
* passthrough on child route page wrappers and nested router outlets.
|
|
568
|
-
*/
|
|
569
|
-
setupChildRoutePassthrough() {
|
|
570
|
-
var _a;
|
|
571
|
-
const pageParent = this.getOriginalPageParent();
|
|
572
|
-
// Skip ion-app (controller modals) and pages with other content (inline modals)
|
|
573
|
-
if (!pageParent || pageParent.tagName === 'ION-APP') {
|
|
574
|
-
return;
|
|
575
|
-
}
|
|
576
|
-
const hasVisibleContent = Array.from(pageParent.children).some((child) => {
|
|
577
|
-
var _a;
|
|
578
|
-
if (child === this.el)
|
|
579
|
-
return false;
|
|
580
|
-
if (child instanceof HTMLElement && window.getComputedStyle(child).display === 'none')
|
|
581
|
-
return false;
|
|
582
|
-
if (child.tagName === 'TEMPLATE' || child.tagName === 'SLOT')
|
|
583
|
-
return false;
|
|
584
|
-
if (child.nodeType === Node.TEXT_NODE && !((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()))
|
|
585
|
-
return false;
|
|
586
|
-
return true;
|
|
587
|
-
});
|
|
588
|
-
if (hasVisibleContent) {
|
|
589
|
-
return;
|
|
590
|
-
}
|
|
591
|
-
// Child route case: page only contained the modal
|
|
592
|
-
pageParent.classList.add('ion-page-overlay-passthrough');
|
|
593
|
-
// Also make nested router outlets passthrough
|
|
594
|
-
const routerOutlet = pageParent.parentElement;
|
|
595
|
-
if ((routerOutlet === null || routerOutlet === void 0 ? void 0 : routerOutlet.tagName) === 'ION-ROUTER-OUTLET' && ((_a = routerOutlet.parentElement) === null || _a === void 0 ? void 0 : _a.tagName) !== 'ION-APP') {
|
|
596
|
-
routerOutlet.style.setProperty('pointer-events', 'none');
|
|
597
|
-
routerOutlet.setAttribute('data-overlay-passthrough', 'true');
|
|
598
|
-
}
|
|
599
|
-
}
|
|
600
|
-
/**
|
|
601
|
-
* Finds the ion-page ancestor of the modal's original parent location.
|
|
602
|
-
*/
|
|
603
|
-
getOriginalPageParent() {
|
|
604
|
-
if (!this.cachedOriginalParent) {
|
|
605
|
-
return null;
|
|
606
|
-
}
|
|
607
|
-
let pageParent = this.cachedOriginalParent;
|
|
608
|
-
while (pageParent && !pageParent.classList.contains('ion-page')) {
|
|
609
|
-
pageParent = pageParent.parentElement;
|
|
610
|
-
}
|
|
611
|
-
return pageParent;
|
|
612
|
-
}
|
|
613
|
-
/**
|
|
614
|
-
* Removes passthrough styles added by setupChildRoutePassthrough.
|
|
615
|
-
*/
|
|
616
|
-
cleanupChildRoutePassthrough() {
|
|
617
|
-
const pageParent = this.getOriginalPageParent();
|
|
618
|
-
if (!pageParent) {
|
|
619
|
-
return;
|
|
620
|
-
}
|
|
621
|
-
pageParent.classList.remove('ion-page-overlay-passthrough');
|
|
622
|
-
const routerOutlet = pageParent.parentElement;
|
|
623
|
-
if (routerOutlet === null || routerOutlet === void 0 ? void 0 : routerOutlet.hasAttribute('data-overlay-passthrough')) {
|
|
624
|
-
routerOutlet.style.removeProperty('pointer-events');
|
|
625
|
-
routerOutlet.removeAttribute('data-overlay-passthrough');
|
|
626
|
-
}
|
|
627
548
|
}
|
|
628
549
|
sheetOnDismiss() {
|
|
629
550
|
/**
|
|
@@ -713,7 +634,6 @@ export class Modal {
|
|
|
713
634
|
}
|
|
714
635
|
this.cleanupViewTransitionListener();
|
|
715
636
|
this.cleanupParentRemovalObserver();
|
|
716
|
-
this.cleanupChildRoutePassthrough();
|
|
717
637
|
}
|
|
718
638
|
this.currentBreakpoint = undefined;
|
|
719
639
|
this.animation = undefined;
|
|
@@ -918,6 +838,17 @@ export class Modal {
|
|
|
918
838
|
this.cachedOriginalParent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
|
|
919
839
|
return;
|
|
920
840
|
}
|
|
841
|
+
/**
|
|
842
|
+
* Don't observe for controller-based modals or when the parent is the
|
|
843
|
+
* app root (document.body or ion-app). These parents won't be removed,
|
|
844
|
+
* and observing document.body with subtree: true causes performance
|
|
845
|
+
* issues with frameworks like Angular during change detection.
|
|
846
|
+
*/
|
|
847
|
+
if (this.hasController ||
|
|
848
|
+
this.cachedOriginalParent === document.body ||
|
|
849
|
+
this.cachedOriginalParent.tagName === 'ION-APP') {
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
921
852
|
this.parentRemovalObserver = new MutationObserver((mutations) => {
|
|
922
853
|
mutations.forEach((mutation) => {
|
|
923
854
|
if (mutation.type === 'childList' && mutation.removedNodes.length > 0) {
|
|
@@ -959,20 +890,20 @@ export class Modal {
|
|
|
959
890
|
const isCardModal = presentingElement !== undefined && mode === 'ios';
|
|
960
891
|
const isHandleCycle = handleBehavior === 'cycle';
|
|
961
892
|
const isSheetModalWithHandle = isSheetModal && showHandle;
|
|
962
|
-
return (h(Host, Object.assign({ key: '
|
|
893
|
+
return (h(Host, Object.assign({ key: '5d8261a1a174d83642c0f7f2aa4f6c265f50fa57', "no-router": true,
|
|
963
894
|
// Allow the modal to be navigable when the handle is focusable
|
|
964
895
|
tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
|
|
965
896
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
966
|
-
}, 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: '
|
|
897
|
+
}, 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: 'bc165dd344e752c13076ca5ae37ea7d68d618d55', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && h("div", { key: '4a2f6edaeeec2978f0cd7b2b93a44c2f0da3ab54', class: "modal-shadow" }), h("div", Object.assign({ key: '13d662aa50871e97567270dbbce6825633c62bad',
|
|
967
898
|
/*
|
|
968
899
|
role and aria-modal must be used on the
|
|
969
900
|
same element. They must also be set inside the
|
|
970
901
|
shadow DOM otherwise ion-button will not be highlighted
|
|
971
902
|
when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
|
|
972
903
|
*/
|
|
973
|
-
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: '
|
|
904
|
+
role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (h("button", { key: 'e678cd3c64a0ab56636f68f9fa416741589f783c', class: "modal-handle",
|
|
974
905
|
// Prevents the handle from receiving keyboard focus when it does not cycle
|
|
975
|
-
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: '
|
|
906
|
+
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: '1ebc3549c5c67ea286384b9917ed4dd8958ea2ae', onSlotchange: this.onSlotChange }))));
|
|
976
907
|
}
|
|
977
908
|
static get is() { return "ion-modal"; }
|
|
978
909
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1531,7 +1462,6 @@ export class Modal {
|
|
|
1531
1462
|
}
|
|
1532
1463
|
static get states() {
|
|
1533
1464
|
return {
|
|
1534
|
-
"isSheetModal": {},
|
|
1535
1465
|
"presented": {}
|
|
1536
1466
|
};
|
|
1537
1467
|
}
|
|
@@ -395,13 +395,18 @@ export class Select {
|
|
|
395
395
|
.filter((cls) => cls !== 'hydrated')
|
|
396
396
|
.join(' ');
|
|
397
397
|
const optClass = `${OPTION_CLASS} ${copyClasses}`;
|
|
398
|
+
const isSelected = isOptionSelected(selectValue, value, this.compareWith);
|
|
398
399
|
return {
|
|
399
|
-
role:
|
|
400
|
+
role: isSelected ? 'selected' : '',
|
|
400
401
|
text: option.textContent,
|
|
401
402
|
cssClass: optClass,
|
|
402
403
|
handler: () => {
|
|
403
404
|
this.setValue(value);
|
|
404
405
|
},
|
|
406
|
+
htmlAttributes: {
|
|
407
|
+
'aria-checked': isSelected ? 'true' : 'false',
|
|
408
|
+
role: 'radio',
|
|
409
|
+
},
|
|
405
410
|
};
|
|
406
411
|
});
|
|
407
412
|
// Add "cancel" button
|
|
@@ -828,7 +833,7 @@ export class Select {
|
|
|
828
833
|
* TODO(FW-5592): Remove hasStartEndSlots condition
|
|
829
834
|
*/
|
|
830
835
|
const labelShouldFloat = labelPlacement === 'stacked' || (labelPlacement === 'floating' && (hasValue || isExpanded || hasStartEndSlots));
|
|
831
|
-
return (h(Host, { key: '
|
|
836
|
+
return (h(Host, { key: 'd8026835993d0e6dce747098f741a06ae4e4f54d', onClick: this.onClick, class: createColorClasses(this.color, {
|
|
832
837
|
[mode]: true,
|
|
833
838
|
'in-item': inItem,
|
|
834
839
|
'in-item-color': hostContext('ion-item.ion-color', el),
|
|
@@ -846,7 +851,7 @@ export class Select {
|
|
|
846
851
|
[`select-justify-${justify}`]: justifyEnabled,
|
|
847
852
|
[`select-shape-${shape}`]: shape !== undefined,
|
|
848
853
|
[`select-label-placement-${labelPlacement}`]: true,
|
|
849
|
-
}) }, h("label", { key: '
|
|
854
|
+
}) }, h("label", { key: 'fcfb40209d6d07d49c7fdca4884b31abf6ac2567', class: "select-wrapper", id: "select-label", onClick: this.onLabelClick }, this.renderLabelContainer(), h("div", { key: 'f191664f2290c3890bde1156157c83a6ff17dbe2', class: "select-wrapper-inner" }, h("slot", { key: '317a28d1115b4214f291e228ce0fe6fc782e57d5', name: "start" }), h("div", { key: 'db68e18abd5ca3a1023d7c7b58bf89893ae18073', class: "native-wrapper", ref: (el) => (this.nativeWrapperEl = el), part: "container" }, this.renderSelectText(), this.renderListbox()), h("slot", { key: '4274e042267c2234a198b0f65c89477898d08130', name: "end" }), !hasFloatingOrStackedLabel && this.renderSelectIcon()), hasFloatingOrStackedLabel && this.renderSelectIcon(), shouldRenderHighlight && h("div", { key: '2e2eb1ee2b2791e0683d9afb186fde6e938ca59c', class: "select-highlight" })), this.renderBottomContent()));
|
|
850
855
|
}
|
|
851
856
|
static get is() { return "ion-select"; }
|
|
852
857
|
static get encapsulation() { return "shadow"; }
|
|
@@ -423,7 +423,7 @@ export const setRootAriaHidden = (hidden = false) => {
|
|
|
423
423
|
}
|
|
424
424
|
};
|
|
425
425
|
export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
|
|
426
|
-
var _a, _b
|
|
426
|
+
var _a, _b;
|
|
427
427
|
if (overlay.presented) {
|
|
428
428
|
return;
|
|
429
429
|
}
|
|
@@ -457,10 +457,9 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
457
457
|
*/
|
|
458
458
|
const overlayEl = overlay.el;
|
|
459
459
|
const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
|
|
460
|
-
// Only lock out root content when backdrop is
|
|
461
|
-
//
|
|
462
|
-
const
|
|
463
|
-
const shouldLockRoot = shouldTrapFocus && backdropAlwaysActive;
|
|
460
|
+
// Only lock out root content when backdrop is active. Developers relying on showBackdrop=false
|
|
461
|
+
// expect background interaction to remain enabled.
|
|
462
|
+
const shouldLockRoot = shouldTrapFocus && overlayEl.showBackdrop !== false;
|
|
464
463
|
overlay.presented = true;
|
|
465
464
|
overlay.willPresent.emit();
|
|
466
465
|
if (shouldLockRoot) {
|
|
@@ -472,7 +471,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
472
471
|
}
|
|
473
472
|
document.body.classList.add(BACKDROP_NO_SCROLL);
|
|
474
473
|
}
|
|
475
|
-
(
|
|
474
|
+
(_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
|
|
476
475
|
const mode = getIonMode(overlay);
|
|
477
476
|
// get the user's animation fn if one was provided
|
|
478
477
|
const animationBuilder = overlay.enterAnimation
|
|
@@ -481,7 +480,7 @@ export const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation
|
|
|
481
480
|
const completed = await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
|
|
482
481
|
if (completed) {
|
|
483
482
|
overlay.didPresent.emit();
|
|
484
|
-
(
|
|
483
|
+
(_b = overlay.didPresentShorthand) === null || _b === void 0 ? void 0 : _b.emit();
|
|
485
484
|
}
|
|
486
485
|
/**
|
|
487
486
|
* If the focused element is already
|
|
@@ -559,7 +558,7 @@ const restoreElementFocus = async (overlayEl) => {
|
|
|
559
558
|
}
|
|
560
559
|
};
|
|
561
560
|
export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
|
|
562
|
-
var _a, _b
|
|
561
|
+
var _a, _b;
|
|
563
562
|
if (!overlay.presented) {
|
|
564
563
|
return false;
|
|
565
564
|
}
|
|
@@ -575,14 +574,11 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
575
574
|
* is dismissed.
|
|
576
575
|
*/
|
|
577
576
|
const overlaysLockingRoot = presentedOverlays.filter((o) => {
|
|
578
|
-
var _a;
|
|
579
577
|
const el = o;
|
|
580
|
-
|
|
581
|
-
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && backdropAlwaysActive;
|
|
578
|
+
return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && el.showBackdrop !== false;
|
|
582
579
|
});
|
|
583
580
|
const overlayEl = overlay.el;
|
|
584
|
-
const
|
|
585
|
-
const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && backdropAlwaysActive;
|
|
581
|
+
const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && overlayEl.showBackdrop !== false;
|
|
586
582
|
/**
|
|
587
583
|
* If this is the last visible overlay that is trapping focus
|
|
588
584
|
* then we want to re-add the root to the accessibility tree.
|
|
@@ -597,7 +593,7 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
597
593
|
// Overlay contents should not be clickable during dismiss
|
|
598
594
|
overlay.el.style.setProperty('pointer-events', 'none');
|
|
599
595
|
overlay.willDismiss.emit({ data, role });
|
|
600
|
-
(
|
|
596
|
+
(_a = overlay.willDismissShorthand) === null || _a === void 0 ? void 0 : _a.emit({ data, role });
|
|
601
597
|
const mode = getIonMode(overlay);
|
|
602
598
|
const animationBuilder = overlay.leaveAnimation
|
|
603
599
|
? overlay.leaveAnimation
|
|
@@ -607,7 +603,7 @@ export const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLe
|
|
|
607
603
|
await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
|
|
608
604
|
}
|
|
609
605
|
overlay.didDismiss.emit({ data, role });
|
|
610
|
-
(
|
|
606
|
+
(_b = overlay.didDismissShorthand) === null || _b === void 0 ? void 0 : _b.emit({ data, role });
|
|
611
607
|
// Get a reference to all animations currently assigned to this overlay
|
|
612
608
|
// Then tear them down to return the overlay to its initial visual state
|
|
613
609
|
const animations = activeAnimations.get(overlay) || [];
|
package/dist/docs.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2025-12-
|
|
2
|
+
"timestamp": "2025-12-08T22:02:42",
|
|
3
3
|
"compiler": {
|
|
4
4
|
"name": "@stencil/core",
|
|
5
5
|
"version": "4.38.0",
|
|
@@ -1188,7 +1188,13 @@
|
|
|
1188
1188
|
"docsTags": []
|
|
1189
1189
|
}
|
|
1190
1190
|
],
|
|
1191
|
-
"listeners": [
|
|
1191
|
+
"listeners": [
|
|
1192
|
+
{
|
|
1193
|
+
"event": "keydown",
|
|
1194
|
+
"capture": false,
|
|
1195
|
+
"passive": false
|
|
1196
|
+
}
|
|
1197
|
+
],
|
|
1192
1198
|
"styles": [
|
|
1193
1199
|
{
|
|
1194
1200
|
"name": "--backdrop-opacity",
|
|
@@ -1485,15 +1491,15 @@
|
|
|
1485
1491
|
"ion-select"
|
|
1486
1492
|
],
|
|
1487
1493
|
"dependencies": [
|
|
1488
|
-
"ion-backdrop",
|
|
1489
1494
|
"ion-icon",
|
|
1490
|
-
"ion-ripple-effect"
|
|
1495
|
+
"ion-ripple-effect",
|
|
1496
|
+
"ion-backdrop"
|
|
1491
1497
|
],
|
|
1492
1498
|
"dependencyGraph": {
|
|
1493
1499
|
"ion-action-sheet": [
|
|
1494
|
-
"ion-backdrop",
|
|
1495
1500
|
"ion-icon",
|
|
1496
|
-
"ion-ripple-effect"
|
|
1501
|
+
"ion-ripple-effect",
|
|
1502
|
+
"ion-backdrop"
|
|
1497
1503
|
],
|
|
1498
1504
|
"ion-select": [
|
|
1499
1505
|
"ion-action-sheet"
|
|
@@ -31731,9 +31737,9 @@
|
|
|
31731
31737
|
"ion-backdrop"
|
|
31732
31738
|
],
|
|
31733
31739
|
"ion-action-sheet": [
|
|
31734
|
-
"ion-backdrop",
|
|
31735
31740
|
"ion-icon",
|
|
31736
|
-
"ion-ripple-effect"
|
|
31741
|
+
"ion-ripple-effect",
|
|
31742
|
+
"ion-backdrop"
|
|
31737
31743
|
],
|
|
31738
31744
|
"ion-alert": [
|
|
31739
31745
|
"ion-ripple-effect",
|
package/dist/esm/index.js
CHANGED
|
@@ -13,7 +13,7 @@ export { L as LogLevel } from './index-C8IsBmNU.js';
|
|
|
13
13
|
export { I as IonicSafeString, g as getMode, s as setupConfig } from './config-mCdtaoPe.js';
|
|
14
14
|
export { o as openURL } from './theme-DiVJyqlX.js';
|
|
15
15
|
export { m as menuController } from './index-CvDIirVx.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-BymNv-BL.js';
|
|
17
17
|
import './index-ZjP4CjeZ.js';
|
|
18
18
|
import './gesture-controller-BTEOs1at.js';
|
|
19
19
|
import './hardware-back-button-CPLxO-Ev.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-L570Swow.js';
|
|
6
6
|
import { r as raf } from './helpers-DEn3pfjm.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-BymNv-BL.js';
|
|
9
9
|
import { g as getClassMap } from './theme-DiVJyqlX.js';
|
|
10
10
|
import { b as getIonMode } from './ionic-global-CDrldh-5.js';
|
|
11
11
|
import { c as createAnimation } from './animation-Dt8bGnA-.js';
|
|
@@ -119,6 +119,7 @@ const ActionSheet = class {
|
|
|
119
119
|
this.delegateController = createDelegateController(this);
|
|
120
120
|
this.lockController = createLockController();
|
|
121
121
|
this.triggerController = createTriggerController();
|
|
122
|
+
this.hasRadioButtons = false;
|
|
122
123
|
this.presented = false;
|
|
123
124
|
/** @internal */
|
|
124
125
|
this.hasController = false;
|
|
@@ -163,6 +164,19 @@ const ActionSheet = class {
|
|
|
163
164
|
}
|
|
164
165
|
};
|
|
165
166
|
}
|
|
167
|
+
buttonsChanged() {
|
|
168
|
+
const radioButtons = this.getRadioButtons();
|
|
169
|
+
this.hasRadioButtons = radioButtons.length > 0;
|
|
170
|
+
// Initialize activeRadioId when buttons change
|
|
171
|
+
if (this.hasRadioButtons) {
|
|
172
|
+
const checkedButton = radioButtons.find((b) => { var _a; return ((_a = b.htmlAttributes) === null || _a === void 0 ? void 0 : _a['aria-checked']) === 'true'; });
|
|
173
|
+
if (checkedButton) {
|
|
174
|
+
const allButtons = this.getButtons();
|
|
175
|
+
const checkedIndex = allButtons.indexOf(checkedButton);
|
|
176
|
+
this.activeRadioId = this.getButtonId(checkedButton, checkedIndex);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
166
180
|
onIsOpenChange(newValue, oldValue) {
|
|
167
181
|
if (newValue === true && oldValue === false) {
|
|
168
182
|
this.present();
|
|
@@ -243,11 +257,122 @@ const ActionSheet = class {
|
|
|
243
257
|
}
|
|
244
258
|
return true;
|
|
245
259
|
}
|
|
260
|
+
/**
|
|
261
|
+
* Get all buttons regardless of role.
|
|
262
|
+
*/
|
|
246
263
|
getButtons() {
|
|
247
264
|
return this.buttons.map((b) => {
|
|
248
265
|
return typeof b === 'string' ? { text: b } : b;
|
|
249
266
|
});
|
|
250
267
|
}
|
|
268
|
+
/**
|
|
269
|
+
* Get all radio buttons (buttons with role="radio").
|
|
270
|
+
*/
|
|
271
|
+
getRadioButtons() {
|
|
272
|
+
return this.getButtons().filter((b) => {
|
|
273
|
+
var _a;
|
|
274
|
+
const role = (_a = b.htmlAttributes) === null || _a === void 0 ? void 0 : _a.role;
|
|
275
|
+
return role === 'radio' && !isCancel(role);
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Handle radio button selection and update aria-checked state.
|
|
280
|
+
*
|
|
281
|
+
* @param button The radio button that was selected.
|
|
282
|
+
*/
|
|
283
|
+
selectRadioButton(button) {
|
|
284
|
+
const buttonId = this.getButtonId(button);
|
|
285
|
+
// Set the active radio ID (this will trigger a re-render and update aria-checked)
|
|
286
|
+
this.activeRadioId = buttonId;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get or generate an ID for a button.
|
|
290
|
+
*
|
|
291
|
+
* @param button The button for which to get the ID.
|
|
292
|
+
* @param index Optional index of the button in the buttons array.
|
|
293
|
+
* @returns The ID of the button.
|
|
294
|
+
*/
|
|
295
|
+
getButtonId(button, index) {
|
|
296
|
+
if (button.id) {
|
|
297
|
+
return button.id;
|
|
298
|
+
}
|
|
299
|
+
const allButtons = this.getButtons();
|
|
300
|
+
const buttonIndex = index !== undefined ? index : allButtons.indexOf(button);
|
|
301
|
+
return `action-sheet-button-${this.overlayIndex}-${buttonIndex}`;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* When the action sheet has radio buttons, we want to follow the
|
|
305
|
+
* keyboard navigation pattern for radio groups:
|
|
306
|
+
* - Arrow Down/Right: Move to the next radio button (wrap to first if at end)
|
|
307
|
+
* - Arrow Up/Left: Move to the previous radio button (wrap to last if at start)
|
|
308
|
+
* - Space/Enter: Select the focused radio button and trigger its handler
|
|
309
|
+
*/
|
|
310
|
+
onKeydown(ev) {
|
|
311
|
+
// Only handle keyboard navigation if we have radio buttons
|
|
312
|
+
if (!this.hasRadioButtons || !this.presented) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
const target = ev.target;
|
|
316
|
+
// Ignore if the target element is not within the action sheet or not a radio button
|
|
317
|
+
if (!this.el.contains(target) ||
|
|
318
|
+
!target.classList.contains('action-sheet-button') ||
|
|
319
|
+
target.getAttribute('role') !== 'radio') {
|
|
320
|
+
return;
|
|
321
|
+
}
|
|
322
|
+
// Get all radio button elements and filter out disabled ones
|
|
323
|
+
const radios = Array.from(this.el.querySelectorAll('.action-sheet-button[role="radio"]')).filter((el) => !el.disabled);
|
|
324
|
+
const currentIndex = radios.findIndex((radio) => radio.id === target.id);
|
|
325
|
+
if (currentIndex === -1) {
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
const allButtons = this.getButtons();
|
|
329
|
+
const radioButtons = this.getRadioButtons();
|
|
330
|
+
/**
|
|
331
|
+
* Build a map of button element IDs to their ActionSheetButton
|
|
332
|
+
* config objects.
|
|
333
|
+
* This allows us to quickly look up which button config corresponds
|
|
334
|
+
* to a DOM element when handling keyboard navigation
|
|
335
|
+
* (e.g., whenuser presses Space/Enter or arrow keys).
|
|
336
|
+
* The key is the ID that was set on the DOM element during render,
|
|
337
|
+
* and the value is the ActionSheetButton config that contains the
|
|
338
|
+
* handler and other properties.
|
|
339
|
+
*/
|
|
340
|
+
const buttonIdMap = new Map();
|
|
341
|
+
radioButtons.forEach((b) => {
|
|
342
|
+
const allIndex = allButtons.indexOf(b);
|
|
343
|
+
const buttonId = this.getButtonId(b, allIndex);
|
|
344
|
+
buttonIdMap.set(buttonId, b);
|
|
345
|
+
});
|
|
346
|
+
let nextEl;
|
|
347
|
+
if (['ArrowDown', 'ArrowRight'].includes(ev.key)) {
|
|
348
|
+
ev.preventDefault();
|
|
349
|
+
ev.stopPropagation();
|
|
350
|
+
nextEl = currentIndex === radios.length - 1 ? radios[0] : radios[currentIndex + 1];
|
|
351
|
+
}
|
|
352
|
+
else if (['ArrowUp', 'ArrowLeft'].includes(ev.key)) {
|
|
353
|
+
ev.preventDefault();
|
|
354
|
+
ev.stopPropagation();
|
|
355
|
+
nextEl = currentIndex === 0 ? radios[radios.length - 1] : radios[currentIndex - 1];
|
|
356
|
+
}
|
|
357
|
+
else if (ev.key === ' ' || ev.key === 'Enter') {
|
|
358
|
+
ev.preventDefault();
|
|
359
|
+
ev.stopPropagation();
|
|
360
|
+
const button = buttonIdMap.get(target.id);
|
|
361
|
+
if (button) {
|
|
362
|
+
this.selectRadioButton(button);
|
|
363
|
+
this.buttonClick(button);
|
|
364
|
+
}
|
|
365
|
+
return;
|
|
366
|
+
}
|
|
367
|
+
// Focus the next radio button
|
|
368
|
+
if (nextEl) {
|
|
369
|
+
const button = buttonIdMap.get(nextEl.id);
|
|
370
|
+
if (button) {
|
|
371
|
+
this.selectRadioButton(button);
|
|
372
|
+
nextEl.focus();
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
}
|
|
251
376
|
connectedCallback() {
|
|
252
377
|
prepareOverlay(this.el);
|
|
253
378
|
this.triggerChanged();
|
|
@@ -264,6 +389,8 @@ const ActionSheet = class {
|
|
|
264
389
|
if (!((_a = this.htmlAttributes) === null || _a === void 0 ? void 0 : _a.id)) {
|
|
265
390
|
setOverlayId(this.el);
|
|
266
391
|
}
|
|
392
|
+
// Initialize activeRadioId for radio buttons
|
|
393
|
+
this.buttonsChanged();
|
|
267
394
|
}
|
|
268
395
|
componentDidLoad() {
|
|
269
396
|
/**
|
|
@@ -301,22 +428,74 @@ const ActionSheet = class {
|
|
|
301
428
|
*/
|
|
302
429
|
this.triggerChanged();
|
|
303
430
|
}
|
|
431
|
+
renderActionSheetButtons(filteredButtons) {
|
|
432
|
+
const mode = getIonMode(this);
|
|
433
|
+
const { activeRadioId } = this;
|
|
434
|
+
return filteredButtons.map((b, index) => {
|
|
435
|
+
var _a;
|
|
436
|
+
const isRadio = ((_a = b.htmlAttributes) === null || _a === void 0 ? void 0 : _a.role) === 'radio';
|
|
437
|
+
const buttonId = this.getButtonId(b, index);
|
|
438
|
+
const radioButtons = this.getRadioButtons();
|
|
439
|
+
const isActiveRadio = isRadio && buttonId === activeRadioId;
|
|
440
|
+
const isFirstRadio = isRadio && b === radioButtons[0];
|
|
441
|
+
// For radio buttons, set tabindex: 0 for the active one, -1 for others
|
|
442
|
+
// For non-radio buttons, use default tabindex (undefined, which means 0)
|
|
443
|
+
/**
|
|
444
|
+
* For radio buttons, set tabindex based on activeRadioId
|
|
445
|
+
* - If the button is the active radio, tabindex is 0
|
|
446
|
+
* - If no radio is active, the first radio button should have tabindex 0
|
|
447
|
+
* - All other radio buttons have tabindex -1
|
|
448
|
+
* For non-radio buttons, use default tabindex (undefined, which means 0)
|
|
449
|
+
*/
|
|
450
|
+
let tabIndex;
|
|
451
|
+
if (isRadio) {
|
|
452
|
+
// Focus on the active radio button
|
|
453
|
+
if (isActiveRadio) {
|
|
454
|
+
tabIndex = 0;
|
|
455
|
+
}
|
|
456
|
+
else if (!activeRadioId && isFirstRadio) {
|
|
457
|
+
// No active radio, first radio gets focus
|
|
458
|
+
tabIndex = 0;
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
// All other radios are not focusable
|
|
462
|
+
tabIndex = -1;
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
else {
|
|
466
|
+
tabIndex = undefined;
|
|
467
|
+
}
|
|
468
|
+
// For radio buttons, set aria-checked based on activeRadioId
|
|
469
|
+
// Otherwise, use the value from htmlAttributes if provided
|
|
470
|
+
const htmlAttrs = Object.assign({}, b.htmlAttributes);
|
|
471
|
+
if (isRadio) {
|
|
472
|
+
htmlAttrs['aria-checked'] = isActiveRadio ? 'true' : 'false';
|
|
473
|
+
}
|
|
474
|
+
return (h("button", Object.assign({}, htmlAttrs, { role: isRadio ? 'radio' : undefined, type: "button", id: buttonId, class: Object.assign(Object.assign({}, buttonClass(b)), { 'action-sheet-selected': isActiveRadio }), onClick: () => {
|
|
475
|
+
if (isRadio) {
|
|
476
|
+
this.selectRadioButton(b);
|
|
477
|
+
}
|
|
478
|
+
this.buttonClick(b);
|
|
479
|
+
}, disabled: b.disabled, tabIndex: tabIndex }), h("span", { class: "action-sheet-button-inner" }, b.icon && h("ion-icon", { icon: b.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" }), b.text), mode === 'md' && h("ion-ripple-effect", null)));
|
|
480
|
+
});
|
|
481
|
+
}
|
|
304
482
|
render() {
|
|
305
|
-
const { header, htmlAttributes, overlayIndex } = this;
|
|
483
|
+
const { header, htmlAttributes, overlayIndex, hasRadioButtons } = this;
|
|
306
484
|
const mode = getIonMode(this);
|
|
307
485
|
const allButtons = this.getButtons();
|
|
308
486
|
const cancelButton = allButtons.find((b) => b.role === 'cancel');
|
|
309
487
|
const buttons = allButtons.filter((b) => b.role !== 'cancel');
|
|
310
488
|
const headerID = `action-sheet-${overlayIndex}-header`;
|
|
311
|
-
return (h(Host, Object.assign({ key: '
|
|
489
|
+
return (h(Host, Object.assign({ key: '173fcff5b1da7c33c267de4667591c946b8c8d03', role: "dialog", "aria-modal": "true", "aria-labelledby": header !== undefined ? headerID : null, tabindex: "-1" }, htmlAttributes, { style: {
|
|
312
490
|
zIndex: `${20000 + this.overlayIndex}`,
|
|
313
|
-
}, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '
|
|
491
|
+
}, class: Object.assign(Object.assign({ [mode]: true }, getClassMap(this.cssClass)), { 'overlay-hidden': true, 'action-sheet-translucent': this.translucent }), onIonActionSheetWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }), h("ion-backdrop", { key: '521ede659f747864f6c974e09016436eceb7158c', tappable: this.backdropDismiss }), h("div", { key: '7a7946fc434bc444f16a70638f5e948c69d33fcd', tabindex: "0", "aria-hidden": "true" }), h("div", { key: 'bcff39a580489dbafa255842e57aa8602c6d0f18', class: "action-sheet-wrapper ion-overlay-wrapper", ref: (el) => (this.wrapperEl = el) }, h("div", { key: '84bba13ce14261f0f0daa3f9c77648c9e7f36e0e', class: "action-sheet-container" }, h("div", { key: 'd9c8ac404fd6719a7adf8cb36549f67616f9a0c4', class: "action-sheet-group", ref: (el) => (this.groupEl = el), role: hasRadioButtons ? 'radiogroup' : undefined }, header !== undefined && (h("div", { key: '180433a8ad03ef5c54728a1a8f34715b6921d658', id: headerID, class: {
|
|
314
492
|
'action-sheet-title': true,
|
|
315
493
|
'action-sheet-has-sub-title': this.subHeader !== undefined,
|
|
316
|
-
} }, header, this.subHeader && h("div", { key: '
|
|
494
|
+
} }, header, this.subHeader && h("div", { key: '7138e79e61b1a8f42bc5a9175c57fa2f15d7ec5a', class: "action-sheet-sub-title" }, this.subHeader))), this.renderActionSheetButtons(buttons)), cancelButton && (h("div", { key: 'b617c722f5b8028d73ed34b69310f312c65f34a7', class: "action-sheet-group action-sheet-group-cancel" }, h("button", Object.assign({ key: 'd0dd876fc48815df3710413c201c0b445a8e16c0' }, cancelButton.htmlAttributes, { type: "button", class: buttonClass(cancelButton), onClick: () => this.buttonClick(cancelButton) }), h("span", { key: 'e7b960157cc6fc5fe92a12090b2be55e8ae072e4', class: "action-sheet-button-inner" }, cancelButton.icon && (h("ion-icon", { key: '05498ffc60cab911dbff0ecbc6168dea59ada9a5', icon: cancelButton.icon, "aria-hidden": "true", lazy: false, class: "action-sheet-icon" })), cancelButton.text), mode === 'md' && h("ion-ripple-effect", { key: '3d401346cea301be4ca03671f7370f6f4b0b6bde' })))))), h("div", { key: '971f3c5fcc07f36c28eb469a47ec0290c692e139', tabindex: "0", "aria-hidden": "true" })));
|
|
317
495
|
}
|
|
318
496
|
get el() { return getElement(this); }
|
|
319
497
|
static get watchers() { return {
|
|
498
|
+
"buttons": ["buttonsChanged"],
|
|
320
499
|
"isOpen": ["onIsOpenChange"],
|
|
321
500
|
"trigger": ["triggerChanged"]
|
|
322
501
|
}; }
|
|
@@ -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-L570Swow.js';
|
|
7
7
|
import { r as raf } from './helpers-DEn3pfjm.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-BymNv-BL.js';
|
|
10
10
|
import { g as getClassMap } from './theme-DiVJyqlX.js';
|
|
11
11
|
import { b as getIonMode } from './ionic-global-CDrldh-5.js';
|
|
12
12
|
import { c as createAnimation } from './animation-Dt8bGnA-.js';
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { j as printIonError, f as printIonWarning, r as registerInstance, c as createEvent, w as writeTask, h, d as Host, g as getElement } from './index-C8IsBmNU.js';
|
|
5
5
|
import { startFocusVisible } from './focus-visible-BmVRXR1y.js';
|
|
6
6
|
import { r as raf, g as getElementRoot, a as renderHiddenInput, e as clamp } from './helpers-DEn3pfjm.js';
|
|
7
|
-
import { F as FOCUS_TRAP_DISABLE_CLASS, 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-
|
|
7
|
+
import { F as FOCUS_TRAP_DISABLE_CLASS, 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-BymNv-BL.js';
|
|
8
8
|
import { i as isRTL } from './dir-C53feagD.js';
|
|
9
9
|
import { c as createColorClasses, g as getClassMap } from './theme-DiVJyqlX.js';
|
|
10
10
|
import { l as chevronDown, o as caretUpSharp, p as chevronForward, q as caretDownSharp, c as chevronBack } from './index-DV3sJJW8.js';
|
|
@@ -5,7 +5,7 @@ import { r as registerInstance, c as createEvent, e as config, h, d as Host, g a
|
|
|
5
5
|
import { E as ENABLE_HTML_CONTENT_DEFAULT, a as sanitizeDOMString } from './config-mCdtaoPe.js';
|
|
6
6
|
import { r as raf } from './helpers-DEn3pfjm.js';
|
|
7
7
|
import { c as createLockController } from './lock-controller-B-hirT0v.js';
|
|
8
|
-
import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-
|
|
8
|
+
import { d as createDelegateController, e as createTriggerController, B as BACKDROP, j as prepareOverlay, k as setOverlayId, f as present, g as dismiss, h as eventMethod } from './overlays-BymNv-BL.js';
|
|
9
9
|
import { g as getClassMap } from './theme-DiVJyqlX.js';
|
|
10
10
|
import { b as getIonMode } from './ionic-global-CDrldh-5.js';
|
|
11
11
|
import { c as createAnimation } from './animation-Dt8bGnA-.js';
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { r as registerInstance, c as createEvent, e as config, j as printIonError, h, d as Host, g as getElement } from './index-C8IsBmNU.js';
|
|
5
5
|
import { g as getTimeGivenProgression } from './cubic-bezier-hHmYLOfE.js';
|
|
6
|
-
import { o as getPresentedOverlay, B as BACKDROP, n as focusFirstDescendant, q as focusLastDescendant, G as GESTURE } from './overlays-
|
|
6
|
+
import { o as getPresentedOverlay, B as BACKDROP, n as focusFirstDescendant, q as focusLastDescendant, G as GESTURE } from './overlays-BymNv-BL.js';
|
|
7
7
|
import { G as GESTURE_CONTROLLER } from './gesture-controller-BTEOs1at.js';
|
|
8
8
|
import { shouldUseCloseWatcher } from './hardware-back-button-CPLxO-Ev.js';
|
|
9
9
|
import { o as isEndSide, i as inheritAriaAttributes, l as assert, e as clamp } from './helpers-DEn3pfjm.js';
|