@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 3.85 kB
JavaScript
/*
All material copyright ESRI, All Rights Reserved, unless otherwise specified.
See https://js.arcgis.com/4.33/esri/copyright.txt for details.
*/
import{_ as e}from"../../../../chunks/tslib.es6.js";import"../../../../intl.js";import{property as s}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as t}from"../../../../core/accessorSupport/decorators/subclass.js";import r from"../../../Widget.js";import{css as i}from"./css.js";import o from"./LegendElement.js";import{loadCalciteComponents as n}from"../../../support/componentsUtils.js";import"../../../support/widgetUtils.js";import{messageBundle as a}from"../../../support/decorators/messageBundle.js";import{tsx as l}from"../../../support/jsxFactory.js";import{substitute as c}from"../../../../intl/substitute.js";const d=768;let p=class extends r{constructor(e,s){super(e,s),this._hasIndicators=!1,this.activeLayerInfos=null,this.headingLevel=3,this.layout="stack",this.messages=null,this.messagesCommon=null,this.type="card",this.view=null}loadDependencies(){return n({carousel:()=>import("@esri/calcite-components/dist/components/calcite-carousel"),"carousel-item":()=>import("@esri/calcite-components/dist/components/calcite-carousel-item")})}render(){this._hasIndicators="auto"===this.layout&&this.view&&this.view.container.clientWidth<=d||"stack"===this.layout;const e=this._hasIndicators?this._renderCarousel():this._renderLayers(),s={[i.stacked]:this._hasIndicators};return l("div",{class:this.classes(i.base,s)},e||l("div",{class:i.message},this.messages.noLegend))}_renderCarousel(){const e=[],s=this.activeLayerInfos;if(s)for(const t of s)this._renderSections(t,e);return e?.length?l("calcite-carousel",{class:i.carousel,label:this.messages.carousel},e.map(((s,t)=>l("calcite-carousel-item",{class:i.carouselItem,key:t,label:c(this.messagesCommon.pagination.pageText,{index:t+1,total:e.length})},s)))):null}_renderLayers(){const e=this.activeLayerInfos,s=e?.toArray()?.map((e=>this._renderLegendForLayer(e))).filter(Boolean);return s?.length?s:null}_renderLegendForLayer(e){if(!e.ready)return null;if(e.children.length){const s=e.children.toArray().map(this._renderLegendForLayer,this);return l("section",{class:this.classes(i.service,i.groupLayer),key:e.layer.uid},l("div",{class:i.serviceCaptionContainer},e.title),s)}return this._renderLegendElementsForLayer(e)}_renderLegendElementsForLayer(e){const s=e.legendElements?.filter(Boolean);if(!s?.length)return null;const t=s.map((s=>l(o,{activeLayerInfo:e,effectList:e.effectList,hasIndicators:this._hasIndicators,headingLevel:this.headingLevel,isChild:!1,key:`${e.layer.uid}-${s.type}`,layer:e.layer,legendElement:s,messages:this.messages}))),r={[i.groupLayerChild]:!!e.parent};return l("section",{class:this.classes(i.service,r),key:e.layer.uid},l("div",{class:i.serviceCaptionContainer},l("div",{class:i.serviceCaptionText},e.title)),l("div",{class:i.serviceContent},t))}_renderSections(e,s){if(!e.ready)return;if(e.children.length)for(const r of e.children)this._renderSections(r,s);const t=e.legendElements;if(t?.length)for(const r of t){const t=l(o,{activeLayerInfo:e,effectList:e.effectList,hasIndicators:this._hasIndicators,headingLevel:this.headingLevel,isChild:!1,key:`${e.layer.uid}-${r.type}`,layer:e.layer,legendElement:r,messages:this.messages});t&&s.push(t)}}};e([s()],p.prototype,"activeLayerInfos",void 0),e([s()],p.prototype,"headingLevel",void 0),e([s()],p.prototype,"layout",void 0),e([s(),a("esri/widgets/Legend/t9n/Legend")],p.prototype,"messages",void 0),e([s(),a("esri/t9n/common")],p.prototype,"messagesCommon",void 0),e([s({readOnly:!0})],p.prototype,"type",void 0),e([s()],p.prototype,"view",void 0),p=e([t("esri.widgets.Legend.styles.card.CardView")],p);export{p as default};