@esri/solutions-components 0.7.30 → 0.7.32

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) 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} +286 -19
  8. package/dist/cjs/card-manager_3.cjs.entry.js +1 -1
  9. package/dist/cjs/crowdsource-reporter.cjs.entry.js +248 -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 +50 -0
  18. package/dist/collection/components/create-feature/create-feature.js +444 -0
  19. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.css +10 -1
  20. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +287 -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/create-feature.html +90 -0
  24. package/dist/collection/demos/crowdsource-reporter.html +26 -11
  25. package/dist/collection/utils/downloadUtils.js +1 -1
  26. package/dist/collection/utils/downloadUtils.ts +1 -1
  27. package/dist/components/create-feature.d.ts +11 -0
  28. package/dist/components/create-feature.js +11 -0
  29. package/dist/components/create-feature2.js +278 -0
  30. package/dist/components/crowdsource-reporter.js +324 -90
  31. package/dist/components/downloadUtils.js +1 -1
  32. package/dist/components/feature-list2.js +1 -0
  33. package/dist/components/layer-list2.js +38 -17
  34. package/dist/esm/{calcite-flow_4.entry.js → calcite-flow_5.entry.js} +286 -20
  35. package/dist/esm/card-manager_3.entry.js +1 -1
  36. package/dist/esm/crowdsource-reporter.entry.js +249 -33
  37. package/dist/esm/{downloadUtils-d070a467.js → downloadUtils-d297078f.js} +2 -2
  38. package/dist/esm/{index.es-d48535a2.js → index.es-3b4fa9d0.js} +1 -1
  39. package/dist/esm/loader.js +1 -1
  40. package/dist/esm/map-select-tools_3.entry.js +1 -1
  41. package/dist/esm/public-notification.entry.js +1 -1
  42. package/dist/esm/solutions-components.js +1 -1
  43. package/dist/solutions-components/demos/create-feature.html +90 -0
  44. package/dist/solutions-components/demos/crowdsource-reporter.html +26 -11
  45. package/dist/solutions-components/{p-f120ff40.entry.js → p-09ec8c8f.entry.js} +1 -1
  46. package/dist/solutions-components/{p-55b835a1.js → p-103c5318.js} +2 -2
  47. package/dist/solutions-components/{p-309cdea1.entry.js → p-57d49d15.entry.js} +1 -1
  48. package/dist/solutions-components/{p-b913a4fd.js → p-8ec25bf4.js} +1 -1
  49. package/dist/solutions-components/{p-f22ff57e.entry.js → p-921f21d5.entry.js} +1 -1
  50. package/dist/solutions-components/p-d5263cb9.entry.js +17 -0
  51. package/dist/solutions-components/p-ea17cefb.entry.js +6 -0
  52. package/dist/solutions-components/solutions-components.esm.js +1 -1
  53. package/dist/solutions-components/utils/downloadUtils.ts +1 -1
  54. package/dist/types/components/create-feature/create-feature.d.ts +125 -0
  55. package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +146 -12
  56. package/dist/types/components/feature-list/feature-list.d.ts +1 -0
  57. package/dist/types/components/layer-list/layer-list.d.ts +6 -0
  58. package/dist/types/components.d.ts +102 -0
  59. package/dist/types/preact.d.ts +7 -0
  60. package/package.json +1 -1
  61. package/dist/solutions-components/p-2f162664.entry.js +0 -6
  62. package/dist/solutions-components/p-94ee3ef7.entry.js +0 -17
@@ -2859,7 +2859,7 @@ function _prepareAttributeValue(attributeValue, attributeType, attributeDomain,
2859
2859
  if (attributeDomain && attributeDomain.type === "coded-value") {
2860
2860
  // "coded-value" domain field
2861
2861
  const value = attributeDomain.getName(attributeValue);
2862
- return value.toString();
2862
+ return value === null || value === void 0 ? void 0 : value.toString();
2863
2863
  }
2864
2864
  else {
2865
2865
  // Non-domain field or unsupported domain type
@@ -91,6 +91,7 @@ const FeatureList = /*@__PURE__*/ proxyCustomElement(class FeatureList extends H
91
91
  //--------------------------------------------------------------------------
92
92
  /**
93
93
  * Initialize the features list using the selected layer
94
+ * @protected
94
95
  */
95
96
  async initializeFeatureItems() {
96
97
  if (this._selectedLayer) {
@@ -39,6 +39,23 @@ const LayerList = /*@__PURE__*/ proxyCustomElement(class LayerList extends HTMLE
39
39
  }
40
40
  //--------------------------------------------------------------------------
41
41
  //
42
+ // Watch handlers
43
+ //
44
+ //--------------------------------------------------------------------------
45
+ //--------------------------------------------------------------------------
46
+ //
47
+ // Methods (public)
48
+ //
49
+ //--------------------------------------------------------------------------
50
+ /**
51
+ * Refresh the layer list which will fetch the latest layer count and update the list
52
+ * @returns Promise that resolves when the operation is complete
53
+ */
54
+ async refresh() {
55
+ await this.setLayers();
56
+ }
57
+ //--------------------------------------------------------------------------
58
+ //
42
59
  // Functions (lifecycle)
43
60
  //
44
61
  //--------------------------------------------------------------------------
@@ -63,7 +80,7 @@ const LayerList = /*@__PURE__*/ proxyCustomElement(class LayerList extends HTMLE
63
80
  render() {
64
81
  return (h(Fragment, null, this._isLoading && h("calcite-loader", { scale: "m" }), !this._isLoading && this.mapView && this._noLayersToDisplay &&
65
82
  h("calcite-notice", { class: "error-msg", icon: "layers-reference", kind: "danger", open: true }, h("div", { slot: "title" }, this._translations.error), h("div", { slot: "message" }, this.noLayerErrorMsg ? this.noLayerErrorMsg : this._translations.noLayerToDisplayErrorMsg)), !this._isLoading && this.mapView &&
66
- h("calcite-list", { "selection-appearance": "border", "selection-mode": this.showNextIcon ? "none" : "single" }, this.renderLayerList())));
83
+ h("calcite-list", { "selection-appearance": "border", "selection-mode": this.showNextIcon ? "none" : "single-persist" }, this.renderLayerList())));
67
84
  }
68
85
  //--------------------------------------------------------------------------
69
86
  //
@@ -90,21 +107,24 @@ const LayerList = /*@__PURE__*/ proxyCustomElement(class LayerList extends HTMLE
90
107
  this._layerItemsHash = await getMapLayerHash(this.mapView, true);
91
108
  const allMapLayers = await getAllLayers(this.mapView);
92
109
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
93
- this.showFeatureCount && allMapLayers.forEach(async (eachLayer) => {
110
+ allMapLayers.forEach(async (eachLayer) => {
94
111
  var _a, _b;
95
112
  //TODO: checking editable condition could be configurable
96
- if ((eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.type) === "feature" && (eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.editingEnabled) && ((_b = (_a = eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.capabilities) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.supportsUpdate)) {
97
- const q = eachLayer.createQuery();
98
- const result = eachLayer.queryFeatureCount(q);
99
- def.push(result);
100
- void result.then(async (resCount) => {
101
- const formattedCount = !isNaN(resCount) ? await formatNumber(resCount, {
102
- places: 0,
103
- api: 4,
104
- type: "decimal"
105
- }) : "";
106
- this._layerItemsHash[eachLayer.id].formattedFeatureCount = formattedCount;
107
- });
113
+ if ((eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.type) === "feature" && (eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.editingEnabled) && ((_b = (_a = eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.capabilities) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.supportsAdd)) {
114
+ this._layerItemsHash[eachLayer.id].supportsAdd = true;
115
+ if (this.showFeatureCount) {
116
+ const q = eachLayer.createQuery();
117
+ const result = eachLayer.queryFeatureCount(q);
118
+ def.push(result);
119
+ void result.then(async (resCount) => {
120
+ const formattedCount = !isNaN(resCount) ? await formatNumber(resCount, {
121
+ places: 0,
122
+ api: 4,
123
+ type: "decimal"
124
+ }) : "";
125
+ this._layerItemsHash[eachLayer.id].formattedFeatureCount = formattedCount;
126
+ });
127
+ }
108
128
  }
109
129
  });
110
130
  await Promise.all(def).then(() => {
@@ -132,9 +152,9 @@ const LayerList = /*@__PURE__*/ proxyCustomElement(class LayerList extends HTMLE
132
152
  var _a;
133
153
  const configuredLayers = ((_a = this.layers) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.layers : [];
134
154
  return Object.keys(hash).reduce((prev, cur) => {
135
- let showLayer = hash[cur].supportsUpdate;
155
+ let showLayer = hash[cur].supportsAdd;
136
156
  if ((configuredLayers === null || configuredLayers === void 0 ? void 0 : configuredLayers.length) > 0) {
137
- showLayer = configuredLayers.indexOf(cur) > -1 ? hash[cur].supportsUpdate : false;
157
+ showLayer = configuredLayers.indexOf(cur) > -1 ? hash[cur].supportsAdd : false;
138
158
  }
139
159
  if (showLayer) {
140
160
  prev.push(cur);
@@ -193,7 +213,8 @@ const LayerList = /*@__PURE__*/ proxyCustomElement(class LayerList extends HTMLE
193
213
  "_noLayersToDisplay": [32],
194
214
  "_mapLayerIds": [32],
195
215
  "_isLoading": [32],
196
- "_translations": [32]
216
+ "_translations": [32],
217
+ "refresh": [64]
197
218
  }]);
198
219
  function defineCustomElement() {
199
220
  if (typeof customElements === "undefined") {
@@ -11,16 +11,16 @@ import { c as connectInteractive, u as updateHostInteraction, d as disconnectInt
11
11
  import { c as connectLocalized, d as disconnectLocalized } from './locale-6107ef11.js';
12
12
  import { c as connectMessages, s as setUpMessages, d as disconnectMessages, u as updateMessages } from './t9n-f16911e7.js';
13
13
  import { S as SLOTS$1 } from './resources-649a0f91.js';
14
+ import { l as loadModules, g as getLocaleComponentStrings, f as formatNumber } from './locale-731e75a8.js';
15
+ import { a as getAllLayers, g as getLayerOrTable, c as getFeatureLayerView, h as highlightFeatures, d as getMapLayerHash } from './mapViewUtils-cf05e880.js';
14
16
  import { P as PopupUtils } from './popupUtils-d75edf93.js';
15
- import { g as getLayerOrTable, c as getFeatureLayerView, h as highlightFeatures, d as getMapLayerHash, a as getAllLayers } from './mapViewUtils-cf05e880.js';
16
- import { g as getLocaleComponentStrings, f as formatNumber } from './locale-731e75a8.js';
17
17
  import './guid-36c6c6a5.js';
18
18
  import './resources-cdc36705.js';
19
19
  import './browser-b4c16201.js';
20
20
  import './key-af303047.js';
21
- import './interfaces-586e863c.js';
22
21
  import './esri-loader-eda07632.js';
23
22
  import './_commonjsHelpers-d5f9d613.js';
23
+ import './interfaces-586e863c.js';
24
24
 
25
25
  /*!
26
26
  * All material copyright ESRI, All Rights Reserved, unless otherwise specified.
@@ -335,6 +335,251 @@ const FlowItem = class {
335
335
  };
336
336
  FlowItem.style = flowItemCss;
337
337
 
338
+ const createFeatureCss = ":host{display:block}.esri-editor__panel-toolbar{display:none !important}.esri-editor__update-actions{display:none !important}.esri-editor__panel-content{padding-block:0px !important}.esri-editor .esri-item-list__group__header{display:none !important}.esri-editor__panel-content__section .esri-widget__heading{display:none !important}.esri-editor .esri-item-list__filter-container--sticky{padding-block:0px !important;padding-inline:10px !important}";
339
+
340
+ const CreateFeature = class {
341
+ constructor(hostRef) {
342
+ registerInstance(this, hostRef);
343
+ this.success = createEvent(this, "success", 7);
344
+ this.fail = createEvent(this, "fail", 7);
345
+ this.drawComplete = createEvent(this, "drawComplete", 7);
346
+ this.editingAttachment = createEvent(this, "editingAttachment", 7);
347
+ this.mapView = undefined;
348
+ this.selectedLayerId = undefined;
349
+ this.customizeSubmit = false;
350
+ }
351
+ //--------------------------------------------------------------------------
352
+ //
353
+ // Watch handlers
354
+ //
355
+ //--------------------------------------------------------------------------
356
+ /**
357
+ * Called each time the mapView prop is changed.
358
+ */
359
+ async mapViewWatchHandler() {
360
+ await this.mapView.when(async () => {
361
+ await this.init();
362
+ });
363
+ }
364
+ //--------------------------------------------------------------------------
365
+ //
366
+ // Methods (public)
367
+ //
368
+ //--------------------------------------------------------------------------
369
+ /**
370
+ * Destroy the Editor widget instance
371
+ * @returns Promise that resolves when the operation is complete
372
+ */
373
+ async close() {
374
+ if (this._editor) {
375
+ this._editor.destroy();
376
+ }
377
+ }
378
+ /**
379
+ * Submit the created feature
380
+ * @returns Promise that resolves when the operation is complete
381
+ */
382
+ async submit() {
383
+ if (this._editor) {
384
+ this._editor.viewModel.featureFormViewModel.submit();
385
+ }
386
+ }
387
+ //--------------------------------------------------------------------------
388
+ //
389
+ // Functions (lifecycle)
390
+ //
391
+ //--------------------------------------------------------------------------
392
+ /**
393
+ * StencilJS: Called once just after the component is first connected to the DOM.
394
+ * @returns Promise when complete
395
+ */
396
+ async componentWillLoad() {
397
+ await this.initModules();
398
+ }
399
+ /**
400
+ * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
401
+ */
402
+ async componentDidLoad() {
403
+ await this.init();
404
+ }
405
+ /**
406
+ * Renders the component.
407
+ */
408
+ render() {
409
+ return (h(Host, { id: "feature-form" }));
410
+ }
411
+ //--------------------------------------------------------------------------
412
+ //
413
+ // Functions (protected)
414
+ //
415
+ //--------------------------------------------------------------------------
416
+ /**
417
+ * Init Editor widget and starts the create workflow
418
+ */
419
+ async init() {
420
+ if (this.mapView && this.selectedLayerId) {
421
+ await this.createEditorWidget();
422
+ }
423
+ }
424
+ /**
425
+ * Load esri javascript api modules
426
+ * @returns Promise resolving when function is done
427
+ * @protected
428
+ */
429
+ async initModules() {
430
+ const [Editor, reactiveUtils] = await loadModules([
431
+ "esri/widgets/Editor",
432
+ "esri/core/reactiveUtils"
433
+ ]);
434
+ this.Editor = Editor;
435
+ this.reactiveUtils = reactiveUtils;
436
+ }
437
+ /**
438
+ * Display editor widget to create the new feature
439
+ * @protected
440
+ */
441
+ async createEditorWidget() {
442
+ if (this._editor) {
443
+ this._editor.destroy();
444
+ }
445
+ const layerInfos = [];
446
+ const container = document.createElement("div");
447
+ const allMapLayers = await getAllLayers(this.mapView);
448
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
449
+ allMapLayers.forEach(async (eachLayer) => {
450
+ layerInfos.push({
451
+ layer: eachLayer,
452
+ enabled: (eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.type) === "feature" && (eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.id) === this.selectedLayerId,
453
+ addEnabled: true,
454
+ updateEnabled: false,
455
+ deleteEnabled: false // default is true, set to false to disable the ability to delete features
456
+ });
457
+ });
458
+ this._editor = new this.Editor({
459
+ allowedWorkflows: "create-features",
460
+ view: this.mapView,
461
+ layerInfos: layerInfos,
462
+ visibleElements: {
463
+ snappingControls: false
464
+ },
465
+ container
466
+ });
467
+ this.el.appendChild(container);
468
+ //Add handle to watch if attachments are added/edited
469
+ const attachmentHandle = this.reactiveUtils.watch(() => this._editor.viewModel.state, (state) => {
470
+ if (state === 'adding-attachment' || state === 'editing-attachment') {
471
+ this._addingAttachment = true;
472
+ this.editingAttachment.emit(true);
473
+ }
474
+ else {
475
+ if (this._addingAttachment) {
476
+ this.editingAttachment.emit(false);
477
+ this._addingAttachment = false;
478
+ }
479
+ }
480
+ });
481
+ this._editor.viewModel.addHandles(attachmentHandle);
482
+ //Add handle to watch featureTemplatesViewModel ready state and then start the creation
483
+ const handle = this.reactiveUtils.watch(() => this._editor.viewModel.featureTemplatesViewModel.state, (state) => {
484
+ if (state === 'ready') {
485
+ void this.startCreate();
486
+ }
487
+ });
488
+ this._editor.viewModel.addHandles(handle);
489
+ }
490
+ /**
491
+ * Start creating the feature
492
+ * @protected
493
+ */
494
+ async startCreate() {
495
+ var _a;
496
+ if ((_a = this._editor.viewModel.featureTemplatesViewModel.items) === null || _a === void 0 ? void 0 : _a.length) {
497
+ const items = this._editor.viewModel.featureTemplatesViewModel.items[0].get("items");
498
+ //once the feature template is selected handle the event for formSubmit and sketch complete
499
+ //also, hide the headers and footer in the editor as we will be showing our own submit and cancel button
500
+ this._editor.viewModel.featureTemplatesViewModel.on('select', () => {
501
+ setTimeout(() => {
502
+ //on form submit
503
+ this._editor.viewModel.featureFormViewModel.on('submit', this.submitted.bind(this));
504
+ //on sketch complete emit the event
505
+ this._editor.viewModel.sketchViewModel.on("create", (evt) => {
506
+ if (evt.state === "complete") {
507
+ this.drawComplete.emit();
508
+ }
509
+ });
510
+ this.hideEditorsElements();
511
+ }, 700);
512
+ this.hideEditorsElements();
513
+ });
514
+ //if only one feature template then directly start geometry creation for that
515
+ //else allow feature template selection to user
516
+ if (items.length === 1) {
517
+ this._editor.viewModel.featureTemplatesViewModel.select(items[0]);
518
+ }
519
+ //hides the header and footer elements in editor widget
520
+ this.hideEditorsElements();
521
+ }
522
+ }
523
+ /**
524
+ * Hides the elements of editor widget
525
+ * @protected
526
+ */
527
+ hideEditorsElements() {
528
+ if (!this.customizeSubmit) {
529
+ return;
530
+ }
531
+ setTimeout(() => {
532
+ var _a;
533
+ //hides the header and footer on the featureForm
534
+ (_a = this.el.querySelector('.esri-editor').querySelectorAll('calcite-flow-item')) === null || _a === void 0 ? void 0 : _a.forEach((flowItem) => {
535
+ var _a, _b, _c, _d, _e;
536
+ const article = (_c = (_b = (_a = flowItem.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('calcite-panel')) === null || _b === void 0 ? void 0 : _b.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('article');
537
+ //hide the header
538
+ (_d = article === null || article === void 0 ? void 0 : article.querySelector('header')) === null || _d === void 0 ? void 0 : _d.setAttribute('style', 'display: none');
539
+ //hide the footer
540
+ (_e = article === null || article === void 0 ? void 0 : article.querySelector('footer')) === null || _e === void 0 ? void 0 : _e.setAttribute('style', 'display: none');
541
+ });
542
+ }, 700);
543
+ }
544
+ /**
545
+ * On creation of feature emit the event that the feature is created
546
+ * @param evt feature submit event
547
+ * @protected
548
+ */
549
+ async submitted(evt) {
550
+ var _a;
551
+ //return if any attribute is invalid , focus will be shifted to the invalid attribute in feature form
552
+ if (evt.invalid.length) {
553
+ return;
554
+ }
555
+ //Submit only when valid attributes
556
+ //emit success or fail based on the result
557
+ if (evt.valid.length) {
558
+ try {
559
+ await this._editor.activeWorkflow.commit();
560
+ //throw errors if any failures
561
+ if ((_a = this._editor.viewModel.failures) === null || _a === void 0 ? void 0 : _a.length) {
562
+ this._editor.viewModel.failures.some((failure) => {
563
+ if (failure.error) {
564
+ throw (failure.error);
565
+ }
566
+ });
567
+ }
568
+ }
569
+ catch (e) {
570
+ this.fail.emit(e);
571
+ return;
572
+ }
573
+ this.success.emit();
574
+ }
575
+ }
576
+ get el() { return getElement(this); }
577
+ static get watchers() { return {
578
+ "mapView": ["mapViewWatchHandler"]
579
+ }; }
580
+ };
581
+ CreateFeature.style = createFeatureCss;
582
+
338
583
  const featureListCss = ":host{display:block}.width-full{width:100%}.pagination{display:flex;justify-content:center}.error-msg{padding:10px;width:calc(100% - 20px)}.popup-title{font-weight:500;padding:10px 12px}";
339
584
 
340
585
  const FeatureList = class {
@@ -401,6 +646,7 @@ const FeatureList = class {
401
646
  //--------------------------------------------------------------------------
402
647
  /**
403
648
  * Initialize the features list using the selected layer
649
+ * @protected
404
650
  */
405
651
  async initializeFeatureItems() {
406
652
  if (this._selectedLayer) {
@@ -534,6 +780,23 @@ const LayerList = class {
534
780
  }
535
781
  //--------------------------------------------------------------------------
536
782
  //
783
+ // Watch handlers
784
+ //
785
+ //--------------------------------------------------------------------------
786
+ //--------------------------------------------------------------------------
787
+ //
788
+ // Methods (public)
789
+ //
790
+ //--------------------------------------------------------------------------
791
+ /**
792
+ * Refresh the layer list which will fetch the latest layer count and update the list
793
+ * @returns Promise that resolves when the operation is complete
794
+ */
795
+ async refresh() {
796
+ await this.setLayers();
797
+ }
798
+ //--------------------------------------------------------------------------
799
+ //
537
800
  // Functions (lifecycle)
538
801
  //
539
802
  //--------------------------------------------------------------------------
@@ -558,7 +821,7 @@ const LayerList = class {
558
821
  render() {
559
822
  return (h(Fragment, null, this._isLoading && h("calcite-loader", { scale: "m" }), !this._isLoading && this.mapView && this._noLayersToDisplay &&
560
823
  h("calcite-notice", { class: "error-msg", icon: "layers-reference", kind: "danger", open: true }, h("div", { slot: "title" }, this._translations.error), h("div", { slot: "message" }, this.noLayerErrorMsg ? this.noLayerErrorMsg : this._translations.noLayerToDisplayErrorMsg)), !this._isLoading && this.mapView &&
561
- h("calcite-list", { "selection-appearance": "border", "selection-mode": this.showNextIcon ? "none" : "single" }, this.renderLayerList())));
824
+ h("calcite-list", { "selection-appearance": "border", "selection-mode": this.showNextIcon ? "none" : "single-persist" }, this.renderLayerList())));
562
825
  }
563
826
  //--------------------------------------------------------------------------
564
827
  //
@@ -585,21 +848,24 @@ const LayerList = class {
585
848
  this._layerItemsHash = await getMapLayerHash(this.mapView, true);
586
849
  const allMapLayers = await getAllLayers(this.mapView);
587
850
  // eslint-disable-next-line @typescript-eslint/no-misused-promises
588
- this.showFeatureCount && allMapLayers.forEach(async (eachLayer) => {
851
+ allMapLayers.forEach(async (eachLayer) => {
589
852
  var _a, _b;
590
853
  //TODO: checking editable condition could be configurable
591
- if ((eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.type) === "feature" && (eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.editingEnabled) && ((_b = (_a = eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.capabilities) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.supportsUpdate)) {
592
- const q = eachLayer.createQuery();
593
- const result = eachLayer.queryFeatureCount(q);
594
- def.push(result);
595
- void result.then(async (resCount) => {
596
- const formattedCount = !isNaN(resCount) ? await formatNumber(resCount, {
597
- places: 0,
598
- api: 4,
599
- type: "decimal"
600
- }) : "";
601
- this._layerItemsHash[eachLayer.id].formattedFeatureCount = formattedCount;
602
- });
854
+ if ((eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.type) === "feature" && (eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.editingEnabled) && ((_b = (_a = eachLayer === null || eachLayer === void 0 ? void 0 : eachLayer.capabilities) === null || _a === void 0 ? void 0 : _a.operations) === null || _b === void 0 ? void 0 : _b.supportsAdd)) {
855
+ this._layerItemsHash[eachLayer.id].supportsAdd = true;
856
+ if (this.showFeatureCount) {
857
+ const q = eachLayer.createQuery();
858
+ const result = eachLayer.queryFeatureCount(q);
859
+ def.push(result);
860
+ void result.then(async (resCount) => {
861
+ const formattedCount = !isNaN(resCount) ? await formatNumber(resCount, {
862
+ places: 0,
863
+ api: 4,
864
+ type: "decimal"
865
+ }) : "";
866
+ this._layerItemsHash[eachLayer.id].formattedFeatureCount = formattedCount;
867
+ });
868
+ }
603
869
  }
604
870
  });
605
871
  await Promise.all(def).then(() => {
@@ -627,9 +893,9 @@ const LayerList = class {
627
893
  var _a;
628
894
  const configuredLayers = ((_a = this.layers) === null || _a === void 0 ? void 0 : _a.length) > 0 ? this.layers : [];
629
895
  return Object.keys(hash).reduce((prev, cur) => {
630
- let showLayer = hash[cur].supportsUpdate;
896
+ let showLayer = hash[cur].supportsAdd;
631
897
  if ((configuredLayers === null || configuredLayers === void 0 ? void 0 : configuredLayers.length) > 0) {
632
- showLayer = configuredLayers.indexOf(cur) > -1 ? hash[cur].supportsUpdate : false;
898
+ showLayer = configuredLayers.indexOf(cur) > -1 ? hash[cur].supportsAdd : false;
633
899
  }
634
900
  if (showLayer) {
635
901
  prev.push(cur);
@@ -681,4 +947,4 @@ const LayerList = class {
681
947
  };
682
948
  LayerList.style = layerListCss;
683
949
 
684
- export { Flow as calcite_flow, FlowItem as calcite_flow_item, FeatureList as feature_list, LayerList as layer_list };
950
+ export { Flow as calcite_flow, FlowItem as calcite_flow_item, CreateFeature as create_feature, FeatureList as feature_list, LayerList as layer_list };
@@ -6,7 +6,7 @@
6
6
  import { r as registerInstance, h, H as Host, g as getElement, c as createEvent } from './index-7183ce4a.js';
7
7
  import { g as getLocaleComponentStrings, l as loadModules } from './locale-731e75a8.js';
8
8
  import { q as queryFeaturesByID, g as getLayerOrTable, b as goToSelection, e as queryAllIds, f as queryFeatureIds, i as queryFeaturesByGlobalID } from './mapViewUtils-cf05e880.js';
9
- import { d as downloadCSV } from './downloadUtils-d070a467.js';
9
+ import { d as downloadCSV } from './downloadUtils-d297078f.js';
10
10
  import './esri-loader-eda07632.js';
11
11
  import './_commonjsHelpers-d5f9d613.js';
12
12
  import './interfaces-586e863c.js';