/* All material copyright ESRI, All Rights Reserved, unless otherwise specified. See https://js.arcgis.com/4.24/esri/copyright.txt for details. */ import{_ as e}from"../chunks/tslib.es6.js";import{aliasOf as t}from"../core/accessorSupport/decorators/aliasOf.js";import"../core/arrayUtils.js";import"../core/has.js";import"../core/accessorSupport/ensureType.js";import{property as o}from"../core/accessorSupport/decorators/property.js";import{subclass as n}from"../core/accessorSupport/decorators/subclass.js";import s from"./Widget.js";import r from"./Expand/ExpandViewModel.js";import{isWidget as a,hasDomNode as d}from"./support/widget.js";import{messageBundle as i}from"./support/decorators/messageBundle.js";import{accessibleHandler as p}from"./support/decorators/accessibleHandler.js";import{tsx as l}from"./support/jsxFactory.js";const c={base:"esri-expand esri-widget",modeAuto:"esri-expand--auto",modeDrawer:"esri-expand--drawer",modeFloating:"esri-expand--floating",container:"esri-expand__container",containerExpanded:"esri-expand__container--expanded",panel:"esri-expand__panel",button:"esri-widget--button",text:"esri-icon-font-fallback-text",icon:"esri-collapse__icon",iconExpanded:"esri-expand__icon--expanded",iconNumber:"esri-expand__icon-number",iconNumberExpanded:"esri-expand__icon-number--expanded",expandIcon:"esri-icon-expand",collapseIcon:"esri-icon-collapse",content:"esri-expand__content",contentExpanded:"esri-expand__content--expanded",expandMask:"esri-expand__mask",expandMaskExpanded:"esri-expand__mask--expanded"};let u=class extends s{constructor(e,t){super(e,t),this.autoCollapse=null,this.closeOnEsc=!0,this.collapseTooltip="",this.content="",this.expanded=null,this.expandTooltip="",this.group=null,this.iconNumber=0,this.label=void 0,this.messages=null,this.messagesCommon=null,this.mode="auto",this.view=null,this.viewModel=new r,this._handleKeyDown=e=>{const{closeOnEsc:t,_toggleButtonEl:o,expanded:n}=this;if(!n||!t||e.target===o||"Escape"!==e.key)return;("function"==typeof t?t(e):t)&&(this.expanded=!1,o?.focus())}}get contentId(){return`${this.id}_controls_content`}get expandTitle(){const{expanded:e,messagesCommon:t,collapseTooltip:o,expandTooltip:n}=this;return e?o||t.collapse:n||t.expand}get collapseIconClass(){return c.collapseIcon}set collapseIconClass(e){e?this._override("collapseIconClass",e):this._clearOverride("collapseIconClass")}get expandIconClass(){return a(this.content)?this.content.iconClass:c.expandIcon}set expandIconClass(e){e?this._override("expandIconClass",e):this._clearOverride("expandIconClass")}expand(){this.viewModel.expanded=!0}collapse(){this.viewModel.expanded=!1}toggle(){this.viewModel.expanded=!this.viewModel.expanded}render(){const{mode:e}=this,t={[c.modeAuto]:"auto"===e,[c.modeDrawer]:"drawer"===e,[c.modeFloating]:"floating"===e};return l("div",{class:this.classes(c.base,t),onkeydown:this._handleKeyDown},this.renderMask(),this.renderContainer())}renderContainer(){const{expanded:e}=this,t={[c.containerExpanded]:e};return l("div",{class:this.classes(c.container,t)},this.renderPanel(),this.renderContent())}renderMask(){const{expanded:e}=this,t={[c.expandMaskExpanded]:e};return l("div",{bind:this,onclick:this._toggle,class:this.classes(c.expandMask,t)})}renderBadgeNumber(){const{expanded:e,iconNumber:t}=this;return t&&!e?l("span",{key:"expand__icon-number",class:c.iconNumber},t):null}renderPanelNumber(){const{iconNumber:e,expanded:t}=this;return e&&t?l("span",{key:"expand__expand-icon-number",class:this.classes(c.iconNumber,c.iconNumberExpanded)},e):null}renderIcon(){const{collapseIconClass:e,expandIconClass:t,expanded:o}=this,n={[c.iconExpanded]:o,[e]:o,[t]:!o};return e===t&&(n[e]=!0),l("span",{"aria-hidden":"true",class:this.classes(c.icon,n)})}renderTitle(){return l("span",{class:c.text},this.expandTitle)}renderExpandButton(){const{expanded:e,expandTitle:t,contentId:o}=this;return l("div",{afterCreate:this._storeToggleButtonEl,"aria-controls":o,"aria-expanded":e?"true":"false",bind:this,class:c.button,onclick:this._toggle,onkeydown:this._toggle,role:"button",tabindex:"0",title:t},this.renderBadgeNumber(),this.renderIcon(),this.renderTitle())}renderPanel(){return l("div",{class:c.panel},this.renderExpandButton(),this.renderPanelNumber())}renderContent(){const{expanded:e,contentId:t,content:o}=this,n={[c.contentExpanded]:e},s={id:t,role:"region",class:this.classes(c.content,n)};return"string"==typeof o?l("div",{key:"content__string",innerHTML:o,...s}):a(o)?l("div",{key:"content__widget",...s},o.render()):o instanceof HTMLElement?l("div",{key:"content__html-element",bind:o,afterCreate:this._attachToNode,...s}):d(o)?l("div",{key:"content__node",bind:o.domNode,afterCreate:this._attachToNode,...s}):null}_toggle(){this.toggle()}_attachToNode(e){const t=this;e.appendChild(t)}_storeToggleButtonEl(e){this._toggleButtonEl=e}};e([o({readOnly:!0})],u.prototype,"contentId",null),e([o({readOnly:!0})],u.prototype,"expandTitle",null),e([t("viewModel.autoCollapse")],u.prototype,"autoCollapse",void 0),e([o()],u.prototype,"closeOnEsc",void 0),e([o()],u.prototype,"collapseIconClass",null),e([o()],u.prototype,"collapseTooltip",void 0),e([o()],u.prototype,"content",void 0),e([t("viewModel.expanded")],u.prototype,"expanded",void 0),e([o()],u.prototype,"expandIconClass",null),e([o()],u.prototype,"expandTooltip",void 0),e([t("viewModel.group")],u.prototype,"group",void 0),e([o()],u.prototype,"iconNumber",void 0),e([o({aliasOf:{source:"messages.widgetLabel",overridable:!0}})],u.prototype,"label",void 0),e([o(),i("esri/widgets/Expand/t9n/Expand")],u.prototype,"messages",void 0),e([o(),i("esri/t9n/common")],u.prototype,"messagesCommon",void 0),e([o()],u.prototype,"mode",void 0),e([t("viewModel.view")],u.prototype,"view",void 0),e([o({type:r})],u.prototype,"viewModel",void 0),e([p()],u.prototype,"_toggle",null),u=e([n("esri.widgets.Expand")],u);const x=u;export{x as default};