IdentityModal.js 2.9 KB

12345
  1. /*
  2. All material copyright ESRI, All Rights Reserved, unless otherwise specified.
  3. See https://js.arcgis.com/4.25/esri/copyright.txt for details.
  4. */
  5. import{_ as t}from"../chunks/tslib.es6.js";import{makeHandle as e}from"../core/handleUtils.js";import{watch as o}from"../core/reactiveUtils.js";import{property as s}from"../core/accessorSupport/decorators/property.js";import"../core/arrayUtils.js";import"../core/accessorSupport/ensureType.js";import{subclass as i}from"../core/accessorSupport/decorators/subclass.js";import r from"../widgets/Widget.js";import{isWidget as n}from"../widgets/support/widget.js";import{createFocusTrap as a}from"focus-trap";import{tsx as c}from"../widgets/support/jsxFactory.js";import{messageBundle as d}from"../widgets/support/decorators/messageBundle.js";const l={base:"esri-identity-modal",open:"esri-identity-modal--open",closed:"esri-identity-modal--closed",title:"esri-identity-modal__title",dialog:"esri-identity-modal__dialog",content:"esri-identity-modal__content",closeButton:"esri-identity-modal__close-button",iconClose:"esri-icon-close"};let p=class extends r{constructor(t,e){super(t,e),this.container=document.createElement("div"),this.content=null,this.open=!1,this._focusTrap=null,this._close=()=>{this.open=!1},document.body.appendChild(this.container),this.addHandles(o((()=>this.open),(()=>this._toggleFocusTrap())))}destroy(){this._destroyFocusTrap()}get title(){return this.messages?.auth.signIn}render(){const t=this.id,{open:e,content:o,title:s,messages:i}=this,r=e&&!!o,n={[l.open]:r,[l.closed]:!r},a=c("button",{class:l.closeButton,"aria-label":i.close,title:i.close,bind:this,onclick:this._close,type:"button"},c("span",{"aria-hidden":"true",class:l.iconClose})),d=`${t}_title`,p=`${t}_content`,u=s?c("h1",{id:d,class:l.title},s):null,m=r?c("div",{bind:this,class:l.dialog,role:"dialog","aria-labelledby":d,"aria-describedby":p,afterCreate:this._createFocusTrap},a,u,this._renderContent(p)):null;return c("div",{tabIndex:-1,class:this.classes(l.base,n)},m)}_destroyFocusTrap(){this._focusTrap?.deactivate({onDeactivate:()=>{}}),this._focusTrap=null}_toggleFocusTrap(){const{_focusTrap:t,open:e}=this;t&&(e?t.activate():t.deactivate())}_createFocusTrap(t){this._destroyFocusTrap();const o=requestAnimationFrame((()=>{this._focusTrap=a(t,{initialFocus:"input",onDeactivate:this._close}),this._toggleFocusTrap()}));this.addHandles(e((()=>cancelAnimationFrame(o))))}_renderContent(t){const e=this.content;return"string"==typeof e?c("div",{class:l.content,id:t,innerHTML:e}):n(e)?c("div",{class:l.content,id:t},e.render()):e instanceof HTMLElement?c("div",{class:l.content,id:t,bind:e,afterCreate:this._attachToNode}):null}_attachToNode(t){const e=this;t.appendChild(e)}};t([s({readOnly:!0})],p.prototype,"container",void 0),t([s()],p.prototype,"content",void 0),t([s()],p.prototype,"open",void 0),t([s(),d("esri/t9n/common")],p.prototype,"messages",void 0),t([s()],p.prototype,"title",null),p=t([i("esri.identity.IdentityModal")],p);const u=p;export{u as default};