@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
3 lines (2 loc) • 6.54 kB
JavaScript
/* COPYRIGHT Esri - https://js.arcgis.com/5.0.8/LICENSE.txt */
import{__decorate as e}from"tslib";import{substitute as t}from"../intl.js";import{deprecateWidget as i}from"../core/deprecate.js";import r from"../core/Logger.js";import{watch as o,initial as s}from"../core/reactiveUtils.js";import{property as n,subclass as l}from"../core/accessorSupport/decorators.js";import{isTable as a}from"../layers/support/layerUtils.js";import d from"./Widget.js";import{nullGroupBy as c,isTemplateItemGroup as m}from"./FeatureTemplates/featureTemplatesUtils.js";import p from"./FeatureTemplates/FeatureTemplatesViewModel.js";import u from"./FeatureTemplates/VisibleElements.js";import{loadCalciteComponents as h}from"./support/componentsUtils.js";import{globalCss as f}from"./support/globalCss.js";import{ItemList as v}from"./support/ItemList.js";import{fetchThumbnail as g}from"./support/symbolPreviewUtils.js";import{messageBundle as b,vmEvent as y,tsx as I}from"./support/widget.js";const C={base:"esri-feature-templates"};function w(e){return e.length>0&&m(e[0])}function L(e){return e.id}let M=class extends d{constructor(e,o){super(e,o),this.enableListScroll=!0,this.filterText="",this.headingLevel=4,this.messages=null,this.messagesCommon=null,this.messagesLegend=null,this.selectionMode="none",this.viewModel=new p,this.visibleElements=new u,this.renderCustomItem=e=>null,this.renderCustomGroupContent=e=>null,this.renderItemLabel=()=>null,this.renderItemDescription=()=>null,this.renderItemContent=e=>null,this.renderItemContentEnd=e=>null,this._iconIntersectionObserver=new IntersectionObserver((e,i)=>{e.forEach(async e=>{if(e.isIntersecting){const r=e.target;if(T(r))return void i.unobserve(r);const o=F(r),{layer:s,template:n}=o;j(r,!0);const l=o.label?t(this.messagesLegend.previewTemplateAriaLabel,{label:o.label}):this.messagesCommon.preview,a=await g(n,s,{ariaLabel:l}).catch(()=>(j(r,!1),null));if(null==a)return;r.appendChild(a)}})}),this._renderItemIcon=e=>a(e.layer)?I("span",{"data-has-icon":!0,"data-item":e,key:"icon"},I("calcite-icon",{icon:"table"})):I("span",{afterCreate:this._afterItemCreateOrUpdate,afterRemoved:this._afterItemRemoved,afterUpdate:this._afterItemCreateOrUpdate,"data-has-icon":!1,"data-item":e,key:"icon"}),this._afterItemCreateOrUpdate=e=>{this._iconIntersectionObserver?.observe(e)},this._afterItemRemoved=e=>{this._iconIntersectionObserver?.unobserve(e)},e?.suppressDeprecationWarning||(this.announceDeprecation=()=>{i(r.getLogger(this),"Feature Templates","arcgis-feature-templates-legacy",{version:"5.0"})})}normalizeCtorArgs(e={}){const{suppressDeprecationWarning:t,...i}=e;return i}initialize(){const e=({label:e})=>!this.filterText||!!e?.toLowerCase().includes(this.filterText.toLowerCase());this.addHandles(o(()=>this.viewModel,(t,i)=>{t&&!t.filterFunction&&(this.filterFunction=e),i&&i!==t&&i.filterFunction===e&&(i.filterFunction=null)},s))}destroy(){this._iconIntersectionObserver?.disconnect(),this._iconIntersectionObserver=null}loadDependencies(){return h({icon:()=>import("@esri/calcite-components/dist/components/calcite-icon"),loader:()=>import("@esri/calcite-components/dist/components/calcite-loader"),input:()=>import("@esri/calcite-components/dist/components/calcite-input"),list:()=>import("@esri/calcite-components/dist/components/calcite-list"),"list-item":()=>import("@esri/calcite-components/dist/components/calcite-list-item"),notice:()=>import("@esri/calcite-components/dist/components/calcite-notice")})}get disabled(){return this.viewModel.disabled}set disabled(e){this.viewModel.disabled=e}get filterFunction(){return this.viewModel.filterFunction}set filterFunction(e){this.viewModel.filterFunction=e}get groupBy(){return this.viewModel.groupBy}set groupBy(e){this.viewModel.groupBy=e}get icon(){return"list-rectangle"}set icon(e){this._overrideIfSome("icon",e)}get label(){return this.messages?.widgetLabel??""}set label(e){this._overrideIfSome("label",e)}get layers(){return this.viewModel.layers}set layers(e){this.viewModel.layers=e}get selectedItem(){return this.viewModel.selectedItem}select(e,t){return this.viewModel.select(e,t)}render(){const{disabled:e,enableListScroll:t,filterText:i,headingLevel:r,messages:o,viewModel:{items:s,numberOfFeatureTemplates:n,selectedItem:l,state:a}}=this,d=this.visibleElements.filter&&n>1;if(w(s)){const e=s.find(e=>e.label===c.label);e&&(e.label=o.other)}return I("div",{"aria-label":o.widgetLabel,class:this.classes(C.base,f.widget)},"loading"===a?I("calcite-loader",{key:"loader",label:this.messagesCommon.loading,type:"indeterminate"}):"ready"===a?I(v,{disabled:e,enableListScroll:t,filterEnabled:d,filterText:i,headingLevel:r,id:this.id,identify:L,items:s,messages:{filterPlaceholder:o.filterPlaceholder,noItems:o.noItems,noMatches:o.noMatches},renderCustomGroupContent:this.renderCustomGroupContent,renderCustomItem:this.renderCustomItem,renderIcon:this._renderItemIcon,renderItemContent:this.renderItemContent,renderItemContentEnd:this.renderItemContentEnd,renderItemDescription:this.renderItemDescription,renderItemLabel:this.renderItemLabel,selectedItem:l??void 0,selectionMode:this.selectionMode??void 0,onFilterChange:e=>{this.filterText=e},onItemSelect:e=>!m(e)&&this.viewModel.select(e)}):null)}};function F(e){return e?.["data-item"]}function T(e){return!!e?.["data-has-icon"]}function j(e,t){e&&(e["data-has-icon"]=t)}e([n()],M.prototype,"disabled",null),e([n()],M.prototype,"enableListScroll",void 0),e([n()],M.prototype,"filterFunction",null),e([n()],M.prototype,"filterText",void 0),e([n()],M.prototype,"groupBy",null),e([n()],M.prototype,"headingLevel",void 0),e([n()],M.prototype,"icon",null),e([n()],M.prototype,"label",null),e([n()],M.prototype,"layers",null),e([n(),b("esri/widgets/FeatureTemplates/t9n/FeatureTemplates")],M.prototype,"messages",void 0),e([n(),b("esri/t9n/common")],M.prototype,"messagesCommon",void 0),e([n(),b("esri/widgets/Legend/t9n/Legend")],M.prototype,"messagesLegend",void 0),e([n({readOnly:!0})],M.prototype,"selectedItem",null),e([n()],M.prototype,"selectionMode",void 0),e([n({type:p}),y("select")],M.prototype,"viewModel",void 0),e([n({type:u,nonNullable:!0})],M.prototype,"visibleElements",void 0),e([n()],M.prototype,"renderCustomItem",void 0),e([n()],M.prototype,"renderCustomGroupContent",void 0),e([n()],M.prototype,"renderItemLabel",void 0),e([n()],M.prototype,"renderItemDescription",void 0),e([n()],M.prototype,"renderItemContent",void 0),e([n()],M.prototype,"renderItemContentEnd",void 0),M=e([l("esri.widgets.FeatureTemplates")],M);const _=M;export{_ as default};