c.f737bc56.js 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import{a as e,h as t,e as n,t as i,i as o,$ as a,av as d,o as s,L as r,N as l,A as h,ae as c,r as p,n as u}from"./main-bfa41146.js";e([u("ha-expansion-panel")],(function(e,t){class u extends t{constructor(...t){super(...t),e(this)}}return{F:u,d:[{kind:"field",decorators:[n({type:Boolean,reflect:!0})],key:"expanded",value:()=>!1},{kind:"field",decorators:[n({type:Boolean,reflect:!0})],key:"outlined",value:()=>!1},{kind:"field",decorators:[n({type:Boolean,reflect:!0})],key:"leftChevron",value:()=>!1},{kind:"field",decorators:[n()],key:"header",value:void 0},{kind:"field",decorators:[n()],key:"secondary",value:void 0},{kind:"field",decorators:[i()],key:"_showContent",value(){return this.expanded}},{kind:"field",decorators:[o(".container")],key:"_container",value:void 0},{kind:"method",key:"render",value:function(){return a`
  2. <div class="top">
  3. <div
  4. id="summary"
  5. @click=${this._toggleContainer}
  6. @keydown=${this._toggleContainer}
  7. @focus=${this._focusChanged}
  8. @blur=${this._focusChanged}
  9. role="button"
  10. tabindex="0"
  11. aria-expanded=${this.expanded}
  12. aria-controls="sect1"
  13. >
  14. ${this.leftChevron?a`
  15. <ha-svg-icon
  16. .path=${d}
  17. class="summary-icon ${s({expanded:this.expanded})}"
  18. ></ha-svg-icon>
  19. `:""}
  20. <slot name="header">
  21. <div class="header">
  22. ${this.header}
  23. <slot class="secondary" name="secondary">${this.secondary}</slot>
  24. </div>
  25. </slot>
  26. ${this.leftChevron?"":a`
  27. <ha-svg-icon
  28. .path=${d}
  29. class="summary-icon ${s({expanded:this.expanded})}"
  30. ></ha-svg-icon>
  31. `}
  32. </div>
  33. <slot name="icons"></slot>
  34. </div>
  35. <div
  36. class="container ${s({expanded:this.expanded})}"
  37. @transitionend=${this._handleTransitionEnd}
  38. role="region"
  39. aria-labelledby="summary"
  40. aria-hidden=${!this.expanded}
  41. tabindex="-1"
  42. >
  43. ${this._showContent?a`<slot></slot>`:""}
  44. </div>
  45. `}},{kind:"method",key:"willUpdate",value:function(e){r(l(u.prototype),"willUpdate",this).call(this,e),e.has("expanded")&&this.expanded&&(this._showContent=this.expanded,setTimeout((()=>{this.expanded&&(this._container.style.overflow="initial")}),300))}},{kind:"method",key:"_handleTransitionEnd",value:function(){this._container.style.removeProperty("height"),this._container.style.overflow=this.expanded?"initial":"hidden",this._showContent=this.expanded}},{kind:"method",key:"_toggleContainer",value:async function(e){if(e.defaultPrevented)return;if("keydown"===e.type&&"Enter"!==e.key&&" "!==e.key)return;e.preventDefault();const t=!this.expanded;h(this,"expanded-will-change",{expanded:t}),this._container.style.overflow="hidden",t&&(this._showContent=!0,await c());const n=this._container.scrollHeight;this._container.style.height=`${n}px`,t||setTimeout((()=>{this._container.style.height="0px"}),0),this.expanded=t,h(this,"expanded-changed",{expanded:this.expanded})}},{kind:"method",key:"_focusChanged",value:function(e){this.shadowRoot.querySelector(".top").classList.toggle("focused","focus"===e.type)}},{kind:"get",static:!0,key:"styles",value:function(){return p`
  46. :host {
  47. display: block;
  48. }
  49. .top {
  50. display: flex;
  51. align-items: center;
  52. }
  53. .top.focused {
  54. background: var(--input-fill-color);
  55. }
  56. :host([outlined]) {
  57. box-shadow: none;
  58. border-width: 1px;
  59. border-style: solid;
  60. border-color: var(
  61. --ha-card-border-color,
  62. var(--divider-color, #e0e0e0)
  63. );
  64. border-radius: var(--ha-card-border-radius, 4px);
  65. }
  66. .summary-icon {
  67. margin-left: 8px;
  68. }
  69. :host([leftchevron]) .summary-icon {
  70. margin-left: 0;
  71. margin-right: 8px;
  72. }
  73. #summary {
  74. flex: 1;
  75. display: flex;
  76. padding: var(--expansion-panel-summary-padding, 0 8px);
  77. min-height: 48px;
  78. align-items: center;
  79. cursor: pointer;
  80. overflow: hidden;
  81. font-weight: 500;
  82. outline: none;
  83. }
  84. .summary-icon {
  85. transition: transform 150ms cubic-bezier(0.4, 0, 0.2, 1);
  86. direction: var(--direction);
  87. }
  88. .summary-icon.expanded {
  89. transform: rotate(180deg);
  90. }
  91. .header,
  92. ::slotted([slot="header"]) {
  93. flex: 1;
  94. }
  95. .container {
  96. padding: var(--expansion-panel-content-padding, 0 8px);
  97. overflow: hidden;
  98. transition: height 300ms cubic-bezier(0.4, 0, 0.2, 1);
  99. height: 0px;
  100. }
  101. .container.expanded {
  102. height: auto;
  103. }
  104. .secondary {
  105. display: block;
  106. color: var(--secondary-text-color);
  107. font-size: 12px;
  108. }
  109. `}}]}}),t);