@ionic/core 8.8.16-dev.11784841344.1aa1a41c → 8.8.16-dev.11784914346.10d0804c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/ion-accordion.js +1 -1
- package/components/ion-action-sheet.js +1 -1
- package/components/ion-alert.js +1 -1
- package/components/ion-avatar.js +1 -1
- package/components/ion-back-button.js +1 -1
- package/components/ion-badge.js +1 -1
- package/components/ion-breadcrumb.js +1 -1
- package/components/ion-button.js +1 -1
- package/components/ion-buttons.js +1 -1
- package/components/ion-content.js +1 -1
- package/components/ion-datetime.js +1 -1
- package/components/ion-fab-button.js +1 -1
- package/components/ion-footer.js +1 -1
- package/components/ion-header.js +1 -1
- package/components/ion-icon.js +1 -1
- package/components/ion-input-password-toggle.js +1 -1
- package/components/ion-input.js +1 -1
- package/components/ion-item-option.js +1 -1
- package/components/ion-item.js +1 -1
- package/components/ion-menu-button.js +1 -1
- package/components/ion-refresher-content.js +1 -1
- package/components/ion-reorder.js +1 -1
- package/components/ion-searchbar.js +1 -1
- package/components/ion-segment-button.js +1 -1
- package/components/ion-select-modal.js +1 -1
- package/components/ion-select-popover.js +1 -1
- package/components/ion-select.js +1 -1
- package/components/ion-tab-bar.js +1 -1
- package/components/ion-tab-button.js +1 -1
- package/components/ion-title.js +1 -1
- package/components/ion-toast.js +1 -1
- package/components/ion-toggle.js +1 -1
- package/components/{p-DiKh2eQw.js → p-4u9RNymb.js} +1 -1
- package/components/{p-B8KYxaMx.js → p-B8xhFBOE.js} +1 -1
- package/components/p-BAnNwWMA.js +4 -0
- package/components/p-BYZR_5L4.js +4 -0
- package/components/p-B_zaqq5F.js +4 -0
- package/components/p-CO9VfZyc.js +4 -0
- package/components/p-Cjx0xPoU.js +4 -0
- package/components/p-CyWeCU8e.js +4 -0
- package/components/p-DRnK3A-V.js +4 -0
- package/components/p-DcVqGRkT.js +4 -0
- package/components/p-Dght1fh7.js +4 -0
- package/components/p-GpxJMpJu.js +4 -0
- package/dist/cjs/{index-Cu9JNpPi.js → index-CgAbCW6L.js} +1 -1
- package/dist/cjs/ion-accordion_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-action-sheet.cjs.entry.js +3 -3
- package/dist/cjs/ion-alert.cjs.entry.js +3 -3
- package/dist/cjs/ion-app_8.cjs.entry.js +194 -65
- package/dist/cjs/ion-avatar_3.cjs.entry.js +4 -4
- package/dist/cjs/ion-back-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-breadcrumb_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-button_2.cjs.entry.js +3 -3
- package/dist/cjs/ion-datetime_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-fab_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-input-password-toggle.cjs.entry.js +1 -1
- package/dist/cjs/ion-input.cjs.entry.js +4 -4
- package/dist/cjs/ion-item-option_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-item_8.cjs.entry.js +1 -1
- package/dist/cjs/ion-menu_3.cjs.entry.js +1 -1
- package/dist/cjs/ion-refresher_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-reorder_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-searchbar.cjs.entry.js +2 -2
- package/dist/cjs/ion-segment_2.cjs.entry.js +1 -1
- package/dist/cjs/ion-select-modal.cjs.entry.js +4 -4
- package/dist/cjs/ion-select_3.cjs.entry.js +5 -5
- package/dist/cjs/ion-tab-bar_2.cjs.entry.js +78 -80
- package/dist/cjs/ion-toggle.cjs.entry.js +1 -1
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/scroll-hide-controller-G9HOmmhN.js +345 -0
- package/dist/collection/components/action-sheet/action-sheet.ionic.css +2 -5
- package/dist/collection/components/action-sheet/action-sheet.ios.css +2 -1
- package/dist/collection/components/action-sheet/action-sheet.md.css +2 -1
- package/dist/collection/components/alert/alert.ionic.css +2 -5
- package/dist/collection/components/alert/alert.ios.css +2 -1
- package/dist/collection/components/alert/alert.md.css +2 -1
- package/dist/collection/components/avatar/avatar.ionic.css +12 -6
- package/dist/collection/components/badge/badge.ionic.css +6 -3
- package/dist/collection/components/badge/badge.ios.css +4 -2
- package/dist/collection/components/badge/badge.md.css +2 -1
- package/dist/collection/components/button/button.ionic.css +4 -2
- package/dist/collection/components/buttons/buttons.ionic.css +1 -1
- package/dist/collection/components/content/content.css +39 -0
- package/dist/collection/components/footer/footer-interface.js +1 -0
- package/dist/collection/components/footer/footer.ios.css +19 -4
- package/dist/collection/components/footer/footer.js +102 -15
- package/dist/collection/components/footer/footer.md.css +28 -0
- package/dist/collection/components/header/header-interface.js +1 -0
- package/dist/collection/components/header/header.ionic.css +153 -0
- package/dist/collection/components/header/header.ios.css +153 -123
- package/dist/collection/components/header/header.js +139 -28
- package/dist/collection/components/header/header.md.css +176 -1
- package/dist/collection/components/header/header.utils.js +6 -13
- package/dist/collection/components/input/input.ionic.css +2 -1
- package/dist/collection/components/input/input.ios.css +2 -1
- package/dist/collection/components/input/input.md.css +2 -1
- package/dist/collection/components/item-option/item-option.ionic.css +2 -1
- package/dist/collection/components/searchbar/searchbar.ionic.css +6 -2
- package/dist/collection/components/segment-button/segment-button.ionic.css +2 -1
- package/dist/collection/components/select/select.ionic.css +2 -1
- package/dist/collection/components/select-modal/select-modal.ionic.css +2 -5
- package/dist/collection/components/select-modal/select-modal.ios.css +2 -1
- package/dist/collection/components/select-modal/select-modal.md.css +2 -1
- package/dist/collection/components/select-popover/select-popover.ionic.css +2 -5
- package/dist/collection/components/select-popover/select-popover.ios.css +2 -1
- package/dist/collection/components/select-popover/select-popover.md.css +2 -1
- package/dist/collection/components/tab-bar/tab-bar.ionic.css +25 -3
- package/dist/collection/components/tab-bar/tab-bar.ios.css +15 -0
- package/dist/collection/components/tab-bar/tab-bar.js +94 -88
- package/dist/collection/components/tab-bar/tab-bar.md.css +15 -0
- package/dist/collection/components/tab-button/tab-button.ionic.css +2 -1
- package/dist/collection/components/title/title.md.css +7 -0
- package/dist/collection/utils/scroll-hide-controller.js +178 -0
- package/dist/docs.json +144 -32
- package/dist/esm/{index-1y3VhUSy.js → index-D2tu5BUg.js} +1 -1
- package/dist/esm/ion-accordion_2.entry.js +1 -1
- package/dist/esm/ion-action-sheet.entry.js +3 -3
- package/dist/esm/ion-alert.entry.js +3 -3
- package/dist/esm/ion-app_8.entry.js +194 -65
- package/dist/esm/ion-avatar_3.entry.js +4 -4
- package/dist/esm/ion-back-button.entry.js +1 -1
- package/dist/esm/ion-breadcrumb_2.entry.js +1 -1
- package/dist/esm/ion-button_2.entry.js +3 -3
- package/dist/esm/ion-datetime_3.entry.js +1 -1
- package/dist/esm/ion-fab_3.entry.js +1 -1
- package/dist/esm/ion-input-password-toggle.entry.js +1 -1
- package/dist/esm/ion-input.entry.js +4 -4
- package/dist/esm/ion-item-option_3.entry.js +1 -1
- package/dist/esm/ion-item_8.entry.js +1 -1
- package/dist/esm/ion-menu_3.entry.js +1 -1
- package/dist/esm/ion-refresher_2.entry.js +1 -1
- package/dist/esm/ion-reorder_2.entry.js +1 -1
- package/dist/esm/ion-searchbar.entry.js +2 -2
- package/dist/esm/ion-segment_2.entry.js +1 -1
- package/dist/esm/ion-select-modal.entry.js +4 -4
- package/dist/esm/ion-select_3.entry.js +5 -5
- package/dist/esm/ion-tab-bar_2.entry.js +79 -81
- package/dist/esm/ion-toggle.entry.js +1 -1
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/scroll-hide-controller-CUNW7EpD.js +342 -0
- package/dist/html.html-data.json +36 -4
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-07bd8446.entry.js +4 -0
- package/dist/ionic/p-103e1d9f.entry.js +4 -0
- package/dist/ionic/{p-eeb7b373.entry.js → p-18bc4f2d.entry.js} +1 -1
- package/dist/ionic/p-248265c2.entry.js +4 -0
- package/dist/ionic/{p-fb457fdd.entry.js → p-3bc5b5e9.entry.js} +1 -1
- package/dist/ionic/{p-42a882b7.entry.js → p-43b00c5b.entry.js} +1 -1
- package/dist/ionic/{p-d0f253fc.entry.js → p-56224b93.entry.js} +1 -1
- package/dist/ionic/p-5732396e.entry.js +4 -0
- package/dist/ionic/{p-b3d04a86.entry.js → p-58d8877d.entry.js} +1 -1
- package/dist/ionic/{p-9e9be378.entry.js → p-5d079dc1.entry.js} +1 -1
- package/dist/ionic/{p-d0dfc9a3.entry.js → p-5e9665dd.entry.js} +1 -1
- package/dist/ionic/{p-7b2fe639.entry.js → p-5fee5cc1.entry.js} +1 -1
- package/dist/ionic/p-64734604.entry.js +4 -0
- package/dist/ionic/p-69feeff9.entry.js +4 -0
- package/dist/ionic/p-83acfa2d.entry.js +4 -0
- package/dist/ionic/{p-f692219d.entry.js → p-849b1759.entry.js} +1 -1
- package/dist/ionic/{p-a09c7a4c.entry.js → p-86f040e0.entry.js} +1 -1
- package/dist/ionic/p-8cb23f27.entry.js +4 -0
- package/dist/ionic/p-C1I_d964.js +4 -0
- package/dist/ionic/p-b97778f5.entry.js +4 -0
- package/dist/ionic/p-be9db7e8.entry.js +4 -0
- package/dist/ionic/{p-2fba8f15.entry.js → p-c04429f2.entry.js} +1 -1
- package/dist/ionic/p-c25a2a9b.entry.js +4 -0
- package/dist/ionic/{p-a797625e.entry.js → p-d272ff4f.entry.js} +1 -1
- package/dist/types/components/footer/footer-interface.d.ts +1 -0
- package/dist/types/components/footer/footer.d.ts +16 -0
- package/dist/types/components/header/header-interface.d.ts +1 -0
- package/dist/types/components/header/header.d.ts +17 -0
- package/dist/types/components/header/header.utils.d.ts +4 -5
- package/dist/types/components/tab-bar/tab-bar-interface.d.ts +1 -0
- package/dist/types/components/tab-bar/tab-bar.d.ts +17 -14
- package/dist/types/components.d.ts +37 -13
- package/dist/types/utils/scroll-hide-controller.d.ts +56 -0
- package/hydrate/index.js +477 -175
- package/hydrate/index.mjs +477 -175
- package/package.json +2 -2
- package/components/p-BZwQa9ey.js +0 -4
- package/components/p-CJCMdFb9.js +0 -4
- package/components/p-Ck_9SoHZ.js +0 -4
- package/components/p-CmnPD02Z.js +0 -4
- package/components/p-D-Xa9lMG.js +0 -4
- package/components/p-DFSqPtzD.js +0 -4
- package/components/p-NPsFR8Ng.js +0 -4
- package/components/p-U2gyA6Z0.js +0 -4
- package/components/p-q8wGOPJB.js +0 -4
- package/dist/cjs/keyboard-controller-CefyW9lm.js +0 -169
- package/dist/esm/keyboard-controller-BFwRdk2T.js +0 -167
- package/dist/ionic/p-0c4d9d7c.entry.js +0 -4
- package/dist/ionic/p-40dc9dbd.entry.js +0 -4
- package/dist/ionic/p-54419365.entry.js +0 -4
- package/dist/ionic/p-6293e9f1.entry.js +0 -4
- package/dist/ionic/p-7de397c7.entry.js +0 -4
- package/dist/ionic/p-8cf82b85.entry.js +0 -4
- package/dist/ionic/p-MqqcZQSB.js +0 -4
- package/dist/ionic/p-a6e04ca3.entry.js +0 -4
- package/dist/ionic/p-a6fe63f0.entry.js +0 -4
- package/dist/ionic/p-b275f17e.entry.js +0 -4
- package/dist/ionic/p-c5635175.entry.js +0 -4
- package/dist/ionic/p-dc8e0b91.entry.js +0 -4
- /package/components/{p-J03hHbbL.js → p-BaPtaYEC.js} +0 -0
- /package/dist/ionic/{p-1y3VhUSy.js → p-D2tu5BUg.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* (C) Ionic http://ionicframework.com - MIT License
|
|
3
3
|
*/
|
|
4
|
-
import{r as e,c as t,e as i,j as n,h as o,d as r,g as a}from"./p-C0EQceqV.js";import{g as s}from"./p-hHmYLOfE.js";import{o as d,B as h,n as l,q as m,G as p}from"./p-Dy243NXW.js";import{G as c}from"./p-BTEOs1at.js";import{b as u,a as b,c as f,s as g}from"./p-CnAWnbNK.js";import{p as v,i as x,l as w,e as k}from"./p-CEkwLb3L.js";import{m as y}from"./p-CB91Gr9M.js";import{h as z,c as C}from"./p-DaJxRxSQ.js";import{l as j}from"./p-Dhi5xtNS.js";import{u as S,v as A}from"./p-1y3VhUSy.js";import"./p-lMb_45ax.js";import"./p-vXpMhGrs.js";import"./p-CJsJQPQD.js";const E=class{constructor(i){e(this,i),this.ionWillOpen=t(this,"ionWillOpen",7),this.ionWillClose=t(this,"ionWillClose",7),this.ionDidOpen=t(this,"ionDidOpen",7),this.ionDidClose=t(this,"ionDidClose",7),this.ionMenuChange=t(this,"ionMenuChange",7),this.lastOnEnd=0,this.blocker=c.createBlocker({disableScroll:!0}),this.didLoad=!1,this.operationCancelled=!1,this.isAnimating=!1,this._isOpen=!1,this.inheritedAttributes={},this.handleFocus=e=>{const t=d(document);t&&!t.contains(this.el)||this.trapKeyboardFocus(e,document)},this.isPaneVisible=!1,this.isEndSide=!1,this.disabled=!1,this.side="start",this.swipeGesture=!0,this.maxEdgeStart=50}typeChanged(e,t){const i=this.contentEl;i&&(void 0!==t&&i.classList.remove(`menu-content-${t}`),i.classList.add(`menu-content-${e}`),i.removeAttribute("style")),this.menuInnerEl&&this.menuInnerEl.removeAttribute("style"),this.animation=void 0}disabledChanged(){this.updateState(),this.ionMenuChange.emit({disabled:this.disabled,open:this._isOpen})}sideChanged(){this.isEndSide=v(this.side),this.animation=void 0}swipeGestureChanged(){this.updateState()}async connectedCallback(){"undefined"!=typeof customElements&&null!=customElements&&await customElements.whenDefined("ion-menu"),void 0===this.type&&(this.type=i.get("menuType","overlay"));const e=void 0!==this.contentId?document.getElementById(this.contentId):null;null!==e?(this.el.contains(e)&&n('[ion-menu] - The "contentId" should refer to the main view\'s ion-content, not the ion-content inside of the ion-menu.'),this.contentEl=e,e.classList.add("menu-content"),this.typeChanged(this.type,void 0),this.sideChanged(),y._register(this),this.menuChanged(),this.gesture=(await import("./p-Cl0B-RWe.js")).createGesture({el:document,gestureName:"menu-swipe",gesturePriority:30,threshold:10,blurOnStart:!0,canStart:e=>this.canStart(e),onWillStart:()=>this.onWillStart(),onStart:()=>this.onStart(),onMove:e=>this.onMove(e),onEnd:e=>this.onEnd(e)}),this.updateState()):n('[ion-menu] - Must have a "content" element to listen for drag events on.')}componentWillLoad(){this.inheritedAttributes=x(this.el)}async componentDidLoad(){this.didLoad=!0;const e=this.el.closest("ion-split-pane");null!==e&&(this.isPaneVisible=await e.isVisible()),this.menuChanged(),this.updateState()}menuChanged(){this.didLoad&&this.ionMenuChange.emit({disabled:this.disabled,open:this._isOpen})}async disconnectedCallback(){await this.close(!1),this.blocker.destroy(),y._unregister(this),this.animation&&this.animation.destroy(),this.gesture&&(this.gesture.destroy(),this.gesture=void 0),this.animation=void 0,this.contentEl=void 0}onSplitPaneChanged(e){const t=this.el.closest("ion-split-pane");null!==t&&t===e.target&&(this.isPaneVisible=e.detail.visible,this.updateState())}onBackdropClick(e){this._isOpen&&this.lastOnEnd<e.timeStamp-100&&e.composedPath&&!e.composedPath().includes(this.menuInnerEl)&&(e.preventDefault(),e.stopPropagation(),this.close(void 0,h))}onKeydown(e){"Escape"===e.key&&this.close(void 0,h)}isOpen(){return Promise.resolve(this._isOpen)}isActive(){return Promise.resolve(this._isActive())}open(e=!0){return this.setOpen(!0,e)}close(e=!0,t){return this.setOpen(!1,e,t)}toggle(e=!0){return this.setOpen(!this._isOpen,e)}setOpen(e,t=!0,i){var n;return null===(n=document.activeElement)||void 0===n||n.blur(),y._setOpen(this,e,t,i)}trapKeyboardFocus(e,t){const i=e.target;if(i)if(this.el.contains(i))this.lastFocus=i;else{const{el:e}=this;l(e),this.lastFocus===t.activeElement&&m(e)}}async _setOpen(e,t=!0,i){return!(!this._isActive()||this.isAnimating||e===this._isOpen||(this.beforeAnimation(e,i),await this.loadAnimation(),await this.startAnimation(e,t),this.operationCancelled?(this.operationCancelled=!1,1):(this.afterAnimation(e,i),0)))}async loadAnimation(){const e=this.menuInnerEl.offsetWidth,t=v(this.side);if(e===this.width&&void 0!==this.animation&&t===this.isEndSide)return;this.width=e,this.isEndSide=t,this.animation&&(this.animation.destroy(),this.animation=void 0);const n=this.animation=await y._createAnimation(this.type,this);i.getBoolean("animated",!0)||n.duration(0),n.fill("both")}async startAnimation(e,t){const i=!e,n=u(this),o="ios"===n?"cubic-bezier(0.32,0.72,0,1)":"cubic-bezier(0.0,0.0,0.2,1)",r="ios"===n?"cubic-bezier(1, 0, 0.68, 0.28)":"cubic-bezier(0.4, 0, 0.6, 1)",a=this.animation.direction(i?"reverse":"normal").easing(i?r:o);t?await a.play():a.play({sync:!0}),"reverse"===a.getDirection()&&a.direction("normal")}_isActive(){return!this.disabled&&!this.isPaneVisible}canSwipe(){return this.swipeGesture&&!this.isAnimating&&this._isActive()}canStart(e){return!(document.querySelector("ion-modal.show-modal")||!this.canSwipe())&&(!!this._isOpen||!y._getOpenSync()&&O(window,e.currentX,this.isEndSide,this.maxEdgeStart))}onWillStart(){return this.beforeAnimation(!this._isOpen,p),this.loadAnimation()}onStart(){this.isAnimating&&this.animation?this.animation.progressStart(!0,this._isOpen?1:0):w(!1,"isAnimating has to be true")}onMove(e){if(!this.isAnimating||!this.animation)return void w(!1,"isAnimating has to be true");const t=D(e.deltaX,this._isOpen,this.isEndSide)/this.width;this.animation.progressStep(this._isOpen?1-t:t)}onEnd(e){if(!this.isAnimating||!this.animation)return void w(!1,"isAnimating has to be true");const t=this._isOpen,i=this.isEndSide,n=D(e.deltaX,t,i),o=this.width,r=n/o,a=e.velocityX,d=o/2,h=a>=0&&(a>.2||e.deltaX>d),l=a<=0&&(a<-.2||e.deltaX<-d),m=t?i?h:l:i?l:h;let c=!t&&m;t&&!m&&(c=!0),this.lastOnEnd=e.currentTime;let u=m?.001:-.001;u+=s([0,0],[.4,0],[.6,1],[1,1],k(0,r<0?.01:r,.9999))[0]||0;const b=this._isOpen?!m:m;this.animation.easing("cubic-bezier(0.4, 0.0, 0.6, 1)").onFinish((()=>this.afterAnimation(c,p)),{oneTimeCallback:!0}).progressEnd(b?1:0,this._isOpen?1-u:u,300)}beforeAnimation(e,t){w(!this.isAnimating,"_before() should not be called while animating"),b("android")&&this.el.setAttribute("aria-hidden","true"),this.el.classList.add(W),this.el.setAttribute("tabindex","0"),this.backdropEl&&this.backdropEl.classList.add(_),this.contentEl&&(this.contentEl.classList.add(M),this.contentEl.setAttribute("aria-hidden","true")),this.blocker.block(),this.isAnimating=!0,e?this.ionWillOpen.emit():this.ionWillClose.emit({role:t})}afterAnimation(e,t){var i;this._isOpen=e,this.isAnimating=!1,this._isOpen||this.blocker.unblock(),e?(b("android")&&this.el.removeAttribute("aria-hidden"),this.ionDidOpen.emit(),(null===(i=document.activeElement)||void 0===i?void 0:i.closest("ion-menu"))!==this.el&&this.el.focus(),document.addEventListener("focus",this.handleFocus,!0)):(this.el.removeAttribute("aria-hidden"),this.el.classList.remove(W),this.el.removeAttribute("tabindex"),this.contentEl&&(this.contentEl.classList.remove(M),this.contentEl.removeAttribute("aria-hidden")),this.backdropEl&&this.backdropEl.classList.remove(_),this.animation&&this.animation.stop(),this.ionDidClose.emit({role:t}),document.removeEventListener("focus",this.handleFocus,!0))}updateState(){const e=this._isActive();this.gesture&&this.gesture.enable(e&&this.swipeGesture),e||(this.isAnimating&&(this.operationCancelled=!0),this.afterAnimation(!1,p))}render(){const{type:e,disabled:t,el:i,isPaneVisible:n,inheritedAttributes:a,side:s}=this,d=f(this);return o(r,{key:"76e15d710fbbbd2e64795224decc3673fd160db0",onKeyDown:g()?null:this.onKeydown,role:"navigation","aria-label":a["aria-label"]||"menu",class:{[d]:!0,[`menu-type-${e}`]:!0,"menu-enabled":!t,[`menu-side-${s}`]:!0,"menu-pane-visible":n,"split-pane-side":z("ion-split-pane",i)}},o("div",{key:"cc0a0773caff97aefa98015bf3e36631173d2b4f",class:"menu-inner",part:"container",ref:e=>this.menuInnerEl=e},o("slot",{key:"0b90d1248bdf3bedafda7913189635c8d010abb6"})),o("ion-backdrop",{key:"4fb7013bc61161e6e336541ed25605219410f749",ref:e=>this.backdropEl=e,class:"menu-backdrop",tappable:!1,stopPropagation:!1,part:"backdrop"}))}get el(){return a(this)}static get watchers(){return{type:[{typeChanged:0}],disabled:[{disabledChanged:0}],side:[{sideChanged:0}],swipeGesture:[{swipeGestureChanged:0}]}}},D=(e,t,i)=>Math.max(0,t!==i?-e:e),O=(e,t,i,n)=>i?t>=e.innerWidth-n:t<=n,W="show-menu",_="show-backdrop",M="menu-content-open";E.style={ionic:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);right:0;left:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){right:0;left:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{right:0;left:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-overlay) .menu-inner{-webkit-box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18);box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18)}",ios:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);right:0;left:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){right:0;left:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{right:0;left:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-push){z-index:1000}:host(.menu-type-push) .show-backdrop{display:block}",md:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);right:0;left:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){right:0;left:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{right:0;left:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-overlay) .menu-inner{-webkit-box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18);box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18)}"};const X=async e=>{const t=await y.get(e);return!(!t||!await t.isActive())},G=class{constructor(t){e(this,t),this.inheritedAttributes={},this.visible=!1,this.disabled=!1,this.autoHide=!0,this.type="button",this.onClick=async()=>y.toggle(this.menu)}componentWillLoad(){this.inheritedAttributes=x(this.el)}componentDidLoad(){this.visibilityChanged()}async visibilityChanged(){this.visible=await X(this.menu)}get menuIcon(){const e=f(this),t={ios:A,ionic:j,md:S};return i.get("menuIcon",t[e]||t.md)}render(){const{color:e,disabled:t,inheritedAttributes:i,menuIcon:n}=this,a=f(this),s=this.autoHide&&!this.visible,d={type:this.type},h=i["aria-label"]||"menu";return o(r,{key:"341ca3bfac81ce4432eef5d2fd738becd1dfb07e",onClick:this.onClick,"aria-disabled":t?"true":null,"aria-hidden":s?"true":null,class:C(e,{[a]:!0,button:!0,"menu-button-hidden":s,"menu-button-disabled":t,"in-toolbar":z("ion-toolbar",this.el),"in-toolbar-color":z("ion-toolbar[color]",this.el),"ion-activatable":!0,"ion-focusable":!0})},o("button",Object.assign({key:"6e6229df2fc1f2d18294a5fbf7fe71e7dd47666a"},d,{disabled:t,class:"button-native",part:"native","aria-label":h}),o("span",{key:"0216acbf67d7aa5edc52328f7ded4cb98bc8a237",class:"button-inner"},o("slot",{key:"5c2cdae42add9a25d3e6323048fcbc6b5fc9b32e"},o("ion-icon",{key:"5b38c283957cd2f1ad659427dec612fc84fc054f",part:"icon",icon:n,lazy:!1,"aria-hidden":"true"}))),"md"===a&&o("ion-ripple-effect",{key:"adabe4ffa1d66fe36d55294d774db9c4bba1ad76",type:"unbounded"})))}get el(){return a(this)}};G.style={ionic:':host{--background:transparent;--color-focused:currentColor;--border-radius:initial;--padding-top:0;--padding-bottom:0;color:var(--color);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-font-kerning:none;font-kerning:none}.button-native{border-radius:var(--border-radius);color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-align:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;white-space:inherit;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-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:var(--padding-top);padding-bottom:var(--padding-bottom);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-ms-flexbox;display:flex;position:relative;-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;border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-inner{display:-ms-flexbox;display:flex;position:relative;-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;z-index:1}ion-icon{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;pointer-events:none}:host(.menu-button-hidden){display:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{right:0;left:0;top:0;bottom:0;position:absolute;content:"";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity, 0)}}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host{--background-focused:currentColor;--background-focused-opacity:0.12;--background-hover:currentColor;--background-hover-opacity:0.04;--border-radius:initial;--color:initial;--padding-start:0;--padding-end:0;position:relative;width:var(--token-scale-1000, 40px);height:var(--token-scale-1000, 40px);font-size:var(--token-font-size-600, 1.5rem)}',ios:':host{--background:transparent;--color-focused:currentColor;--border-radius:initial;--padding-top:0;--padding-bottom:0;color:var(--color);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-font-kerning:none;font-kerning:none}.button-native{border-radius:var(--border-radius);color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-align:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;white-space:inherit;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-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:var(--padding-top);padding-bottom:var(--padding-bottom);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-ms-flexbox;display:flex;position:relative;-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;border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-inner{display:-ms-flexbox;display:flex;position:relative;-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;z-index:1}ion-icon{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;pointer-events:none}:host(.menu-button-hidden){display:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{right:0;left:0;top:0;bottom:0;position:absolute;content:"";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity, 0)}}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host(.menu-button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host{--background-focused:currentColor;--background-focused-opacity:0.1;--border-radius:4px;--color:var(--ion-color-primary, #0054e9);--padding-start:5px;--padding-end:5px;min-height:32px;font-size:clamp(31px, 1.9375rem, 38.13px)}:host(.ion-activated){opacity:0.4}@media (any-hover: hover){:host(:hover){opacity:0.6}}',md:':host{--background:transparent;--color-focused:currentColor;--border-radius:initial;--padding-top:0;--padding-bottom:0;color:var(--color);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-font-kerning:none;font-kerning:none}.button-native{border-radius:var(--border-radius);color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-align:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;white-space:inherit;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-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:var(--padding-top);padding-bottom:var(--padding-bottom);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-ms-flexbox;display:flex;position:relative;-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;border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-inner{display:-ms-flexbox;display:flex;position:relative;-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;z-index:1}ion-icon{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;pointer-events:none}:host(.menu-button-hidden){display:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{right:0;left:0;top:0;bottom:0;position:absolute;content:"";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity, 0)}}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host(.menu-button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host{--background-focused:currentColor;--background-focused-opacity:0.12;--background-hover:currentColor;--background-hover-opacity:0.04;--border-radius:50%;--color:initial;--padding-start:8px;--padding-end:8px;width:3rem;height:3rem;font-size:1.5rem}:host(.ion-color.ion-focused)::after{background:var(--ion-color-base)}@media (any-hover: hover){:host(.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}'};const L=class{constructor(t){e(this,t),this.visible=!1,this.autoHide=!0,this.onClick=()=>y.toggle(this.menu)}connectedCallback(){this.visibilityChanged()}async visibilityChanged(){this.visible=await X(this.menu)}render(){const e=f(this),t=this.autoHide&&!this.visible;return o(r,{key:"9ef631d9ae370a8740e691d281863203bfdddc38",onClick:this.onClick,"aria-hidden":t?"true":null,class:{[e]:!0,"menu-toggle-hidden":t}},o("slot",{key:"f8d9dfc562ed625ae47ec771ef6b2ea04bc463f4"}))}};L.style=":host(.menu-toggle-hidden){display:none}";export{E as ion_menu,G as ion_menu_button,L as ion_menu_toggle}
|
|
4
|
+
import{r as e,c as t,e as i,j as n,h as o,d as r,g as a}from"./p-C0EQceqV.js";import{g as s}from"./p-hHmYLOfE.js";import{o as d,B as h,n as l,q as m,G as p}from"./p-Dy243NXW.js";import{G as c}from"./p-BTEOs1at.js";import{b as u,a as b,c as f,s as g}from"./p-CnAWnbNK.js";import{p as v,i as x,l as w,e as k}from"./p-CEkwLb3L.js";import{m as y}from"./p-CB91Gr9M.js";import{h as z,c as C}from"./p-DaJxRxSQ.js";import{l as j}from"./p-Dhi5xtNS.js";import{u as S,v as A}from"./p-D2tu5BUg.js";import"./p-lMb_45ax.js";import"./p-vXpMhGrs.js";import"./p-CJsJQPQD.js";const D=class{constructor(i){e(this,i),this.ionWillOpen=t(this,"ionWillOpen",7),this.ionWillClose=t(this,"ionWillClose",7),this.ionDidOpen=t(this,"ionDidOpen",7),this.ionDidClose=t(this,"ionDidClose",7),this.ionMenuChange=t(this,"ionMenuChange",7),this.lastOnEnd=0,this.blocker=c.createBlocker({disableScroll:!0}),this.didLoad=!1,this.operationCancelled=!1,this.isAnimating=!1,this._isOpen=!1,this.inheritedAttributes={},this.handleFocus=e=>{const t=d(document);t&&!t.contains(this.el)||this.trapKeyboardFocus(e,document)},this.isPaneVisible=!1,this.isEndSide=!1,this.disabled=!1,this.side="start",this.swipeGesture=!0,this.maxEdgeStart=50}typeChanged(e,t){const i=this.contentEl;i&&(void 0!==t&&i.classList.remove(`menu-content-${t}`),i.classList.add(`menu-content-${e}`),i.removeAttribute("style")),this.menuInnerEl&&this.menuInnerEl.removeAttribute("style"),this.animation=void 0}disabledChanged(){this.updateState(),this.ionMenuChange.emit({disabled:this.disabled,open:this._isOpen})}sideChanged(){this.isEndSide=v(this.side),this.animation=void 0}swipeGestureChanged(){this.updateState()}async connectedCallback(){"undefined"!=typeof customElements&&null!=customElements&&await customElements.whenDefined("ion-menu"),void 0===this.type&&(this.type=i.get("menuType","overlay"));const e=void 0!==this.contentId?document.getElementById(this.contentId):null;null!==e?(this.el.contains(e)&&n('[ion-menu] - The "contentId" should refer to the main view\'s ion-content, not the ion-content inside of the ion-menu.'),this.contentEl=e,e.classList.add("menu-content"),this.typeChanged(this.type,void 0),this.sideChanged(),y._register(this),this.menuChanged(),this.gesture=(await import("./p-Cl0B-RWe.js")).createGesture({el:document,gestureName:"menu-swipe",gesturePriority:30,threshold:10,blurOnStart:!0,canStart:e=>this.canStart(e),onWillStart:()=>this.onWillStart(),onStart:()=>this.onStart(),onMove:e=>this.onMove(e),onEnd:e=>this.onEnd(e)}),this.updateState()):n('[ion-menu] - Must have a "content" element to listen for drag events on.')}componentWillLoad(){this.inheritedAttributes=x(this.el)}async componentDidLoad(){this.didLoad=!0;const e=this.el.closest("ion-split-pane");null!==e&&(this.isPaneVisible=await e.isVisible()),this.menuChanged(),this.updateState()}menuChanged(){this.didLoad&&this.ionMenuChange.emit({disabled:this.disabled,open:this._isOpen})}async disconnectedCallback(){await this.close(!1),this.blocker.destroy(),y._unregister(this),this.animation&&this.animation.destroy(),this.gesture&&(this.gesture.destroy(),this.gesture=void 0),this.animation=void 0,this.contentEl=void 0}onSplitPaneChanged(e){const t=this.el.closest("ion-split-pane");null!==t&&t===e.target&&(this.isPaneVisible=e.detail.visible,this.updateState())}onBackdropClick(e){this._isOpen&&this.lastOnEnd<e.timeStamp-100&&e.composedPath&&!e.composedPath().includes(this.menuInnerEl)&&(e.preventDefault(),e.stopPropagation(),this.close(void 0,h))}onKeydown(e){"Escape"===e.key&&this.close(void 0,h)}isOpen(){return Promise.resolve(this._isOpen)}isActive(){return Promise.resolve(this._isActive())}open(e=!0){return this.setOpen(!0,e)}close(e=!0,t){return this.setOpen(!1,e,t)}toggle(e=!0){return this.setOpen(!this._isOpen,e)}setOpen(e,t=!0,i){var n;return null===(n=document.activeElement)||void 0===n||n.blur(),y._setOpen(this,e,t,i)}trapKeyboardFocus(e,t){const i=e.target;if(i)if(this.el.contains(i))this.lastFocus=i;else{const{el:e}=this;l(e),this.lastFocus===t.activeElement&&m(e)}}async _setOpen(e,t=!0,i){return!(!this._isActive()||this.isAnimating||e===this._isOpen||(this.beforeAnimation(e,i),await this.loadAnimation(),await this.startAnimation(e,t),this.operationCancelled?(this.operationCancelled=!1,1):(this.afterAnimation(e,i),0)))}async loadAnimation(){const e=this.menuInnerEl.offsetWidth,t=v(this.side);if(e===this.width&&void 0!==this.animation&&t===this.isEndSide)return;this.width=e,this.isEndSide=t,this.animation&&(this.animation.destroy(),this.animation=void 0);const n=this.animation=await y._createAnimation(this.type,this);i.getBoolean("animated",!0)||n.duration(0),n.fill("both")}async startAnimation(e,t){const i=!e,n=u(this),o="ios"===n?"cubic-bezier(0.32,0.72,0,1)":"cubic-bezier(0.0,0.0,0.2,1)",r="ios"===n?"cubic-bezier(1, 0, 0.68, 0.28)":"cubic-bezier(0.4, 0, 0.6, 1)",a=this.animation.direction(i?"reverse":"normal").easing(i?r:o);t?await a.play():a.play({sync:!0}),"reverse"===a.getDirection()&&a.direction("normal")}_isActive(){return!this.disabled&&!this.isPaneVisible}canSwipe(){return this.swipeGesture&&!this.isAnimating&&this._isActive()}canStart(e){return!(document.querySelector("ion-modal.show-modal")||!this.canSwipe())&&(!!this._isOpen||!y._getOpenSync()&&O(window,e.currentX,this.isEndSide,this.maxEdgeStart))}onWillStart(){return this.beforeAnimation(!this._isOpen,p),this.loadAnimation()}onStart(){this.isAnimating&&this.animation?this.animation.progressStart(!0,this._isOpen?1:0):w(!1,"isAnimating has to be true")}onMove(e){if(!this.isAnimating||!this.animation)return void w(!1,"isAnimating has to be true");const t=E(e.deltaX,this._isOpen,this.isEndSide)/this.width;this.animation.progressStep(this._isOpen?1-t:t)}onEnd(e){if(!this.isAnimating||!this.animation)return void w(!1,"isAnimating has to be true");const t=this._isOpen,i=this.isEndSide,n=E(e.deltaX,t,i),o=this.width,r=n/o,a=e.velocityX,d=o/2,h=a>=0&&(a>.2||e.deltaX>d),l=a<=0&&(a<-.2||e.deltaX<-d),m=t?i?h:l:i?l:h;let c=!t&&m;t&&!m&&(c=!0),this.lastOnEnd=e.currentTime;let u=m?.001:-.001;u+=s([0,0],[.4,0],[.6,1],[1,1],k(0,r<0?.01:r,.9999))[0]||0;const b=this._isOpen?!m:m;this.animation.easing("cubic-bezier(0.4, 0.0, 0.6, 1)").onFinish((()=>this.afterAnimation(c,p)),{oneTimeCallback:!0}).progressEnd(b?1:0,this._isOpen?1-u:u,300)}beforeAnimation(e,t){w(!this.isAnimating,"_before() should not be called while animating"),b("android")&&this.el.setAttribute("aria-hidden","true"),this.el.classList.add(W),this.el.setAttribute("tabindex","0"),this.backdropEl&&this.backdropEl.classList.add(_),this.contentEl&&(this.contentEl.classList.add(M),this.contentEl.setAttribute("aria-hidden","true")),this.blocker.block(),this.isAnimating=!0,e?this.ionWillOpen.emit():this.ionWillClose.emit({role:t})}afterAnimation(e,t){var i;this._isOpen=e,this.isAnimating=!1,this._isOpen||this.blocker.unblock(),e?(b("android")&&this.el.removeAttribute("aria-hidden"),this.ionDidOpen.emit(),(null===(i=document.activeElement)||void 0===i?void 0:i.closest("ion-menu"))!==this.el&&this.el.focus(),document.addEventListener("focus",this.handleFocus,!0)):(this.el.removeAttribute("aria-hidden"),this.el.classList.remove(W),this.el.removeAttribute("tabindex"),this.contentEl&&(this.contentEl.classList.remove(M),this.contentEl.removeAttribute("aria-hidden")),this.backdropEl&&this.backdropEl.classList.remove(_),this.animation&&this.animation.stop(),this.ionDidClose.emit({role:t}),document.removeEventListener("focus",this.handleFocus,!0))}updateState(){const e=this._isActive();this.gesture&&this.gesture.enable(e&&this.swipeGesture),e||(this.isAnimating&&(this.operationCancelled=!0),this.afterAnimation(!1,p))}render(){const{type:e,disabled:t,el:i,isPaneVisible:n,inheritedAttributes:a,side:s}=this,d=f(this);return o(r,{key:"76e15d710fbbbd2e64795224decc3673fd160db0",onKeyDown:g()?null:this.onKeydown,role:"navigation","aria-label":a["aria-label"]||"menu",class:{[d]:!0,[`menu-type-${e}`]:!0,"menu-enabled":!t,[`menu-side-${s}`]:!0,"menu-pane-visible":n,"split-pane-side":z("ion-split-pane",i)}},o("div",{key:"cc0a0773caff97aefa98015bf3e36631173d2b4f",class:"menu-inner",part:"container",ref:e=>this.menuInnerEl=e},o("slot",{key:"0b90d1248bdf3bedafda7913189635c8d010abb6"})),o("ion-backdrop",{key:"4fb7013bc61161e6e336541ed25605219410f749",ref:e=>this.backdropEl=e,class:"menu-backdrop",tappable:!1,stopPropagation:!1,part:"backdrop"}))}get el(){return a(this)}static get watchers(){return{type:[{typeChanged:0}],disabled:[{disabledChanged:0}],side:[{sideChanged:0}],swipeGesture:[{swipeGestureChanged:0}]}}},E=(e,t,i)=>Math.max(0,t!==i?-e:e),O=(e,t,i,n)=>i?t>=e.innerWidth-n:t<=n,W="show-menu",_="show-backdrop",M="menu-content-open";D.style={ionic:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);right:0;left:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){right:0;left:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{right:0;left:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-overlay) .menu-inner{-webkit-box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18);box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18)}",ios:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);right:0;left:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){right:0;left:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{right:0;left:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-push){z-index:1000}:host(.menu-type-push) .show-backdrop{display:block}",md:":host{--width:304px;--min-width:auto;--max-width:auto;--height:100%;--min-height:auto;--max-height:auto;--background:var(--ion-background-color, #fff);right:0;left:0;top:0;bottom:0;display:none;position:absolute;contain:strict}:host(.show-menu){display:block}.menu-inner{-webkit-transform:translateX(-9999px);transform:translateX(-9999px);display:-ms-flexbox;display:flex;position:absolute;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;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:strict}:host(.menu-side-start) .menu-inner{--ion-safe-area-right:0px;top:0;bottom:0}:host(.menu-side-start) .menu-inner{inset-inline-start:0;inset-inline-end:auto}:host-context([dir=rtl]):host(.menu-side-start) .menu-inner,:host-context([dir=rtl]).menu-side-start .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}@supports selector(:dir(rtl)){:host(.menu-side-start:dir(rtl)) .menu-inner{--ion-safe-area-right:unset;--ion-safe-area-left:0px}}:host(.menu-side-end) .menu-inner{--ion-safe-area-left:0px;top:0;bottom:0}:host(.menu-side-end) .menu-inner{inset-inline-start:auto;inset-inline-end:0}:host-context([dir=rtl]):host(.menu-side-end) .menu-inner,:host-context([dir=rtl]).menu-side-end .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}@supports selector(:dir(rtl)){:host(.menu-side-end:dir(rtl)) .menu-inner{--ion-safe-area-left:unset;--ion-safe-area-right:0px}}ion-backdrop{display:none;opacity:0.01;z-index:-1}@media (max-width: 340px){.menu-inner{--width:264px}}:host(.menu-type-reveal){z-index:0}:host(.menu-type-reveal.show-menu) .menu-inner{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0)}:host(.menu-type-overlay){z-index:1000}:host(.menu-type-overlay) .show-backdrop{display:block;cursor:pointer}:host(.menu-pane-visible){-ms-flex:0 1 auto;flex:0 1 auto;width:var(--side-width, var(--width));min-width:var(--side-min-width, var(--min-width));max-width:var(--side-max-width, var(--max-width))}:host(.menu-pane-visible.split-pane-side){right:0;left:0;top:0;bottom:0;position:relative;-webkit-box-shadow:none;box-shadow:none;z-index:0}:host(.menu-pane-visible.split-pane-side.menu-enabled){display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0}:host(.menu-pane-visible.split-pane-side){-ms-flex-order:-1;order:-1}:host(.menu-pane-visible.split-pane-side[side=end]){-ms-flex-order:1;order:1}:host(.menu-pane-visible) .menu-inner{right:0;left:0;width:auto;-webkit-transform:none;transform:none;-webkit-box-shadow:none;box-shadow:none}:host(.menu-pane-visible) ion-backdrop{display:hidden !important}:host(.menu-pane-visible.split-pane-side){-webkit-border-start:0;border-inline-start:0;-webkit-border-end:var(--border);border-inline-end:var(--border);border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-pane-visible.split-pane-side[side=end]){-webkit-border-start:var(--border);border-inline-start:var(--border);-webkit-border-end:0;border-inline-end:0;border-top:0;border-bottom:0;min-width:var(--side-min-width);max-width:var(--side-max-width)}:host(.menu-type-overlay) .menu-inner{-webkit-box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18);box-shadow:4px 0px 16px rgba(0, 0, 0, 0.18)}"};const X=async e=>{const t=await y.get(e);return!(!t||!await t.isActive())},G=class{constructor(t){e(this,t),this.inheritedAttributes={},this.visible=!1,this.disabled=!1,this.autoHide=!0,this.type="button",this.onClick=async()=>y.toggle(this.menu)}componentWillLoad(){this.inheritedAttributes=x(this.el)}componentDidLoad(){this.visibilityChanged()}async visibilityChanged(){this.visible=await X(this.menu)}get menuIcon(){const e=f(this),t={ios:A,ionic:j,md:S};return i.get("menuIcon",t[e]||t.md)}render(){const{color:e,disabled:t,inheritedAttributes:i,menuIcon:n}=this,a=f(this),s=this.autoHide&&!this.visible,d={type:this.type},h=i["aria-label"]||"menu";return o(r,{key:"341ca3bfac81ce4432eef5d2fd738becd1dfb07e",onClick:this.onClick,"aria-disabled":t?"true":null,"aria-hidden":s?"true":null,class:C(e,{[a]:!0,button:!0,"menu-button-hidden":s,"menu-button-disabled":t,"in-toolbar":z("ion-toolbar",this.el),"in-toolbar-color":z("ion-toolbar[color]",this.el),"ion-activatable":!0,"ion-focusable":!0})},o("button",Object.assign({key:"6e6229df2fc1f2d18294a5fbf7fe71e7dd47666a"},d,{disabled:t,class:"button-native",part:"native","aria-label":h}),o("span",{key:"0216acbf67d7aa5edc52328f7ded4cb98bc8a237",class:"button-inner"},o("slot",{key:"5c2cdae42add9a25d3e6323048fcbc6b5fc9b32e"},o("ion-icon",{key:"5b38c283957cd2f1ad659427dec612fc84fc054f",part:"icon",icon:n,lazy:!1,"aria-hidden":"true"}))),"md"===a&&o("ion-ripple-effect",{key:"adabe4ffa1d66fe36d55294d774db9c4bba1ad76",type:"unbounded"})))}get el(){return a(this)}};G.style={ionic:':host{--background:transparent;--color-focused:currentColor;--border-radius:initial;--padding-top:0;--padding-bottom:0;color:var(--color);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-font-kerning:none;font-kerning:none}.button-native{border-radius:var(--border-radius);color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-align:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;white-space:inherit;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-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:var(--padding-top);padding-bottom:var(--padding-bottom);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-ms-flexbox;display:flex;position:relative;-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;border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-inner{display:-ms-flexbox;display:flex;position:relative;-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;z-index:1}ion-icon{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;pointer-events:none}:host(.menu-button-hidden){display:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{right:0;left:0;top:0;bottom:0;position:absolute;content:"";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity, 0)}}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host{--background-focused:currentColor;--background-focused-opacity:0.12;--background-hover:currentColor;--background-hover-opacity:0.04;--border-radius:initial;--color:initial;--padding-start:0;--padding-end:0;position:relative;width:var(--token-scale-1000, 40px);height:var(--token-scale-1000, 40px);font-size:var(--token-font-size-600, 1.5rem)}',ios:':host{--background:transparent;--color-focused:currentColor;--border-radius:initial;--padding-top:0;--padding-bottom:0;color:var(--color);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-font-kerning:none;font-kerning:none}.button-native{border-radius:var(--border-radius);color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-align:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;white-space:inherit;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-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:var(--padding-top);padding-bottom:var(--padding-bottom);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-ms-flexbox;display:flex;position:relative;-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;border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-inner{display:-ms-flexbox;display:flex;position:relative;-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;z-index:1}ion-icon{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;pointer-events:none}:host(.menu-button-hidden){display:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{right:0;left:0;top:0;bottom:0;position:absolute;content:"";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity, 0)}}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host(.menu-button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host{--background-focused:currentColor;--background-focused-opacity:0.1;--border-radius:4px;--color:var(--ion-color-primary, #0054e9);--padding-start:5px;--padding-end:5px;min-height:32px;font-size:clamp(31px, 1.9375rem, 38.13px)}:host(.ion-activated){opacity:0.4}@media (any-hover: hover){:host(:hover){opacity:0.6}}',md:':host{--background:transparent;--color-focused:currentColor;--border-radius:initial;--padding-top:0;--padding-bottom:0;color:var(--color);text-align:center;text-decoration:none;text-overflow:ellipsis;text-transform:none;white-space:nowrap;-webkit-font-kerning:none;font-kerning:none}.button-native{border-radius:var(--border-radius);color:inherit;font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;letter-spacing:inherit;text-align:inherit;text-decoration:inherit;text-indent:inherit;text-overflow:inherit;text-transform:inherit;white-space:inherit;margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;-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:var(--padding-top);padding-bottom:var(--padding-bottom);-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:-ms-flexbox;display:flex;position:relative;-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;border:0;outline:none;background:var(--background);line-height:1;cursor:pointer;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.button-inner{display:-ms-flexbox;display:flex;position:relative;-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;z-index:1}ion-icon{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0;padding-left:0;padding-right:0;padding-top:0;padding-bottom:0;pointer-events:none}:host(.menu-button-hidden){display:none}:host(.ion-focused) .button-native{color:var(--color-focused)}:host(.ion-focused) .button-native::after{background:var(--background-focused);opacity:var(--background-focused-opacity)}.button-native::after{right:0;left:0;top:0;bottom:0;position:absolute;content:"";opacity:0}@media (any-hover: hover){:host(:hover) .button-native{color:var(--color-hover)}:host(:hover) .button-native::after{background:var(--background-hover);opacity:var(--background-hover-opacity, 0)}}:host(.in-toolbar:not(.in-toolbar-color)){color:var(--ion-toolbar-color, var(--color))}:host(.menu-button-disabled){cursor:default;opacity:0.5;pointer-events:none}:host(.ion-color) .button-native{color:var(--ion-color-base)}:host{--background-focused:currentColor;--background-focused-opacity:0.12;--background-hover:currentColor;--background-hover-opacity:0.04;--border-radius:50%;--color:initial;--padding-start:8px;--padding-end:8px;width:3rem;height:3rem;font-size:1.5rem}:host(.ion-color.ion-focused)::after{background:var(--ion-color-base)}@media (any-hover: hover){:host(.ion-color:hover) .button-native::after{background:var(--ion-color-base)}}'};const L=class{constructor(t){e(this,t),this.visible=!1,this.autoHide=!0,this.onClick=()=>y.toggle(this.menu)}connectedCallback(){this.visibilityChanged()}async visibilityChanged(){this.visible=await X(this.menu)}render(){const e=f(this),t=this.autoHide&&!this.visible;return o(r,{key:"9ef631d9ae370a8740e691d281863203bfdddc38",onClick:this.onClick,"aria-hidden":t?"true":null,class:{[e]:!0,"menu-toggle-hidden":t}},o("slot",{key:"f8d9dfc562ed625ae47ec771ef6b2ea04bc463f4"}))}};L.style=":host(.menu-toggle-hidden){display:none}";export{D as ion_menu,G as ion_menu_button,L as ion_menu_toggle}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type FooterScrollEffect = 'hide' | 'fade';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ComponentInterface } from '../../stencil-public-runtime';
|
|
2
|
+
import type { FooterScrollEffect } from './footer-interface';
|
|
2
3
|
/**
|
|
3
4
|
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
4
5
|
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
@@ -8,11 +9,25 @@ export declare class Footer implements ComponentInterface {
|
|
|
8
9
|
private contentScrollCallback?;
|
|
9
10
|
private keyboardCtrl;
|
|
10
11
|
private keyboardCtrlPromise;
|
|
12
|
+
private scrollHideCtrl?;
|
|
13
|
+
private scrollHideCtrlPromise;
|
|
14
|
+
private hasWarnedCollapse;
|
|
15
|
+
private activeEffect?;
|
|
16
|
+
private fadeSetupId;
|
|
11
17
|
private keyboardVisible;
|
|
12
18
|
el: HTMLIonFooterElement;
|
|
19
|
+
/**
|
|
20
|
+
* Describes the scroll effect that will be applied to the footer.
|
|
21
|
+
* `"hide"` slides the footer out of view when scrolling down and back in
|
|
22
|
+
* when scrolling up.
|
|
23
|
+
* `"fade"` fades the toolbar background on scroll.
|
|
24
|
+
*/
|
|
25
|
+
scrollEffect?: FooterScrollEffect;
|
|
13
26
|
/**
|
|
14
27
|
* Describes the scroll effect that will be applied to the footer.
|
|
15
28
|
* Only applies when the theme is `"ios"`.
|
|
29
|
+
*
|
|
30
|
+
* @deprecated Use `scrollEffect` instead.
|
|
16
31
|
*/
|
|
17
32
|
collapse?: 'fade';
|
|
18
33
|
/**
|
|
@@ -29,6 +44,7 @@ export declare class Footer implements ComponentInterface {
|
|
|
29
44
|
connectedCallback(): Promise<void>;
|
|
30
45
|
disconnectedCallback(): void;
|
|
31
46
|
private checkCollapsibleFooter;
|
|
47
|
+
private setupScrollEffectHide;
|
|
32
48
|
private setupFadeFooter;
|
|
33
49
|
private destroyCollapsibleFooter;
|
|
34
50
|
render(): any;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type HeaderScrollEffect = 'hide' | 'condense' | 'fade';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ComponentInterface } from '../../stencil-public-runtime';
|
|
2
|
+
import type { HeaderScrollEffect } from './header-interface';
|
|
2
3
|
/**
|
|
3
4
|
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
4
5
|
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
@@ -9,12 +10,27 @@ export declare class Header implements ComponentInterface {
|
|
|
9
10
|
private intersectionObserver?;
|
|
10
11
|
private collapsibleMainHeader?;
|
|
11
12
|
private inheritedAttributes;
|
|
13
|
+
private scrollHideCtrl?;
|
|
14
|
+
private scrollHideCtrlPromise;
|
|
15
|
+
private hasWarnedCollapse;
|
|
16
|
+
private activeEffect?;
|
|
17
|
+
private fadeCondenseSetupId;
|
|
12
18
|
el: HTMLElement;
|
|
19
|
+
/**
|
|
20
|
+
* Describes the scroll effect that will be applied to the header.
|
|
21
|
+
* `"hide"` slides the header out of view when scrolling down and back in
|
|
22
|
+
* when scrolling up.
|
|
23
|
+
* `"condense"` collapses the large title into the main toolbar on scroll.
|
|
24
|
+
* `"fade"` fades the toolbar background on scroll.
|
|
25
|
+
*/
|
|
26
|
+
scrollEffect?: HeaderScrollEffect;
|
|
13
27
|
/**
|
|
14
28
|
* Describes the scroll effect that will be applied to the header.
|
|
15
29
|
* Only applies when the theme is `"ios"`.
|
|
16
30
|
*
|
|
17
31
|
* Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
32
|
+
*
|
|
33
|
+
* @deprecated Use `scrollEffect` instead.
|
|
18
34
|
*/
|
|
19
35
|
collapse?: 'condense' | 'fade';
|
|
20
36
|
/**
|
|
@@ -36,6 +52,7 @@ export declare class Header implements ComponentInterface {
|
|
|
36
52
|
componentDidUpdate(): void;
|
|
37
53
|
disconnectedCallback(): void;
|
|
38
54
|
private checkCollapsibleHeader;
|
|
55
|
+
private setupScrollEffectHide;
|
|
39
56
|
private setupFadeHeader;
|
|
40
57
|
private destroyCollapsibleHeader;
|
|
41
58
|
private setupCondenseHeader;
|
|
@@ -27,10 +27,9 @@ export declare const handleHeaderFade: (scrollEl: HTMLElement, baseEl: HTMLEleme
|
|
|
27
27
|
* Get the role type for the ion-header.
|
|
28
28
|
*
|
|
29
29
|
* @param isInsideMenu If ion-header is inside ion-menu.
|
|
30
|
-
* @
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* theme, otherwise 'banner'.
|
|
30
|
+
* @returns 'none' if inside ion-menu, otherwise 'banner'.
|
|
31
|
+
* Condensed headers start as 'banner' and have their role
|
|
32
|
+
* toggled dynamically by setHeaderActive() on scroll.
|
|
34
33
|
*/
|
|
35
|
-
export declare const getRoleType: (isInsideMenu: boolean
|
|
34
|
+
export declare const getRoleType: (isInsideMenu: boolean) => "none" | "banner";
|
|
36
35
|
export {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ComponentInterface, EventEmitter } from '../../stencil-public-runtime';
|
|
2
2
|
import type { Color } from '../../interface';
|
|
3
|
-
import type { TabBarChangedEventDetail } from './tab-bar-interface';
|
|
3
|
+
import type { TabBarChangedEventDetail, TabBarScrollEffect } from './tab-bar-interface';
|
|
4
4
|
/**
|
|
5
5
|
* @virtualProp {"ios" | "md"} mode - The mode determines the platform behaviors of the component.
|
|
6
6
|
* @virtualProp {"ios" | "md" | "ionic"} theme - The theme determines the visual appearance of the component.
|
|
@@ -9,13 +9,11 @@ export declare class TabBar implements ComponentInterface {
|
|
|
9
9
|
private keyboardCtrl;
|
|
10
10
|
private keyboardCtrlPromise;
|
|
11
11
|
private didLoad;
|
|
12
|
-
private
|
|
13
|
-
private
|
|
14
|
-
private
|
|
15
|
-
private scrollDirectionChangeTop;
|
|
12
|
+
private scrollHideCtrl?;
|
|
13
|
+
private scrollHideCtrlPromise;
|
|
14
|
+
private hasWarnedFooter;
|
|
16
15
|
el: HTMLElement;
|
|
17
16
|
keyboardVisible: boolean;
|
|
18
|
-
scrollHidden: boolean;
|
|
19
17
|
/**
|
|
20
18
|
* The color to use from your application's color palette.
|
|
21
19
|
* Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`.
|
|
@@ -28,11 +26,17 @@ export declare class TabBar implements ComponentInterface {
|
|
|
28
26
|
selectedTab?: string;
|
|
29
27
|
selectedTabChanged(): void;
|
|
30
28
|
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
*
|
|
29
|
+
* Describes the scroll effect that will be applied to the tab bar.
|
|
30
|
+
* `"hide"` slides the tab bar out of view when scrolling down and back in
|
|
31
|
+
* when scrolling up.
|
|
32
|
+
*
|
|
33
|
+
* Note: `"hide"` is ignored when the tab bar is nested inside an
|
|
34
|
+
* `ion-footer` to avoid leaving an empty footer visible on screen.
|
|
35
|
+
* Set `scroll-effect="hide"` on the footer instead so the entire
|
|
36
|
+
* footer hides together.
|
|
34
37
|
*/
|
|
35
|
-
|
|
38
|
+
scrollEffect?: TabBarScrollEffect;
|
|
39
|
+
scrollEffectChanged(): void;
|
|
36
40
|
/**
|
|
37
41
|
* If `true`, the tab bar will be translucent.
|
|
38
42
|
* Only applies when the theme is `"ios"` and the device supports
|
|
@@ -67,12 +71,11 @@ export declare class TabBar implements ComponentInterface {
|
|
|
67
71
|
*/
|
|
68
72
|
ionTabBarLoaded: EventEmitter<void>;
|
|
69
73
|
componentDidLoad(): void;
|
|
74
|
+
private checkScrollEffect;
|
|
70
75
|
connectedCallback(): Promise<void>;
|
|
71
76
|
disconnectedCallback(): void;
|
|
72
|
-
private
|
|
73
|
-
private
|
|
74
|
-
private destroyHideOnScroll;
|
|
75
|
-
private checkScrollStatus;
|
|
77
|
+
private setupScrollEffect;
|
|
78
|
+
private destroyScrollEffect;
|
|
76
79
|
private getShape;
|
|
77
80
|
render(): any;
|
|
78
81
|
}
|
|
@@ -16,7 +16,9 @@ import { BreadcrumbCollapsedClickEventDetail } from "./components/breadcrumb/bre
|
|
|
16
16
|
import { CheckboxChangeEventDetail } from "./components/checkbox/checkbox-interface";
|
|
17
17
|
import { ScrollBaseDetail, ScrollDetail } from "./components/content/content-interface";
|
|
18
18
|
import { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimeParts, DatetimePresentation, FormatOptions, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface";
|
|
19
|
+
import { FooterScrollEffect } from "./components/footer/footer-interface";
|
|
19
20
|
import { GalleryColumns, GalleryGap } from "./components/gallery/gallery-interface";
|
|
21
|
+
import { HeaderScrollEffect } from "./components/header/header-interface";
|
|
20
22
|
import { SpinnerTypes } from "./components/spinner/spinner-configs";
|
|
21
23
|
import { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface";
|
|
22
24
|
import { InputOtpChangeEventDetail, InputOtpCompleteEventDetail, InputOtpInputEventDetail } from "./components/input-otp/input-otp-interface";
|
|
@@ -40,7 +42,7 @@ import { SegmentViewScrollEvent } from "./components/segment-view/segment-view-i
|
|
|
40
42
|
import { SelectChangeEventDetail, SelectCompareFn, SelectInterface } from "./components/select/select-interface";
|
|
41
43
|
import { SelectModalOption } from "./components/select-modal/select-modal-interface";
|
|
42
44
|
import { SelectPopoverOption } from "./components/select-popover/select-popover-interface";
|
|
43
|
-
import { TabBarChangedEventDetail, TabButtonClickEventDetail, TabButtonLayout } from "./components/tab-bar/tab-bar-interface";
|
|
45
|
+
import { TabBarChangedEventDetail, TabBarScrollEffect, TabButtonClickEventDetail, TabButtonLayout } from "./components/tab-bar/tab-bar-interface";
|
|
44
46
|
import { TextareaChangeEventDetail, TextareaInputEventDetail } from "./components/textarea/textarea-interface";
|
|
45
47
|
import { ToastButton, ToastDismissOptions, ToastLayout, ToastPosition, ToastPresentOptions, ToastSwipeGestureDirection } from "./components/toast/toast-interface";
|
|
46
48
|
import { ToggleChangeEventDetail } from "./components/toggle/toggle-interface";
|
|
@@ -55,7 +57,9 @@ export { BreadcrumbCollapsedClickEventDetail } from "./components/breadcrumb/bre
|
|
|
55
57
|
export { CheckboxChangeEventDetail } from "./components/checkbox/checkbox-interface";
|
|
56
58
|
export { ScrollBaseDetail, ScrollDetail } from "./components/content/content-interface";
|
|
57
59
|
export { DatetimeChangeEventDetail, DatetimeHighlight, DatetimeHighlightCallback, DatetimeHourCycle, DatetimeParts, DatetimePresentation, FormatOptions, TitleSelectedDatesFormatter } from "./components/datetime/datetime-interface";
|
|
60
|
+
export { FooterScrollEffect } from "./components/footer/footer-interface";
|
|
58
61
|
export { GalleryColumns, GalleryGap } from "./components/gallery/gallery-interface";
|
|
62
|
+
export { HeaderScrollEffect } from "./components/header/header-interface";
|
|
59
63
|
export { SpinnerTypes } from "./components/spinner/spinner-configs";
|
|
60
64
|
export { InputChangeEventDetail, InputInputEventDetail } from "./components/input/input-interface";
|
|
61
65
|
export { InputOtpChangeEventDetail, InputOtpCompleteEventDetail, InputOtpInputEventDetail } from "./components/input-otp/input-otp-interface";
|
|
@@ -79,7 +83,7 @@ export { SegmentViewScrollEvent } from "./components/segment-view/segment-view-i
|
|
|
79
83
|
export { SelectChangeEventDetail, SelectCompareFn, SelectInterface } from "./components/select/select-interface";
|
|
80
84
|
export { SelectModalOption } from "./components/select-modal/select-modal-interface";
|
|
81
85
|
export { SelectPopoverOption } from "./components/select-popover/select-popover-interface";
|
|
82
|
-
export { TabBarChangedEventDetail, TabButtonClickEventDetail, TabButtonLayout } from "./components/tab-bar/tab-bar-interface";
|
|
86
|
+
export { TabBarChangedEventDetail, TabBarScrollEffect, TabButtonClickEventDetail, TabButtonLayout } from "./components/tab-bar/tab-bar-interface";
|
|
83
87
|
export { TextareaChangeEventDetail, TextareaInputEventDetail } from "./components/textarea/textarea-interface";
|
|
84
88
|
export { ToastButton, ToastDismissOptions, ToastLayout, ToastPosition, ToastPresentOptions, ToastSwipeGestureDirection } from "./components/toast/toast-interface";
|
|
85
89
|
export { ToggleChangeEventDetail } from "./components/toggle/toggle-interface";
|
|
@@ -1459,12 +1463,17 @@ export namespace Components {
|
|
|
1459
1463
|
interface IonFooter {
|
|
1460
1464
|
/**
|
|
1461
1465
|
* Describes the scroll effect that will be applied to the footer. Only applies when the theme is `"ios"`.
|
|
1466
|
+
* @deprecated Use `scrollEffect` instead.
|
|
1462
1467
|
*/
|
|
1463
1468
|
"collapse"?: 'fade';
|
|
1464
1469
|
/**
|
|
1465
1470
|
* The mode determines the platform behaviors of the component.
|
|
1466
1471
|
*/
|
|
1467
1472
|
"mode"?: "ios" | "md";
|
|
1473
|
+
/**
|
|
1474
|
+
* Describes the scroll effect that will be applied to the footer. `"hide"` slides the footer out of view when scrolling down and back in when scrolling up. `"fade"` fades the toolbar background on scroll.
|
|
1475
|
+
*/
|
|
1476
|
+
"scrollEffect"?: FooterScrollEffect;
|
|
1468
1477
|
/**
|
|
1469
1478
|
* The theme determines the visual appearance of the component.
|
|
1470
1479
|
*/
|
|
@@ -1536,6 +1545,7 @@ export namespace Components {
|
|
|
1536
1545
|
interface IonHeader {
|
|
1537
1546
|
/**
|
|
1538
1547
|
* Describes the scroll effect that will be applied to the header. Only applies when the theme is `"ios"`. Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
1548
|
+
* @deprecated Use `scrollEffect` instead.
|
|
1539
1549
|
*/
|
|
1540
1550
|
"collapse"?: 'condense' | 'fade';
|
|
1541
1551
|
/**
|
|
@@ -1547,6 +1557,10 @@ export namespace Components {
|
|
|
1547
1557
|
* The mode determines the platform behaviors of the component.
|
|
1548
1558
|
*/
|
|
1549
1559
|
"mode"?: "ios" | "md";
|
|
1560
|
+
/**
|
|
1561
|
+
* Describes the scroll effect that will be applied to the header. `"hide"` slides the header out of view when scrolling down and back in when scrolling up. `"condense"` collapses the large title into the main toolbar on scroll. `"fade"` fades the toolbar background on scroll.
|
|
1562
|
+
*/
|
|
1563
|
+
"scrollEffect"?: HeaderScrollEffect;
|
|
1550
1564
|
/**
|
|
1551
1565
|
* The theme determines the visual appearance of the component.
|
|
1552
1566
|
*/
|
|
@@ -4041,15 +4055,14 @@ export namespace Components {
|
|
|
4041
4055
|
* @default 'full'
|
|
4042
4056
|
*/
|
|
4043
4057
|
"expand": 'compact' | 'full';
|
|
4044
|
-
/**
|
|
4045
|
-
* If `true`, the tab bar will be hidden when the user scrolls down and shown when the user scrolls up. Only applies when the theme is `"ionic"` and `expand` is `"compact"`.
|
|
4046
|
-
* @default false
|
|
4047
|
-
*/
|
|
4048
|
-
"hideOnScroll": boolean;
|
|
4049
4058
|
/**
|
|
4050
4059
|
* The mode determines the platform behaviors of the component.
|
|
4051
4060
|
*/
|
|
4052
4061
|
"mode"?: "ios" | "md";
|
|
4062
|
+
/**
|
|
4063
|
+
* Describes the scroll effect that will be applied to the tab bar. `"hide"` slides the tab bar out of view when scrolling down and back in when scrolling up. Note: `"hide"` is ignored when the tab bar is nested inside an `ion-footer` to avoid leaving an empty footer visible on screen. Set `scroll-effect="hide"` on the footer instead so the entire footer hides together.
|
|
4064
|
+
*/
|
|
4065
|
+
"scrollEffect"?: TabBarScrollEffect;
|
|
4053
4066
|
/**
|
|
4054
4067
|
* The selected tab component
|
|
4055
4068
|
*/
|
|
@@ -7498,12 +7511,17 @@ declare namespace LocalJSX {
|
|
|
7498
7511
|
interface IonFooter {
|
|
7499
7512
|
/**
|
|
7500
7513
|
* Describes the scroll effect that will be applied to the footer. Only applies when the theme is `"ios"`.
|
|
7514
|
+
* @deprecated Use `scrollEffect` instead.
|
|
7501
7515
|
*/
|
|
7502
7516
|
"collapse"?: 'fade';
|
|
7503
7517
|
/**
|
|
7504
7518
|
* The mode determines the platform behaviors of the component.
|
|
7505
7519
|
*/
|
|
7506
7520
|
"mode"?: "ios" | "md";
|
|
7521
|
+
/**
|
|
7522
|
+
* Describes the scroll effect that will be applied to the footer. `"hide"` slides the footer out of view when scrolling down and back in when scrolling up. `"fade"` fades the toolbar background on scroll.
|
|
7523
|
+
*/
|
|
7524
|
+
"scrollEffect"?: FooterScrollEffect;
|
|
7507
7525
|
/**
|
|
7508
7526
|
* The theme determines the visual appearance of the component.
|
|
7509
7527
|
*/
|
|
@@ -7571,6 +7589,7 @@ declare namespace LocalJSX {
|
|
|
7571
7589
|
interface IonHeader {
|
|
7572
7590
|
/**
|
|
7573
7591
|
* Describes the scroll effect that will be applied to the header. Only applies when the theme is `"ios"`. Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles)
|
|
7592
|
+
* @deprecated Use `scrollEffect` instead.
|
|
7574
7593
|
*/
|
|
7575
7594
|
"collapse"?: 'condense' | 'fade';
|
|
7576
7595
|
/**
|
|
@@ -7582,6 +7601,10 @@ declare namespace LocalJSX {
|
|
|
7582
7601
|
* The mode determines the platform behaviors of the component.
|
|
7583
7602
|
*/
|
|
7584
7603
|
"mode"?: "ios" | "md";
|
|
7604
|
+
/**
|
|
7605
|
+
* Describes the scroll effect that will be applied to the header. `"hide"` slides the header out of view when scrolling down and back in when scrolling up. `"condense"` collapses the large title into the main toolbar on scroll. `"fade"` fades the toolbar background on scroll.
|
|
7606
|
+
*/
|
|
7607
|
+
"scrollEffect"?: HeaderScrollEffect;
|
|
7585
7608
|
/**
|
|
7586
7609
|
* The theme determines the visual appearance of the component.
|
|
7587
7610
|
*/
|
|
@@ -10053,15 +10076,14 @@ declare namespace LocalJSX {
|
|
|
10053
10076
|
* @default 'full'
|
|
10054
10077
|
*/
|
|
10055
10078
|
"expand"?: 'compact' | 'full';
|
|
10056
|
-
/**
|
|
10057
|
-
* If `true`, the tab bar will be hidden when the user scrolls down and shown when the user scrolls up. Only applies when the theme is `"ionic"` and `expand` is `"compact"`.
|
|
10058
|
-
* @default false
|
|
10059
|
-
*/
|
|
10060
|
-
"hideOnScroll"?: boolean;
|
|
10061
10079
|
/**
|
|
10062
10080
|
* The mode determines the platform behaviors of the component.
|
|
10063
10081
|
*/
|
|
10064
10082
|
"mode"?: "ios" | "md";
|
|
10083
|
+
/**
|
|
10084
|
+
* Describes the scroll effect that will be applied to the tab bar. `"hide"` slides the tab bar out of view when scrolling down and back in when scrolling up. Note: `"hide"` is ignored when the tab bar is nested inside an `ion-footer` to avoid leaving an empty footer visible on screen. Set `scroll-effect="hide"` on the footer instead so the entire footer hides together.
|
|
10085
|
+
*/
|
|
10086
|
+
"scrollEffect"?: TabBarScrollEffect;
|
|
10065
10087
|
/**
|
|
10066
10088
|
* The selected tab component
|
|
10067
10089
|
*/
|
|
@@ -10829,6 +10851,7 @@ declare namespace LocalJSX {
|
|
|
10829
10851
|
"side": 'start' | 'end' | 'top' | 'bottom';
|
|
10830
10852
|
}
|
|
10831
10853
|
interface IonFooterAttributes {
|
|
10854
|
+
"scrollEffect": FooterScrollEffect;
|
|
10832
10855
|
"collapse": 'fade';
|
|
10833
10856
|
"translucent": boolean;
|
|
10834
10857
|
}
|
|
@@ -10842,6 +10865,7 @@ declare namespace LocalJSX {
|
|
|
10842
10865
|
"fixed": boolean;
|
|
10843
10866
|
}
|
|
10844
10867
|
interface IonHeaderAttributes {
|
|
10868
|
+
"scrollEffect": HeaderScrollEffect;
|
|
10845
10869
|
"collapse": 'condense' | 'fade';
|
|
10846
10870
|
"divider": boolean;
|
|
10847
10871
|
"translucent": boolean;
|
|
@@ -11264,7 +11288,7 @@ declare namespace LocalJSX {
|
|
|
11264
11288
|
interface IonTabBarAttributes {
|
|
11265
11289
|
"color": Color;
|
|
11266
11290
|
"selectedTab": string;
|
|
11267
|
-
"
|
|
11291
|
+
"scrollEffect": TabBarScrollEffect;
|
|
11268
11292
|
"translucent": boolean;
|
|
11269
11293
|
"expand": 'compact' | 'full';
|
|
11270
11294
|
"shape": 'soft' | 'round' | 'rectangular';
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export interface ScrollHideOptions {
|
|
2
|
+
/** The component's host element. */
|
|
3
|
+
el: HTMLElement;
|
|
4
|
+
/** CSS variable name for the hide height, e.g. `--internal-header-hide-height`. */
|
|
5
|
+
cssVar: string;
|
|
6
|
+
/** Class toggled on the component when hidden, e.g. `header-scroll-hidden`. */
|
|
7
|
+
hiddenClass: string;
|
|
8
|
+
/** Class added to content when the scroll-hide effect is active, e.g. `content-header-hide-scroll-partner`. */
|
|
9
|
+
contentPartnerClass: string;
|
|
10
|
+
/** Class toggled on content when hidden, e.g. `content-header-hide-scroll-hidden`. */
|
|
11
|
+
contentHiddenClass: string;
|
|
12
|
+
/**
|
|
13
|
+
* Optional guard called before removing aria-hidden on show.
|
|
14
|
+
* Return `true` to keep aria-hidden (e.g. when the keyboard is open).
|
|
15
|
+
*/
|
|
16
|
+
shouldKeepAriaHidden?: () => boolean;
|
|
17
|
+
}
|
|
18
|
+
export type ScrollHideController = {
|
|
19
|
+
/** Whether the component is currently hidden by the scroll effect. */
|
|
20
|
+
isHidden: () => boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Activate the controller by attaching listeners, observers, and
|
|
23
|
+
* content classes. Must be called only after the caller confirms this
|
|
24
|
+
* setup is still current (promise-identity guard). A controller that
|
|
25
|
+
* is never initialized has no side effects and can be discarded.
|
|
26
|
+
*/
|
|
27
|
+
init: () => void;
|
|
28
|
+
/** Destroy all listeners, observers, and clean up DOM state. */
|
|
29
|
+
destroy: () => void;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Creates a controller that manages scroll-based hide/show behavior
|
|
33
|
+
* for headers, footers, and tab bars.
|
|
34
|
+
*
|
|
35
|
+
* Listens to both wheel and scroll events. Wheel events (desktop mice)
|
|
36
|
+
* give direction instantly via deltaY. Scroll events cover touch,
|
|
37
|
+
* trackpad, and programmatic scrolling where wheel doesn't fire.
|
|
38
|
+
* A short suppression window stops them from double-processing the
|
|
39
|
+
* same gesture.
|
|
40
|
+
*
|
|
41
|
+
* When the user reverses scroll direction, we save that position as
|
|
42
|
+
* an anchor. The bar only hides after scrolling 60px past that
|
|
43
|
+
* anchor, which prevents flickering on small or jittery movements.
|
|
44
|
+
* Showing is immediate on direction change.
|
|
45
|
+
*
|
|
46
|
+
* When `options` is provided, the controller also handles the DOM
|
|
47
|
+
* setup: ResizeObserver for height tracking, CSS variable read/write,
|
|
48
|
+
* content partner/hidden class toggling, inert/aria-hidden, and
|
|
49
|
+
* full teardown cleanup. This avoids duplicating the same setup
|
|
50
|
+
* across header, footer, and tab-bar.
|
|
51
|
+
*
|
|
52
|
+
* @internal
|
|
53
|
+
* @param contentEl The content element to resolve the scroll element from.
|
|
54
|
+
* @param options Configuration for DOM setup (classes, CSS vars, a11y).
|
|
55
|
+
*/
|
|
56
|
+
export declare const createScrollHideController: (contentEl: HTMLElement, options: ScrollHideOptions) => Promise<ScrollHideController>;
|