@esri/solutions-components 0.11.17 → 0.11.18

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 (73) hide show
  1. package/dist/cjs/card-manager_3.cjs.entry.js +116 -137
  2. package/dist/cjs/create-feature_4.cjs.entry.js +55 -9
  3. package/dist/cjs/create-related-feature_3.cjs.entry.js +1 -1
  4. package/dist/cjs/crowdsource-manager.cjs.entry.js +32 -19
  5. package/dist/cjs/crowdsource-reporter.cjs.entry.js +1 -1
  6. package/dist/cjs/{downloadUtils-88ec0e88.js → downloadUtils-9abff913.js} +1 -1
  7. package/dist/cjs/feature-list.cjs.entry.js +3 -3
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/map-layer-picker.cjs.entry.js +1 -1
  10. package/dist/cjs/map-select-tools_3.cjs.entry.js +2 -2
  11. package/dist/cjs/{mapViewUtils-319df9ec.js → mapViewUtils-4ea7216c.js} +0 -44
  12. package/dist/cjs/{popupUtils-ca1127aa.js → popupUtils-fc7557da.js} +1 -1
  13. package/dist/cjs/public-notification.cjs.entry.js +2 -2
  14. package/dist/cjs/solution-item-accordion.cjs.entry.js +6 -3
  15. package/dist/cjs/solutions-components.cjs.js +1 -1
  16. package/dist/collection/assets/t9n/crowdsource-manager/resources.json +4 -1
  17. package/dist/collection/assets/t9n/crowdsource-manager/resources_en.json +4 -1
  18. package/dist/collection/components/card-manager/card-manager.js +1 -1
  19. package/dist/collection/components/crowdsource-manager/crowdsource-manager.css +23 -0
  20. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +32 -18
  21. package/dist/collection/components/info-card/info-card.js +88 -7
  22. package/dist/collection/components/layer-table/layer-table.js +147 -137
  23. package/dist/collection/components/solution-item-accordion/solution-item-accordion.js +11 -4
  24. package/dist/components/card-manager2.js +1 -1
  25. package/dist/components/crowdsource-manager.js +33 -19
  26. package/dist/components/info-card2.js +54 -6
  27. package/dist/components/layer-table2.js +116 -136
  28. package/dist/components/map-select-tools2.js +1 -1
  29. package/dist/components/queryUtils.js +1 -43
  30. package/dist/components/refine-selection2.js +1 -1
  31. package/dist/components/solution-item-accordion.js +6 -3
  32. package/dist/esm/card-manager_3.entry.js +116 -137
  33. package/dist/esm/create-feature_4.entry.js +55 -9
  34. package/dist/esm/create-related-feature_3.entry.js +1 -1
  35. package/dist/esm/crowdsource-manager.entry.js +32 -19
  36. package/dist/esm/crowdsource-reporter.entry.js +1 -1
  37. package/dist/esm/{downloadUtils-22a8f2d8.js → downloadUtils-36d854d2.js} +1 -1
  38. package/dist/esm/feature-list.entry.js +3 -3
  39. package/dist/esm/loader.js +1 -1
  40. package/dist/esm/map-layer-picker.entry.js +1 -1
  41. package/dist/esm/map-select-tools_3.entry.js +2 -2
  42. package/dist/esm/{mapViewUtils-a854e298.js → mapViewUtils-9da9be1c.js} +1 -43
  43. package/dist/esm/{popupUtils-1314cb13.js → popupUtils-64d25cb0.js} +1 -1
  44. package/dist/esm/public-notification.entry.js +2 -2
  45. package/dist/esm/solution-item-accordion.entry.js +6 -3
  46. package/dist/esm/solutions-components.js +1 -1
  47. package/dist/solutions-components/assets/t9n/crowdsource-manager/resources.json +4 -1
  48. package/dist/solutions-components/assets/t9n/crowdsource-manager/resources_en.json +4 -1
  49. package/dist/solutions-components/{p-43d9bb7d.entry.js → p-055706e3.entry.js} +1 -1
  50. package/dist/solutions-components/{p-8ea0a36a.entry.js → p-06970873.entry.js} +1 -1
  51. package/dist/solutions-components/{p-bf2598f8.entry.js → p-3c43839b.entry.js} +1 -1
  52. package/dist/solutions-components/{p-4f514c6d.js → p-6eab9d1f.js} +1 -1
  53. package/dist/solutions-components/{p-a003600b.entry.js → p-72ae3bf0.entry.js} +1 -1
  54. package/dist/solutions-components/p-777ed6b0.entry.js +6 -0
  55. package/dist/solutions-components/{p-5ea1e18b.entry.js → p-8b5c3c9f.entry.js} +1 -1
  56. package/dist/solutions-components/{p-1fe3577a.entry.js → p-a44815ea.entry.js} +1 -1
  57. package/dist/solutions-components/p-b1bd3028.entry.js +6 -0
  58. package/dist/solutions-components/{p-3c3aecdd.js → p-d0d21a1f.js} +1 -1
  59. package/dist/solutions-components/{p-952da957.js → p-dcd2f00b.js} +2 -2
  60. package/dist/solutions-components/{p-bc2548ba.entry.js → p-e2270562.entry.js} +1 -1
  61. package/dist/solutions-components/p-e90c0e26.entry.js +6 -0
  62. package/dist/solutions-components/solutions-components.esm.js +1 -1
  63. package/dist/solutions-components_commit.txt +6 -6
  64. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +11 -7
  65. package/dist/types/components/info-card/info-card.d.ts +16 -0
  66. package/dist/types/components/layer-table/layer-table.d.ts +32 -21
  67. package/dist/types/components/solution-item-accordion/solution-item-accordion.d.ts +1 -1
  68. package/dist/types/components.d.ts +19 -2
  69. package/dist/types/preact.d.ts +2 -1
  70. package/package.json +1 -1
  71. package/dist/solutions-components/p-87919d6d.entry.js +0 -6
  72. package/dist/solutions-components/p-b37be371.entry.js +0 -6
  73. package/dist/solutions-components/p-ce8377c6.entry.js +0 -6
@@ -5,8 +5,8 @@
5
5
  */
6
6
  import { r as registerInstance, c as createEvent, g as getElement, h, H as Host } from './index-3702583a.js';
7
7
  import { g as getLocaleComponentStrings, l as loadModules } from './locale-aa656a2c.js';
8
- import { g as getLayerOrTable, q as queryFeaturesByID, e as goToSelection, f as queryAllIds, i as queryAllOidsWithQueryFeatures, j as queryFeaturesByGlobalID, c as getFeatureLayerView } from './mapViewUtils-a854e298.js';
9
- import { d as downloadCSV } from './downloadUtils-22a8f2d8.js';
8
+ import { g as getLayerOrTable, q as queryFeaturesByID, e as goToSelection, f as queryFeaturesByGlobalID, c as getFeatureLayerView } from './mapViewUtils-9da9be1c.js';
9
+ import { d as downloadCSV } from './downloadUtils-36d854d2.js';
10
10
  import './esri-loader-c6842c6b.js';
11
11
  import './_commonjsHelpers-089957fe.js';
12
12
  import './interfaces-659e3836.js';
@@ -193,7 +193,7 @@ const CardManager = class {
193
193
  const heading = isTable ? this._translations.createRecord : this._translations.createFeature;
194
194
  const guideMsg = this.customInfoText ? this.customInfoText : this.selectingFeatureFromMap ? this._translations.selectFeaturesFromMapToStart : this._translations.selectFeaturesToStart;
195
195
  const showCreateFeatureOrRecordBtn = this.enableCreateFeatures && this.layer?.capabilities?.operations?.supportsAdd;
196
- return (h(Host, { key: '5557aa4d80b859335e38db3f4255f4a61d00560f' }, h("div", { key: '6756e3314fc3444a982010a3cfa702d77f05f316', class: "overflow-auto height-full" }, h("calcite-shell", { key: '715eb7ed692a1d00347d44f20df370cf9a91ded5', class: "position-relative " + featuresClass }, h("div", { key: 'baf4e97c1884f477e4077a6dc8e59d98c77593a4', class: "position-static z-index-500" }, h("info-card", { key: 'e2ed262e2ebdf9b79ddd725f073f13d6a17909d2', enableEditGeometry: this.enableEditGeometry, graphics: this._graphics, isLoading: this._cardLoading, isMobile: this.isMobile, locale: this.locale, mapView: this.mapView }))), h("calcite-shell", { key: '536b1dec2a539191f30b648f70a6bdcd447a6d6c', class: "position-relative " + messageClass }, h("calcite-panel", { key: '285eb9f07fcaf53c23ccecb44d68ec5bb85c9528' }, h("div", { key: 'dd180d0c21823d5cb3007c6078c9daa81a487101', class: "padding-1" }, h("calcite-notice", { key: 'b7d4ffb57b912c0424bef1c828608fd41d12d561', icon: this.selectingFeatureFromMap ? "map" : "table", iconFlipRtl: true, open: true }, h("div", { key: '642339477aa8b9e1cba106dcb410ef293363311f', slot: "message" }, guideMsg))), !this.isMobile && showCreateFeatureOrRecordBtn && h("calcite-button", { key: '835562b5a083e7fc6f558d19787d5fa2680c2938', disabled: !this.layer, onClick: () => this._createFeatureBtnClicked(), slot: "footer", width: "full" }, isTable ? this._translations.createRecord : this._translations.createFeature))), h("calcite-shell", { key: '5aeb16a8b0e6e693b7fddd64bf1ec2fe6553f133', class: "position-relative " + createFeatureClass }, h("calcite-flow-item", { key: '20487f672aa32832c3b6a576976ad1bb12116814' }, h("calcite-panel", { key: '9cc5d827a20afbf3381be0739cc3cc6713af8d66', heading: heading }, h("calcite-action", { key: 'c441e24039efd9ec28471e6b66bfea2a4b5a8454', 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: 'a858b7a2fb25e257b6c92ca5719fb3a7cc8aedbb', appearance: "solid", class: "footer-top-button footer-button", onClick: () => void this._createFeature.submit(), slot: "footer", width: "full" }, this._translations.create)))))));
196
+ return (h(Host, { key: '5557aa4d80b859335e38db3f4255f4a61d00560f' }, h("div", { key: '6756e3314fc3444a982010a3cfa702d77f05f316', class: "overflow-auto height-full" }, h("calcite-shell", { key: '715eb7ed692a1d00347d44f20df370cf9a91ded5', class: "position-relative " + featuresClass }, h("div", { key: 'baf4e97c1884f477e4077a6dc8e59d98c77593a4', class: "position-static z-index-500" }, h("info-card", { key: '0b9b30182fbc3482e9edf49b79f68aec8cf86adc', enableEditGeometry: this.enableEditGeometry, graphics: this._graphics, isLoading: this._cardLoading, isMobile: this.isMobile, locale: this.locale, mapView: this.mapView, showCloseBtn: true }))), h("calcite-shell", { key: '94b646061956a78dec4f96d9d1d9dedc5ad6aee7', class: "position-relative " + messageClass }, h("calcite-panel", { key: '00b660d474234f8156f3d4c627626f5891754051' }, h("div", { key: 'adb0732ff59c4fdedb19367a32ad9e3e060ddb60', class: "padding-1" }, h("calcite-notice", { key: 'a2c88bd4a0827111b0d1f3056ae571b47e5b380b', icon: this.selectingFeatureFromMap ? "map" : "table", iconFlipRtl: true, open: true }, h("div", { key: 'bffc2630de3f0376b6ea5827c89f65dc605a5356', slot: "message" }, guideMsg))), !this.isMobile && showCreateFeatureOrRecordBtn && h("calcite-button", { key: '08bef5c20d6b60e17abcfc9fc19d7d1eb5d04b1c', disabled: !this.layer, onClick: () => this._createFeatureBtnClicked(), slot: "footer", width: "full" }, isTable ? this._translations.createRecord : this._translations.createFeature))), h("calcite-shell", { key: '833a8de60b491008006034c1696fcb29f1bb6a08', class: "position-relative " + createFeatureClass }, h("calcite-flow-item", { key: 'dd2ae4509e4bec5a90f33484f8a28f422c0eeee4' }, h("calcite-panel", { key: '8fa68650f1933a88cdaf1fee8391cf433b7b54e9', heading: heading }, h("calcite-action", { key: '2b205887ff8703e01ef356cae09ce5d15dbec7c6', 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: '0977a3974583266f6d90e18c8fbbc3e18f803983', appearance: "solid", class: "footer-top-button footer-button", onClick: () => void this._createFeature.submit(), slot: "footer", width: "full" }, this._translations.create)))))));
197
197
  }
198
198
  /**
199
199
  * Returns the editor component for adding feature
@@ -470,10 +470,6 @@ const LayerTable = class {
470
470
  * IColumnsInfo: Key/value pair with fieldname/(visible in table)
471
471
  */
472
472
  _columnsInfo;
473
- /**
474
- * boolean: When true the ctrl key is currently pressed
475
- */
476
- _ctrlIsPressed = false;
477
473
  /**
478
474
  * number: The id of the most recently selected row from the table
479
475
  */
@@ -579,18 +575,10 @@ const LayerTable = class {
579
575
  * HTMLInstantAppsSocialShareElement: Element to support app sharing to social media
580
576
  */
581
577
  _shareNode;
582
- /**
583
- * boolean: When true the shift key is currently pressed
584
- */
585
- _shiftIsPressed = false;
586
578
  /**
587
579
  * HTMLCalciteDropdownElement: Dropdown the will support show/hide of table columns
588
580
  */
589
581
  _showHideDropdown;
590
- /**
591
- * boolean: When true any onChange handeling will be skipped
592
- */
593
- _skipOnChange = false;
594
582
  /**
595
583
  * HTMLCalciteDropdownElement: Dropdown the will support overflow tools that won't fit in the current display
596
584
  */
@@ -623,10 +611,22 @@ const LayerTable = class {
623
611
  * boolean: When true we will not evaluate if the editor has any pending edits
624
612
  */
625
613
  _skipEditCheck = false;
614
+ /**
615
+ * __esri.Handle: handle for the filter by extent
616
+ */
617
+ _filterByExtentHandle;
626
618
  /**
627
619
  * number[]: selected features from table
628
620
  */
629
621
  _tempSelectedIds;
622
+ /**
623
+ * number[]: out of extent oids which are selected but now out of extent
624
+ */
625
+ _outOFExtentOids = [];
626
+ /**
627
+ * boolean: When true allow table to update the records
628
+ */
629
+ _shouldUpdateTableOnExtentChange = true;
630
630
  //--------------------------------------------------------------------------
631
631
  //
632
632
  // Watch handlers
@@ -790,13 +790,35 @@ const LayerTable = class {
790
790
  * Reset the filter
791
791
  */
792
792
  async filterReset() {
793
+ if (this._filterByExtentHandle) {
794
+ this._table.filterGeometry = undefined;
795
+ this._filterByExtentHandle.remove();
796
+ this._filterByExtentHandle = undefined;
797
+ }
793
798
  await this._handleFilterListReset();
794
799
  }
795
800
  /**
796
801
  * Updates the filter
797
802
  */
798
- async filterUpdate(active) {
799
- await this._handleFilterUpdate(active);
803
+ async filterUpdate(filterActive, keepTableUpdatingOnMapExtentChange) {
804
+ await this._handleFilterUpdate(filterActive);
805
+ if (keepTableUpdatingOnMapExtentChange) {
806
+ this._shouldUpdateTableOnExtentChange = true;
807
+ this._handleTableOnMapExtent();
808
+ }
809
+ else if (keepTableUpdatingOnMapExtentChange === false) {
810
+ this._table.filterGeometry = undefined;
811
+ this._filterByExtentHandle.remove();
812
+ this._filterByExtentHandle = undefined;
813
+ // update all the ids when filter is unchecked or toggled off
814
+ await this._updateAllIds();
815
+ }
816
+ }
817
+ /**
818
+ * Validate if the table should update
819
+ */
820
+ async validateTableUpdate(shouldUpdateTableOnExtentChange) {
821
+ this._shouldUpdateTableOnExtentChange = shouldUpdateTableOnExtentChange;
800
822
  }
801
823
  /**
802
824
  * Validate if the editor has any pending edits
@@ -850,8 +872,20 @@ const LayerTable = class {
850
872
  * @returns a promise when the operation has completed
851
873
  */
852
874
  async editorInitialized(evt) {
875
+ this._shouldUpdateTableOnExtentChange = false;
853
876
  this._editor = evt.detail;
854
877
  }
878
+ /**
879
+ * Respond to and close the edit record display
880
+ *
881
+ * @returns a promise when the operation has completed
882
+ */
883
+ async closeEdit() {
884
+ this._shouldUpdateTableOnExtentChange = true;
885
+ if (this._filterByExtentHandle) {
886
+ this._handleTableOnMapExtent();
887
+ }
888
+ }
855
889
  /**
856
890
  * Scroll and zoom to the selected feature from the Features widget.
857
891
  *
@@ -912,7 +946,7 @@ const LayerTable = class {
912
946
  async editsComplete(evt) {
913
947
  const editType = evt.detail;
914
948
  if (editType === "delete" || editType === "add") {
915
- this._allIds = await queryAllIds(this._layer);
949
+ this._allIds = await this.queryAllIds();
916
950
  }
917
951
  await this._refresh();
918
952
  }
@@ -984,8 +1018,8 @@ const LayerTable = class {
984
1018
  const tableHeightClass = this.isMobile ? "height-full" : "height-full-adjusted";
985
1019
  const showSearch = this._canShowFullTextSearch();
986
1020
  this._validateActiveActions();
987
- return (h(Host, { key: '68d6d57fbc9122b15340e0be3426ad00d398c7b2' }, h("div", { key: 'c4839ef8df0c5d3937b68c444264ce3bbb5c808d' }, h("calcite-scrim", { key: 'd4fa1a66ddcc5d0e83ee4ee43b2a3230e7f0298f', class: scrimClass, loading: this._queryingData }), h("calcite-shell", { key: '2ae1aee8a242902f3fbc9a1a19b62a8b721e5de7' }, this._getTableControlRow("header"), h("div", { key: '73d424f4bb07f56245c2c0858544d6cb7d9fcc74', class: `width-full ${tableHeightClass}` }, h("calcite-panel", { key: 'a2404478e2daf5ebac1ff3ac10378a98c868bcb2', class: "height-full width-full" }, showSearch &&
988
- h("div", { key: 'e18c71ccab7853438c51fe7168b7a98087d215e2', class: "search-container" }, h("calcite-input", { key: '39ecb52bacd4560a94310a56faf084941aa44a2a', class: "search", clearable: true, icon: "search", onCalciteInputChange: (evt) => void this._searchTextChanged(evt), placeholder: this._searchPlaceHolder, title: this._searchPlaceHolder, type: "search" })), h("calcite-loader", { key: 'ce2aeb5e108b1d76da8694a071dcd46098e6bb28', class: loadingClass, label: this._translations.fetchingData, scale: "l" }), h("div", { key: '78e596cb45427bb9d21a11368361f67e1ed306a5', class: tableNodeClass, ref: this.onTableNodeCreate }))), !this.isMobile ? (h("div", { class: "bottom-left text-color height-19" }, this._translations.recordsSelected
1021
+ return (h(Host, { key: 'a0a998de3a1b29c311a9fdfa87f3bd836481ba5a' }, h("div", { key: 'aafaf9f925ed7321e1ca7f15fc7db369212dc1dc' }, h("calcite-scrim", { key: '86459aed994823dbf1d774aad01e8207a7df5f4f', class: scrimClass, loading: this._queryingData }), h("calcite-shell", { key: 'b29896a197cba444d2ac377779670394e29ecaf6' }, this._getTableControlRow("header"), h("div", { key: '0456651ac46f399eb04253387d7aae76995f4683', class: `width-full ${tableHeightClass}` }, h("calcite-panel", { key: '9ba484159832fea630bbb653bc2fc4e99e602674', class: "height-full width-full" }, showSearch &&
1022
+ h("div", { key: 'bd4b72db51f44c2954e893e8ef7ec2a30efc4c45', class: "search-container" }, h("calcite-input", { key: '8811ff1dd71408fda37a0d7d2403671df24b5b7b', class: "search", clearable: true, icon: "search", onCalciteInputChange: (evt) => void this._searchTextChanged(evt), placeholder: this._searchPlaceHolder, title: this._searchPlaceHolder, type: "search" })), h("calcite-loader", { key: '44a419089cf1e207f52ce19015c2870ce956e261', class: loadingClass, label: this._translations.fetchingData, scale: "l" }), h("div", { key: '096f4fc7f5cc9500e7982bbfaceb2fcc4c82a1dd', class: tableNodeClass, ref: this.onTableNodeCreate }))), !this.isMobile ? (h("div", { class: "bottom-left text-color height-19" }, this._translations.recordsSelected
989
1023
  .replace("{{total}}", total)
990
1024
  .replace("{{selected}}", selected))) : undefined), this.createFilterModal && this._filterModal())));
991
1025
  }
@@ -1005,8 +1039,6 @@ const LayerTable = class {
1005
1039
  componentDidRender() {
1006
1040
  // need to be called after each render to get the clicked mouseEvent
1007
1041
  document.onclick = (e) => this._handleDocumentClick(e);
1008
- document.onkeydown = (e) => this._handleKeyDown(e);
1009
- document.onkeyup = (e) => this._handleKeyUp(e);
1010
1042
  this._updateToolbar();
1011
1043
  }
1012
1044
  //--------------------------------------------------------------------------
@@ -1267,6 +1299,7 @@ const LayerTable = class {
1267
1299
  }
1268
1300
  if (ti.icon === "selected-items-filter") {
1269
1301
  ti.active = this._showOnlySelected;
1302
+ ti.label = this._showOnlySelected ? this._translations.showAll : this._translations.showSelected;
1270
1303
  }
1271
1304
  }
1272
1305
  });
@@ -1281,7 +1314,6 @@ const LayerTable = class {
1281
1314
  // hide multiple edits for R03
1282
1315
  const showMultipleEdits = this.selectedIds.length > 1 && this._layer?.capabilities?.operations?.supportsUpdate && false;
1283
1316
  const featuresEmpty = this._featuresEmpty();
1284
- const hasFilterExpressions = this._hasFilterExpressions();
1285
1317
  if (this._translations) {
1286
1318
  this._toolInfos = [
1287
1319
  !this.mapHidden ? {
@@ -1293,7 +1325,7 @@ const LayerTable = class {
1293
1325
  disabled: !featuresSelected,
1294
1326
  isOverflow: false
1295
1327
  } : undefined,
1296
- hasFilterExpressions ? {
1328
+ {
1297
1329
  active: false,
1298
1330
  icon: "filter",
1299
1331
  indicator: false,
@@ -1301,7 +1333,7 @@ const LayerTable = class {
1301
1333
  func: () => this.createFilterModal ? this._toggleFilter() : this.toggleFilter.emit(),
1302
1334
  disabled: false,
1303
1335
  isOverflow: false
1304
- } : undefined,
1336
+ },
1305
1337
  showMultipleEdits ? {
1306
1338
  active: false,
1307
1339
  icon: "pencil",
@@ -1703,6 +1735,7 @@ const LayerTable = class {
1703
1735
  editingEnabled: this._editEnabled && this.enableInlineEdit,
1704
1736
  highlightEnabled: true,
1705
1737
  multiSortEnabled: false,
1738
+ attachmentsEnabled: true,
1706
1739
  visibleElements: {
1707
1740
  columnDescriptions: false,
1708
1741
  header: false,
@@ -1734,88 +1767,9 @@ const LayerTable = class {
1734
1767
  return;
1735
1768
  }
1736
1769
  const ids = [...this._getIds()];
1737
- if (!this._skipOnChange) {
1738
- if ((!this._ctrlIsPressed && !this._shiftIsPressed) || (this._selectionFromMap && this._shiftIsPressed)) {
1739
- if (this.selectedIds.length > 0) {
1740
- this._skipOnChange = true;
1741
- // only readd in specific case where we have multiple selected and then click one of the currently selected
1742
- const reAdd = this.selectedIds.length > 1 && evt.removed.length === 1;
1743
- const newIds = reAdd ? evt.removed : ids.filter(id => this.selectedIds.indexOf(id) < 0);
1744
- this._tempSelectedIds = newIds.length ? [...newIds] : [...this.selectedIds];
1745
- this._clearSelection();
1746
- this.selectedIds = [...newIds];
1747
- if (newIds.length > 0) {
1748
- this._table.highlightIds.add(newIds[0]);
1749
- }
1750
- else {
1751
- this._skipOnChange = false;
1752
- }
1753
- }
1754
- else {
1755
- // https://github.com/Esri/solutions-components/issues/365
1756
- this.selectedIds = ids.reverse();
1757
- this._tempSelectedIds = [...this.selectedIds];
1758
- }
1759
- }
1760
- else if (this._ctrlIsPressed) {
1761
- this.selectedIds = ids.reverse();
1762
- this._tempSelectedIds = [...this.selectedIds];
1763
- }
1764
- else if (this._shiftIsPressed && ids?.length > 0) {
1765
- this._skipOnChange = true;
1766
- this._previousCurrentId = this._currentId;
1767
- this._currentId = [...ids].reverse()[0];
1768
- if (ids.length === 1) {
1769
- this._skipOnChange = false;
1770
- }
1771
- else if (this._previousCurrentId !== this._currentId) {
1772
- // query the layer based on current sort and filters then grab between the current id and previous id
1773
- const orderBy = this._table.activeSortOrders.reduce((prev, cur) => {
1774
- prev.push(`${cur.fieldName} ${cur.direction}`);
1775
- return prev;
1776
- }, []);
1777
- // when dealing with a feature layer with many features shift-select can take a very long time.
1778
- // don't allow the user to make additional interactions with the table if it takes more than 500 miliseconds
1779
- let queryComplete = false;
1780
- setTimeout(() => {
1781
- if (!queryComplete) {
1782
- this._queryingData = true;
1783
- }
1784
- }, 500);
1785
- const oids = await queryAllOidsWithQueryFeatures(0, this._layer, [], orderBy);
1786
- queryComplete = true;
1787
- this._queryingData = false;
1788
- let isBetween = false;
1789
- const _start = this._table.viewModel.getObjectIdIndex(this._previousCurrentId);
1790
- const _end = this._table.viewModel.getObjectIdIndex(this._currentId);
1791
- const startIndex = _start < _end ? _start : _end;
1792
- const endIndex = _end > _start ? _end : _start;
1793
- this._skipOnChange = startIndex + 1 !== endIndex;
1794
- const idsInRange = oids.reduce((prev, cur) => {
1795
- const id = cur;
1796
- if ((id === this._currentId || id === this._previousCurrentId)) {
1797
- isBetween = !isBetween;
1798
- if (prev.indexOf(id) < 0) {
1799
- prev.push(id);
1800
- }
1801
- }
1802
- else if (isBetween && prev.indexOf(id) < 0) {
1803
- prev.push(id);
1804
- }
1805
- return prev;
1806
- }, []);
1807
- const selectedIds = _start < _end ? idsInRange.reverse() : idsInRange;
1808
- this.selectedIds = [...new Set([...selectedIds, ...this.selectedIds])];
1809
- this._tempSelectedIds = [...this.selectedIds];
1810
- this._table.highlightIds.addMany(this.selectedIds.filter(i => ids.indexOf(i) < 0));
1811
- }
1812
- }
1813
- this._finishOnChange();
1814
- }
1815
- else {
1816
- this._skipOnChange = false;
1817
- }
1818
- this._currentId = [...this._getIds()].reverse()[0];
1770
+ this.selectedIds = ids.reverse();
1771
+ this._tempSelectedIds = [...this.selectedIds];
1772
+ this._finishOnChange();
1819
1773
  this._selectionFromMap = false;
1820
1774
  }
1821
1775
  /**
@@ -1854,6 +1808,7 @@ const LayerTable = class {
1854
1808
  handleOnChange = !this._skipEditCheck;
1855
1809
  this._skipEditCheck = false;
1856
1810
  }
1811
+ this._shouldUpdateTableOnExtentChange = handleOnChange;
1857
1812
  return handleOnChange;
1858
1813
  }
1859
1814
  /**
@@ -1870,7 +1825,7 @@ const LayerTable = class {
1870
1825
  _finishOnChange() {
1871
1826
  if (this._showOnlySelected) {
1872
1827
  if (this._featuresSelected()) {
1873
- this._table.filterBySelection();
1828
+ this._table.filterBySelectionEnabled = true;
1874
1829
  }
1875
1830
  else {
1876
1831
  this._toggleShowSelected();
@@ -1908,7 +1863,7 @@ const LayerTable = class {
1908
1863
  async _resetTable() {
1909
1864
  this._loaded = false;
1910
1865
  this._clearSelection();
1911
- this._allIds = await queryAllIds(this._layer);
1866
+ this._allIds = await this.queryAllIds();
1912
1867
  if (!this._table) {
1913
1868
  const columnTemplates = this._getColumnTemplates(this._layer.id, this._layer?.fields);
1914
1869
  await this._getTable(this._tableNode, columnTemplates);
@@ -1962,7 +1917,6 @@ const LayerTable = class {
1962
1917
  }
1963
1918
  this._refreshHandle = this._layer.on("refresh", (evt) => {
1964
1919
  if (evt.dataChanged) {
1965
- this._skipOnChange = true;
1966
1920
  void this._updateAllIds();
1967
1921
  }
1968
1922
  });
@@ -1971,7 +1925,7 @@ const LayerTable = class {
1971
1925
  * Reset _allIds when the layers data has changed and refresh the selection ids and table
1972
1926
  */
1973
1927
  async _updateAllIds() {
1974
- this._allIds = await queryAllIds(this._layer);
1928
+ this._allIds = await this.queryAllIds();
1975
1929
  this.selectedIds = this.selectedIds.filter(id => this._allIds.indexOf(id) > -1);
1976
1930
  await this._refresh();
1977
1931
  }
@@ -2111,20 +2065,6 @@ const LayerTable = class {
2111
2065
  }
2112
2066
  }
2113
2067
  }
2114
- /**
2115
- * Keep track of key down for ctrl and shift
2116
- */
2117
- _handleKeyDown(e) {
2118
- this._ctrlIsPressed = e.ctrlKey;
2119
- this._shiftIsPressed = e.shiftKey;
2120
- }
2121
- /**
2122
- * Keep track of key up for ctrl and shift
2123
- */
2124
- _handleKeyUp(e) {
2125
- this._ctrlIsPressed = e.ctrlKey;
2126
- this._shiftIsPressed = e.shiftKey;
2127
- }
2128
2068
  /**
2129
2069
  * Show filter component in modal
2130
2070
  *
@@ -2160,6 +2100,40 @@ const LayerTable = class {
2160
2100
  this._updateShareUrl();
2161
2101
  await this._searchFullText();
2162
2102
  }
2103
+ /**
2104
+ * Update the table when extent is changed
2105
+ */
2106
+ _handleTableOnMapExtent() {
2107
+ if (this._table) {
2108
+ this._filterByExtentHandle = this.reactiveUtils.when(() => this.mapView.stationary,
2109
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
2110
+ async () => {
2111
+ if (this._shouldUpdateTableOnExtentChange) {
2112
+ //Added timeout while updating table records to avoid the issue in which we see empty table records when extent is changed
2113
+ await new Promise(resolve => setTimeout(resolve, 800));
2114
+ this._table.filterGeometry = this.mapView.extent;
2115
+ const query = {
2116
+ geometry: this.mapView.extent
2117
+ };
2118
+ const objectIdsInExtent = await this._layer.queryObjectIds(query);
2119
+ // remove the highlight of features which are not in the map extent
2120
+ const outOids = this.selectedIds.filter(id => !objectIdsInExtent.includes(id));
2121
+ const restoreOids = this._outOFExtentOids.filter(id => objectIdsInExtent.includes(id));
2122
+ if (outOids.length > 0) {
2123
+ this._table.highlightIds.removeMany(outOids);
2124
+ this._outOFExtentOids = [...this._outOFExtentOids, ...outOids];
2125
+ }
2126
+ if (restoreOids.length > 0) {
2127
+ this._table.highlightIds.addMany(restoreOids);
2128
+ this._outOFExtentOids = this._outOFExtentOids.filter(oid => !restoreOids.includes(oid));
2129
+ }
2130
+ }
2131
+ this._allIds = await this.queryAllIds();
2132
+ }, {
2133
+ initial: true
2134
+ });
2135
+ }
2136
+ }
2163
2137
  /**
2164
2138
  * Close the filter modal
2165
2139
  * @protected
@@ -2167,10 +2141,20 @@ const LayerTable = class {
2167
2141
  async _closeFilter() {
2168
2142
  if (this._filterOpen) {
2169
2143
  // reset allIds
2170
- this._allIds = await queryAllIds(this._layer);
2144
+ this._allIds = await this.queryAllIds();
2171
2145
  this._filterOpen = false;
2172
2146
  }
2173
2147
  }
2148
+ /**
2149
+ * Query the layer for applied filter
2150
+ * @returns Promise with the featureSet from the layer that match the provided ids
2151
+ */
2152
+ async queryAllIds() {
2153
+ const query = this._layer.createQuery();
2154
+ query.geometry = this._filterByExtentHandle ? this.mapView.extent : null;
2155
+ query.where = this._layer.definitionExpression || "1=1";
2156
+ return await this._layer.queryObjectIds(query);
2157
+ }
2174
2158
  /**
2175
2159
  * Handle map click events to keep table and map click selection in sync
2176
2160
  *
@@ -2192,7 +2176,7 @@ const LayerTable = class {
2192
2176
  }
2193
2177
  });
2194
2178
  if (this._showOnlySelected) {
2195
- this._table.filterBySelection();
2179
+ this._table.filterBySelectionEnabled = true;
2196
2180
  }
2197
2181
  }
2198
2182
  else {
@@ -2209,7 +2193,6 @@ const LayerTable = class {
2209
2193
  const editsDiscarded = await this._validateActiveEdits(addedIds, this.selectedIds);
2210
2194
  if (editsDiscarded) {
2211
2195
  this._table.highlightIds.removeAll();
2212
- this._skipOnChange = true;
2213
2196
  this._table.highlightIds.addMany(ids);
2214
2197
  this.selectedIds = ids;
2215
2198
  this._finishOnChange();
@@ -2226,12 +2209,7 @@ const LayerTable = class {
2226
2209
  */
2227
2210
  _toggleShowSelected() {
2228
2211
  this._showOnlySelected = !this._showOnlySelected;
2229
- if (this._showOnlySelected) {
2230
- this._table.filterBySelection();
2231
- }
2232
- else {
2233
- this._table.objectIds.removeAll();
2234
- }
2212
+ this._table.filterBySelectionEnabled = this._showOnlySelected;
2235
2213
  }
2236
2214
  /**
2237
2215
  * Clears the selected indexes
@@ -2239,6 +2217,7 @@ const LayerTable = class {
2239
2217
  */
2240
2218
  _clearSelection() {
2241
2219
  this.selectedIds = [];
2220
+ this._outOFExtentOids = [];
2242
2221
  this._table?.highlightIds.removeAll();
2243
2222
  this._table?.rowHighlightIds.removeAll();
2244
2223
  this._finishOnChange();
@@ -2278,7 +2257,6 @@ const LayerTable = class {
2278
2257
  const editsDiscarded = await this._validateActiveEdits(ids, currentIndexes);
2279
2258
  if (editsDiscarded) {
2280
2259
  this._table.highlightIds.removeAll();
2281
- this._skipOnChange = true;
2282
2260
  this._table.highlightIds.addMany(ids);
2283
2261
  this.selectedIds = ids;
2284
2262
  this._finishOnChange();
@@ -2336,8 +2314,8 @@ const LayerTable = class {
2336
2314
  async _refresh() {
2337
2315
  const editsDiscarded = await this._validateActiveEdits([], this.selectedIds);
2338
2316
  if (editsDiscarded) {
2339
- await this._table.refresh();
2340
- this._allIds = await queryAllIds(this._layer);
2317
+ await this._table?.refresh();
2318
+ this._allIds = await this.queryAllIds();
2341
2319
  this.featureSelectionChange.emit(this.selectedIds);
2342
2320
  }
2343
2321
  }
@@ -2367,6 +2345,7 @@ const LayerTable = class {
2367
2345
  this._fetchingData = true;
2368
2346
  const layer = await getLayerOrTable(this.mapView, id);
2369
2347
  layer && await layer.when(() => {
2348
+ this._shouldUpdateTableOnExtentChange = true;
2370
2349
  this._layer = layer;
2371
2350
  this._getFullTextSearchInfo();
2372
2351
  });
@@ -5,12 +5,12 @@
5
5
  */
6
6
  import { r as registerInstance, c as createEvent, g as getElement, h, F as Fragment, H as Host } from './index-3702583a.js';
7
7
  import { l as loadModules, g as getLocaleComponentStrings } from './locale-aa656a2c.js';
8
- import { a as getAllLayers, g as getLayerOrTable } from './mapViewUtils-a854e298.js';
9
- import { P as PopupUtils } from './popupUtils-1314cb13.js';
8
+ import { a as getAllLayers, g as getLayerOrTable } from './mapViewUtils-9da9be1c.js';
9
+ import { P as PopupUtils } from './popupUtils-64d25cb0.js';
10
10
  import './esri-loader-c6842c6b.js';
11
11
  import './_commonjsHelpers-089957fe.js';
12
12
  import './interfaces-659e3836.js';
13
- import './downloadUtils-22a8f2d8.js';
13
+ import './downloadUtils-36d854d2.js';
14
14
  import './typeof-ef2a007d.js';
15
15
  import './index-d88c3eb6.js';
16
16
  import './solution-resource-30a29505.js';
@@ -1282,6 +1282,7 @@ const InfoCard = class {
1282
1282
  constructor(hostRef) {
1283
1283
  registerInstance(this, hostRef);
1284
1284
  this.popupClosed = createEvent(this, "popupClosed", 7);
1285
+ this.clearSelection = createEvent(this, "clearSelection", 7);
1285
1286
  this.selectionChanged = createEvent(this, "selectionChanged", 7);
1286
1287
  }
1287
1288
  get el() { return getElement(this); }
@@ -1330,6 +1331,10 @@ const InfoCard = class {
1330
1331
  * string: Set the position of the feature info
1331
1332
  */
1332
1333
  position = 'absolute';
1334
+ /**
1335
+ * boolean: If true show close button on the feature info
1336
+ */
1337
+ showCloseBtn = false;
1333
1338
  //--------------------------------------------------------------------------
1334
1339
  //
1335
1340
  // State (internal)
@@ -1362,6 +1367,10 @@ const InfoCard = class {
1362
1367
  * All UI strings should be defined here.
1363
1368
  */
1364
1369
  _translations;
1370
+ /**
1371
+ * boolean: When true user has been navigated to related feature
1372
+ */
1373
+ _navigatedToRelatedFeature;
1365
1374
  //--------------------------------------------------------------------------
1366
1375
  //
1367
1376
  // Properties (protected)
@@ -1397,6 +1406,10 @@ const InfoCard = class {
1397
1406
  * esri/core/reactiveUtils: https://developers.arcgis.com/javascript/latest/api-reference/esri-core-reactiveUtils.html
1398
1407
  */
1399
1408
  reactiveUtils;
1409
+ /**
1410
+ * __esri.Graphic: Related feature selected from the features widget
1411
+ */
1412
+ _relatedFeature;
1400
1413
  //--------------------------------------------------------------------------
1401
1414
  //
1402
1415
  // Watch handlers
@@ -1406,6 +1419,14 @@ const InfoCard = class {
1406
1419
  * Watch for changes to the graphic and update the feature widget
1407
1420
  */
1408
1421
  async graphicsWatchHandler() {
1422
+ // if user has been navigated to related record and graphics is changed then close the feature widget and then set graphics to avoid blank popup issue
1423
+ // https://github.com/Esri/solutions-components/issues/1113
1424
+ if (this._navigatedToRelatedFeature && this._features) {
1425
+ this._features.clear();
1426
+ this._features.close();
1427
+ this._count = "";
1428
+ this._navigatedToRelatedFeature = false;
1429
+ }
1409
1430
  await this.setGraphics();
1410
1431
  }
1411
1432
  /**
@@ -1496,6 +1517,10 @@ const InfoCard = class {
1496
1517
  * Emitted on demand when the popup is closed
1497
1518
  */
1498
1519
  popupClosed;
1520
+ /**
1521
+ * Emitted on demand when close button is clicked
1522
+ */
1523
+ clearSelection;
1499
1524
  /**
1500
1525
  * Emitted on demand when the selected index changes
1501
1526
  */
@@ -1522,7 +1547,10 @@ const InfoCard = class {
1522
1547
  * Refresh the info-card graphics
1523
1548
  */
1524
1549
  async refreshGraphics(evt) {
1525
- this.graphics = [...evt.detail];
1550
+ // if if user is not navigated to related feature then only update the graphics otherwise the related feature will shown instead of selected feature
1551
+ if (!this._navigatedToRelatedFeature) {
1552
+ this.graphics = [...evt.detail];
1553
+ }
1526
1554
  }
1527
1555
  //--------------------------------------------------------------------------
1528
1556
  //
@@ -1556,13 +1584,16 @@ const InfoCard = class {
1556
1584
  const featureNodeClass = this.isLoading || this._editRecordOpen ? "visibility-hidden" : "position-absolute";
1557
1585
  const editClass = !this.isLoading && this._editRecordOpen ? "position-absolute" : "display-none";
1558
1586
  const editButtonClass = (!this.isLoading && this._editRecordOpen) || this._showListView ? "display-none" : "";
1559
- const nextBackDisabled = this._features?.features?.length < 2;
1587
+ const nextBackDisabled = this._features?.features?.length < 2 || this._navigatedToRelatedFeature;
1560
1588
  const nextBackClass = this.isMobile ? "display-none" : "";
1561
1589
  const id = this._features?.selectedFeature?.getObjectId();
1562
1590
  const ids = parseInt(id?.toString(), 10) > -1 ? [id] : [];
1563
1591
  const deleteEnabled = this._layer?.editingEnabled && this._layer?.capabilities?.operations?.supportsDelete;
1564
- return (h(Host, { key: '66070d48134f89d9cf132572fe1adf790b6d3ec6' }, h("calcite-shell", { key: 'b77248dce176df940d8b0c347154b73738a5576d', style: { position: this.position } }, this._getHeader(), h("calcite-loader", { key: 'c1638ca8320a0ae12a9ccd1fd8841efde4236ba5', class: loadingClass, label: this._translations.fetchingData }), h("div", { key: 'cf5ee3be5c0ea3be36205dcf7c0747461802a5f1', class: "esri-widget feature-node " + featureNodeClass, id: this._featuresNodeId }), h("div", { key: '6fbfa6947fa0fdb1b14a03217da60f07ecff2e1b', class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
1565
- h("div", { key: 'fdcb078c3b3f183b06dc3a48d27fee46e3a4fffa', class: "display-flex top-border padding-1-2" }, h("calcite-button", { key: '7193bec80a40f353d24e5d327d99d94a2c5ff356', appearance: "solid", id: "solutions-edit", onClick: () => this._openEditRecord(), width: "full" }, this._translations.edit), this.isMobile && deleteEnabled ? (h("delete-button", { class: "padding-inline-start-1 width-100", id: "solutions-delete", ids: ids, layer: this._layer, locale: this.locale, onEditsComplete: () => this._closePopup() })) : undefined, h("calcite-tooltip", { key: '228a9691edd916a5d644cb19db24898cdf7cab3b', placement: "bottom", "reference-element": "solutions-edit" }, h("span", { key: '5c696df370bcf230d3fc06523ec3cb9d96f2fe2b' }, this._translations.edit)), this.isMobile && deleteEnabled ? (h("calcite-tooltip", { placement: "bottom", "reference-element": "solutions-delete" }, h("span", null, this._translations.delete))) : undefined), this.paginationEnabled && !nextBackDisabled && h("div", { key: 'e1b829a888913af6a9d777a2df0d65571ac3bec1', class: `display-flex padding-1-2 button-container top-border ${nextBackClass}` }, h("div", { key: '8746737a103266efe64a8f80c2359f9e170586d5' }, h("calcite-button", { key: 'ac6fc23dc2831608cc9c86fe384c0a927cd7d7ac', appearance: 'transparent', disabled: nextBackDisabled, iconFlipRtl: "both", iconStart: "chevron-left", id: "solutions-back", onClick: () => this._back(), width: "full" }), h("calcite-tooltip", { key: 'd4a1e2753c35e97064ca66d5c30deccd532fb158', placement: "top", "reference-element": "solutions-back" }, h("span", { key: 'caae32b5e32a0d89265293beccef157d227a7600' }, this._translations.back))), h("calcite-action", { key: 'a87f344a06896ad86886815254979793b057e4cd', class: 'pagination-action', iconFlipRtl: true, onClick: () => this._toggleListView(), scale: "s", text: "", textEnabled: true }, h("span", { key: '6e6f84ebedb2540edb485fa0789fe8ea67e7188f', class: "pagination-count" }, this._count)), h("div", { key: '6acf22348a508c921865bb4c7e531f9a826a8eed' }, h("calcite-button", { key: 'f1d763e1747cff7e0b6bec08ec4fade3d1582379', appearance: "transparent", disabled: nextBackDisabled, iconFlipRtl: "both", iconStart: "chevron-right", id: "solutions-next", onClick: () => this._next(), width: "full" }), h("calcite-tooltip", { key: 'def93e3d1f19b4e6eb3e54c5fbd918fed118cc0c', placement: "top", "reference-element": "solutions-next" }, h("span", { key: 'cb9b90a5b3129861b7f58fd0271c6120893dfd53' }, this._translations.next))))), h("edit-card", { key: '524819a6dc64775b88b22aaf24445fd5ebdeae24', class: editClass, enableEditGeometry: this.enableEditGeometry, graphicIndex: this._features?.selectedFeatureIndex, graphics: this.graphics, locale: this.locale, mapView: this.mapView, open: this._editRecordOpen }), h("calcite-alert", { key: '394c3b416a5dc94381c8b93afd3308121fbebd81', icon: "layer-broken", kind: "warning", label: "", onCalciteAlertClose: () => this._alertClosed(), open: this._alertOpen, placement: "top" }, h("div", { key: 'f4868bf3b710d91ed7e3f1e34b846bd408febac0', slot: "title" }, this._translations.editDisabled), h("div", { key: '457b7d0c76bfac52340bec73f5d1d2abbd10f25a', slot: "message" }, this._translations.enableEditing)))));
1592
+ // if user has navigated to the related feature then pass the related feature to the graphics
1593
+ const graphics = this._relatedFeature ? [this._relatedFeature] : this.graphics;
1594
+ const selectedFeatureIndex = this._navigatedToRelatedFeature ? 0 : this._features?.selectedFeatureIndex;
1595
+ return (h(Host, { key: '9f75eb2e7aba944474e85c34b2abe23982629558' }, h("calcite-shell", { key: '748f9e50cd3aa7a52dd7910b171c0d7f54d09203', style: { position: this.position } }, this._getHeader(), h("calcite-loader", { key: 'feced4d4a66df36958644436acaa53ddabdfc02a', class: loadingClass, label: this._translations.fetchingData }), h("div", { key: '3bb912c80d610a21a5e283c6bd19ab0c63023c45', class: "esri-widget feature-node " + featureNodeClass, id: this._featuresNodeId }), h("div", { key: '479dcbda08f837b32bd19ed7f40856f081e92a6e', class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
1596
+ h("div", { key: 'dd78b02ba8506c391aada6c5233691ec9babcfbe', class: "display-flex top-border padding-1-2" }, h("calcite-button", { key: 'c5a807609c60151a433fa9c0055fbfdf20b2935f', appearance: "solid", id: "solutions-edit", onClick: () => this._openEditRecord(), width: "full" }, this._translations.edit), this.isMobile && deleteEnabled ? (h("delete-button", { class: "padding-inline-start-1 width-100", id: "solutions-delete", ids: ids, layer: this._layer, locale: this.locale, onEditsComplete: () => this._closePopup() })) : undefined, h("calcite-tooltip", { key: 'a4cd4c77e982e23675ec9eaf08e2135de6c83b65', placement: "bottom", "reference-element": "solutions-edit" }, h("span", { key: '22533608996d1c87b9b04e339506ec01176379b0' }, this._translations.edit)), this.isMobile && deleteEnabled ? (h("calcite-tooltip", { placement: "bottom", "reference-element": "solutions-delete" }, h("span", null, this._translations.delete))) : undefined), this.paginationEnabled && !nextBackDisabled && h("div", { key: '183ff7da57a06de8f5419edf5973f18b41c46097', class: `display-flex padding-1-2 button-container top-border ${nextBackClass}` }, h("div", { key: '77e59229d1d516ccdc8f7c5be2f89a5ad9d5004b' }, h("calcite-button", { key: '4b6a6f1f85e9199e14d626ba66b6b319283d0c32', appearance: 'transparent', disabled: nextBackDisabled, iconFlipRtl: "both", iconStart: "chevron-left", id: "solutions-back", onClick: () => this._back(), width: "full" }), h("calcite-tooltip", { key: '7056c5cb3c790c804194f09f2586864a28dce5e1', placement: "top", "reference-element": "solutions-back" }, h("span", { key: '923fc5425a9faced6952a1b9acff9b7d0f3da286' }, this._translations.back))), h("calcite-action", { key: 'a34bfb4ae71a91373fd476e7b704a6a2f8f23157', class: 'pagination-action', iconFlipRtl: true, onClick: () => this._toggleListView(), scale: "s", text: "", textEnabled: true }, h("span", { key: '101a0fa592af65b540123c835e9031a18671ad8b', class: "pagination-count" }, this._count)), h("div", { key: 'c4f88f464a3091dfc77578470de4f42d05b9f5c7' }, h("calcite-button", { key: 'e4e35e539f0c7e01a31e0047db545d4d334ef2d8', appearance: "transparent", disabled: nextBackDisabled, iconFlipRtl: "both", iconStart: "chevron-right", id: "solutions-next", onClick: () => this._next(), width: "full" }), h("calcite-tooltip", { key: '40244ecf5566fde448b311272d2ee00d70bc531a', placement: "top", "reference-element": "solutions-next" }, h("span", { key: 'db01e2a2b9da9a80f9a25caf49bf8beb872e6ad9' }, this._translations.next))))), h("edit-card", { key: 'cfa193b01b67f7709ea6a491caa0c647c536e9e3', class: editClass, enableEditGeometry: this.enableEditGeometry, graphicIndex: selectedFeatureIndex, graphics: graphics, locale: this.locale, mapView: this.mapView, open: this._editRecordOpen }), h("calcite-alert", { key: '709fd6d681d32a03fcf5fba959e81a0153676e26', icon: "layer-broken", kind: "warning", label: "", onCalciteAlertClose: () => this._alertClosed(), open: this._alertOpen, placement: "top" }, h("div", { key: 'bbdd9cc98fcda8ffba294a4322f08468072f6aef', slot: "title" }, this._translations.editDisabled), h("div", { key: 'd07e32e9cd54cc82ff005e7e696e13e1b8bdaa4e', slot: "message" }, this._translations.enableEditing)))));
1566
1597
  }
1567
1598
  //--------------------------------------------------------------------------
1568
1599
  //
@@ -1622,7 +1653,7 @@ const InfoCard = class {
1622
1653
  container: this._featuresNodeId,
1623
1654
  visibleElements: {
1624
1655
  actionBar: false,
1625
- closeButton: false,
1656
+ closeButton: this.showCloseBtn,
1626
1657
  heading: !this.isMobile
1627
1658
  }
1628
1659
  });
@@ -1638,11 +1669,26 @@ const InfoCard = class {
1638
1669
  this.selectionChanged.emit({ selectedFeature: [this._features.selectedFeature], selectedFeatureIndex: this._features.selectedFeatureIndex });
1639
1670
  }
1640
1671
  });
1672
+ this.reactiveUtils.watch(() => this._features.selectedDrillInFeature, (f) => {
1673
+ if (f) {
1674
+ this._relatedFeature = f;
1675
+ this._navigatedToRelatedFeature = true;
1676
+ }
1677
+ else {
1678
+ this._relatedFeature = null;
1679
+ this._navigatedToRelatedFeature = false;
1680
+ }
1681
+ });
1682
+ // get the info card node element and emit clear selection while clicking the close button
1683
+ const infoCard = this.el.querySelector('#' + this._featuresNodeId);
1684
+ infoCard.addEventListener('calciteFlowItemClose', () => {
1685
+ this.clearSelection.emit();
1686
+ });
1641
1687
  }
1642
1688
  else {
1643
1689
  this._features.view = this.mapView;
1644
1690
  this._features.visibleElements.actionBar = false;
1645
- this._features.visibleElements.closeButton = false;
1691
+ this._features.visibleElements.closeButton = this.showCloseBtn;
1646
1692
  this._features.visibleElements.heading = !this.isMobile;
1647
1693
  }
1648
1694
  }) : Promise.resolve();