@esri/solutions-components 0.10.21 → 0.10.23

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. package/dist/cjs/basemap-gallery_7.cjs.entry.js +1 -1
  2. package/dist/cjs/calcite-alert_5.cjs.entry.js +6 -2
  3. package/dist/cjs/calcite-combobox_3.cjs.entry.js +17 -2
  4. package/dist/cjs/crowdsource-manager.cjs.entry.js +3 -2
  5. package/dist/cjs/map-select-tools_3.cjs.entry.js +78 -21
  6. package/dist/collection/components/crowdsource-manager/crowdsource-manager.css +4 -0
  7. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +2 -1
  8. package/dist/collection/components/edit-card/edit-card.js +6 -2
  9. package/dist/collection/components/map-layer-picker/map-layer-picker.js +17 -2
  10. package/dist/collection/components/map-picker/map-picker.js +1 -1
  11. package/dist/collection/components/map-select-tools/map-select-tools.js +78 -21
  12. package/dist/components/crowdsource-manager.js +3 -2
  13. package/dist/components/edit-card2.js +6 -2
  14. package/dist/components/map-layer-picker2.js +17 -2
  15. package/dist/components/map-picker2.js +1 -1
  16. package/dist/components/map-select-tools2.js +78 -21
  17. package/dist/esm/basemap-gallery_7.entry.js +1 -1
  18. package/dist/esm/calcite-alert_5.entry.js +6 -2
  19. package/dist/esm/calcite-combobox_3.entry.js +17 -2
  20. package/dist/esm/crowdsource-manager.entry.js +3 -2
  21. package/dist/esm/map-select-tools_3.entry.js +78 -21
  22. package/dist/solutions-components/p-671fd156.entry.js +6 -0
  23. package/dist/solutions-components/{p-9fed495d.entry.js → p-a85fd786.entry.js} +1 -1
  24. package/dist/solutions-components/{p-793f1b14.entry.js → p-c7046172.entry.js} +2 -2
  25. package/dist/solutions-components/p-cd5a9034.entry.js +6 -0
  26. package/dist/solutions-components/p-f6dc7347.entry.js +6 -0
  27. package/dist/solutions-components/solutions-components.esm.js +1 -1
  28. package/dist/types/components/edit-card/edit-card.d.ts +3 -1
  29. package/dist/types/components/map-layer-picker/map-layer-picker.d.ts +6 -0
  30. package/dist/types/components/map-select-tools/map-select-tools.d.ts +22 -0
  31. package/package.json +1 -1
  32. package/dist/solutions-components/p-24a813a4.entry.js +0 -6
  33. package/dist/solutions-components/p-bd2278cf.entry.js +0 -6
  34. package/dist/solutions-components/p-bde2619f.entry.js +0 -6
@@ -732,7 +732,7 @@ const MapPicker = class {
732
732
  _getMapPicker() {
733
733
  const id = "map-picker-expand-toggle";
734
734
  const mapListIcon = this._mapListExpanded ? "chevron-up" : "chevron-down";
735
- return (index.h("div", { class: "width-full" }, index.h("calcite-button", { alignment: "icon-end-space-between", appearance: "transparent", class: "width-full height-full", iconEnd: mapListIcon, id: id, kind: "neutral", onClick: () => this._chooseMap(), width: "full" }, this._webMapInfo?.name), index.h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": id }, index.h("span", null, this._translations.switchMap))));
735
+ return (index.h("div", { class: "width-full" }, index.h("calcite-button", { alignment: "icon-end-space-between", appearance: "transparent", class: "width-full height-full", iconEnd: mapListIcon, iconStart: "map", id: id, kind: "neutral", onClick: () => this._chooseMap(), width: "full" }, this._webMapInfo?.name), index.h("calcite-tooltip", { placement: "bottom", "reference-element": id }, index.h("span", null, this._translations.switchMap))));
736
736
  }
737
737
  /**
738
738
  * Create the toolbar (controls used for map and app interactions)
@@ -1287,6 +1287,8 @@ const EditCard = class {
1287
1287
  _editor;
1288
1288
  /**
1289
1289
  * esri/layers/FeatureLayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html
1290
+ * OR
1291
+ * esri/layers/support/SubtypeSublayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-SubtypeSublayer.html
1290
1292
  */
1291
1293
  _layer;
1292
1294
  /**
@@ -1391,7 +1393,9 @@ const EditCard = class {
1391
1393
  if (this._layerEditHandle) {
1392
1394
  this._layerEditHandle.remove();
1393
1395
  }
1394
- this._layerEditHandle = this._layer.on("edits", () => {
1396
+ // #896 Editing on sybtype group layer is failing in Manager
1397
+ const layer = this._layer.type === "subtype-sublayer" ? this._layer.parent : this._layer;
1398
+ this._layerEditHandle = layer.on("edits", () => {
1395
1399
  this.editsComplete.emit();
1396
1400
  });
1397
1401
  }
@@ -1406,7 +1410,7 @@ const EditCard = class {
1406
1410
  !this.graphics[0].layer.editingEnabled : true;
1407
1411
  const tableNodeClass = this._editorLoading ? "display-none" : "position-absolute";
1408
1412
  const loadingClass = this._editorLoading ? "" : "display-none";
1409
- return (index.h(index.Host, { key: '1520951922ca98ee92ccc8f7119d7fa3666eddfa' }, index.h("div", { key: 'd436d1660fd46bba90dd5dadc6962c619b99143e', class: "position-absolute" }, editDisabled ? (index.h("calcite-notice", { kind: "warning", open: true, slot: "content-top", width: "full" }, index.h("div", { slot: "message" }, this._translations.enableEditing))) : undefined, index.h("div", { key: 'cff16539fd7b4a85234e0d15d2170470d95d0ad9', class: "position-absolute" }, index.h("div", { key: '0b96a2d27a5df344da9192a01d5c42496e057cd1', class: tableNodeClass, id: "feature-form", ref: (el) => this._editContainer = el }), index.h("calcite-loader", { key: '49cadf3456d1f3289abde18c35b726471ac551cd', class: loadingClass, label: "", scale: "s" })))));
1413
+ return (index.h(index.Host, { key: '16dd78822ee6d7c4e2da97c4b7ec7c0678b51e68' }, index.h("div", { key: '8aba2b86c7bf8e7dfbf7567b156e02b23b728f4e', class: "position-absolute" }, editDisabled ? (index.h("calcite-notice", { kind: "warning", open: true, slot: "content-top", width: "full" }, index.h("div", { slot: "message" }, this._translations.enableEditing))) : undefined, index.h("div", { key: '8230d44ec05ff207681e6333b7f08c80748c4f3d', class: "position-absolute" }, index.h("div", { key: '71792b5737c43a024ebc677ae168d74569349585', class: tableNodeClass, id: "feature-form", ref: (el) => this._editContainer = el }), index.h("calcite-loader", { key: '47176534c25769af8ae107c3864901c4294b4359', class: loadingClass, label: "", scale: "s" })))));
1410
1414
  }
1411
1415
  //--------------------------------------------------------------------------
1412
1416
  //
@@ -1379,7 +1379,8 @@ const MapLayerPicker = class {
1379
1379
  * @returns Calcite label with the layer name and icon
1380
1380
  */
1381
1381
  _getSingleLayerPlaceholder() {
1382
- return (index.h("div", { class: "layer-picker-label-container cursor-default" }, index.h("calcite-icon", { icon: "layers", scale: "s" }), index.h("calcite-label", { class: "no-bottom-margin padding-start-1" }, this.selectedName)));
1382
+ const itemTypeIcon = this._getItemTypeIcon();
1383
+ return (index.h("div", { class: "layer-picker-label-container cursor-default" }, index.h("calcite-icon", { icon: itemTypeIcon, scale: "s" }), index.h("calcite-label", { class: "no-bottom-margin padding-start-1" }, this.selectedName)));
1383
1384
  }
1384
1385
  /**
1385
1386
  * Create a list of layers from the map
@@ -1427,10 +1428,24 @@ const MapLayerPicker = class {
1427
1428
  * @returns the node for the button
1428
1429
  */
1429
1430
  _getDropdownButton() {
1431
+ const itemTypeIcon = this._getItemTypeIcon();
1430
1432
  const buttonClass = this.isMobile ? "" : "max-width-350";
1431
1433
  const buttonSlot = this.isMobile ? "trigger" : "";
1432
1434
  const buttonIcon = this._isDropdownOpen ? "chevron-up" : "chevron-down";
1433
- return (index.h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: buttonClass, iconEnd: buttonIcon, iconStart: "layers", kind: "neutral", slot: buttonSlot, width: "full" }, index.h("div", null, this.selectedName)));
1435
+ return (index.h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: buttonClass, iconEnd: buttonIcon, iconStart: itemTypeIcon, kind: "neutral", slot: buttonSlot, width: "full" }, index.h("div", null, this.selectedName)));
1436
+ }
1437
+ /**
1438
+ * Get the appropriate icon based on the selected layer or table
1439
+ *
1440
+ * @returns a string for the appropriate icon
1441
+ */
1442
+ _getItemTypeIcon() {
1443
+ let itemTypeIcon = "layers";
1444
+ if (this.selectedIds.length > 0) {
1445
+ const id = this.selectedIds[0];
1446
+ itemTypeIcon = Object.keys(this._layerNameHash).indexOf(id) > -1 ? "layers" : "table";
1447
+ }
1448
+ return itemTypeIcon;
1434
1449
  }
1435
1450
  /**
1436
1451
  * Get the appropriate type of dom nodes for each valid layer or table
@@ -14,7 +14,7 @@ const mapViewUtils = require('./mapViewUtils-18c46b84.js');
14
14
  require('./esri-loader-08dc41bd.js');
15
15
  require('./_commonjsHelpers-baf43783.js');
16
16
 
17
- const crowdsourceManagerCss = ":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-color-foreground-1)}.padding-1-2{padding:0.5rem}.display-flex{display:flex}.width-full{width:100%}.width-1-2{position:relative;width:50%}.width-1-3{position:relative;width:33.33%}.width-2-3{position:relative;width:66.66%}.width-0{width:0}.height-full{height:100%}.height-1-2{position:relative;height:50%}.height-0{height:0}.toggle-node{width:51px;height:51px}.overflow-hidden{overflow:hidden}.flex-column{flex-direction:column}.border{border:1px solid var(--calcite-color-border-3)}.border-bottom{border-bottom:1px solid var(--calcite-color-border-3)}.border-sides{border-left:1px solid var(--calcite-color-border-3);border-right:1px solid var(--calcite-color-border-3)}.position-relative{position:relative}.position-absolute{position:absolute}.height-51{height:51%}.adjusted-height-50{height:calc(50% - 25px)}.adjusted-height-100{height:calc(100% - 50px)}.adjusted-height-100-50{height:calc(100% - 50px)}.display-none{display:none !important}.adjusted-height-50_25{height:calc(50% + 25px)}.position-absolute-53{position:absolute;top:53px}.display-grid{display:grid}.height-50-px{height:50px}.padding-inline-start-75{padding-inline-start:0.75rem}.align-items-center{align-items:center}.esri-floor-filter__close-levels-button{width:40px !important;height:40px !important}.esri-floor-filter__level-button{width:40px !important;height:40px !important}.esri-floor-filter__browse-button{width:40px !important;height:40px !important}.position-absolute-50{position:absolute;top:50px;bottom:0px;left:0px;right:0px}.position-absolute-0{position:absolute;top:0px;bottom:0px;left:0px;right:0px}.visibility-hidden{visibility:hidden;height:0px}.position-fixed{position:fixed}.border-width-0{border-width:0px}.border-bottom-width-0{border-bottom-width:0px}.floating-container{position:fixed;width:100px;height:10px;bottom:0;right:0;margin:100px 0px}.floating-container .floating-button{box-shadow:0 10px 25px rgb(92 93 94 / 60%);transform:translatey(5px);transition:all 0.3s}.z-index-0{z-index:0 !important}";
17
+ const crowdsourceManagerCss = ":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-color-foreground-1)}.padding-1-2{padding:0.5rem}.display-flex{display:flex}.width-full{width:100%}.width-1-2{position:relative;width:50%}.width-1-3{position:relative;width:33.33%}.width-2-3{position:relative;width:66.66%}.width-0{width:0}.height-full{height:100%}.height-1-2{position:relative;height:50%}.height-0{height:0}.toggle-node{width:51px;height:51px}.overflow-hidden{overflow:hidden}.flex-column{flex-direction:column}.border{border:1px solid var(--calcite-color-border-3)}.border-bottom{border-bottom:1px solid var(--calcite-color-border-3)}.border-sides{border-left:1px solid var(--calcite-color-border-3);border-right:1px solid var(--calcite-color-border-3)}.position-relative{position:relative}.position-absolute{position:absolute}.height-51{height:51%}.top-51{top:51px}.adjusted-height-50{height:calc(50% - 25px)}.adjusted-height-100{height:calc(100% - 50px)}.adjusted-height-100-50{height:calc(100% - 50px)}.display-none{display:none !important}.adjusted-height-50_25{height:calc(50% + 25px)}.position-absolute-53{position:absolute;top:53px}.display-grid{display:grid}.height-50-px{height:50px}.padding-inline-start-75{padding-inline-start:0.75rem}.align-items-center{align-items:center}.esri-floor-filter__close-levels-button{width:40px !important;height:40px !important}.esri-floor-filter__level-button{width:40px !important;height:40px !important}.esri-floor-filter__browse-button{width:40px !important;height:40px !important}.position-absolute-50{position:absolute;top:50px;bottom:0px;left:0px;right:0px}.position-absolute-0{position:absolute;top:0px;bottom:0px;left:0px;right:0px}.visibility-hidden{visibility:hidden;height:0px}.position-fixed{position:fixed}.border-width-0{border-width:0px}.border-bottom-width-0{border-bottom-width:0px}.floating-container{position:fixed;width:100px;height:10px;bottom:0;right:0;margin:100px 0px}.floating-container .floating-button{box-shadow:0 10px 25px rgb(92 93 94 / 60%);transform:translatey(5px);transition:all 0.3s}.z-index-0{z-index:0 !important}";
18
18
  const CrowdsourceManagerStyle0 = crowdsourceManagerCss;
19
19
 
20
20
  const CrowdsourceManager = class {
@@ -420,7 +420,8 @@ const CrowdsourceManager = class {
420
420
  const headerClass = this._isMobile && this._showInformationHeader ? "display-none height-0" : "";
421
421
  const headerTheme = this.popupHeaderColor ? "" : !this._isMobile ? "calcite-mode-dark" : "calcite-mode-light";
422
422
  const containerClass = this._isMobile && this._hideTable ? "position-absolute-0 width-full height-full" : this._isMobile ? "display-none height-0" : "";
423
- return (index.h("div", { class: `${headerTheme} ${popupNodeClass} ${containerClass}`, style: {
423
+ const tableViewClass = this.appLayout === "tableView" ? "position-relative top-51" : "";
424
+ return (index.h("div", { class: `${headerTheme} ${popupNodeClass} ${containerClass} ${tableViewClass}`, style: {
424
425
  '--calcite-color-foreground-1': this.popupHeaderColor, /* background color that will be displayed on the popup header */
425
426
  '--calcite-color-foreground-2': this.popupHeaderHoverColor, /* background color that will be displayed on button when hovered */
426
427
  '--calcite-color-text-3': this.popupHeaderTextColor, /* font color that will be displayed on button */
@@ -64,6 +64,10 @@ const MapSelectTools = class {
64
64
  // Properties (protected)
65
65
  //
66
66
  //--------------------------------------------------------------------------
67
+ /**
68
+ * esri/request: https://developers.arcgis.com/javascript/latest/api-reference/esri-request.html
69
+ */
70
+ _esriRequest;
67
71
  /**
68
72
  * esri/layers/FeatureLayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html
69
73
  */
@@ -293,7 +297,7 @@ const MapSelectTools = class {
293
297
  render() {
294
298
  const mapToolsClass = this.enableSketchTools ? "" : "display-none";
295
299
  const mapToolsContainerClass = this.enableSketchTools ? "padding-top-1" : "";
296
- return (index.h(index.Host, { key: 'd9b4042323733785938a45be76688099b8a81b23' }, this._getMapLayerPicker(), index.h("div", { key: 'd468cd2df9971c02909fd0bc9603603bb213164f', class: "border-bottom" }), index.h("div", { key: '8cecea0a4387371c3af1ea76bbafd1cf7f205d77', class: "padding-top-sides-1" }, index.h("div", { key: 'd5364d20f014611ca73bbe1bc5b638aaa8e38738', class: "search-widget", ref: (el) => { this._searchElement = el; } }), index.h("div", { key: '2c1f16ce050e934e8dbd25a0ef430d8590438ce5', class: mapToolsContainerClass }, index.h("map-draw-tools", { key: '256ee8262662c1c54cee34bdc084e7555e3985c6', active: true, class: mapToolsClass, editGraphicsEnabled: !this._useLayerFeaturesEnabled, graphics: this._graphics, mapView: this.mapView, onSketchGraphicsChange: (evt) => void this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, ref: (el) => { this._drawTools = el; } })), this.enableSearchDistance ? this._getBufferOptions() : undefined, this.enableLayerFeatures ? this._getUseLayerFeaturesOptions() : undefined, this._getNumSelected()), index.h("div", { key: '92859f6a60356d7ddc0b5530a06e181d67f3274b', class: "border-bottom" }), this._getNameInput()));
300
+ return (index.h(index.Host, { key: '6753158d00a33dd5dfbb1f22cc27388baf4c0b5e' }, this._getMapLayerPicker(), index.h("div", { key: '082c6be48d3dfbe2e39be2c462959c7772a91d40', class: "border-bottom" }), index.h("div", { key: '0e8133a809b05bef34c2f19adeff43c1e57cc002', class: "padding-top-sides-1" }, index.h("div", { key: '4434b5b4d073f3ba9a7e44b82078b9b81733025b', class: "search-widget", ref: (el) => { this._searchElement = el; } }), index.h("div", { key: '6f01e27e06ea365de6ff98df3f9edd973d87117c', class: mapToolsContainerClass }, index.h("map-draw-tools", { key: '24ffe562d080955f2aacfd080c0baa1997f8eaab', active: true, class: mapToolsClass, editGraphicsEnabled: !this._useLayerFeaturesEnabled, graphics: this._graphics, mapView: this.mapView, onSketchGraphicsChange: (evt) => void this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, ref: (el) => { this._drawTools = el; } })), this.enableSearchDistance ? this._getBufferOptions() : undefined, this.enableLayerFeatures ? this._getUseLayerFeaturesOptions() : undefined, this._getNumSelected()), index.h("div", { key: '4c7cf401b5bcc7e4adef34e140d22676fce8ebbc', class: "border-bottom" }), this._getNameInput()));
297
301
  }
298
302
  /**
299
303
  * Renders the buffer tools component.
@@ -360,13 +364,15 @@ const MapSelectTools = class {
360
364
  * @protected
361
365
  */
362
366
  async _initModules() {
363
- const [GraphicsLayer, Graphic, Search, geometryEngine, FeatureLayer] = await locale.loadModules([
367
+ const [esriRequest, GraphicsLayer, Graphic, Search, geometryEngine, FeatureLayer] = await locale.loadModules([
368
+ "esri/request",
364
369
  "esri/layers/GraphicsLayer",
365
370
  "esri/Graphic",
366
371
  "esri/widgets/Search",
367
372
  "esri/geometry/geometryEngine",
368
373
  "esri/layers/FeatureLayer"
369
374
  ]);
375
+ this._esriRequest = esriRequest;
370
376
  this.GraphicsLayer = GraphicsLayer;
371
377
  this.Graphic = Graphic;
372
378
  this.Search = Search;
@@ -443,25 +449,7 @@ const MapSelectTools = class {
443
449
  void this._clearResults(false, clearLabel);
444
450
  });
445
451
  this._searchWidget.on("select-result", (searchResults) => {
446
- if (searchResults.result) {
447
- this._searchResult = searchResults.result;
448
- const resultFeature = searchResults.result.feature;
449
- const resultLayer = resultFeature?.layer;
450
- const selectLayer = this.selectLayerView.layer;
451
- const oid = resultFeature?.getObjectId();
452
- const useOIDs = resultLayer?.url && selectLayer?.url && resultLayer.url === selectLayer.url && !isNaN(oid);
453
- const oids = useOIDs ? [oid] : undefined;
454
- this._workflowType = interfaces.EWorkflowType.SEARCH;
455
- void this._updateLabel();
456
- const graphics = [searchResults.result.feature];
457
- this._updateSelection(graphics, useOIDs, oids);
458
- this._drawTools.graphics = graphics;
459
- this._searchWidget.resultGraphic.visible = false;
460
- }
461
- else {
462
- const clearLabel = this._searchClearLabel();
463
- void this._clearResults(false, clearLabel);
464
- }
452
+ void this._selectResult(searchResults.result);
465
453
  });
466
454
  await this._searchWidget.when(() => {
467
455
  this._searchWidget.allPlaceholder = this.searchConfiguration?.allPlaceholder &&
@@ -470,6 +458,75 @@ const MapSelectTools = class {
470
458
  });
471
459
  }
472
460
  }
461
+ /**
462
+ * Handle the result from the search widget.
463
+ *
464
+ * @param url the url of the layer view
465
+ *
466
+ * @returns the url of the views source
467
+ * @protected
468
+ */
469
+ async _selectResult(result) {
470
+ if (result) {
471
+ this._searchResult = result;
472
+ const resultFeature = result.feature;
473
+ const resultLayer = resultFeature?.layer;
474
+ const selectLayer = this.selectLayerView.layer;
475
+ const oid = resultFeature?.getObjectId();
476
+ let resultLayerSourceUrl;
477
+ if (resultLayer.sourceJSON?.isView) {
478
+ resultLayerSourceUrl = await this._getViewSourceUrl(resultLayer.url);
479
+ }
480
+ let selectLayerSourceUrl;
481
+ if (selectLayer.sourceJSON?.isView) {
482
+ selectLayerSourceUrl = await this._getViewSourceUrl(selectLayer.url);
483
+ }
484
+ const rUrl = resultLayer?.url?.toLowerCase();
485
+ const rSourceUrl = resultLayerSourceUrl?.toLowerCase();
486
+ const sUrl = selectLayer?.url?.toLowerCase();
487
+ const sSourceUrl = selectLayerSourceUrl?.toLowerCase();
488
+ const useOIDs = rUrl && sUrl &&
489
+ (rUrl === sUrl || rUrl === sSourceUrl || rSourceUrl === sUrl || rSourceUrl === sSourceUrl) &&
490
+ !isNaN(oid);
491
+ const oids = useOIDs ? [oid] : undefined;
492
+ this._workflowType = interfaces.EWorkflowType.SEARCH;
493
+ void this._updateLabel();
494
+ const graphics = [result.feature];
495
+ this._updateSelection(graphics, useOIDs, oids);
496
+ this._drawTools.graphics = graphics;
497
+ this._searchWidget.resultGraphic.visible = false;
498
+ }
499
+ else {
500
+ const clearLabel = this._searchClearLabel();
501
+ void this._clearResults(false, clearLabel);
502
+ }
503
+ }
504
+ /**
505
+ * Get the source url for a view. This function supports single source views only.
506
+ *
507
+ * @param url the url of the layer view
508
+ *
509
+ * @returns the url of the views source
510
+ * @protected
511
+ */
512
+ async _getViewSourceUrl(url) {
513
+ let sourceUrl = "";
514
+ const resultLayerSourcesUrl = `${url}/sources?f=json`;
515
+ try {
516
+ const request = await this._esriRequest(resultLayerSourcesUrl, {
517
+ query: {
518
+ f: "json"
519
+ }
520
+ });
521
+ if (request?.data?.services?.length === 1) {
522
+ sourceUrl = request.data.services[0].url;
523
+ }
524
+ }
525
+ catch (error) {
526
+ console.log(error);
527
+ }
528
+ return sourceUrl;
529
+ }
473
530
  /**
474
531
  * Check if the current label should be cleared
475
532
  *
@@ -102,6 +102,10 @@
102
102
  height: 51%;
103
103
  }
104
104
 
105
+ .top-51 {
106
+ top: 51px;
107
+ }
108
+
105
109
  .adjusted-height-50 {
106
110
  height: calc(50% - 25px);
107
111
  }
@@ -427,7 +427,8 @@ export class CrowdsourceManager {
427
427
  const headerClass = this._isMobile && this._showInformationHeader ? "display-none height-0" : "";
428
428
  const headerTheme = this.popupHeaderColor ? "" : !this._isMobile ? "calcite-mode-dark" : "calcite-mode-light";
429
429
  const containerClass = this._isMobile && this._hideTable ? "position-absolute-0 width-full height-full" : this._isMobile ? "display-none height-0" : "";
430
- return (h("div", { class: `${headerTheme} ${popupNodeClass} ${containerClass}`, style: {
430
+ const tableViewClass = this.appLayout === "tableView" ? "position-relative top-51" : "";
431
+ return (h("div", { class: `${headerTheme} ${popupNodeClass} ${containerClass} ${tableViewClass}`, style: {
431
432
  '--calcite-color-foreground-1': this.popupHeaderColor, /* background color that will be displayed on the popup header */
432
433
  '--calcite-color-foreground-2': this.popupHeaderHoverColor, /* background color that will be displayed on button when hovered */
433
434
  '--calcite-color-text-3': this.popupHeaderTextColor, /* font color that will be displayed on button */
@@ -75,6 +75,8 @@ export class EditCard {
75
75
  _editor;
76
76
  /**
77
77
  * esri/layers/FeatureLayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html
78
+ * OR
79
+ * esri/layers/support/SubtypeSublayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-SubtypeSublayer.html
78
80
  */
79
81
  _layer;
80
82
  /**
@@ -179,7 +181,9 @@ export class EditCard {
179
181
  if (this._layerEditHandle) {
180
182
  this._layerEditHandle.remove();
181
183
  }
182
- this._layerEditHandle = this._layer.on("edits", () => {
184
+ // #896 Editing on sybtype group layer is failing in Manager
185
+ const layer = this._layer.type === "subtype-sublayer" ? this._layer.parent : this._layer;
186
+ this._layerEditHandle = layer.on("edits", () => {
183
187
  this.editsComplete.emit();
184
188
  });
185
189
  }
@@ -194,7 +198,7 @@ export class EditCard {
194
198
  !this.graphics[0].layer.editingEnabled : true;
195
199
  const tableNodeClass = this._editorLoading ? "display-none" : "position-absolute";
196
200
  const loadingClass = this._editorLoading ? "" : "display-none";
197
- return (h(Host, { key: '1520951922ca98ee92ccc8f7119d7fa3666eddfa' }, h("div", { key: 'd436d1660fd46bba90dd5dadc6962c619b99143e', class: "position-absolute" }, editDisabled ? (h("calcite-notice", { kind: "warning", open: true, slot: "content-top", width: "full" }, h("div", { slot: "message" }, this._translations.enableEditing))) : undefined, h("div", { key: 'cff16539fd7b4a85234e0d15d2170470d95d0ad9', class: "position-absolute" }, h("div", { key: '0b96a2d27a5df344da9192a01d5c42496e057cd1', class: tableNodeClass, id: "feature-form", ref: (el) => this._editContainer = el }), h("calcite-loader", { key: '49cadf3456d1f3289abde18c35b726471ac551cd', class: loadingClass, label: "", scale: "s" })))));
201
+ return (h(Host, { key: '16dd78822ee6d7c4e2da97c4b7ec7c0678b51e68' }, h("div", { key: '8aba2b86c7bf8e7dfbf7567b156e02b23b728f4e', class: "position-absolute" }, editDisabled ? (h("calcite-notice", { kind: "warning", open: true, slot: "content-top", width: "full" }, h("div", { slot: "message" }, this._translations.enableEditing))) : undefined, h("div", { key: '8230d44ec05ff207681e6333b7f08c80748c4f3d', class: "position-absolute" }, h("div", { key: '71792b5737c43a024ebc677ae168d74569349585', class: tableNodeClass, id: "feature-form", ref: (el) => this._editContainer = el }), h("calcite-loader", { key: '47176534c25769af8ae107c3864901c4294b4359', class: loadingClass, label: "", scale: "s" })))));
198
202
  }
199
203
  //--------------------------------------------------------------------------
200
204
  //
@@ -188,7 +188,8 @@ export class MapLayerPicker {
188
188
  * @returns Calcite label with the layer name and icon
189
189
  */
190
190
  _getSingleLayerPlaceholder() {
191
- return (h("div", { class: "layer-picker-label-container cursor-default" }, h("calcite-icon", { icon: "layers", scale: "s" }), h("calcite-label", { class: "no-bottom-margin padding-start-1" }, this.selectedName)));
191
+ const itemTypeIcon = this._getItemTypeIcon();
192
+ return (h("div", { class: "layer-picker-label-container cursor-default" }, h("calcite-icon", { icon: itemTypeIcon, scale: "s" }), h("calcite-label", { class: "no-bottom-margin padding-start-1" }, this.selectedName)));
192
193
  }
193
194
  /**
194
195
  * Create a list of layers from the map
@@ -236,10 +237,24 @@ export class MapLayerPicker {
236
237
  * @returns the node for the button
237
238
  */
238
239
  _getDropdownButton() {
240
+ const itemTypeIcon = this._getItemTypeIcon();
239
241
  const buttonClass = this.isMobile ? "" : "max-width-350";
240
242
  const buttonSlot = this.isMobile ? "trigger" : "";
241
243
  const buttonIcon = this._isDropdownOpen ? "chevron-up" : "chevron-down";
242
- return (h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: buttonClass, iconEnd: buttonIcon, iconStart: "layers", kind: "neutral", slot: buttonSlot, width: "full" }, h("div", null, this.selectedName)));
244
+ return (h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: buttonClass, iconEnd: buttonIcon, iconStart: itemTypeIcon, kind: "neutral", slot: buttonSlot, width: "full" }, h("div", null, this.selectedName)));
245
+ }
246
+ /**
247
+ * Get the appropriate icon based on the selected layer or table
248
+ *
249
+ * @returns a string for the appropriate icon
250
+ */
251
+ _getItemTypeIcon() {
252
+ let itemTypeIcon = "layers";
253
+ if (this.selectedIds.length > 0) {
254
+ const id = this.selectedIds[0];
255
+ itemTypeIcon = Object.keys(this._layerNameHash).indexOf(id) > -1 ? "layers" : "table";
256
+ }
257
+ return itemTypeIcon;
243
258
  }
244
259
  /**
245
260
  * Get the appropriate type of dom nodes for each valid layer or table
@@ -147,7 +147,7 @@ export class MapPicker {
147
147
  _getMapPicker() {
148
148
  const id = "map-picker-expand-toggle";
149
149
  const mapListIcon = this._mapListExpanded ? "chevron-up" : "chevron-down";
150
- return (h("div", { class: "width-full" }, h("calcite-button", { alignment: "icon-end-space-between", appearance: "transparent", class: "width-full height-full", iconEnd: mapListIcon, id: id, kind: "neutral", onClick: () => this._chooseMap(), width: "full" }, this._webMapInfo?.name), h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": id }, h("span", null, this._translations.switchMap))));
150
+ return (h("div", { class: "width-full" }, h("calcite-button", { alignment: "icon-end-space-between", appearance: "transparent", class: "width-full height-full", iconEnd: mapListIcon, iconStart: "map", id: id, kind: "neutral", onClick: () => this._chooseMap(), width: "full" }, this._webMapInfo?.name), h("calcite-tooltip", { placement: "bottom", "reference-element": id }, h("span", null, this._translations.switchMap))));
151
151
  }
152
152
  /**
153
153
  * Create the toolbar (controls used for map and app interactions)
@@ -69,6 +69,10 @@ export class MapSelectTools {
69
69
  // Properties (protected)
70
70
  //
71
71
  //--------------------------------------------------------------------------
72
+ /**
73
+ * esri/request: https://developers.arcgis.com/javascript/latest/api-reference/esri-request.html
74
+ */
75
+ _esriRequest;
72
76
  /**
73
77
  * esri/layers/FeatureLayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html
74
78
  */
@@ -298,7 +302,7 @@ export class MapSelectTools {
298
302
  render() {
299
303
  const mapToolsClass = this.enableSketchTools ? "" : "display-none";
300
304
  const mapToolsContainerClass = this.enableSketchTools ? "padding-top-1" : "";
301
- return (h(Host, { key: 'd9b4042323733785938a45be76688099b8a81b23' }, this._getMapLayerPicker(), h("div", { key: 'd468cd2df9971c02909fd0bc9603603bb213164f', class: "border-bottom" }), h("div", { key: '8cecea0a4387371c3af1ea76bbafd1cf7f205d77', class: "padding-top-sides-1" }, h("div", { key: 'd5364d20f014611ca73bbe1bc5b638aaa8e38738', class: "search-widget", ref: (el) => { this._searchElement = el; } }), h("div", { key: '2c1f16ce050e934e8dbd25a0ef430d8590438ce5', class: mapToolsContainerClass }, h("map-draw-tools", { key: '256ee8262662c1c54cee34bdc084e7555e3985c6', active: true, class: mapToolsClass, editGraphicsEnabled: !this._useLayerFeaturesEnabled, graphics: this._graphics, mapView: this.mapView, onSketchGraphicsChange: (evt) => void this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, ref: (el) => { this._drawTools = el; } })), this.enableSearchDistance ? this._getBufferOptions() : undefined, this.enableLayerFeatures ? this._getUseLayerFeaturesOptions() : undefined, this._getNumSelected()), h("div", { key: '92859f6a60356d7ddc0b5530a06e181d67f3274b', class: "border-bottom" }), this._getNameInput()));
305
+ return (h(Host, { key: '6753158d00a33dd5dfbb1f22cc27388baf4c0b5e' }, this._getMapLayerPicker(), h("div", { key: '082c6be48d3dfbe2e39be2c462959c7772a91d40', class: "border-bottom" }), h("div", { key: '0e8133a809b05bef34c2f19adeff43c1e57cc002', class: "padding-top-sides-1" }, h("div", { key: '4434b5b4d073f3ba9a7e44b82078b9b81733025b', class: "search-widget", ref: (el) => { this._searchElement = el; } }), h("div", { key: '6f01e27e06ea365de6ff98df3f9edd973d87117c', class: mapToolsContainerClass }, h("map-draw-tools", { key: '24ffe562d080955f2aacfd080c0baa1997f8eaab', active: true, class: mapToolsClass, editGraphicsEnabled: !this._useLayerFeaturesEnabled, graphics: this._graphics, mapView: this.mapView, onSketchGraphicsChange: (evt) => void this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, ref: (el) => { this._drawTools = el; } })), this.enableSearchDistance ? this._getBufferOptions() : undefined, this.enableLayerFeatures ? this._getUseLayerFeaturesOptions() : undefined, this._getNumSelected()), h("div", { key: '4c7cf401b5bcc7e4adef34e140d22676fce8ebbc', class: "border-bottom" }), this._getNameInput()));
302
306
  }
303
307
  /**
304
308
  * Renders the buffer tools component.
@@ -365,13 +369,15 @@ export class MapSelectTools {
365
369
  * @protected
366
370
  */
367
371
  async _initModules() {
368
- const [GraphicsLayer, Graphic, Search, geometryEngine, FeatureLayer] = await loadModules([
372
+ const [esriRequest, GraphicsLayer, Graphic, Search, geometryEngine, FeatureLayer] = await loadModules([
373
+ "esri/request",
369
374
  "esri/layers/GraphicsLayer",
370
375
  "esri/Graphic",
371
376
  "esri/widgets/Search",
372
377
  "esri/geometry/geometryEngine",
373
378
  "esri/layers/FeatureLayer"
374
379
  ]);
380
+ this._esriRequest = esriRequest;
375
381
  this.GraphicsLayer = GraphicsLayer;
376
382
  this.Graphic = Graphic;
377
383
  this.Search = Search;
@@ -448,25 +454,7 @@ export class MapSelectTools {
448
454
  void this._clearResults(false, clearLabel);
449
455
  });
450
456
  this._searchWidget.on("select-result", (searchResults) => {
451
- if (searchResults.result) {
452
- this._searchResult = searchResults.result;
453
- const resultFeature = searchResults.result.feature;
454
- const resultLayer = resultFeature?.layer;
455
- const selectLayer = this.selectLayerView.layer;
456
- const oid = resultFeature?.getObjectId();
457
- const useOIDs = resultLayer?.url && selectLayer?.url && resultLayer.url === selectLayer.url && !isNaN(oid);
458
- const oids = useOIDs ? [oid] : undefined;
459
- this._workflowType = EWorkflowType.SEARCH;
460
- void this._updateLabel();
461
- const graphics = [searchResults.result.feature];
462
- this._updateSelection(graphics, useOIDs, oids);
463
- this._drawTools.graphics = graphics;
464
- this._searchWidget.resultGraphic.visible = false;
465
- }
466
- else {
467
- const clearLabel = this._searchClearLabel();
468
- void this._clearResults(false, clearLabel);
469
- }
457
+ void this._selectResult(searchResults.result);
470
458
  });
471
459
  await this._searchWidget.when(() => {
472
460
  this._searchWidget.allPlaceholder = this.searchConfiguration?.allPlaceholder &&
@@ -475,6 +463,75 @@ export class MapSelectTools {
475
463
  });
476
464
  }
477
465
  }
466
+ /**
467
+ * Handle the result from the search widget.
468
+ *
469
+ * @param url the url of the layer view
470
+ *
471
+ * @returns the url of the views source
472
+ * @protected
473
+ */
474
+ async _selectResult(result) {
475
+ if (result) {
476
+ this._searchResult = result;
477
+ const resultFeature = result.feature;
478
+ const resultLayer = resultFeature?.layer;
479
+ const selectLayer = this.selectLayerView.layer;
480
+ const oid = resultFeature?.getObjectId();
481
+ let resultLayerSourceUrl;
482
+ if (resultLayer.sourceJSON?.isView) {
483
+ resultLayerSourceUrl = await this._getViewSourceUrl(resultLayer.url);
484
+ }
485
+ let selectLayerSourceUrl;
486
+ if (selectLayer.sourceJSON?.isView) {
487
+ selectLayerSourceUrl = await this._getViewSourceUrl(selectLayer.url);
488
+ }
489
+ const rUrl = resultLayer?.url?.toLowerCase();
490
+ const rSourceUrl = resultLayerSourceUrl?.toLowerCase();
491
+ const sUrl = selectLayer?.url?.toLowerCase();
492
+ const sSourceUrl = selectLayerSourceUrl?.toLowerCase();
493
+ const useOIDs = rUrl && sUrl &&
494
+ (rUrl === sUrl || rUrl === sSourceUrl || rSourceUrl === sUrl || rSourceUrl === sSourceUrl) &&
495
+ !isNaN(oid);
496
+ const oids = useOIDs ? [oid] : undefined;
497
+ this._workflowType = EWorkflowType.SEARCH;
498
+ void this._updateLabel();
499
+ const graphics = [result.feature];
500
+ this._updateSelection(graphics, useOIDs, oids);
501
+ this._drawTools.graphics = graphics;
502
+ this._searchWidget.resultGraphic.visible = false;
503
+ }
504
+ else {
505
+ const clearLabel = this._searchClearLabel();
506
+ void this._clearResults(false, clearLabel);
507
+ }
508
+ }
509
+ /**
510
+ * Get the source url for a view. This function supports single source views only.
511
+ *
512
+ * @param url the url of the layer view
513
+ *
514
+ * @returns the url of the views source
515
+ * @protected
516
+ */
517
+ async _getViewSourceUrl(url) {
518
+ let sourceUrl = "";
519
+ const resultLayerSourcesUrl = `${url}/sources?f=json`;
520
+ try {
521
+ const request = await this._esriRequest(resultLayerSourcesUrl, {
522
+ query: {
523
+ f: "json"
524
+ }
525
+ });
526
+ if (request?.data?.services?.length === 1) {
527
+ sourceUrl = request.data.services[0].url;
528
+ }
529
+ }
530
+ catch (error) {
531
+ console.log(error);
532
+ }
533
+ return sourceUrl;
534
+ }
478
535
  /**
479
536
  * Check if the current label should be cleared
480
537
  *
@@ -67,7 +67,7 @@ import { d as defineCustomElement$4 } from './map-picker2.js';
67
67
  import { d as defineCustomElement$3 } from './map-search2.js';
68
68
  import { d as defineCustomElement$2 } from './map-tools2.js';
69
69
 
70
- const crowdsourceManagerCss = ":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-color-foreground-1)}.padding-1-2{padding:0.5rem}.display-flex{display:flex}.width-full{width:100%}.width-1-2{position:relative;width:50%}.width-1-3{position:relative;width:33.33%}.width-2-3{position:relative;width:66.66%}.width-0{width:0}.height-full{height:100%}.height-1-2{position:relative;height:50%}.height-0{height:0}.toggle-node{width:51px;height:51px}.overflow-hidden{overflow:hidden}.flex-column{flex-direction:column}.border{border:1px solid var(--calcite-color-border-3)}.border-bottom{border-bottom:1px solid var(--calcite-color-border-3)}.border-sides{border-left:1px solid var(--calcite-color-border-3);border-right:1px solid var(--calcite-color-border-3)}.position-relative{position:relative}.position-absolute{position:absolute}.height-51{height:51%}.adjusted-height-50{height:calc(50% - 25px)}.adjusted-height-100{height:calc(100% - 50px)}.adjusted-height-100-50{height:calc(100% - 50px)}.display-none{display:none !important}.adjusted-height-50_25{height:calc(50% + 25px)}.position-absolute-53{position:absolute;top:53px}.display-grid{display:grid}.height-50-px{height:50px}.padding-inline-start-75{padding-inline-start:0.75rem}.align-items-center{align-items:center}.esri-floor-filter__close-levels-button{width:40px !important;height:40px !important}.esri-floor-filter__level-button{width:40px !important;height:40px !important}.esri-floor-filter__browse-button{width:40px !important;height:40px !important}.position-absolute-50{position:absolute;top:50px;bottom:0px;left:0px;right:0px}.position-absolute-0{position:absolute;top:0px;bottom:0px;left:0px;right:0px}.visibility-hidden{visibility:hidden;height:0px}.position-fixed{position:fixed}.border-width-0{border-width:0px}.border-bottom-width-0{border-bottom-width:0px}.floating-container{position:fixed;width:100px;height:10px;bottom:0;right:0;margin:100px 0px}.floating-container .floating-button{box-shadow:0 10px 25px rgb(92 93 94 / 60%);transform:translatey(5px);transition:all 0.3s}.z-index-0{z-index:0 !important}";
70
+ const crowdsourceManagerCss = ":host{display:block;--calcite-label-margin-bottom:0px;--solutions-theme-foreground-color:var(--calcite-color-foreground-1)}.padding-1-2{padding:0.5rem}.display-flex{display:flex}.width-full{width:100%}.width-1-2{position:relative;width:50%}.width-1-3{position:relative;width:33.33%}.width-2-3{position:relative;width:66.66%}.width-0{width:0}.height-full{height:100%}.height-1-2{position:relative;height:50%}.height-0{height:0}.toggle-node{width:51px;height:51px}.overflow-hidden{overflow:hidden}.flex-column{flex-direction:column}.border{border:1px solid var(--calcite-color-border-3)}.border-bottom{border-bottom:1px solid var(--calcite-color-border-3)}.border-sides{border-left:1px solid var(--calcite-color-border-3);border-right:1px solid var(--calcite-color-border-3)}.position-relative{position:relative}.position-absolute{position:absolute}.height-51{height:51%}.top-51{top:51px}.adjusted-height-50{height:calc(50% - 25px)}.adjusted-height-100{height:calc(100% - 50px)}.adjusted-height-100-50{height:calc(100% - 50px)}.display-none{display:none !important}.adjusted-height-50_25{height:calc(50% + 25px)}.position-absolute-53{position:absolute;top:53px}.display-grid{display:grid}.height-50-px{height:50px}.padding-inline-start-75{padding-inline-start:0.75rem}.align-items-center{align-items:center}.esri-floor-filter__close-levels-button{width:40px !important;height:40px !important}.esri-floor-filter__level-button{width:40px !important;height:40px !important}.esri-floor-filter__browse-button{width:40px !important;height:40px !important}.position-absolute-50{position:absolute;top:50px;bottom:0px;left:0px;right:0px}.position-absolute-0{position:absolute;top:0px;bottom:0px;left:0px;right:0px}.visibility-hidden{visibility:hidden;height:0px}.position-fixed{position:fixed}.border-width-0{border-width:0px}.border-bottom-width-0{border-bottom-width:0px}.floating-container{position:fixed;width:100px;height:10px;bottom:0;right:0;margin:100px 0px}.floating-container .floating-button{box-shadow:0 10px 25px rgb(92 93 94 / 60%);transform:translatey(5px);transition:all 0.3s}.z-index-0{z-index:0 !important}";
71
71
  const CrowdsourceManagerStyle0 = crowdsourceManagerCss;
72
72
 
73
73
  const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceManager extends HTMLElement {
@@ -474,7 +474,8 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
474
474
  const headerClass = this._isMobile && this._showInformationHeader ? "display-none height-0" : "";
475
475
  const headerTheme = this.popupHeaderColor ? "" : !this._isMobile ? "calcite-mode-dark" : "calcite-mode-light";
476
476
  const containerClass = this._isMobile && this._hideTable ? "position-absolute-0 width-full height-full" : this._isMobile ? "display-none height-0" : "";
477
- return (h("div", { class: `${headerTheme} ${popupNodeClass} ${containerClass}`, style: {
477
+ const tableViewClass = this.appLayout === "tableView" ? "position-relative top-51" : "";
478
+ return (h("div", { class: `${headerTheme} ${popupNodeClass} ${containerClass} ${tableViewClass}`, style: {
478
479
  '--calcite-color-foreground-1': this.popupHeaderColor, /* background color that will be displayed on the popup header */
479
480
  '--calcite-color-foreground-2': this.popupHeaderHoverColor, /* background color that will be displayed on button when hovered */
480
481
  '--calcite-color-text-3': this.popupHeaderTextColor, /* font color that will be displayed on button */
@@ -67,6 +67,8 @@ const EditCard = /*@__PURE__*/ proxyCustomElement(class EditCard extends HTMLEle
67
67
  _editor;
68
68
  /**
69
69
  * esri/layers/FeatureLayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-FeatureLayer.html
70
+ * OR
71
+ * esri/layers/support/SubtypeSublayer: https://developers.arcgis.com/javascript/latest/api-reference/esri-layers-support-SubtypeSublayer.html
70
72
  */
71
73
  _layer;
72
74
  /**
@@ -171,7 +173,9 @@ const EditCard = /*@__PURE__*/ proxyCustomElement(class EditCard extends HTMLEle
171
173
  if (this._layerEditHandle) {
172
174
  this._layerEditHandle.remove();
173
175
  }
174
- this._layerEditHandle = this._layer.on("edits", () => {
176
+ // #896 Editing on sybtype group layer is failing in Manager
177
+ const layer = this._layer.type === "subtype-sublayer" ? this._layer.parent : this._layer;
178
+ this._layerEditHandle = layer.on("edits", () => {
175
179
  this.editsComplete.emit();
176
180
  });
177
181
  }
@@ -186,7 +190,7 @@ const EditCard = /*@__PURE__*/ proxyCustomElement(class EditCard extends HTMLEle
186
190
  !this.graphics[0].layer.editingEnabled : true;
187
191
  const tableNodeClass = this._editorLoading ? "display-none" : "position-absolute";
188
192
  const loadingClass = this._editorLoading ? "" : "display-none";
189
- return (h(Host, { key: '1520951922ca98ee92ccc8f7119d7fa3666eddfa' }, h("div", { key: 'd436d1660fd46bba90dd5dadc6962c619b99143e', class: "position-absolute" }, editDisabled ? (h("calcite-notice", { kind: "warning", open: true, slot: "content-top", width: "full" }, h("div", { slot: "message" }, this._translations.enableEditing))) : undefined, h("div", { key: 'cff16539fd7b4a85234e0d15d2170470d95d0ad9', class: "position-absolute" }, h("div", { key: '0b96a2d27a5df344da9192a01d5c42496e057cd1', class: tableNodeClass, id: "feature-form", ref: (el) => this._editContainer = el }), h("calcite-loader", { key: '49cadf3456d1f3289abde18c35b726471ac551cd', class: loadingClass, label: "", scale: "s" })))));
193
+ return (h(Host, { key: '16dd78822ee6d7c4e2da97c4b7ec7c0678b51e68' }, h("div", { key: '8aba2b86c7bf8e7dfbf7567b156e02b23b728f4e', class: "position-absolute" }, editDisabled ? (h("calcite-notice", { kind: "warning", open: true, slot: "content-top", width: "full" }, h("div", { slot: "message" }, this._translations.enableEditing))) : undefined, h("div", { key: '8230d44ec05ff207681e6333b7f08c80748c4f3d', class: "position-absolute" }, h("div", { key: '71792b5737c43a024ebc677ae168d74569349585', class: tableNodeClass, id: "feature-form", ref: (el) => this._editContainer = el }), h("calcite-loader", { key: '47176534c25769af8ae107c3864901c4294b4359', class: loadingClass, label: "", scale: "s" })))));
190
194
  }
191
195
  //--------------------------------------------------------------------------
192
196
  //
@@ -192,7 +192,8 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class MapLayerPicker ext
192
192
  * @returns Calcite label with the layer name and icon
193
193
  */
194
194
  _getSingleLayerPlaceholder() {
195
- return (h("div", { class: "layer-picker-label-container cursor-default" }, h("calcite-icon", { icon: "layers", scale: "s" }), h("calcite-label", { class: "no-bottom-margin padding-start-1" }, this.selectedName)));
195
+ const itemTypeIcon = this._getItemTypeIcon();
196
+ return (h("div", { class: "layer-picker-label-container cursor-default" }, h("calcite-icon", { icon: itemTypeIcon, scale: "s" }), h("calcite-label", { class: "no-bottom-margin padding-start-1" }, this.selectedName)));
196
197
  }
197
198
  /**
198
199
  * Create a list of layers from the map
@@ -240,10 +241,24 @@ const MapLayerPicker = /*@__PURE__*/ proxyCustomElement(class MapLayerPicker ext
240
241
  * @returns the node for the button
241
242
  */
242
243
  _getDropdownButton() {
244
+ const itemTypeIcon = this._getItemTypeIcon();
243
245
  const buttonClass = this.isMobile ? "" : "max-width-350";
244
246
  const buttonSlot = this.isMobile ? "trigger" : "";
245
247
  const buttonIcon = this._isDropdownOpen ? "chevron-up" : "chevron-down";
246
- return (h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: buttonClass, iconEnd: buttonIcon, iconStart: "layers", kind: "neutral", slot: buttonSlot, width: "full" }, h("div", null, this.selectedName)));
248
+ return (h("calcite-button", { alignment: "icon-end-space-between", appearance: this.appearance, class: buttonClass, iconEnd: buttonIcon, iconStart: itemTypeIcon, kind: "neutral", slot: buttonSlot, width: "full" }, h("div", null, this.selectedName)));
249
+ }
250
+ /**
251
+ * Get the appropriate icon based on the selected layer or table
252
+ *
253
+ * @returns a string for the appropriate icon
254
+ */
255
+ _getItemTypeIcon() {
256
+ let itemTypeIcon = "layers";
257
+ if (this.selectedIds.length > 0) {
258
+ const id = this.selectedIds[0];
259
+ itemTypeIcon = Object.keys(this._layerNameHash).indexOf(id) > -1 ? "layers" : "table";
260
+ }
261
+ return itemTypeIcon;
247
262
  }
248
263
  /**
249
264
  * Get the appropriate type of dom nodes for each valid layer or table
@@ -152,7 +152,7 @@ const MapPicker = /*@__PURE__*/ proxyCustomElement(class MapPicker extends HTMLE
152
152
  _getMapPicker() {
153
153
  const id = "map-picker-expand-toggle";
154
154
  const mapListIcon = this._mapListExpanded ? "chevron-up" : "chevron-down";
155
- return (h("div", { class: "width-full" }, h("calcite-button", { alignment: "icon-end-space-between", appearance: "transparent", class: "width-full height-full", iconEnd: mapListIcon, id: id, kind: "neutral", onClick: () => this._chooseMap(), width: "full" }, this._webMapInfo?.name), h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": id }, h("span", null, this._translations.switchMap))));
155
+ return (h("div", { class: "width-full" }, h("calcite-button", { alignment: "icon-end-space-between", appearance: "transparent", class: "width-full height-full", iconEnd: mapListIcon, iconStart: "map", id: id, kind: "neutral", onClick: () => this._chooseMap(), width: "full" }, this._webMapInfo?.name), h("calcite-tooltip", { placement: "bottom", "reference-element": id }, h("span", null, this._translations.switchMap))));
156
156
  }
157
157
  /**
158
158
  * Create the toolbar (controls used for map and app interactions)