@esri/solutions-components 0.3.2 → 0.3.3

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 (163) hide show
  1. package/dist/assets/t9n/public-notification/resources.json +4 -1
  2. package/dist/assets/t9n/public-notification/resources_en.json +4 -1
  3. package/dist/cjs/buffer-tools_6.cjs.entry.js +8 -7
  4. package/dist/cjs/calcite-combobox_3.cjs.entry.js +38 -25
  5. package/dist/cjs/calcite-input-message_5.cjs.entry.js +272 -21
  6. package/dist/cjs/{csvUtils-18a03353.js → csvUtils-83af7ae1.js} +5 -5
  7. package/dist/cjs/layer-table.cjs.entry.js +3 -3
  8. package/dist/cjs/loader.cjs.js +1 -1
  9. package/dist/cjs/map-search.cjs.entry.js +46 -7
  10. package/dist/cjs/{mapViewUtils-8ea9adc5.js → mapViewUtils-55ac76cb.js} +40 -25
  11. package/dist/cjs/public-notification.cjs.entry.js +101 -18
  12. package/dist/cjs/{publicNotificationStore-aca88430.js → publicNotificationStore-28a8759d.js} +3 -1
  13. package/dist/cjs/solutions-components.cjs.js +1 -1
  14. package/dist/collection/collection-manifest.json +0 -5
  15. package/dist/collection/components/buffer-tools/buffer-tools.js +7 -6
  16. package/dist/collection/components/layer-table/layer-table.js +1 -1
  17. package/dist/collection/components/map-layer-picker/map-layer-picker.js +47 -29
  18. package/dist/collection/components/map-search/map-search.js +66 -7
  19. package/dist/collection/components/map-select-tools/map-select-tools.js +125 -8
  20. package/dist/collection/components/pdf-download/pdf-download.js +32 -8
  21. package/dist/collection/components/public-notification/public-notification.css +46 -41
  22. package/dist/collection/components/public-notification/public-notification.js +267 -19
  23. package/dist/collection/components/refine-selection/refine-selection.js +18 -1
  24. package/dist/collection/components/refine-selection-tools/refine-selection-tools.js +22 -5
  25. package/dist/{solutions-components/demos/config-pdf-download.html → collection/demos/buffer-tools.html} +13 -21
  26. package/dist/collection/demos/index.html +0 -24
  27. package/dist/collection/demos/map-draw-tools.html +17 -17
  28. package/dist/collection/demos/map-layer-picker.html +2 -0
  29. package/dist/collection/demos/map-search.html +16 -15
  30. package/dist/collection/demos/map-select-tools.html +16 -24
  31. package/dist/collection/demos/new-public-notification.html +46 -35
  32. package/dist/collection/demos/pdf-download.html +8 -1
  33. package/dist/collection/utils/csvUtils.js +4 -4
  34. package/dist/collection/utils/csvUtils.ts +6 -4
  35. package/dist/collection/utils/interfaces.ts +65 -1
  36. package/dist/collection/utils/mapViewUtils.js +36 -22
  37. package/dist/collection/utils/mapViewUtils.ts +50 -27
  38. package/dist/collection/utils/publicNotificationStore.js +3 -1
  39. package/dist/collection/utils/publicNotificationStore.ts +3 -1
  40. package/dist/collection/utils/queryUtils.js +2 -2
  41. package/dist/collection/utils/queryUtils.ts +2 -2
  42. package/dist/components/buffer-tools2.js +1 -1
  43. package/dist/components/csvUtils.js +4 -4
  44. package/dist/components/index.d.ts +0 -5
  45. package/dist/components/index.js +0 -5
  46. package/dist/components/layer-table.js +2 -3
  47. package/dist/components/map-layer-picker2.js +177 -28
  48. package/dist/components/map-search.js +47 -7
  49. package/dist/components/map-select-tools2.js +56 -11
  50. package/dist/components/pdf-download2.js +217 -8
  51. package/dist/components/public-notification.js +154 -55
  52. package/dist/components/publicNotificationStore.js +3 -1
  53. package/dist/components/queryUtils.js +3 -3
  54. package/dist/components/refine-selection-tools2.js +9 -8
  55. package/dist/components/refine-selection2.js +3 -1
  56. package/dist/esm/buffer-tools_6.entry.js +8 -7
  57. package/dist/esm/calcite-combobox_3.entry.js +38 -25
  58. package/dist/esm/calcite-input-message_5.entry.js +271 -20
  59. package/dist/esm/{csvUtils-edc0c2a8.js → csvUtils-eb231cfb.js} +5 -5
  60. package/dist/esm/layer-table.entry.js +3 -3
  61. package/dist/esm/loader.js +1 -1
  62. package/dist/esm/map-search.entry.js +46 -7
  63. package/dist/esm/{mapViewUtils-31d2c2bb.js → mapViewUtils-e5d8a1e1.js} +39 -25
  64. package/dist/esm/public-notification.entry.js +101 -18
  65. package/dist/esm/{publicNotificationStore-3e762eea.js → publicNotificationStore-8e9cb73b.js} +3 -1
  66. package/dist/esm/solutions-components.js +1 -1
  67. package/dist/{collection/demos/config-pdf-download.html → solutions-components/demos/buffer-tools.html} +13 -21
  68. package/dist/solutions-components/demos/index.html +0 -24
  69. package/dist/solutions-components/demos/map-draw-tools.html +17 -17
  70. package/dist/solutions-components/demos/map-layer-picker.html +2 -0
  71. package/dist/solutions-components/demos/map-search.html +16 -15
  72. package/dist/solutions-components/demos/map-select-tools.html +16 -24
  73. package/dist/solutions-components/demos/new-public-notification.html +46 -35
  74. package/dist/solutions-components/demos/pdf-download.html +8 -1
  75. package/dist/solutions-components/p-07593958.entry.js +6 -0
  76. package/dist/solutions-components/p-3fa9b3c8.js +36 -0
  77. package/dist/solutions-components/p-9b5a9117.entry.js +12 -0
  78. package/dist/solutions-components/{p-15cd8a97.js → p-9c1ebc90.js} +1 -1
  79. package/dist/solutions-components/{p-c76f8ff7.entry.js → p-a516c658.entry.js} +1 -1
  80. package/dist/solutions-components/{p-ad42039f.js → p-b668daf8.js} +2 -2
  81. package/dist/solutions-components/p-bfa95147.entry.js +17 -0
  82. package/dist/solutions-components/p-d09a168c.entry.js +6 -0
  83. package/dist/solutions-components/{p-fa6046a8.entry.js → p-fc9609e6.entry.js} +2 -2
  84. package/dist/solutions-components/solutions-components.esm.js +1 -1
  85. package/dist/solutions-components/utils/csvUtils.ts +6 -4
  86. package/dist/solutions-components/utils/interfaces.ts +65 -1
  87. package/dist/solutions-components/utils/mapViewUtils.ts +50 -27
  88. package/dist/solutions-components/utils/publicNotificationStore.ts +3 -1
  89. package/dist/solutions-components/utils/queryUtils.ts +2 -2
  90. package/dist/types/components/buffer-tools/buffer-tools.d.ts +4 -3
  91. package/dist/types/components/map-layer-picker/map-layer-picker.d.ts +22 -11
  92. package/dist/types/components/map-search/map-search.d.ts +18 -1
  93. package/dist/types/components/map-select-tools/map-select-tools.d.ts +31 -1
  94. package/dist/types/components/pdf-download/pdf-download.d.ts +7 -2
  95. package/dist/types/components/public-notification/public-notification.d.ts +98 -4
  96. package/dist/types/components/refine-selection/refine-selection.d.ts +5 -0
  97. package/dist/types/components/refine-selection-tools/refine-selection-tools.d.ts +6 -1
  98. package/dist/types/components.d.ts +154 -180
  99. package/dist/types/preact.d.ts +0 -10
  100. package/dist/types/utils/csvUtils.d.ts +1 -1
  101. package/dist/types/utils/interfaces.d.ts +56 -1
  102. package/dist/types/utils/mapViewUtils.d.ts +19 -9
  103. package/dist/types/utils/publicNotificationStore.d.ts +1 -0
  104. package/package.json +1 -1
  105. package/dist/cjs/check-list.cjs.entry.js +0 -103
  106. package/dist/cjs/config-buffer-tools.cjs.entry.js +0 -125
  107. package/dist/cjs/config-draw-tools.cjs.entry.js +0 -85
  108. package/dist/cjs/config-layer-picker.cjs.entry.js +0 -113
  109. package/dist/cjs/config-pdf-download.cjs.entry.js +0 -117
  110. package/dist/cjs/labelFormats-3236d2e0.js +0 -212
  111. package/dist/collection/components/check-list/check-list.css +0 -3
  112. package/dist/collection/components/check-list/check-list.js +0 -179
  113. package/dist/collection/components/config-buffer-tools/config-buffer-tools.css +0 -34
  114. package/dist/collection/components/config-buffer-tools/config-buffer-tools.js +0 -209
  115. package/dist/collection/components/config-draw-tools/config-draw-tools.css +0 -17
  116. package/dist/collection/components/config-draw-tools/config-draw-tools.js +0 -150
  117. package/dist/collection/components/config-layer-picker/config-layer-picker.css +0 -17
  118. package/dist/collection/components/config-layer-picker/config-layer-picker.js +0 -218
  119. package/dist/collection/components/config-pdf-download/config-pdf-download.css +0 -17
  120. package/dist/collection/components/config-pdf-download/config-pdf-download.js +0 -183
  121. package/dist/collection/demos/check-list.html +0 -65
  122. package/dist/collection/demos/config-buffer-tools.html +0 -92
  123. package/dist/collection/demos/config-draw-tools.html +0 -58
  124. package/dist/collection/demos/config-layer-picker.html +0 -97
  125. package/dist/components/check-list.d.ts +0 -11
  126. package/dist/components/check-list.js +0 -11
  127. package/dist/components/check-list2.js +0 -131
  128. package/dist/components/config-buffer-tools.d.ts +0 -11
  129. package/dist/components/config-buffer-tools.js +0 -187
  130. package/dist/components/config-draw-tools.d.ts +0 -11
  131. package/dist/components/config-draw-tools.js +0 -121
  132. package/dist/components/config-layer-picker.d.ts +0 -11
  133. package/dist/components/config-layer-picker.js +0 -163
  134. package/dist/components/config-pdf-download.d.ts +0 -11
  135. package/dist/components/config-pdf-download.js +0 -154
  136. package/dist/components/labelFormats.js +0 -210
  137. package/dist/components/mapViewUtils.js +0 -129
  138. package/dist/esm/check-list.entry.js +0 -99
  139. package/dist/esm/config-buffer-tools.entry.js +0 -121
  140. package/dist/esm/config-draw-tools.entry.js +0 -81
  141. package/dist/esm/config-layer-picker.entry.js +0 -109
  142. package/dist/esm/config-pdf-download.entry.js +0 -113
  143. package/dist/esm/labelFormats-b37958c3.js +0 -210
  144. package/dist/solutions-components/demos/check-list.html +0 -65
  145. package/dist/solutions-components/demos/config-buffer-tools.html +0 -92
  146. package/dist/solutions-components/demos/config-draw-tools.html +0 -58
  147. package/dist/solutions-components/demos/config-layer-picker.html +0 -97
  148. package/dist/solutions-components/p-16a0e65a.entry.js +0 -6
  149. package/dist/solutions-components/p-35078393.entry.js +0 -17
  150. package/dist/solutions-components/p-3d72bba6.entry.js +0 -6
  151. package/dist/solutions-components/p-3e444242.entry.js +0 -6
  152. package/dist/solutions-components/p-67afea92.entry.js +0 -12
  153. package/dist/solutions-components/p-7dcab29d.js +0 -36
  154. package/dist/solutions-components/p-89f7b02a.entry.js +0 -6
  155. package/dist/solutions-components/p-906b7b96.entry.js +0 -6
  156. package/dist/solutions-components/p-99c98510.entry.js +0 -6
  157. package/dist/solutions-components/p-b1a3605f.entry.js +0 -6
  158. package/dist/solutions-components/p-e99b1247.js +0 -6
  159. package/dist/types/components/check-list/check-list.d.ts +0 -57
  160. package/dist/types/components/config-buffer-tools/config-buffer-tools.d.ts +0 -92
  161. package/dist/types/components/config-draw-tools/config-draw-tools.d.ts +0 -58
  162. package/dist/types/components/config-layer-picker/config-layer-picker.d.ts +0 -83
  163. package/dist/types/components/config-pdf-download/config-pdf-download.d.ts +0 -81
@@ -232,7 +232,7 @@ export class LayerTable {
232
232
  */
233
233
  _exportToCSV() {
234
234
  const ids = this._getSelectedIds();
235
- void exportCSV(this._layerView, ids);
235
+ void exportCSV(this._layerView, ids, true);
236
236
  }
237
237
  /**
238
238
  * Zoom to all selected features
@@ -19,14 +19,15 @@
19
19
  * limitations under the License.
20
20
  */
21
21
  import { Host, h } from "@stencil/core";
22
- import { getMapLayerNames } from "../../utils/mapViewUtils";
22
+ import { getMapLayerHash, getMapLayerIds } from "../../utils/mapViewUtils";
23
23
  import state from "../../utils/publicNotificationStore";
24
24
  export class MapLayerPicker {
25
25
  constructor() {
26
- this.layerNames = [];
26
+ this.enabledLayerIds = [];
27
27
  this.mapView = undefined;
28
- this.selectedLayers = [];
28
+ this.selectedLayerIds = [];
29
29
  this.selectionMode = "single";
30
+ this.layerIds = [];
30
31
  }
31
32
  //--------------------------------------------------------------------------
32
33
  //
@@ -41,7 +42,7 @@ export class MapLayerPicker {
41
42
  if (newValue !== oldValue) {
42
43
  await this._setLayers();
43
44
  if (this.selectionMode === "single") {
44
- this.layerSelectionChange.emit([this.layerNames[0]]);
45
+ this.layerSelectionChange.emit([this.layerIds[0]]);
45
46
  }
46
47
  }
47
48
  }
@@ -55,8 +56,8 @@ export class MapLayerPicker {
55
56
  */
56
57
  async componentWillLoad() {
57
58
  await this._setLayers();
58
- if (this.selectionMode === "single" && (this.layerNames.length > 0 || this.selectedLayers.length === 1)) {
59
- this.layerSelectionChange.emit(this.selectedLayers.length === 1 ? [this.selectedLayers[0]] : [this.layerNames[0]]);
59
+ if (this.selectionMode === "single" && (this.layerIds.length > 0 || this.selectedLayerIds.length === 1)) {
60
+ this.layerSelectionChange.emit(this.selectedLayerIds.length === 1 ? [this.selectedLayerIds[0]] : [this.layerIds[0]]);
60
61
  }
61
62
  }
62
63
  /**
@@ -75,62 +76,74 @@ export class MapLayerPicker {
75
76
  *
76
77
  * Used for selecting a single layer.
77
78
  *
78
- * @returns Calcite Select component with the names of the layers from the map
79
+ * @returns Calcite Select component with the ids of the layers from the map
79
80
  */
80
81
  _getSelect() {
81
82
  return (h("calcite-select", { label: "", onCalciteSelectChange: (evt) => this._layerSelectionChange(evt), ref: (el) => { this._layerElement = el; } }, this._addMapLayersOptions()));
82
83
  }
83
84
  /**
84
- * Create a list of layers from the map
85
+ * Create a list of layer ids from the map
85
86
  *
86
87
  * Used for selecting multiple layers
87
88
  *
88
- * @returns Calcite ComboBox component with the names of the layers from the map
89
+ * @returns Calcite ComboBox component with the ids of the layers from the map
89
90
  */
90
91
  _getCombobox() {
91
92
  return (h("calcite-combobox", { label: "", onCalciteComboboxChange: (evt) => this._layerSelectionChange(evt), "selection-mode": this.selectionMode }, this._addMapLayersOptions()));
92
93
  }
93
94
  /**
94
- * Hydrate a select or combobox component with the names of the layers in the map
95
+ * Hydrate a select or combobox component with the ids of the layers in the map
95
96
  *
96
- * @returns Array of ComboBox items or Select options for the names of the layers
97
+ * @returns Array of ComboBox items or Select options for the ids of the layers
97
98
  */
98
99
  _addMapLayersOptions() {
99
- return this.layerNames.reduce((prev, cur) => {
100
- if (state.managedLayers.indexOf(cur) < 0) {
101
- prev.push(this.selectionMode === "multi" && this.selectedLayers.indexOf(cur) > -1 ?
102
- (h("calcite-combobox-item", { selected: true, textLabel: cur, value: cur })) :
100
+ return this.layerIds.reduce((prev, cur) => {
101
+ if (state.managedLayers.indexOf(state.layerNameHash[cur]) < 0 && (this.enabledLayerIds.length > 0 ? this.enabledLayerIds.indexOf(cur) > -1 : true)) {
102
+ prev.push(this.selectionMode === "multi" && this.selectedLayerIds.indexOf(cur) > -1 ?
103
+ (h("calcite-combobox-item", { selected: true, textLabel: state.layerNameHash[cur], value: cur })) :
103
104
  this.selectionMode === "multi" ?
104
- (h("calcite-combobox-item", { textLabel: cur, value: cur })) :
105
- this.selectedLayers.indexOf(cur) > -1 ?
106
- (h("calcite-option", { label: cur, selected: true, value: cur })) :
107
- (h("calcite-option", { label: cur, value: cur })));
105
+ (h("calcite-combobox-item", { textLabel: state.layerNameHash[cur], value: cur })) :
106
+ this.selectedLayerIds.indexOf(cur) > -1 ?
107
+ (h("calcite-option", { label: state.layerNameHash[cur], selected: true, value: cur })) :
108
+ (h("calcite-option", { label: state.layerNameHash[cur], value: cur })));
108
109
  }
109
110
  return prev;
110
111
  }, []);
111
112
  }
112
113
  /**
113
- * Fetch the names of the layers from the map
114
+ * Fetch the ids of the layers from the map
114
115
  *
115
116
  * @returns Promise when the operation has completed
116
117
  */
117
118
  async _setLayers() {
118
119
  if (this.mapView) {
119
- this.layerNames = await getMapLayerNames(this.mapView);
120
+ const mapLayerIds = await getMapLayerIds(this.mapView);
121
+ this.layerIds = mapLayerIds.filter(n => { var _a; return ((_a = this.enabledLayerIds) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.enabledLayerIds.indexOf(n) > -1 : true; });
122
+ await this._initLayerHashState();
120
123
  }
121
124
  }
122
125
  /**
123
- * Fetch the names of the layers from the map
126
+ * Create a layer id:title hash for layer name display
127
+ *
128
+ * @returns Promise when the operation has completed
129
+ */
130
+ async _initLayerHashState() {
131
+ if (this.mapView) {
132
+ state.layerNameHash = await getMapLayerHash(this.mapView);
133
+ }
134
+ }
135
+ /**
136
+ * Fetch the ids of the layers from the map
124
137
  *
125
138
  * @returns Promise when the operation has completed
126
139
  */
127
140
  _layerSelectionChange(evt) {
128
141
  var _a;
129
- this.selectedLayers = this.selectionMode === "single" ?
142
+ this.selectedLayerIds = this.selectionMode === "single" ?
130
143
  [this._layerElement.value] : ((_a = evt.detail) === null || _a === void 0 ? void 0 : _a.selectedItems.map((item) => {
131
144
  return item.value;
132
145
  })) || [];
133
- this.layerSelectionChange.emit(this.selectedLayers);
146
+ this.layerSelectionChange.emit(this.selectedLayerIds);
134
147
  }
135
148
  static get is() { return "map-layer-picker"; }
136
149
  static get originalStyleUrls() {
@@ -145,9 +158,9 @@ export class MapLayerPicker {
145
158
  }
146
159
  static get properties() {
147
160
  return {
148
- "layerNames": {
161
+ "enabledLayerIds": {
149
162
  "type": "unknown",
150
- "mutable": true,
163
+ "mutable": false,
151
164
  "complexType": {
152
165
  "original": "string[]",
153
166
  "resolved": "string[]",
@@ -157,7 +170,7 @@ export class MapLayerPicker {
157
170
  "optional": false,
158
171
  "docs": {
159
172
  "tags": [],
160
- "text": "string[]: list of layer names from the map"
173
+ "text": "string[]: Optional list of enabled layer ids\r\n If empty all layers will be available"
161
174
  },
162
175
  "defaultValue": "[]"
163
176
  },
@@ -180,7 +193,7 @@ export class MapLayerPicker {
180
193
  "text": "esri/views/View: https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html"
181
194
  }
182
195
  },
183
- "selectedLayers": {
196
+ "selectedLayerIds": {
184
197
  "type": "unknown",
185
198
  "mutable": true,
186
199
  "complexType": {
@@ -192,7 +205,7 @@ export class MapLayerPicker {
192
205
  "optional": false,
193
206
  "docs": {
194
207
  "tags": [],
195
- "text": "string[]: list of layers that have been selected by the end user"
208
+ "text": "string[]: list of layer ids that have been selected by the end user"
196
209
  },
197
210
  "defaultValue": "[]"
198
211
  },
@@ -221,6 +234,11 @@ export class MapLayerPicker {
221
234
  }
222
235
  };
223
236
  }
237
+ static get states() {
238
+ return {
239
+ "layerIds": {}
240
+ };
241
+ }
224
242
  static get events() {
225
243
  return [{
226
244
  "method": "layerSelectionChange",
@@ -24,6 +24,7 @@ import { getLocaleComponentStrings } from "../../utils/locale";
24
24
  export class MapSearch {
25
25
  constructor() {
26
26
  this.mapView = undefined;
27
+ this.searchConfiguration = undefined;
27
28
  this._searchTerm = undefined;
28
29
  this._translations = undefined;
29
30
  }
@@ -84,10 +85,12 @@ export class MapSearch {
84
85
  * @protected
85
86
  */
86
87
  async _initModules() {
87
- const [Search] = await loadModules([
88
- "esri/widgets/Search"
88
+ const [Search, FeatureLayer] = await loadModules([
89
+ "esri/widgets/Search",
90
+ "esri/layers/FeatureLayer"
89
91
  ]);
90
92
  this.Search = Search;
93
+ this.FeatureLayer = FeatureLayer;
91
94
  }
92
95
  /**
93
96
  * Initialize the search widget
@@ -104,11 +107,8 @@ export class MapSearch {
104
107
  */
105
108
  _initSearchWidget() {
106
109
  if (this.mapView && this._searchElement) {
107
- const searchOptions = {
108
- view: this.mapView,
109
- container: this._searchElement,
110
- searchTerm: this._searchTerm
111
- };
110
+ const searchConfiguration = this._getSearchConfig(this.searchConfiguration, this.mapView);
111
+ const searchOptions = Object.assign({ view: this.mapView, container: this._searchElement, searchTerm: this._searchTerm }, searchConfiguration);
112
112
  this._searchWidget = new this.Search(searchOptions);
113
113
  this._searchWidget.on("search-clear", () => {
114
114
  this._searchResult = undefined;
@@ -126,6 +126,45 @@ export class MapSearch {
126
126
  });
127
127
  }
128
128
  }
129
+ /**
130
+ * Initialize the search widget based on user defined configuration
131
+ *
132
+ * @param searchConfiguration search configuration defined by the user
133
+ * @param view the current map view
134
+ *
135
+ * @protected
136
+ */
137
+ _getSearchConfig(searchConfiguration, view) {
138
+ var _a;
139
+ const sources = searchConfiguration === null || searchConfiguration === void 0 ? void 0 : searchConfiguration.sources;
140
+ if (sources) {
141
+ sources.forEach(source => {
142
+ var _a, _b, _c;
143
+ const isLayerSource = source.hasOwnProperty("layer");
144
+ if (isLayerSource) {
145
+ const layerSource = source;
146
+ const layerFromMap = ((_a = layerSource.layer) === null || _a === void 0 ? void 0 : _a.id)
147
+ ? view.map.findLayerById(layerSource.layer.id)
148
+ : null;
149
+ if (layerFromMap) {
150
+ layerSource.layer = layerFromMap;
151
+ }
152
+ else if ((_b = layerSource === null || layerSource === void 0 ? void 0 : layerSource.layer) === null || _b === void 0 ? void 0 : _b.url) {
153
+ layerSource.layer = new this.FeatureLayer((_c = layerSource === null || layerSource === void 0 ? void 0 : layerSource.layer) === null || _c === void 0 ? void 0 : _c.url);
154
+ }
155
+ }
156
+ });
157
+ }
158
+ (_a = searchConfiguration === null || searchConfiguration === void 0 ? void 0 : searchConfiguration.sources) === null || _a === void 0 ? void 0 : _a.forEach(source => {
159
+ const isLocatorSource = source.hasOwnProperty("locator");
160
+ if (isLocatorSource) {
161
+ const locatorSource = source;
162
+ locatorSource.url = locatorSource.url;
163
+ delete locatorSource.url;
164
+ }
165
+ });
166
+ return searchConfiguration;
167
+ }
129
168
  /**
130
169
  * Fetches the component's translations
131
170
  *
@@ -166,6 +205,26 @@ export class MapSearch {
166
205
  "tags": [],
167
206
  "text": "esri/views/View: https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html"
168
207
  }
208
+ },
209
+ "searchConfiguration": {
210
+ "type": "unknown",
211
+ "mutable": false,
212
+ "complexType": {
213
+ "original": "ISearchConfiguration",
214
+ "resolved": "ISearchConfiguration",
215
+ "references": {
216
+ "ISearchConfiguration": {
217
+ "location": "import",
218
+ "path": "../../utils/interfaces"
219
+ }
220
+ }
221
+ },
222
+ "required": false,
223
+ "optional": false,
224
+ "docs": {
225
+ "tags": [],
226
+ "text": "ISearchConfiguration: Configuration details for the Search widget"
227
+ }
169
228
  }
170
229
  };
171
230
  }
@@ -35,9 +35,13 @@ export class MapSelectTools {
35
35
  * string: A label to help uniquely identify the selection set
36
36
  */
37
37
  this._selectionLabel = "";
38
+ this.enabledLayerIds = [];
39
+ this.defaultBufferDistance = undefined;
40
+ this.defaultBufferUnit = undefined;
38
41
  this.geometries = undefined;
39
42
  this.isUpdate = false;
40
43
  this.mapView = undefined;
44
+ this.searchConfiguration = undefined;
41
45
  this.selectionSet = undefined;
42
46
  this.selectLayerView = undefined;
43
47
  this.showBufferTools = true;
@@ -163,7 +167,7 @@ export class MapSelectTools {
163
167
  const useSelectClass = this._layerSelectChecked && !searchEnabled ? " div-visible" : " div-not-visible";
164
168
  const useDrawClass = !this._layerSelectChecked && !searchEnabled ? " div-visible" : " div-not-visible";
165
169
  const showLayerChoiceClass = searchEnabled ? "div-not-visible" : "div-visible";
166
- return (h(Host, null, h("div", { class: "padding-bottom-1" }, h("calcite-radio-group", { class: "w-100", onCalciteRadioGroupChange: (evt) => this._workflowChange(evt) }, h("calcite-radio-group-item", { checked: searchEnabled, class: "w-50 end-border", value: EWorkflowType.SEARCH }, this._translations.search), h("calcite-radio-group-item", { checked: drawEnabled, class: "w-50", value: EWorkflowType.SKETCH }, this._translations.sketch))), h("div", { class: showSearchClass }, h("div", { class: "search-widget", ref: (el) => { this._searchElement = el; } })), h("div", { class: showLayerChoiceClass }, h("calcite-label", { layout: "inline" }, h("calcite-checkbox", { onCalciteCheckboxChange: () => this._layerSelectChanged(), ref: (el) => this._selectFromLayerElement = el }), "Use layer features")), h("div", { class: useDrawClass }, h("map-draw-tools", { active: true, border: true, mapView: this.mapView, ref: (el) => { this._drawTools = el; } })), h("div", { class: useSelectClass }, h("refine-selection-tools", { active: true, border: true, layerViews: this._refineSelectLayers, mapView: this.mapView, mode: ESelectionMode.ADD, ref: (el) => { this._refineTools = el; }, refineMode: ERefineMode.SUBSET })), h("calcite-label", { class: showBufferToolsClass }, this._translations.searchDistance, h("buffer-tools", { distance: (_a = this.selectionSet) === null || _a === void 0 ? void 0 : _a.distance, geometries: this.geometries, onBufferComplete: (evt) => this._bufferComplete(evt), ref: (el) => this._bufferTools = el, unit: (_b = this.selectionSet) === null || _b === void 0 ? void 0 : _b.unit })), h("slot", null)));
170
+ return (h(Host, null, h("div", { class: "padding-bottom-1" }, h("calcite-radio-group", { class: "w-100", onCalciteRadioGroupChange: (evt) => this._workflowChange(evt) }, h("calcite-radio-group-item", { checked: searchEnabled, class: "w-50 end-border", value: EWorkflowType.SEARCH }, this._translations.search), h("calcite-radio-group-item", { checked: drawEnabled, class: "w-50", value: EWorkflowType.SKETCH }, this._translations.sketch))), h("div", { class: showSearchClass }, h("div", { class: "search-widget", ref: (el) => { this._searchElement = el; } })), h("div", { class: showLayerChoiceClass }, h("calcite-label", { layout: "inline" }, h("calcite-checkbox", { onCalciteCheckboxChange: () => this._layerSelectChanged(), ref: (el) => this._selectFromLayerElement = el }), "Use layer features")), h("div", { class: useDrawClass }, h("map-draw-tools", { active: true, border: true, mapView: this.mapView, ref: (el) => { this._drawTools = el; } })), h("div", { class: useSelectClass }, h("refine-selection-tools", { active: true, border: true, enabledLayerIds: this.enabledLayerIds, layerViews: this._refineSelectLayers, mapView: this.mapView, mode: ESelectionMode.ADD, ref: (el) => { this._refineTools = el; }, refineMode: ERefineMode.SUBSET })), h("calcite-label", { class: showBufferToolsClass }, this._translations.searchDistance, h("buffer-tools", { distance: ((_a = this.selectionSet) === null || _a === void 0 ? void 0 : _a.distance) || this.defaultBufferDistance, geometries: this.geometries, onBufferComplete: (evt) => this._bufferComplete(evt), ref: (el) => this._bufferTools = el, unit: ((_b = this.selectionSet) === null || _b === void 0 ? void 0 : _b.unit) || this.defaultBufferUnit })), h("slot", null)));
167
171
  }
168
172
  //--------------------------------------------------------------------------
169
173
  //
@@ -178,16 +182,18 @@ export class MapSelectTools {
178
182
  * @protected
179
183
  */
180
184
  async _initModules() {
181
- const [GraphicsLayer, Graphic, Search, geometryEngine] = await loadModules([
185
+ const [GraphicsLayer, Graphic, Search, geometryEngine, FeatureLayer] = await loadModules([
182
186
  "esri/layers/GraphicsLayer",
183
187
  "esri/Graphic",
184
188
  "esri/widgets/Search",
185
- "esri/geometry/geometryEngine"
189
+ "esri/geometry/geometryEngine",
190
+ "esri/layers/FeatureLayer"
186
191
  ]);
187
192
  this.GraphicsLayer = GraphicsLayer;
188
193
  this.Graphic = Graphic;
189
194
  this.Search = Search;
190
195
  this._geometryEngine = geometryEngine;
196
+ this.FeatureLayer = FeatureLayer;
191
197
  }
192
198
  /**
193
199
  * Initialize the graphics layer, selection set, and search widget
@@ -231,11 +237,8 @@ export class MapSelectTools {
231
237
  */
232
238
  _initSearchWidget() {
233
239
  if (this.mapView && this._searchElement) {
234
- const searchOptions = {
235
- view: this.mapView,
236
- container: this._searchElement,
237
- searchTerm: this._searchTerm
238
- };
240
+ const searchConfiguration = this._getSearchConfig(this.searchConfiguration, this.mapView);
241
+ const searchOptions = Object.assign({ view: this.mapView, container: this._searchElement, searchTerm: this._searchTerm }, searchConfiguration);
239
242
  this._searchWidget = new this.Search(searchOptions);
240
243
  this._searchWidget.on("search-clear", () => {
241
244
  void this._clearResults(false);
@@ -250,6 +253,45 @@ export class MapSelectTools {
250
253
  });
251
254
  }
252
255
  }
256
+ /**
257
+ * Initialize the search widget based on user defined configuration
258
+ *
259
+ * @param searchConfiguration search configuration defined by the user
260
+ * @param view the current map view
261
+ *
262
+ * @protected
263
+ */
264
+ _getSearchConfig(searchConfiguration, view) {
265
+ var _a;
266
+ const sources = searchConfiguration === null || searchConfiguration === void 0 ? void 0 : searchConfiguration.sources;
267
+ if (sources) {
268
+ sources.forEach(source => {
269
+ var _a, _b, _c;
270
+ const isLayerSource = source.hasOwnProperty("layer");
271
+ if (isLayerSource) {
272
+ const layerSource = source;
273
+ const layerFromMap = ((_a = layerSource.layer) === null || _a === void 0 ? void 0 : _a.id)
274
+ ? view.map.findLayerById(layerSource.layer.id)
275
+ : null;
276
+ if (layerFromMap) {
277
+ layerSource.layer = layerFromMap;
278
+ }
279
+ else if ((_b = layerSource === null || layerSource === void 0 ? void 0 : layerSource.layer) === null || _b === void 0 ? void 0 : _b.url) {
280
+ layerSource.layer = new this.FeatureLayer((_c = layerSource === null || layerSource === void 0 ? void 0 : layerSource.layer) === null || _c === void 0 ? void 0 : _c.url);
281
+ }
282
+ }
283
+ });
284
+ }
285
+ (_a = searchConfiguration === null || searchConfiguration === void 0 ? void 0 : searchConfiguration.sources) === null || _a === void 0 ? void 0 : _a.forEach(source => {
286
+ const isLocatorSource = source.hasOwnProperty("locator");
287
+ if (isLocatorSource) {
288
+ const locatorSource = source;
289
+ locatorSource.url = locatorSource.url;
290
+ delete locatorSource.url;
291
+ }
292
+ });
293
+ return searchConfiguration;
294
+ }
253
295
  /**
254
296
  * Initialize the graphics layer used to store any buffer grapghics
255
297
  *
@@ -438,6 +480,61 @@ export class MapSelectTools {
438
480
  }
439
481
  static get properties() {
440
482
  return {
483
+ "enabledLayerIds": {
484
+ "type": "unknown",
485
+ "mutable": false,
486
+ "complexType": {
487
+ "original": "string[]",
488
+ "resolved": "string[]",
489
+ "references": {}
490
+ },
491
+ "required": false,
492
+ "optional": false,
493
+ "docs": {
494
+ "tags": [],
495
+ "text": "string[]: Optional list of enabled layer ids\r\n If empty all layers will be available"
496
+ },
497
+ "defaultValue": "[]"
498
+ },
499
+ "defaultBufferDistance": {
500
+ "type": "number",
501
+ "mutable": false,
502
+ "complexType": {
503
+ "original": "number",
504
+ "resolved": "number",
505
+ "references": {}
506
+ },
507
+ "required": false,
508
+ "optional": false,
509
+ "docs": {
510
+ "tags": [],
511
+ "text": "number: The default value to show for the buffer distance"
512
+ },
513
+ "attribute": "default-buffer-distance",
514
+ "reflect": false
515
+ },
516
+ "defaultBufferUnit": {
517
+ "type": "string",
518
+ "mutable": false,
519
+ "complexType": {
520
+ "original": "DistanceUnit",
521
+ "resolved": "\"feet\" | \"kilometers\" | \"meters\" | \"miles\"",
522
+ "references": {
523
+ "DistanceUnit": {
524
+ "location": "import",
525
+ "path": "../../utils/interfaces"
526
+ }
527
+ }
528
+ },
529
+ "required": false,
530
+ "optional": false,
531
+ "docs": {
532
+ "tags": [],
533
+ "text": "number: The default value to show for the buffer unit"
534
+ },
535
+ "attribute": "default-buffer-unit",
536
+ "reflect": false
537
+ },
441
538
  "geometries": {
442
539
  "type": "unknown",
443
540
  "mutable": false,
@@ -494,6 +591,26 @@ export class MapSelectTools {
494
591
  "text": "esri/views/View: https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html"
495
592
  }
496
593
  },
594
+ "searchConfiguration": {
595
+ "type": "unknown",
596
+ "mutable": false,
597
+ "complexType": {
598
+ "original": "ISearchConfiguration",
599
+ "resolved": "ISearchConfiguration",
600
+ "references": {
601
+ "ISearchConfiguration": {
602
+ "location": "import",
603
+ "path": "../../utils/interfaces"
604
+ }
605
+ }
606
+ },
607
+ "required": false,
608
+ "optional": false,
609
+ "docs": {
610
+ "tags": [],
611
+ "text": "ISearchConfiguration: Configuration details for the Search widget"
612
+ }
613
+ },
497
614
  "selectionSet": {
498
615
  "type": "unknown",
499
616
  "mutable": false,
@@ -26,6 +26,7 @@ import { exportCSV } from "../../utils/csvUtils";
26
26
  export class PdfDownload {
27
27
  constructor() {
28
28
  this.disabled = true;
29
+ this.enabledSizeValues = [];
29
30
  this.layerView = undefined;
30
31
  this._translations = undefined;
31
32
  }
@@ -56,8 +57,8 @@ export class PdfDownload {
56
57
  * @param removeDuplicates When true a single label is generated when multiple featues have a shared address value
57
58
  * @returns Promise resolving when function is done
58
59
  */
59
- async downloadCSV(ids, removeDuplicates) {
60
- return this._downloadCSV(ids, removeDuplicates);
60
+ async downloadCSV(ids, removeDuplicates, addColumnTitle) {
61
+ return this._downloadCSV(ids, removeDuplicates, addColumnTitle);
61
62
  }
62
63
  //--------------------------------------------------------------------------
63
64
  //
@@ -100,9 +101,13 @@ export class PdfDownload {
100
101
  const _b = parseInt(b.descriptionPDF.labelsPerPageDisplay, 10);
101
102
  return _a < _b ? -1 : _a > _b ? 1 : 0;
102
103
  });
103
- return sortedPdfIndo.map((l) => {
104
- return (h("calcite-option", { value: l }, this._getLabelSizeText(l)));
105
- });
104
+ return sortedPdfIndo.reduce((prev, cur) => {
105
+ if (this.enabledSizeValues.length === 0 ||
106
+ this.enabledSizeValues.indexOf(parseInt(cur.descriptionPDF.labelsPerPageDisplay, 10)) > -1) {
107
+ prev.push((h("calcite-option", { value: cur }, this._getLabelSizeText(cur))));
108
+ }
109
+ return prev;
110
+ }, []);
106
111
  }
107
112
  /**
108
113
  * Downloads pdf of mailing labels for the provided list of ids
@@ -127,10 +132,10 @@ export class PdfDownload {
127
132
  * @returns Promise that will resolve when the download is complete
128
133
  * @protected
129
134
  */
130
- async _downloadCSV(ids, removeDuplicates) {
135
+ async _downloadCSV(ids, removeDuplicates, addColumnTitle) {
131
136
  // TODO this will be leveraged when we do the real implementation of this
132
137
  console.log(removeDuplicates);
133
- await exportCSV(this.layerView, ids);
138
+ await exportCSV(this.layerView, ids, addColumnTitle);
134
139
  }
135
140
  /**
136
141
  * Gets the formatted pdf export size text
@@ -186,6 +191,22 @@ export class PdfDownload {
186
191
  "reflect": false,
187
192
  "defaultValue": "true"
188
193
  },
194
+ "enabledSizeValues": {
195
+ "type": "unknown",
196
+ "mutable": false,
197
+ "complexType": {
198
+ "original": "number[]",
199
+ "resolved": "number[]",
200
+ "references": {}
201
+ },
202
+ "required": false,
203
+ "optional": false,
204
+ "docs": {
205
+ "tags": [],
206
+ "text": "string[]: Optional list of enabled size values for PDF export\r\n If empty all sizes will be enabled"
207
+ },
208
+ "defaultValue": "[]"
209
+ },
189
210
  "layerView": {
190
211
  "type": "unknown",
191
212
  "mutable": false,
@@ -253,7 +274,7 @@ export class PdfDownload {
253
274
  },
254
275
  "downloadCSV": {
255
276
  "complexType": {
256
- "signature": "(ids: number[], removeDuplicates: boolean) => Promise<void>",
277
+ "signature": "(ids: number[], removeDuplicates: boolean, addColumnTitle: boolean) => Promise<void>",
257
278
  "parameters": [{
258
279
  "tags": [{
259
280
  "name": "param",
@@ -266,6 +287,9 @@ export class PdfDownload {
266
287
  "text": "removeDuplicates When true a single label is generated when multiple featues have a shared address value"
267
288
  }],
268
289
  "text": "When true a single label is generated when multiple featues have a shared address value"
290
+ }, {
291
+ "tags": [],
292
+ "text": ""
269
293
  }],
270
294
  "references": {
271
295
  "Promise": {