UNPKG

@ionic/core

Version:
4 lines • 12 kB
/*! * (C) Ionic http://ionicframework.com - MIT License */ import{r as t,i as o,h as i,f as n,g as e,d as a,a as s}from"./p-BpRUsN_W.js";import{g as r,r as d,f as c,m as h,t as l}from"./p-Co7eql8D.js";import{b as p}from"./p-BvabGprD.js";import{b as g}from"./p-SEecsUh7.js";import"./p-Dojwmvde.js";const b=class{constructor(i){t(this,i),this.accordionGroupUpdateHandler=()=>{const t=this.accordionGroupEl;if(t){const o=t.value,i=this.value,n=Array.isArray(o)?o.includes(i):o===i;this.hasReceivedFirstUpdate&&n!==(4===this.state||8===this.state)&&(this.hasInteracted=!0),void 0!==o&&(this.hasReceivedFirstUpdate=!0)}this.updateState()},this.state=1,this.isNext=!1,this.isPrevious=!1,this.hasInteracted=!1,this.hasEverBeenExpanded=!1,this.hasReceivedFirstUpdate=!1,this.value="ion-accordion-"+u++,this.disabled=!1,this.readonly=!1,this.toggleIcon=p,this.toggleIconSlot="end",this.setItemDefaults=()=>{const t=this.getSlottedHeaderIonItem();t&&(t.button=!0,t.detail=!1,void 0===t.lines&&(t.lines="full"))},this.getSlottedHeaderIonItem=()=>{const{headerEl:t}=this;if(!t)return;const o=t.querySelector("slot");return o&&void 0!==o.assignedElements?o.assignedElements().find((t=>"ION-ITEM"===t.tagName)):void 0},this.setAria=(t=!1)=>{const o=this.getSlottedHeaderIonItem();if(!o)return;const i=r(o).querySelector("button");i&&i.setAttribute("aria-expanded",`${t}`)},this.slotToggleIcon=()=>{const t=this.getSlottedHeaderIonItem();if(!t)return;const{toggleIconSlot:o,toggleIcon:i}=this;if(t.querySelector(".ion-accordion-toggle-icon"))return;const n=document.createElement("ion-icon");n.slot=o,n.lazy=!1,n.classList.add("ion-accordion-toggle-icon"),n.icon=i,n.setAttribute("aria-hidden","true"),t.appendChild(n)},this.expandAccordion=()=>{const{contentEl:t,contentElWrapper:o}=this;if(void 0===t||void 0===o)return this.state=4,void(this.hasEverBeenExpanded=!0);4!==this.state&&(void 0!==this.currentRaf&&cancelAnimationFrame(this.currentRaf),this.hasEverBeenExpanded=!0,this.shouldAnimate()?d((()=>{this.state=8,this.currentRaf=d((async()=>{const i=o.offsetHeight,n=l(t,2e3);t.style.setProperty("max-height",`${i}px`),await n,this.state=4,t.style.removeProperty("max-height")}))})):this.state=4)},this.collapseAccordion=()=>{const{contentEl:t}=this;void 0!==t?1!==this.state&&(void 0!==this.currentRaf&&cancelAnimationFrame(this.currentRaf),this.shouldAnimate()?this.currentRaf=d((async()=>{t.style.setProperty("max-height",`${t.offsetHeight}px`),d((async()=>{const o=l(t,2e3);this.state=2,await o,this.state=1,t.style.removeProperty("max-height")}))})):this.state=1):this.state=1},this.shouldAnimate=()=>!(!this.hasInteracted||!this.hasEverBeenExpanded)&&("undefined"!=typeof window&&(!matchMedia("(prefers-reduced-motion: reduce)").matches&&!(!o.get("animated",!0)||this.accordionGroupEl&&!this.accordionGroupEl.animated))),this.updateState=async()=>{const t=this.accordionGroupEl,o=this.value;if(!t)return;const i=t.value;if(Array.isArray(i)?i.includes(o):i===o)this.expandAccordion(),this.isNext=this.isPrevious=!1;else{this.collapseAccordion();const t=this.getNextSibling(),o=t?.value;void 0!==o&&(this.isPrevious=Array.isArray(i)?i.includes(o):i===o);const n=this.getPreviousSibling(),e=n?.value;void 0!==e&&(this.isNext=Array.isArray(i)?i.includes(e):i===e)}},this.getNextSibling=()=>{if(!this.el)return;const t=this.el.nextElementSibling;return"ION-ACCORDION"===t?.tagName?t:void 0},this.getPreviousSibling=()=>{if(!this.el)return;const t=this.el.previousElementSibling;return"ION-ACCORDION"===t?.tagName?t:void 0}}valueChanged(){this.updateState()}connectedCallback(){const t=this.accordionGroupEl=this.el?.closest("ion-accordion-group");t&&(this.updateState(),c(t,"ionValueChange",this.accordionGroupUpdateHandler))}disconnectedCallback(){const t=this.accordionGroupEl;t&&h(t,"ionValueChange",this.accordionGroupUpdateHandler)}componentDidLoad(){this.setItemDefaults(),this.slotToggleIcon(),d((()=>{this.setAria(4===this.state||8===this.state)}))}toggleExpanded(){const{accordionGroupEl:t,disabled:o,readonly:i,value:n,state:e}=this;o||i||(this.hasInteracted=!0,!t)||t.requestAccordionToggle(n,1===e||2===e)}render(){const{disabled:t,readonly:o}=this,e=g(this),a=4===this.state||8===this.state,s=a?"header expanded":"header",r=a?"content expanded":"content";return this.setAria(a),i(n,{key:"5c58b3809a4636d69f0f9957ecf1f50c42cdfc03",class:{[e]:!0,"accordion-expanding":8===this.state,"accordion-expanded":4===this.state,"accordion-collapsing":2===this.state,"accordion-collapsed":1===this.state,"accordion-next":this.isNext,"accordion-previous":this.isPrevious,"accordion-disabled":t,"accordion-readonly":o,"accordion-animated":this.shouldAnimate()},tabindex:t?"-1":void 0},i("div",{key:"f76bc02347639b41c9a5be8a9488a8be8559cba7",onClick:()=>this.toggleExpanded(),id:"header",part:s,"aria-controls":"content",ref:t=>this.headerEl=t},i("slot",{key:"e01744bf0af3200239e82c60c632ed36295db2da",name:"header"})),i("div",{key:"c613345a7e244ee361f76ff4ebed139d2a1b9572",id:"content",part:r,role:"region","aria-labelledby":"header",ref:t=>this.contentEl=t},i("div",{key:"943b65d9a129759b4c213974ae5ed777b5f6166e",id:"content-wrapper",ref:t=>this.contentElWrapper=t},i("slot",{key:"b0df520dad9d5557df63a35f8206ada4a765d238",name:"content"}))))}static get delegatesFocus(){return!0}get el(){return e(this)}static get watchers(){return{value:[{valueChanged:0}]}}};let u=0;b.style={ios:":host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-expanding) #content-wrapper{overflow:auto}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}:host(.accordion-next) ::slotted(ion-item[slot=header]){--border-width:0.55px 0px 0.55px 0px}",md:":host{display:block;position:relative;width:100%;background-color:var(--ion-background-color, #ffffff);overflow:hidden;z-index:0}:host(.accordion-expanding) ::slotted(ion-item[slot=header]),:host(.accordion-expanded) ::slotted(ion-item[slot=header]){--border-width:0px}:host(.accordion-animated){-webkit-transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:all 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}:host(.accordion-animated) #content{-webkit-transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1);transition:max-height 300ms cubic-bezier(0.25, 0.8, 0.5, 1)}#content{overflow:hidden;will-change:max-height}:host(.accordion-collapsing) #content{max-height:0 !important}:host(.accordion-collapsed) #content{display:none}:host(.accordion-expanding) #content{max-height:0}:host(.accordion-expanding) #content-wrapper{overflow:auto}:host(.accordion-disabled) #header,:host(.accordion-readonly) #header,:host(.accordion-disabled) #content,:host(.accordion-readonly) #content{pointer-events:none}:host(.accordion-disabled) #header,:host(.accordion-disabled) #content{opacity:0.4}@media (prefers-reduced-motion: reduce){:host,#content{-webkit-transition:none !important;transition:none !important}}"};const x=class{constructor(o){t(this,o),this.ionChange=a(this,"ionChange",7),this.ionValueChange=a(this,"ionValueChange",7),this.animated=!0,this.disabled=!1,this.readonly=!1,this.expand="compact"}valueChanged(){const{value:t,multiple:o}=this;!o&&Array.isArray(t)&&s(`[ion-accordion-group] - An array of values was passed, but multiple is "false". This is incorrect usage and may result in unexpected behaviors. To dismiss this warning, pass a string to the "value" property when multiple="false".\n\n Value Passed: [${t.map((t=>`'${t}'`)).join(", ")}]\n`,this.el),this.ionValueChange.emit({value:this.value})}async disabledChanged(){const{disabled:t}=this,o=await this.getAccordions();for(const i of o)i.disabled=t}async readonlyChanged(){const{readonly:t}=this,o=await this.getAccordions();for(const i of o)i.readonly=t}async onKeydown(t){const o=document.activeElement;if(!o)return;if(!o.closest('ion-accordion [slot="header"]'))return;const i="ION-ACCORDION"===o.tagName?o:o.closest("ion-accordion");if(!i)return;if(i.closest("ion-accordion-group")!==this.el)return;const n=await this.getAccordions(),e=n.findIndex((t=>t===i));if(-1===e)return;let a;"ArrowDown"===t.key?a=this.findNextAccordion(n,e):"ArrowUp"===t.key?a=this.findPreviousAccordion(n,e):"Home"===t.key?a=n[0]:"End"===t.key&&(a=n[n.length-1]),void 0!==a&&a!==o&&a.focus()}async componentDidLoad(){this.disabled&&this.disabledChanged(),this.readonly&&this.readonlyChanged(),this.valueChanged()}setValue(t){const o=this.value=t;this.ionChange.emit({value:o})}async requestAccordionToggle(t,o){const{multiple:i,value:n,readonly:e,disabled:a}=this;if(!e&&!a)if(o)if(i){const o=n??[],i=Array.isArray(o)?o:[o];void 0===i.find((o=>o===t))&&void 0!==t&&this.setValue([...i,t])}else this.setValue(t);else if(i){const o=n??[],i=Array.isArray(o)?o:[o];this.setValue(i.filter((o=>o!==t)))}else this.setValue(void 0)}findNextAccordion(t,o){const i=t[o+1];return void 0===i?t[0]:i}findPreviousAccordion(t,o){const i=t[o-1];return void 0===i?t[t.length-1]:i}async getAccordions(){return Array.from(this.el.querySelectorAll(":scope > ion-accordion"))}render(){const{disabled:t,readonly:o,expand:e}=this,a=g(this);return i(n,{key:"d1a79a93179474fbba66fcf11a92f4871dacc975",class:{[a]:!0,"accordion-group-disabled":t,"accordion-group-readonly":o,[`accordion-group-expand-${e}`]:!0},role:"presentation"},i("slot",{key:"e6b8954b686d1fbb4fc92adb07fddc97a24b0a31"}))}get el(){return e(this)}static get watchers(){return{value:[{valueChanged:0}],disabled:[{disabledChanged:0}],readonly:[{readonlyChanged:0}]}}};x.style={ios:":host{display:block}:host(.accordion-group-expand-inset){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:16px;margin-bottom:16px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanding),:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanded){border-bottom:none}",md:":host{display:block}:host(.accordion-group-expand-inset){-webkit-margin-start:16px;margin-inline-start:16px;-webkit-margin-end:16px;margin-inline-end:16px;margin-top:16px;margin-bottom:16px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion){-webkit-box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);box-shadow:0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12)}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanding),:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-expanded){margin-left:0;margin-right:0;margin-top:16px;margin-bottom:16px;border-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-previous){border-end-end-radius:6px;border-end-start-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion.accordion-next){border-start-start-radius:6px;border-start-end-radius:6px}:host(.accordion-group-expand-inset) ::slotted(ion-accordion):first-of-type{margin-left:0;margin-right:0;margin-top:0;margin-bottom:0}"};export{b as ion_accordion,x as ion_accordion_group}