@esri/solutions-components 0.7.30 → 0.7.31

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 (60) hide show
  1. package/dist/assets/t9n/crowdsource-reporter/resources.json +7 -5
  2. package/dist/assets/t9n/crowdsource-reporter/resources_en.json +7 -5
  3. package/dist/assets/t9n/feature-list/resources.json +1 -1
  4. package/dist/assets/t9n/feature-list/resources_en.json +1 -1
  5. package/dist/assets/t9n/layer-list/resources.json +1 -1
  6. package/dist/assets/t9n/layer-list/resources_en.json +1 -1
  7. package/dist/cjs/{calcite-flow_4.cjs.entry.js → calcite-flow_5.cjs.entry.js} +235 -19
  8. package/dist/cjs/card-manager_3.cjs.entry.js +1 -1
  9. package/dist/cjs/crowdsource-reporter.cjs.entry.js +221 -32
  10. package/dist/cjs/{downloadUtils-83c6d3c3.js → downloadUtils-10e0de31.js} +2 -2
  11. package/dist/cjs/{index.es-bd1a93b2.js → index.es-72dc7ab9.js} +1 -1
  12. package/dist/cjs/loader.cjs.js +1 -1
  13. package/dist/cjs/map-select-tools_3.cjs.entry.js +1 -1
  14. package/dist/cjs/public-notification.cjs.entry.js +1 -1
  15. package/dist/cjs/solutions-components.cjs.js +1 -1
  16. package/dist/collection/collection-manifest.json +1 -0
  17. package/dist/collection/components/create-feature/create-feature.css +23 -0
  18. package/dist/collection/components/create-feature/create-feature.js +361 -0
  19. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.css +10 -1
  20. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +260 -33
  21. package/dist/collection/components/feature-list/feature-list.js +1 -0
  22. package/dist/collection/components/layer-list/layer-list.js +60 -16
  23. package/dist/collection/demos/crowdsource-reporter.html +26 -11
  24. package/dist/collection/utils/downloadUtils.js +1 -1
  25. package/dist/collection/utils/downloadUtils.ts +1 -1
  26. package/dist/components/create-feature.d.ts +11 -0
  27. package/dist/components/create-feature.js +11 -0
  28. package/dist/components/create-feature2.js +226 -0
  29. package/dist/components/crowdsource-reporter.js +297 -90
  30. package/dist/components/downloadUtils.js +1 -1
  31. package/dist/components/feature-list2.js +1 -0
  32. package/dist/components/layer-list2.js +38 -17
  33. package/dist/esm/{calcite-flow_4.entry.js → calcite-flow_5.entry.js} +235 -20
  34. package/dist/esm/card-manager_3.entry.js +1 -1
  35. package/dist/esm/crowdsource-reporter.entry.js +222 -33
  36. package/dist/esm/{downloadUtils-d070a467.js → downloadUtils-d297078f.js} +2 -2
  37. package/dist/esm/{index.es-d48535a2.js → index.es-3b4fa9d0.js} +1 -1
  38. package/dist/esm/loader.js +1 -1
  39. package/dist/esm/map-select-tools_3.entry.js +1 -1
  40. package/dist/esm/public-notification.entry.js +1 -1
  41. package/dist/esm/solutions-components.js +1 -1
  42. package/dist/solutions-components/demos/crowdsource-reporter.html +26 -11
  43. package/dist/solutions-components/{p-f120ff40.entry.js → p-09ec8c8f.entry.js} +1 -1
  44. package/dist/solutions-components/{p-55b835a1.js → p-103c5318.js} +2 -2
  45. package/dist/solutions-components/{p-309cdea1.entry.js → p-57d49d15.entry.js} +1 -1
  46. package/dist/solutions-components/{p-b913a4fd.js → p-8ec25bf4.js} +1 -1
  47. package/dist/solutions-components/{p-f22ff57e.entry.js → p-921f21d5.entry.js} +1 -1
  48. package/dist/solutions-components/p-b4e2cac4.entry.js +17 -0
  49. package/dist/solutions-components/p-bb6562ab.entry.js +6 -0
  50. package/dist/solutions-components/solutions-components.esm.js +1 -1
  51. package/dist/solutions-components/utils/downloadUtils.ts +1 -1
  52. package/dist/types/components/create-feature/create-feature.d.ts +107 -0
  53. package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +132 -12
  54. package/dist/types/components/feature-list/feature-list.d.ts +1 -0
  55. package/dist/types/components/layer-list/layer-list.d.ts +6 -0
  56. package/dist/types/components.d.ts +89 -0
  57. package/dist/types/preact.d.ts +6 -0
  58. package/package.json +1 -1
  59. package/dist/solutions-components/p-2f162664.entry.js +0 -6
  60. package/dist/solutions-components/p-94ee3ef7.entry.js +0 -17
@@ -4,6 +4,7 @@
4
4
  "components/basemap-gallery/basemap-gallery.js",
5
5
  "components/buffer-tools/buffer-tools.js",
6
6
  "components/card-manager/card-manager.js",
7
+ "components/create-feature/create-feature.js",
7
8
  "components/crowdsource-manager/crowdsource-manager.js",
8
9
  "components/crowdsource-reporter/crowdsource-reporter.js",
9
10
  "components/deduct-calculator/deduct-calculator.js",
@@ -0,0 +1,23 @@
1
+ /** @license
2
+ * Copyright 2022 Esri
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ :host {
18
+ display: block;
19
+ }
20
+
21
+ .esri-editor__panel-toolbar {
22
+ display: none !important;
23
+ }
@@ -0,0 +1,361 @@
1
+ /*!
2
+ * Copyright 2022 Esri
3
+ * Licensed under the Apache License, Version 2.0
4
+ * http://www.apache.org/licenses/LICENSE-2.0
5
+ */
6
+ /** @license
7
+ * Copyright 2022 Esri
8
+ *
9
+ * Licensed under the Apache License, Version 2.0 (the "License");
10
+ * you may not use this file except in compliance with the License.
11
+ * You may obtain a copy of the License at
12
+ *
13
+ * http://www.apache.org/licenses/LICENSE-2.0
14
+ *
15
+ * Unless required by applicable law or agreed to in writing, software
16
+ * distributed under the License is distributed on an "AS IS" BASIS,
17
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ * See the License for the specific language governing permissions and
19
+ * limitations under the License.
20
+ */
21
+ import { Host, h } from "@stencil/core";
22
+ import { loadModules } from "../../utils/loadModules";
23
+ import { getLayerOrTable } from "../../utils/mapViewUtils";
24
+ export class CreateFeature {
25
+ constructor() {
26
+ this.mapView = undefined;
27
+ this.selectedLayerId = undefined;
28
+ }
29
+ //--------------------------------------------------------------------------
30
+ //
31
+ // Watch handlers
32
+ //
33
+ //--------------------------------------------------------------------------
34
+ /**
35
+ * Called each time the mapView prop is changed.
36
+ */
37
+ async mapViewWatchHandler() {
38
+ await this.mapView.when(async () => {
39
+ await this.init();
40
+ });
41
+ }
42
+ //--------------------------------------------------------------------------
43
+ //
44
+ // Methods (public)
45
+ //
46
+ //--------------------------------------------------------------------------
47
+ /**
48
+ * Destroy the Editor widget instance
49
+ * @returns Promise that resolves when the operation is complete
50
+ */
51
+ async close() {
52
+ if (this._editor) {
53
+ this._editor.destroy();
54
+ }
55
+ }
56
+ /**
57
+ * Submit the created feature
58
+ * @returns Promise that resolves when the operation is complete
59
+ */
60
+ async submit() {
61
+ if (this._editor) {
62
+ this._editor.viewModel.featureFormViewModel.submit();
63
+ }
64
+ }
65
+ //--------------------------------------------------------------------------
66
+ //
67
+ // Functions (lifecycle)
68
+ //
69
+ //--------------------------------------------------------------------------
70
+ /**
71
+ * StencilJS: Called once just after the component is first connected to the DOM.
72
+ * @returns Promise when complete
73
+ */
74
+ async componentWillLoad() {
75
+ await this.initModules();
76
+ }
77
+ /**
78
+ * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
79
+ */
80
+ async componentDidLoad() {
81
+ await this.init();
82
+ }
83
+ /**
84
+ * Renders the component.
85
+ */
86
+ render() {
87
+ return (h(Host, { id: "feature-form" }));
88
+ }
89
+ //--------------------------------------------------------------------------
90
+ //
91
+ // Functions (protected)
92
+ //
93
+ //--------------------------------------------------------------------------
94
+ /**
95
+ * Init Editor widget and starts the create workflow
96
+ */
97
+ async init() {
98
+ if (this.mapView) {
99
+ if (this.mapView && this.selectedLayerId) {
100
+ await getLayerOrTable(this.mapView, this.selectedLayerId);
101
+ await this.createEditorWidget();
102
+ await this.startCreate();
103
+ this._editor.viewModel.featureFormViewModel.on('submit', this.submitted.bind(this));
104
+ setTimeout(() => {
105
+ var _a, _b;
106
+ this.el.querySelector('.esri-editor').querySelectorAll('calcite-flow-item')[1].shadowRoot.querySelector('calcite-panel').shadowRoot.querySelector('article').querySelector('header').setAttribute('style', 'display: none');
107
+ (_b = (_a = this.el.querySelector('.esri-editor').querySelectorAll('calcite-flow-item')[1].shadowRoot.querySelector('calcite-panel').shadowRoot.querySelector('article')) === null || _a === void 0 ? void 0 : _a.querySelector('footer')) === null || _b === void 0 ? void 0 : _b.setAttribute('style', 'display: none');
108
+ }, 700);
109
+ }
110
+ }
111
+ }
112
+ /**
113
+ * Load esri javascript api modules
114
+ * @returns Promise resolving when function is done
115
+ * @protected
116
+ */
117
+ async initModules() {
118
+ const [Editor] = await loadModules([
119
+ "esri/widgets/Editor"
120
+ ]);
121
+ this.Editor = Editor;
122
+ }
123
+ /**
124
+ * Display editor widget to create the new feature
125
+ * @protected
126
+ */
127
+ async createEditorWidget() {
128
+ if (this._editor) {
129
+ this._editor.destroy();
130
+ }
131
+ const container = document.createElement("div");
132
+ const layer = await getLayerOrTable(this.mapView, this.selectedLayerId);
133
+ const selectedLayer = {
134
+ layer: layer
135
+ };
136
+ this._editor = new this.Editor({
137
+ allowedWorkflows: "create-features",
138
+ view: this.mapView,
139
+ layerInfos: [selectedLayer],
140
+ visibleElements: {
141
+ snappingControls: false,
142
+ snappingControlsElements: {
143
+ featureEnabledToggle: false,
144
+ layerList: false,
145
+ enabledToggle: false
146
+ }
147
+ },
148
+ container,
149
+ });
150
+ this.el.appendChild(container);
151
+ }
152
+ /**
153
+ * Start creating the feature
154
+ * @protected
155
+ */
156
+ async startCreate() {
157
+ var _a, _b;
158
+ const layer = await getLayerOrTable(this.mapView, this.selectedLayerId);
159
+ if (layer) {
160
+ let template = layer.templates && layer.templates.length ? layer.templates[0] : {};
161
+ if (((_a = layer.sourceJSON) === null || _a === void 0 ? void 0 : _a.types.length) && ((_b = layer.sourceJSON.types[0].templates) === null || _b === void 0 ? void 0 : _b.length)) {
162
+ template = layer.sourceJSON.types[0].templates[0];
163
+ }
164
+ const creationInfo = {
165
+ layer: layer,
166
+ template: template
167
+ };
168
+ await this._editor.startCreateFeaturesWorkflowAtFeatureCreation(creationInfo);
169
+ this._editor.viewModel.sketchViewModel.on("create", (evt) => {
170
+ if (evt.state === "complete") {
171
+ this.drawComplete.emit();
172
+ }
173
+ });
174
+ }
175
+ }
176
+ /**
177
+ * On creation of feature emit the event that the feature is created
178
+ * @param evt feature submit event
179
+ * @protected
180
+ */
181
+ async submitted(evt) {
182
+ var _a;
183
+ if (evt.invalid.length) {
184
+ return;
185
+ }
186
+ if (evt.valid.length) {
187
+ try {
188
+ await this._editor.activeWorkflow.commit();
189
+ //throw errors if any failures
190
+ if ((_a = this._editor.viewModel.failures) === null || _a === void 0 ? void 0 : _a.length) {
191
+ this._editor.viewModel.failures.some((failure) => {
192
+ if (failure.error) {
193
+ throw (failure.error);
194
+ }
195
+ });
196
+ }
197
+ }
198
+ catch (e) {
199
+ this.fail.emit(e);
200
+ return;
201
+ }
202
+ this.success.emit();
203
+ }
204
+ }
205
+ static get is() { return "create-feature"; }
206
+ static get originalStyleUrls() {
207
+ return {
208
+ "$": ["create-feature.css"]
209
+ };
210
+ }
211
+ static get styleUrls() {
212
+ return {
213
+ "$": ["create-feature.css"]
214
+ };
215
+ }
216
+ static get properties() {
217
+ return {
218
+ "mapView": {
219
+ "type": "unknown",
220
+ "mutable": false,
221
+ "complexType": {
222
+ "original": "__esri.MapView",
223
+ "resolved": "MapView",
224
+ "references": {
225
+ "___esri": {
226
+ "location": "global",
227
+ "id": "global::___esri"
228
+ }
229
+ }
230
+ },
231
+ "required": false,
232
+ "optional": false,
233
+ "docs": {
234
+ "tags": [],
235
+ "text": "esri/views/MapView: https://developers.arcgis.com/javascript/latest/api-reference/esri-views-MapView.html"
236
+ }
237
+ },
238
+ "selectedLayerId": {
239
+ "type": "string",
240
+ "mutable": false,
241
+ "complexType": {
242
+ "original": "string",
243
+ "resolved": "string",
244
+ "references": {}
245
+ },
246
+ "required": false,
247
+ "optional": false,
248
+ "docs": {
249
+ "tags": [],
250
+ "text": "string: Layer id of the feature layer in which the new feature is to be created"
251
+ },
252
+ "attribute": "selected-layer-id",
253
+ "reflect": false
254
+ }
255
+ };
256
+ }
257
+ static get events() {
258
+ return [{
259
+ "method": "success",
260
+ "name": "success",
261
+ "bubbles": true,
262
+ "cancelable": true,
263
+ "composed": true,
264
+ "docs": {
265
+ "tags": [],
266
+ "text": "Emitted on demand when the feature is created successfully"
267
+ },
268
+ "complexType": {
269
+ "original": "void",
270
+ "resolved": "void",
271
+ "references": {}
272
+ }
273
+ }, {
274
+ "method": "fail",
275
+ "name": "fail",
276
+ "bubbles": true,
277
+ "cancelable": true,
278
+ "composed": true,
279
+ "docs": {
280
+ "tags": [],
281
+ "text": "Emitted on demand when the feature creation is failed"
282
+ },
283
+ "complexType": {
284
+ "original": "Error",
285
+ "resolved": "Error",
286
+ "references": {
287
+ "Error": {
288
+ "location": "global",
289
+ "id": "global::Error"
290
+ }
291
+ }
292
+ }
293
+ }, {
294
+ "method": "drawComplete",
295
+ "name": "drawComplete",
296
+ "bubbles": true,
297
+ "cancelable": true,
298
+ "composed": true,
299
+ "docs": {
300
+ "tags": [],
301
+ "text": "Emitted on demand when drawing is completed"
302
+ },
303
+ "complexType": {
304
+ "original": "void",
305
+ "resolved": "void",
306
+ "references": {}
307
+ }
308
+ }];
309
+ }
310
+ static get methods() {
311
+ return {
312
+ "close": {
313
+ "complexType": {
314
+ "signature": "() => Promise<void>",
315
+ "parameters": [],
316
+ "references": {
317
+ "Promise": {
318
+ "location": "global",
319
+ "id": "global::Promise"
320
+ }
321
+ },
322
+ "return": "Promise<void>"
323
+ },
324
+ "docs": {
325
+ "text": "Destroy the Editor widget instance",
326
+ "tags": [{
327
+ "name": "returns",
328
+ "text": "Promise that resolves when the operation is complete"
329
+ }]
330
+ }
331
+ },
332
+ "submit": {
333
+ "complexType": {
334
+ "signature": "() => Promise<void>",
335
+ "parameters": [],
336
+ "references": {
337
+ "Promise": {
338
+ "location": "global",
339
+ "id": "global::Promise"
340
+ }
341
+ },
342
+ "return": "Promise<void>"
343
+ },
344
+ "docs": {
345
+ "text": "Submit the created feature",
346
+ "tags": [{
347
+ "name": "returns",
348
+ "text": "Promise that resolves when the operation is complete"
349
+ }]
350
+ }
351
+ }
352
+ };
353
+ }
354
+ static get elementRef() { return "el"; }
355
+ static get watchers() {
356
+ return [{
357
+ "propName": "mapView",
358
+ "methodName": "mapViewWatchHandler"
359
+ }];
360
+ }
361
+ }
@@ -44,6 +44,15 @@
44
44
  border: 1px solid var(--calcite-color-border-3);
45
45
  }
46
46
 
47
- .error-msg{
47
+ .notice-msg{
48
48
  padding: 10px;
49
+ width: calc(100% - 20px);
50
+ }
51
+
52
+ .footer-top-button {
53
+ padding-bottom: 7px;
54
+ }
55
+
56
+ .footer-button {
57
+ height: 35px;
49
58
  }