@esri/solutions-components 0.8.8 → 0.8.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (121) hide show
  1. package/dist/assets/t9n/crowdsource-reporter/resources.json +11 -2
  2. package/dist/assets/t9n/crowdsource-reporter/resources_en.json +11 -2
  3. package/dist/cjs/{calcite-action-menu_2.cjs.entry.js → calcite-action-menu_3.cjs.entry.js} +114 -7
  4. package/dist/cjs/calcite-alert_4.cjs.entry.js +47 -5
  5. package/dist/cjs/{calcite-input-date-picker_3.cjs.entry.js → calcite-block_5.cjs.entry.js} +691 -13
  6. package/dist/cjs/{calcite-combobox_5.cjs.entry.js → calcite-combobox_3.cjs.entry.js} +876 -844
  7. package/dist/cjs/calcite-dropdown_4.cjs.entry.js +1023 -0
  8. package/dist/cjs/{calcite-flow_5.cjs.entry.js → calcite-flow_6.cjs.entry.js} +327 -2
  9. package/dist/cjs/card-manager_3.cjs.entry.js +5 -5
  10. package/dist/cjs/crowdsource-manager.cjs.entry.js +25 -17
  11. package/dist/cjs/crowdsource-reporter.cjs.entry.js +122 -21
  12. package/dist/cjs/{downloadUtils-8b05d7cc.js → downloadUtils-dd787ddf.js} +2 -2
  13. package/dist/cjs/{index.es-e7587227.js → index.es-29fa176d.js} +2 -2
  14. package/dist/cjs/loader.cjs.js +1 -1
  15. package/dist/cjs/map-select-tools_3.cjs.entry.js +8 -8
  16. package/dist/cjs/{mapViewUtils-3e0fa457.js → mapViewUtils-82018df6.js} +12 -6
  17. package/dist/cjs/public-notification.cjs.entry.js +2 -2
  18. package/dist/cjs/solutions-components.cjs.js +1 -1
  19. package/dist/collection/collection-manifest.json +1 -0
  20. package/dist/collection/components/create-feature/create-feature.js +18 -0
  21. package/dist/collection/components/crowdsource-manager/crowdsource-manager.css +15 -0
  22. package/dist/collection/components/crowdsource-manager/crowdsource-manager.js +48 -16
  23. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.css +16 -0
  24. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +155 -35
  25. package/dist/collection/components/feature-details/feature-details.css +18 -0
  26. package/dist/collection/components/feature-details/feature-details.js +500 -0
  27. package/dist/collection/components/feature-details/test/feature-details.e2e.js +14 -0
  28. package/dist/collection/components/feature-details/test/feature-details.spec.js +22 -0
  29. package/dist/collection/components/feature-list/feature-list.js +14 -1
  30. package/dist/collection/components/info-card/info-card.css +15 -5
  31. package/dist/collection/components/info-card/info-card.js +179 -5
  32. package/dist/collection/components/layer-table/layer-table.js +2 -2
  33. package/dist/collection/components/map-card/map-card.js +1 -1
  34. package/dist/collection/components/map-select-tools/map-select-tools.js +5 -5
  35. package/dist/collection/components/refine-selection/refine-selection.js +1 -1
  36. package/dist/collection/demos/crowdsource-manager.html +7 -2
  37. package/dist/collection/demos/crowdsource-reporter.html +115 -1
  38. package/dist/collection/utils/mapViewUtils.js +12 -6
  39. package/dist/collection/utils/mapViewUtils.ts +14 -6
  40. package/dist/components/create-feature2.js +4 -0
  41. package/dist/components/crowdsource-manager.js +26 -18
  42. package/dist/components/crowdsource-reporter.js +270 -81
  43. package/dist/components/feature-details.d.ts +11 -0
  44. package/dist/components/feature-details.js +11 -0
  45. package/dist/components/feature-details2.js +449 -0
  46. package/dist/components/feature-list2.js +14 -1
  47. package/dist/components/info-card2.js +54 -5
  48. package/dist/components/layer-table2.js +2 -2
  49. package/dist/components/map-card2.js +1 -1
  50. package/dist/components/map-select-tools2.js +5 -5
  51. package/dist/components/mapViewUtils.js +12 -6
  52. package/dist/components/refine-selection2.js +1 -1
  53. package/dist/esm/{calcite-action-menu_2.entry.js → calcite-action-menu_3.entry.js} +118 -12
  54. package/dist/esm/calcite-alert_4.entry.js +47 -5
  55. package/dist/esm/{calcite-input-date-picker_3.entry.js → calcite-block_5.entry.js} +688 -12
  56. package/dist/esm/{calcite-combobox_5.entry.js → calcite-combobox_3.entry.js} +878 -844
  57. package/dist/esm/calcite-date-picker-day_3.entry.js +1 -1
  58. package/dist/esm/calcite-dropdown_4.entry.js +1016 -0
  59. package/dist/esm/{calcite-flow_5.entry.js → calcite-flow_6.entry.js} +327 -3
  60. package/dist/esm/card-manager_3.entry.js +5 -5
  61. package/dist/esm/crowdsource-manager.entry.js +26 -18
  62. package/dist/esm/crowdsource-reporter.entry.js +122 -21
  63. package/dist/esm/{date-5630530d.js → date-0c026a8b.js} +1 -1
  64. package/dist/esm/{downloadUtils-0c1e4d7b.js → downloadUtils-25aa808f.js} +2 -2
  65. package/dist/esm/{index.es-286e3cfa.js → index.es-a16c9db4.js} +2 -2
  66. package/dist/esm/loader.js +1 -1
  67. package/dist/esm/map-select-tools_3.entry.js +8 -8
  68. package/dist/esm/{mapViewUtils-253178f1.js → mapViewUtils-c83c03a4.js} +12 -6
  69. package/dist/esm/public-notification.entry.js +2 -2
  70. package/dist/esm/solutions-components.js +1 -1
  71. package/dist/solutions-components/demos/crowdsource-manager.html +7 -2
  72. package/dist/solutions-components/demos/crowdsource-reporter.html +115 -1
  73. package/dist/solutions-components/p-2f687975.entry.js +17 -0
  74. package/dist/solutions-components/{p-813fd8a4.entry.js → p-3e5085ae.entry.js} +2 -2
  75. package/dist/solutions-components/p-40039b84.entry.js +6 -0
  76. package/dist/solutions-components/p-511b1c91.entry.js +23 -0
  77. package/dist/solutions-components/{p-94de9279.js → p-5817d78c.js} +1 -1
  78. package/dist/solutions-components/{p-15f9624a.entry.js → p-58997cc1.entry.js} +1 -1
  79. package/dist/solutions-components/p-82e398cb.entry.js +17 -0
  80. package/dist/solutions-components/p-ae75d7d7.entry.js +6 -0
  81. package/dist/solutions-components/{p-331b5d1e.js → p-b1376c75.js} +2 -2
  82. package/dist/solutions-components/p-b5acfcd8.entry.js +6 -0
  83. package/dist/solutions-components/{p-212b02e7.js → p-bdd77f17.js} +1 -1
  84. package/dist/solutions-components/{p-038fcd93.entry.js → p-c273ab7a.entry.js} +1 -1
  85. package/dist/solutions-components/p-d742b915.entry.js +29 -0
  86. package/dist/solutions-components/p-d9c89479.js +36 -0
  87. package/dist/solutions-components/p-dfad61a8.entry.js +24 -0
  88. package/dist/solutions-components/p-fffc9e08.entry.js +6 -0
  89. package/dist/solutions-components/solutions-components.esm.js +1 -1
  90. package/dist/solutions-components/utils/mapViewUtils.ts +14 -6
  91. package/dist/types/components/create-feature/create-feature.d.ts +4 -4
  92. package/dist/types/components/crowdsource-manager/crowdsource-manager.d.ts +13 -1
  93. package/dist/types/components/crowdsource-reporter/crowdsource-reporter.d.ts +91 -10
  94. package/dist/types/components/feature-details/feature-details.d.ts +151 -0
  95. package/dist/types/components/feature-list/feature-list.d.ts +6 -0
  96. package/dist/types/components/info-card/info-card.d.ts +33 -1
  97. package/dist/types/components.d.ts +148 -12
  98. package/dist/types/preact.d.ts +9 -2
  99. package/dist/types/utils/mapViewUtils.d.ts +5 -3
  100. package/package.json +1 -1
  101. package/dist/cjs/calcite-block_2.cjs.entry.js +0 -652
  102. package/dist/cjs/calcite-graph_2.cjs.entry.js +0 -1055
  103. package/dist/cjs/calcite-scrim.cjs.entry.js +0 -125
  104. package/dist/cjs/utils-7bc7f595.js +0 -64
  105. package/dist/esm/calcite-block_2.entry.js +0 -647
  106. package/dist/esm/calcite-graph_2.entry.js +0 -1050
  107. package/dist/esm/calcite-scrim.entry.js +0 -121
  108. package/dist/esm/utils-9fb4104a.js +0 -61
  109. package/dist/solutions-components/p-04c37d69.entry.js +0 -17
  110. package/dist/solutions-components/p-0b92e4b1.entry.js +0 -11
  111. package/dist/solutions-components/p-13ca3b00.entry.js +0 -6
  112. package/dist/solutions-components/p-238d3b5f.entry.js +0 -6
  113. package/dist/solutions-components/p-3af79063.js +0 -36
  114. package/dist/solutions-components/p-80b11ec1.entry.js +0 -17
  115. package/dist/solutions-components/p-a3a11749.entry.js +0 -6
  116. package/dist/solutions-components/p-aec06ce4.entry.js +0 -18
  117. package/dist/solutions-components/p-bfdf89c2.js +0 -11
  118. package/dist/solutions-components/p-c4ff3b52.entry.js +0 -17
  119. package/dist/solutions-components/p-ced067bd.entry.js +0 -17
  120. package/dist/solutions-components/p-d136eab0.entry.js +0 -23
  121. package/dist/solutions-components/p-e0446d5b.entry.js +0 -6
@@ -31,6 +31,8 @@ export class InfoCard {
31
31
  this.zoomAndScrollToSelected = undefined;
32
32
  this.allowEditing = true;
33
33
  this.highlightEnabled = true;
34
+ this.paginationEnabled = true;
35
+ this.position = 'absolute';
34
36
  this._alertOpen = false;
35
37
  this._count = "";
36
38
  this._editRecordOpen = false;
@@ -76,6 +78,45 @@ export class InfoCard {
76
78
  async getSelectedFeature() {
77
79
  return this._features.selectedFeature;
78
80
  }
81
+ /**
82
+ * Get the current selected feature from the Features widget
83
+ * @returns Promise resolving with the current feature
84
+ */
85
+ async refresh() {
86
+ await this.setGraphics();
87
+ }
88
+ /**
89
+ * Go to the previous feature in the features widget
90
+ */
91
+ async back() {
92
+ this._features.previous();
93
+ this._count = this._getCount();
94
+ }
95
+ /**
96
+ * Go to the next feature in the features widget
97
+ */
98
+ async next() {
99
+ this._features.next();
100
+ this._count = this._getCount();
101
+ }
102
+ /**
103
+ * Toggle the visibility of the features list view
104
+ */
105
+ async toggleListView() {
106
+ this._showListView = !this._showListView;
107
+ const i = this._features.selectedFeatureIndex;
108
+ this._features.open({
109
+ features: this.graphics,
110
+ featureMenuOpen: this._showListView
111
+ });
112
+ this._features.selectedFeatureIndex = i;
113
+ }
114
+ /**
115
+ * update the current graphics to the features widget
116
+ */
117
+ async updateCurrentGraphic(selectedGraphic) {
118
+ this._features.selectedFeatureWidget.graphic = selectedGraphic;
119
+ }
79
120
  /**
80
121
  * Respond to and close the edit record display
81
122
  *
@@ -140,8 +181,8 @@ export class InfoCard {
140
181
  const id = (_d = (_c = this._features) === null || _c === void 0 ? void 0 : _c.selectedFeature) === null || _d === void 0 ? void 0 : _d.getObjectId();
141
182
  const ids = parseInt(id === null || id === void 0 ? void 0 : id.toString(), 10) > -1 ? [id] : [];
142
183
  const deleteEnabled = ((_e = this._layer) === null || _e === void 0 ? void 0 : _e.editingEnabled) && ((_h = (_g = (_f = this._layer) === null || _f === void 0 ? void 0 : _f.capabilities) === null || _g === void 0 ? void 0 : _g.operations) === null || _h === void 0 ? void 0 : _h.supportsDelete);
143
- return (h(Host, null, h("calcite-shell", null, this._getHeader(), h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData }), h("div", { class: "esri-widget feature-node " + featureNodeClass, id: "features-node" }), h("div", { class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
144
- h("div", { class: "display-flex top-border padding-1-2" }, h("calcite-button", { appearance: "solid", id: "solutions-edit", onClick: () => this._openEditRecord(), width: "full" }, this._translations.edit), this.isMobile && deleteEnabled ? (h("delete-button", { class: "padding-inline-start-1 width-100", id: "solutions-delete", ids: ids, layer: this._layer, onEditsComplete: () => this._closePopup() })) : undefined, h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "solutions-edit" }, h("span", null, this._translations.edit)), this.isMobile ? (h("calcite-tooltip", { label: "", placement: "bottom", "reference-element": "solutions-delete" }, h("span", null, this._translations.delete))) : undefined), !nextBackDisabled && h("div", { class: `display-flex padding-1-2 button-container top-border ${nextBackClass}` }, h("div", { class: "min-width-100" }, h("calcite-button", { appearance: "outline", disabled: nextBackDisabled, id: "solutions-back", onClick: () => this._back(), width: "full" }, this._translations.back), h("calcite-tooltip", { label: "", placement: "top", "reference-element": "solutions-back" }, h("span", null, this._translations.back))), h("div", null, h("calcite-action", { icon: "list", onClick: () => this._toggleListView(), scale: "s", text: this._count, textEnabled: true })), h("div", { class: "min-width-100" }, h("calcite-button", { appearance: "outline", disabled: nextBackDisabled, id: "solutions-next", onClick: () => this._next(), width: "full" }, this._translations.next), h("calcite-tooltip", { label: "", placement: "top", "reference-element": "solutions-next" }, h("span", null, this._translations.next))))), h("edit-card", { class: editClass, graphicIndex: (_j = this._features) === null || _j === void 0 ? void 0 : _j.selectedFeatureIndex, graphics: this.graphics, mapView: this.mapView, open: this._editRecordOpen }), h("calcite-alert", { icon: "layer-broken", kind: "warning", label: "", onCalciteAlertClose: () => this._alertClosed(), open: this._alertOpen, placement: "top" }, h("div", { slot: "title" }, this._translations.editDisabled), h("div", { slot: "message" }, this._translations.enableEditing)))));
184
+ return (h(Host, null, h("calcite-shell", { style: { position: this.position } }, this._getHeader(), h("calcite-loader", { class: loadingClass, label: this._translations.fetchingData }), h("div", { class: "esri-widget feature-node " + featureNodeClass, id: "features-node" }), h("div", { class: `${editButtonClass} width-100`, slot: "footer" }, this.allowEditing &&
185
+ h("div", { class: "display-flex top-border padding-1-2" }, h("calcite-button", { appearance: "solid", id: "solutions-edit", onClick: () => this._openEditRecord(), width: "full" }, this._translations.edit), this.isMobile && deleteEnabled ? (h("delete-button", { class: "padding-inline-start-1 width-100", id: "solutions-delete", ids: ids, layer: this._layer, onEditsComplete: () => this._closePopup() })) : undefined, h("calcite-tooltip", { placement: "bottom", "reference-element": "solutions-edit" }, h("span", null, this._translations.edit)), this.isMobile ? (h("calcite-tooltip", { placement: "bottom", "reference-element": "solutions-delete" }, h("span", null, this._translations.delete))) : undefined), this.paginationEnabled && !nextBackDisabled && h("div", { class: `display-flex padding-1-2 button-container top-border ${nextBackClass}` }, h("div", null, h("calcite-button", { appearance: 'transparent', disabled: nextBackDisabled, iconStart: "chevron-left", id: "solutions-back", onClick: () => this._back(), width: "full" }), h("calcite-tooltip", { placement: "top", "reference-element": "solutions-back" }, h("span", null, this._translations.back))), h("calcite-action", { class: 'pagination-action', onClick: () => this._toggleListView(), scale: "s", text: "", textEnabled: true }, h("span", { class: "pagination-count" }, this._count)), h("div", null, h("calcite-button", { appearance: "transparent", disabled: nextBackDisabled, iconStart: "chevron-right", id: "solutions-next", onClick: () => this._next(), width: "full" }), h("calcite-tooltip", { placement: "top", "reference-element": "solutions-next" }, h("span", null, this._translations.next))))), h("edit-card", { class: editClass, graphicIndex: (_j = this._features) === null || _j === void 0 ? void 0 : _j.selectedFeatureIndex, graphics: this.graphics, mapView: this.mapView, open: this._editRecordOpen }), h("calcite-alert", { icon: "layer-broken", kind: "warning", label: "", onCalciteAlertClose: () => this._alertClosed(), open: this._alertOpen, placement: "top" }, h("div", { slot: "title" }, this._translations.editDisabled), h("div", { slot: "message" }, this._translations.enableEditing)))));
145
186
  }
146
187
  //--------------------------------------------------------------------------
147
188
  //
@@ -209,6 +250,7 @@ export class InfoCard {
209
250
  });
210
251
  this._features.viewModel.highlightEnabled = this.highlightEnabled;
211
252
  this.reactiveUtils.watch(() => this._features.viewModel.featureMenuOpen, (isOpen) => {
253
+ this._count = this._getCount();
212
254
  if (!isOpen) {
213
255
  this._showListView = isOpen;
214
256
  }
@@ -216,7 +258,7 @@ export class InfoCard {
216
258
  if (this.zoomAndScrollToSelected) {
217
259
  this.reactiveUtils.watch(() => this._features.selectedFeatureIndex, (i) => {
218
260
  if (i > -1) {
219
- this.selectionChanged.emit([this._features.selectedFeature]);
261
+ this.selectionChanged.emit({ selectedFeature: [this._features.selectedFeature], selectedFeatureIndex: this._features.selectedFeatureIndex });
220
262
  }
221
263
  });
222
264
  }
@@ -451,6 +493,42 @@ export class InfoCard {
451
493
  "attribute": "highlight-enabled",
452
494
  "reflect": false,
453
495
  "defaultValue": "true"
496
+ },
497
+ "paginationEnabled": {
498
+ "type": "boolean",
499
+ "mutable": false,
500
+ "complexType": {
501
+ "original": "boolean",
502
+ "resolved": "boolean",
503
+ "references": {}
504
+ },
505
+ "required": false,
506
+ "optional": true,
507
+ "docs": {
508
+ "tags": [],
509
+ "text": "boolean: If true will show the pagination for multiple features"
510
+ },
511
+ "attribute": "pagination-enabled",
512
+ "reflect": false,
513
+ "defaultValue": "true"
514
+ },
515
+ "position": {
516
+ "type": "string",
517
+ "mutable": false,
518
+ "complexType": {
519
+ "original": "string",
520
+ "resolved": "string",
521
+ "references": {}
522
+ },
523
+ "required": false,
524
+ "optional": true,
525
+ "docs": {
526
+ "tags": [],
527
+ "text": "string: Set the position of the feature info"
528
+ },
529
+ "attribute": "position",
530
+ "reflect": false,
531
+ "defaultValue": "'absolute'"
454
532
  }
455
533
  };
456
534
  }
@@ -491,8 +569,8 @@ export class InfoCard {
491
569
  "text": "Emitted on demand when the selected index changes"
492
570
  },
493
571
  "complexType": {
494
- "original": "__esri.Graphic[]",
495
- "resolved": "Graphic[]",
572
+ "original": "{ selectedFeature: __esri.Graphic[], selectedFeatureIndex: number }",
573
+ "resolved": "{ selectedFeature: Graphic[]; selectedFeatureIndex: number; }",
496
574
  "references": {
497
575
  "___esri": {
498
576
  "location": "global",
@@ -523,6 +601,102 @@ export class InfoCard {
523
601
  "text": "Promise resolving with the current feature"
524
602
  }]
525
603
  }
604
+ },
605
+ "refresh": {
606
+ "complexType": {
607
+ "signature": "() => Promise<any>",
608
+ "parameters": [],
609
+ "references": {
610
+ "Promise": {
611
+ "location": "global",
612
+ "id": "global::Promise"
613
+ }
614
+ },
615
+ "return": "Promise<any>"
616
+ },
617
+ "docs": {
618
+ "text": "Get the current selected feature from the Features widget",
619
+ "tags": [{
620
+ "name": "returns",
621
+ "text": "Promise resolving with the current feature"
622
+ }]
623
+ }
624
+ },
625
+ "back": {
626
+ "complexType": {
627
+ "signature": "() => Promise<void>",
628
+ "parameters": [],
629
+ "references": {
630
+ "Promise": {
631
+ "location": "global",
632
+ "id": "global::Promise"
633
+ }
634
+ },
635
+ "return": "Promise<void>"
636
+ },
637
+ "docs": {
638
+ "text": "Go to the previous feature in the features widget",
639
+ "tags": []
640
+ }
641
+ },
642
+ "next": {
643
+ "complexType": {
644
+ "signature": "() => Promise<void>",
645
+ "parameters": [],
646
+ "references": {
647
+ "Promise": {
648
+ "location": "global",
649
+ "id": "global::Promise"
650
+ }
651
+ },
652
+ "return": "Promise<void>"
653
+ },
654
+ "docs": {
655
+ "text": "Go to the next feature in the features widget",
656
+ "tags": []
657
+ }
658
+ },
659
+ "toggleListView": {
660
+ "complexType": {
661
+ "signature": "() => Promise<void>",
662
+ "parameters": [],
663
+ "references": {
664
+ "Promise": {
665
+ "location": "global",
666
+ "id": "global::Promise"
667
+ }
668
+ },
669
+ "return": "Promise<void>"
670
+ },
671
+ "docs": {
672
+ "text": "Toggle the visibility of the features list view",
673
+ "tags": []
674
+ }
675
+ },
676
+ "updateCurrentGraphic": {
677
+ "complexType": {
678
+ "signature": "(selectedGraphic: __esri.Graphic) => Promise<void>",
679
+ "parameters": [{
680
+ "name": "selectedGraphic",
681
+ "type": "Graphic",
682
+ "docs": ""
683
+ }],
684
+ "references": {
685
+ "Promise": {
686
+ "location": "global",
687
+ "id": "global::Promise"
688
+ },
689
+ "___esri": {
690
+ "location": "global",
691
+ "id": "global::___esri"
692
+ }
693
+ },
694
+ "return": "Promise<void>"
695
+ },
696
+ "docs": {
697
+ "text": "update the current graphics to the features widget",
698
+ "tags": []
699
+ }
526
700
  }
527
701
  };
528
702
  }
@@ -220,7 +220,7 @@ export class LayerTable {
220
220
  * @param evt CustomEvent the graphic for the current selection
221
221
  */
222
222
  async selectionChanged(evt) {
223
- const g = evt.detail[0];
223
+ const g = evt.detail.selectedFeature[0];
224
224
  const oid = g.getObjectId();
225
225
  if (this.zoomAndScrollToSelected) {
226
226
  const i = this._table.viewModel.getObjectIdIndex(oid);
@@ -377,7 +377,7 @@ export class LayerTable {
377
377
  _getActionBar() {
378
378
  const containerClass = this.isMobile ? "width-full" : "";
379
379
  const mobileClass = this.isMobile ? "border-top" : "";
380
- return (h("calcite-action-bar", { class: containerClass, expandDisabled: true, expanded: true, id: this._getId("bar"), layout: "horizontal" }, h("div", { class: `border-end ${containerClass} ${mobileClass}`, id: "solutions-map-layer-picker-container" }, h("map-layer-picker", { appearance: "transparent", defaultLayerId: this.defaultLayerId, display: "inline-flex", height: 50, isMobile: this.isMobile, mapView: this.mapView, onLayerSelectionChange: (evt) => this._layerSelectionChanged(evt), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, placeholderIcon: "layers", scale: "l", showSingleLayerAsLabel: true, showTables: true, type: "dropdown" })), !this.isMobile ? this._getActions() : undefined));
380
+ return (h("calcite-action-bar", { class: containerClass, expandDisabled: true, expanded: true, id: this._getId("bar"), layout: "horizontal" }, h("div", { class: `border-end ${containerClass} ${mobileClass}`, id: "solutions-map-layer-picker-container" }, h("map-layer-picker", { appearance: "transparent", defaultLayerId: this.defaultLayerId, display: "inline-flex", height: 50, isMobile: this.isMobile, mapView: this.mapView, onLayerSelectionChange: (evt) => void this._layerSelectionChanged(evt), onlyShowUpdatableLayers: this.onlyShowUpdatableLayers, placeholderIcon: "layers", scale: "l", showSingleLayerAsLabel: true, showTables: true, type: "dropdown" })), !this.isMobile ? this._getActions() : undefined));
381
381
  }
382
382
  /**
383
383
  * Get the actions that are used for various interactions with the table
@@ -168,7 +168,7 @@ export class MapCard {
168
168
  }
169
169
  else if (loadDefaultMap) {
170
170
  this._defaultWebmapHonored = true;
171
- this._mapPicker.setMapByID(id);
171
+ void this._mapPicker.setMapByID(id);
172
172
  }
173
173
  else if (mapConfigChanged) {
174
174
  // Map is the same so no need to reload but we need to update for any changes from the config
@@ -191,7 +191,7 @@ export class MapSelectTools {
191
191
  * Renders the component.
192
192
  */
193
193
  render() {
194
- return (h(Host, null, this._getMapLayerPicker(), h("div", { class: "border-bottom" }), h("div", { class: "padding-top-sides-1" }, h("div", { class: "search-widget", ref: (el) => { this._searchElement = el; } }), h("div", { class: "padding-top-1" }, h("map-draw-tools", { active: true, editGraphicsEnabled: !this._useLayerFeaturesEnabled, graphics: this._graphics, mapView: this.mapView, onSketchGraphicsChange: (evt) => this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, ref: (el) => { this._drawTools = el; } })), this._getBufferOptions(), this._getUseLayerFeaturesOptions(), this._getNumSelected()), h("div", { class: "border-bottom" }), this._getNameInput()));
194
+ return (h(Host, null, this._getMapLayerPicker(), h("div", { class: "border-bottom" }), h("div", { class: "padding-top-sides-1" }, h("div", { class: "search-widget", ref: (el) => { this._searchElement = el; } }), h("div", { class: "padding-top-1" }, h("map-draw-tools", { active: true, editGraphicsEnabled: !this._useLayerFeaturesEnabled, graphics: this._graphics, mapView: this.mapView, onSketchGraphicsChange: (evt) => void this._sketchGraphicsChanged(evt), pointSymbol: this.sketchPointSymbol, polygonSymbol: this.sketchPolygonSymbol, polylineSymbol: this.sketchLineSymbol, ref: (el) => { this._drawTools = el; } })), this._getBufferOptions(), this._getUseLayerFeaturesOptions(), this._getNumSelected()), h("div", { class: "border-bottom" }), this._getNameInput()));
195
195
  }
196
196
  /**
197
197
  * Renders the buffer tools component.
@@ -200,7 +200,7 @@ export class MapSelectTools {
200
200
  var _a, _b;
201
201
  const showBufferToolsClass = this._searchDistanceEnabled ? "search-distance" : "div-not-visible";
202
202
  const bufferDistance = typeof ((_a = this.selectionSet) === null || _a === void 0 ? void 0 : _a.distance) === "number" ? this.selectionSet.distance : this.defaultBufferDistance;
203
- return (h("div", null, h("div", { class: "padding-top-1 display-flex" }, h("calcite-label", { class: "label-margin-0 w-100", layout: "inline-space-between" }, h("div", { class: "tooltip-container" }, this._translations.searchDistance, h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "search-distance-icon", scale: "s" }))), h("calcite-popover", { closable: true, label: "", referenceElement: "search-distance-icon" }, h("span", { class: "tooltip-message" }, this._translations.useSearchDistanceTootip)), h("calcite-switch", { checked: this._searchDistanceEnabled, onCalciteSwitchChange: () => this._searchDistanceEnabled = !this._searchDistanceEnabled })), h("div", { class: showBufferToolsClass }, h("buffer-tools", { disabled: !this._searchDistanceEnabled, distance: bufferDistance, 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 }))));
203
+ return (h("div", null, h("div", { class: "padding-top-1 display-flex" }, h("calcite-label", { class: "label-margin-0 w-100", layout: "inline-space-between" }, h("div", { class: "tooltip-container" }, this._translations.searchDistance, h("calcite-icon", { class: "padding-start-1-2 icon", icon: "question", id: "search-distance-icon", scale: "s" }))), h("calcite-popover", { closable: true, label: "", referenceElement: "search-distance-icon" }, h("span", { class: "tooltip-message" }, this._translations.useSearchDistanceTootip)), h("calcite-switch", { checked: this._searchDistanceEnabled, onCalciteSwitchChange: () => this._searchDistanceEnabled = !this._searchDistanceEnabled })), h("div", { class: showBufferToolsClass }, h("buffer-tools", { disabled: !this._searchDistanceEnabled, distance: bufferDistance, geometries: this.geometries, onBufferComplete: (evt) => void this._bufferComplete(evt), ref: (el) => this._bufferTools = el, unit: ((_b = this.selectionSet) === null || _b === void 0 ? void 0 : _b.unit) || this.defaultBufferUnit }))));
204
204
  }
205
205
  /**
206
206
  * Renders the map layer picker component.
@@ -236,7 +236,7 @@ export class MapSelectTools {
236
236
  * @protected
237
237
  */
238
238
  _getMapLayerPicker() {
239
- return (h("div", { class: "display-flex padding-sides-1 padding-bottom-1" }, h("calcite-label", { class: "font-bold width-full label-margin-0" }, this._translations.inputLayer, h("map-layer-picker", { enabledLayerIds: this.enabledLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => this._inputLayerSelectionChange(evt), selectedIds: this.selectLayerView ? [this.selectLayerView.layer.id] : this.selectionSet ? [this.selectionSet.layerView.layer.id] : [], showTables: false }))));
239
+ return (h("div", { class: "display-flex padding-sides-1 padding-bottom-1" }, h("calcite-label", { class: "font-bold width-full label-margin-0" }, this._translations.inputLayer, h("map-layer-picker", { enabledLayerIds: this.enabledLayerIds, mapView: this.mapView, onLayerSelectionChange: (evt) => void this._inputLayerSelectionChange(evt), selectedIds: this.selectLayerView ? [this.selectLayerView.layer.id] : this.selectionSet ? [this.selectionSet.layerView.layer.id] : [], showTables: false }))));
240
240
  }
241
241
  //--------------------------------------------------------------------------
242
242
  //
@@ -308,7 +308,7 @@ export class MapSelectTools {
308
308
  });
309
309
  this._selectionLabel = (_c = this.selectionSet) === null || _c === void 0 ? void 0 : _c.label;
310
310
  if (!this._useLayerFeaturesEnabled) {
311
- (_d = this._drawTools) === null || _d === void 0 ? void 0 : _d.updateGraphics();
311
+ await ((_d = this._drawTools) === null || _d === void 0 ? void 0 : _d.updateGraphics());
312
312
  }
313
313
  await goToSelection(this.selectionSet.selectedIds, this.selectionSet.layerView, this.mapView, false);
314
314
  }
@@ -454,7 +454,7 @@ export class MapSelectTools {
454
454
  }
455
455
  this._workflowType = this._useLayerFeaturesEnabled ? EWorkflowType.SELECT : EWorkflowType.SKETCH;
456
456
  if (this._workflowType === EWorkflowType.SKETCH) {
457
- this._drawTools.updateGraphics();
457
+ await this._drawTools.updateGraphics();
458
458
  }
459
459
  await this._updateLabel();
460
460
  this._clearSearchWidget();
@@ -293,7 +293,7 @@ export class RefineSelection {
293
293
  });
294
294
  const oids = Array.isArray(graphics) ? graphics.map(g => { var _a; return g.attributes[(_a = g === null || g === void 0 ? void 0 : g.layer) === null || _a === void 0 ? void 0 : _a.objectIdField]; }) : [];
295
295
  await this._updateIds(oids, this._selectionMode, this._refineSelectionSet.undoStack, this._refineLayer);
296
- this._drawTools.clear();
296
+ void this._drawTools.clear();
297
297
  }
298
298
  /**
299
299
  * Highlight any selected features in the map
@@ -44,9 +44,13 @@
44
44
  // esriConfig.portalUrl = "https://holistic.mapsdevext.arcgis.com";
45
45
  // });
46
46
 
47
- function addValues() {
48
- const demo = document.getElementById("demo");
47
+ function infoIconButtonClick(evt) {
48
+ alert('Info button Clicked');
49
+ }
49
50
 
51
+ function addValues() {
52
+ const demo = document.getElementById("demo");
53
+ demo.addEventListener('infoIconButtonClick', infoIconButtonClick);
50
54
  let headerSet = false;
51
55
  let custom = [];
52
56
  var vars = window.location.search.substring(1).split('&');
@@ -198,6 +202,7 @@
198
202
  }
199
203
  }]
200
204
  ];
205
+ demo.hideMapOnLoad = true;
201
206
  }
202
207
  </script>
203
208
  </head>
@@ -140,9 +140,11 @@
140
140
  //id: "c720e337ff814fe4a83bc244c46f8e43" //15 Layers
141
141
  //id: "f5186c798b9e40dab1078658ddbc28cf" // 30K features
142
142
  //id: "dda88d905a6748a5ab46bea5be795f33" // screening layers
143
- id: "b5bdcb1e5d684dd3b21a2d44b8e4f928" //Popup content
143
+ id: "b5bdcb1e5d684dd3b21a2d44b8e4f928" //Popup content + like dislike
144
144
  //id: "d399ec39959a4aac8617ae4f05dd6785" //Arcade
145
145
  //id: "024e8a5e73a34c5aade9632d651c5750" //Attachments
146
+ //id: "ae6d5d1936e84ce7adde44c7a7908846" //like dislike
147
+ // id: "ce3dec81bf714d3bb71da9691ab686d1" //Filter
146
148
  }
147
149
  const webMap = new WebMap({
148
150
  portalItem: custom ?? portalItem
@@ -164,6 +166,118 @@
164
166
  demo.enableNewReports = true;
165
167
  demo.theme = "light";
166
168
  demo.reportSubmittedMessage = "Thank you! Your request was successfully submitted";
169
+
170
+ //Set the zoomScale to be used when zooming to single point feature
171
+ //demo.zoomToScale = 139596221; //World
172
+ //demo.zoomToScale = 33800278;//Country
173
+ //demo.zoomToScale = 4291772;//States
174
+ demo.zoomToScale = 96610;//City
175
+ //demo.zoomToScale = 3495; //Building
176
+
177
+ //Set filter config
178
+ demo.layerExpressions = [
179
+ {
180
+ id: "Requests_681",
181
+ title: "Requests",
182
+ operator: " AND ",
183
+ expressions: [
184
+ {
185
+ definitionExpression: "OBJECTID > 690",
186
+ id: 1701793260225,
187
+ index: 0,
188
+ name: "greater than 690",
189
+ active: false
190
+ },
191
+ {
192
+ id: 1654881457794,
193
+ name: 'status',
194
+ type: 'string',
195
+ field: 'status'
196
+ }
197
+ ]
198
+ },{
199
+ id: "18f056682a4-layer-12",
200
+ title: "PopUp with date in title",
201
+ operator: " AND ",
202
+ expressions: [
203
+ {
204
+ definitionExpression: "shrt > 0",
205
+ id: 1901793260225,
206
+ index: 0,
207
+ name: "Like greater than 0",
208
+ active: false
209
+ }
210
+ ]
211
+ }
212
+ ];
213
+ //Set the reporting layer options, layers from this object with reporting set to true will only be shown in layer list
214
+ //if all the layers from map should be considered for reporting then pass true for each layer
215
+ demo.reportingOptions = {
216
+ "Requests_681":{
217
+ reporting: true,
218
+ comment: false,
219
+ like: false,
220
+ likeField: "Like_field",
221
+ dislike: false,
222
+ dislikeField: "Dislike_field"
223
+ },
224
+ "18cdb191817-layer-5": {
225
+ reporting: true,
226
+ comment: false,
227
+ like: true,
228
+ likeField: "Like_field",
229
+ dislike: true,
230
+ dislikeField: "Dislike_field"
231
+ },
232
+ "18f056682a4-layer-12":{
233
+ reporting: true,
234
+ comment: false,
235
+ like: true,
236
+ likeField: "shrt",
237
+ dislike: false,
238
+ dislikeField: "dislike_field"
239
+ },
240
+ "18f2a1562a8-layer-7": {
241
+ reporting: true,
242
+ comment: true,
243
+ like: true,
244
+ likeField: "like_field",
245
+ dislike: true,
246
+ dislikeField: "dislike_field"
247
+ },
248
+ "18f2a1562a5-layer-3": {
249
+ reporting: true,
250
+ comment: true,
251
+ like: true,
252
+ likeField: "like_field",
253
+ dislike: true,
254
+ dislikeField: "dislike_field"
255
+ },
256
+ "18f2a1562a7-layer-4": {
257
+ reporting: true,
258
+ comment: true,
259
+ like: true,
260
+ likeField: "like_field",
261
+ dislike: true,
262
+ dislikeField: "dislike_field"
263
+ },
264
+ "18f2a1562a7-layer-5": {
265
+ reporting: true,
266
+ comment: true,
267
+ like: true,
268
+ likeField: "like_field",
269
+ dislike: true,
270
+ dislikeField: "dislike_field"
271
+ },
272
+ "18f2a1562a8-layer-6": {
273
+ reporting: true,
274
+ comment: true,
275
+ like: true,
276
+ likeField: "like_field",
277
+ dislike: true,
278
+ dislikeField: "dislike_field"
279
+ }
280
+ }
167
281
  //Select reporting layers -
168
282
  //demo.layers = ['SE_field_mapping_9688', 'SE_field_mapping_5784', 'SE_field_mapping_1853']; //Se mapping
169
283
  //demo.layers = ['Three_Layers_nested_4042', 'SE_sort_2889', 'SE_sort_756']; //screening layers
@@ -33,7 +33,7 @@ export async function getMapLayerHash(mapView, onlyShowUpdatableLayers) {
33
33
  let layerHash;
34
34
  await mapView.when(() => {
35
35
  layerHash = mapView.map.allLayers.toArray().reduce((prev, cur) => {
36
- if (cur.type === "feature") {
36
+ if (cur.type === "feature" || (cur === null || cur === void 0 ? void 0 : cur.type) === "subtype-group") {
37
37
  prev[cur.id] = {
38
38
  name: cur.title,
39
39
  supportsUpdate: undefined
@@ -154,12 +154,13 @@ export async function getAllLayers(mapView) {
154
154
  * @param layerView the layer view to highlight
155
155
  * @param mapView the map view used if updateExtent is true
156
156
  * @param updateExtent optional (default false) boolean to indicate if we should zoom to the extent
157
+ * @param zoomToScale optional (default 0) zoomScale that individual points will use when zoomed to
157
158
  *
158
159
  * @returns Promise resolving with the highlight handle
159
160
  */
160
- export async function highlightFeatures(ids, layerView, mapView, updateExtent = false) {
161
+ export async function highlightFeatures(ids, layerView, mapView, updateExtent = false, zoomToScale = 0) {
161
162
  if (updateExtent) {
162
- await goToSelection(ids, layerView, mapView, false);
163
+ await goToSelection(ids, layerView, mapView, false, undefined, zoomToScale);
163
164
  //wait for sometime to load the feature in layerView then only the highlight will work
164
165
  await new Promise(resolve => setTimeout(resolve, 1000));
165
166
  }
@@ -245,13 +246,18 @@ export async function flashSelection(ids, layerView, featureEffect) {
245
246
  * @param layerView the layer view that contains the OIDs
246
247
  * @param mapView the map view to show the extent change
247
248
  * @param flashFeatures optional (default true) boolean to indicate if we should flash the features
248
- *
249
+ * @param featureEffect optional (default undefined) feature effect when flashing the features
250
+ * @param zoomToScale optional (default to 0) zoomScale that individual points will use when zoomed to
249
251
  * @returns Promise resolving when the operation is complete
250
252
  *
251
253
  */
252
- export async function goToSelection(ids, layerView, mapView, flashFeatures = true, featureEffect = undefined) {
254
+ export async function goToSelection(ids, layerView, mapView, flashFeatures = true, featureEffect = undefined, zoomToScale = 0) {
253
255
  const result = await queryExtent(ids, layerView.layer);
254
- await mapView.goTo(result.extent);
256
+ const goToParams = { target: result.extent };
257
+ if (result.count === 1 && layerView.layer.geometryType === 'point' && zoomToScale) {
258
+ goToParams.scale = zoomToScale;
259
+ }
260
+ await mapView.goTo(goToParams);
255
261
  if (flashFeatures) {
256
262
  await flashSelection(ids, layerView, featureEffect);
257
263
  }
@@ -33,7 +33,7 @@ export async function getMapLayerHash(
33
33
  let layerHash;
34
34
  await mapView.when(() => {
35
35
  layerHash = mapView.map.allLayers.toArray().reduce((prev, cur) => {
36
- if (cur.type === "feature") {
36
+ if (cur.type === "feature" || cur?.type === "subtype-group") {
37
37
  prev[cur.id] = {
38
38
  name: cur.title,
39
39
  supportsUpdate: undefined
@@ -182,6 +182,7 @@ export async function getAllLayers(
182
182
  * @param layerView the layer view to highlight
183
183
  * @param mapView the map view used if updateExtent is true
184
184
  * @param updateExtent optional (default false) boolean to indicate if we should zoom to the extent
185
+ * @param zoomToScale optional (default 0) zoomScale that individual points will use when zoomed to
185
186
  *
186
187
  * @returns Promise resolving with the highlight handle
187
188
  */
@@ -189,10 +190,11 @@ export async function highlightFeatures(
189
190
  ids: number[],
190
191
  layerView: __esri.FeatureLayerView,
191
192
  mapView: __esri.MapView,
192
- updateExtent = false
193
+ updateExtent = false,
194
+ zoomToScale = 0
193
195
  ): Promise<__esri.Handle> {
194
196
  if (updateExtent) {
195
- await goToSelection(ids, layerView, mapView, false);
197
+ await goToSelection(ids, layerView, mapView, false, undefined, zoomToScale);
196
198
  //wait for sometime to load the feature in layerView then only the highlight will work
197
199
  await new Promise(resolve => setTimeout(resolve, 1000));
198
200
  }
@@ -295,7 +297,8 @@ export async function flashSelection(
295
297
  * @param layerView the layer view that contains the OIDs
296
298
  * @param mapView the map view to show the extent change
297
299
  * @param flashFeatures optional (default true) boolean to indicate if we should flash the features
298
- *
300
+ * @param featureEffect optional (default undefined) feature effect when flashing the features
301
+ * @param zoomToScale optional (default to 0) zoomScale that individual points will use when zoomed to
299
302
  * @returns Promise resolving when the operation is complete
300
303
  *
301
304
  */
@@ -304,10 +307,15 @@ export async function goToSelection(
304
307
  layerView: __esri.FeatureLayerView,
305
308
  mapView: __esri.MapView,
306
309
  flashFeatures = true,
307
- featureEffect: __esri.FeatureEffect = undefined
310
+ featureEffect: __esri.FeatureEffect = undefined,
311
+ zoomToScale = 0
308
312
  ): Promise<void> {
309
313
  const result = await queryExtent(ids, layerView.layer);
310
- await mapView.goTo(result.extent);
314
+ const goToParams: { target: __esri.Extent; scale?: number; } = { target: result.extent };
315
+ if (result.count === 1 && layerView.layer.geometryType === 'point' && zoomToScale) {
316
+ goToParams.scale = zoomToScale
317
+ }
318
+ await mapView.goTo(goToParams);
311
319
  if (flashFeatures) {
312
320
  await flashSelection(ids, layerView, featureEffect);
313
321
  }
@@ -17,6 +17,7 @@ const CreateFeature = /*@__PURE__*/ proxyCustomElement(class CreateFeature exten
17
17
  this.fail = createEvent(this, "fail", 7);
18
18
  this.drawComplete = createEvent(this, "drawComplete", 7);
19
19
  this.editingAttachment = createEvent(this, "editingAttachment", 7);
20
+ this.progressStatus = createEvent(this, "progressStatus", 7);
20
21
  this.mapView = undefined;
21
22
  this.selectedLayerId = undefined;
22
23
  this.customizeSubmit = false;
@@ -161,6 +162,7 @@ const CreateFeature = /*@__PURE__*/ proxyCustomElement(class CreateFeature exten
161
162
  //Add handle to watch featureTemplatesViewModel ready state and then start the creation
162
163
  const handle = this.reactiveUtils.watch(() => this._editor.viewModel.featureTemplatesViewModel.state, (state) => {
163
164
  if (state === 'ready') {
165
+ this.progressStatus.emit(0.5);
164
166
  void this.startCreate();
165
167
  }
166
168
  });
@@ -184,6 +186,7 @@ const CreateFeature = /*@__PURE__*/ proxyCustomElement(class CreateFeature exten
184
186
  //once the feature template is selected handle the event for formSubmit and sketch complete
185
187
  //also, hide the headers and footer in the editor as we will be showing our own submit and cancel button
186
188
  this._editor.viewModel.featureTemplatesViewModel.on('select', () => {
189
+ this.progressStatus.emit(0.75);
187
190
  setTimeout(() => {
188
191
  //on form submit
189
192
  this._editor.viewModel.featureFormViewModel.on('submit', this.submitted.bind(this));
@@ -191,6 +194,7 @@ const CreateFeature = /*@__PURE__*/ proxyCustomElement(class CreateFeature exten
191
194
  this._editor.viewModel.sketchViewModel.on("create", (evt) => {
192
195
  if (evt.state === "complete") {
193
196
  this.showSearchWidget = false;
197
+ this.progressStatus.emit(1);
194
198
  this.drawComplete.emit();
195
199
  }
196
200
  });