@esri/solutions-components 0.11.32 → 0.11.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/dist/cjs/{asyncToGenerator-c7fc3ee4.js → asyncToGenerator-ccb3278b.js} +1 -1
  2. package/dist/cjs/basemap-gallery_7.cjs.entry.js +14 -9
  3. package/dist/cjs/buffer-tools_2.cjs.entry.js +1 -1
  4. package/dist/cjs/card-manager_3.cjs.entry.js +90 -13
  5. package/dist/cjs/consent-manager.cjs.entry.js +3 -3
  6. package/dist/cjs/create-feature_4.cjs.entry.js +7 -7
  7. package/dist/cjs/create-related-feature_3.cjs.entry.js +1 -1
  8. package/dist/cjs/crowdsource-manager.cjs.entry.js +1 -1
  9. package/dist/cjs/crowdsource-reporter.cjs.entry.js +1 -1
  10. package/dist/cjs/delete-dialog.cjs.entry.js +1 -1
  11. package/dist/cjs/{downloadUtils-c7dac47d.js → downloadUtils-fefa863b.js} +3 -3
  12. package/dist/cjs/feature-list.cjs.entry.js +4 -4
  13. package/dist/cjs/{index.es-3c2404c3.js → index.es-0441a948.js} +2 -2
  14. package/dist/cjs/json-editor_7.cjs.entry.js +1 -1
  15. package/dist/cjs/map-layer-picker.cjs.entry.js +1 -1
  16. package/dist/cjs/map-select-tools_3.cjs.entry.js +3 -3
  17. package/dist/cjs/{popupUtils-27f6cf2a.js → popupUtils-a68a20db.js} +2 -2
  18. package/dist/cjs/public-notification.cjs.entry.js +3 -3
  19. package/dist/cjs/solution-configuration.cjs.entry.js +1 -1
  20. package/dist/cjs/solution-contents_3.cjs.entry.js +1 -1
  21. package/dist/cjs/solution-item-accordion.cjs.entry.js +1 -1
  22. package/dist/cjs/spatial-ref.cjs.entry.js +1 -1
  23. package/dist/collection/components/basemap-gallery/basemap-gallery.js +13 -8
  24. package/dist/collection/components/card-manager/card-manager.js +1 -1
  25. package/dist/collection/components/edit-card/edit-card.js +1 -1
  26. package/dist/collection/components/info-card/info-card.js +2 -2
  27. package/dist/collection/components/layer-table/layer-table.js +86 -9
  28. package/dist/components/basemap-gallery2.js +13 -8
  29. package/dist/components/card-manager2.js +1 -1
  30. package/dist/components/edit-card2.js +1 -1
  31. package/dist/components/info-card2.js +2 -2
  32. package/dist/components/layer-table2.js +87 -10
  33. package/dist/esm/{asyncToGenerator-96b2368d.js → asyncToGenerator-48cd21fe.js} +1 -1
  34. package/dist/esm/basemap-gallery_7.entry.js +14 -9
  35. package/dist/esm/buffer-tools_2.entry.js +1 -1
  36. package/dist/esm/card-manager_3.entry.js +90 -13
  37. package/dist/esm/consent-manager.entry.js +3 -3
  38. package/dist/esm/create-feature_4.entry.js +7 -7
  39. package/dist/esm/create-related-feature_3.entry.js +1 -1
  40. package/dist/esm/crowdsource-manager.entry.js +1 -1
  41. package/dist/esm/crowdsource-reporter.entry.js +1 -1
  42. package/dist/esm/delete-dialog.entry.js +1 -1
  43. package/dist/esm/{downloadUtils-a9fc6dd2.js → downloadUtils-7ef5420f.js} +3 -3
  44. package/dist/esm/feature-list.entry.js +4 -4
  45. package/dist/esm/{index.es-87662946.js → index.es-c379ea10.js} +2 -2
  46. package/dist/esm/json-editor_7.entry.js +1 -1
  47. package/dist/esm/map-layer-picker.entry.js +1 -1
  48. package/dist/esm/map-select-tools_3.entry.js +3 -3
  49. package/dist/esm/{popupUtils-78f2029e.js → popupUtils-ef89df87.js} +2 -2
  50. package/dist/esm/public-notification.entry.js +3 -3
  51. package/dist/esm/solution-configuration.entry.js +1 -1
  52. package/dist/esm/solution-contents_3.entry.js +1 -1
  53. package/dist/esm/solution-item-accordion.entry.js +1 -1
  54. package/dist/esm/spatial-ref.entry.js +1 -1
  55. package/dist/solutions-components/p-035a1d38.entry.js +6 -0
  56. package/dist/solutions-components/{p-c83b1a4a.entry.js → p-11ad8edc.entry.js} +1 -1
  57. package/dist/solutions-components/{p-f6d19f6d.entry.js → p-1325fa9e.entry.js} +1 -1
  58. package/dist/solutions-components/{p-60b1fe27.entry.js → p-2be59c38.entry.js} +1 -1
  59. package/dist/solutions-components/{p-455c19fa.js → p-4379cc5f.js} +2 -2
  60. package/dist/solutions-components/{p-0a60707c.entry.js → p-5096280f.entry.js} +1 -1
  61. package/dist/solutions-components/p-51033697.entry.js +6 -0
  62. package/dist/solutions-components/p-51e04c86.js +21 -0
  63. package/dist/solutions-components/{p-30b5dcaf.entry.js → p-605597cf.entry.js} +1 -1
  64. package/dist/solutions-components/{p-d65f8b73.js → p-62a0aa8e.js} +1 -1
  65. package/dist/solutions-components/{p-a38eee28.entry.js → p-681a41f3.entry.js} +1 -1
  66. package/dist/solutions-components/{p-dc188d13.js → p-6d1ee086.js} +1 -1
  67. package/dist/solutions-components/{p-50b4945e.entry.js → p-7eec82e3.entry.js} +1 -1
  68. package/dist/solutions-components/{p-5b481f0d.entry.js → p-8b05b49c.entry.js} +1 -1
  69. package/dist/solutions-components/{p-6dc629dc.entry.js → p-93ebcb9b.entry.js} +1 -1
  70. package/dist/solutions-components/{p-b04179db.entry.js → p-b1f11c67.entry.js} +1 -1
  71. package/dist/solutions-components/{p-1aad0b63.entry.js → p-b3b5dca4.entry.js} +1 -1
  72. package/dist/solutions-components/{p-b8e4345e.entry.js → p-c45ba7dd.entry.js} +1 -1
  73. package/dist/solutions-components/{p-4a2870b0.entry.js → p-de3ba7be.entry.js} +1 -1
  74. package/dist/solutions-components/{p-7f36cfb0.entry.js → p-debeb4dc.entry.js} +1 -1
  75. package/dist/solutions-components/{p-f8854c5e.entry.js → p-e68f5f54.entry.js} +1 -1
  76. package/dist/solutions-components/{p-f3ba92d5.entry.js → p-f2cfed3a.entry.js} +1 -1
  77. package/dist/solutions-components/solutions-components.esm.js +1 -1
  78. package/dist/solutions-components_commit.txt +6 -6
  79. package/dist/types/components/layer-table/layer-table.d.ts +34 -0
  80. package/package.json +1 -1
  81. package/dist/solutions-components/p-0def29e6.entry.js +0 -6
  82. package/dist/solutions-components/p-31159fc6.js +0 -21
  83. package/dist/solutions-components/p-76126e43.entry.js +0 -6
  84. /package/dist/cjs/{locale-809dbc6e.js → locale-81070bd9.js} +0 -0
  85. /package/dist/cjs/{typeof-2a7e2dec.js → typeof-920a4426.js} +0 -0
  86. /package/dist/esm/{locale-fa8258bf.js → locale-4be8e04f.js} +0 -0
  87. /package/dist/esm/{typeof-ef2a007d.js → typeof-2511410e.js} +0 -0
  88. /package/dist/solutions-components/{p-57be3b9d.js → p-8a74a780.js} +0 -0
  89. /package/dist/solutions-components/{p-4fe489cf.js → p-af7e43e0.js} +0 -0
@@ -142,7 +142,7 @@ export class CardManager {
142
142
  const heading = isTable ? this._translations.createRecord : this._translations.createFeature;
143
143
  const guideMsg = this.customInfoText ? this.customInfoText : this.selectingFeatureFromMap ? this._translations.selectFeaturesFromMapToStart : this._translations.selectFeaturesToStart;
144
144
  const showCreateFeatureOrRecordBtn = this.enableCreateFeatures && this.layer?.capabilities?.operations?.supportsAdd;
145
- return (h(Host, { key: '803f5130e6f4fa0bf97cfdd2776e176786e736cc' }, h("div", { key: '7c0a756f5de5f536b52d2e9f6629593eb3c85781', class: "overflow-auto height-full" }, h("calcite-shell", { key: '9a6366bba429d5c29a5f1c556d6812f44d28ee2c', class: "position-relative " + featuresClass }, h("div", { key: '61cb9f7942eb209e5e0bd751ab4b5ca026086882', class: "position-static z-index-500" }, h("info-card", { key: '0c3b6f958384dab4bc1db2917a88215bafe330b1', enableEditGeometry: this.enableEditGeometry, enableSnapping: this.enableSnapping, graphics: this._graphics, isLoading: this._cardLoading, isMobile: this.isMobile, locale: this.locale, mapView: this.mapView, showCloseBtn: true }))), h("calcite-shell", { key: 'db9233d29cc88ddc6cb023bcf9e9190ecb721214', class: "position-relative " + messageClass }, h("calcite-panel", { key: '0d1c22a3ad3d2d2a56054b2e8609697987b45ca7' }, h("div", { key: 'cc5f7faa934f474ddca2d0ab74fd46dac240cc6f', class: "padding-1" }, h("calcite-notice", { key: '2c2771696892455fcb1ec24d895cd321a84a8f49', icon: this.selectingFeatureFromMap ? "map" : "table", iconFlipRtl: true, open: true }, h("div", { key: '0bbbd13e4e9a7b2240a85b41dbd00fc2a7e39c75', slot: "message" }, guideMsg))), !this.isMobile && showCreateFeatureOrRecordBtn && h("calcite-button", { key: '67bac627f68fc6bcda2b1a8965ab6d7fb12d2e4c', disabled: !this.layer, onClick: () => this._createFeatureBtnClicked(), slot: "footer", width: "full" }, isTable ? this._translations.createRecord : this._translations.createFeature))), h("calcite-shell", { key: 'cd44af48bb05fd6ac41c0d66bdd9e01826ece1a4', class: "position-relative " + createFeatureClass }, h("calcite-flow-item", { key: '648dfdc4fb559ecbf64ee43791e3d9799c346f1a', selected: true }, h("calcite-panel", { key: '855df56ed576e52c94dbe3cfa8f6d57427a37ba2', heading: heading }, h("calcite-action", { key: '156d1b20da3f02de66879531802aa2d2fb99b1ca', class: "back-button hydrated", icon: "chevron-left", onClick: this._backFromCreateFeature.bind(this), scale: "s", slot: "header-actions-start", text: "" }), this.getEditorComponent(), this._showSubmitBtn && h("calcite-button", { key: '9b4556876d579a4f2bd02849737cd55b55f87cbd', appearance: "solid", class: "footer-top-button footer-button", onClick: () => void this._createFeature.submit(), slot: "footer", width: "full" }, this._translations.create)))))));
145
+ return (h(Host, { key: '803f5130e6f4fa0bf97cfdd2776e176786e736cc' }, h("div", { key: '7c0a756f5de5f536b52d2e9f6629593eb3c85781', class: "overflow-auto height-full" }, h("calcite-shell", { key: '9a6366bba429d5c29a5f1c556d6812f44d28ee2c', class: "position-relative " + featuresClass }, h("div", { key: '61cb9f7942eb209e5e0bd751ab4b5ca026086882', class: "position-static z-index-500" }, h("info-card", { key: 'aa2e8443af374a37dfebd0d5e87ca052221339a7', enableEditGeometry: this.enableEditGeometry, enableSnapping: this.enableSnapping, graphics: this._graphics, highlightEnabled: false, isLoading: this._cardLoading, isMobile: this.isMobile, locale: this.locale, mapView: this.mapView, showCloseBtn: true }))), h("calcite-shell", { key: '4979b9d94cd68f36b5d9e6ea59ffc0baecd180c0', class: "position-relative " + messageClass }, h("calcite-panel", { key: '9e02f86010e2348668a995de7d3644f0ddf838a6' }, h("div", { key: '83a5ac2003838734308d81dc2903313cb6c07e9a', class: "padding-1" }, h("calcite-notice", { key: 'e380ab334a7b4d65fb64b51bc2b7feb61771f813', icon: this.selectingFeatureFromMap ? "map" : "table", iconFlipRtl: true, open: true }, h("div", { key: '2ac48545c9c825d8d266a96b034dba7d17c024c1', slot: "message" }, guideMsg))), !this.isMobile && showCreateFeatureOrRecordBtn && h("calcite-button", { key: '300e922dcf00b72657ca48382579746073a1a646', disabled: !this.layer, onClick: () => this._createFeatureBtnClicked(), slot: "footer", width: "full" }, isTable ? this._translations.createRecord : this._translations.createFeature))), h("calcite-shell", { key: '1c279da12e0885ed5ecae714a0958e76ac3734d5', class: "position-relative " + createFeatureClass }, h("calcite-flow-item", { key: '8e54e6abf83e3d8ce487a2f76e1bdd8635f4d7b5', selected: true }, h("calcite-panel", { key: 'd31997df187797550eeaee6df294e4f41e6653b5', heading: heading }, h("calcite-action", { key: '636c83f8d5f361c1eb35a5b524565d0bd072489f', class: "back-button hydrated", icon: "chevron-left", onClick: this._backFromCreateFeature.bind(this), scale: "s", slot: "header-actions-start", text: "" }), this.getEditorComponent(), this._showSubmitBtn && h("calcite-button", { key: 'bd1a3ee472e275c57e9c40c217a3c0ac9c8e8715', appearance: "solid", class: "footer-top-button footer-button", onClick: () => void this._createFeature.submit(), slot: "footer", width: "full" }, this._translations.create)))))));
146
146
  }
147
147
  /**
148
148
  * Returns the editor component for adding feature
@@ -215,7 +215,7 @@ export class EditCard {
215
215
  !this.graphics[0].layer.editingEnabled : true;
216
216
  const tableNodeClass = this._editorLoading ? "display-none" : "position-absolute";
217
217
  const loadingClass = this._editorLoading ? "" : "display-none";
218
- return (h(Host, { key: 'd67dbfb453966623d26a1567df84bc58024305d7' }, h("div", { key: '9cd13eaf0125ab39e1d24398ccfda17c9534317a', 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: '6cb4122611d8d8595cd85cd07224baa374066658', class: "position-absolute" }, h("div", { key: 'c4498b1ecd165fa594d9d1cef43f01643b5e3efb', class: tableNodeClass, id: "feature-form", ref: (el) => this._editContainer = el }), h("calcite-loader", { key: 'febb4d5c9a662ec9ffa6955114c8476c498116ee', class: loadingClass, label: "", scale: "s" })))));
218
+ return (h(Host, { key: '5d0380d4dbd7412c90e6e3b9aa28b580bf5a6ac4' }, h("div", { key: '29825ee6c26acce86fcb6678d3e3db957358e314', 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: '35fc876d6857fb72c8808cff311e894dd9890afe', class: "position-absolute" }, h("div", { key: 'c95f3453d5fc4dac7ba5f1e7db69490405861059', class: tableNodeClass, id: "feature-form", ref: (el) => this._editContainer = el }), h("calcite-loader", { key: '211fd81ec4b13a731a895c882fafcb438fbf235c', class: loadingClass, label: "", scale: "s" })))));
219
219
  }
220
220
  //--------------------------------------------------------------------------
221
221
  //
@@ -312,8 +312,8 @@ export class InfoCard {
312
312
  });
313
313
  }
314
314
  else {
315
- this._features.clear();
316
- this._features.close();
315
+ this._features?.clear();
316
+ this._features?.close();
317
317
  }
318
318
  this._count = this._getCount();
319
319
  }
@@ -230,6 +230,18 @@ export class LayerTable {
230
230
  * boolean: When true we will not evaluate if the editor has any pending edits
231
231
  */
232
232
  _skipEditCheck = false;
233
+ /**
234
+ * __esri.Handle: highlight handle for the current feature
235
+ */
236
+ _currentFeatureHighlightHandle;
237
+ /**
238
+ * __esri.Handle: highlight handle for the default features
239
+ */
240
+ _defaultFeaturesHandle;
241
+ /**
242
+ * __esri.Handle: highlight handle for temporary / hovered feature
243
+ */
244
+ _temporaryFeatureHandle;
233
245
  /**
234
246
  * __esri.Handle: handle for the filter by extent
235
247
  */
@@ -246,6 +258,10 @@ export class LayerTable {
246
258
  * boolean: When true allow table to update the records
247
259
  */
248
260
  _shouldUpdateTableOnExtentChange = true;
261
+ /**
262
+ * any: layer view of the selected layer
263
+ */
264
+ _selectedLayerView;
249
265
  //--------------------------------------------------------------------------
250
266
  //
251
267
  // Watch handlers
@@ -345,6 +361,19 @@ export class LayerTable {
345
361
  if (this.mapView) {
346
362
  this._floorExpression = undefined;
347
363
  this._searchExpression = undefined;
364
+ // highlight group for selections
365
+ this.mapView.highlights = [
366
+ {
367
+ name: "default",
368
+ color: "#00FFFF"
369
+ }, {
370
+ name: "current-selection",
371
+ color: "#ff00ff"
372
+ }, {
373
+ name: "temporary",
374
+ color: "#FFFF00"
375
+ }
376
+ ];
348
377
  this._updateShareUrl();
349
378
  this._mapClickHandle = this.reactiveUtils.on(() => this.mapView, "click", (event) => {
350
379
  void this._mapClicked(event);
@@ -507,6 +536,7 @@ export class LayerTable {
507
536
  table.rowHighlightIds.removeAll();
508
537
  }
509
538
  table.rowHighlightIds.add(oid);
539
+ this._highlightFeatures(oid);
510
540
  if (this.zoomAndScrollToSelected) {
511
541
  const i = this._table.viewModel.getObjectIdIndex(oid);
512
542
  this._table.scrollToIndex(i);
@@ -625,8 +655,8 @@ export class LayerTable {
625
655
  const tableHeightClass = this.isMobile ? "height-full" : "height-full-adjusted";
626
656
  const showSearch = this._canShowFullTextSearch();
627
657
  this._validateActiveActions();
628
- return (h(Host, { key: '407c23b3b63455e5bab7e6c5fd239faae66a313a' }, h("div", { key: '9630101da8fef334861a236101d37f4a2b990dbc' }, h("calcite-scrim", { key: '8e7844a1ba4df87ab8d6fbe4ac9265688f5354dd', class: scrimClass, loading: this._queryingData }), h("calcite-shell", { key: 'd0a5eaa5bdbaf0338125bbdc47c6f1801662b37a' }, this._getTableControlRow("header"), h("div", { key: '6747f6638aa3d1f7380c61451cb522d159e7ddb2', class: `width-full ${tableHeightClass}` }, h("calcite-panel", { key: 'dc5b04234e48d6c466fc514a58eee4ef6c4886ba', class: "height-full width-full" }, showSearch &&
629
- h("div", { key: '8aebcf99b0a159e3e7ce8c737f0558f9f147ee9b', class: "search-container border-bottom" }, h("calcite-input", { key: '7e4c1343755a966c4460506d6b1c205a81261155', class: "search", clearable: true, icon: "search", onCalciteInputChange: (evt) => void this._searchTextChanged(evt), placeholder: this._searchPlaceHolder, title: this._searchPlaceHolder, type: "search" })), h("calcite-loader", { key: '2eaa2b221d9e401a0ac1c6b379718b29eb76ea9e', class: loadingClass, label: this._translations.fetchingData, scale: "l" }), h("div", { key: 'fa05975786b02a18c9c9866f3390c2f549d67961', class: tableNodeClass, ref: this.onTableNodeCreate }))), !this.isMobile ? (h("div", { class: "bottom-left text-color height-19", id: "solutions-selected-count-div" }, this._translations.recordsSelected
658
+ return (h(Host, { key: '2d4fa2f8d4cce83ef1f972444cac99ab17ccf09a' }, h("div", { key: 'b53e3d454a7c2c1886bfd61e960ca7aa27bf5761' }, h("calcite-scrim", { key: '9a0e507b26707b8010f4d0ac3acd5a1eb8820780', class: scrimClass, loading: this._queryingData }), h("calcite-shell", { key: '1f1815e38773a834b7c1f6bdb783717477331522' }, this._getTableControlRow("header"), h("div", { key: 'fd2b3ca04bbb6b5ed9c2e044722079704b1c778e', class: `width-full ${tableHeightClass}` }, h("calcite-panel", { key: '0355028dce084ac034fe4b5ea8f7a0b1fec18b83', class: "height-full width-full" }, showSearch &&
659
+ h("div", { key: '3169fdf7d876b504c6ee1d11a0b41a55815cbc87', class: "search-container border-bottom" }, h("calcite-input", { key: '116960c2b95658c23c2ed2ee4b5282af0fa44f27', class: "search", clearable: true, icon: "search", onCalciteInputChange: (evt) => void this._searchTextChanged(evt), placeholder: this._searchPlaceHolder, title: this._searchPlaceHolder, type: "search" })), h("calcite-loader", { key: '83fdb600a68786dc0dd0dbbcfee1bc59bd311763', class: loadingClass, label: this._translations.fetchingData, scale: "l" }), h("div", { key: '4983053113d687a459f7749bfe7723964551c3df', class: tableNodeClass, ref: this.onTableNodeCreate }))), !this.isMobile ? (h("div", { class: "bottom-left text-color height-19", id: "solutions-selected-count-div" }, this._translations.recordsSelected
630
660
  .replace("{{total}}", total)
631
661
  .replace("{{selected}}", selected))) : undefined), this.createFilterModal && this._filterModal())));
632
662
  }
@@ -1338,7 +1368,7 @@ export class LayerTable {
1338
1368
  view: this.mapView,
1339
1369
  columnReorderingEnabled: this.enableColumnReorder,
1340
1370
  editingEnabled: this._editEnabled && this.enableInlineEdit,
1341
- highlightEnabled: true,
1371
+ highlightEnabled: false,
1342
1372
  multiSortEnabled: false,
1343
1373
  attachmentsEnabled: true,
1344
1374
  visibleElements: {
@@ -1358,6 +1388,9 @@ export class LayerTable {
1358
1388
  void this._handleOnChange(evt);
1359
1389
  });
1360
1390
  this._table.viewModel.addHandles(changeHandle);
1391
+ this._table.on('cell-pointerover', this.tempHighlightOnHover.bind(this));
1392
+ this._table.on('cell-pointerout', this._removeTempHighlight.bind(this));
1393
+ this._tableNode.addEventListener("mouseleave", this._removeTempHighlight.bind(this));
1361
1394
  //Add handle to watch size of the table and update the state to reflect the total count
1362
1395
  const handle = this.reactiveUtils.watch(() => this._table.size, (size) => {
1363
1396
  this._size = size;
@@ -1376,6 +1409,7 @@ export class LayerTable {
1376
1409
  this._tempSelectedIds = [...this.selectedIds];
1377
1410
  this._finishOnChange();
1378
1411
  this._selectionFromMap = false;
1412
+ this._highlightFeatures(this.selectedIds[0]);
1379
1413
  }
1380
1414
  /**
1381
1415
  * Validate if the editor has any pending edits
@@ -1438,6 +1472,47 @@ export class LayerTable {
1438
1472
  }
1439
1473
  this.featureSelectionChange.emit(this.selectedIds);
1440
1474
  }
1475
+ /**
1476
+ * Highlight feature when hovered over table row
1477
+ * @param e The Feature table pointer over event
1478
+ */
1479
+ tempHighlightOnHover(e) {
1480
+ this._removeTempHighlight();
1481
+ const temporaryFeature = e.feature;
1482
+ this._temporaryFeatureHandle = this._selectedLayerView.highlight([temporaryFeature], { name: "temporary" });
1483
+ }
1484
+ /**
1485
+ * Clears the temporary highlight
1486
+ */
1487
+ _removeTempHighlight() {
1488
+ if (this._temporaryFeatureHandle) {
1489
+ this._temporaryFeatureHandle.remove();
1490
+ }
1491
+ }
1492
+ /**
1493
+ * Highlights the current and secondary features on map
1494
+ * @param currentFeatureId selected current feature id
1495
+ */
1496
+ _highlightFeatures(currentFeatureId) {
1497
+ this._clearHighlights();
1498
+ this._currentFeatureHighlightHandle = this._selectedLayerView.highlight([currentFeatureId], { name: "current-selection" });
1499
+ if (this.selectedIds.length > 1) {
1500
+ const secondaryFeatures = this.selectedIds.filter((id) => id !== currentFeatureId);
1501
+ this._defaultFeaturesHandle = this._selectedLayerView.highlight(secondaryFeatures, { name: "default" });
1502
+ }
1503
+ }
1504
+ /**
1505
+ * Clears the highlights
1506
+ */
1507
+ _clearHighlights() {
1508
+ this._removeTempHighlight();
1509
+ if (this._currentFeatureHighlightHandle) {
1510
+ this._currentFeatureHighlightHandle.remove();
1511
+ }
1512
+ if (this._defaultFeaturesHandle) {
1513
+ this._defaultFeaturesHandle.remove();
1514
+ }
1515
+ }
1441
1516
  /**
1442
1517
  * Reset the tables column templates when we get new column config
1443
1518
  */
@@ -1736,7 +1811,10 @@ export class LayerTable {
1736
1811
  this._outOFExtentOids = [...this._outOFExtentOids, ...outOids];
1737
1812
  }
1738
1813
  if (restoreOids.length > 0) {
1739
- this._table.highlightIds.addMany(restoreOids);
1814
+ // Merge this two array and then highlight the feature to maintain the current feature selection while restoring highlighted features
1815
+ this.selectedIds = [...new Set([...this.selectedIds, ...restoreOids])];
1816
+ this._table.highlightIds.removeAll();
1817
+ this._table.highlightIds.addMany(this.selectedIds.reverse());
1740
1818
  this._outOFExtentOids = this._outOFExtentOids.filter(oid => !restoreOids.includes(oid));
1741
1819
  }
1742
1820
  }
@@ -1834,6 +1912,7 @@ export class LayerTable {
1834
1912
  this._table.viewModel.hideAttachmentsView();
1835
1913
  }
1836
1914
  this._table?.highlightIds.removeAll();
1915
+ this._clearHighlights();
1837
1916
  this._table?.rowHighlightIds.removeAll();
1838
1917
  this._finishOnChange();
1839
1918
  }
@@ -1944,8 +2023,7 @@ export class LayerTable {
1944
2023
  */
1945
2024
  async _zoom() {
1946
2025
  if (this._layer) {
1947
- const selectedLayerView = await getFeatureLayerView(this.mapView, this._layer.id);
1948
- await goToSelection(this.selectedIds, selectedLayerView, this.mapView, true, undefined, this.zoomToScale);
2026
+ await goToSelection(this.selectedIds, this._selectedLayerView, this.mapView, true, undefined, this.zoomToScale);
1949
2027
  }
1950
2028
  }
1951
2029
  /**
@@ -1961,7 +2039,8 @@ export class LayerTable {
1961
2039
  if (id !== this._layer?.id || this._featuresEmpty()) {
1962
2040
  this._fetchingData = true;
1963
2041
  const layer = await getLayerOrTable(this.mapView, id);
1964
- layer && await layer.when(() => {
2042
+ layer && await layer.when(async () => {
2043
+ this._selectedLayerView = await getFeatureLayerView(this.mapView, layer.id);
1965
2044
  if (this._table && this._table?.viewModel?.attachmentsViewOptions?.objectId) {
1966
2045
  this._table.viewModel.hideAttachmentsView();
1967
2046
  }
@@ -2000,8 +2079,6 @@ export class LayerTable {
2000
2079
  if (fieldInfos) {
2001
2080
  columnTemplates = fieldInfos.reduce((prev, cur) => {
2002
2081
  const template = {
2003
- icon: "information",
2004
- iconText: cur.description,
2005
2082
  type: "field",
2006
2083
  fieldName: cur.name,
2007
2084
  label: cur.alias,
@@ -124,9 +124,6 @@ const BasemapGallery = /*@__PURE__*/ proxyCustomElement(class BasemapGallery ext
124
124
  */
125
125
  async _initBaseMapGallery(view) {
126
126
  if (this.BasemapGallery) {
127
- if (this.basemapWidget) {
128
- this.basemapWidget.destroy();
129
- }
130
127
  const source = new this.PortalBasemapsSource({
131
128
  query: this.basemapConfig?.basemapGroupId ? `id:${this.basemapConfig.basemapGroupId}` : null,
132
129
  filterFunction: this.basemapConfig ? (basemap) => {
@@ -134,11 +131,19 @@ const BasemapGallery = /*@__PURE__*/ proxyCustomElement(class BasemapGallery ext
134
131
  } : () => true
135
132
  });
136
133
  await source.refresh();
137
- this.basemapWidget = new this.BasemapGallery({
138
- container: this._basemapElement,
139
- view,
140
- source
141
- });
134
+ // Don't destroy and re-create this widget as it leads to a duplication
135
+ // of the basemaps listed
136
+ if (!this.basemapWidget) {
137
+ this.basemapWidget = new this.BasemapGallery({
138
+ container: this._basemapElement,
139
+ view,
140
+ source
141
+ });
142
+ }
143
+ else {
144
+ this.basemapWidget.view = view;
145
+ this.basemapWidget.source = source;
146
+ }
142
147
  }
143
148
  }
144
149
  static get watchers() { return {
@@ -144,7 +144,7 @@ const CardManager = /*@__PURE__*/ proxyCustomElement(class CardManager extends H
144
144
  const heading = isTable ? this._translations.createRecord : this._translations.createFeature;
145
145
  const guideMsg = this.customInfoText ? this.customInfoText : this.selectingFeatureFromMap ? this._translations.selectFeaturesFromMapToStart : this._translations.selectFeaturesToStart;
146
146
  const showCreateFeatureOrRecordBtn = this.enableCreateFeatures && this.layer?.capabilities?.operations?.supportsAdd;
147
- return (h(Host, { key: '803f5130e6f4fa0bf97cfdd2776e176786e736cc' }, h("div", { key: '7c0a756f5de5f536b52d2e9f6629593eb3c85781', class: "overflow-auto height-full" }, h("calcite-shell", { key: '9a6366bba429d5c29a5f1c556d6812f44d28ee2c', class: "position-relative " + featuresClass }, h("div", { key: '61cb9f7942eb209e5e0bd751ab4b5ca026086882', class: "position-static z-index-500" }, h("info-card", { key: '0c3b6f958384dab4bc1db2917a88215bafe330b1', enableEditGeometry: this.enableEditGeometry, enableSnapping: this.enableSnapping, graphics: this._graphics, isLoading: this._cardLoading, isMobile: this.isMobile, locale: this.locale, mapView: this.mapView, showCloseBtn: true }))), h("calcite-shell", { key: 'db9233d29cc88ddc6cb023bcf9e9190ecb721214', class: "position-relative " + messageClass }, h("calcite-panel", { key: '0d1c22a3ad3d2d2a56054b2e8609697987b45ca7' }, h("div", { key: 'cc5f7faa934f474ddca2d0ab74fd46dac240cc6f', class: "padding-1" }, h("calcite-notice", { key: '2c2771696892455fcb1ec24d895cd321a84a8f49', icon: this.selectingFeatureFromMap ? "map" : "table", iconFlipRtl: true, open: true }, h("div", { key: '0bbbd13e4e9a7b2240a85b41dbd00fc2a7e39c75', slot: "message" }, guideMsg))), !this.isMobile && showCreateFeatureOrRecordBtn && h("calcite-button", { key: '67bac627f68fc6bcda2b1a8965ab6d7fb12d2e4c', disabled: !this.layer, onClick: () => this._createFeatureBtnClicked(), slot: "footer", width: "full" }, isTable ? this._translations.createRecord : this._translations.createFeature))), h("calcite-shell", { key: 'cd44af48bb05fd6ac41c0d66bdd9e01826ece1a4', class: "position-relative " + createFeatureClass }, h("calcite-flow-item", { key: '648dfdc4fb559ecbf64ee43791e3d9799c346f1a', selected: true }, h("calcite-panel", { key: '855df56ed576e52c94dbe3cfa8f6d57427a37ba2', heading: heading }, h("calcite-action", { key: '156d1b20da3f02de66879531802aa2d2fb99b1ca', class: "back-button hydrated", icon: "chevron-left", onClick: this._backFromCreateFeature.bind(this), scale: "s", slot: "header-actions-start", text: "" }), this.getEditorComponent(), this._showSubmitBtn && h("calcite-button", { key: '9b4556876d579a4f2bd02849737cd55b55f87cbd', appearance: "solid", class: "footer-top-button footer-button", onClick: () => void this._createFeature.submit(), slot: "footer", width: "full" }, this._translations.create)))))));
147
+ return (h(Host, { key: '803f5130e6f4fa0bf97cfdd2776e176786e736cc' }, h("div", { key: '7c0a756f5de5f536b52d2e9f6629593eb3c85781', class: "overflow-auto height-full" }, h("calcite-shell", { key: '9a6366bba429d5c29a5f1c556d6812f44d28ee2c', class: "position-relative " + featuresClass }, h("div", { key: '61cb9f7942eb209e5e0bd751ab4b5ca026086882', class: "position-static z-index-500" }, h("info-card", { key: 'aa2e8443af374a37dfebd0d5e87ca052221339a7', enableEditGeometry: this.enableEditGeometry, enableSnapping: this.enableSnapping, graphics: this._graphics, highlightEnabled: false, isLoading: this._cardLoading, isMobile: this.isMobile, locale: this.locale, mapView: this.mapView, showCloseBtn: true }))), h("calcite-shell", { key: '4979b9d94cd68f36b5d9e6ea59ffc0baecd180c0', class: "position-relative " + messageClass }, h("calcite-panel", { key: '9e02f86010e2348668a995de7d3644f0ddf838a6' }, h("div", { key: '83a5ac2003838734308d81dc2903313cb6c07e9a', class: "padding-1" }, h("calcite-notice", { key: 'e380ab334a7b4d65fb64b51bc2b7feb61771f813', icon: this.selectingFeatureFromMap ? "map" : "table", iconFlipRtl: true, open: true }, h("div", { key: '2ac48545c9c825d8d266a96b034dba7d17c024c1', slot: "message" }, guideMsg))), !this.isMobile && showCreateFeatureOrRecordBtn && h("calcite-button", { key: '300e922dcf00b72657ca48382579746073a1a646', disabled: !this.layer, onClick: () => this._createFeatureBtnClicked(), slot: "footer", width: "full" }, isTable ? this._translations.createRecord : this._translations.createFeature))), h("calcite-shell", { key: '1c279da12e0885ed5ecae714a0958e76ac3734d5', class: "position-relative " + createFeatureClass }, h("calcite-flow-item", { key: '8e54e6abf83e3d8ce487a2f76e1bdd8635f4d7b5', selected: true }, h("calcite-panel", { key: 'd31997df187797550eeaee6df294e4f41e6653b5', heading: heading }, h("calcite-action", { key: '636c83f8d5f361c1eb35a5b524565d0bd072489f', class: "back-button hydrated", icon: "chevron-left", onClick: this._backFromCreateFeature.bind(this), scale: "s", slot: "header-actions-start", text: "" }), this.getEditorComponent(), this._showSubmitBtn && h("calcite-button", { key: 'bd1a3ee472e275c57e9c40c217a3c0ac9c8e8715', appearance: "solid", class: "footer-top-button footer-button", onClick: () => void this._createFeature.submit(), slot: "footer", width: "full" }, this._translations.create)))))));
148
148
  }
149
149
  /**
150
150
  * Returns the editor component for adding feature
@@ -207,7 +207,7 @@ const EditCard = /*@__PURE__*/ proxyCustomElement(class EditCard extends HTMLEle
207
207
  !this.graphics[0].layer.editingEnabled : true;
208
208
  const tableNodeClass = this._editorLoading ? "display-none" : "position-absolute";
209
209
  const loadingClass = this._editorLoading ? "" : "display-none";
210
- return (h(Host, { key: 'd67dbfb453966623d26a1567df84bc58024305d7' }, h("div", { key: '9cd13eaf0125ab39e1d24398ccfda17c9534317a', 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: '6cb4122611d8d8595cd85cd07224baa374066658', class: "position-absolute" }, h("div", { key: 'c4498b1ecd165fa594d9d1cef43f01643b5e3efb', class: tableNodeClass, id: "feature-form", ref: (el) => this._editContainer = el }), h("calcite-loader", { key: 'febb4d5c9a662ec9ffa6955114c8476c498116ee', class: loadingClass, label: "", scale: "s" })))));
210
+ return (h(Host, { key: '5d0380d4dbd7412c90e6e3b9aa28b580bf5a6ac4' }, h("div", { key: '29825ee6c26acce86fcb6678d3e3db957358e314', 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: '35fc876d6857fb72c8808cff311e894dd9890afe', class: "position-absolute" }, h("div", { key: 'c95f3453d5fc4dac7ba5f1e7db69490405861059', class: tableNodeClass, id: "feature-form", ref: (el) => this._editContainer = el }), h("calcite-loader", { key: '211fd81ec4b13a731a895c882fafcb438fbf235c', class: loadingClass, label: "", scale: "s" })))));
211
211
  }
212
212
  //--------------------------------------------------------------------------
213
213
  //
@@ -313,8 +313,8 @@ const InfoCard = /*@__PURE__*/ proxyCustomElement(class InfoCard extends HTMLEle
313
313
  });
314
314
  }
315
315
  else {
316
- this._features.clear();
317
- this._features.close();
316
+ this._features?.clear();
317
+ this._features?.close();
318
318
  }
319
319
  this._count = this._getCount();
320
320
  }
@@ -6,7 +6,7 @@
6
6
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
7
7
  import { l as loadModules } from './loadModules.js';
8
8
  import { g as getLocaleComponentStrings } from './locale.js';
9
- import { b as goToSelection, c as getFeatureLayerView, g as getLayerOrTable } from './mapViewUtils.js';
9
+ import { b as goToSelection, g as getLayerOrTable, c as getFeatureLayerView } from './mapViewUtils.js';
10
10
  import { b as queryFeaturesByGlobalID } from './queryUtils.js';
11
11
  import { d as downloadCSV } from './downloadUtils.js';
12
12
  import { d as defineCustomElement$1 } from './map-layer-picker2.js';
@@ -236,6 +236,18 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
236
236
  * boolean: When true we will not evaluate if the editor has any pending edits
237
237
  */
238
238
  _skipEditCheck = false;
239
+ /**
240
+ * __esri.Handle: highlight handle for the current feature
241
+ */
242
+ _currentFeatureHighlightHandle;
243
+ /**
244
+ * __esri.Handle: highlight handle for the default features
245
+ */
246
+ _defaultFeaturesHandle;
247
+ /**
248
+ * __esri.Handle: highlight handle for temporary / hovered feature
249
+ */
250
+ _temporaryFeatureHandle;
239
251
  /**
240
252
  * __esri.Handle: handle for the filter by extent
241
253
  */
@@ -252,6 +264,10 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
252
264
  * boolean: When true allow table to update the records
253
265
  */
254
266
  _shouldUpdateTableOnExtentChange = true;
267
+ /**
268
+ * any: layer view of the selected layer
269
+ */
270
+ _selectedLayerView;
255
271
  //--------------------------------------------------------------------------
256
272
  //
257
273
  // Watch handlers
@@ -351,6 +367,19 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
351
367
  if (this.mapView) {
352
368
  this._floorExpression = undefined;
353
369
  this._searchExpression = undefined;
370
+ // highlight group for selections
371
+ this.mapView.highlights = [
372
+ {
373
+ name: "default",
374
+ color: "#00FFFF"
375
+ }, {
376
+ name: "current-selection",
377
+ color: "#ff00ff"
378
+ }, {
379
+ name: "temporary",
380
+ color: "#FFFF00"
381
+ }
382
+ ];
354
383
  this._updateShareUrl();
355
384
  this._mapClickHandle = this.reactiveUtils.on(() => this.mapView, "click", (event) => {
356
385
  void this._mapClicked(event);
@@ -513,6 +542,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
513
542
  table.rowHighlightIds.removeAll();
514
543
  }
515
544
  table.rowHighlightIds.add(oid);
545
+ this._highlightFeatures(oid);
516
546
  if (this.zoomAndScrollToSelected) {
517
547
  const i = this._table.viewModel.getObjectIdIndex(oid);
518
548
  this._table.scrollToIndex(i);
@@ -631,8 +661,8 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
631
661
  const tableHeightClass = this.isMobile ? "height-full" : "height-full-adjusted";
632
662
  const showSearch = this._canShowFullTextSearch();
633
663
  this._validateActiveActions();
634
- return (h(Host, { key: '407c23b3b63455e5bab7e6c5fd239faae66a313a' }, h("div", { key: '9630101da8fef334861a236101d37f4a2b990dbc' }, h("calcite-scrim", { key: '8e7844a1ba4df87ab8d6fbe4ac9265688f5354dd', class: scrimClass, loading: this._queryingData }), h("calcite-shell", { key: 'd0a5eaa5bdbaf0338125bbdc47c6f1801662b37a' }, this._getTableControlRow("header"), h("div", { key: '6747f6638aa3d1f7380c61451cb522d159e7ddb2', class: `width-full ${tableHeightClass}` }, h("calcite-panel", { key: 'dc5b04234e48d6c466fc514a58eee4ef6c4886ba', class: "height-full width-full" }, showSearch &&
635
- h("div", { key: '8aebcf99b0a159e3e7ce8c737f0558f9f147ee9b', class: "search-container border-bottom" }, h("calcite-input", { key: '7e4c1343755a966c4460506d6b1c205a81261155', class: "search", clearable: true, icon: "search", onCalciteInputChange: (evt) => void this._searchTextChanged(evt), placeholder: this._searchPlaceHolder, title: this._searchPlaceHolder, type: "search" })), h("calcite-loader", { key: '2eaa2b221d9e401a0ac1c6b379718b29eb76ea9e', class: loadingClass, label: this._translations.fetchingData, scale: "l" }), h("div", { key: 'fa05975786b02a18c9c9866f3390c2f549d67961', class: tableNodeClass, ref: this.onTableNodeCreate }))), !this.isMobile ? (h("div", { class: "bottom-left text-color height-19", id: "solutions-selected-count-div" }, this._translations.recordsSelected
664
+ return (h(Host, { key: '2d4fa2f8d4cce83ef1f972444cac99ab17ccf09a' }, h("div", { key: 'b53e3d454a7c2c1886bfd61e960ca7aa27bf5761' }, h("calcite-scrim", { key: '9a0e507b26707b8010f4d0ac3acd5a1eb8820780', class: scrimClass, loading: this._queryingData }), h("calcite-shell", { key: '1f1815e38773a834b7c1f6bdb783717477331522' }, this._getTableControlRow("header"), h("div", { key: 'fd2b3ca04bbb6b5ed9c2e044722079704b1c778e', class: `width-full ${tableHeightClass}` }, h("calcite-panel", { key: '0355028dce084ac034fe4b5ea8f7a0b1fec18b83', class: "height-full width-full" }, showSearch &&
665
+ h("div", { key: '3169fdf7d876b504c6ee1d11a0b41a55815cbc87', class: "search-container border-bottom" }, h("calcite-input", { key: '116960c2b95658c23c2ed2ee4b5282af0fa44f27', class: "search", clearable: true, icon: "search", onCalciteInputChange: (evt) => void this._searchTextChanged(evt), placeholder: this._searchPlaceHolder, title: this._searchPlaceHolder, type: "search" })), h("calcite-loader", { key: '83fdb600a68786dc0dd0dbbcfee1bc59bd311763', class: loadingClass, label: this._translations.fetchingData, scale: "l" }), h("div", { key: '4983053113d687a459f7749bfe7723964551c3df', class: tableNodeClass, ref: this.onTableNodeCreate }))), !this.isMobile ? (h("div", { class: "bottom-left text-color height-19", id: "solutions-selected-count-div" }, this._translations.recordsSelected
636
666
  .replace("{{total}}", total)
637
667
  .replace("{{selected}}", selected))) : undefined), this.createFilterModal && this._filterModal())));
638
668
  }
@@ -1344,7 +1374,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1344
1374
  view: this.mapView,
1345
1375
  columnReorderingEnabled: this.enableColumnReorder,
1346
1376
  editingEnabled: this._editEnabled && this.enableInlineEdit,
1347
- highlightEnabled: true,
1377
+ highlightEnabled: false,
1348
1378
  multiSortEnabled: false,
1349
1379
  attachmentsEnabled: true,
1350
1380
  visibleElements: {
@@ -1364,6 +1394,9 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1364
1394
  void this._handleOnChange(evt);
1365
1395
  });
1366
1396
  this._table.viewModel.addHandles(changeHandle);
1397
+ this._table.on('cell-pointerover', this.tempHighlightOnHover.bind(this));
1398
+ this._table.on('cell-pointerout', this._removeTempHighlight.bind(this));
1399
+ this._tableNode.addEventListener("mouseleave", this._removeTempHighlight.bind(this));
1367
1400
  //Add handle to watch size of the table and update the state to reflect the total count
1368
1401
  const handle = this.reactiveUtils.watch(() => this._table.size, (size) => {
1369
1402
  this._size = size;
@@ -1382,6 +1415,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1382
1415
  this._tempSelectedIds = [...this.selectedIds];
1383
1416
  this._finishOnChange();
1384
1417
  this._selectionFromMap = false;
1418
+ this._highlightFeatures(this.selectedIds[0]);
1385
1419
  }
1386
1420
  /**
1387
1421
  * Validate if the editor has any pending edits
@@ -1444,6 +1478,47 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1444
1478
  }
1445
1479
  this.featureSelectionChange.emit(this.selectedIds);
1446
1480
  }
1481
+ /**
1482
+ * Highlight feature when hovered over table row
1483
+ * @param e The Feature table pointer over event
1484
+ */
1485
+ tempHighlightOnHover(e) {
1486
+ this._removeTempHighlight();
1487
+ const temporaryFeature = e.feature;
1488
+ this._temporaryFeatureHandle = this._selectedLayerView.highlight([temporaryFeature], { name: "temporary" });
1489
+ }
1490
+ /**
1491
+ * Clears the temporary highlight
1492
+ */
1493
+ _removeTempHighlight() {
1494
+ if (this._temporaryFeatureHandle) {
1495
+ this._temporaryFeatureHandle.remove();
1496
+ }
1497
+ }
1498
+ /**
1499
+ * Highlights the current and secondary features on map
1500
+ * @param currentFeatureId selected current feature id
1501
+ */
1502
+ _highlightFeatures(currentFeatureId) {
1503
+ this._clearHighlights();
1504
+ this._currentFeatureHighlightHandle = this._selectedLayerView.highlight([currentFeatureId], { name: "current-selection" });
1505
+ if (this.selectedIds.length > 1) {
1506
+ const secondaryFeatures = this.selectedIds.filter((id) => id !== currentFeatureId);
1507
+ this._defaultFeaturesHandle = this._selectedLayerView.highlight(secondaryFeatures, { name: "default" });
1508
+ }
1509
+ }
1510
+ /**
1511
+ * Clears the highlights
1512
+ */
1513
+ _clearHighlights() {
1514
+ this._removeTempHighlight();
1515
+ if (this._currentFeatureHighlightHandle) {
1516
+ this._currentFeatureHighlightHandle.remove();
1517
+ }
1518
+ if (this._defaultFeaturesHandle) {
1519
+ this._defaultFeaturesHandle.remove();
1520
+ }
1521
+ }
1447
1522
  /**
1448
1523
  * Reset the tables column templates when we get new column config
1449
1524
  */
@@ -1742,7 +1817,10 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1742
1817
  this._outOFExtentOids = [...this._outOFExtentOids, ...outOids];
1743
1818
  }
1744
1819
  if (restoreOids.length > 0) {
1745
- this._table.highlightIds.addMany(restoreOids);
1820
+ // Merge this two array and then highlight the feature to maintain the current feature selection while restoring highlighted features
1821
+ this.selectedIds = [...new Set([...this.selectedIds, ...restoreOids])];
1822
+ this._table.highlightIds.removeAll();
1823
+ this._table.highlightIds.addMany(this.selectedIds.reverse());
1746
1824
  this._outOFExtentOids = this._outOFExtentOids.filter(oid => !restoreOids.includes(oid));
1747
1825
  }
1748
1826
  }
@@ -1840,6 +1918,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1840
1918
  this._table.viewModel.hideAttachmentsView();
1841
1919
  }
1842
1920
  this._table?.highlightIds.removeAll();
1921
+ this._clearHighlights();
1843
1922
  this._table?.rowHighlightIds.removeAll();
1844
1923
  this._finishOnChange();
1845
1924
  }
@@ -1950,8 +2029,7 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1950
2029
  */
1951
2030
  async _zoom() {
1952
2031
  if (this._layer) {
1953
- const selectedLayerView = await getFeatureLayerView(this.mapView, this._layer.id);
1954
- await goToSelection(this.selectedIds, selectedLayerView, this.mapView, true, undefined, this.zoomToScale);
2032
+ await goToSelection(this.selectedIds, this._selectedLayerView, this.mapView, true, undefined, this.zoomToScale);
1955
2033
  }
1956
2034
  }
1957
2035
  /**
@@ -1967,7 +2045,8 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
1967
2045
  if (id !== this._layer?.id || this._featuresEmpty()) {
1968
2046
  this._fetchingData = true;
1969
2047
  const layer = await getLayerOrTable(this.mapView, id);
1970
- layer && await layer.when(() => {
2048
+ layer && await layer.when(async () => {
2049
+ this._selectedLayerView = await getFeatureLayerView(this.mapView, layer.id);
1971
2050
  if (this._table && this._table?.viewModel?.attachmentsViewOptions?.objectId) {
1972
2051
  this._table.viewModel.hideAttachmentsView();
1973
2052
  }
@@ -2006,8 +2085,6 @@ const LayerTable = /*@__PURE__*/ proxyCustomElement(class LayerTable extends HTM
2006
2085
  if (fieldInfos) {
2007
2086
  columnTemplates = fieldInfos.reduce((prev, cur) => {
2008
2087
  const template = {
2009
- icon: "information",
2010
- iconText: cur.description,
2011
2088
  type: "field",
2012
2089
  fieldName: cur.name,
2013
2090
  label: cur.alias,
@@ -4,7 +4,7 @@
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  import { g as getDefaultExportFromCjs } from './_commonjsHelpers-089957fe.js';
7
- import { _ as _typeof } from './typeof-ef2a007d.js';
7
+ import { _ as _typeof } from './typeof-2511410e.js';
8
8
 
9
9
  var defineProperty = {exports: {}};
10
10
 
@@ -4,7 +4,7 @@
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  import { r as registerInstance, g as getElement, h, H as Host, c as createEvent } from './index-21b6e87e.js';
7
- import { l as loadModules, g as getLocaleComponentStrings } from './locale-fa8258bf.js';
7
+ import { l as loadModules, g as getLocaleComponentStrings } from './locale-4be8e04f.js';
8
8
  import './_commonjsHelpers-089957fe.js';
9
9
 
10
10
  const basemapGalleryCss = ":host{display:block}";
@@ -123,9 +123,6 @@ const BasemapGallery = class {
123
123
  */
124
124
  async _initBaseMapGallery(view) {
125
125
  if (this.BasemapGallery) {
126
- if (this.basemapWidget) {
127
- this.basemapWidget.destroy();
128
- }
129
126
  const source = new this.PortalBasemapsSource({
130
127
  query: this.basemapConfig?.basemapGroupId ? `id:${this.basemapConfig.basemapGroupId}` : null,
131
128
  filterFunction: this.basemapConfig ? (basemap) => {
@@ -133,11 +130,19 @@ const BasemapGallery = class {
133
130
  } : () => true
134
131
  });
135
132
  await source.refresh();
136
- this.basemapWidget = new this.BasemapGallery({
137
- container: this._basemapElement,
138
- view,
139
- source
140
- });
133
+ // Don't destroy and re-create this widget as it leads to a duplication
134
+ // of the basemaps listed
135
+ if (!this.basemapWidget) {
136
+ this.basemapWidget = new this.BasemapGallery({
137
+ container: this._basemapElement,
138
+ view,
139
+ source
140
+ });
141
+ }
142
+ else {
143
+ this.basemapWidget.view = view;
144
+ this.basemapWidget.source = source;
145
+ }
141
146
  }
142
147
  }
143
148
  static get watchers() { return {
@@ -4,7 +4,7 @@
4
4
  * http://www.apache.org/licenses/LICENSE-2.0
5
5
  */
6
6
  import { r as registerInstance, c as createEvent, g as getElement, h, H as Host } from './index-21b6e87e.js';
7
- import { l as loadModules, g as getLocaleComponentStrings } from './locale-fa8258bf.js';
7
+ import { l as loadModules, g as getLocaleComponentStrings } from './locale-4be8e04f.js';
8
8
  import { f as EDrawMode } from './interfaces-659e3836.js';
9
9
  import { s as state } from './publicNotificationStore-9f8e00a1.js';
10
10
  import './_commonjsHelpers-089957fe.js';