@esri/solutions-components 0.6.13 → 0.6.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. package/dist/assets/t9n/layer-table/resources.json +1 -1
  2. package/dist/assets/t9n/layer-table/resources_en.json +1 -1
  3. package/dist/assets/t9n/map-layer-picker/resources.json +4 -0
  4. package/dist/assets/t9n/map-layer-picker/resources_en.json +4 -0
  5. package/dist/cjs/basemap-gallery_6.cjs.entry.js +20 -5
  6. package/dist/cjs/buffer-tools_4.cjs.entry.js +1 -1
  7. package/dist/cjs/calcite-chip_3.cjs.entry.js +803 -0
  8. package/dist/cjs/calcite-combobox_6.cjs.entry.js +76 -28
  9. package/dist/cjs/card-manager_3.cjs.entry.js +112 -54
  10. package/dist/cjs/crowdsource-manager.cjs.entry.js +18 -5
  11. package/dist/cjs/{downloadUtils-fb4744e0.js → downloadUtils-34a515ad.js} +2 -2
  12. package/dist/cjs/edit-card_2.cjs.entry.js +5 -0
  13. package/dist/cjs/{index.es-372e33de.js → index.es-0ba11065.js} +2 -2
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/cjs/map-select-tools_3.cjs.entry.js +3 -3
  16. package/dist/cjs/{mapViewUtils-a4dd36ec.js → mapViewUtils-a2884698.js} +39 -55
  17. package/dist/cjs/public-notification.cjs.entry.js +3 -3
  18. package/dist/cjs/{publicNotificationStore-b69862af.js → publicNotificationStore-610bd880.js} +0 -4
  19. package/dist/cjs/solutions-components.cjs.js +1 -1
  20. package/dist/collection/components/basemap-gallery/basemap-gallery.js +23 -1
  21. package/dist/collection/components/card-manager/card-manager.js +2 -2
  22. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +171 -5
  23. package/dist/collection/components/edit-card/edit-card.js +19 -0
  24. package/dist/collection/components/layer-table/layer-table.js +127 -47
  25. package/dist/collection/components/map-card/map-card.js +115 -5
  26. package/dist/collection/components/map-layer-picker/map-layer-picker.css +4 -0
  27. package/dist/collection/components/map-layer-picker/map-layer-picker.js +107 -27
  28. package/dist/collection/components/map-picker/map-picker.css +5 -1
  29. package/dist/collection/components/map-picker/map-picker.js +3 -3
  30. package/dist/collection/components/map-tools/map-tools.js +104 -1
  31. package/dist/collection/utils/interfaces.ts +12 -1
  32. package/dist/collection/utils/mapViewUtils.js +38 -52
  33. package/dist/collection/utils/mapViewUtils.ts +41 -57
  34. package/dist/collection/utils/publicNotificationStore.js +0 -4
  35. package/dist/collection/utils/publicNotificationStore.ts +0 -4
  36. package/dist/components/basemap-gallery2.js +2 -0
  37. package/dist/components/card-manager2.js +2 -2
  38. package/dist/components/crowdsource-manager.js +27 -6
  39. package/dist/components/edit-card2.js +5 -0
  40. package/dist/components/layer-table2.js +136 -78
  41. package/dist/components/map-card2.js +17 -5
  42. package/dist/components/map-layer-picker2.js +114 -52
  43. package/dist/components/map-picker2.js +4 -4
  44. package/dist/components/map-select-tools2.js +55 -43
  45. package/dist/components/map-tools2.js +20 -1
  46. package/dist/components/mapViewUtils.js +39 -53
  47. package/dist/components/public-notification.js +1 -1
  48. package/dist/components/publicNotificationStore.js +0 -4
  49. package/dist/components/refine-selection2.js +61 -49
  50. package/dist/esm/basemap-gallery_6.entry.js +20 -5
  51. package/dist/esm/buffer-tools_4.entry.js +1 -1
  52. package/dist/esm/calcite-chip_3.entry.js +797 -0
  53. package/dist/esm/calcite-combobox_6.entry.js +76 -28
  54. package/dist/esm/card-manager_3.entry.js +112 -54
  55. package/dist/esm/crowdsource-manager.entry.js +18 -5
  56. package/dist/esm/{downloadUtils-67c7a6c8.js → downloadUtils-ac67a786.js} +2 -2
  57. package/dist/esm/edit-card_2.entry.js +5 -0
  58. package/dist/esm/{index.es-59a67d3d.js → index.es-f553598f.js} +2 -2
  59. package/dist/esm/loader.js +1 -1
  60. package/dist/esm/map-select-tools_3.entry.js +3 -3
  61. package/dist/esm/{mapViewUtils-00a04d52.js → mapViewUtils-8141d8c1.js} +39 -53
  62. package/dist/esm/public-notification.entry.js +3 -3
  63. package/dist/esm/{publicNotificationStore-90a6a274.js → publicNotificationStore-dcf39a55.js} +0 -4
  64. package/dist/esm/solutions-components.js +1 -1
  65. package/dist/solutions-components/p-08b52ed8.entry.js +6 -0
  66. package/dist/solutions-components/p-16362eb4.js +36 -0
  67. package/dist/solutions-components/{p-3691a072.js → p-1ab414e0.js} +2 -2
  68. package/dist/solutions-components/{p-73ab9d9a.entry.js → p-3d7aa1b2.entry.js} +1 -1
  69. package/dist/solutions-components/{p-9a8c51bf.entry.js → p-57cf6784.entry.js} +1 -1
  70. package/dist/solutions-components/p-64b22d57.entry.js +6 -0
  71. package/dist/solutions-components/p-654dd5df.entry.js +6 -0
  72. package/dist/solutions-components/{p-f9166fcb.js → p-a26711e8.js} +1 -1
  73. package/dist/solutions-components/p-b1c8c6d7.entry.js +6 -0
  74. package/dist/solutions-components/{p-b892e595.entry.js → p-b9d29f30.entry.js} +1 -1
  75. package/dist/solutions-components/{p-1b41181b.js → p-c8d0ce92.js} +2 -2
  76. package/dist/solutions-components/{p-0219a1a9.entry.js → p-e76949eb.entry.js} +6 -6
  77. package/dist/solutions-components/p-ee7e2f00.entry.js +34 -0
  78. package/dist/solutions-components/solutions-components.esm.js +1 -1
  79. package/dist/solutions-components/utils/interfaces.ts +12 -1
  80. package/dist/solutions-components/utils/mapViewUtils.ts +41 -57
  81. package/dist/solutions-components/utils/publicNotificationStore.ts +0 -4
  82. package/dist/types/components/basemap-gallery/basemap-gallery.d.ts +5 -0
  83. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +37 -1
  84. package/dist/types/components/edit-card/edit-card.d.ts +8 -0
  85. package/dist/types/components/layer-table/layer-table.d.ts +40 -0
  86. package/dist/types/components/map-card/map-card.d.ts +25 -1
  87. package/dist/types/components/map-layer-picker/map-layer-picker.d.ts +50 -3
  88. package/dist/types/components/map-picker/map-picker.d.ts +2 -2
  89. package/dist/types/components/map-tools/map-tools.d.ts +21 -1
  90. package/dist/types/components.d.ts +182 -2
  91. package/dist/types/preact.d.ts +6 -3
  92. package/dist/types/utils/interfaces.d.ts +10 -1
  93. package/dist/types/utils/mapViewUtils.d.ts +8 -24
  94. package/dist/types/utils/publicNotificationStore.d.ts +0 -2
  95. package/package.json +1 -1
  96. package/dist/cjs/calcite-chip.cjs.entry.js +0 -259
  97. package/dist/cjs/calcite-notice.cjs.entry.js +0 -139
  98. package/dist/cjs/calcite-tooltip.cjs.entry.js +0 -439
  99. package/dist/esm/calcite-chip.entry.js +0 -255
  100. package/dist/esm/calcite-notice.entry.js +0 -135
  101. package/dist/esm/calcite-tooltip.entry.js +0 -435
  102. package/dist/solutions-components/p-2cff8331.entry.js +0 -6
  103. package/dist/solutions-components/p-3a6c8fc3.entry.js +0 -6
  104. package/dist/solutions-components/p-3b1fc7a2.entry.js +0 -6
  105. package/dist/solutions-components/p-767002cd.js +0 -36
  106. package/dist/solutions-components/p-a776b7e6.entry.js +0 -6
  107. package/dist/solutions-components/p-be36d5ed.entry.js +0 -22
  108. package/dist/solutions-components/p-c644edf5.entry.js +0 -11
  109. package/dist/solutions-components/p-cfd88a2f.entry.js +0 -11
@@ -24,78 +24,64 @@ import { EWorkflowType } from "./interfaces";
24
24
  * Gets the layer names from the current map
25
25
  *
26
26
  * @param mapView the map view to fetch the layer names from
27
+ * @param onlyShowUpdatableLayers when true only layers that support editing and updates will be returned
27
28
  *
28
29
  * @returns Promise resolving with an array of layer names
29
30
  *
30
31
  */
31
- export async function getMapLayerHash(mapView) {
32
- let layerHash = {};
32
+ export async function getMapLayerHash(mapView, onlyShowUpdatableLayers) {
33
+ let layerHash;
33
34
  await mapView.when(() => {
34
35
  layerHash = mapView.map.allLayers.toArray().reduce((prev, cur) => {
35
36
  if (cur.type === "feature") {
36
- prev[cur.id] = cur.title;
37
+ prev[cur.id] = {
38
+ name: cur.title,
39
+ supportsUpdate: undefined
40
+ };
37
41
  }
38
42
  return prev;
39
43
  }, {});
40
44
  });
41
- return layerHash;
45
+ return onlyShowUpdatableLayers ? Object.keys(layerHash).reduce(async (prev, cur) => {
46
+ const layer = await getLayerOrTable(mapView, cur);
47
+ await layer.when(() => {
48
+ prev[cur] = {
49
+ name: layerHash[cur].name,
50
+ supportsUpdate: layer.editingEnabled && layer.capabilities.operations.supportsUpdate
51
+ };
52
+ });
53
+ return prev;
54
+ }, {}) : layerHash;
42
55
  }
43
56
  /**
44
57
  * Gets the table names from the current map
45
58
  *
46
59
  * @param mapView the map view to fetch the table names from
60
+ * @param onlyShowUpdatableLayers when true only layers that support editing and updates will be returned
47
61
  *
48
62
  * @returns Promise resolving with an array of table names
49
63
  *
50
64
  */
51
- export async function getMapTableHash(mapView) {
52
- let tableHash = {};
65
+ export async function getMapTableHash(mapView, onlyShowUpdatableTables) {
66
+ let tableHash;
53
67
  await mapView.when(() => {
54
68
  tableHash = mapView.map.allTables.toArray().reduce((prev, cur) => {
55
- prev[cur.id] = cur.title;
69
+ prev[cur.id] = {
70
+ name: cur.title,
71
+ supportsUpdate: undefined
72
+ };
56
73
  return prev;
57
74
  }, {});
58
75
  });
59
- return tableHash;
60
- }
61
- /**
62
- * Gets the layer names from the current map
63
- *
64
- * @param mapView the map view to fetch the layer names from
65
- *
66
- * @returns Promise resolving with an array of layer names
67
- *
68
- */
69
- export async function getMapLayerIds(mapView) {
70
- let layerIds = [];
71
- await mapView.when(() => {
72
- layerIds = mapView.map.allLayers.toArray().reduce((prev, cur) => {
73
- if (cur.type === "feature") {
74
- prev.push(cur.id);
75
- }
76
- return prev;
77
- }, []);
78
- });
79
- return layerIds;
80
- }
81
- /**
82
- * Gets the table names from the current map
83
- *
84
- * @param mapView the map view to fetch the table names from
85
- *
86
- * @returns Promise resolving with an array of table names
87
- *
88
- */
89
- export async function getMapTableIds(mapView) {
90
- // TODO...seems like its the same as the hash...see if I can remove this
91
- let tableIds = [];
92
- await mapView.when(() => {
93
- tableIds = mapView.map.allTables.toArray().reduce((prev, cur) => {
94
- prev.push(cur.id);
95
- return prev;
96
- }, []);
97
- });
98
- return tableIds;
76
+ return onlyShowUpdatableTables ? Object.keys(tableHash).reduce(async (prev, cur) => {
77
+ const item = await getLayerOrTable(mapView, cur);
78
+ await item.load();
79
+ prev[cur] = {
80
+ name: tableHash[cur].name,
81
+ supportsUpdate: item.editingEnabled && item.capabilities.operations.supportsUpdate
82
+ };
83
+ return prev;
84
+ }, {}) : tableHash;
99
85
  }
100
86
  /**
101
87
  * Get a layer view by id
@@ -107,19 +93,19 @@ export async function getMapTableIds(mapView) {
107
93
  *
108
94
  */
109
95
  export async function getFeatureLayerView(mapView, id) {
110
- const layer = await getLayer(mapView, id);
96
+ const layer = await getLayerOrTable(mapView, id);
111
97
  return layer ? await mapView.whenLayerView(layer) : undefined;
112
98
  }
113
99
  /**
114
- * Get a layer by id
100
+ * Get a layer or table by id
115
101
  *
116
102
  * @param mapView the map view to fetch the layer from
117
- * @param id the id if the layer to fetch
103
+ * @param id the id of the layer or table to fetch
118
104
  *
119
- * @returns Promise resolving with the fetched layer
105
+ * @returns Promise resolving with the fetched layer or table
120
106
  *
121
107
  */
122
- export async function getLayer(mapView, id) {
108
+ export async function getLayerOrTable(mapView, id) {
123
109
  let layers = [];
124
110
  await mapView.when(() => {
125
111
  layers = [
@@ -21,89 +21,73 @@ import { EWorkflowType, IMapItemHash, ISelectionSet } from "./interfaces";
21
21
  * Gets the layer names from the current map
22
22
  *
23
23
  * @param mapView the map view to fetch the layer names from
24
+ * @param onlyShowUpdatableLayers when true only layers that support editing and updates will be returned
24
25
  *
25
26
  * @returns Promise resolving with an array of layer names
26
27
  *
27
28
  */
28
29
  export async function getMapLayerHash(
29
- mapView: __esri.MapView
30
+ mapView: __esri.MapView,
31
+ onlyShowUpdatableLayers: boolean
30
32
  ): Promise<IMapItemHash> {
31
- let layerHash = {};
33
+ let layerHash;
32
34
  await mapView.when(() => {
33
35
  layerHash = mapView.map.allLayers.toArray().reduce((prev, cur) => {
34
36
  if (cur.type === "feature") {
35
- prev[cur.id] = cur.title;
37
+ prev[cur.id] = {
38
+ name: cur.title,
39
+ supportsUpdate: undefined
40
+ };
36
41
  }
37
42
  return prev;
38
43
  }, {});
39
44
  });
40
- return layerHash;
45
+
46
+ return onlyShowUpdatableLayers ? Object.keys(layerHash).reduce(async (prev, cur) => {
47
+ const layer = await getLayerOrTable(mapView, cur);
48
+ await layer.when(() => {
49
+ prev[cur] = {
50
+ name: layerHash[cur].name,
51
+ supportsUpdate: layer.editingEnabled && layer.capabilities.operations.supportsUpdate
52
+ };
53
+ });
54
+ return prev;
55
+ }, {}) : layerHash;
41
56
  }
42
57
 
43
58
  /**
44
59
  * Gets the table names from the current map
45
60
  *
46
61
  * @param mapView the map view to fetch the table names from
62
+ * @param onlyShowUpdatableLayers when true only layers that support editing and updates will be returned
47
63
  *
48
64
  * @returns Promise resolving with an array of table names
49
65
  *
50
66
  */
51
67
  export async function getMapTableHash(
52
- mapView: __esri.MapView
68
+ mapView: __esri.MapView,
69
+ onlyShowUpdatableTables: boolean
53
70
  ): Promise<IMapItemHash> {
54
- let tableHash = {};
71
+ let tableHash;
55
72
  await mapView.when(() => {
56
73
  tableHash = mapView.map.allTables.toArray().reduce((prev, cur) => {
57
- prev[cur.id] = cur.title;
74
+ prev[cur.id] = {
75
+ name: cur.title,
76
+ supportsUpdate: undefined
77
+ };
58
78
  return prev;
59
79
  }, {});
60
80
  });
61
- return tableHash;
62
- }
63
-
64
- /**
65
- * Gets the layer names from the current map
66
- *
67
- * @param mapView the map view to fetch the layer names from
68
- *
69
- * @returns Promise resolving with an array of layer names
70
- *
71
- */
72
- export async function getMapLayerIds(
73
- mapView: __esri.MapView
74
- ): Promise<string[]> {
75
- let layerIds = [];
76
- await mapView.when(() => {
77
- layerIds = mapView.map.allLayers.toArray().reduce((prev, cur) => {
78
- if (cur.type === "feature") {
79
- prev.push(cur.id);
80
- }
81
- return prev;
82
- }, []);
83
- });
84
- return layerIds;
85
- }
86
81
 
87
- /**
88
- * Gets the table names from the current map
89
- *
90
- * @param mapView the map view to fetch the table names from
91
- *
92
- * @returns Promise resolving with an array of table names
93
- *
94
- */
95
- export async function getMapTableIds(
96
- mapView: __esri.MapView
97
- ): Promise<string[]> {
98
- // TODO...seems like its the same as the hash...see if I can remove this
99
- let tableIds = [];
100
- await mapView.when(() => {
101
- tableIds = mapView.map.allTables.toArray().reduce((prev, cur) => {
102
- prev.push(cur.id);
103
- return prev;
104
- }, []);
105
- });
106
- return tableIds;
82
+ return onlyShowUpdatableTables ? Object.keys(tableHash).reduce(async (prev, cur) => {
83
+ const item = await getLayerOrTable(mapView, cur);
84
+ await item.load();
85
+ prev[cur] = {
86
+ name: tableHash[cur].name,
87
+ supportsUpdate: item.editingEnabled && item.capabilities.operations.supportsUpdate
88
+ };
89
+ return prev;
90
+ }, {}) : tableHash;
107
91
  }
108
92
 
109
93
  /**
@@ -119,20 +103,20 @@ export async function getFeatureLayerView(
119
103
  mapView: __esri.MapView,
120
104
  id: string
121
105
  ): Promise<__esri.FeatureLayerView> {
122
- const layer = await getLayer(mapView, id);
106
+ const layer = await getLayerOrTable(mapView, id);
123
107
  return layer ? await mapView.whenLayerView(layer) : undefined;
124
108
  }
125
109
 
126
110
  /**
127
- * Get a layer by id
111
+ * Get a layer or table by id
128
112
  *
129
113
  * @param mapView the map view to fetch the layer from
130
- * @param id the id if the layer to fetch
114
+ * @param id the id of the layer or table to fetch
131
115
  *
132
- * @returns Promise resolving with the fetched layer
116
+ * @returns Promise resolving with the fetched layer or table
133
117
  *
134
118
  */
135
- export async function getLayer(
119
+ export async function getLayerOrTable(
136
120
  mapView: __esri.MapView,
137
121
  id: string
138
122
  ): Promise<__esri.FeatureLayer> {
@@ -26,10 +26,6 @@ const { state, onChange } = createStore({
26
26
  managedTables: [],
27
27
  // Handle[]: https://developers.arcgis.com/javascript/latest/api-reference/esri-core-Handles.html#Handle
28
28
  highlightHandles: [],
29
- // IMapItemHash title: id lookup to be used across components
30
- layerNameHash: {},
31
- // IMapItemHash title: id lookup to be used across components
32
- tableNameHash: {},
33
29
  // remove all handles
34
30
  removeHandles: () => {
35
31
  state.highlightHandles.forEach(h => h === null || h === void 0 ? void 0 : h.remove());
@@ -23,10 +23,6 @@ const { state, onChange } = createStore({
23
23
  managedTables: [],
24
24
  // Handle[]: https://developers.arcgis.com/javascript/latest/api-reference/esri-core-Handles.html#Handle
25
25
  highlightHandles: [],
26
- // IMapItemHash title: id lookup to be used across components
27
- layerNameHash: {},
28
- // IMapItemHash title: id lookup to be used across components
29
- tableNameHash: {},
30
26
  // remove all handles
31
27
  removeHandles: () => {
32
28
  state.highlightHandles.forEach(h => h?.remove());
@@ -14,6 +14,7 @@ const BasemapGallery = /*@__PURE__*/ proxyCustomElement(class BasemapGallery ext
14
14
  this.__registerHost();
15
15
  this.__attachShadow();
16
16
  this.mapView = undefined;
17
+ this.basemapConfig = undefined;
17
18
  this.basemapWidget = undefined;
18
19
  }
19
20
  //--------------------------------------------------------------------------
@@ -98,6 +99,7 @@ const BasemapGallery = /*@__PURE__*/ proxyCustomElement(class BasemapGallery ext
98
99
  static get style() { return basemapGalleryCss; }
99
100
  }, [1, "basemap-gallery", {
100
101
  "mapView": [16],
102
+ "basemapConfig": [16],
101
103
  "basemapWidget": [16]
102
104
  }]);
103
105
  function defineCustomElement() {
@@ -6,7 +6,7 @@
6
6
  import { proxyCustomElement, HTMLElement, h, Host } from '@stencil/core/internal/client';
7
7
  import { g as getLocaleComponentStrings } from './locale.js';
8
8
  import { q as queryFeaturesByID } from './queryUtils.js';
9
- import { g as getLayer } from './mapViewUtils.js';
9
+ import { g as getLayerOrTable } from './mapViewUtils.js';
10
10
  import { d as defineCustomElement$a } from './alert.js';
11
11
  import { d as defineCustomElement$9 } from './button.js';
12
12
  import { d as defineCustomElement$8 } from './chip.js';
@@ -62,7 +62,7 @@ const CardManager = /*@__PURE__*/ proxyCustomElement(class CardManager extends H
62
62
  */
63
63
  async layerSelectionChange(evt) {
64
64
  const id = evt.detail[0];
65
- this.layer = await getLayer(this.mapView, id);
65
+ this.layer = await getLayerOrTable(this.mapView, id);
66
66
  }
67
67
  //--------------------------------------------------------------------------
68
68
  //
@@ -62,10 +62,18 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
62
62
  this._shouldSetMapView = false;
63
63
  this.classicGrid = false;
64
64
  this.enableAutoRefresh = true;
65
+ this.enableFullscreen = true;
65
66
  this.enableInlineEdit = false;
67
+ this.enableLegend = true;
68
+ this.enableSearch = true;
69
+ this.enableHome = true;
70
+ this.enableZoom = true;
71
+ this.enableBasemap = true;
72
+ this.basemapConfig = undefined;
66
73
  this.showNewestFirst = true;
67
74
  this.hideMap = false;
68
75
  this.mapInfos = [];
76
+ this.onlyShowUpdatableLayers = true;
69
77
  this.searchConfiguration = undefined;
70
78
  this.zoomAndScrollToSelected = false;
71
79
  this._expandPopup = false;
@@ -100,13 +108,18 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
100
108
  */
101
109
  async mapChanged(evt) {
102
110
  this._mapChange = evt.detail;
111
+ await this._mapChange.mapView.when(() => {
112
+ this._setMapView();
113
+ });
114
+ }
115
+ /**
116
+ * Listen for beforeMapChanged and minimize the popup if it's expanded
117
+ */
118
+ async beforeMapChanged() {
103
119
  if (this._expandPopup) {
104
120
  this._shouldSetMapView = true;
105
121
  this._expandPopup = false;
106
122
  }
107
- else {
108
- this._setMapView();
109
- }
110
123
  }
111
124
  //--------------------------------------------------------------------------
112
125
  //
@@ -265,7 +278,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
265
278
  const mapDisplayClass = this.classicGrid && layoutMode === ELayoutMode.GRID ? "display-flex height-full width-1-2" :
266
279
  layoutMode === ELayoutMode.GRID && !hideMap ? "" : "display-none";
267
280
  const mapContainerClass = this.classicGrid && layoutMode === ELayoutMode.GRID ? "width-full" : this._expandPopup ? "height-50-px" : "adjusted-height-50";
268
- return (h("div", { class: `${mapContainerClass} overflow-hidden ${mapDisplayClass}` }, h("map-card", { class: "width-full", mapInfos: this.mapInfos })));
281
+ return (h("div", { class: `${mapContainerClass} overflow-hidden ${mapDisplayClass}` }, h("map-card", { basemapConfig: this.basemapConfig, class: "width-full", enableBasemap: this.enableBasemap, enableFullscreen: this.enableFullscreen, enableLegend: this.enableLegend, enableSearch: this.enableSearch, mapInfos: this.mapInfos })));
269
282
  }
270
283
  /**
271
284
  * Get the expand node for the popup information
@@ -319,7 +332,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
319
332
  const toggleSlot = this.classicGrid && layoutMode !== ELayoutMode.VERTICAL ? "footer" :
320
333
  this.classicGrid && layoutMode === ELayoutMode.VERTICAL ? "panel-end" :
321
334
  layoutMode === ELayoutMode.HORIZONTAL ? "header" : "panel-start";
322
- return (h("calcite-shell", { class: tableSizeClass + " border-bottom" }, h("calcite-action-bar", { class: "border", expandDisabled: true, layout: toggleLayout, slot: toggleSlot }, h("calcite-action", { class: "toggle-node", icon: icon, id: id, onClick: () => this._toggleLayout(), text: "" }), h("calcite-tooltip", { label: tooltip, placement: "bottom", "reference-element": id }, h("span", null, tooltip))), h("div", { class: "width-full height-full position-relative" }, h("layer-table", { enableAutoRefresh: this.enableAutoRefresh, enableInlineEdit: this.enableInlineEdit, mapInfo: this._mapInfo, mapView: this === null || this === void 0 ? void 0 : this._mapView, showNewestFirst: this.showNewestFirst, zoomAndScrollToSelected: this.zoomAndScrollToSelected }))));
335
+ return (h("calcite-shell", { class: tableSizeClass + " border-bottom" }, h("calcite-action-bar", { class: "border", expandDisabled: true, layout: toggleLayout, slot: toggleSlot }, h("calcite-action", { class: "toggle-node", icon: icon, id: id, onClick: () => this._toggleLayout(), text: "" }), h("calcite-tooltip", { label: tooltip, placement: "bottom", "reference-element": id }, h("span", null, tooltip))), h("div", { class: "width-full height-full position-relative" }, h("layer-table", { enableAutoRefresh: this.enableAutoRefresh, enableInlineEdit: this.enableInlineEdit, mapInfo: this._mapInfo, mapView: this === null || this === void 0 ? void 0 : this._mapView, onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, showNewestFirst: this.showNewestFirst, zoomAndScrollToSelected: this.zoomAndScrollToSelected }))));
323
336
  }
324
337
  /**
325
338
  * Open/Close the appropriate panel.
@@ -372,10 +385,18 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
372
385
  }, [0, "crowdsource-manager", {
373
386
  "classicGrid": [4, "classic-grid"],
374
387
  "enableAutoRefresh": [4, "enable-auto-refresh"],
388
+ "enableFullscreen": [4, "enable-fullscreen"],
375
389
  "enableInlineEdit": [4, "enable-inline-edit"],
390
+ "enableLegend": [4, "enable-legend"],
391
+ "enableSearch": [4, "enable-search"],
392
+ "enableHome": [4, "enable-home"],
393
+ "enableZoom": [4, "enable-zoom"],
394
+ "enableBasemap": [4, "enable-basemap"],
395
+ "basemapConfig": [16],
376
396
  "showNewestFirst": [4, "show-newest-first"],
377
397
  "hideMap": [4, "hide-map"],
378
398
  "mapInfos": [16],
399
+ "onlyShowUpdatableLayers": [4, "only-show-updatable-layers"],
379
400
  "searchConfiguration": [16],
380
401
  "zoomAndScrollToSelected": [4, "zoom-and-scroll-to-selected"],
381
402
  "_expandPopup": [32],
@@ -383,7 +404,7 @@ const CrowdsourceManager$1 = /*@__PURE__*/ proxyCustomElement(class CrowdsourceM
383
404
  "_layoutMode": [32],
384
405
  "_mapView": [32],
385
406
  "_panelOpen": [32]
386
- }, [[8, "layoutChanged", "layoutChanged"], [8, "mapChanged", "mapChanged"]]]);
407
+ }, [[8, "layoutChanged", "layoutChanged"], [8, "mapChanged", "mapChanged"], [8, "beforeMapChanged", "beforeMapChanged"]]]);
387
408
  function defineCustomElement$1() {
388
409
  if (typeof customElements === "undefined") {
389
410
  return;
@@ -16,6 +16,7 @@ const EditCard = /*@__PURE__*/ proxyCustomElement(class EditCard extends HTMLEle
16
16
  super();
17
17
  this.__registerHost();
18
18
  this.closeEdit = createEvent(this, "closeEdit", 7);
19
+ this.editsComplete = createEvent(this, "editsComplete", 7);
19
20
  /**
20
21
  * boolean: When true the Editor widget should be closed
21
22
  */
@@ -78,6 +79,10 @@ const EditCard = /*@__PURE__*/ proxyCustomElement(class EditCard extends HTMLEle
78
79
  }
79
80
  if (((_a = this.graphics) === null || _a === void 0 ? void 0 : _a.length) > 0 && ((_b = this.graphics[0]) === null || _b === void 0 ? void 0 : _b.layer)) {
80
81
  this._layer = this.graphics[0].layer;
82
+ if (this._layerEditHandle) {
83
+ this._layerEditHandle.remove();
84
+ }
85
+ this._layerEditHandle = this._layer.on("edits", () => this.editsComplete.emit());
81
86
  }
82
87
  }
83
88
  /**