@arcgis/core
Version:
ArcGIS Maps SDK for JavaScript: A complete 2D and 3D mapping and data visualization API
6 lines (5 loc) • 3.33 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 t}from"../../../../chunks/tslib.es6.js";import{property as o}from"../../../../core/accessorSupport/decorators/property.js";import"../../../../core/has.js";import"../../../../core/Logger.js";import"../../../../core/RandomLCG.js";import{subclass as e}from"../../../../core/accessorSupport/decorators/subclass.js";import r from"../../../Widget.js";import{WellKnownSizes as i,Icons as n}from"./responsiveToolbarUtils.js";import{ToolbarGroupBase as s}from"./ToolbarGroupBase.js";import{loadCalciteComponents as a}from"../../../support/componentsUtils.js";import"../../../support/widgetUtils.js";import{messageBundle as l}from"../../../support/decorators/messageBundle.js";import{tsx as p,tsxFragment as c}from"../../../support/jsxFactory.js";const m={splitButtonBase:`${"esri-split-button"}--split-part`};let u=class extends(s(r)){constructor(t){super(t),this.allowCollapse=!0,this.messagesCommon=null}loadDependencies(){return a({action:()=>import("@esri/calcite-components/dist/components/calcite-action"),"action-group":()=>import("@esri/calcite-components/dist/components/calcite-action-group"),"action-menu":()=>import("@esri/calcite-components/dist/components/calcite-action-menu")})}static{this.vnodeSelector="calcite-action-group"}get minimumLength(){const t=this.actionChildren;return t.length?1===t.length?i.action[this.scale]+i.groupSeparator:this.allowCollapse?i.action[this.scale]+i.splitButtonPart[this.layout][this.scale]+i.groupSeparator:i.action[this.scale]*t.length+i.groupSeparator:0}get lengthOptions(){const{actionChildren:t,minimumLength:o,layout:e,scale:r,priority:n,allowCollapse:s}=this;if(t.length<2||n<0||!s)return[o];const a=i.groupSeparator+i.action[r]*t.length;return[i.groupSeparator+i.action[r]+i.splitButtonPart[e][r],a]}render(){if(!this.actionChildren.length)return p(c,null,void 0);const{actionChildren:t,minimumLength:o,budgetedLength:e,layout:r,slot:i,allowCollapse:n}=this,s=!n||t.length<2||e>o;return p("calcite-action-group",{key:"split-button-group",layout:r,onclick:t=>this._handleClick(t.target),slot:i},s?this._renderUnSplit():this._renderSplit())}_renderSplit(){const{activeChildElement:t,layout:o,actionChildren:e,scale:r,messagesCommon:i}=this,s=t??e.at(0);if(!s)return;const a=e.filter((t=>t!==s));return[this._renderManagedAction(s),p("calcite-action-menu",{key:"split-button-dropdown",label:i.more,overlayPositioning:"fixed",placement:"horizontal"===o?"bottom-end":"right-end"},p("calcite-action",{class:`${m.splitButtonBase}--${o}--${this.scale}`,compact:"horizontal"===o,icon:n.splitButton[o],key:"split-button-dropdown-trigger",scale:r,slot:"trigger",text:i.more}),a?.map((t=>this._renderManagedAction(t))))]}_renderUnSplit(){return this.actionChildren.map((t=>this._renderManagedAction(t)))}_renderManagedAction(t){return p("calcite-action",{...t?.properties,"data-action-key":t?.properties?.key,text:t?.properties?.text??""})}};t([o()],u.prototype,"minimumLength",null),t([o()],u.prototype,"allowCollapse",void 0),t([o()],u.prototype,"lengthOptions",null),t([o(),l("esri/t9n/common")],u.prototype,"messagesCommon",void 0),u=t([e("esri.widgets.Sketch.support.ResponsiveToolbar.SplitButton")],u);export{u as SplitButton};