@ionic/core 8.7.12-dev.11765060985.14ad27fb → 8.7.12-dev.11765219790.17cbe2e9

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.
Files changed (56) hide show
  1. package/components/modal.js +5 -86
  2. package/components/overlays.js +11 -15
  3. package/css/core.css +1 -1
  4. package/css/core.css.map +1 -1
  5. package/css/ionic.bundle.css +1 -1
  6. package/css/ionic.bundle.css.map +1 -1
  7. package/dist/cjs/index.cjs.js +1 -1
  8. package/dist/cjs/ion-action-sheet.cjs.entry.js +1 -1
  9. package/dist/cjs/ion-alert.cjs.entry.js +1 -1
  10. package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
  11. package/dist/cjs/ion-loading.cjs.entry.js +1 -1
  12. package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
  13. package/dist/cjs/ion-modal.cjs.entry.js +6 -86
  14. package/dist/cjs/ion-popover.cjs.entry.js +1 -1
  15. package/dist/cjs/ion-select-modal.cjs.entry.js +1 -1
  16. package/dist/cjs/ion-select_3.cjs.entry.js +1 -1
  17. package/dist/cjs/ion-toast.cjs.entry.js +1 -1
  18. package/dist/cjs/ionic.cjs.js +1 -1
  19. package/dist/cjs/loader.cjs.js +1 -1
  20. package/dist/cjs/{overlays-D3xMmZCY.js → overlays-DxIZwUXI.js} +11 -15
  21. package/dist/collection/components/modal/modal.js +5 -86
  22. package/dist/collection/utils/overlays.js +11 -15
  23. package/dist/docs.json +1 -1
  24. package/dist/esm/index.js +1 -1
  25. package/dist/esm/ion-action-sheet.entry.js +1 -1
  26. package/dist/esm/ion-alert.entry.js +1 -1
  27. package/dist/esm/ion-datetime_3.entry.js +1 -1
  28. package/dist/esm/ion-loading.entry.js +1 -1
  29. package/dist/esm/ion-menu_3.entry.js +1 -1
  30. package/dist/esm/ion-modal.entry.js +6 -86
  31. package/dist/esm/ion-popover.entry.js +1 -1
  32. package/dist/esm/ion-select-modal.entry.js +1 -1
  33. package/dist/esm/ion-select_3.entry.js +1 -1
  34. package/dist/esm/ion-toast.entry.js +1 -1
  35. package/dist/esm/ionic.js +1 -1
  36. package/dist/esm/loader.js +1 -1
  37. package/dist/esm/{overlays-DYKBVm6h.js → overlays-BymNv-BL.js} +11 -15
  38. package/dist/ionic/index.esm.js +1 -1
  39. package/dist/ionic/ionic.esm.js +1 -1
  40. package/dist/ionic/{p-3fad4ab5.entry.js → p-0b80d700.entry.js} +1 -1
  41. package/dist/ionic/{p-a480563a.entry.js → p-15193d01.entry.js} +1 -1
  42. package/dist/ionic/{p-1cf19c5a.entry.js → p-510d86e1.entry.js} +1 -1
  43. package/dist/ionic/{p-ede27a66.entry.js → p-7380261c.entry.js} +1 -1
  44. package/dist/ionic/{p-b4b6513a.entry.js → p-7da39a4d.entry.js} +1 -1
  45. package/dist/ionic/{p-caa8efa1.entry.js → p-83be404e.entry.js} +1 -1
  46. package/dist/ionic/{p-7928cc4d.entry.js → p-98fc09eb.entry.js} +1 -1
  47. package/dist/ionic/p-D87hU-Ly.js +4 -0
  48. package/dist/ionic/p-a80f1b04.entry.js +4 -0
  49. package/dist/ionic/{p-985f02a8.entry.js → p-cb93126d.entry.js} +1 -1
  50. package/dist/ionic/{p-038f3a87.entry.js → p-e16b69e1.entry.js} +1 -1
  51. package/dist/types/components/modal/modal.d.ts +0 -13
  52. package/hydrate/index.js +16 -101
  53. package/hydrate/index.mjs +16 -101
  54. package/package.json +1 -2
  55. package/dist/ionic/p-9084d52f.entry.js +0 -4
  56. package/dist/ionic/p-CHK505Co.js +0 -4
@@ -1,4 +1,4 @@
1
1
  /*!
2
2
  * (C) Ionic http://ionicframework.com - MIT License
3
3
  */
4
- import{r as t,c as o,f as e,h as r,d as i,g as s}from"./p-C8IsBmNU.js";import{B as n,j as a,k as p,f as c,n as d,g as h,h as l,F as v}from"./p-CHK505Co.js";import{C as f,a as g,d as m}from"./p-D-eFFUkA.js";import{g as x,r as b,f as w,h as u}from"./p-CTfR9YZG.js";import{c as k}from"./p-B-hirT0v.js";import{b as y,a as P}from"./p-BFvmZNyx.js";import{g as D}from"./p-DiVJyqlX.js";import{e as T,w as I}from"./p-DUt5fQmA.js";import{c as N}from"./p-DDb5r57F.js";import"./p-ZjP4CjeZ.js";import"./p-B0q1YL7N.js";import"./p-BTEOs1at.js";const $=(t,o,e)=>{const r=o.getBoundingClientRect(),i=r.height;let s=r.width;return"cover"===t&&e&&(s=e.getBoundingClientRect().width),{contentWidth:s,contentHeight:i}},j=(t,o)=>o&&"ION-ITEM"===o.tagName?t.findIndex((t=>t===o)):-1,A=t=>{const o=x(t).querySelector("button");o&&b((()=>o.focus()))},C=(t,o,e,r,i,s,n,a,p,c,d)=>{var h;let l={top:0,left:0,width:0,height:0};if("event"===s){if(!d)return p;l={top:d.clientY,left:d.clientX,width:1,height:1}}else{const t=c||(null===(h=null==d?void 0:d.detail)||void 0===h?void 0:h.ionShadowTarget)||(null==d?void 0:d.target);if(!t)return p;const o=t.getBoundingClientRect();l={top:o.top,left:o.left,width:o.width,height:o.height}}const v=X(n,l,o,e,r,i,t),f=z(a,n,l,o,e),g=v.top+f.top,m=v.left+f.left,{arrowTop:x,arrowLeft:b}=Y(n,r,i,g,m,o,e,t),{originX:w,originY:u}=L(n,a,t);return{top:g,left:m,referenceCoordinates:l,arrowTop:x,arrowLeft:b,originX:w,originY:u}},L=(t,o,e)=>{switch(t){case"top":return{originX:W(o),originY:"bottom"};case"bottom":return{originX:W(o),originY:"top"};case"left":return{originX:"right",originY:O(o)};case"right":return{originX:"left",originY:O(o)};case"start":return{originX:e?"left":"right",originY:O(o)};case"end":return{originX:e?"right":"left",originY:O(o)}}},W=t=>{switch(t){case"start":return"left";case"center":return"center";case"end":return"right"}},O=t=>{switch(t){case"start":return"top";case"center":return"center";case"end":return"bottom"}},Y=(t,o,e,r,i,s,n,a)=>{const p={arrowTop:r+n/2-o/2,arrowLeft:i+s-o/2},c={arrowTop:r+n/2-o/2,arrowLeft:i-1.5*o};switch(t){case"top":return{arrowTop:r+n,arrowLeft:i+s/2-o/2};case"bottom":return{arrowTop:r-e,arrowLeft:i+s/2-o/2};case"left":return p;case"right":return c;case"start":return a?c:p;case"end":return a?p:c;default:return{arrowTop:0,arrowLeft:0}}},X=(t,o,e,r,i,s,n)=>{const a={top:o.top,left:o.left-e-i},p={top:o.top,left:o.left+o.width+i};switch(t){case"top":return{top:o.top-r-s,left:o.left};case"right":return p;case"bottom":return{top:o.top+o.height+s,left:o.left};case"left":return a;case"start":return n?p:a;case"end":return n?a:p}},z=(t,o,e,r,i)=>{switch(t){case"center":return B(o,e,r,i);case"end":return E(o,e,r,i);default:return{top:0,left:0}}},E=(t,o,e,r)=>{switch(t){case"start":case"end":case"left":case"right":return{top:-(r-o.height),left:0};default:return{top:0,left:-(e-o.width)}}},B=(t,o,e,r)=>{switch(t){case"start":case"end":case"left":case"right":return{top:-(r/2-o.height/2),left:0};default:return{top:0,left:-(e/2-o.width/2)}}},H=(t,o,e,r,i,s,n,a,p,c,d,h,l=0,v=0,f=0)=>{let g=l;const m=v;let x,b=e,w=o,u=c,k=d,y=!1,P=!1;const D=h?h.top+h.height:s/2-a/2,T=h?h.height:0;let I=!1;return b<r+p?(b=r,y=!0,u="left"):n+r+b+p>i&&(P=!0,b=i-n-r,u="right"),D+T+a>s&&("top"===t||"bottom"===t)&&(D-a>0?(w=Math.max(12,D-a-T-(f-1)),g=w+a,k="bottom",I=!0):x=r),{top:w,left:b,bottom:x,originX:u,originY:k,checkSafeAreaLeft:y,checkSafeAreaRight:P,arrowTop:g,arrowLeft:m,addPopoverBottomClass:I}},F=(t,o)=>{var e;const{event:r,size:i,trigger:s,reference:n,side:a,align:p}=o,c=t.ownerDocument,d="rtl"===c.dir,h=c.defaultView.innerWidth,l=c.defaultView.innerHeight,v=x(t),f=v.querySelector(".popover-content"),g=v.querySelector(".popover-arrow"),m=s||(null===(e=null==r?void 0:r.detail)||void 0===e?void 0:e.ionShadowTarget)||(null==r?void 0:r.target),{contentWidth:b,contentHeight:w}=$(i,f,m),{arrowWidth:u,arrowHeight:k}=(t=>{if(!t)return{arrowWidth:0,arrowHeight:0};const{width:o,height:e}=t.getBoundingClientRect();return{arrowWidth:o,arrowHeight:e}})(g),y=C(d,b,w,u,k,n,a,p,{top:l/2-w/2,left:h/2-b/2,originX:d?"right":"left",originY:"top"},s,r),P="cover"===i?0:5,D="cover"===i?0:25,{originX:T,originY:I,top:j,left:A,bottom:L,checkSafeAreaLeft:W,checkSafeAreaRight:O,arrowTop:Y,arrowLeft:X,addPopoverBottomClass:z}=H(a,y.top,y.left,P,h,l,b,w,D,y.originX,y.originY,y.referenceCoordinates,y.arrowTop,y.arrowLeft,k),E=N(),B=N(),F=N();return B.addElement(v.querySelector("ion-backdrop")).fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),F.addElement(v.querySelector(".popover-arrow")).addElement(v.querySelector(".popover-content")).fromTo("opacity",.01,1),E.easing("ease").duration(100).beforeAddWrite((()=>{"cover"===i&&t.style.setProperty("--width",`${b}px`),z&&t.classList.add("popover-bottom"),void 0!==L&&f.style.setProperty("bottom",`${L}px`);let o=`${A}px`;if(W&&(o=`${A}px + var(--ion-safe-area-left, 0)`),O&&(o=`${A}px - var(--ion-safe-area-right, 0)`),f.style.setProperty("top",`calc(${j}px + var(--offset-y, 0))`),f.style.setProperty("left",`calc(${o} + var(--offset-x, 0))`),f.style.setProperty("transform-origin",`${I} ${T}`),null!==g){const t=((t,o=!1,e,r)=>!(!e&&!r||"top"!==t&&"bottom"!==t&&o))(a,y.top!==j||y.left!==A,r,s);t?(g.style.setProperty("top",`calc(${Y}px + var(--offset-y, 0))`),g.style.setProperty("left",`calc(${X}px + var(--offset-x, 0))`)):g.style.setProperty("display","none")}})).addAnimation([B,F])},M=t=>{const o=x(t),e=o.querySelector(".popover-content"),r=o.querySelector(".popover-arrow"),i=N(),s=N(),n=N();return s.addElement(o.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)",0),n.addElement(o.querySelector(".popover-arrow")).addElement(o.querySelector(".popover-content")).fromTo("opacity",.99,0),i.easing("ease").afterAddWrite((()=>{t.style.removeProperty("--width"),t.classList.remove("popover-bottom"),e.style.removeProperty("top"),e.style.removeProperty("left"),e.style.removeProperty("bottom"),e.style.removeProperty("transform-origin"),r&&(r.style.removeProperty("top"),r.style.removeProperty("left"),r.style.removeProperty("display"))})).duration(300).addAnimation([s,n])},V=(t,o)=>{var e;const{event:r,size:i,trigger:s,reference:n,side:a,align:p}=o,c=t.ownerDocument,d="rtl"===c.dir,h=c.defaultView.innerWidth,l=c.defaultView.innerHeight,v=x(t),f=v.querySelector(".popover-content"),g=s||(null===(e=null==r?void 0:r.detail)||void 0===e?void 0:e.ionShadowTarget)||(null==r?void 0:r.target),{contentWidth:m,contentHeight:b}=$(i,f,g),w=C(d,m,b,0,0,n,a,p,{top:l/2-b/2,left:h/2-m/2,originX:d?"right":"left",originY:"top"},s,r),u="cover"===i?0:12,{originX:k,originY:y,top:P,left:D,bottom:T}=H(a,w.top,w.left,u,h,l,m,b,0,w.originX,w.originY,w.referenceCoordinates),I=N(),j=N(),A=N(),L=N(),W=N();return j.addElement(v.querySelector("ion-backdrop")).fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),A.addElement(v.querySelector(".popover-wrapper")).duration(150).fromTo("opacity",.01,1),L.addElement(f).beforeStyles({top:`calc(${P}px + var(--offset-y, 0px))`,left:`calc(${D}px + var(--offset-x, 0px))`,"transform-origin":`${y} ${k}`}).beforeAddWrite((()=>{void 0!==T&&f.style.setProperty("bottom",`${T}px`)})).fromTo("transform","scale(0.8)","scale(1)"),W.addElement(v.querySelector(".popover-viewport")).fromTo("opacity",.01,1),I.easing("cubic-bezier(0.36,0.66,0.04,1)").duration(300).beforeAddWrite((()=>{"cover"===i&&t.style.setProperty("--width",`${m}px`),"bottom"===y&&t.classList.add("popover-bottom")})).addAnimation([j,A,L,W])},R=t=>{const o=x(t),e=o.querySelector(".popover-content"),r=N(),i=N(),s=N();return i.addElement(o.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)",0),s.addElement(o.querySelector(".popover-wrapper")).fromTo("opacity",.99,0),r.easing("ease").afterAddWrite((()=>{t.style.removeProperty("--width"),t.classList.remove("popover-bottom"),e.style.removeProperty("top"),e.style.removeProperty("left"),e.style.removeProperty("bottom"),e.style.removeProperty("transform-origin")})).duration(150).addAnimation([i,s])},S=class{constructor(r){t(this,r),this.didPresent=o(this,"ionPopoverDidPresent",7),this.willPresent=o(this,"ionPopoverWillPresent",7),this.willDismiss=o(this,"ionPopoverWillDismiss",7),this.didDismiss=o(this,"ionPopoverDidDismiss",7),this.didPresentShorthand=o(this,"didPresent",7),this.willPresentShorthand=o(this,"willPresent",7),this.willDismissShorthand=o(this,"willDismiss",7),this.didDismissShorthand=o(this,"didDismiss",7),this.ionMount=o(this,"ionMount",7),this.parentPopover=null,this.coreDelegate=f(),this.lockController=k(),this.inline=!1,this.focusDescendantOnPresent=!1,this.presented=!1,this.hasController=!1,this.keyboardClose=!0,this.backdropDismiss=!0,this.showBackdrop=!0,this.translucent=!1,this.animated=!0,this.triggerAction="click",this.size="auto",this.dismissOnSelect=!1,this.reference="trigger",this.side="bottom",this.arrow=!0,this.isOpen=!1,this.keyboardEvents=!1,this.focusTrap=!0,this.keepContentsMounted=!1,this.onBackdropTap=()=>{this.dismiss(void 0,n)},this.onLifecycle=t=>{const o=this.usersElement,e=U[t.type];if(o&&e){const r=new CustomEvent(e,{bubbles:!1,cancelable:!1,detail:t.detail});o.dispatchEvent(r)}},this.configureTriggerInteraction=()=>{const{trigger:t,triggerAction:o,el:r,destroyTriggerInteraction:i}=this;if(i&&i(),void 0===t)return;const s=this.triggerEl=void 0!==t?document.getElementById(t):null;s?this.destroyTriggerInteraction=((t,o,e)=>{let r=[];switch(o){case"hover":let t;r=[{eventName:"mouseenter",callback:async o=>{o.stopPropagation(),t&&clearTimeout(t),t=setTimeout((()=>{b((()=>{e.presentFromTrigger(o),t=void 0}))}),100)}},{eventName:"mouseleave",callback:o=>{t&&clearTimeout(t);const r=o.relatedTarget;r&&r.closest("ion-popover")!==e&&e.dismiss(void 0,void 0,!1)}},{eventName:"click",callback:t=>t.stopPropagation()},{eventName:"ionPopoverActivateTrigger",callback:t=>e.presentFromTrigger(t,!0)}];break;case"context-menu":r=[{eventName:"contextmenu",callback:t=>{t.preventDefault(),e.presentFromTrigger(t)}},{eventName:"click",callback:t=>t.stopPropagation()},{eventName:"ionPopoverActivateTrigger",callback:t=>e.presentFromTrigger(t,!0)}];break;default:r=[{eventName:"click",callback:t=>e.presentFromTrigger(t)},{eventName:"ionPopoverActivateTrigger",callback:t=>e.presentFromTrigger(t,!0)}]}return r.forEach((({eventName:o,callback:e})=>t.addEventListener(o,e))),t.setAttribute("data-ion-popover-trigger","true"),()=>{r.forEach((({eventName:o,callback:e})=>t.removeEventListener(o,e))),t.removeAttribute("data-ion-popover-trigger")}})(s,o,r):e(`[ion-popover] - A trigger element with the ID "${t}" was not found in the DOM. The trigger element must be in the DOM when the "trigger" property is set on ion-popover.`,this.el)},this.configureKeyboardInteraction=()=>{const{destroyKeyboardInteraction:t,el:o}=this;t&&t(),this.destroyKeyboardInteraction=(t=>{const o=async o=>{var e;const r=document.activeElement;let i=[];const s=null===(e=o.target)||void 0===e?void 0:e.tagName;if("ION-POPOVER"===s||"ION-ITEM"===s){try{i=Array.from(t.querySelectorAll("ion-item:not(ion-popover ion-popover *):not([disabled])"))}catch(t){}switch(o.key){case"ArrowLeft":await t.getParentPopover()&&t.dismiss(void 0,void 0,!1);break;case"ArrowDown":o.preventDefault();const e=((t,o)=>t[j(t,o)+1])(i,r);void 0!==e&&A(e);break;case"ArrowUp":o.preventDefault();const s=((t,o)=>t[j(t,o)-1])(i,r);void 0!==s&&A(s);break;case"Home":o.preventDefault();const n=i[0];void 0!==n&&A(n);break;case"End":o.preventDefault();const a=i[i.length-1];void 0!==a&&A(a);break;case"ArrowRight":case" ":case"Enter":if(r&&r.hasAttribute("data-ion-popover-trigger")){const t=new CustomEvent("ionPopoverActivateTrigger");r.dispatchEvent(t)}}}};return t.addEventListener("keydown",o),()=>t.removeEventListener("keydown",o)})(o)},this.configureDismissInteraction=()=>{const{destroyDismissInteraction:t,parentPopover:o,triggerAction:e,triggerEl:r,el:i}=this;o&&r&&(t&&t(),this.destroyDismissInteraction=((t,o,e,r)=>{let i=[];const s=x(r).querySelector(".popover-content");return i="hover"===o?[{eventName:"mouseenter",callback:o=>{document.elementFromPoint(o.clientX,o.clientY)!==t&&e.dismiss(void 0,void 0,!1)}}]:[{eventName:"click",callback:o=>{o.target.closest("[data-ion-popover-trigger]")!==t?e.dismiss(void 0,void 0,!1):o.stopPropagation()}}],i.forEach((({eventName:t,callback:o})=>s.addEventListener(t,o))),()=>{i.forEach((({eventName:t,callback:o})=>s.removeEventListener(t,o)))}})(r,e,i,o))}}onTriggerChange(){this.configureTriggerInteraction()}onIsOpenChange(t,o){!0===t&&!1===o?this.present():!1===t&&!0===o&&this.dismiss()}connectedCallback(){const{configureTriggerInteraction:t,el:o}=this;a(o),t()}disconnectedCallback(){const{destroyTriggerInteraction:t}=this;t&&t()}componentWillLoad(){var t,o;const{el:e}=this,r=null!==(o=null===(t=this.htmlAttributes)||void 0===t?void 0:t.id)&&void 0!==o?o:p(e);this.parentPopover=e.closest(`ion-popover:not(#${r})`),void 0===this.alignment&&(this.alignment="ios"===y(this)?"center":"start")}componentDidLoad(){const{parentPopover:t,isOpen:o}=this;!0===o&&b((()=>this.present())),t&&w(t,"ionPopoverWillDismiss",(()=>{this.dismiss(void 0,void 0,!1)})),this.configureTriggerInteraction()}async presentFromTrigger(t,o=!1){this.focusDescendantOnPresent=o,await this.present(t),this.focusDescendantOnPresent=!1}getDelegate(t=!1){if(this.workingDelegate&&!t)return{delegate:this.workingDelegate,inline:this.inline};const o=this.inline=null!==this.el.parentNode&&!this.hasController;return{inline:o,delegate:this.workingDelegate=o?this.delegate||this.coreDelegate:this.delegate}}async present(t){const o=await this.lockController.lock();if(this.presented)return void o();const{el:e}=this,{inline:r,delegate:i}=this.getDelegate(!0);this.ionMount.emit(),this.usersElement=await g(i,e,this.component,["popover-viewport"],this.componentProps,r),this.keyboardEvents||this.configureKeyboardInteraction(),this.configureDismissInteraction(),u(e)?await T(this.usersElement):this.keepContentsMounted||await I(),await c(this,"popoverEnter",F,V,{event:t||this.event,size:this.size,trigger:this.triggerEl,reference:this.reference,side:this.side,align:this.alignment}),this.focusDescendantOnPresent&&d(e),o()}async dismiss(t,o,e=!0){const r=await this.lockController.lock(),{destroyKeyboardInteraction:i,destroyDismissInteraction:s}=this;e&&this.parentPopover&&this.parentPopover.dismiss(t,o,e);const n=await h(this,t,o,"popoverLeave",M,R,this.event);if(n){i&&(i(),this.destroyKeyboardInteraction=void 0),s&&(s(),this.destroyDismissInteraction=void 0);const{delegate:t}=this.getDelegate();await m(t,this.usersElement)}return r(),n}async getParentPopover(){return this.parentPopover}onDidDismiss(){return l(this.el,"ionPopoverDidDismiss")}onWillDismiss(){return l(this.el,"ionPopoverWillDismiss")}render(){const t=y(this),{onLifecycle:o,parentPopover:e,dismissOnSelect:s,side:n,arrow:a,htmlAttributes:p,focusTrap:c}=this,d=P("desktop"),h=a&&!e;return r(i,Object.assign({key:"16866c02534968c982cf4730d2936d03a5107c8b","aria-modal":"true","no-router":!0,tabindex:"-1"},p,{style:{zIndex:`${2e4+this.overlayIndex}`},class:Object.assign(Object.assign({},D(this.cssClass)),{[t]:!0,"popover-translucent":this.translucent,"overlay-hidden":!0,"popover-desktop":d,[`popover-side-${n}`]:!0,[v]:!1===c,"popover-nested":!!e}),onIonPopoverDidPresent:o,onIonPopoverWillPresent:o,onIonPopoverWillDismiss:o,onIonPopoverDidDismiss:o,onIonBackdropTap:this.onBackdropTap}),!e&&r("ion-backdrop",{key:"0df258601a4d30df3c27aa8234a7d5e056c3ecbb",tappable:this.backdropDismiss,visible:this.showBackdrop,part:"backdrop"}),r("div",{key:"f94e80ed996b957b5cd09b826472b4f60e8fcc78",class:"popover-wrapper ion-overlay-wrapper",onClick:s?()=>this.dismiss():void 0},h&&r("div",{key:"185ce22f6386e8444a9cc7b8818dbfc16c463c99",class:"popover-arrow",part:"arrow"}),r("div",{key:"206202b299404e110de5397b229678cca18568d3",class:"popover-content",part:"content"},r("slot",{key:"ee543a0b92d6e35a837c0a0e4617c7b0fc4ad0b0"}))))}get el(){return s(this)}static get watchers(){return{trigger:["onTriggerChange"],triggerAction:["onTriggerChange"],isOpen:["onIsOpenChange"]}}},U={ionPopoverDidPresent:"ionViewDidEnter",ionPopoverWillPresent:"ionViewWillEnter",ionPopoverWillDismiss:"ionViewWillLeave",ionPopoverDidDismiss:"ionViewDidLeave"};S.style={ios:':host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host{--width:200px;--max-height:90%;--box-shadow:none;--backdrop-opacity:var(--ion-backdrop-opacity, 0.08)}:host(.popover-desktop){--box-shadow:0px 4px 16px 0px rgba(0, 0, 0, 0.12)}.popover-content{border-radius:10px}:host(.popover-desktop) .popover-content{border:0.5px solid var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.popover-arrow{display:block;position:absolute;width:20px;height:10px;overflow:hidden;z-index:11}.popover-arrow::after{top:3px;border-radius:3px;position:absolute;width:14px;height:14px;-webkit-transform:rotate(45deg);transform:rotate(45deg);background:var(--background);content:"";z-index:10}.popover-arrow::after{inset-inline-start:3px}:host(.popover-bottom) .popover-arrow{top:auto;bottom:-10px}:host(.popover-bottom) .popover-arrow::after{top:-6px}:host(.popover-side-left) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host(.popover-side-right) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host(.popover-side-top) .popover-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.popover-side-start) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host-context([dir=rtl]):host(.popover-side-start) .popover-arrow,:host-context([dir=rtl]).popover-side-start .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}@supports selector(:dir(rtl)){:host(.popover-side-start:dir(rtl)) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}}:host(.popover-side-end) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host-context([dir=rtl]):host(.popover-side-end) .popover-arrow,:host-context([dir=rtl]).popover-side-end .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}@supports selector(:dir(rtl)){:host(.popover-side-end:dir(rtl)) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}.popover-arrow,.popover-content{opacity:0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.popover-translucent) .popover-content,:host(.popover-translucent) .popover-arrow::after{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}',md:":host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host{--width:250px;--max-height:90%;--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}.popover-content{border-radius:4px;-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]) .popover-content{-webkit-transform-origin:right top;transform-origin:right top}[dir=rtl] .popover-content{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.popover-content:dir(rtl){-webkit-transform-origin:right top;transform-origin:right top}}.popover-viewport{-webkit-transition-delay:100ms;transition-delay:100ms}.popover-wrapper{opacity:0}"};export{S as ion_popover}
4
+ import{r as t,c as o,f as e,h as r,d as i,g as s}from"./p-C8IsBmNU.js";import{B as n,j as a,k as p,f as c,n as d,g as h,h as l,F as v}from"./p-D87hU-Ly.js";import{C as f,a as g,d as m}from"./p-D-eFFUkA.js";import{g as x,r as b,f as w,h as u}from"./p-CTfR9YZG.js";import{c as k}from"./p-B-hirT0v.js";import{b as y,a as D}from"./p-BFvmZNyx.js";import{g as P}from"./p-DiVJyqlX.js";import{e as T,w as I}from"./p-DUt5fQmA.js";import{c as N}from"./p-DDb5r57F.js";import"./p-ZjP4CjeZ.js";import"./p-B0q1YL7N.js";import"./p-BTEOs1at.js";const $=(t,o,e)=>{const r=o.getBoundingClientRect(),i=r.height;let s=r.width;return"cover"===t&&e&&(s=e.getBoundingClientRect().width),{contentWidth:s,contentHeight:i}},j=(t,o)=>o&&"ION-ITEM"===o.tagName?t.findIndex((t=>t===o)):-1,A=t=>{const o=x(t).querySelector("button");o&&b((()=>o.focus()))},L=(t,o,e,r,i,s,n,a,p,c,d)=>{var h;let l={top:0,left:0,width:0,height:0};if("event"===s){if(!d)return p;l={top:d.clientY,left:d.clientX,width:1,height:1}}else{const t=c||(null===(h=null==d?void 0:d.detail)||void 0===h?void 0:h.ionShadowTarget)||(null==d?void 0:d.target);if(!t)return p;const o=t.getBoundingClientRect();l={top:o.top,left:o.left,width:o.width,height:o.height}}const v=X(n,l,o,e,r,i,t),f=z(a,n,l,o,e),g=v.top+f.top,m=v.left+f.left,{arrowTop:x,arrowLeft:b}=Y(n,r,i,g,m,o,e,t),{originX:w,originY:u}=W(n,a,t);return{top:g,left:m,referenceCoordinates:l,arrowTop:x,arrowLeft:b,originX:w,originY:u}},W=(t,o,e)=>{switch(t){case"top":return{originX:C(o),originY:"bottom"};case"bottom":return{originX:C(o),originY:"top"};case"left":return{originX:"right",originY:O(o)};case"right":return{originX:"left",originY:O(o)};case"start":return{originX:e?"left":"right",originY:O(o)};case"end":return{originX:e?"right":"left",originY:O(o)}}},C=t=>{switch(t){case"start":return"left";case"center":return"center";case"end":return"right"}},O=t=>{switch(t){case"start":return"top";case"center":return"center";case"end":return"bottom"}},Y=(t,o,e,r,i,s,n,a)=>{const p={arrowTop:r+n/2-o/2,arrowLeft:i+s-o/2},c={arrowTop:r+n/2-o/2,arrowLeft:i-1.5*o};switch(t){case"top":return{arrowTop:r+n,arrowLeft:i+s/2-o/2};case"bottom":return{arrowTop:r-e,arrowLeft:i+s/2-o/2};case"left":return p;case"right":return c;case"start":return a?c:p;case"end":return a?p:c;default:return{arrowTop:0,arrowLeft:0}}},X=(t,o,e,r,i,s,n)=>{const a={top:o.top,left:o.left-e-i},p={top:o.top,left:o.left+o.width+i};switch(t){case"top":return{top:o.top-r-s,left:o.left};case"right":return p;case"bottom":return{top:o.top+o.height+s,left:o.left};case"left":return a;case"start":return n?p:a;case"end":return n?a:p}},z=(t,o,e,r,i)=>{switch(t){case"center":return B(o,e,r,i);case"end":return E(o,e,r,i);default:return{top:0,left:0}}},E=(t,o,e,r)=>{switch(t){case"start":case"end":case"left":case"right":return{top:-(r-o.height),left:0};default:return{top:0,left:-(e-o.width)}}},B=(t,o,e,r)=>{switch(t){case"start":case"end":case"left":case"right":return{top:-(r/2-o.height/2),left:0};default:return{top:0,left:-(e/2-o.width/2)}}},H=(t,o,e,r,i,s,n,a,p,c,d,h,l=0,v=0,f=0)=>{let g=l;const m=v;let x,b=e,w=o,u=c,k=d,y=!1,D=!1;const P=h?h.top+h.height:s/2-a/2,T=h?h.height:0;let I=!1;return b<r+p?(b=r,y=!0,u="left"):n+r+b+p>i&&(D=!0,b=i-n-r,u="right"),P+T+a>s&&("top"===t||"bottom"===t)&&(P-a>0?(w=Math.max(12,P-a-T-(f-1)),g=w+a,k="bottom",I=!0):x=r),{top:w,left:b,bottom:x,originX:u,originY:k,checkSafeAreaLeft:y,checkSafeAreaRight:D,arrowTop:g,arrowLeft:m,addPopoverBottomClass:I}},F=(t,o)=>{var e;const{event:r,size:i,trigger:s,reference:n,side:a,align:p}=o,c=t.ownerDocument,d="rtl"===c.dir,h=c.defaultView.innerWidth,l=c.defaultView.innerHeight,v=x(t),f=v.querySelector(".popover-content"),g=v.querySelector(".popover-arrow"),m=s||(null===(e=null==r?void 0:r.detail)||void 0===e?void 0:e.ionShadowTarget)||(null==r?void 0:r.target),{contentWidth:b,contentHeight:w}=$(i,f,m),{arrowWidth:u,arrowHeight:k}=(t=>{if(!t)return{arrowWidth:0,arrowHeight:0};const{width:o,height:e}=t.getBoundingClientRect();return{arrowWidth:o,arrowHeight:e}})(g),y=L(d,b,w,u,k,n,a,p,{top:l/2-w/2,left:h/2-b/2,originX:d?"right":"left",originY:"top"},s,r),D="cover"===i?0:5,P="cover"===i?0:25,{originX:T,originY:I,top:j,left:A,bottom:W,checkSafeAreaLeft:C,checkSafeAreaRight:O,arrowTop:Y,arrowLeft:X,addPopoverBottomClass:z}=H(a,y.top,y.left,D,h,l,b,w,P,y.originX,y.originY,y.referenceCoordinates,y.arrowTop,y.arrowLeft,k),E=N(),B=N(),F=N();return B.addElement(v.querySelector("ion-backdrop")).fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),F.addElement(v.querySelector(".popover-arrow")).addElement(v.querySelector(".popover-content")).fromTo("opacity",.01,1),E.easing("ease").duration(100).beforeAddWrite((()=>{"cover"===i&&t.style.setProperty("--width",`${b}px`),z&&t.classList.add("popover-bottom"),void 0!==W&&f.style.setProperty("bottom",`${W}px`);let o=`${A}px`;if(C&&(o=`${A}px + var(--ion-safe-area-left, 0)`),O&&(o=`${A}px - var(--ion-safe-area-right, 0)`),f.style.setProperty("top",`calc(${j}px + var(--offset-y, 0))`),f.style.setProperty("left",`calc(${o} + var(--offset-x, 0))`),f.style.setProperty("transform-origin",`${I} ${T}`),null!==g){const t=((t,o=!1,e,r)=>!(!e&&!r||"top"!==t&&"bottom"!==t&&o))(a,y.top!==j||y.left!==A,r,s);t?(g.style.setProperty("top",`calc(${Y}px + var(--offset-y, 0))`),g.style.setProperty("left",`calc(${X}px + var(--offset-x, 0))`)):g.style.setProperty("display","none")}})).addAnimation([B,F])},M=t=>{const o=x(t),e=o.querySelector(".popover-content"),r=o.querySelector(".popover-arrow"),i=N(),s=N(),n=N();return s.addElement(o.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)",0),n.addElement(o.querySelector(".popover-arrow")).addElement(o.querySelector(".popover-content")).fromTo("opacity",.99,0),i.easing("ease").afterAddWrite((()=>{t.style.removeProperty("--width"),t.classList.remove("popover-bottom"),e.style.removeProperty("top"),e.style.removeProperty("left"),e.style.removeProperty("bottom"),e.style.removeProperty("transform-origin"),r&&(r.style.removeProperty("top"),r.style.removeProperty("left"),r.style.removeProperty("display"))})).duration(300).addAnimation([s,n])},V=(t,o)=>{var e;const{event:r,size:i,trigger:s,reference:n,side:a,align:p}=o,c=t.ownerDocument,d="rtl"===c.dir,h=c.defaultView.innerWidth,l=c.defaultView.innerHeight,v=x(t),f=v.querySelector(".popover-content"),g=s||(null===(e=null==r?void 0:r.detail)||void 0===e?void 0:e.ionShadowTarget)||(null==r?void 0:r.target),{contentWidth:m,contentHeight:b}=$(i,f,g),w=L(d,m,b,0,0,n,a,p,{top:l/2-b/2,left:h/2-m/2,originX:d?"right":"left",originY:"top"},s,r),u="cover"===i?0:12,{originX:k,originY:y,top:D,left:P,bottom:T}=H(a,w.top,w.left,u,h,l,m,b,0,w.originX,w.originY,w.referenceCoordinates),I=N(),j=N(),A=N(),W=N(),C=N();return j.addElement(v.querySelector("ion-backdrop")).fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),A.addElement(v.querySelector(".popover-wrapper")).duration(150).fromTo("opacity",.01,1),W.addElement(f).beforeStyles({top:`calc(${D}px + var(--offset-y, 0px))`,left:`calc(${P}px + var(--offset-x, 0px))`,"transform-origin":`${y} ${k}`}).beforeAddWrite((()=>{void 0!==T&&f.style.setProperty("bottom",`${T}px`)})).fromTo("transform","scale(0.8)","scale(1)"),C.addElement(v.querySelector(".popover-viewport")).fromTo("opacity",.01,1),I.easing("cubic-bezier(0.36,0.66,0.04,1)").duration(300).beforeAddWrite((()=>{"cover"===i&&t.style.setProperty("--width",`${m}px`),"bottom"===y&&t.classList.add("popover-bottom")})).addAnimation([j,A,W,C])},R=t=>{const o=x(t),e=o.querySelector(".popover-content"),r=N(),i=N(),s=N();return i.addElement(o.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)",0),s.addElement(o.querySelector(".popover-wrapper")).fromTo("opacity",.99,0),r.easing("ease").afterAddWrite((()=>{t.style.removeProperty("--width"),t.classList.remove("popover-bottom"),e.style.removeProperty("top"),e.style.removeProperty("left"),e.style.removeProperty("bottom"),e.style.removeProperty("transform-origin")})).duration(150).addAnimation([i,s])},S=class{constructor(r){t(this,r),this.didPresent=o(this,"ionPopoverDidPresent",7),this.willPresent=o(this,"ionPopoverWillPresent",7),this.willDismiss=o(this,"ionPopoverWillDismiss",7),this.didDismiss=o(this,"ionPopoverDidDismiss",7),this.didPresentShorthand=o(this,"didPresent",7),this.willPresentShorthand=o(this,"willPresent",7),this.willDismissShorthand=o(this,"willDismiss",7),this.didDismissShorthand=o(this,"didDismiss",7),this.ionMount=o(this,"ionMount",7),this.parentPopover=null,this.coreDelegate=f(),this.lockController=k(),this.inline=!1,this.focusDescendantOnPresent=!1,this.presented=!1,this.hasController=!1,this.keyboardClose=!0,this.backdropDismiss=!0,this.showBackdrop=!0,this.translucent=!1,this.animated=!0,this.triggerAction="click",this.size="auto",this.dismissOnSelect=!1,this.reference="trigger",this.side="bottom",this.arrow=!0,this.isOpen=!1,this.keyboardEvents=!1,this.focusTrap=!0,this.keepContentsMounted=!1,this.onBackdropTap=()=>{this.dismiss(void 0,n)},this.onLifecycle=t=>{const o=this.usersElement,e=U[t.type];if(o&&e){const r=new CustomEvent(e,{bubbles:!1,cancelable:!1,detail:t.detail});o.dispatchEvent(r)}},this.configureTriggerInteraction=()=>{const{trigger:t,triggerAction:o,el:r,destroyTriggerInteraction:i}=this;if(i&&i(),void 0===t)return;const s=this.triggerEl=void 0!==t?document.getElementById(t):null;s?this.destroyTriggerInteraction=((t,o,e)=>{let r=[];switch(o){case"hover":let t;r=[{eventName:"mouseenter",callback:async o=>{o.stopPropagation(),t&&clearTimeout(t),t=setTimeout((()=>{b((()=>{e.presentFromTrigger(o),t=void 0}))}),100)}},{eventName:"mouseleave",callback:o=>{t&&clearTimeout(t);const r=o.relatedTarget;r&&r.closest("ion-popover")!==e&&e.dismiss(void 0,void 0,!1)}},{eventName:"click",callback:t=>t.stopPropagation()},{eventName:"ionPopoverActivateTrigger",callback:t=>e.presentFromTrigger(t,!0)}];break;case"context-menu":r=[{eventName:"contextmenu",callback:t=>{t.preventDefault(),e.presentFromTrigger(t)}},{eventName:"click",callback:t=>t.stopPropagation()},{eventName:"ionPopoverActivateTrigger",callback:t=>e.presentFromTrigger(t,!0)}];break;default:r=[{eventName:"click",callback:t=>e.presentFromTrigger(t)},{eventName:"ionPopoverActivateTrigger",callback:t=>e.presentFromTrigger(t,!0)}]}return r.forEach((({eventName:o,callback:e})=>t.addEventListener(o,e))),t.setAttribute("data-ion-popover-trigger","true"),()=>{r.forEach((({eventName:o,callback:e})=>t.removeEventListener(o,e))),t.removeAttribute("data-ion-popover-trigger")}})(s,o,r):e(`[ion-popover] - A trigger element with the ID "${t}" was not found in the DOM. The trigger element must be in the DOM when the "trigger" property is set on ion-popover.`,this.el)},this.configureKeyboardInteraction=()=>{const{destroyKeyboardInteraction:t,el:o}=this;t&&t(),this.destroyKeyboardInteraction=(t=>{const o=async o=>{var e;const r=document.activeElement;let i=[];const s=null===(e=o.target)||void 0===e?void 0:e.tagName;if("ION-POPOVER"===s||"ION-ITEM"===s){try{i=Array.from(t.querySelectorAll("ion-item:not(ion-popover ion-popover *):not([disabled])"))}catch(t){}switch(o.key){case"ArrowLeft":await t.getParentPopover()&&t.dismiss(void 0,void 0,!1);break;case"ArrowDown":o.preventDefault();const e=((t,o)=>t[j(t,o)+1])(i,r);void 0!==e&&A(e);break;case"ArrowUp":o.preventDefault();const s=((t,o)=>t[j(t,o)-1])(i,r);void 0!==s&&A(s);break;case"Home":o.preventDefault();const n=i[0];void 0!==n&&A(n);break;case"End":o.preventDefault();const a=i[i.length-1];void 0!==a&&A(a);break;case"ArrowRight":case" ":case"Enter":if(r&&r.hasAttribute("data-ion-popover-trigger")){const t=new CustomEvent("ionPopoverActivateTrigger");r.dispatchEvent(t)}}}};return t.addEventListener("keydown",o),()=>t.removeEventListener("keydown",o)})(o)},this.configureDismissInteraction=()=>{const{destroyDismissInteraction:t,parentPopover:o,triggerAction:e,triggerEl:r,el:i}=this;o&&r&&(t&&t(),this.destroyDismissInteraction=((t,o,e,r)=>{let i=[];const s=x(r).querySelector(".popover-content");return i="hover"===o?[{eventName:"mouseenter",callback:o=>{document.elementFromPoint(o.clientX,o.clientY)!==t&&e.dismiss(void 0,void 0,!1)}}]:[{eventName:"click",callback:o=>{o.target.closest("[data-ion-popover-trigger]")!==t?e.dismiss(void 0,void 0,!1):o.stopPropagation()}}],i.forEach((({eventName:t,callback:o})=>s.addEventListener(t,o))),()=>{i.forEach((({eventName:t,callback:o})=>s.removeEventListener(t,o)))}})(r,e,i,o))}}onTriggerChange(){this.configureTriggerInteraction()}onIsOpenChange(t,o){!0===t&&!1===o?this.present():!1===t&&!0===o&&this.dismiss()}connectedCallback(){const{configureTriggerInteraction:t,el:o}=this;a(o),t()}disconnectedCallback(){const{destroyTriggerInteraction:t}=this;t&&t()}componentWillLoad(){var t,o;const{el:e}=this,r=null!==(o=null===(t=this.htmlAttributes)||void 0===t?void 0:t.id)&&void 0!==o?o:p(e);this.parentPopover=e.closest(`ion-popover:not(#${r})`),void 0===this.alignment&&(this.alignment="ios"===y(this)?"center":"start")}componentDidLoad(){const{parentPopover:t,isOpen:o}=this;!0===o&&b((()=>this.present())),t&&w(t,"ionPopoverWillDismiss",(()=>{this.dismiss(void 0,void 0,!1)})),this.configureTriggerInteraction()}async presentFromTrigger(t,o=!1){this.focusDescendantOnPresent=o,await this.present(t),this.focusDescendantOnPresent=!1}getDelegate(t=!1){if(this.workingDelegate&&!t)return{delegate:this.workingDelegate,inline:this.inline};const o=this.inline=null!==this.el.parentNode&&!this.hasController;return{inline:o,delegate:this.workingDelegate=o?this.delegate||this.coreDelegate:this.delegate}}async present(t){const o=await this.lockController.lock();if(this.presented)return void o();const{el:e}=this,{inline:r,delegate:i}=this.getDelegate(!0);this.ionMount.emit(),this.usersElement=await g(i,e,this.component,["popover-viewport"],this.componentProps,r),this.keyboardEvents||this.configureKeyboardInteraction(),this.configureDismissInteraction(),u(e)?await T(this.usersElement):this.keepContentsMounted||await I(),await c(this,"popoverEnter",F,V,{event:t||this.event,size:this.size,trigger:this.triggerEl,reference:this.reference,side:this.side,align:this.alignment}),this.focusDescendantOnPresent&&d(e),o()}async dismiss(t,o,e=!0){const r=await this.lockController.lock(),{destroyKeyboardInteraction:i,destroyDismissInteraction:s}=this;e&&this.parentPopover&&this.parentPopover.dismiss(t,o,e);const n=await h(this,t,o,"popoverLeave",M,R,this.event);if(n){i&&(i(),this.destroyKeyboardInteraction=void 0),s&&(s(),this.destroyDismissInteraction=void 0);const{delegate:t}=this.getDelegate();await m(t,this.usersElement)}return r(),n}async getParentPopover(){return this.parentPopover}onDidDismiss(){return l(this.el,"ionPopoverDidDismiss")}onWillDismiss(){return l(this.el,"ionPopoverWillDismiss")}render(){const t=y(this),{onLifecycle:o,parentPopover:e,dismissOnSelect:s,side:n,arrow:a,htmlAttributes:p,focusTrap:c}=this,d=D("desktop"),h=a&&!e;return r(i,Object.assign({key:"16866c02534968c982cf4730d2936d03a5107c8b","aria-modal":"true","no-router":!0,tabindex:"-1"},p,{style:{zIndex:`${2e4+this.overlayIndex}`},class:Object.assign(Object.assign({},P(this.cssClass)),{[t]:!0,"popover-translucent":this.translucent,"overlay-hidden":!0,"popover-desktop":d,[`popover-side-${n}`]:!0,[v]:!1===c,"popover-nested":!!e}),onIonPopoverDidPresent:o,onIonPopoverWillPresent:o,onIonPopoverWillDismiss:o,onIonPopoverDidDismiss:o,onIonBackdropTap:this.onBackdropTap}),!e&&r("ion-backdrop",{key:"0df258601a4d30df3c27aa8234a7d5e056c3ecbb",tappable:this.backdropDismiss,visible:this.showBackdrop,part:"backdrop"}),r("div",{key:"f94e80ed996b957b5cd09b826472b4f60e8fcc78",class:"popover-wrapper ion-overlay-wrapper",onClick:s?()=>this.dismiss():void 0},h&&r("div",{key:"185ce22f6386e8444a9cc7b8818dbfc16c463c99",class:"popover-arrow",part:"arrow"}),r("div",{key:"206202b299404e110de5397b229678cca18568d3",class:"popover-content",part:"content"},r("slot",{key:"ee543a0b92d6e35a837c0a0e4617c7b0fc4ad0b0"}))))}get el(){return s(this)}static get watchers(){return{trigger:["onTriggerChange"],triggerAction:["onTriggerChange"],isOpen:["onIsOpenChange"]}}},U={ionPopoverDidPresent:"ionViewDidEnter",ionPopoverWillPresent:"ionViewWillEnter",ionPopoverWillDismiss:"ionViewWillLeave",ionPopoverDidDismiss:"ionViewDidLeave"};S.style={ios:':host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host{--width:200px;--max-height:90%;--box-shadow:none;--backdrop-opacity:var(--ion-backdrop-opacity, 0.08)}:host(.popover-desktop){--box-shadow:0px 4px 16px 0px rgba(0, 0, 0, 0.12)}.popover-content{border-radius:10px}:host(.popover-desktop) .popover-content{border:0.5px solid var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.popover-arrow{display:block;position:absolute;width:20px;height:10px;overflow:hidden;z-index:11}.popover-arrow::after{top:3px;border-radius:3px;position:absolute;width:14px;height:14px;-webkit-transform:rotate(45deg);transform:rotate(45deg);background:var(--background);content:"";z-index:10}.popover-arrow::after{inset-inline-start:3px}:host(.popover-bottom) .popover-arrow{top:auto;bottom:-10px}:host(.popover-bottom) .popover-arrow::after{top:-6px}:host(.popover-side-left) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host(.popover-side-right) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host(.popover-side-top) .popover-arrow{-webkit-transform:rotate(180deg);transform:rotate(180deg)}:host(.popover-side-start) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}:host-context([dir=rtl]):host(.popover-side-start) .popover-arrow,:host-context([dir=rtl]).popover-side-start .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}@supports selector(:dir(rtl)){:host(.popover-side-start:dir(rtl)) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}}:host(.popover-side-end) .popover-arrow{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}:host-context([dir=rtl]):host(.popover-side-end) .popover-arrow,:host-context([dir=rtl]).popover-side-end .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}@supports selector(:dir(rtl)){:host(.popover-side-end:dir(rtl)) .popover-arrow{-webkit-transform:rotate(90deg);transform:rotate(90deg)}}.popover-arrow,.popover-content{opacity:0}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){:host(.popover-translucent) .popover-content,:host(.popover-translucent) .popover-arrow::after{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.8);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}',md:":host{--background:var(--ion-background-color, #fff);--min-width:0;--min-height:0;--max-width:auto;--height:auto;--offset-x:0px;--offset-y:0px;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:fixed;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;color:var(--ion-text-color, #000);z-index:1001}:host(.popover-nested){pointer-events:none}:host(.popover-nested) .popover-wrapper{pointer-events:auto}:host(.overlay-hidden){display:none}.popover-wrapper{z-index:10}.popover-content{display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;width:var(--width);min-width:var(--min-width);max-width:var(--max-width);height:var(--height);min-height:var(--min-height);max-height:var(--max-height);background:var(--background);-webkit-box-shadow:var(--box-shadow);box-shadow:var(--box-shadow);overflow:auto;z-index:10}::slotted(.popover-viewport){--ion-safe-area-top:0px;--ion-safe-area-right:0px;--ion-safe-area-bottom:0px;--ion-safe-area-left:0px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}:host(.popover-nested.popover-side-left){--offset-x:5px}:host(.popover-nested.popover-side-right){--offset-x:-5px}:host(.popover-nested.popover-side-start){--offset-x:5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-start),:host-context([dir=rtl]).popover-nested.popover-side-start{--offset-x:-5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-start:dir(rtl)){--offset-x:-5px}}:host(.popover-nested.popover-side-end){--offset-x:-5px}:host-context([dir=rtl]):host(.popover-nested.popover-side-end),:host-context([dir=rtl]).popover-nested.popover-side-end{--offset-x:5px}@supports selector(:dir(rtl)){:host(.popover-nested.popover-side-end:dir(rtl)){--offset-x:5px}}:host{--width:250px;--max-height:90%;--box-shadow:0 5px 5px -3px rgba(0, 0, 0, 0.2), 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12);--backdrop-opacity:var(--ion-backdrop-opacity, 0.32)}.popover-content{border-radius:4px;-webkit-transform-origin:left top;transform-origin:left top}:host-context([dir=rtl]) .popover-content{-webkit-transform-origin:right top;transform-origin:right top}[dir=rtl] .popover-content{-webkit-transform-origin:right top;transform-origin:right top}@supports selector(:dir(rtl)){.popover-content:dir(rtl){-webkit-transform-origin:right top;transform-origin:right top}}.popover-viewport{-webkit-transition-delay:100ms;transition-delay:100ms}.popover-wrapper{opacity:0}"};export{S as ion_popover}
@@ -289,19 +289,6 @@ export declare class Modal implements ComponentInterface, OverlayInterface {
289
289
  present(): Promise<void>;
290
290
  private initSwipeToClose;
291
291
  private initSheetGesture;
292
- /**
293
- * For sheet modals that allow background interaction, sets up pointer-events
294
- * passthrough on child route page wrappers and nested router outlets.
295
- */
296
- private setupChildRoutePassthrough;
297
- /**
298
- * Finds the ion-page ancestor of the modal's original parent location.
299
- */
300
- private getOriginalPageParent;
301
- /**
302
- * Removes passthrough styles added by setupChildRoutePassthrough.
303
- */
304
- private cleanupChildRoutePassthrough;
305
292
  private sheetOnDismiss;
306
293
  /**
307
294
  * Dismiss the modal overlay after it has been presented.
package/hydrate/index.js CHANGED
@@ -6254,7 +6254,7 @@ const setRootAriaHidden = (hidden = false) => {
6254
6254
  }
6255
6255
  };
6256
6256
  const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
6257
- var _a, _b, _c;
6257
+ var _a, _b;
6258
6258
  if (overlay.presented) {
6259
6259
  return;
6260
6260
  }
@@ -6288,10 +6288,9 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6288
6288
  */
6289
6289
  const overlayEl = overlay.el;
6290
6290
  const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
6291
- // Only lock out root content when backdrop is always active. Developers relying on
6292
- // showBackdrop=false or backdropBreakpoint expect background interaction at some point.
6293
- const backdropAlwaysActive = overlayEl.showBackdrop !== false && !(((_a = overlayEl.backdropBreakpoint) !== null && _a !== void 0 ? _a : 0) > 0);
6294
- const shouldLockRoot = shouldTrapFocus && backdropAlwaysActive;
6291
+ // Only lock out root content when backdrop is active. Developers relying on showBackdrop=false
6292
+ // expect background interaction to remain enabled.
6293
+ const shouldLockRoot = shouldTrapFocus && overlayEl.showBackdrop !== false;
6295
6294
  overlay.presented = true;
6296
6295
  overlay.willPresent.emit();
6297
6296
  if (shouldLockRoot) {
@@ -6303,7 +6302,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6303
6302
  }
6304
6303
  document.body.classList.add(BACKDROP_NO_SCROLL);
6305
6304
  }
6306
- (_b = overlay.willPresentShorthand) === null || _b === void 0 ? void 0 : _b.emit();
6305
+ (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
6307
6306
  const mode = getIonMode$1(overlay);
6308
6307
  // get the user's animation fn if one was provided
6309
6308
  const animationBuilder = overlay.enterAnimation
@@ -6312,7 +6311,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6312
6311
  const completed = await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
6313
6312
  if (completed) {
6314
6313
  overlay.didPresent.emit();
6315
- (_c = overlay.didPresentShorthand) === null || _c === void 0 ? void 0 : _c.emit();
6314
+ (_b = overlay.didPresentShorthand) === null || _b === void 0 ? void 0 : _b.emit();
6316
6315
  }
6317
6316
  /**
6318
6317
  * If the focused element is already
@@ -6390,7 +6389,7 @@ const restoreElementFocus = async (overlayEl) => {
6390
6389
  }
6391
6390
  };
6392
6391
  const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
6393
- var _a, _b, _c;
6392
+ var _a, _b;
6394
6393
  if (!overlay.presented) {
6395
6394
  return false;
6396
6395
  }
@@ -6406,14 +6405,11 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6406
6405
  * is dismissed.
6407
6406
  */
6408
6407
  const overlaysLockingRoot = presentedOverlays.filter((o) => {
6409
- var _a;
6410
6408
  const el = o;
6411
- const backdropAlwaysActive = el.showBackdrop !== false && !(((_a = el.backdropBreakpoint) !== null && _a !== void 0 ? _a : 0) > 0);
6412
- return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && backdropAlwaysActive;
6409
+ return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && el.showBackdrop !== false;
6413
6410
  });
6414
6411
  const overlayEl = overlay.el;
6415
- const backdropAlwaysActive = overlayEl.showBackdrop !== false && !(((_a = overlayEl.backdropBreakpoint) !== null && _a !== void 0 ? _a : 0) > 0);
6416
- const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && backdropAlwaysActive;
6412
+ const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && overlayEl.showBackdrop !== false;
6417
6413
  /**
6418
6414
  * If this is the last visible overlay that is trapping focus
6419
6415
  * then we want to re-add the root to the accessibility tree.
@@ -6428,7 +6424,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6428
6424
  // Overlay contents should not be clickable during dismiss
6429
6425
  overlay.el.style.setProperty('pointer-events', 'none');
6430
6426
  overlay.willDismiss.emit({ data, role });
6431
- (_b = overlay.willDismissShorthand) === null || _b === void 0 ? void 0 : _b.emit({ data, role });
6427
+ (_a = overlay.willDismissShorthand) === null || _a === void 0 ? void 0 : _a.emit({ data, role });
6432
6428
  const mode = getIonMode$1(overlay);
6433
6429
  const animationBuilder = overlay.leaveAnimation
6434
6430
  ? overlay.leaveAnimation
@@ -6438,7 +6434,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6438
6434
  await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
6439
6435
  }
6440
6436
  overlay.didDismiss.emit({ data, role });
6441
- (_c = overlay.didDismissShorthand) === null || _c === void 0 ? void 0 : _c.emit({ data, role });
6437
+ (_b = overlay.didDismissShorthand) === null || _b === void 0 ? void 0 : _b.emit({ data, role });
6442
6438
  // Get a reference to all animations currently assigned to this overlay
6443
6439
  // Then tear them down to return the overlay to its initial visual state
6444
6440
  const animations = activeAnimations.get(overlay) || [];
@@ -23019,13 +23015,7 @@ class Modal {
23019
23015
  };
23020
23016
  window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
23021
23017
  }
23022
- /**
23023
- * Recalculate isSheetModal because framework bindings (e.g., Angular)
23024
- * may not have been applied when componentWillLoad ran.
23025
- */
23026
- const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
23027
- this.isSheetModal = isSheetModal;
23028
- if (isSheetModal) {
23018
+ if (this.isSheetModal) {
23029
23019
  this.initSheetGesture();
23030
23020
  }
23031
23021
  else if (hasCardModal) {
@@ -23107,79 +23097,6 @@ class Modal {
23107
23097
  this.gesture = gesture;
23108
23098
  this.moveSheetToBreakpoint = moveSheetToBreakpoint;
23109
23099
  this.gesture.enable(true);
23110
- /**
23111
- * When backdrop interaction is allowed, nested router outlets from child routes
23112
- * may block pointer events to parent content. Apply passthrough styles only when
23113
- * the modal was the sole content of a child route page.
23114
- * See https://github.com/ionic-team/ionic-framework/issues/30700
23115
- */
23116
- const backdropNotBlocking = this.showBackdrop === false || this.focusTrap === false || backdropBreakpoint > 0;
23117
- if (backdropNotBlocking) {
23118
- this.setupChildRoutePassthrough();
23119
- }
23120
- }
23121
- /**
23122
- * For sheet modals that allow background interaction, sets up pointer-events
23123
- * passthrough on child route page wrappers and nested router outlets.
23124
- */
23125
- setupChildRoutePassthrough() {
23126
- var _a;
23127
- const pageParent = this.getOriginalPageParent();
23128
- // Skip ion-app (controller modals) and pages with other content (inline modals)
23129
- if (!pageParent || pageParent.tagName === 'ION-APP') {
23130
- return;
23131
- }
23132
- const hasVisibleContent = Array.from(pageParent.children).some((child) => {
23133
- var _a;
23134
- if (child === this.el)
23135
- return false;
23136
- if (child instanceof HTMLElement && window.getComputedStyle(child).display === 'none')
23137
- return false;
23138
- if (child.tagName === 'TEMPLATE' || child.tagName === 'SLOT')
23139
- return false;
23140
- if (child.nodeType === Node.TEXT_NODE && !((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()))
23141
- return false;
23142
- return true;
23143
- });
23144
- if (hasVisibleContent) {
23145
- return;
23146
- }
23147
- // Child route case: page only contained the modal
23148
- pageParent.classList.add('ion-page-overlay-passthrough');
23149
- // Also make nested router outlets passthrough
23150
- const routerOutlet = pageParent.parentElement;
23151
- 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') {
23152
- routerOutlet.style.setProperty('pointer-events', 'none');
23153
- routerOutlet.setAttribute('data-overlay-passthrough', 'true');
23154
- }
23155
- }
23156
- /**
23157
- * Finds the ion-page ancestor of the modal's original parent location.
23158
- */
23159
- getOriginalPageParent() {
23160
- if (!this.cachedOriginalParent) {
23161
- return null;
23162
- }
23163
- let pageParent = this.cachedOriginalParent;
23164
- while (pageParent && !pageParent.classList.contains('ion-page')) {
23165
- pageParent = pageParent.parentElement;
23166
- }
23167
- return pageParent;
23168
- }
23169
- /**
23170
- * Removes passthrough styles added by setupChildRoutePassthrough.
23171
- */
23172
- cleanupChildRoutePassthrough() {
23173
- const pageParent = this.getOriginalPageParent();
23174
- if (!pageParent) {
23175
- return;
23176
- }
23177
- pageParent.classList.remove('ion-page-overlay-passthrough');
23178
- const routerOutlet = pageParent.parentElement;
23179
- if (routerOutlet === null || routerOutlet === void 0 ? void 0 : routerOutlet.hasAttribute('data-overlay-passthrough')) {
23180
- routerOutlet.style.removeProperty('pointer-events');
23181
- routerOutlet.removeAttribute('data-overlay-passthrough');
23182
- }
23183
23100
  }
23184
23101
  sheetOnDismiss() {
23185
23102
  /**
@@ -23269,7 +23186,6 @@ class Modal {
23269
23186
  }
23270
23187
  this.cleanupViewTransitionListener();
23271
23188
  this.cleanupParentRemovalObserver();
23272
- this.cleanupChildRoutePassthrough();
23273
23189
  }
23274
23190
  this.currentBreakpoint = undefined;
23275
23191
  this.animation = undefined;
@@ -23507,20 +23423,20 @@ class Modal {
23507
23423
  const isCardModal = presentingElement !== undefined && mode === 'ios';
23508
23424
  const isHandleCycle = handleBehavior === 'cycle';
23509
23425
  const isSheetModalWithHandle = isSheetModal && showHandle;
23510
- return (hAsync(Host, Object.assign({ key: '880d34a27983dde27c81a06bfed390bf38e43244', "no-router": true,
23426
+ return (hAsync(Host, Object.assign({ key: '9e9a7bd591eb17a225a00b4fa2e379e94601d17f', "no-router": true,
23511
23427
  // Allow the modal to be navigable when the handle is focusable
23512
23428
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
23513
23429
  zIndex: `${20000 + this.overlayIndex}`,
23514
- }, 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 }), hAsync("ion-backdrop", { key: 'c674d142ace2b3e5bd38b302cf2984fc3fac11c8', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'ce83713b57960d354935ef8e65251892ed9d4e3b', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '67c001e824f5c31eb58053eea71c884817479896',
23430
+ }, 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 }), hAsync("ion-backdrop", { key: 'e5eae2c14f830f75e308fcd7f4c10c86fac5b962', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'e268f9cd310c3cf4e051b5b92524ce4fb70d005e', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '9c380f36c18144c153077b15744d1c3346bce63e',
23515
23431
  /*
23516
23432
  role and aria-modal must be used on the
23517
23433
  same element. They must also be set inside the
23518
23434
  shadow DOM otherwise ion-button will not be highlighted
23519
23435
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
23520
23436
  */
23521
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '9263cbb0c5f550ef463b72446c21379ccaf0ccdd', class: "modal-handle",
23437
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '2d5ee6d5959d97309c306e8ce72eb0f2c19be144', class: "modal-handle",
23522
23438
  // Prevents the handle from receiving keyboard focus when it does not cycle
23523
- 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) })), hAsync("slot", { key: '3ef07e617f2b1d46fca6a00b40119c35bff4215a', onSlotchange: this.onSlotChange }))));
23439
+ 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) })), hAsync("slot", { key: '5590434c35ea04c42fc006498bc189038e15a298', onSlotchange: this.onSlotChange }))));
23524
23440
  }
23525
23441
  get el() { return getElement(this); }
23526
23442
  static get watchers() { return {
@@ -23560,7 +23476,6 @@ class Modal {
23560
23476
  "keepContentsMounted": [4, "keep-contents-mounted"],
23561
23477
  "focusTrap": [4, "focus-trap"],
23562
23478
  "canDismiss": [4, "can-dismiss"],
23563
- "isSheetModal": [32],
23564
23479
  "presented": [32],
23565
23480
  "present": [64],
23566
23481
  "dismiss": [64],
package/hydrate/index.mjs CHANGED
@@ -6252,7 +6252,7 @@ const setRootAriaHidden = (hidden = false) => {
6252
6252
  }
6253
6253
  };
6254
6254
  const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts) => {
6255
- var _a, _b, _c;
6255
+ var _a, _b;
6256
6256
  if (overlay.presented) {
6257
6257
  return;
6258
6258
  }
@@ -6286,10 +6286,9 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6286
6286
  */
6287
6287
  const overlayEl = overlay.el;
6288
6288
  const shouldTrapFocus = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false;
6289
- // Only lock out root content when backdrop is always active. Developers relying on
6290
- // showBackdrop=false or backdropBreakpoint expect background interaction at some point.
6291
- const backdropAlwaysActive = overlayEl.showBackdrop !== false && !(((_a = overlayEl.backdropBreakpoint) !== null && _a !== void 0 ? _a : 0) > 0);
6292
- const shouldLockRoot = shouldTrapFocus && backdropAlwaysActive;
6289
+ // Only lock out root content when backdrop is active. Developers relying on showBackdrop=false
6290
+ // expect background interaction to remain enabled.
6291
+ const shouldLockRoot = shouldTrapFocus && overlayEl.showBackdrop !== false;
6293
6292
  overlay.presented = true;
6294
6293
  overlay.willPresent.emit();
6295
6294
  if (shouldLockRoot) {
@@ -6301,7 +6300,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6301
6300
  }
6302
6301
  document.body.classList.add(BACKDROP_NO_SCROLL);
6303
6302
  }
6304
- (_b = overlay.willPresentShorthand) === null || _b === void 0 ? void 0 : _b.emit();
6303
+ (_a = overlay.willPresentShorthand) === null || _a === void 0 ? void 0 : _a.emit();
6305
6304
  const mode = getIonMode$1(overlay);
6306
6305
  // get the user's animation fn if one was provided
6307
6306
  const animationBuilder = overlay.enterAnimation
@@ -6310,7 +6309,7 @@ const present = async (overlay, name, iosEnterAnimation, mdEnterAnimation, opts)
6310
6309
  const completed = await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
6311
6310
  if (completed) {
6312
6311
  overlay.didPresent.emit();
6313
- (_c = overlay.didPresentShorthand) === null || _c === void 0 ? void 0 : _c.emit();
6312
+ (_b = overlay.didPresentShorthand) === null || _b === void 0 ? void 0 : _b.emit();
6314
6313
  }
6315
6314
  /**
6316
6315
  * If the focused element is already
@@ -6388,7 +6387,7 @@ const restoreElementFocus = async (overlayEl) => {
6388
6387
  }
6389
6388
  };
6390
6389
  const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnimation, opts) => {
6391
- var _a, _b, _c;
6390
+ var _a, _b;
6392
6391
  if (!overlay.presented) {
6393
6392
  return false;
6394
6393
  }
@@ -6404,14 +6403,11 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6404
6403
  * is dismissed.
6405
6404
  */
6406
6405
  const overlaysLockingRoot = presentedOverlays.filter((o) => {
6407
- var _a;
6408
6406
  const el = o;
6409
- const backdropAlwaysActive = el.showBackdrop !== false && !(((_a = el.backdropBreakpoint) !== null && _a !== void 0 ? _a : 0) > 0);
6410
- return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && backdropAlwaysActive;
6407
+ return el.tagName !== 'ION-TOAST' && el.focusTrap !== false && el.showBackdrop !== false;
6411
6408
  });
6412
6409
  const overlayEl = overlay.el;
6413
- const backdropAlwaysActive = overlayEl.showBackdrop !== false && !(((_a = overlayEl.backdropBreakpoint) !== null && _a !== void 0 ? _a : 0) > 0);
6414
- const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && backdropAlwaysActive;
6410
+ const locksRoot = overlayEl.tagName !== 'ION-TOAST' && overlayEl.focusTrap !== false && overlayEl.showBackdrop !== false;
6415
6411
  /**
6416
6412
  * If this is the last visible overlay that is trapping focus
6417
6413
  * then we want to re-add the root to the accessibility tree.
@@ -6426,7 +6422,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6426
6422
  // Overlay contents should not be clickable during dismiss
6427
6423
  overlay.el.style.setProperty('pointer-events', 'none');
6428
6424
  overlay.willDismiss.emit({ data, role });
6429
- (_b = overlay.willDismissShorthand) === null || _b === void 0 ? void 0 : _b.emit({ data, role });
6425
+ (_a = overlay.willDismissShorthand) === null || _a === void 0 ? void 0 : _a.emit({ data, role });
6430
6426
  const mode = getIonMode$1(overlay);
6431
6427
  const animationBuilder = overlay.leaveAnimation
6432
6428
  ? overlay.leaveAnimation
@@ -6436,7 +6432,7 @@ const dismiss = async (overlay, data, role, name, iosLeaveAnimation, mdLeaveAnim
6436
6432
  await overlayAnimation(overlay, animationBuilder, overlay.el, opts);
6437
6433
  }
6438
6434
  overlay.didDismiss.emit({ data, role });
6439
- (_c = overlay.didDismissShorthand) === null || _c === void 0 ? void 0 : _c.emit({ data, role });
6435
+ (_b = overlay.didDismissShorthand) === null || _b === void 0 ? void 0 : _b.emit({ data, role });
6440
6436
  // Get a reference to all animations currently assigned to this overlay
6441
6437
  // Then tear them down to return the overlay to its initial visual state
6442
6438
  const animations = activeAnimations.get(overlay) || [];
@@ -23017,13 +23013,7 @@ class Modal {
23017
23013
  };
23018
23014
  window.addEventListener(KEYBOARD_DID_OPEN, this.keyboardOpenCallback);
23019
23015
  }
23020
- /**
23021
- * Recalculate isSheetModal because framework bindings (e.g., Angular)
23022
- * may not have been applied when componentWillLoad ran.
23023
- */
23024
- const isSheetModal = this.breakpoints !== undefined && this.initialBreakpoint !== undefined;
23025
- this.isSheetModal = isSheetModal;
23026
- if (isSheetModal) {
23016
+ if (this.isSheetModal) {
23027
23017
  this.initSheetGesture();
23028
23018
  }
23029
23019
  else if (hasCardModal) {
@@ -23105,79 +23095,6 @@ class Modal {
23105
23095
  this.gesture = gesture;
23106
23096
  this.moveSheetToBreakpoint = moveSheetToBreakpoint;
23107
23097
  this.gesture.enable(true);
23108
- /**
23109
- * When backdrop interaction is allowed, nested router outlets from child routes
23110
- * may block pointer events to parent content. Apply passthrough styles only when
23111
- * the modal was the sole content of a child route page.
23112
- * See https://github.com/ionic-team/ionic-framework/issues/30700
23113
- */
23114
- const backdropNotBlocking = this.showBackdrop === false || this.focusTrap === false || backdropBreakpoint > 0;
23115
- if (backdropNotBlocking) {
23116
- this.setupChildRoutePassthrough();
23117
- }
23118
- }
23119
- /**
23120
- * For sheet modals that allow background interaction, sets up pointer-events
23121
- * passthrough on child route page wrappers and nested router outlets.
23122
- */
23123
- setupChildRoutePassthrough() {
23124
- var _a;
23125
- const pageParent = this.getOriginalPageParent();
23126
- // Skip ion-app (controller modals) and pages with other content (inline modals)
23127
- if (!pageParent || pageParent.tagName === 'ION-APP') {
23128
- return;
23129
- }
23130
- const hasVisibleContent = Array.from(pageParent.children).some((child) => {
23131
- var _a;
23132
- if (child === this.el)
23133
- return false;
23134
- if (child instanceof HTMLElement && window.getComputedStyle(child).display === 'none')
23135
- return false;
23136
- if (child.tagName === 'TEMPLATE' || child.tagName === 'SLOT')
23137
- return false;
23138
- if (child.nodeType === Node.TEXT_NODE && !((_a = child.textContent) === null || _a === void 0 ? void 0 : _a.trim()))
23139
- return false;
23140
- return true;
23141
- });
23142
- if (hasVisibleContent) {
23143
- return;
23144
- }
23145
- // Child route case: page only contained the modal
23146
- pageParent.classList.add('ion-page-overlay-passthrough');
23147
- // Also make nested router outlets passthrough
23148
- const routerOutlet = pageParent.parentElement;
23149
- 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') {
23150
- routerOutlet.style.setProperty('pointer-events', 'none');
23151
- routerOutlet.setAttribute('data-overlay-passthrough', 'true');
23152
- }
23153
- }
23154
- /**
23155
- * Finds the ion-page ancestor of the modal's original parent location.
23156
- */
23157
- getOriginalPageParent() {
23158
- if (!this.cachedOriginalParent) {
23159
- return null;
23160
- }
23161
- let pageParent = this.cachedOriginalParent;
23162
- while (pageParent && !pageParent.classList.contains('ion-page')) {
23163
- pageParent = pageParent.parentElement;
23164
- }
23165
- return pageParent;
23166
- }
23167
- /**
23168
- * Removes passthrough styles added by setupChildRoutePassthrough.
23169
- */
23170
- cleanupChildRoutePassthrough() {
23171
- const pageParent = this.getOriginalPageParent();
23172
- if (!pageParent) {
23173
- return;
23174
- }
23175
- pageParent.classList.remove('ion-page-overlay-passthrough');
23176
- const routerOutlet = pageParent.parentElement;
23177
- if (routerOutlet === null || routerOutlet === void 0 ? void 0 : routerOutlet.hasAttribute('data-overlay-passthrough')) {
23178
- routerOutlet.style.removeProperty('pointer-events');
23179
- routerOutlet.removeAttribute('data-overlay-passthrough');
23180
- }
23181
23098
  }
23182
23099
  sheetOnDismiss() {
23183
23100
  /**
@@ -23267,7 +23184,6 @@ class Modal {
23267
23184
  }
23268
23185
  this.cleanupViewTransitionListener();
23269
23186
  this.cleanupParentRemovalObserver();
23270
- this.cleanupChildRoutePassthrough();
23271
23187
  }
23272
23188
  this.currentBreakpoint = undefined;
23273
23189
  this.animation = undefined;
@@ -23505,20 +23421,20 @@ class Modal {
23505
23421
  const isCardModal = presentingElement !== undefined && mode === 'ios';
23506
23422
  const isHandleCycle = handleBehavior === 'cycle';
23507
23423
  const isSheetModalWithHandle = isSheetModal && showHandle;
23508
- return (hAsync(Host, Object.assign({ key: '880d34a27983dde27c81a06bfed390bf38e43244', "no-router": true,
23424
+ return (hAsync(Host, Object.assign({ key: '9e9a7bd591eb17a225a00b4fa2e379e94601d17f', "no-router": true,
23509
23425
  // Allow the modal to be navigable when the handle is focusable
23510
23426
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
23511
23427
  zIndex: `${20000 + this.overlayIndex}`,
23512
- }, 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 }), hAsync("ion-backdrop", { key: 'c674d142ace2b3e5bd38b302cf2984fc3fac11c8', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'ce83713b57960d354935ef8e65251892ed9d4e3b', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '67c001e824f5c31eb58053eea71c884817479896',
23428
+ }, 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 }), hAsync("ion-backdrop", { key: 'e5eae2c14f830f75e308fcd7f4c10c86fac5b962', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: 'e268f9cd310c3cf4e051b5b92524ce4fb70d005e', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '9c380f36c18144c153077b15744d1c3346bce63e',
23513
23429
  /*
23514
23430
  role and aria-modal must be used on the
23515
23431
  same element. They must also be set inside the
23516
23432
  shadow DOM otherwise ion-button will not be highlighted
23517
23433
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
23518
23434
  */
23519
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '9263cbb0c5f550ef463b72446c21379ccaf0ccdd', class: "modal-handle",
23435
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '2d5ee6d5959d97309c306e8ce72eb0f2c19be144', class: "modal-handle",
23520
23436
  // Prevents the handle from receiving keyboard focus when it does not cycle
23521
- 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) })), hAsync("slot", { key: '3ef07e617f2b1d46fca6a00b40119c35bff4215a', onSlotchange: this.onSlotChange }))));
23437
+ 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) })), hAsync("slot", { key: '5590434c35ea04c42fc006498bc189038e15a298', onSlotchange: this.onSlotChange }))));
23522
23438
  }
23523
23439
  get el() { return getElement(this); }
23524
23440
  static get watchers() { return {
@@ -23558,7 +23474,6 @@ class Modal {
23558
23474
  "keepContentsMounted": [4, "keep-contents-mounted"],
23559
23475
  "focusTrap": [4, "focus-trap"],
23560
23476
  "canDismiss": [4, "can-dismiss"],
23561
- "isSheetModal": [32],
23562
23477
  "presented": [32],
23563
23478
  "present": [64],
23564
23479
  "dismiss": [64],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ionic/core",
3
- "version": "8.7.12-dev.11765060985.14ad27fb",
3
+ "version": "8.7.12-dev.11765219790.17cbe2e9",
4
4
  "description": "Base components for Ionic",
5
5
  "keywords": [
6
6
  "ionic",
@@ -65,7 +65,6 @@
65
65
  "fs-extra": "^9.0.1",
66
66
  "jest": "^29.7.0",
67
67
  "jest-cli": "^29.7.0",
68
- "playwright-core": "^1.56.1",
69
68
  "prettier": "^2.6.1",
70
69
  "rollup": "^2.26.4",
71
70
  "sass": "^1.33.0",