voyager-ionic-core 8.8.6 → 8.8.8

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 (43) hide show
  1. package/components/ion-alert.js +1 -1
  2. package/components/ion-app.js +1 -1
  3. package/components/ion-content.js +1 -1
  4. package/components/ion-modal.js +1 -1
  5. package/components/ion-select-modal.js +1 -1
  6. package/components/ion-select.js +1 -1
  7. package/components/{p-0z8QSI5b.js → p-BeXMwcl5.js} +1 -1
  8. package/components/p-CEmXdzGo.js +4 -0
  9. package/components/{p-BlNv564p.js → p-Cf6Z1pmL.js} +1 -1
  10. package/components/{p-BGHGpkPX.js → p-Q1-Xy3As.js} +1 -1
  11. package/components/p-ZuZOauwD.js +4 -0
  12. package/dist/cjs/{input-shims-Dl5cnc_e.js → input-shims-CPL2J8F-.js} +0 -6
  13. package/dist/cjs/ion-alert.cjs.entry.js +66 -4
  14. package/dist/cjs/ion-app_8.cjs.entry.js +2 -2
  15. package/dist/cjs/ion-modal.cjs.entry.js +9 -9
  16. package/dist/cjs/ionic.cjs.js +1 -1
  17. package/dist/cjs/loader.cjs.js +1 -1
  18. package/dist/collection/components/alert/alert.js +71 -4
  19. package/dist/collection/components/content/content.css +1 -1
  20. package/dist/collection/components/modal/modal.js +9 -9
  21. package/dist/collection/utils/input-shims/hacks/scroll-assist.js +0 -7
  22. package/dist/docs.json +1 -1
  23. package/dist/esm/{input-shims-AaDhOpKN.js → input-shims-DbrgeeNb.js} +1 -7
  24. package/dist/esm/ion-alert.entry.js +66 -4
  25. package/dist/esm/ion-app_8.entry.js +2 -2
  26. package/dist/esm/ion-modal.entry.js +9 -9
  27. package/dist/esm/ionic.js +1 -1
  28. package/dist/esm/loader.js +1 -1
  29. package/dist/ionic/ionic.esm.js +1 -1
  30. package/dist/ionic/{p-cb27fe68.entry.js → p-050873ec.entry.js} +1 -1
  31. package/dist/ionic/p-164f79c4.entry.js +4 -0
  32. package/dist/ionic/p-DcSNwXfb.js +4 -0
  33. package/dist/ionic/p-f3e7b155.entry.js +4 -0
  34. package/dist/types/components/alert/alert.d.ts +5 -0
  35. package/dist/types/components/modal/modal.d.ts +3 -3
  36. package/hydrate/index.js +77 -14
  37. package/hydrate/index.mjs +77 -14
  38. package/package.json +4 -4
  39. package/components/p-CH0NYjKq.js +0 -4
  40. package/components/p-Cwv-vmkN.js +0 -4
  41. package/dist/ionic/p-1b02923f.entry.js +0 -4
  42. package/dist/ionic/p-CYvM5g3q.js +0 -4
  43. package/dist/ionic/p-ce2edb36.entry.js +0 -4
@@ -0,0 +1,4 @@
1
+ /*!
2
+ * (C) Ionic http://ionicframework.com - MIT License
3
+ */
4
+ import{r as t,c as e,e as i,f as r,i as o,h as a,d as n,g as l}from"./p-IGIE5vDm.js";import{E as s,a as d}from"./p-gbVXD275.js";import{c}from"./p-BxIcPWoV.js";import{r as p}from"./p-CGmVTdWh.js";import{c as b}from"./p-B-hirT0v.js";import{d as h,e as m,B as g,i as x,j as u,k as f,f as v,g as w,h as k,s as y}from"./p-DTPR1Wpn.js";import{g as z}from"./p-DiVJyqlX.js";import{b as j}from"./p-NFFyoJ4Q.js";import{c as C}from"./p-Bum7H1fw.js";import"./p-CKvCXMs9.js";import"./p-CIGNaXM1.js";import"./p-ZjP4CjeZ.js";import"./p-Cl0B-RWe.js";import"./p-BTEOs1at.js";import"./p-DB_iPQC-.js";import"./p-CmFz1Mjc.js";const O=t=>{const e=C(),i=C(),r=C();return i.addElement(t.querySelector("ion-backdrop")).fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),r.addElement(t.querySelector(".alert-wrapper")).keyframes([{offset:0,opacity:"0.01",transform:"scale(1.1)"},{offset:1,opacity:"1",transform:"scale(1)"}]),e.addElement(t).easing("ease-in-out").duration(200).addAnimation([i,r])},D=t=>{const e=C(),i=C(),r=C();return i.addElement(t.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)",0),r.addElement(t.querySelector(".alert-wrapper")).keyframes([{offset:0,opacity:.99,transform:"scale(1)"},{offset:1,opacity:0,transform:"scale(0.9)"}]),e.addElement(t).easing("ease-in-out").duration(200).addAnimation([i,r])},A=t=>{const e=C(),i=C(),r=C();return i.addElement(t.querySelector("ion-backdrop")).fromTo("opacity",.01,"var(--backdrop-opacity)").beforeStyles({"pointer-events":"none"}).afterClearStyles(["pointer-events"]),r.addElement(t.querySelector(".alert-wrapper")).keyframes([{offset:0,opacity:"0.01",transform:"scale(0.9)"},{offset:1,opacity:"1",transform:"scale(1)"}]),e.addElement(t).easing("ease-in-out").duration(150).addAnimation([i,r])},I=t=>{const e=C(),i=C(),r=C();return i.addElement(t.querySelector("ion-backdrop")).fromTo("opacity","var(--backdrop-opacity)",0),r.addElement(t.querySelector(".alert-wrapper")).fromTo("opacity",.99,0),e.addElement(t).easing("ease-in-out").duration(150).addAnimation([i,r])},$=class{constructor(r){t(this,r),this.didPresent=e(this,"ionAlertDidPresent",7),this.willPresent=e(this,"ionAlertWillPresent",7),this.willDismiss=e(this,"ionAlertWillDismiss",7),this.didDismiss=e(this,"ionAlertDidDismiss",7),this.didPresentShorthand=e(this,"didPresent",7),this.willPresentShorthand=e(this,"willPresent",7),this.willDismissShorthand=e(this,"willDismiss",7),this.didDismissShorthand=e(this,"didDismiss",7),this.delegateController=h(this),this.lockController=b(),this.triggerController=m(),this.customHTMLEnabled=i.get("innerHTMLTemplatesEnabled",s),this.processedInputs=[],this.processedButtons=[],this.isButtonGroupWrapped=!1,this.presented=!1,this.hasController=!1,this.keyboardClose=!0,this.buttons=[],this.inputs=[],this.backdropDismiss=!0,this.translucent=!1,this.animated=!0,this.isOpen=!1,this.onBackdropTap=()=>{this.dismiss(void 0,g)},this.dispatchCancelHandler=t=>{if(x(t.detail.role)){const t=this.processedButtons.find((t=>"cancel"===t.role));this.callButtonHandler(t)}}}onIsOpenChange(t,e){!0===t&&!1===e?this.present():!1===t&&!0===e&&this.dismiss()}triggerChanged(){const{trigger:t,el:e,triggerController:i}=this;t&&i.addClickListener(e,t)}onKeydown(t){var e;const i=new Set(this.processedInputs.map((t=>t.type)));if(i.has("checkbox")&&"Enter"===t.key)return void t.preventDefault();if(t.target.classList.contains("alert-wrapper")&&"Tab"===t.key&&t.shiftKey)return t.preventDefault(),void(null===(e=this.wrapperEl)||void 0===e?void 0:e.querySelector(".alert-button:last-child")).focus();if(!i.has("radio")||t.target&&!this.el.contains(t.target)||t.target.classList.contains("alert-button"))return;const r=this.el.querySelectorAll(".alert-radio"),o=Array.from(r).filter((t=>!t.disabled)),a=o.findIndex((e=>e.id===t.target.id));let n;if(["ArrowDown","ArrowRight"].includes(t.key)&&(n=a===o.length-1?o[0]:o[a+1]),["ArrowUp","ArrowLeft"].includes(t.key)&&(n=0===a?o[o.length-1]:o[a-1]),n&&o.includes(n)){const t=this.processedInputs.find((t=>t.id===(null==n?void 0:n.id)));t&&(this.rbClick(t),n.focus())}}buttonsChanged(){this.processedButtons=this.buttons.map((t=>"string"==typeof t?{text:t,role:"cancel"===t.toLowerCase()?"cancel":void 0}:t)),this.isButtonGroupWrapped=!1,this.checkButtonGroupWrap()}inputsChanged(){const t=this.inputs,e=t.find((t=>!t.disabled)),i=t.find((t=>t.checked&&!t.disabled))||e,o=new Set(t.map((t=>t.type)));o.has("checkbox")&&o.has("radio")&&r(`[ion-alert] - Alert cannot mix input types: ${Array.from(o.values()).join("/")}. Please see alert docs for more info.`),this.inputType=o.values().next().value,this.processedInputs=t.map(((t,e)=>{var r;return{type:t.type||"text",name:t.name||`${e}`,placeholder:t.placeholder||"",value:t.value,label:t.label,checked:!!t.checked,disabled:!!t.disabled,id:t.id||`alert-input-${this.overlayIndex}-${e}`,handler:t.handler,min:t.min,max:t.max,cssClass:null!==(r=t.cssClass)&&void 0!==r?r:"",attributes:t.attributes||{},tabindex:"radio"===t.type&&t!==i?-1:0}}))}connectedCallback(){u(this.el),this.triggerChanged(),this.setupButtonGroupResizeObserver()}componentWillLoad(){var t;(null===(t=this.htmlAttributes)||void 0===t?void 0:t.id)||f(this.el),this.inputsChanged(),this.buttonsChanged()}disconnectedCallback(){var t;this.triggerController.removeClickListener(),this.gesture&&(this.gesture.destroy(),this.gesture=void 0),null===(t=this.buttonGroupResizeObserver)||void 0===t||t.disconnect(),this.buttonGroupResizeObserver=void 0}componentDidLoad(){!this.gesture&&"ios"===j(this)&&this.wrapperEl&&(this.gesture=c(this.wrapperEl,(t=>t.classList.contains("alert-button"))),this.gesture.enable(!0)),this.setupButtonGroupResizeObserver(),!0===this.isOpen&&p((()=>this.present())),this.triggerChanged()}async present(){const t=await this.lockController.lock();await this.delegateController.attachViewToDom(),await v(this,"alertEnter",O,A).then((()=>{var t,e;1===this.buttons.length&&0===this.inputs.length?(null===(t=this.wrapperEl)||void 0===t?void 0:t.querySelector(".alert-button")).focus():null===(e=this.wrapperEl)||void 0===e||e.focus()})),t()}async dismiss(t,e){const i=await this.lockController.lock(),r=await w(this,t,e,"alertLeave",D,I);return r&&this.delegateController.removeViewFromDom(),i(),r}onDidDismiss(){return k(this.el,"ionAlertDidDismiss")}onWillDismiss(){return k(this.el,"ionAlertWillDismiss")}rbClick(t){for(const e of this.processedInputs)e.checked=e===t,e.tabindex=e===t?0:-1;this.activeId=t.id,y(t.handler,t),o(this)}cbClick(t){t.checked=!t.checked,y(t.handler,t),o(this)}async buttonClick(t){const e=t.role,i=this.getValues();if(x(e))return this.dismiss({values:i},e);const r=await this.callButtonHandler(t,i);return!1!==r&&this.dismiss(Object.assign({values:i},r),t.role)}async callButtonHandler(t,e){if(null==t?void 0:t.handler){const i=await y(t.handler,e);if(!1===i)return!1;if("object"==typeof i)return i}return{}}getValues(){if(0===this.processedInputs.length)return;if("radio"===this.inputType){const t=this.processedInputs.find((t=>!!t.checked));return t?t.value:void 0}if("checkbox"===this.inputType)return this.processedInputs.filter((t=>t.checked)).map((t=>t.value));const t={};return this.processedInputs.forEach((e=>{t[e.name]=e.value||""})),t}renderAlertInputs(){switch(this.inputType){case"checkbox":return this.renderCheckbox();case"radio":return this.renderRadio();default:return this.renderInput()}}renderCheckbox(){const t=this.processedInputs,e=j(this);return 0===t.length?null:a("div",{class:"alert-checkbox-group"},t.map((t=>a("button",{type:"button",onClick:()=>this.cbClick(t),"aria-checked":`${t.checked}`,id:t.id,disabled:t.disabled,tabIndex:t.tabindex,role:"checkbox",class:Object.assign(Object.assign({},z(t.cssClass)),{"alert-tappable":!0,"alert-checkbox":!0,"alert-checkbox-button":!0,"ion-focusable":!0,"alert-checkbox-button-disabled":t.disabled||!1})},a("div",{class:"alert-button-inner"},a("div",{class:"alert-checkbox-icon"},a("div",{class:"alert-checkbox-inner"})),a("div",{class:"alert-checkbox-label"},t.label)),"md"===e&&a("ion-ripple-effect",null)))))}renderRadio(){const t=this.processedInputs;return 0===t.length?null:a("div",{class:"alert-radio-group",role:"radiogroup","aria-activedescendant":this.activeId},t.map((t=>a("button",{type:"button",onClick:()=>this.rbClick(t),"aria-checked":`${t.checked}`,disabled:t.disabled,id:t.id,tabIndex:t.tabindex,class:Object.assign(Object.assign({},z(t.cssClass)),{"alert-radio-button":!0,"alert-tappable":!0,"alert-radio":!0,"ion-focusable":!0,"alert-radio-button-disabled":t.disabled||!1}),role:"radio"},a("div",{class:"alert-button-inner"},a("div",{class:"alert-radio-icon"},a("div",{class:"alert-radio-inner"})),a("div",{class:"alert-radio-label"},t.label))))))}renderInput(){const t=this.processedInputs;return 0===t.length?null:a("div",{class:"alert-input-group"},t.map((t=>{var e,i,r,o;return a("div",{class:"alert-input-wrapper"},"textarea"===t.type?a("textarea",Object.assign({placeholder:t.placeholder,value:t.value,id:t.id,tabIndex:t.tabindex},t.attributes,{disabled:null!==(i=null===(e=t.attributes)||void 0===e?void 0:e.disabled)&&void 0!==i?i:t.disabled,class:B(t),onInput:e=>{var i;t.value=e.target.value,(null===(i=t.attributes)||void 0===i?void 0:i.onInput)&&t.attributes.onInput(e)}})):a("input",Object.assign({placeholder:t.placeholder,type:t.type,min:t.min,max:t.max,value:t.value,id:t.id,tabIndex:t.tabindex},t.attributes,{disabled:null!==(o=null===(r=t.attributes)||void 0===r?void 0:r.disabled)&&void 0!==o?o:t.disabled,class:B(t),onInput:e=>{var i;t.value=e.target.value,(null===(i=t.attributes)||void 0===i?void 0:i.onInput)&&t.attributes.onInput(e)}})))})))}setupButtonGroupResizeObserver(){var t;this.buttonGroupEl&&"undefined"!=typeof ResizeObserver&&(null===(t=this.buttonGroupResizeObserver)||void 0===t||t.disconnect(),this.buttonGroupResizeObserver=new ResizeObserver((()=>this.checkButtonGroupWrap())),this.buttonGroupResizeObserver.observe(this.buttonGroupEl),this.checkButtonGroupWrap())}checkButtonGroupWrap(){p((()=>{if(!this.buttonGroupResizeObserver)return;const t=this.buttonGroupEl;if(!t)return;const e=Array.from(t.querySelectorAll(".alert-button"));if(e.length<2)return void(this.isButtonGroupWrapped=!1);const i=e[0].offsetTop;this.isButtonGroupWrapped=e.some((t=>t.offsetTop!==i))}))}renderAlertButtons(){const t=this.processedButtons,e=j(this);return a("div",{class:{"alert-button-group":!0,"alert-button-group-vertical":t.length>2||this.isButtonGroupWrapped},ref:t=>this.buttonGroupEl=t},t.map((t=>a("button",Object.assign({},t.htmlAttributes,{type:"button",id:t.id,class:W(t),tabIndex:0,onClick:()=>this.buttonClick(t)}),a("span",{class:"alert-button-inner"},t.text),"md"===e&&a("ion-ripple-effect",null)))))}renderAlertMessage(t){const{customHTMLEnabled:e,message:i}=this;return e?a("div",{id:t,class:"alert-message",innerHTML:d(i)}):a("div",{id:t,class:"alert-message"},i)}render(){const{overlayIndex:t,header:e,subHeader:i,message:r,htmlAttributes:o}=this,l=j(this),s=`alert-${t}-hdr`,d=`alert-${t}-msg`,c=`alert-${t}-sub-hdr`,p=this.inputs.length>0||this.buttons.length>0?"alertdialog":"alert",b=e&&i?`${s} ${c}`:e?s:i?c:null;return a(n,{key:"8d54ccd725ea634be080e67b56fa5efe498f496c",tabindex:"-1",style:{zIndex:`${2e4+t}`},class:Object.assign(Object.assign({},z(this.cssClass)),{[l]:!0,"overlay-hidden":!0,"alert-translucent":this.translucent}),onIonAlertWillDismiss:this.dispatchCancelHandler,onIonBackdropTap:this.onBackdropTap},a("ion-backdrop",{key:"05a238583342285545587de9dce144a82d779193",tappable:this.backdropDismiss}),a("div",{key:"e52c53fd9845e66781af01b2a788a291b45a927c",tabindex:"0","aria-hidden":"true"}),a("div",Object.assign({key:"8417e52eebca24ff436fab0703666db51072f980",class:"alert-wrapper ion-overlay-wrapper",role:p,"aria-modal":"true","aria-labelledby":b,"aria-describedby":void 0!==r?d:null,tabindex:"0",ref:t=>this.wrapperEl=t},o),a("div",{key:"5c560d4800b24d41961423718108b54be6cd6f91",class:"alert-head"},e&&a("h2",{key:"8637b64cd5125b2258115d1c11f3743113658608",id:s,class:"alert-title"},e),i&&!e&&a("h2",{key:"7a4e61a02c29b16b336d8acaf6569b30de6fe71e",id:c,class:"alert-sub-title"},i),i&&e&&a("h3",{key:"30844b6a0a7e3dab46514cd548ecffa86dcd59cb",id:c,class:"alert-sub-title"},i)),this.renderAlertMessage(d),this.renderAlertInputs(),this.renderAlertButtons()),a("div",{key:"39c824fee1e60ad8d6234c79d22ceb8bba8004af",tabindex:"0","aria-hidden":"true"}))}get el(){return l(this)}static get watchers(){return{isOpen:[{onIsOpenChange:0}],trigger:[{triggerChanged:0}],buttons:[{buttonsChanged:0}],inputs:[{inputsChanged:0}]}}},B=t=>{var e,i,r;return Object.assign(Object.assign({"alert-input":!0,"alert-input-disabled":(null!==(i=null===(e=t.attributes)||void 0===e?void 0:e.disabled)&&void 0!==i?i:t.disabled)||!1},z(t.cssClass)),z(t.attributes?null===(r=t.attributes.class)||void 0===r?void 0:r.toString():""))},W=t=>Object.assign({"alert-button":!0,"ion-focusable":!0,"ion-activatable":!0,[`alert-button-role-${t.role}`]:void 0!==t.role},z(t.cssClass));$.style={ios:".sc-ion-alert-ios-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-ios-h{display:none}.alert-top.sc-ion-alert-ios-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-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);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-ios,.alert-radio-label.sc-ion-alert-ios{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-ios::-webkit-scrollbar,.alert-message.sc-ion-alert-ios::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-ios{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-ios{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-ios,.alert-tappable.ion-focused.sc-ion-alert-ios{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-ios{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.alert-input-disabled.sc-ion-alert-ios,.alert-checkbox-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios,.alert-radio-button-disabled.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-ios{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-ios,.alert-checkbox.sc-ion-alert-ios,.alert-input.sc-ion-alert-ios,.alert-radio.sc-ion-alert-ios{outline:none}.alert-radio-icon.sc-ion-alert-ios,.alert-checkbox-icon.sc-ion-alert-ios,.alert-checkbox-inner.sc-ion-alert-ios{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-ios{min-height:37px;resize:none}.sc-ion-alert-ios-h{--background:var(--ion-overlay-background-color, var(--ion-color-step-100, var(--ion-background-color-step-100, #f9f9f9)));--max-width:clamp(270px, 16.875rem, 324px);--backdrop-opacity:var(--ion-backdrop-opacity, 0.3);font-size:max(14px, 0.875rem)}.alert-wrapper.sc-ion-alert-ios{border-radius:13px;-webkit-box-shadow:none;box-shadow:none;overflow:hidden}.alert-button.sc-ion-alert-ios .alert-button-inner.sc-ion-alert-ios{pointer-events:none}@supports ((-webkit-backdrop-filter: blur(0)) or (backdrop-filter: blur(0))){.alert-translucent.sc-ion-alert-ios-h .alert-wrapper.sc-ion-alert-ios{background:rgba(var(--ion-background-color-rgb, 255, 255, 255), 0.9);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}}.alert-head.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:12px;padding-bottom:7px;text-align:center}.alert-title.sc-ion-alert-ios{margin-top:8px;color:var(--ion-text-color, #000);font-size:max(17px, 1.0625rem);font-weight:600}.alert-sub-title.sc-ion-alert-ios{color:var(--ion-color-step-600, var(--ion-text-color-step-400, #666666));font-size:max(14px, 0.875rem)}.alert-message.sc-ion-alert-ios,.alert-input-group.sc-ion-alert-ios{-webkit-padding-start:16px;padding-inline-start:16px;-webkit-padding-end:16px;padding-inline-end:16px;padding-top:0;padding-bottom:21px;color:var(--ion-text-color, #000);font-size:max(13px, 0.8125rem);text-align:center}.alert-message.sc-ion-alert-ios{max-height:240px}.alert-message.sc-ion-alert-ios:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:12px}.alert-input.sc-ion-alert-ios{border-radius:7px;margin-top:10px;-webkit-padding-start:7px;padding-inline-start:7px;-webkit-padding-end:7px;padding-inline-end:7px;padding-top:7px;padding-bottom:7px;border:0.55px solid var(--ion-color-step-250, var(--ion-background-color-step-250, #bfbfbf));background-color:var(--ion-background-color, #fff);-webkit-appearance:none;-moz-appearance:none;appearance:none;font-size:1rem}.alert-input.sc-ion-alert-ios::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-ios::-ms-clear{display:none}.alert-input.sc-ion-alert-ios::-webkit-date-and-time-value{height:18px}.alert-radio-group.sc-ion-alert-ios,.alert-checkbox-group.sc-ion-alert-ios{-ms-scroll-chaining:none;overscroll-behavior:contain;max-height:240px;border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);overflow-y:auto;-webkit-overflow-scrolling:touch}.alert-tappable.sc-ion-alert-ios{min-height:44px}.alert-radio-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;-ms-flex-order:0;order:0;color:var(--ion-text-color, #000)}[aria-checked=true].sc-ion-alert-ios .alert-radio-label.sc-ion-alert-ios{color:var(--ion-color-primary, #0054e9)}.alert-radio-icon.sc-ion-alert-ios{position:relative;-ms-flex-order:1;order:1;min-width:30px}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{top:-7px;position:absolute;width:6px;height:12px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .alert-radio-inner.sc-ion-alert-ios{inset-inline-start:7px}.alert-checkbox-label.sc-ion-alert-ios{-webkit-padding-start:13px;padding-inline-start:13px;-webkit-padding-end:13px;padding-inline-end:13px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-text-color, #000)}.alert-checkbox-icon.sc-ion-alert-ios{border-radius:50%;-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:6px;margin-inline-end:6px;margin-top:10px;margin-bottom:10px;position:relative;width:min(1.375rem, 55.836px);height:min(1.375rem, 55.836px);border-width:0.125rem;border-style:solid;border-color:var(--ion-item-border-color, var(--ion-border-color, var(--ion-color-step-250, var(--ion-background-color-step-250, #c8c7cc))));background-color:var(--ion-item-background, var(--ion-background-color, #fff));contain:strict}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-icon.sc-ion-alert-ios{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{top:calc(min(1.375rem, 55.836px) / 8);position:absolute;width:calc(min(1.375rem, 55.836px) / 6 + 1px);height:calc(min(1.375rem, 55.836px) * 0.5);-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:0.125rem;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-background-color, #fff)}[aria-checked=true].sc-ion-alert-ios .alert-checkbox-inner.sc-ion-alert-ios{inset-inline-start:calc(min(1.375rem, 55.836px) / 3)}.alert-button-group.sc-ion-alert-ios{-webkit-margin-end:-0.55px;margin-inline-end:-0.55px;-ms-flex-wrap:wrap;flex-wrap:wrap}.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios{border-right:none}[dir=rtl].sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}[dir=rtl].sc-ion-alert-ios .alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:none}@supports selector(:dir(rtl)){.alert-button-group-vertical.sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:none}}.alert-button.sc-ion-alert-ios{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;border-radius:0;-ms-flex:1 1 auto;flex:1 1 auto;min-width:50%;height:max(44px, 2.75rem);border-top:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2);background-color:transparent;color:var(--ion-color-primary, #0054e9);font-size:max(17px, 1.0625rem);overflow:hidden}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:first-child{border-right:0}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:first-child{border-right:0}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:first-child:dir(rtl){border-right:0}}.alert-button.sc-ion-alert-ios:last-child{border-right:0;font-weight:bold}[dir=rtl].sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child,[dir=rtl] .sc-ion-alert-ios-h .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}[dir=rtl].sc-ion-alert-ios .alert-button.sc-ion-alert-ios:last-child{border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}@supports selector(:dir(rtl)){.alert-button.sc-ion-alert-ios:last-child:dir(rtl){border-right:0.55px solid rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.2)}}.alert-button.ion-activated.sc-ion-alert-ios{background-color:rgba(var(--ion-text-color-rgb, 0, 0, 0), 0.1)}.alert-button-role-destructive.sc-ion-alert-ios,.alert-button-role-destructive.ion-activated.sc-ion-alert-ios,.alert-button-role-destructive.ion-focused.sc-ion-alert-ios{color:var(--ion-color-danger, #c5000f)}",md:".sc-ion-alert-md-h{--min-width:250px;--width:auto;--min-height:auto;--height:auto;--max-height:90%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;left:0;right:0;top:0;bottom:0;display:-ms-flexbox;display:flex;position:absolute;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;outline:none;font-family:var(--ion-font-family, inherit);contain:strict;-ms-touch-action:none;touch-action:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:1001}.overlay-hidden.sc-ion-alert-md-h{display:none}.alert-top.sc-ion-alert-md-h{padding-top:50px;-ms-flex-align:start;align-items:flex-start}.alert-wrapper.sc-ion-alert-md{display:-ms-flexbox;display:flex;-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);contain:content;opacity:0;z-index:10}.alert-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-sub-title.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;font-weight:normal}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-overflow-scrolling:touch;overflow-y:auto;overscroll-behavior-y:contain}.alert-checkbox-label.sc-ion-alert-md,.alert-radio-label.sc-ion-alert-md{overflow-wrap:anywhere}@media (any-pointer: coarse){.alert-checkbox-group.sc-ion-alert-md::-webkit-scrollbar,.alert-radio-group.sc-ion-alert-md::-webkit-scrollbar,.alert-message.sc-ion-alert-md::-webkit-scrollbar{display:none}}.alert-input.sc-ion-alert-md{padding-left:0;padding-right:0;padding-top:10px;padding-bottom:10px;width:100%;border:0;background:inherit;font:inherit;-webkit-box-sizing:border-box;box-sizing:border-box}.alert-button-group.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;width:100%}.alert-button-group-vertical.sc-ion-alert-md{-ms-flex-direction:column;flex-direction:column;-ms-flex-wrap:nowrap;flex-wrap:nowrap}.alert-button.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;display:block;border:0;font-size:0.875rem;line-height:1.25rem;z-index:0}.alert-button.ion-focused.sc-ion-alert-md,.alert-tappable.ion-focused.sc-ion-alert-md{background:var(--ion-color-step-100, var(--ion-background-color-step-100, #e6e6e6))}.alert-button-inner.sc-ion-alert-md{display:-ms-flexbox;display:flex;-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-negative:0;flex-shrink:0;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:100%;height:100%;min-height:inherit}.alert-input-disabled.sc-ion-alert-md,.alert-checkbox-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md,.alert-radio-button-disabled.sc-ion-alert-md .alert-button-inner.sc-ion-alert-md{cursor:default;opacity:0.5;pointer-events:none}.alert-tappable.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;display:-ms-flexbox;display:flex;width:100%;border:0;background:transparent;font-size:inherit;line-height:initial;text-align:start;-webkit-appearance:none;-moz-appearance:none;appearance:none;contain:content}.alert-button.sc-ion-alert-md,.alert-checkbox.sc-ion-alert-md,.alert-input.sc-ion-alert-md,.alert-radio.sc-ion-alert-md{outline:none}.alert-radio-icon.sc-ion-alert-md,.alert-checkbox-icon.sc-ion-alert-md,.alert-checkbox-inner.sc-ion-alert-md{-webkit-box-sizing:border-box;box-sizing:border-box}textarea.alert-input.sc-ion-alert-md{min-height:37px;resize:none}.sc-ion-alert-md-h{--background:var(--ion-overlay-background-color, var(--ion-background-color, #fff));--max-width:280px;--backdrop-opacity:var(--ion-backdrop-opacity, 0.32);font-size:0.875rem}.alert-wrapper.sc-ion-alert-md{border-radius:4px;-webkit-box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12);box-shadow:0 11px 15px -7px rgba(0, 0, 0, 0.2), 0 24px 38px 3px rgba(0, 0, 0, 0.14), 0 9px 46px 8px rgba(0, 0, 0, 0.12)}.alert-head.sc-ion-alert-md{-webkit-padding-start:23px;padding-inline-start:23px;-webkit-padding-end:23px;padding-inline-end:23px;padding-top:20px;padding-bottom:15px;text-align:start}.alert-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1.25rem;font-weight:500}.alert-sub-title.sc-ion-alert-md{color:var(--ion-text-color, #000);font-size:1rem}.alert-message.sc-ion-alert-md,.alert-input-group.sc-ion-alert-md{-webkit-padding-start:24px;padding-inline-start:24px;-webkit-padding-end:24px;padding-inline-end:24px;padding-top:20px;padding-bottom:20px;color:var(--ion-color-step-550, var(--ion-text-color-step-450, #737373))}.alert-message.sc-ion-alert-md{font-size:1rem}@media screen and (max-width: 767px){.alert-message.sc-ion-alert-md{max-height:266px}}.alert-message.sc-ion-alert-md:empty{padding-left:0;padding-right:0;padding-top:0;padding-bottom:0}.alert-head.sc-ion-alert-md+.alert-message.sc-ion-alert-md{padding-top:0}.alert-input.sc-ion-alert-md{margin-left:0;margin-right:0;margin-top:5px;margin-bottom:5px;border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));color:var(--ion-text-color, #000)}.alert-input.sc-ion-alert-md::-webkit-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-moz-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md:-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-input-placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::placeholder{color:var(--ion-placeholder-color, var(--ion-color-step-400, var(--ion-text-color-step-600, #999999)));font-family:inherit;font-weight:inherit}.alert-input.sc-ion-alert-md::-ms-clear{display:none}.alert-input.sc-ion-alert-md:focus{margin-bottom:4px;border-bottom:2px solid var(--ion-color-primary, #0054e9)}.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{position:relative;border-top:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));border-bottom:1px solid var(--ion-color-step-150, var(--ion-background-color-step-150, #d9d9d9));overflow:auto}@media screen and (max-width: 767px){.alert-radio-group.sc-ion-alert-md,.alert-checkbox-group.sc-ion-alert-md{max-height:266px}}.alert-tappable.sc-ion-alert-md{position:relative;min-height:48px}.alert-radio-label.sc-ion-alert-md{-webkit-padding-start:52px;padding-inline-start:52px;-webkit-padding-end:26px;padding-inline-end:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.alert-radio-icon.sc-ion-alert-md{top:0;border-radius:50%;display:block;position:relative;width:20px;height:20px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373))}.alert-radio-icon.sc-ion-alert-md{inset-inline-start:26px}.alert-radio-inner.sc-ion-alert-md{top:3px;border-radius:50%;position:absolute;width:10px;height:10px;-webkit-transform:scale3d(0, 0, 0);transform:scale3d(0, 0, 0);-webkit-transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:-webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1);transition:transform 280ms cubic-bezier(0.4, 0, 0.2, 1), -webkit-transform 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--ion-color-primary, #0054e9)}.alert-radio-inner.sc-ion-alert-md{inset-inline-start:3px}[aria-checked=true].sc-ion-alert-md .alert-radio-label.sc-ion-alert-md{color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626))}[aria-checked=true].sc-ion-alert-md .alert-radio-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-radio-inner.sc-ion-alert-md{-webkit-transform:scale3d(1, 1, 1);transform:scale3d(1, 1, 1)}.alert-checkbox-label.sc-ion-alert-md{-webkit-padding-start:53px;padding-inline-start:53px;-webkit-padding-end:26px;padding-inline-end:26px;padding-top:13px;padding-bottom:13px;-ms-flex:1;flex:1;width:calc(100% - 53px);color:var(--ion-color-step-850, var(--ion-text-color-step-150, #262626));font-size:1rem}.alert-checkbox-icon.sc-ion-alert-md{top:0;border-radius:2px;position:relative;width:16px;height:16px;border-width:2px;border-style:solid;border-color:var(--ion-color-step-550, var(--ion-background-color-step-550, #737373));contain:strict}.alert-checkbox-icon.sc-ion-alert-md{inset-inline-start:26px}[aria-checked=true].sc-ion-alert-md .alert-checkbox-icon.sc-ion-alert-md{border-color:var(--ion-color-primary, #0054e9);background-color:var(--ion-color-primary, #0054e9)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{top:0;position:absolute;width:6px;height:10px;-webkit-transform:rotate(45deg);transform:rotate(45deg);border-width:2px;border-top-width:0;border-left-width:0;border-style:solid;border-color:var(--ion-color-primary-contrast, #fff)}[aria-checked=true].sc-ion-alert-md .alert-checkbox-inner.sc-ion-alert-md{inset-inline-start:3px}.alert-button-group.sc-ion-alert-md{-webkit-padding-start:8px;padding-inline-start:8px;-webkit-padding-end:8px;padding-inline-end:8px;padding-top:8px;padding-bottom:8px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-flex-wrap:wrap-reverse;flex-wrap:wrap-reverse;-ms-flex-pack:end;justify-content:flex-end}.alert-button.sc-ion-alert-md{border-radius:2px;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:8px;margin-inline-end:8px;margin-top:0;margin-bottom:0;-webkit-padding-start:10px;padding-inline-start:10px;-webkit-padding-end:10px;padding-inline-end:10px;padding-top:10px;padding-bottom:10px;position:relative;background-color:transparent;color:var(--ion-color-primary, #0054e9);font-weight:500;text-align:end;text-transform:uppercase;overflow:hidden}.alert-button-inner.sc-ion-alert-md{-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width: 768px){.sc-ion-alert-md-h{--max-width:min(100vw - 96px, 560px);--max-height:min(100vh - 96px, 560px)}}"};export{$ as ion_alert}
@@ -16,7 +16,10 @@ export declare class Alert implements ComponentInterface, OverlayInterface {
16
16
  private processedInputs;
17
17
  private processedButtons;
18
18
  private wrapperEl?;
19
+ private buttonGroupEl?;
20
+ private buttonGroupResizeObserver?;
19
21
  private gesture?;
22
+ private isButtonGroupWrapped;
20
23
  presented: boolean;
21
24
  lastFocus?: HTMLElement;
22
25
  el: HTMLIonAlertElement;
@@ -188,6 +191,8 @@ export declare class Alert implements ComponentInterface, OverlayInterface {
188
191
  private renderInput;
189
192
  private onBackdropTap;
190
193
  private dispatchCancelHandler;
194
+ private setupButtonGroupResizeObserver;
195
+ private checkButtonGroupWrap;
191
196
  private renderAlertButtons;
192
197
  private renderAlertMessage;
193
198
  render(): any;
@@ -419,12 +419,12 @@ export declare class Modal implements ComponentInterface, OverlayInterface {
419
419
  */
420
420
  private applyFullscreenSafeArea;
421
421
  /**
422
- * Sets --ion-content-safe-area-padding-bottom on the given ion-content
422
+ * Sets --internal-content-safe-area-padding-bottom on the given ion-content
423
423
  * when no footer is present, so ion-content's .inner-scroll includes
424
424
  * safe-area-bottom in its scroll padding. This keeps the modal background
425
425
  * edge-to-edge while ensuring content scrolls clear of the system nav bar.
426
426
  *
427
- * --ion-content-safe-area-padding-bottom is an internal CSS property used
427
+ * --internal-content-safe-area-padding-bottom is an internal CSS property used
428
428
  * only by this code path. It is not part of ion-content's public API and
429
429
  * should not be set by consumers. The default of 0px makes it a no-op
430
430
  * when unset, which is the expected state for ion-content used outside of
@@ -432,7 +432,7 @@ export declare class Modal implements ComponentInterface, OverlayInterface {
432
432
  */
433
433
  private applyFullscreenSafeAreaTo;
434
434
  /**
435
- * Removes the internal --ion-content-safe-area-padding-bottom property
435
+ * Removes the internal --internal-content-safe-area-padding-bottom property
436
436
  * from an already-located ion-content. Callers do their own
437
437
  * findContentAndFooter() so they can also read hasFooter if needed.
438
438
  */
package/hydrate/index.js CHANGED
@@ -10145,6 +10145,7 @@ class Alert {
10145
10145
  this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
10146
10146
  this.processedInputs = [];
10147
10147
  this.processedButtons = [];
10148
+ this.isButtonGroupWrapped = false;
10148
10149
  this.presented = false;
10149
10150
  /** @internal */
10150
10151
  this.hasController = false;
@@ -10269,6 +10270,13 @@ class Alert {
10269
10270
  this.processedButtons = buttons.map((btn) => {
10270
10271
  return typeof btn === 'string' ? { text: btn, role: btn.toLowerCase() === 'cancel' ? 'cancel' : undefined } : btn;
10271
10272
  });
10273
+ /**
10274
+ * Reset wrap state so the new button set can be re-evaluated. Without this,
10275
+ * a previously-latched vertical layout would persist even if the new buttons
10276
+ * fit horizontally.
10277
+ */
10278
+ this.isButtonGroupWrapped = false;
10279
+ this.checkButtonGroupWrap();
10272
10280
  }
10273
10281
  inputsChanged() {
10274
10282
  const inputs = this.inputs;
@@ -10309,6 +10317,12 @@ class Alert {
10309
10317
  connectedCallback() {
10310
10318
  prepareOverlay(this.el);
10311
10319
  this.triggerChanged();
10320
+ /**
10321
+ * If the alert was previously connected and is being reattached, the
10322
+ * ResizeObserver was disconnected. componentDidLoad only fires once per
10323
+ * instance, so re-establish the observer here on reconnect.
10324
+ */
10325
+ this.setupButtonGroupResizeObserver();
10312
10326
  }
10313
10327
  componentWillLoad() {
10314
10328
  var _a;
@@ -10319,11 +10333,14 @@ class Alert {
10319
10333
  this.buttonsChanged();
10320
10334
  }
10321
10335
  disconnectedCallback() {
10336
+ var _a;
10322
10337
  this.triggerController.removeClickListener();
10323
10338
  if (this.gesture) {
10324
10339
  this.gesture.destroy();
10325
10340
  this.gesture = undefined;
10326
10341
  }
10342
+ (_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
10343
+ this.buttonGroupResizeObserver = undefined;
10327
10344
  }
10328
10345
  componentDidLoad() {
10329
10346
  /**
@@ -10336,6 +10353,7 @@ class Alert {
10336
10353
  this.gesture = createButtonActiveGesture(this.wrapperEl, (refEl) => refEl.classList.contains('alert-button'));
10337
10354
  this.gesture.enable(true);
10338
10355
  }
10356
+ this.setupButtonGroupResizeObserver();
10339
10357
  /**
10340
10358
  * If alert was rendered with isOpen="true"
10341
10359
  * then we should open alert immediately.
@@ -10525,14 +10543,58 @@ class Alert {
10525
10543
  }
10526
10544
  })));
10527
10545
  }
10546
+ setupButtonGroupResizeObserver() {
10547
+ var _a;
10548
+ /**
10549
+ * Re-evaluate vertical layout when the button group resizes so a 2-button
10550
+ * group with long text wraps cleanly instead of leaving a stray right-edge
10551
+ * border on the first button.
10552
+ */
10553
+ if (!this.buttonGroupEl || typeof ResizeObserver === 'undefined') {
10554
+ return;
10555
+ }
10556
+ (_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
10557
+ this.buttonGroupResizeObserver = new ResizeObserver(() => this.checkButtonGroupWrap());
10558
+ this.buttonGroupResizeObserver.observe(this.buttonGroupEl);
10559
+ this.checkButtonGroupWrap();
10560
+ }
10561
+ checkButtonGroupWrap() {
10562
+ /**
10563
+ * Defer the layout read out of the ResizeObserver callback so we don't
10564
+ * force synchronous layout and avoid "ResizeObserver loop" warnings when
10565
+ * applying the vertical-layout class itself triggers another resize.
10566
+ */
10567
+ raf(() => {
10568
+ /**
10569
+ * Bail if the alert was disconnected after this raf was queued.
10570
+ * `buttonGroupEl` persists across disconnect so the observer can be
10571
+ * re-attached on reconnect; the observer reference is the disconnect
10572
+ * sentinel.
10573
+ */
10574
+ if (!this.buttonGroupResizeObserver) {
10575
+ return;
10576
+ }
10577
+ const groupEl = this.buttonGroupEl;
10578
+ if (!groupEl) {
10579
+ return;
10580
+ }
10581
+ const buttons = Array.from(groupEl.querySelectorAll('.alert-button'));
10582
+ if (buttons.length < 2) {
10583
+ this.isButtonGroupWrapped = false;
10584
+ return;
10585
+ }
10586
+ const firstTop = buttons[0].offsetTop;
10587
+ this.isButtonGroupWrapped = buttons.some((btn) => btn.offsetTop !== firstTop);
10588
+ });
10589
+ }
10528
10590
  renderAlertButtons() {
10529
10591
  const buttons = this.processedButtons;
10530
10592
  const mode = getIonMode$1(this);
10531
10593
  const alertButtonGroupClass = {
10532
10594
  'alert-button-group': true,
10533
- 'alert-button-group-vertical': buttons.length > 2,
10595
+ 'alert-button-group-vertical': buttons.length > 2 || this.isButtonGroupWrapped,
10534
10596
  };
10535
- return (hAsync("div", { class: alertButtonGroupClass }, buttons.map((button) => (hAsync("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass$2(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), hAsync("span", { class: "alert-button-inner" }, button.text), mode === 'md' && hAsync("ion-ripple-effect", null))))));
10597
+ return (hAsync("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (hAsync("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass$2(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), hAsync("span", { class: "alert-button-inner" }, button.text), mode === 'md' && hAsync("ion-ripple-effect", null))))));
10536
10598
  }
10537
10599
  renderAlertMessage(msgId) {
10538
10600
  const { customHTMLEnabled, message } = this;
@@ -10555,9 +10617,9 @@ class Alert {
10555
10617
  * If neither are defined, do not set aria-labelledby.
10556
10618
  */
10557
10619
  const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
10558
- return (hAsync(Host, { key: '6025440b9cd369d4fac89e7e4296c84a10a0b8e0', tabindex: "-1", style: {
10620
+ return (hAsync(Host, { key: '8d54ccd725ea634be080e67b56fa5efe498f496c', tabindex: "-1", style: {
10559
10621
  zIndex: `${20000 + overlayIndex}`,
10560
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: '3cd5ca8b99cb95b11dd22ab41a820d841142896f', tappable: this.backdropDismiss }), hAsync("div", { key: '4cc62ae6e21424057d22aeef1e8fc77011e77cd5', tabindex: "0", "aria-hidden": "true" }), hAsync("div", Object.assign({ key: '364057a69f25aa88904df17bdcf7e5bf714e7830', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), hAsync("div", { key: '78694e3c0db2d408df3899fb1a90859bcc8d14cc', class: "alert-head" }, header && (hAsync("h2", { key: 'ec88ff3e4e1ea871b5975133fdcf4cac38b05e0f', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '9b09bc8bb68af255ef8b7d22587acc946148e544', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '99abe815f75d2df7f1b77c0df9f3436724fea76f', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: 'a43d0c22c0e46b1ef911f92ffeb253d7911b85f7', tabindex: "0", "aria-hidden": "true" })));
10622
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: '05a238583342285545587de9dce144a82d779193', tappable: this.backdropDismiss }), hAsync("div", { key: 'e52c53fd9845e66781af01b2a788a291b45a927c', tabindex: "0", "aria-hidden": "true" }), hAsync("div", Object.assign({ key: '8417e52eebca24ff436fab0703666db51072f980', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), hAsync("div", { key: '5c560d4800b24d41961423718108b54be6cd6f91', class: "alert-head" }, header && (hAsync("h2", { key: '8637b64cd5125b2258115d1c11f3743113658608', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '7a4e61a02c29b16b336d8acaf6569b30de6fe71e', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '30844b6a0a7e3dab46514cd548ecffa86dcd59cb', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: '39c824fee1e60ad8d6234c79d22ceb8bba8004af', tabindex: "0", "aria-hidden": "true" })));
10561
10623
  }
10562
10624
  get el() { return getElement(this); }
10563
10625
  static get watchers() { return {
@@ -10600,6 +10662,7 @@ class Alert {
10600
10662
  "htmlAttributes": [16],
10601
10663
  "isOpen": [4, "is-open"],
10602
10664
  "trigger": [1],
10665
+ "isButtonGroupWrapped": [32],
10603
10666
  "present": [64],
10604
10667
  "dismiss": [64],
10605
10668
  "onDidDismiss": [64],
@@ -12367,7 +12430,7 @@ const isRTL$1 = (hostEl) => {
12367
12430
  return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';
12368
12431
  };
12369
12432
 
12370
- const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--ion-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
12433
+ const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
12371
12434
 
12372
12435
  /**
12373
12436
  * @slot - Content is placed in the scrollable area if provided without a slot.
@@ -26273,12 +26336,12 @@ class Modal {
26273
26336
  this.applyFullscreenSafeAreaTo(contentEl, hasFooter);
26274
26337
  }
26275
26338
  /**
26276
- * Sets --ion-content-safe-area-padding-bottom on the given ion-content
26339
+ * Sets --internal-content-safe-area-padding-bottom on the given ion-content
26277
26340
  * when no footer is present, so ion-content's .inner-scroll includes
26278
26341
  * safe-area-bottom in its scroll padding. This keeps the modal background
26279
26342
  * edge-to-edge while ensuring content scrolls clear of the system nav bar.
26280
26343
  *
26281
- * --ion-content-safe-area-padding-bottom is an internal CSS property used
26344
+ * --internal-content-safe-area-padding-bottom is an internal CSS property used
26282
26345
  * only by this code path. It is not part of ion-content's public API and
26283
26346
  * should not be set by consumers. The default of 0px makes it a no-op
26284
26347
  * when unset, which is the expected state for ion-content used outside of
@@ -26290,17 +26353,17 @@ class Modal {
26290
26353
  // padding. Custom modals with raw HTML are developer-controlled.
26291
26354
  if (!contentEl || hasFooter)
26292
26355
  return;
26293
- contentEl.style.setProperty('--ion-content-safe-area-padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
26356
+ contentEl.style.setProperty('--internal-content-safe-area-padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
26294
26357
  }
26295
26358
  /**
26296
- * Removes the internal --ion-content-safe-area-padding-bottom property
26359
+ * Removes the internal --internal-content-safe-area-padding-bottom property
26297
26360
  * from an already-located ion-content. Callers do their own
26298
26361
  * findContentAndFooter() so they can also read hasFooter if needed.
26299
26362
  */
26300
26363
  clearContentSafeAreaPadding(contentEl) {
26301
26364
  if (!contentEl)
26302
26365
  return;
26303
- contentEl.style.removeProperty('--ion-content-safe-area-padding-bottom');
26366
+ contentEl.style.removeProperty('--internal-content-safe-area-padding-bottom');
26304
26367
  }
26305
26368
  /**
26306
26369
  * Finds ion-content and ion-footer among direct children and one level of
@@ -26347,20 +26410,20 @@ class Modal {
26347
26410
  const isCardModal = presentingElement !== undefined && mode === 'ios';
26348
26411
  const isHandleCycle = handleBehavior === 'cycle';
26349
26412
  const isSheetModalWithHandle = isSheetModal && showHandle;
26350
- return (hAsync(Host, Object.assign({ key: '4bf38aa67df9a3f977163bba5423960bbafd16de', "no-router": true,
26413
+ return (hAsync(Host, Object.assign({ key: 'd6a271ace939c33703966a1425ab32b7a30bf246', "no-router": true,
26351
26414
  // Allow the modal to be navigable when the handle is focusable
26352
26415
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
26353
26416
  zIndex: `${20000 + this.overlayIndex}`,
26354
- }, 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: '866da40cc5fc8d3e36637098fb3066a5bc9f4e0f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '5a2a05514ea8592c8feb0465e504aa7c7af17963', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '4d327115306451f57d190b06ab8cbb6191a6f1d7',
26417
+ }, 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: '51e29823c1444059edc1299e2f8509dda4c39008', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '4292a849e82b83570b18b95e3cbdf05af0a4e170', class: "modal-shadow" }), hAsync("div", Object.assign({ key: 'd3131150733c13cd6658545207e4ab49094672b7',
26355
26418
  /*
26356
26419
  role and aria-modal must be used on the
26357
26420
  same element. They must also be set inside the
26358
26421
  shadow DOM otherwise ion-button will not be highlighted
26359
26422
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
26360
26423
  */
26361
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'd1882835cc049232c0d957e3ba1e79676a07d179', class: "modal-handle",
26424
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '3da13bff87602c8c0aa8e3db54375b40d96d3b83', class: "modal-handle",
26362
26425
  // Prevents the handle from receiving keyboard focus when it does not cycle
26363
- 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: '81dc58b09cf7d7022b04cd170f53113604364d5e', onSlotchange: this.onSlotChange }))));
26426
+ 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: '73b22a4eb7ca2e499b9f843b66751a1dbfef69a9', onSlotchange: this.onSlotChange }))));
26364
26427
  }
26365
26428
  get el() { return getElement(this); }
26366
26429
  static get watchers() { return {
package/hydrate/index.mjs CHANGED
@@ -10143,6 +10143,7 @@ class Alert {
10143
10143
  this.customHTMLEnabled = config.get('innerHTMLTemplatesEnabled', ENABLE_HTML_CONTENT_DEFAULT);
10144
10144
  this.processedInputs = [];
10145
10145
  this.processedButtons = [];
10146
+ this.isButtonGroupWrapped = false;
10146
10147
  this.presented = false;
10147
10148
  /** @internal */
10148
10149
  this.hasController = false;
@@ -10267,6 +10268,13 @@ class Alert {
10267
10268
  this.processedButtons = buttons.map((btn) => {
10268
10269
  return typeof btn === 'string' ? { text: btn, role: btn.toLowerCase() === 'cancel' ? 'cancel' : undefined } : btn;
10269
10270
  });
10271
+ /**
10272
+ * Reset wrap state so the new button set can be re-evaluated. Without this,
10273
+ * a previously-latched vertical layout would persist even if the new buttons
10274
+ * fit horizontally.
10275
+ */
10276
+ this.isButtonGroupWrapped = false;
10277
+ this.checkButtonGroupWrap();
10270
10278
  }
10271
10279
  inputsChanged() {
10272
10280
  const inputs = this.inputs;
@@ -10307,6 +10315,12 @@ class Alert {
10307
10315
  connectedCallback() {
10308
10316
  prepareOverlay(this.el);
10309
10317
  this.triggerChanged();
10318
+ /**
10319
+ * If the alert was previously connected and is being reattached, the
10320
+ * ResizeObserver was disconnected. componentDidLoad only fires once per
10321
+ * instance, so re-establish the observer here on reconnect.
10322
+ */
10323
+ this.setupButtonGroupResizeObserver();
10310
10324
  }
10311
10325
  componentWillLoad() {
10312
10326
  var _a;
@@ -10317,11 +10331,14 @@ class Alert {
10317
10331
  this.buttonsChanged();
10318
10332
  }
10319
10333
  disconnectedCallback() {
10334
+ var _a;
10320
10335
  this.triggerController.removeClickListener();
10321
10336
  if (this.gesture) {
10322
10337
  this.gesture.destroy();
10323
10338
  this.gesture = undefined;
10324
10339
  }
10340
+ (_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
10341
+ this.buttonGroupResizeObserver = undefined;
10325
10342
  }
10326
10343
  componentDidLoad() {
10327
10344
  /**
@@ -10334,6 +10351,7 @@ class Alert {
10334
10351
  this.gesture = createButtonActiveGesture(this.wrapperEl, (refEl) => refEl.classList.contains('alert-button'));
10335
10352
  this.gesture.enable(true);
10336
10353
  }
10354
+ this.setupButtonGroupResizeObserver();
10337
10355
  /**
10338
10356
  * If alert was rendered with isOpen="true"
10339
10357
  * then we should open alert immediately.
@@ -10523,14 +10541,58 @@ class Alert {
10523
10541
  }
10524
10542
  })));
10525
10543
  }
10544
+ setupButtonGroupResizeObserver() {
10545
+ var _a;
10546
+ /**
10547
+ * Re-evaluate vertical layout when the button group resizes so a 2-button
10548
+ * group with long text wraps cleanly instead of leaving a stray right-edge
10549
+ * border on the first button.
10550
+ */
10551
+ if (!this.buttonGroupEl || typeof ResizeObserver === 'undefined') {
10552
+ return;
10553
+ }
10554
+ (_a = this.buttonGroupResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
10555
+ this.buttonGroupResizeObserver = new ResizeObserver(() => this.checkButtonGroupWrap());
10556
+ this.buttonGroupResizeObserver.observe(this.buttonGroupEl);
10557
+ this.checkButtonGroupWrap();
10558
+ }
10559
+ checkButtonGroupWrap() {
10560
+ /**
10561
+ * Defer the layout read out of the ResizeObserver callback so we don't
10562
+ * force synchronous layout and avoid "ResizeObserver loop" warnings when
10563
+ * applying the vertical-layout class itself triggers another resize.
10564
+ */
10565
+ raf(() => {
10566
+ /**
10567
+ * Bail if the alert was disconnected after this raf was queued.
10568
+ * `buttonGroupEl` persists across disconnect so the observer can be
10569
+ * re-attached on reconnect; the observer reference is the disconnect
10570
+ * sentinel.
10571
+ */
10572
+ if (!this.buttonGroupResizeObserver) {
10573
+ return;
10574
+ }
10575
+ const groupEl = this.buttonGroupEl;
10576
+ if (!groupEl) {
10577
+ return;
10578
+ }
10579
+ const buttons = Array.from(groupEl.querySelectorAll('.alert-button'));
10580
+ if (buttons.length < 2) {
10581
+ this.isButtonGroupWrapped = false;
10582
+ return;
10583
+ }
10584
+ const firstTop = buttons[0].offsetTop;
10585
+ this.isButtonGroupWrapped = buttons.some((btn) => btn.offsetTop !== firstTop);
10586
+ });
10587
+ }
10526
10588
  renderAlertButtons() {
10527
10589
  const buttons = this.processedButtons;
10528
10590
  const mode = getIonMode$1(this);
10529
10591
  const alertButtonGroupClass = {
10530
10592
  'alert-button-group': true,
10531
- 'alert-button-group-vertical': buttons.length > 2,
10593
+ 'alert-button-group-vertical': buttons.length > 2 || this.isButtonGroupWrapped,
10532
10594
  };
10533
- return (hAsync("div", { class: alertButtonGroupClass }, buttons.map((button) => (hAsync("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass$2(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), hAsync("span", { class: "alert-button-inner" }, button.text), mode === 'md' && hAsync("ion-ripple-effect", null))))));
10595
+ return (hAsync("div", { class: alertButtonGroupClass, ref: (el) => (this.buttonGroupEl = el) }, buttons.map((button) => (hAsync("button", Object.assign({}, button.htmlAttributes, { type: "button", id: button.id, class: buttonClass$2(button), tabIndex: 0, onClick: () => this.buttonClick(button) }), hAsync("span", { class: "alert-button-inner" }, button.text), mode === 'md' && hAsync("ion-ripple-effect", null))))));
10534
10596
  }
10535
10597
  renderAlertMessage(msgId) {
10536
10598
  const { customHTMLEnabled, message } = this;
@@ -10553,9 +10615,9 @@ class Alert {
10553
10615
  * If neither are defined, do not set aria-labelledby.
10554
10616
  */
10555
10617
  const ariaLabelledBy = header && subHeader ? `${hdrId} ${subHdrId}` : header ? hdrId : subHeader ? subHdrId : null;
10556
- return (hAsync(Host, { key: '6025440b9cd369d4fac89e7e4296c84a10a0b8e0', tabindex: "-1", style: {
10618
+ return (hAsync(Host, { key: '8d54ccd725ea634be080e67b56fa5efe498f496c', tabindex: "-1", style: {
10557
10619
  zIndex: `${20000 + overlayIndex}`,
10558
- }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: '3cd5ca8b99cb95b11dd22ab41a820d841142896f', tappable: this.backdropDismiss }), hAsync("div", { key: '4cc62ae6e21424057d22aeef1e8fc77011e77cd5', tabindex: "0", "aria-hidden": "true" }), hAsync("div", Object.assign({ key: '364057a69f25aa88904df17bdcf7e5bf714e7830', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), hAsync("div", { key: '78694e3c0db2d408df3899fb1a90859bcc8d14cc', class: "alert-head" }, header && (hAsync("h2", { key: 'ec88ff3e4e1ea871b5975133fdcf4cac38b05e0f', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '9b09bc8bb68af255ef8b7d22587acc946148e544', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '99abe815f75d2df7f1b77c0df9f3436724fea76f', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: 'a43d0c22c0e46b1ef911f92ffeb253d7911b85f7', tabindex: "0", "aria-hidden": "true" })));
10620
+ }, class: Object.assign(Object.assign({}, getClassMap(this.cssClass)), { [mode]: true, 'overlay-hidden': true, 'alert-translucent': this.translucent }), onIonAlertWillDismiss: this.dispatchCancelHandler, onIonBackdropTap: this.onBackdropTap }, hAsync("ion-backdrop", { key: '05a238583342285545587de9dce144a82d779193', tappable: this.backdropDismiss }), hAsync("div", { key: 'e52c53fd9845e66781af01b2a788a291b45a927c', tabindex: "0", "aria-hidden": "true" }), hAsync("div", Object.assign({ key: '8417e52eebca24ff436fab0703666db51072f980', class: "alert-wrapper ion-overlay-wrapper", role: role, "aria-modal": "true", "aria-labelledby": ariaLabelledBy, "aria-describedby": message !== undefined ? msgId : null, tabindex: "0", ref: (el) => (this.wrapperEl = el) }, htmlAttributes), hAsync("div", { key: '5c560d4800b24d41961423718108b54be6cd6f91', class: "alert-head" }, header && (hAsync("h2", { key: '8637b64cd5125b2258115d1c11f3743113658608', id: hdrId, class: "alert-title" }, header)), subHeader && !header && (hAsync("h2", { key: '7a4e61a02c29b16b336d8acaf6569b30de6fe71e', id: subHdrId, class: "alert-sub-title" }, subHeader)), subHeader && header && (hAsync("h3", { key: '30844b6a0a7e3dab46514cd548ecffa86dcd59cb', id: subHdrId, class: "alert-sub-title" }, subHeader))), this.renderAlertMessage(msgId), this.renderAlertInputs(), this.renderAlertButtons()), hAsync("div", { key: '39c824fee1e60ad8d6234c79d22ceb8bba8004af', tabindex: "0", "aria-hidden": "true" })));
10559
10621
  }
10560
10622
  get el() { return getElement(this); }
10561
10623
  static get watchers() { return {
@@ -10598,6 +10660,7 @@ class Alert {
10598
10660
  "htmlAttributes": [16],
10599
10661
  "isOpen": [4, "is-open"],
10600
10662
  "trigger": [1],
10663
+ "isButtonGroupWrapped": [32],
10601
10664
  "present": [64],
10602
10665
  "dismiss": [64],
10603
10666
  "onDidDismiss": [64],
@@ -12365,7 +12428,7 @@ const isRTL$1 = (hostEl) => {
12365
12428
  return (document === null || document === void 0 ? void 0 : document.dir.toLowerCase()) === 'rtl';
12366
12429
  };
12367
12430
 
12368
- const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--ion-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
12431
+ const contentCss = () => `:host{--background:var(--ion-background-color, #fff);--color:var(--ion-text-color, #000);--padding-top:0px;--padding-bottom:0px;--padding-start:0px;--padding-end:0px;--keyboard-offset:0px;--offset-top:0px;--offset-bottom:0px;--overflow:auto;display:block;position:relative;-ms-flex:1;flex:1;width:100%;height:100%;margin:0 !important;padding:0 !important;font-family:var(--ion-font-family, inherit);contain:size style}:host(.ion-color) .inner-scroll{background:var(--ion-color-base);color:var(--ion-color-contrast)}#background-content{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);position:absolute;background:var(--background)}.inner-scroll{left:0px;right:0px;top:calc(var(--offset-top) * -1);bottom:calc(var(--offset-bottom) * -1);-webkit-padding-start:var(--padding-start);padding-inline-start:var(--padding-start);-webkit-padding-end:var(--padding-end);padding-inline-end:var(--padding-end);padding-top:calc(var(--padding-top) + var(--offset-top));padding-bottom:calc(var(--padding-bottom) + var(--keyboard-offset) + var(--offset-bottom) + var(--internal-content-safe-area-padding-bottom, 0px));position:absolute;color:var(--color);-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;-ms-touch-action:pan-x pan-y pinch-zoom;touch-action:pan-x pan-y pinch-zoom}.scroll-y,.scroll-x{-webkit-overflow-scrolling:touch;z-index:0;will-change:scroll-position}.scroll-y{overflow-y:var(--overflow);overscroll-behavior-y:contain}.scroll-x{overflow-x:var(--overflow);overscroll-behavior-x:contain}.overscroll::before,.overscroll::after{position:absolute;width:1px;height:1px;content:""}.overscroll::before{bottom:-1px}.overscroll::after{top:-1px}:host(.content-sizing){display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-height:0;contain:none}:host(.content-sizing) .inner-scroll{position:relative;top:0;bottom:0;margin-top:calc(var(--offset-top) * -1);margin-bottom:calc(var(--offset-bottom) * -1)}.transition-effect{display:none;position:absolute;width:100%;height:100vh;opacity:0;pointer-events:none}:host(.content-ltr) .transition-effect{left:-100%;}:host(.content-rtl) .transition-effect{right:-100%;}.transition-cover{position:absolute;right:0;width:100%;height:100%;background:black;opacity:0.1}.transition-shadow{display:block;position:absolute;width:100%;height:100%;-webkit-box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03);box-shadow:inset -9px 0 9px 0 rgba(0, 0, 100, 0.03)}:host(.content-ltr) .transition-shadow{right:0;}:host(.content-rtl) .transition-shadow{left:0;-webkit-transform:scaleX(-1);transform:scaleX(-1)}::slotted([slot=fixed]){position:absolute;-webkit-transform:translateZ(0);transform:translateZ(0)}`;
12369
12432
 
12370
12433
  /**
12371
12434
  * @slot - Content is placed in the scrollable area if provided without a slot.
@@ -26271,12 +26334,12 @@ class Modal {
26271
26334
  this.applyFullscreenSafeAreaTo(contentEl, hasFooter);
26272
26335
  }
26273
26336
  /**
26274
- * Sets --ion-content-safe-area-padding-bottom on the given ion-content
26337
+ * Sets --internal-content-safe-area-padding-bottom on the given ion-content
26275
26338
  * when no footer is present, so ion-content's .inner-scroll includes
26276
26339
  * safe-area-bottom in its scroll padding. This keeps the modal background
26277
26340
  * edge-to-edge while ensuring content scrolls clear of the system nav bar.
26278
26341
  *
26279
- * --ion-content-safe-area-padding-bottom is an internal CSS property used
26342
+ * --internal-content-safe-area-padding-bottom is an internal CSS property used
26280
26343
  * only by this code path. It is not part of ion-content's public API and
26281
26344
  * should not be set by consumers. The default of 0px makes it a no-op
26282
26345
  * when unset, which is the expected state for ion-content used outside of
@@ -26288,17 +26351,17 @@ class Modal {
26288
26351
  // padding. Custom modals with raw HTML are developer-controlled.
26289
26352
  if (!contentEl || hasFooter)
26290
26353
  return;
26291
- contentEl.style.setProperty('--ion-content-safe-area-padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
26354
+ contentEl.style.setProperty('--internal-content-safe-area-padding-bottom', 'var(--ion-safe-area-bottom, 0px)');
26292
26355
  }
26293
26356
  /**
26294
- * Removes the internal --ion-content-safe-area-padding-bottom property
26357
+ * Removes the internal --internal-content-safe-area-padding-bottom property
26295
26358
  * from an already-located ion-content. Callers do their own
26296
26359
  * findContentAndFooter() so they can also read hasFooter if needed.
26297
26360
  */
26298
26361
  clearContentSafeAreaPadding(contentEl) {
26299
26362
  if (!contentEl)
26300
26363
  return;
26301
- contentEl.style.removeProperty('--ion-content-safe-area-padding-bottom');
26364
+ contentEl.style.removeProperty('--internal-content-safe-area-padding-bottom');
26302
26365
  }
26303
26366
  /**
26304
26367
  * Finds ion-content and ion-footer among direct children and one level of
@@ -26345,20 +26408,20 @@ class Modal {
26345
26408
  const isCardModal = presentingElement !== undefined && mode === 'ios';
26346
26409
  const isHandleCycle = handleBehavior === 'cycle';
26347
26410
  const isSheetModalWithHandle = isSheetModal && showHandle;
26348
- return (hAsync(Host, Object.assign({ key: '4bf38aa67df9a3f977163bba5423960bbafd16de', "no-router": true,
26411
+ return (hAsync(Host, Object.assign({ key: 'd6a271ace939c33703966a1425ab32b7a30bf246', "no-router": true,
26349
26412
  // Allow the modal to be navigable when the handle is focusable
26350
26413
  tabIndex: isHandleCycle && isSheetModalWithHandle ? 0 : -1 }, htmlAttributes, { style: {
26351
26414
  zIndex: `${20000 + this.overlayIndex}`,
26352
- }, 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: '866da40cc5fc8d3e36637098fb3066a5bc9f4e0f', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '5a2a05514ea8592c8feb0465e504aa7c7af17963', class: "modal-shadow" }), hAsync("div", Object.assign({ key: '4d327115306451f57d190b06ab8cbb6191a6f1d7',
26415
+ }, 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: '51e29823c1444059edc1299e2f8509dda4c39008', ref: (el) => (this.backdropEl = el), visible: this.showBackdrop, tappable: this.backdropDismiss, part: "backdrop" }), mode === 'ios' && hAsync("div", { key: '4292a849e82b83570b18b95e3cbdf05af0a4e170', class: "modal-shadow" }), hAsync("div", Object.assign({ key: 'd3131150733c13cd6658545207e4ab49094672b7',
26353
26416
  /*
26354
26417
  role and aria-modal must be used on the
26355
26418
  same element. They must also be set inside the
26356
26419
  shadow DOM otherwise ion-button will not be highlighted
26357
26420
  when using VoiceOver: https://bugs.webkit.org/show_bug.cgi?id=247134
26358
26421
  */
26359
- role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: 'd1882835cc049232c0d957e3ba1e79676a07d179', class: "modal-handle",
26422
+ role: "dialog" }, inheritedAttributes, { "aria-modal": "true", class: "modal-wrapper ion-overlay-wrapper", part: "content", ref: (el) => (this.wrapperEl = el) }), showHandle && (hAsync("button", { key: '3da13bff87602c8c0aa8e3db54375b40d96d3b83', class: "modal-handle",
26360
26423
  // Prevents the handle from receiving keyboard focus when it does not cycle
26361
- 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: '81dc58b09cf7d7022b04cd170f53113604364d5e', onSlotchange: this.onSlotChange }))));
26424
+ 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: '73b22a4eb7ca2e499b9f843b66751a1dbfef69a9', onSlotchange: this.onSlotChange }))));
26362
26425
  }
26363
26426
  get el() { return getElement(this); }
26364
26427
  static get watchers() { return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "voyager-ionic-core",
3
- "version": "8.8.6",
3
+ "version": "8.8.8",
4
4
  "description": "Base components for Ionic",
5
5
  "engines": {
6
6
  "node": ">= 16"
@@ -39,14 +39,14 @@
39
39
  "tslib": "^2.1.0"
40
40
  },
41
41
  "devDependencies": {
42
- "@axe-core/playwright": "^4.11.1",
42
+ "@axe-core/playwright": "^4.11.3",
43
43
  "@capacitor/core": "^8.0.0",
44
44
  "@capacitor/haptics": "^8.0.0",
45
45
  "@capacitor/keyboard": "^8.0.0",
46
46
  "@capacitor/status-bar": "^8.0.0",
47
47
  "@ionic/eslint-config": "^0.3.0",
48
48
  "@ionic/prettier-config": "^2.0.0",
49
- "@playwright/test": "^1.58.2",
49
+ "@playwright/test": "^1.59.1",
50
50
  "@rollup/plugin-node-resolve": "^8.4.0",
51
51
  "@rollup/plugin-virtual": "^2.0.3",
52
52
  "@stencil/angular-output-target": "^0.10.0",
@@ -67,7 +67,7 @@
67
67
  "fs-extra": "^9.0.1",
68
68
  "jest": "^29.7.0",
69
69
  "jest-cli": "^29.7.0",
70
- "playwright-core": "^1.58.2",
70
+ "playwright-core": "^1.59.1",
71
71
  "prettier": "^2.6.1",
72
72
  "rollup": "^2.26.4",
73
73
  "sass": "^1.33.0",