@esri/solutions-components 0.8.24 → 0.8.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (30) hide show
  1. package/dist/cjs/calcite-flow_6.cjs.entry.js +29 -15
  2. package/dist/cjs/crowdsource-reporter.cjs.entry.js +4 -4
  3. package/dist/cjs/feature-list.cjs.entry.js +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/solutions-components.cjs.js +1 -1
  6. package/dist/collection/components/create-feature/create-feature.js +9 -2
  7. package/dist/collection/components/create-related-feature/create-related-feature.js +9 -2
  8. package/dist/collection/components/crowdsource-reporter/crowdsource-reporter.js +4 -4
  9. package/dist/collection/components/feature-details/feature-details.css +4 -4
  10. package/dist/collection/components/feature-details/feature-details.js +12 -11
  11. package/dist/collection/components/feature-list/feature-list.css +2 -0
  12. package/dist/components/create-feature2.js +9 -2
  13. package/dist/components/create-related-feature2.js +9 -2
  14. package/dist/components/crowdsource-reporter.js +4 -4
  15. package/dist/components/feature-details2.js +12 -11
  16. package/dist/components/feature-list2.js +1 -1
  17. package/dist/esm/calcite-flow_6.entry.js +29 -15
  18. package/dist/esm/crowdsource-reporter.entry.js +4 -4
  19. package/dist/esm/feature-list.entry.js +1 -1
  20. package/dist/esm/loader.js +1 -1
  21. package/dist/esm/solutions-components.js +1 -1
  22. package/dist/solutions-components/{p-e78be59a.entry.js → p-5b817c98.entry.js} +1 -1
  23. package/dist/solutions-components/{p-1251dcc6.entry.js → p-686fa7ce.entry.js} +1 -1
  24. package/dist/solutions-components/p-c2ec0dcc.entry.js +17 -0
  25. package/dist/solutions-components/solutions-components.esm.js +1 -1
  26. package/dist/types/components/create-feature/create-feature.d.ts +4 -0
  27. package/dist/types/components/create-related-feature/create-related-feature.d.ts +4 -0
  28. package/dist/types/components/feature-details/feature-details.d.ts +4 -0
  29. package/package.json +1 -1
  30. package/dist/solutions-components/p-cbf0dada.entry.js +0 -17
@@ -23,6 +23,10 @@ import { loadModules } from "../../utils/loadModules";
23
23
  import { getAllLayers, getLayerOrTable } from "../../utils/mapViewUtils";
24
24
  export class CreateFeature {
25
25
  constructor() {
26
+ /**
27
+ * boolean: Flag to maintain form submission using submit button
28
+ */
29
+ this._isSubmitBtnClicked = false;
26
30
  this.mapView = undefined;
27
31
  this.selectedLayerId = undefined;
28
32
  this.customizeSubmit = false;
@@ -62,6 +66,7 @@ export class CreateFeature {
62
66
  */
63
67
  async submit() {
64
68
  if (this._editor) {
69
+ this._isSubmitBtnClicked = true;
65
70
  this._editor.viewModel.featureFormViewModel.submit();
66
71
  }
67
72
  }
@@ -88,7 +93,7 @@ export class CreateFeature {
88
93
  */
89
94
  render() {
90
95
  const showSearchWidget = this.showSearchWidget ? '' : 'display-none';
91
- return (h(Fragment, { key: 'e1427c13c0385279fcb0f122b50b891eac419ec4' }, h("div", { key: '039e8d8ff5792765c73cb23df37f37bacc0c9dda', id: "feature-form" }), h("div", { key: '94601056ec69000009f4b71b34a38cea28635d99', class: `search-widget ${showSearchWidget}`, id: "search-widget-ref" })));
96
+ return (h(Fragment, { key: 'd11a16053bc5eb86a09fd3bc35c9a89cee6dd064' }, h("div", { key: '0320bb0ca9fc069306151078c66fbee11060fcab', id: "feature-form" }), h("div", { key: '8aaa13e87213a880382ca408d324beb79ba7a500', class: `search-widget ${showSearchWidget}`, id: "search-widget-ref" })));
92
97
  }
93
98
  //--------------------------------------------------------------------------
94
99
  //
@@ -334,11 +339,13 @@ export class CreateFeature {
334
339
  var _a;
335
340
  //return if any attribute is invalid , focus will be shifted to the invalid attribute in feature form
336
341
  if (evt.invalid.length) {
342
+ this._isSubmitBtnClicked = false;
337
343
  return;
338
344
  }
339
345
  //Submit only when valid attributes
340
346
  //emit success or fail based on the result
341
- if (evt.valid.length) {
347
+ if (evt.valid.length && this._isSubmitBtnClicked) {
348
+ this._isSubmitBtnClicked = false;
342
349
  try {
343
350
  await this._editor.activeWorkflow.commit();
344
351
  //throw errors if any failures
@@ -22,6 +22,10 @@ import { Host, h } from "@stencil/core";
22
22
  import { loadModules } from "../../utils/loadModules";
23
23
  export class CreateRelatedFeature {
24
24
  constructor() {
25
+ /**
26
+ * boolean: Flag to maintain form submission using submit button
27
+ */
28
+ this._isSubmitBtnClicked = false;
25
29
  this.mapView = undefined;
26
30
  this.table = undefined;
27
31
  this.selectedFeature = undefined;
@@ -58,6 +62,7 @@ export class CreateRelatedFeature {
58
62
  */
59
63
  async submit() {
60
64
  if (this._editor) {
65
+ this._isSubmitBtnClicked = true;
61
66
  this._editor.viewModel.featureFormViewModel.submit();
62
67
  }
63
68
  }
@@ -95,7 +100,7 @@ export class CreateRelatedFeature {
95
100
  this.reactiveUtils = reactiveUtils;
96
101
  }
97
102
  render() {
98
- return (h(Host, { key: '579af77dcac88043b178e711e0b47d7982c1c87f' }));
103
+ return (h(Host, { key: '8c32e05707b6e5501759caaef5d89f8da40640e4' }));
99
104
  }
100
105
  /**
101
106
  * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
@@ -225,11 +230,13 @@ export class CreateRelatedFeature {
225
230
  var _a;
226
231
  //return if any attribute is invalid , focus will be shifted to the invalid attribute in feature form
227
232
  if (evt.invalid.length) {
233
+ this._isSubmitBtnClicked = false;
228
234
  return;
229
235
  }
230
236
  //Submit only when valid attributes
231
237
  //emit success or fail based on the result
232
- if (evt.valid.length) {
238
+ if (evt.valid.length && this._isSubmitBtnClicked) {
239
+ this._isSubmitBtnClicked = false;
233
240
  try {
234
241
  await this._editor.activeWorkflow.commit();
235
242
  //throw errors if any failures
@@ -118,7 +118,7 @@ export class CrowdsourceReporter {
118
118
  */
119
119
  render() {
120
120
  const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
121
- return (h(Host, { key: '25711a088216a3fcf2aa5d39b81ebd124f004306' }, this._reportSubmitted && h("calcite-alert", { key: 'b8cf62929599eb873a52c7e7a9b056e25fd86c2a', "auto-close": true, class: themeClass + " report-submitted-msg", icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._reportSubmitted = false; }, open: true, placement: "top" }, h("div", { key: '6411e0e7b57fd58f8ba7987331271f0494ba113b', slot: "message" }, this.reportSubmittedMessage ? this.reportSubmittedMessage : this._translations.submitMsg)), this._featureCreationFailedErrorMsg && h("calcite-alert", { key: '67b28ad1e3493427227d2d59548a5eac80041dea', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._featureCreationFailedErrorMsg = ""; }, open: true, placement: "top" }, h("div", { key: '3ad206c32a217e6a9a5bb1e638ef3160fbff5db2', slot: "title" }, this._translations.error), h("div", { key: '7580dd6b3f81a9b0c4263fb9e71e2031e199b41d', slot: "message" }, this._featureCreationFailedErrorMsg)), this._commentSubmitted && h("calcite-alert", { key: '7be4c3b5d07e9f30551d19990462bb3d1152b2a3', "auto-close": true, class: 'report-submitted ' + themeClass, icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._commentSubmitted = false; }, open: true, placement: "top" }, h("div", { key: '41c01a889ed6732cf7dabf0945fbfb261a0f3a3b', slot: "message" }, this._translations.commentSubmittedMsg)), this._addingCommentFailed && h("calcite-alert", { key: '29bca2310f6877ec976fbe49ac39413593202a4d', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._addingCommentFailed = false; }, open: true, placement: "top" }, h("div", { key: '8a7860934cebec53462c46e0d979268c75fb9705', slot: "title" }, this._translations.error), h("div", { key: 'd675ee393e81f5104d87391075a9ae89b4077a45', slot: "message" }, this._translations.addingCommentFailedMsg)), h("div", { key: '1fce11b73759bc751de763e040d15d85a3fb347d' }, h("calcite-shell", { key: '71634d0d1b0fcbe92813ff9b514ec4e752bd3fd1', "content-behind": true }, this._getReporter())), this.filterModal()));
121
+ return (h(Host, { key: '497227745f29c2afc434349e86da19b088b1eb78' }, this._reportSubmitted && h("calcite-alert", { key: 'd22cceb7124073ad390cd53d97214a2983e97ea0', "auto-close": true, class: themeClass + " report-submitted-msg", icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._reportSubmitted = false; }, open: true, placement: "top" }, h("div", { key: '1f98f71fa79cf64e65fecfbceec3862714702609', slot: "message" }, this.reportSubmittedMessage ? this.reportSubmittedMessage : this._translations.submitMsg)), this._featureCreationFailedErrorMsg && h("calcite-alert", { key: '381d3b5a3f5115782634833ad53b4494e888ea97', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._featureCreationFailedErrorMsg = ""; }, open: true, placement: "top" }, h("div", { key: '34371959d1272e4bc465e5f5a432d450a156c20b', slot: "title" }, this._translations.error), h("div", { key: '09a55e3325edde43f660a2db1621a4ffd373e09f', slot: "message" }, this._featureCreationFailedErrorMsg)), this._commentSubmitted && h("calcite-alert", { key: '33d79a67575c9a2b14e602e60b702ca82025e20f', "auto-close": true, class: 'report-submitted ' + themeClass, icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._commentSubmitted = false; }, open: true, placement: "top" }, h("div", { key: '91b9dcc26cf1f66a116a287a94e8df5c3d2f37bf', slot: "message" }, this._translations.commentSubmittedMsg)), this._addingCommentFailed && h("calcite-alert", { key: '758f1d465d4301fade8fd93a682bfe4b359be2ca', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._addingCommentFailed = false; }, open: true, placement: "top" }, h("div", { key: '982424caf90e309701c62c75065d7e7e15d327b4', slot: "title" }, this._translations.error), h("div", { key: '1c93f9f8e1b958ccf8553560c36a32273f16a3a6', slot: "message" }, this._translations.addingCommentFailedMsg)), h("div", { key: '612254cf38da92cf88b90ace8136a2e0859afcae' }, h("calcite-shell", { key: 'bb56100b4dfc355b93d580deee929aad7cfb3f7f', "content-behind": true }, this._getReporter())), this.filterModal()));
122
122
  }
123
123
  //--------------------------------------------------------------------------
124
124
  //
@@ -788,8 +788,9 @@ export class CrowdsourceReporter {
788
788
  */
789
789
  reduceToConfiguredLayers(hash) {
790
790
  return Object.keys(hash).reduce((prev, cur) => {
791
+ var _a;
791
792
  // check if reporting options exists consider the visible prop if else just check the supports Add
792
- const showLayer = this.reportingOptions ? this._getLayersConfig(cur).visible
793
+ const showLayer = this.reportingOptions ? (_a = this._getLayersConfig(cur)) === null || _a === void 0 ? void 0 : _a.visible
793
794
  : hash[cur].supportsAdd;
794
795
  if (showLayer) {
795
796
  prev.push(cur);
@@ -871,7 +872,7 @@ export class CrowdsourceReporter {
871
872
  const featureSet = await queryFeaturesByID([Number(this.objectId)], layer, [], true, this.mapView.spatialReference);
872
873
  if (featureSet.length) {
873
874
  //update the selectedFeature
874
- this._selectedFeature = featureSet;
875
+ await this.setSelectedFeatures(featureSet);
875
876
  //if featureDetails not open then add it to the list else just reInit flowItems which will update details with newly selected features
876
877
  // eslint-disable-next-line unicorn/prefer-ternary
877
878
  if (this._flowItems.length && this._flowItems[this._flowItems.length - 1] !== "feature-details") {
@@ -880,7 +881,6 @@ export class CrowdsourceReporter {
880
881
  else {
881
882
  this._flowItems = [...this._flowItems];
882
883
  }
883
- await this.highlightOnMap(featureSet[0]);
884
884
  }
885
885
  }
886
886
  }
@@ -5,7 +5,7 @@
5
5
  .buttons-container{
6
6
  align-items: center;
7
7
  display: flex;
8
- padding: 10px;
8
+ padding: 4px;
9
9
  color: var(--calcite-color-text-1) !important;
10
10
  background-color: var(--calcite-color-foreground-1) !important;
11
11
  border-block-start: 1px solid var(--calcite-color-border-3);
@@ -14,8 +14,8 @@
14
14
 
15
15
  .comment-btn{
16
16
  display: flex;
17
- gap: 5px;
18
- font-size: var(--calcite-font-size--2);
17
+ gap: 10px;
18
+ font-size: var(--calcite-font-size--1);
19
19
  align-items: center;
20
- padding: 0 0.5rem;
20
+ padding: 7px 0.75rem;
21
21
  }
@@ -39,6 +39,7 @@ export class FeatureDetails {
39
39
  this._isLikeBtnClicked = false;
40
40
  this._isDislikeBtnClicked = false;
41
41
  this._relatedFeaturesOIDs = undefined;
42
+ this._updating = false;
42
43
  }
43
44
  //--------------------------------------------------------------------------
44
45
  //
@@ -110,12 +111,12 @@ export class FeatureDetails {
110
111
  var _a, _b, _c, _d, _e;
111
112
  //When related features found show comments list of only those features else comments list will be empty
112
113
  const commentsListWhereClause = ((_a = this._relatedFeaturesOIDs) === null || _a === void 0 ? void 0 : _a.length) > 0 ? `objectId in(${this._relatedFeaturesOIDs})` : '1=0';
113
- return (h("calcite-panel", { key: 'f8d1d282a6ebdb4d5a64efd96d88329d375b7fe1', "full-height": true }, h("info-card", { key: '3cfca85af149ab445973510ff1a9f94e22c5c833', allowEditing: false, graphics: this.graphics, highlightEnabled: false, isLoading: false, isMobile: false, mapView: this.mapView, onSelectionChanged: (e) => { this.featureSelectionChange.emit(e.detail); }, paginationEnabled: false, position: "relative", ref: el => this._infoCard = el }), (this._likeFieldAvailable || this._dislikeFieldAvailable || this._commentsAvailable) &&
114
- h("div", { key: 'a3242d417cef788f0f677bf21c65fb9aaa44f8b2', class: "buttons-container" }, this._commentsAvailable &&
115
- h("div", { key: '9dcfccc0a48b719d14cb08737d654000a27e21cc', class: "comment-btn" }, h("span", { key: 'b68cafd0cebfa91c12f32f648ec2f71a51e3b9da' }, this._relatedFeaturesOIDs.length), h("calcite-icon", { key: 'f2b9c34ac64a5cb7692f80cd73658f077525eee4', icon: "speech-bubble", scale: 's' })), this._likeFieldAvailable &&
116
- h("calcite-button", { key: '7a4ec79205b3eccceb7d43de2c227d8407c24a26', appearance: "transparent", iconEnd: "thumbs-up", kind: this._isLikeBtnClicked ? "brand" : "neutral", onClick: this.onLikeButtonClick.bind(this), scale: 's' }, (_c = (_b = this._likeCount) !== null && _b !== void 0 ? _b : this._selectedGraphic.attributes[this._likeField]) !== null && _c !== void 0 ? _c : 0), this._dislikeFieldAvailable &&
117
- h("calcite-button", { key: '4634f8aeb114f97c9ceaae8eac5da86afa89f217', appearance: "transparent", iconEnd: "thumbs-down", kind: this._isDislikeBtnClicked ? "brand" : "neutral", onClick: this.onDislikeButtonClick.bind(this), scale: 's' }, (_e = (_d = this._disLikeCount) !== null && _d !== void 0 ? _d : this._selectedGraphic.attributes[this._dislikeField]) !== null && _e !== void 0 ? _e : 0)), this.relatedTableId && this._commentsAvailable &&
118
- h("feature-list", { key: '30559c6f28a741264972677cef1f182f1012f73f', class: "height-full", mapView: this.mapView, onFeatureSelect: (e) => { this.commentSelect.emit(e.detail); }, pageSize: 5, ref: el => this._commentsList = el, selectedLayerId: this.relatedTableId, showErrorWhenNoFeatures: false, showInitialLoading: false, textSize: "small", whereClause: commentsListWhereClause })));
114
+ return (h("calcite-panel", { key: '8d7069fec0df2a6217c175df6171376b4412c548', "full-height": true }, h("info-card", { key: '3713b783371bcb36a9b844196033326941d833f5', allowEditing: false, graphics: this.graphics, highlightEnabled: false, isLoading: false, isMobile: false, mapView: this.mapView, onSelectionChanged: (e) => { this.featureSelectionChange.emit(e.detail); }, paginationEnabled: false, position: "relative", ref: el => this._infoCard = el }), (this._likeFieldAvailable || this._dislikeFieldAvailable || this._commentsAvailable) &&
115
+ h("div", { key: '8c84e82708fab0d6091050672b26e6fa2de59345', class: "buttons-container" }, this._commentsAvailable &&
116
+ h("div", { key: '22edb3f17ef6a2bdef67e5e94492966986d452b7', class: "comment-btn" }, h("span", { key: '03b7eb0aff4358aac3020b3d6d52a2d47b308a41' }, this._relatedFeaturesOIDs.length), h("calcite-icon", { key: '5225e156b45a15db0055a28ed21bc3511dedc706', icon: "speech-bubble", scale: 's' })), this._likeFieldAvailable &&
117
+ h("calcite-button", { key: '1a291524d46c6f826813c87f781e7d6bcf5bc097', appearance: "transparent", iconEnd: "thumbs-up", kind: this._isLikeBtnClicked ? "brand" : "neutral", loading: this._updating, onClick: this.onLikeButtonClick.bind(this), scale: 'm' }, (_c = (_b = this._likeCount) !== null && _b !== void 0 ? _b : this._selectedGraphic.attributes[this._likeField]) !== null && _c !== void 0 ? _c : 0), this._dislikeFieldAvailable &&
118
+ h("calcite-button", { key: 'da6bee2189565c1eb70564b340e742494bac35c9', appearance: "transparent", iconEnd: "thumbs-down", kind: this._isDislikeBtnClicked ? "brand" : "neutral", loading: this._updating, onClick: this.onDislikeButtonClick.bind(this), scale: 'm' }, (_e = (_d = this._disLikeCount) !== null && _d !== void 0 ? _d : this._selectedGraphic.attributes[this._dislikeField]) !== null && _e !== void 0 ? _e : 0)), this.relatedTableId && this._commentsAvailable &&
119
+ h("feature-list", { key: 'fd6faa9f3404a2dfadb102ca7c578ffb47207729', class: "height-full", mapView: this.mapView, onFeatureSelect: (e) => { this.commentSelect.emit(e.detail); }, pageSize: 5, ref: el => this._commentsList = el, selectedLayerId: this.relatedTableId, showErrorWhenNoFeatures: false, showInitialLoading: false, textSize: "small", whereClause: commentsListWhereClause })));
119
120
  }
120
121
  /**
121
122
  * Load esri javascript api modules
@@ -272,7 +273,6 @@ export class FeatureDetails {
272
273
  * @protected
273
274
  */
274
275
  onLikeButtonClick() {
275
- this.loadingStatus.emit(true);
276
276
  if (this._isDislikeBtnClicked && this.reportingOptions[this._selectedGraphic.layer.id].dislike) {
277
277
  this.onDislikeButtonClick();
278
278
  }
@@ -290,7 +290,6 @@ export class FeatureDetails {
290
290
  * @protected
291
291
  */
292
292
  onDislikeButtonClick() {
293
- this.loadingStatus.emit(true);
294
293
  if (this._isLikeBtnClicked && this.reportingOptions[this._selectedGraphic.layer.id].like) {
295
294
  this.onLikeButtonClick();
296
295
  }
@@ -312,6 +311,7 @@ export class FeatureDetails {
312
311
  async updateFeaturesLikeDislikeField(fieldName, buttonClicked) {
313
312
  const attributesToUpdate = {};
314
313
  const selectedLayer = this._selectedGraphic.layer;
314
+ this._updating = true;
315
315
  //Increment the value if button is clicked or else decrement it
316
316
  const selectFeatureAttr = this._selectedGraphic;
317
317
  if (buttonClicked) {
@@ -335,9 +335,9 @@ export class FeatureDetails {
335
335
  }
336
336
  //store the like dislike value for the current selected graphic in local storage
337
337
  this.setInLocalStorage();
338
- this.loadingStatus.emit(false);
338
+ this._updating = false;
339
339
  }, (err) => {
340
- this.loadingStatus.emit(false);
340
+ this._updating = false;
341
341
  console.log(err);
342
342
  });
343
343
  }
@@ -490,7 +490,8 @@ export class FeatureDetails {
490
490
  "_commentsAvailable": {},
491
491
  "_isLikeBtnClicked": {},
492
492
  "_isDislikeBtnClicked": {},
493
- "_relatedFeaturesOIDs": {}
493
+ "_relatedFeaturesOIDs": {},
494
+ "_updating": {}
494
495
  };
495
496
  }
496
497
  static get events() {
@@ -35,9 +35,11 @@
35
35
  .feature-list-popup-title {
36
36
  font-weight: 500;
37
37
  padding: 10px 12px;
38
+ white-space: pre-line;
38
39
  }
39
40
 
40
41
  .feature-list-popup-title-small {
41
42
  font-size: small;
42
43
  padding: 10px 12px;
44
+ white-space: pre-line;
43
45
  }
@@ -19,6 +19,10 @@ const CreateFeature = /*@__PURE__*/ proxyCustomElement(class CreateFeature exten
19
19
  this.drawComplete = createEvent(this, "drawComplete", 7);
20
20
  this.editingAttachment = createEvent(this, "editingAttachment", 7);
21
21
  this.progressStatus = createEvent(this, "progressStatus", 7);
22
+ /**
23
+ * boolean: Flag to maintain form submission using submit button
24
+ */
25
+ this._isSubmitBtnClicked = false;
22
26
  this.mapView = undefined;
23
27
  this.selectedLayerId = undefined;
24
28
  this.customizeSubmit = false;
@@ -58,6 +62,7 @@ const CreateFeature = /*@__PURE__*/ proxyCustomElement(class CreateFeature exten
58
62
  */
59
63
  async submit() {
60
64
  if (this._editor) {
65
+ this._isSubmitBtnClicked = true;
61
66
  this._editor.viewModel.featureFormViewModel.submit();
62
67
  }
63
68
  }
@@ -84,7 +89,7 @@ const CreateFeature = /*@__PURE__*/ proxyCustomElement(class CreateFeature exten
84
89
  */
85
90
  render() {
86
91
  const showSearchWidget = this.showSearchWidget ? '' : 'display-none';
87
- return (h(Fragment, { key: 'e1427c13c0385279fcb0f122b50b891eac419ec4' }, h("div", { key: '039e8d8ff5792765c73cb23df37f37bacc0c9dda', id: "feature-form" }), h("div", { key: '94601056ec69000009f4b71b34a38cea28635d99', class: `search-widget ${showSearchWidget}`, id: "search-widget-ref" })));
92
+ return (h(Fragment, { key: 'd11a16053bc5eb86a09fd3bc35c9a89cee6dd064' }, h("div", { key: '0320bb0ca9fc069306151078c66fbee11060fcab', id: "feature-form" }), h("div", { key: '8aaa13e87213a880382ca408d324beb79ba7a500', class: `search-widget ${showSearchWidget}`, id: "search-widget-ref" })));
88
93
  }
89
94
  //--------------------------------------------------------------------------
90
95
  //
@@ -330,11 +335,13 @@ const CreateFeature = /*@__PURE__*/ proxyCustomElement(class CreateFeature exten
330
335
  var _a;
331
336
  //return if any attribute is invalid , focus will be shifted to the invalid attribute in feature form
332
337
  if (evt.invalid.length) {
338
+ this._isSubmitBtnClicked = false;
333
339
  return;
334
340
  }
335
341
  //Submit only when valid attributes
336
342
  //emit success or fail based on the result
337
- if (evt.valid.length) {
343
+ if (evt.valid.length && this._isSubmitBtnClicked) {
344
+ this._isSubmitBtnClicked = false;
338
345
  try {
339
346
  await this._editor.activeWorkflow.commit();
340
347
  //throw errors if any failures
@@ -16,6 +16,10 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
16
16
  this.success = createEvent(this, "success", 7);
17
17
  this.fail = createEvent(this, "fail", 7);
18
18
  this.isActionPending = createEvent(this, "isActionPending", 7);
19
+ /**
20
+ * boolean: Flag to maintain form submission using submit button
21
+ */
22
+ this._isSubmitBtnClicked = false;
19
23
  this.mapView = undefined;
20
24
  this.table = undefined;
21
25
  this.selectedFeature = undefined;
@@ -52,6 +56,7 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
52
56
  */
53
57
  async submit() {
54
58
  if (this._editor) {
59
+ this._isSubmitBtnClicked = true;
55
60
  this._editor.viewModel.featureFormViewModel.submit();
56
61
  }
57
62
  }
@@ -89,7 +94,7 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
89
94
  this.reactiveUtils = reactiveUtils;
90
95
  }
91
96
  render() {
92
- return (h(Host, { key: '579af77dcac88043b178e711e0b47d7982c1c87f' }));
97
+ return (h(Host, { key: '8c32e05707b6e5501759caaef5d89f8da40640e4' }));
93
98
  }
94
99
  /**
95
100
  * StencilJS: Called once just after the component is fully loaded and the first render() occurs.
@@ -219,11 +224,13 @@ const CreateRelatedFeature = /*@__PURE__*/ proxyCustomElement(class CreateRelate
219
224
  var _a;
220
225
  //return if any attribute is invalid , focus will be shifted to the invalid attribute in feature form
221
226
  if (evt.invalid.length) {
227
+ this._isSubmitBtnClicked = false;
222
228
  return;
223
229
  }
224
230
  //Submit only when valid attributes
225
231
  //emit success or fail based on the result
226
- if (evt.valid.length) {
232
+ if (evt.valid.length && this._isSubmitBtnClicked) {
233
+ this._isSubmitBtnClicked = false;
227
234
  try {
228
235
  await this._editor.activeWorkflow.commit();
229
236
  //throw errors if any failures
@@ -156,7 +156,7 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
156
156
  */
157
157
  render() {
158
158
  const themeClass = this.theme === "dark" ? "calcite-mode-dark" : "calcite-mode-light";
159
- return (h(Host, { key: '25711a088216a3fcf2aa5d39b81ebd124f004306' }, this._reportSubmitted && h("calcite-alert", { key: 'b8cf62929599eb873a52c7e7a9b056e25fd86c2a', "auto-close": true, class: themeClass + " report-submitted-msg", icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._reportSubmitted = false; }, open: true, placement: "top" }, h("div", { key: '6411e0e7b57fd58f8ba7987331271f0494ba113b', slot: "message" }, this.reportSubmittedMessage ? this.reportSubmittedMessage : this._translations.submitMsg)), this._featureCreationFailedErrorMsg && h("calcite-alert", { key: '67b28ad1e3493427227d2d59548a5eac80041dea', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._featureCreationFailedErrorMsg = ""; }, open: true, placement: "top" }, h("div", { key: '3ad206c32a217e6a9a5bb1e638ef3160fbff5db2', slot: "title" }, this._translations.error), h("div", { key: '7580dd6b3f81a9b0c4263fb9e71e2031e199b41d', slot: "message" }, this._featureCreationFailedErrorMsg)), this._commentSubmitted && h("calcite-alert", { key: '7be4c3b5d07e9f30551d19990462bb3d1152b2a3', "auto-close": true, class: 'report-submitted ' + themeClass, icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._commentSubmitted = false; }, open: true, placement: "top" }, h("div", { key: '41c01a889ed6732cf7dabf0945fbfb261a0f3a3b', slot: "message" }, this._translations.commentSubmittedMsg)), this._addingCommentFailed && h("calcite-alert", { key: '29bca2310f6877ec976fbe49ac39413593202a4d', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._addingCommentFailed = false; }, open: true, placement: "top" }, h("div", { key: '8a7860934cebec53462c46e0d979268c75fb9705', slot: "title" }, this._translations.error), h("div", { key: 'd675ee393e81f5104d87391075a9ae89b4077a45', slot: "message" }, this._translations.addingCommentFailedMsg)), h("div", { key: '1fce11b73759bc751de763e040d15d85a3fb347d' }, h("calcite-shell", { key: '71634d0d1b0fcbe92813ff9b514ec4e752bd3fd1', "content-behind": true }, this._getReporter())), this.filterModal()));
159
+ return (h(Host, { key: '497227745f29c2afc434349e86da19b088b1eb78' }, this._reportSubmitted && h("calcite-alert", { key: 'd22cceb7124073ad390cd53d97214a2983e97ea0', "auto-close": true, class: themeClass + " report-submitted-msg", icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._reportSubmitted = false; }, open: true, placement: "top" }, h("div", { key: '1f98f71fa79cf64e65fecfbceec3862714702609', slot: "message" }, this.reportSubmittedMessage ? this.reportSubmittedMessage : this._translations.submitMsg)), this._featureCreationFailedErrorMsg && h("calcite-alert", { key: '381d3b5a3f5115782634833ad53b4494e888ea97', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._featureCreationFailedErrorMsg = ""; }, open: true, placement: "top" }, h("div", { key: '34371959d1272e4bc465e5f5a432d450a156c20b', slot: "title" }, this._translations.error), h("div", { key: '09a55e3325edde43f660a2db1621a4ffd373e09f', slot: "message" }, this._featureCreationFailedErrorMsg)), this._commentSubmitted && h("calcite-alert", { key: '33d79a67575c9a2b14e602e60b702ca82025e20f', "auto-close": true, class: 'report-submitted ' + themeClass, icon: "check-circle", kind: "success", label: "", onCalciteAlertClose: () => { this._commentSubmitted = false; }, open: true, placement: "top" }, h("div", { key: '91b9dcc26cf1f66a116a287a94e8df5c3d2f37bf', slot: "message" }, this._translations.commentSubmittedMsg)), this._addingCommentFailed && h("calcite-alert", { key: '758f1d465d4301fade8fd93a682bfe4b359be2ca', "auto-close": true, class: themeClass, icon: "x-octagon", kind: "danger", label: "", onCalciteAlertClose: () => { this._addingCommentFailed = false; }, open: true, placement: "top" }, h("div", { key: '982424caf90e309701c62c75065d7e7e15d327b4', slot: "title" }, this._translations.error), h("div", { key: '1c93f9f8e1b958ccf8553560c36a32273f16a3a6', slot: "message" }, this._translations.addingCommentFailedMsg)), h("div", { key: '612254cf38da92cf88b90ace8136a2e0859afcae' }, h("calcite-shell", { key: 'bb56100b4dfc355b93d580deee929aad7cfb3f7f', "content-behind": true }, this._getReporter())), this.filterModal()));
160
160
  }
161
161
  //--------------------------------------------------------------------------
162
162
  //
@@ -826,8 +826,9 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
826
826
  */
827
827
  reduceToConfiguredLayers(hash) {
828
828
  return Object.keys(hash).reduce((prev, cur) => {
829
+ var _a;
829
830
  // check if reporting options exists consider the visible prop if else just check the supports Add
830
- const showLayer = this.reportingOptions ? this._getLayersConfig(cur).visible
831
+ const showLayer = this.reportingOptions ? (_a = this._getLayersConfig(cur)) === null || _a === void 0 ? void 0 : _a.visible
831
832
  : hash[cur].supportsAdd;
832
833
  if (showLayer) {
833
834
  prev.push(cur);
@@ -909,7 +910,7 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
909
910
  const featureSet = await queryFeaturesByID([Number(this.objectId)], layer, [], true, this.mapView.spatialReference);
910
911
  if (featureSet.length) {
911
912
  //update the selectedFeature
912
- this._selectedFeature = featureSet;
913
+ await this.setSelectedFeatures(featureSet);
913
914
  //if featureDetails not open then add it to the list else just reInit flowItems which will update details with newly selected features
914
915
  // eslint-disable-next-line unicorn/prefer-ternary
915
916
  if (this._flowItems.length && this._flowItems[this._flowItems.length - 1] !== "feature-details") {
@@ -918,7 +919,6 @@ const CrowdsourceReporter$1 = /*@__PURE__*/ proxyCustomElement(class Crowdsource
918
919
  else {
919
920
  this._flowItems = [...this._flowItems];
920
921
  }
921
- await this.highlightOnMap(featureSet[0]);
922
922
  }
923
923
  }
924
924
  }
@@ -33,7 +33,7 @@ import { d as defineCustomElement$3 } from './edit-card2.js';
33
33
  import { d as defineCustomElement$2 } from './feature-list2.js';
34
34
  import { d as defineCustomElement$1 } from './info-card2.js';
35
35
 
36
- const featureDetailsCss = ":host{display:block}.buttons-container{align-items:center;display:flex;padding:10px;color:var(--calcite-color-text-1) !important;background-color:var(--calcite-color-foreground-1) !important;border-block-start:1px solid var(--calcite-color-border-3);border-block-end:1px solid var(--calcite-color-border-3)}.comment-btn{display:flex;gap:5px;font-size:var(--calcite-font-size--2);align-items:center;padding:0 0.5rem}";
36
+ const featureDetailsCss = ":host{display:block}.buttons-container{align-items:center;display:flex;padding:4px;color:var(--calcite-color-text-1) !important;background-color:var(--calcite-color-foreground-1) !important;border-block-start:1px solid var(--calcite-color-border-3);border-block-end:1px solid var(--calcite-color-border-3)}.comment-btn{display:flex;gap:10px;font-size:var(--calcite-font-size--1);align-items:center;padding:7px 0.75rem}";
37
37
  const FeatureDetailsStyle0 = featureDetailsCss;
38
38
 
39
39
  const FeatureDetails = /*@__PURE__*/ proxyCustomElement(class FeatureDetails extends HTMLElement {
@@ -59,6 +59,7 @@ const FeatureDetails = /*@__PURE__*/ proxyCustomElement(class FeatureDetails ext
59
59
  this._isLikeBtnClicked = false;
60
60
  this._isDislikeBtnClicked = false;
61
61
  this._relatedFeaturesOIDs = undefined;
62
+ this._updating = false;
62
63
  }
63
64
  //--------------------------------------------------------------------------
64
65
  //
@@ -130,12 +131,12 @@ const FeatureDetails = /*@__PURE__*/ proxyCustomElement(class FeatureDetails ext
130
131
  var _a, _b, _c, _d, _e;
131
132
  //When related features found show comments list of only those features else comments list will be empty
132
133
  const commentsListWhereClause = ((_a = this._relatedFeaturesOIDs) === null || _a === void 0 ? void 0 : _a.length) > 0 ? `objectId in(${this._relatedFeaturesOIDs})` : '1=0';
133
- return (h("calcite-panel", { key: 'f8d1d282a6ebdb4d5a64efd96d88329d375b7fe1', "full-height": true }, h("info-card", { key: '3cfca85af149ab445973510ff1a9f94e22c5c833', allowEditing: false, graphics: this.graphics, highlightEnabled: false, isLoading: false, isMobile: false, mapView: this.mapView, onSelectionChanged: (e) => { this.featureSelectionChange.emit(e.detail); }, paginationEnabled: false, position: "relative", ref: el => this._infoCard = el }), (this._likeFieldAvailable || this._dislikeFieldAvailable || this._commentsAvailable) &&
134
- h("div", { key: 'a3242d417cef788f0f677bf21c65fb9aaa44f8b2', class: "buttons-container" }, this._commentsAvailable &&
135
- h("div", { key: '9dcfccc0a48b719d14cb08737d654000a27e21cc', class: "comment-btn" }, h("span", { key: 'b68cafd0cebfa91c12f32f648ec2f71a51e3b9da' }, this._relatedFeaturesOIDs.length), h("calcite-icon", { key: 'f2b9c34ac64a5cb7692f80cd73658f077525eee4', icon: "speech-bubble", scale: 's' })), this._likeFieldAvailable &&
136
- h("calcite-button", { key: '7a4ec79205b3eccceb7d43de2c227d8407c24a26', appearance: "transparent", iconEnd: "thumbs-up", kind: this._isLikeBtnClicked ? "brand" : "neutral", onClick: this.onLikeButtonClick.bind(this), scale: 's' }, (_c = (_b = this._likeCount) !== null && _b !== void 0 ? _b : this._selectedGraphic.attributes[this._likeField]) !== null && _c !== void 0 ? _c : 0), this._dislikeFieldAvailable &&
137
- h("calcite-button", { key: '4634f8aeb114f97c9ceaae8eac5da86afa89f217', appearance: "transparent", iconEnd: "thumbs-down", kind: this._isDislikeBtnClicked ? "brand" : "neutral", onClick: this.onDislikeButtonClick.bind(this), scale: 's' }, (_e = (_d = this._disLikeCount) !== null && _d !== void 0 ? _d : this._selectedGraphic.attributes[this._dislikeField]) !== null && _e !== void 0 ? _e : 0)), this.relatedTableId && this._commentsAvailable &&
138
- h("feature-list", { key: '30559c6f28a741264972677cef1f182f1012f73f', class: "height-full", mapView: this.mapView, onFeatureSelect: (e) => { this.commentSelect.emit(e.detail); }, pageSize: 5, ref: el => this._commentsList = el, selectedLayerId: this.relatedTableId, showErrorWhenNoFeatures: false, showInitialLoading: false, textSize: "small", whereClause: commentsListWhereClause })));
134
+ return (h("calcite-panel", { key: '8d7069fec0df2a6217c175df6171376b4412c548', "full-height": true }, h("info-card", { key: '3713b783371bcb36a9b844196033326941d833f5', allowEditing: false, graphics: this.graphics, highlightEnabled: false, isLoading: false, isMobile: false, mapView: this.mapView, onSelectionChanged: (e) => { this.featureSelectionChange.emit(e.detail); }, paginationEnabled: false, position: "relative", ref: el => this._infoCard = el }), (this._likeFieldAvailable || this._dislikeFieldAvailable || this._commentsAvailable) &&
135
+ h("div", { key: '8c84e82708fab0d6091050672b26e6fa2de59345', class: "buttons-container" }, this._commentsAvailable &&
136
+ h("div", { key: '22edb3f17ef6a2bdef67e5e94492966986d452b7', class: "comment-btn" }, h("span", { key: '03b7eb0aff4358aac3020b3d6d52a2d47b308a41' }, this._relatedFeaturesOIDs.length), h("calcite-icon", { key: '5225e156b45a15db0055a28ed21bc3511dedc706', icon: "speech-bubble", scale: 's' })), this._likeFieldAvailable &&
137
+ h("calcite-button", { key: '1a291524d46c6f826813c87f781e7d6bcf5bc097', appearance: "transparent", iconEnd: "thumbs-up", kind: this._isLikeBtnClicked ? "brand" : "neutral", loading: this._updating, onClick: this.onLikeButtonClick.bind(this), scale: 'm' }, (_c = (_b = this._likeCount) !== null && _b !== void 0 ? _b : this._selectedGraphic.attributes[this._likeField]) !== null && _c !== void 0 ? _c : 0), this._dislikeFieldAvailable &&
138
+ h("calcite-button", { key: 'da6bee2189565c1eb70564b340e742494bac35c9', appearance: "transparent", iconEnd: "thumbs-down", kind: this._isDislikeBtnClicked ? "brand" : "neutral", loading: this._updating, onClick: this.onDislikeButtonClick.bind(this), scale: 'm' }, (_e = (_d = this._disLikeCount) !== null && _d !== void 0 ? _d : this._selectedGraphic.attributes[this._dislikeField]) !== null && _e !== void 0 ? _e : 0)), this.relatedTableId && this._commentsAvailable &&
139
+ h("feature-list", { key: 'fd6faa9f3404a2dfadb102ca7c578ffb47207729', class: "height-full", mapView: this.mapView, onFeatureSelect: (e) => { this.commentSelect.emit(e.detail); }, pageSize: 5, ref: el => this._commentsList = el, selectedLayerId: this.relatedTableId, showErrorWhenNoFeatures: false, showInitialLoading: false, textSize: "small", whereClause: commentsListWhereClause })));
139
140
  }
140
141
  /**
141
142
  * Load esri javascript api modules
@@ -292,7 +293,6 @@ const FeatureDetails = /*@__PURE__*/ proxyCustomElement(class FeatureDetails ext
292
293
  * @protected
293
294
  */
294
295
  onLikeButtonClick() {
295
- this.loadingStatus.emit(true);
296
296
  if (this._isDislikeBtnClicked && this.reportingOptions[this._selectedGraphic.layer.id].dislike) {
297
297
  this.onDislikeButtonClick();
298
298
  }
@@ -310,7 +310,6 @@ const FeatureDetails = /*@__PURE__*/ proxyCustomElement(class FeatureDetails ext
310
310
  * @protected
311
311
  */
312
312
  onDislikeButtonClick() {
313
- this.loadingStatus.emit(true);
314
313
  if (this._isLikeBtnClicked && this.reportingOptions[this._selectedGraphic.layer.id].like) {
315
314
  this.onLikeButtonClick();
316
315
  }
@@ -332,6 +331,7 @@ const FeatureDetails = /*@__PURE__*/ proxyCustomElement(class FeatureDetails ext
332
331
  async updateFeaturesLikeDislikeField(fieldName, buttonClicked) {
333
332
  const attributesToUpdate = {};
334
333
  const selectedLayer = this._selectedGraphic.layer;
334
+ this._updating = true;
335
335
  //Increment the value if button is clicked or else decrement it
336
336
  const selectFeatureAttr = this._selectedGraphic;
337
337
  if (buttonClicked) {
@@ -355,9 +355,9 @@ const FeatureDetails = /*@__PURE__*/ proxyCustomElement(class FeatureDetails ext
355
355
  }
356
356
  //store the like dislike value for the current selected graphic in local storage
357
357
  this.setInLocalStorage();
358
- this.loadingStatus.emit(false);
358
+ this._updating = false;
359
359
  }, (err) => {
360
- this.loadingStatus.emit(false);
360
+ this._updating = false;
361
361
  console.log(err);
362
362
  });
363
363
  }
@@ -422,6 +422,7 @@ const FeatureDetails = /*@__PURE__*/ proxyCustomElement(class FeatureDetails ext
422
422
  "_isLikeBtnClicked": [32],
423
423
  "_isDislikeBtnClicked": [32],
424
424
  "_relatedFeaturesOIDs": [32],
425
+ "_updating": [32],
425
426
  "refresh": [64],
426
427
  "back": [64],
427
428
  "next": [64],
@@ -25,7 +25,7 @@ import { d as defineCustomElement$3 } from './progress.js';
25
25
  import { d as defineCustomElement$2 } from './scrim.js';
26
26
  import { d as defineCustomElement$1 } from './stack.js';
27
27
 
28
- const featureListCss = ":host{display:block}.width-full{width:100%}.pagination{display:flex;justify-content:center}.error-msg{padding:10px;width:calc(100% - 20px)}.feature-list-popup-title{font-weight:500;padding:10px 12px}.feature-list-popup-title-small{font-size:small;padding:10px 12px}";
28
+ const featureListCss = ":host{display:block}.width-full{width:100%}.pagination{display:flex;justify-content:center}.error-msg{padding:10px;width:calc(100% - 20px)}.feature-list-popup-title{font-weight:500;padding:10px 12px;white-space:pre-line}.feature-list-popup-title-small{font-size:small;padding:10px 12px;white-space:pre-line}";
29
29
  const FeatureListStyle0 = featureListCss;
30
30
 
31
31
  const FeatureList = /*@__PURE__*/ proxyCustomElement(class FeatureList extends HTMLElement {